From: Pino Toscano Date: Sat, 26 Dec 2020 10:50:25 +0000 (+0000) Subject: Import kio-extras_20.12.0.orig.tar.xz X-Git-Tag: archive/raspbian/4%20.12.0-1+rpi1^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0c6c8626a30454595df6320db2b4c469780c53dc;p=kio-extras.git Import kio-extras_20.12.0.orig.tar.xz [dgit import orig kio-extras_20.12.0.orig.tar.xz] --- 0c6c8626a30454595df6320db2b4c469780c53dc diff --git a/.arcconfig b/.arcconfig new file mode 100644 index 0000000..bc0df43 --- /dev/null +++ b/.arcconfig @@ -0,0 +1,4 @@ +{ + "phabricator.uri" : "https://phabricator.kde.org/" +} + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a1352b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.vscode/ +build/ + +*.kdev4 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d292ce2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,217 @@ +cmake_minimum_required(VERSION 3.0) + +if(WIN32) + set(CMAKE_CXX_STANDARD 17) +endif() + +# KDE Applications Version, managed by release script +set (RELEASE_SERVICE_VERSION_MAJOR "20") +set (RELEASE_SERVICE_VERSION_MINOR "12") +set (RELEASE_SERVICE_VERSION_MICRO "0") +set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") +project(kio-extras VERSION ${RELEASE_SERVICE_VERSION}) + +include(FeatureSummary) + +set(QT_MIN_VERSION "5.11.0") +# TODO: when bumping to 5.72+ drop FindTaglib.cmake +set(KF5_MIN_VERSION "5.69.0") +find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS DBus Network Widgets Svg) + +find_package(Qt5Test ${QT_MIN_VERSION} CONFIG QUIET) +set_package_properties(Qt5Test PROPERTIES + PURPOSE "Required for tests" + TYPE OPTIONAL + ) +add_feature_info("Qt5Test" Qt5Test_FOUND "Required for building tests") +if (NOT Qt5Test_FOUND) + set(BUILD_TESTING OFF CACHE BOOL "Build the testing tree.") +endif() + +find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${ECM_MODULE_PATH}) + +find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS + Archive + Config + ConfigWidgets + CoreAddons + DBusAddons + DocTools + DNSSD + IconThemes + I18n + KIO + Solid + Bookmarks + GuiAddons + SyntaxHighlighting +) + +include(CheckIncludeFile) +include(CMakePackageConfigHelpers) +include(KDEInstallDirs) +include(KDECMakeSettings) +include(KDECompilerSettings NO_POLICY_SCOPE) +include(ECMMarkNonGuiExecutable) +include(ECMMarkAsTest) +include(ECMOptionalAddSubdirectory) +include(ECMQtDeclareLoggingCategory) + +add_definitions(-DQT_NO_URL_CAST_FROM_STRING -DQT_NO_CAST_TO_ASCII) + +find_package(KF5Activities QUIET) +set_package_properties(KF5Activities PROPERTIES + PURPOSE "Provides the activities:/ kioslave and fileitem plugin." + TYPE OPTIONAL +) + +find_package(Qt5Sql QUIET) +set_package_properties(Qt5Sql PROPERTIES + PURPOSE "Provides the activities:/ kioslave and fileitem plugin." + TYPE OPTIONAL +) + +find_package(KF5ActivitiesStats 5.62 QUIET) +set_package_properties(KF5ActivitiesStats PROPERTIES + PURPOSE "Provides the recentlyused:/ kioslave." + TYPE OPTIONAL +) + +find_package(Phonon4Qt5 4.6.60 NO_MODULE) +set_package_properties(Phonon4Qt5 PROPERTIES + DESCRIPTION "Qt-based audio library" + PURPOSE "Required for the audio preview plugin" + TYPE OPTIONAL) + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +if(NOT WIN32) + # we need a version of samba which has already smbc_set_context(), Alex + set(SAMBA_REQUIRE_SMBC_SET_CONTEXT TRUE) + set(SAMBA_REQUIRE_SMBC_OPTION_SET TRUE) + find_package(Samba) + set_package_properties(Samba PROPERTIES DESCRIPTION "the SMB client library, a version with smbc_set_context() and smbc_option_set()" + URL "https://www.samba.org/" + TYPE OPTIONAL + PURPOSE "Needed to build the SMB kioslave" + ) +endif() + +find_package(libssh 0.7.0 MODULE) +set_package_properties(libssh PROPERTIES DESCRIPTION "the SSH library with SFTP support" + URL "https://www.libssh.org/" + TYPE OPTIONAL + PURPOSE "Needed to build the SFTP kioslave" + ) + +find_package(Mtp) +set_package_properties(Mtp PROPERTIES DESCRIPTION "the MTP library" + URL "http://libmtp.sourceforge.net/" + TYPE OPTIONAL + PURPOSE "Needed to build the MTP kioslave" + ) + +check_include_file(utime.h HAVE_UTIME_H) + +# ECM's KDECompilerSettings.cmake should take care of enabling supporting on +# 32bit architectures. +# Thorw a fatal error if off_t isn't >=64bit to ensure that large files are working +# as expected. +# BUG: 165449 +if(UNIX) + check_cxx_source_compiles(" + #include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; + int main() { return 0; } + " + OFFT_IS_64BIT) + + if(NOT OFFT_IS_64BIT) + message(FATAL_ERROR "Large file support is not enabled.") + endif() + + find_package(Gperf) + set_package_properties(Gperf PROPERTIES TYPE OPTIONAL + PURPOSE "Needed to build the man kioslave" + ) + + find_package(TIRPC) + set_package_properties(TIRPC PROPERTIES TYPE OPTIONAL + PURPOSE "Needed to build the NFS kioslave" + ) +else() + # FIXME: on windows we ignore support until trash gets integrated +endif() + +add_subdirectory( doc ) + +add_subdirectory( about ) +if(TARGET KF5::Activities AND TARGET Qt5::Sql AND NOT WIN32) + add_subdirectory( activities ) +endif() +if(KF5ActivitiesStats_FOUND) + add_subdirectory( recentlyused ) +endif() +add_subdirectory( bookmarks ) +add_subdirectory( filter ) +if(Phonon4Qt5_FOUND) + add_subdirectory( kfileaudiopreview ) +endif() +add_subdirectory( info ) +add_subdirectory( archive ) +if(NOT WIN32) + add_subdirectory( network ) +endif() +add_subdirectory( recentdocuments ) +if (NOT WIN32) + # does not compile: fish.cpp(41): fatal error C1083: Cannot open include file: 'sys/resource.h': No such file or directory + # Used for getting the resource limit for closing all child process FDs. Could be completely replaced by fcloseall() if available for Unix or _fcloseall() for Windows, either conditionally on Q_OS_type or using a configure test. + add_subdirectory( fish ) +endif() +add_subdirectory( thumbnail ) +add_subdirectory( docfilter ) +if (libssh_FOUND) + add_subdirectory(sftp) +endif () +add_subdirectory(settings) +add_subdirectory( filenamesearch ) +if (MTP_FOUND) + add_subdirectory(mtp) +endif() + +if(NOT WIN32) + if(Gperf_FOUND) + add_subdirectory( man ) + endif() + if(TIRPC_FOUND) + add_subdirectory( nfs ) + endif() +endif() + +# KDNSSD before 5.54 suffers from a race condition in avahi's dbus API and +# ideally should not be used in ways that can deadlock a slave. +if(${KF5DNSSD_FOUND} AND ${KF5DNSSD_VERSION} VERSION_GREATER "5.53") + set(HAVE_KDNSSD_WITH_SIGNAL_RACE_PROTECTION TRUE) +endif() + +if(SAMBA_FOUND) + add_subdirectory(smb) +endif() + +configure_file (config-runtime.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-runtime.h ) + +install(FILES kio-extras.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) + + +feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) +ki18n_install(po) +if (KF5DocTools_FOUND) + kdoctools_install(po) +endif() diff --git a/COPYING.LGPLv2.1 b/COPYING.LGPLv2.1 new file mode 100644 index 0000000..4362b49 --- /dev/null +++ b/COPYING.LGPLv2.1 @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 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. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/DEBUG.howto b/DEBUG.howto new file mode 100644 index 0000000..ec25ec7 --- /dev/null +++ b/DEBUG.howto @@ -0,0 +1,4 @@ +Please refer to the KDE Community Wiki article, +https://community.kde.org/Guidelines_and_HOWTOs/Debugging + +Happy debugging. diff --git a/DESIGN b/DESIGN new file mode 100644 index 0000000..65b7fc9 --- /dev/null +++ b/DESIGN @@ -0,0 +1,34 @@ +What is a kioslave you ask yourself? + +A kioslave is a program designed to be intimately familiar with a certian +protocol, so that a standardized interface can be used to get at data from +any number of places. A few examples are the http and ftp kioslaves, +which using nearly identical methods will retrieve data from an http or +ftp server respectively. + +Well, that's nice. How do they work? + +To understand it, you'll need two ice cubes, a pair of handcuffs, and a +ferret. Some Crisco (or other shortening) is optional. Well, that aside, +this document focuses on the business end of the whole kio library. The +ioslave. See the documentation of the SlaveBase class for the methods +you need to reimplement. + +That's nice, but how can I use it? + +Any time you'd like to use non blocking IO over a high level protocol +(such as HTTP or FTP) a kioslave is for you. + +That's nice, but how do I use it? + +Basically, you create "jobs" by calling a public KIO::blah method +(the correct prototypes, etc, are in kio/job.h). Once this is done, you +connect to the result() signal, and wait for the result. There are +other signals emitted by jobs, see kio/jobclasses.h. Once again, +see the online documentation for more. + +------------- + +Original document by Rich. +Updated for KDE 2 by David. + diff --git a/LICENSES/BSD-3-Clause.txt b/LICENSES/BSD-3-Clause.txt new file mode 100644 index 0000000..0741db7 --- /dev/null +++ b/LICENSES/BSD-3-Clause.txt @@ -0,0 +1,26 @@ +Copyright (c) . All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 0000000..a343ccd --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,119 @@ +Creative Commons Legal Code + +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION +OR WORKS PROVIDED HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer exclusive +Copyright and Related Rights (defined below) upon the creator and subsequent +owner(s) (each and all, an "owner") of an original work of authorship and/or +a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later claims +of infringement build upon, modify, incorporate in other works, reuse and +redistribute as freely as possible in any form whatsoever and for any purposes, +including without limitation commercial purposes. These owners may contribute +to the Commons to promote the ideal of a free culture and the further production +of creative, cultural and scientific works, or to gain reputation or greater +distribution for their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or +her Copyright and Related Rights in the Work and the meaning and intended +legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be protected +by copyright and related or neighboring rights ("Copyright and Related Rights"). +Copyright and Related Rights include, but are not limited to, the following: + +i. the right to reproduce, adapt, distribute, perform, display, communicate, +and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + +iii. publicity and privacy rights pertaining to a person's image or likeness +depicted in a Work; + +iv. rights protecting against unfair competition in regards to a Work, subject +to the limitations in paragraph 4(a), below; + +v. rights protecting the extraction, dissemination, use and reuse of data +in a Work; + +vi. database rights (such as those arising under Directive 96/9/EC of the +European Parliament and of the Council of 11 March 1996 on the legal protection +of databases, and under any national implementation thereof, including any +amended or successor version of such directive); and + +vii. other similar, equivalent or corresponding rights throughout the world +based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time extensions), +(iii) in any current or future medium and for any number of copies, and (iv) +for any purpose whatsoever, including without limitation commercial, advertising +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the +benefit of each member of the public at large and to the detriment of Affirmer's +heirs and successors, fully intending that such Waiver shall not be subject +to revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account Affirmer's +express Statement of Purpose. In addition, to the extent the Waiver is so +judged Affirmer hereby grants to each affected person a royalty-free, non +transferable, non sublicensable, non exclusive, irrevocable and unconditional +license to exercise Affirmer's Copyright and Related Rights in the Work (i) +in all territories worldwide, (ii) for the maximum duration provided by applicable +law or treaty (including future time extensions), (iii) in any current or +future medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional purposes +(the "License"). The License shall be deemed effective as of the date CC0 +was applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder of +the License, and in such case Affirmer hereby affirms that he or she will +not (i) exercise any of his or her remaining Copyright and Related Rights +in the Work or (ii) assert any associated claims and causes of action with +respect to the Work, in either case contrary to Affirmer's express Statement +of Purpose. + + 4. Limitations and Disclaimers. + +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, +licensed or otherwise affected by this document. + +b. Affirmer offers the Work as-is and makes no representations or warranties +of any kind concerning the Work, express, implied, statutory or otherwise, +including without limitation warranties of title, merchantability, fitness +for a particular purpose, non infringement, or the absence of latent or other +defects, accuracy, or the present or absence of errors, whether or not discoverable, +all to the greatest extent permissible under applicable law. + +c. Affirmer disclaims responsibility for clearing rights of other persons +that may apply to the Work or any use thereof, including without limitation +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims +responsibility for obtaining any necessary consents, permissions or other +rights required for any use of the Work. + +d. Affirmer understands and acknowledges that Creative Commons is not a party +to this document and has no duty or obligation with respect to this CC0 or +use of the Work. diff --git a/LICENSES/GPL-2.0-only.txt b/LICENSES/GPL-2.0-only.txt new file mode 100644 index 0000000..0f3d641 --- /dev/null +++ b/LICENSES/GPL-2.0-only.txt @@ -0,0 +1,319 @@ +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 Lesser 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. + +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.) + +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. + +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. + +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. + + + +Copyright (C)< yyyy> + +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) year 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. + +, 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 Lesser General Public License instead +of this License. diff --git a/LICENSES/GPL-2.0-or-later.txt b/LICENSES/GPL-2.0-or-later.txt new file mode 100644 index 0000000..1d80ac3 --- /dev/null +++ b/LICENSES/GPL-2.0-or-later.txt @@ -0,0 +1,319 @@ +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 Lesser 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. + +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.) + +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. + +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. + +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. + + + +Copyright (C) + +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) year 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. + +, 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 Lesser General Public License instead +of this License. diff --git a/LICENSES/GPL-3.0-only.txt b/LICENSES/GPL-3.0-only.txt new file mode 100644 index 0000000..e142a52 --- /dev/null +++ b/LICENSES/GPL-3.0-only.txt @@ -0,0 +1,625 @@ +GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and +other kinds of works. + +The licenses for most software and other practical works are designed to take +away your freedom to share and change the works. By contrast, the GNU General +Public License is intended to guarantee your freedom to share and change all +versions of a program--to make sure it remains free software for all its users. +We, the Free Software Foundation, use the GNU General Public License for most +of our software; it applies also to any other work released this way by its +authors. 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 them 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 prevent others from denying you these rights +or asking you to surrender the rights. Therefore, you have certain responsibilities +if you distribute copies of the software, or if you modify it: responsibilities +to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must pass on to the recipients the same freedoms that you received. +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. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert +copyright on the software, and (2) offer you this License giving you legal +permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that +there is no warranty for this free software. For both users' and authors' +sake, the GPL requires that modified versions be marked as changed, so that +their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified +versions of the software inside them, although the manufacturer can do so. +This is fundamentally incompatible with the aim of protecting users' freedom +to change the software. The systematic pattern of such abuse occurs in the +area of products for individuals to use, which is precisely where it is most +unacceptable. Therefore, we have designed this version of the GPL to prohibit +the practice for those products. If such problems arise substantially in other +domains, we stand ready to extend this provision to those domains in future +versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States +should not allow patents to restrict development and use of software on general-purpose +computers, but in those that do, we wish to avoid the special danger that +patents applied to a free program could make it effectively proprietary. To +prevent this, the GPL assures that patents cannot be used to render the program +non-free. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of works, +such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this License. +Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals +or organizations. + +To "modify" a work means to copy from or adapt all or part of the work in +a fashion requiring copyright permission, other than the making of an exact +copy. The resulting work is called a "modified version" of the earlier work +or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based on the +Program. + +To "propagate" a work means to do anything with it that, without permission, +would make you directly or secondarily liable for infringement under applicable +copyright law, except executing it on a computer or modifying a private copy. +Propagation includes copying, distribution (with or without modification), +making available to the public, and in some countries other activities as +well. + +To "convey" a work means any kind of propagation that enables other parties +to make or receive copies. Mere interaction with a user through a computer +network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" to the +extent that it includes a convenient and prominently visible feature that +(1) displays an appropriate copyright notice, and (2) tells the user that +there is no warranty for the work (except to the extent that warranties are +provided), that licensees may convey the work under this License, and how +to view a copy of this License. If the interface presents a list of user commands +or options, such as a menu, a prominent item in the list meets this criterion. + + 1. Source Code. + +The "source code" for a work means the preferred form of the work for making +modifications to it. "Object code" means any non-source form of a work. + +A "Standard Interface" means an interface that either is an official standard +defined by a recognized standards body, or, in the case of interfaces specified +for a particular programming language, one that is widely used among developers +working in that language. + +The "System Libraries" of an executable work include anything, other than +the work as a whole, that (a) is included in the normal form of packaging +a Major Component, but which is not part of that Major Component, and (b) +serves only to enable use of the work with that Major Component, or to implement +a Standard Interface for which an implementation is available to the public +in source code form. A "Major Component", in this context, means a major essential +component (kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to produce +the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all the source +code needed to generate, install, and (for an executable work) run the object +code and to modify the work, including scripts to control those activities. +However, it does not include the work's System Libraries, or general-purpose +tools or generally available free programs which are used unmodified in performing +those activities but which are not part of the work. For example, Corresponding +Source includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically linked +subprograms that the work is specifically designed to require, such as by +intimate data communication or control flow between those subprograms and +other parts of the work. + +The Corresponding Source need not include anything that users can regenerate +automatically from other parts of the Corresponding Source. + + The Corresponding Source for a work in source code form is that same work. + + 2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright +on the Program, and are irrevocable provided the stated conditions are met. +This License explicitly affirms your unlimited permission to run the unmodified +Program. The output from running a covered work is covered by this License +only if the output, given its content, constitutes a covered work. This License +acknowledges your rights of fair use or other equivalent, as provided by copyright +law. + +You may make, run and propagate covered works that you do not convey, without +conditions so long as your license otherwise remains in force. You may convey +covered works to others for the sole purpose of having them make modifications +exclusively for you, or provide you with facilities for running those works, +provided that you comply with the terms of this License in conveying all material +for which you do not control copyright. Those thus making or running the covered +works for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of your copyrighted +material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions +stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure +under any applicable law fulfilling obligations under article 11 of the WIPO +copyright treaty adopted on 20 December 1996, or similar laws prohibiting +or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention +of technological measures to the extent such circumvention is effected by +exercising rights under this License with respect to the covered work, and +you disclaim any intention to limit operation or modification of the work +as a means of enforcing, against the work's users, your or third parties' +legal rights to forbid circumvention of technological measures. + + 4. Conveying Verbatim Copies. + +You may convey 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; keep intact all notices stating +that this License and any non-permissive terms added in accord with section +7 apply to the code; keep intact all notices of the absence of any warranty; +and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you +may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce +it from the Program, in the form of source code under the terms of section +4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified it, and +giving a relevant date. + +b) The work must carry prominent notices stating that it is released under +this License and any conditions added under section 7. This requirement modifies +the requirement in section 4 to "keep intact all notices". + +c) You must license the entire work, as a whole, under this License to anyone +who comes into possession of a copy. This License will therefore apply, along +with any applicable section 7 additional terms, to the whole of the work, +and all its parts, regardless of how they are packaged. This License gives +no permission to license the work in any other way, but it does not invalidate +such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display Appropriate +Legal Notices; however, if the Program has interactive interfaces that do +not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, +which are not by their nature extensions of the covered work, and which are +not combined with it such as to form a larger program, in or on a volume of +a storage or distribution medium, is called an "aggregate" if the compilation +and its resulting copyright are not used to limit the access or legal rights +of the compilation's users beyond what the individual works permit. Inclusion +of a covered work in an aggregate does not cause this License to apply to +the other parts of the aggregate. + + 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections +4 and 5, provided that you also convey the machine-readable Corresponding +Source under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by the Corresponding Source fixed +on a durable physical medium customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by a written offer, valid for +at least three years and valid for as long as you offer spare parts or customer +support for that product model, to give anyone who possesses the object code +either (1) a copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical medium customarily +used for software interchange, for a price no more than your reasonable cost +of physically performing this conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is allowed only +occasionally and noncommercially, and only if you received the object code +with such an offer, in accord with subsection 6b. + +d) Convey the object code by offering access from a designated place (gratis +or for a charge), and offer equivalent access to the Corresponding Source +in the same way through the same place at no further charge. You need not +require recipients to copy the Corresponding Source along with the object +code. If the place to copy the object code is a network server, the Corresponding +Source may be on a different server (operated by you or a third party) that +supports equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. Regardless +of what server hosts the Corresponding Source, you remain obligated to ensure +that it is available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided you inform +other peers where the object code and Corresponding Source of the work are +being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from +the Corresponding Source as a System Library, need not be included in conveying +the object code work. + +A "User Product" is either (1) a "consumer product", which means any tangible +personal property which is normally used for personal, family, or household +purposes, or (2) anything designed or sold for incorporation into a dwelling. +In determining whether a product is a consumer product, doubtful cases shall +be resolved in favor of coverage. For a particular product received by a particular +user, "normally used" refers to a typical or common use of that class of product, +regardless of the status of the particular user or of the way in which the +particular user actually uses, or expects or is expected to use, the product. +A product is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent the +only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, procedures, +authorization keys, or other information required to install and execute modified +versions of a covered work in that User Product from a modified version of +its Corresponding Source. The information must suffice to ensure that the +continued functioning of the modified object code is in no case prevented +or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically +for use in, a User Product, and the conveying occurs as part of a transaction +in which the right of possession and use of the User Product is transferred +to the recipient in perpetuity or for a fixed term (regardless of how the +transaction is characterized), the Corresponding Source conveyed under this +section must be accompanied by the Installation Information. But this requirement +does not apply if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has been installed +in ROM). + +The requirement to provide Installation Information does not include a requirement +to continue to provide support service, warranty, or updates for a work that +has been modified or installed by the recipient, or for the User Product in +which it has been modified or installed. Access to a network may be denied +when the modification itself materially and adversely affects the operation +of the network or violates the rules and protocols for communication across +the network. + +Corresponding Source conveyed, and Installation Information provided, in accord +with this section must be in a format that is publicly documented (and with +an implementation available to the public in source code form), and must require +no special password or key for unpacking, reading or copying. + + 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this License +by making exceptions from one or more of its conditions. Additional permissions +that are applicable to the entire Program shall be treated as though they +were included in this License, to the extent that they are valid under applicable +law. If additional permissions apply only to part of the Program, that part +may be used separately under those permissions, but the entire Program remains +governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any +additional permissions from that copy, or from any part of it. (Additional +permissions may be written to require their own removal in certain cases when +you modify the work.) You may place additional permissions on material, added +by you to a covered work, for which you have or can give appropriate copyright +permission. + +Notwithstanding any other provision of this License, for material you add +to a covered work, you may (if authorized by the copyright holders of that +material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the terms of +sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices displayed +by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or requiring +that modified versions of such material be marked in reasonable ways as different +from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or authors +of the material; or + +e) Declining to grant rights under trademark law for use of some trade names, +trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with contractual +assumptions of liability to the recipient, for any liability that these contractual +assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered "further restrictions" +within the meaning of section 10. If the Program as you received it, or any +part of it, contains a notice stating that it is governed by this License +along with a term that is a further restriction, you may remove that term. +If a license document contains a further restriction but permits relicensing +or conveying under this License, you may add to a covered work material governed +by the terms of that license document, provided that the further restriction +does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, +in the relevant source files, a statement of the additional terms that apply +to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form +of a separately written license, or stated as exceptions; the above requirements +apply either way. + + 8. Termination. + +You may not propagate or modify a covered work except as expressly provided +under this License. Any attempt otherwise to propagate or modify it is void, +and will automatically terminate your rights under this License (including +any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from +a particular copyright holder is reinstated (a) provisionally, unless and +until the copyright holder explicitly and finally terminates your license, +and (b) permanently, if the copyright holder fails to notify you of the violation +by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently +if the copyright holder notifies you of the violation by some reasonable means, +this is the first time you have received notice of violation of this License +(for any work) from that copyright holder, and you cure the violation prior +to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses +of parties who have received copies or rights from you under this License. +If your rights have been terminated and not permanently reinstated, you do +not qualify to receive new licenses for the same material under section 10. + + 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy +of the Program. Ancillary propagation of a covered work occurring solely as +a consequence of using peer-to-peer transmission to receive a copy likewise +does not require acceptance. However, nothing other than this License grants +you permission to propagate or modify any covered work. These actions infringe +copyright if you do not accept this License. Therefore, by modifying or propagating +a covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives +a license from the original licensors, to run, modify and propagate that work, +subject to this License. You are not responsible for enforcing compliance +by third parties with this License. + +An "entity transaction" is a transaction transferring control of an organization, +or substantially all assets of one, or subdividing an organization, or merging +organizations. If propagation of a covered work results from an entity transaction, +each party to that transaction who receives a copy of the work also receives +whatever licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the Corresponding +Source of the work from the predecessor in interest, if the predecessor has +it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights +granted or affirmed under this License. For example, you may not impose a +license fee, royalty, or other charge for exercise of rights granted under +this License, and you may not initiate litigation (including a cross-claim +or counterclaim in a lawsuit) alleging that any patent claim is infringed +by making, using, selling, offering for sale, or importing the Program or +any portion of it. + + 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this License +of the Program or a work on which the Program is based. The work thus licensed +is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned or controlled +by the contributor, whether already acquired or hereafter acquired, that would +be infringed by some manner, permitted by this License, of making, using, +or selling its contributor version, but do not include claims that would be +infringed only as a consequence of further modification of the contributor +version. For purposes of this definition, "control" includes the right to +grant patent sublicenses in a manner consistent with the requirements of this +License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent +license under the contributor's essential patent claims, to make, use, sell, +offer for sale, import and otherwise run, modify and propagate the contents +of its contributor version. + +In the following three paragraphs, a "patent license" is any express agreement +or commitment, however denominated, not to enforce a patent (such as an express +permission to practice a patent or covenant not to sue for patent infringement). +To "grant" such a patent license to a party means to make such an agreement +or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the +Corresponding Source of the work is not available for anyone to copy, free +of charge and under the terms of this License, through a publicly available +network server or other readily accessible means, then you must either (1) +cause the Corresponding Source to be so available, or (2) arrange to deprive +yourself of the benefit of the patent license for this particular work, or +(3) arrange, in a manner consistent with the requirements of this License, +to extend the patent license to downstream recipients. "Knowingly relying" +means you have actual knowledge that, but for the patent license, your conveying +the covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that country +that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, +you convey, or propagate by procuring conveyance of, a covered work, and grant +a patent license to some of the parties receiving the covered work authorizing +them to use, propagate, modify or convey a specific copy of the covered work, +then the patent license you grant is automatically extended to all recipients +of the covered work and works based on it. + +A patent license is "discriminatory" if it does not include within the scope +of its coverage, prohibits the exercise of, or is conditioned on the non-exercise +of one or more of the rights that are specifically granted under this License. +You may not convey a covered work if you are a party to an arrangement with +a third party that is in the business of distributing software, under which +you make payment to the third party based on the extent of your activity of +conveying the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by you +(or copies made from those copies), or (b) primarily for and in connection +with specific products or compilations that contain the covered work, unless +you entered into that arrangement, or that patent license was granted, prior +to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied +license or other defenses to infringement that may otherwise be available +to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + +If 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 convey a covered work so as +to satisfy simultaneously your obligations under this License and any other +pertinent obligations, then as a consequence you may not convey it at all. +For example, if you agree to terms that obligate you to collect a royalty +for further conveying from those to whom you convey the Program, the only +way you could satisfy both those terms and this License would be to refrain +entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to +link or combine any covered work with a work licensed under version 3 of the +GNU Affero General Public License into a single combined work, and to convey +the resulting work. The terms of this License will continue to apply to the +part which is the covered work, but the special requirements of the GNU Affero +General Public License, section 13, concerning interaction through a network +will apply to the combination as such. + + 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the +GNU 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 +that a certain numbered version of the GNU General Public License "or any +later version" applies to it, you have the option of following the terms and +conditions either of that numbered version or of any later version published +by the Free Software Foundation. If the Program does not specify a version +number of the GNU General Public License, you may choose any version ever +published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of +the GNU General Public License can be used, that proxy's public statement +of acceptance of a version permanently authorizes you to choose that version +for the Program. + +Later license versions may give you additional or different permissions. However, +no additional obligations are imposed on any author or copyright holder as +a result of your choosing to follow a later version. + + 15. Disclaimer of Warranty. + +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. + + 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. + + 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot +be given local legal effect according to their terms, reviewing courts shall +apply local law that most closely approximates an absolute waiver of all civil +liability in connection with the Program, unless a warranty or assumption +of liability accompanies a copy of the Program in return for a fee. 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 state the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + + +Copyright (C) + +This 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like +this when it starts in an interactive mode: + + Copyright (C) + +This program 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, your program's commands might +be different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. For +more information on this, and how to apply and follow the GNU GPL, see . + +The GNU 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 Lesser General Public +License instead of this License. But first, please read . diff --git a/LICENSES/GPL-3.0-or-later.txt b/LICENSES/GPL-3.0-or-later.txt new file mode 100644 index 0000000..e142a52 --- /dev/null +++ b/LICENSES/GPL-3.0-or-later.txt @@ -0,0 +1,625 @@ +GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and +other kinds of works. + +The licenses for most software and other practical works are designed to take +away your freedom to share and change the works. By contrast, the GNU General +Public License is intended to guarantee your freedom to share and change all +versions of a program--to make sure it remains free software for all its users. +We, the Free Software Foundation, use the GNU General Public License for most +of our software; it applies also to any other work released this way by its +authors. 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 them 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 prevent others from denying you these rights +or asking you to surrender the rights. Therefore, you have certain responsibilities +if you distribute copies of the software, or if you modify it: responsibilities +to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must pass on to the recipients the same freedoms that you received. +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. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert +copyright on the software, and (2) offer you this License giving you legal +permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that +there is no warranty for this free software. For both users' and authors' +sake, the GPL requires that modified versions be marked as changed, so that +their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified +versions of the software inside them, although the manufacturer can do so. +This is fundamentally incompatible with the aim of protecting users' freedom +to change the software. The systematic pattern of such abuse occurs in the +area of products for individuals to use, which is precisely where it is most +unacceptable. Therefore, we have designed this version of the GPL to prohibit +the practice for those products. If such problems arise substantially in other +domains, we stand ready to extend this provision to those domains in future +versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States +should not allow patents to restrict development and use of software on general-purpose +computers, but in those that do, we wish to avoid the special danger that +patents applied to a free program could make it effectively proprietary. To +prevent this, the GPL assures that patents cannot be used to render the program +non-free. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of works, +such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this License. +Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals +or organizations. + +To "modify" a work means to copy from or adapt all or part of the work in +a fashion requiring copyright permission, other than the making of an exact +copy. The resulting work is called a "modified version" of the earlier work +or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based on the +Program. + +To "propagate" a work means to do anything with it that, without permission, +would make you directly or secondarily liable for infringement under applicable +copyright law, except executing it on a computer or modifying a private copy. +Propagation includes copying, distribution (with or without modification), +making available to the public, and in some countries other activities as +well. + +To "convey" a work means any kind of propagation that enables other parties +to make or receive copies. Mere interaction with a user through a computer +network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" to the +extent that it includes a convenient and prominently visible feature that +(1) displays an appropriate copyright notice, and (2) tells the user that +there is no warranty for the work (except to the extent that warranties are +provided), that licensees may convey the work under this License, and how +to view a copy of this License. If the interface presents a list of user commands +or options, such as a menu, a prominent item in the list meets this criterion. + + 1. Source Code. + +The "source code" for a work means the preferred form of the work for making +modifications to it. "Object code" means any non-source form of a work. + +A "Standard Interface" means an interface that either is an official standard +defined by a recognized standards body, or, in the case of interfaces specified +for a particular programming language, one that is widely used among developers +working in that language. + +The "System Libraries" of an executable work include anything, other than +the work as a whole, that (a) is included in the normal form of packaging +a Major Component, but which is not part of that Major Component, and (b) +serves only to enable use of the work with that Major Component, or to implement +a Standard Interface for which an implementation is available to the public +in source code form. A "Major Component", in this context, means a major essential +component (kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to produce +the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all the source +code needed to generate, install, and (for an executable work) run the object +code and to modify the work, including scripts to control those activities. +However, it does not include the work's System Libraries, or general-purpose +tools or generally available free programs which are used unmodified in performing +those activities but which are not part of the work. For example, Corresponding +Source includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically linked +subprograms that the work is specifically designed to require, such as by +intimate data communication or control flow between those subprograms and +other parts of the work. + +The Corresponding Source need not include anything that users can regenerate +automatically from other parts of the Corresponding Source. + + The Corresponding Source for a work in source code form is that same work. + + 2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright +on the Program, and are irrevocable provided the stated conditions are met. +This License explicitly affirms your unlimited permission to run the unmodified +Program. The output from running a covered work is covered by this License +only if the output, given its content, constitutes a covered work. This License +acknowledges your rights of fair use or other equivalent, as provided by copyright +law. + +You may make, run and propagate covered works that you do not convey, without +conditions so long as your license otherwise remains in force. You may convey +covered works to others for the sole purpose of having them make modifications +exclusively for you, or provide you with facilities for running those works, +provided that you comply with the terms of this License in conveying all material +for which you do not control copyright. Those thus making or running the covered +works for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of your copyrighted +material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions +stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure +under any applicable law fulfilling obligations under article 11 of the WIPO +copyright treaty adopted on 20 December 1996, or similar laws prohibiting +or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention +of technological measures to the extent such circumvention is effected by +exercising rights under this License with respect to the covered work, and +you disclaim any intention to limit operation or modification of the work +as a means of enforcing, against the work's users, your or third parties' +legal rights to forbid circumvention of technological measures. + + 4. Conveying Verbatim Copies. + +You may convey 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; keep intact all notices stating +that this License and any non-permissive terms added in accord with section +7 apply to the code; keep intact all notices of the absence of any warranty; +and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you +may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce +it from the Program, in the form of source code under the terms of section +4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified it, and +giving a relevant date. + +b) The work must carry prominent notices stating that it is released under +this License and any conditions added under section 7. This requirement modifies +the requirement in section 4 to "keep intact all notices". + +c) You must license the entire work, as a whole, under this License to anyone +who comes into possession of a copy. This License will therefore apply, along +with any applicable section 7 additional terms, to the whole of the work, +and all its parts, regardless of how they are packaged. This License gives +no permission to license the work in any other way, but it does not invalidate +such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display Appropriate +Legal Notices; however, if the Program has interactive interfaces that do +not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, +which are not by their nature extensions of the covered work, and which are +not combined with it such as to form a larger program, in or on a volume of +a storage or distribution medium, is called an "aggregate" if the compilation +and its resulting copyright are not used to limit the access or legal rights +of the compilation's users beyond what the individual works permit. Inclusion +of a covered work in an aggregate does not cause this License to apply to +the other parts of the aggregate. + + 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections +4 and 5, provided that you also convey the machine-readable Corresponding +Source under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by the Corresponding Source fixed +on a durable physical medium customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by a written offer, valid for +at least three years and valid for as long as you offer spare parts or customer +support for that product model, to give anyone who possesses the object code +either (1) a copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical medium customarily +used for software interchange, for a price no more than your reasonable cost +of physically performing this conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is allowed only +occasionally and noncommercially, and only if you received the object code +with such an offer, in accord with subsection 6b. + +d) Convey the object code by offering access from a designated place (gratis +or for a charge), and offer equivalent access to the Corresponding Source +in the same way through the same place at no further charge. You need not +require recipients to copy the Corresponding Source along with the object +code. If the place to copy the object code is a network server, the Corresponding +Source may be on a different server (operated by you or a third party) that +supports equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. Regardless +of what server hosts the Corresponding Source, you remain obligated to ensure +that it is available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided you inform +other peers where the object code and Corresponding Source of the work are +being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from +the Corresponding Source as a System Library, need not be included in conveying +the object code work. + +A "User Product" is either (1) a "consumer product", which means any tangible +personal property which is normally used for personal, family, or household +purposes, or (2) anything designed or sold for incorporation into a dwelling. +In determining whether a product is a consumer product, doubtful cases shall +be resolved in favor of coverage. For a particular product received by a particular +user, "normally used" refers to a typical or common use of that class of product, +regardless of the status of the particular user or of the way in which the +particular user actually uses, or expects or is expected to use, the product. +A product is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent the +only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, procedures, +authorization keys, or other information required to install and execute modified +versions of a covered work in that User Product from a modified version of +its Corresponding Source. The information must suffice to ensure that the +continued functioning of the modified object code is in no case prevented +or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically +for use in, a User Product, and the conveying occurs as part of a transaction +in which the right of possession and use of the User Product is transferred +to the recipient in perpetuity or for a fixed term (regardless of how the +transaction is characterized), the Corresponding Source conveyed under this +section must be accompanied by the Installation Information. But this requirement +does not apply if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has been installed +in ROM). + +The requirement to provide Installation Information does not include a requirement +to continue to provide support service, warranty, or updates for a work that +has been modified or installed by the recipient, or for the User Product in +which it has been modified or installed. Access to a network may be denied +when the modification itself materially and adversely affects the operation +of the network or violates the rules and protocols for communication across +the network. + +Corresponding Source conveyed, and Installation Information provided, in accord +with this section must be in a format that is publicly documented (and with +an implementation available to the public in source code form), and must require +no special password or key for unpacking, reading or copying. + + 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this License +by making exceptions from one or more of its conditions. Additional permissions +that are applicable to the entire Program shall be treated as though they +were included in this License, to the extent that they are valid under applicable +law. If additional permissions apply only to part of the Program, that part +may be used separately under those permissions, but the entire Program remains +governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any +additional permissions from that copy, or from any part of it. (Additional +permissions may be written to require their own removal in certain cases when +you modify the work.) You may place additional permissions on material, added +by you to a covered work, for which you have or can give appropriate copyright +permission. + +Notwithstanding any other provision of this License, for material you add +to a covered work, you may (if authorized by the copyright holders of that +material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the terms of +sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices displayed +by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or requiring +that modified versions of such material be marked in reasonable ways as different +from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or authors +of the material; or + +e) Declining to grant rights under trademark law for use of some trade names, +trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with contractual +assumptions of liability to the recipient, for any liability that these contractual +assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered "further restrictions" +within the meaning of section 10. If the Program as you received it, or any +part of it, contains a notice stating that it is governed by this License +along with a term that is a further restriction, you may remove that term. +If a license document contains a further restriction but permits relicensing +or conveying under this License, you may add to a covered work material governed +by the terms of that license document, provided that the further restriction +does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, +in the relevant source files, a statement of the additional terms that apply +to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form +of a separately written license, or stated as exceptions; the above requirements +apply either way. + + 8. Termination. + +You may not propagate or modify a covered work except as expressly provided +under this License. Any attempt otherwise to propagate or modify it is void, +and will automatically terminate your rights under this License (including +any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from +a particular copyright holder is reinstated (a) provisionally, unless and +until the copyright holder explicitly and finally terminates your license, +and (b) permanently, if the copyright holder fails to notify you of the violation +by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently +if the copyright holder notifies you of the violation by some reasonable means, +this is the first time you have received notice of violation of this License +(for any work) from that copyright holder, and you cure the violation prior +to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses +of parties who have received copies or rights from you under this License. +If your rights have been terminated and not permanently reinstated, you do +not qualify to receive new licenses for the same material under section 10. + + 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy +of the Program. Ancillary propagation of a covered work occurring solely as +a consequence of using peer-to-peer transmission to receive a copy likewise +does not require acceptance. However, nothing other than this License grants +you permission to propagate or modify any covered work. These actions infringe +copyright if you do not accept this License. Therefore, by modifying or propagating +a covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives +a license from the original licensors, to run, modify and propagate that work, +subject to this License. You are not responsible for enforcing compliance +by third parties with this License. + +An "entity transaction" is a transaction transferring control of an organization, +or substantially all assets of one, or subdividing an organization, or merging +organizations. If propagation of a covered work results from an entity transaction, +each party to that transaction who receives a copy of the work also receives +whatever licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the Corresponding +Source of the work from the predecessor in interest, if the predecessor has +it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights +granted or affirmed under this License. For example, you may not impose a +license fee, royalty, or other charge for exercise of rights granted under +this License, and you may not initiate litigation (including a cross-claim +or counterclaim in a lawsuit) alleging that any patent claim is infringed +by making, using, selling, offering for sale, or importing the Program or +any portion of it. + + 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this License +of the Program or a work on which the Program is based. The work thus licensed +is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned or controlled +by the contributor, whether already acquired or hereafter acquired, that would +be infringed by some manner, permitted by this License, of making, using, +or selling its contributor version, but do not include claims that would be +infringed only as a consequence of further modification of the contributor +version. For purposes of this definition, "control" includes the right to +grant patent sublicenses in a manner consistent with the requirements of this +License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent +license under the contributor's essential patent claims, to make, use, sell, +offer for sale, import and otherwise run, modify and propagate the contents +of its contributor version. + +In the following three paragraphs, a "patent license" is any express agreement +or commitment, however denominated, not to enforce a patent (such as an express +permission to practice a patent or covenant not to sue for patent infringement). +To "grant" such a patent license to a party means to make such an agreement +or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the +Corresponding Source of the work is not available for anyone to copy, free +of charge and under the terms of this License, through a publicly available +network server or other readily accessible means, then you must either (1) +cause the Corresponding Source to be so available, or (2) arrange to deprive +yourself of the benefit of the patent license for this particular work, or +(3) arrange, in a manner consistent with the requirements of this License, +to extend the patent license to downstream recipients. "Knowingly relying" +means you have actual knowledge that, but for the patent license, your conveying +the covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that country +that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, +you convey, or propagate by procuring conveyance of, a covered work, and grant +a patent license to some of the parties receiving the covered work authorizing +them to use, propagate, modify or convey a specific copy of the covered work, +then the patent license you grant is automatically extended to all recipients +of the covered work and works based on it. + +A patent license is "discriminatory" if it does not include within the scope +of its coverage, prohibits the exercise of, or is conditioned on the non-exercise +of one or more of the rights that are specifically granted under this License. +You may not convey a covered work if you are a party to an arrangement with +a third party that is in the business of distributing software, under which +you make payment to the third party based on the extent of your activity of +conveying the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by you +(or copies made from those copies), or (b) primarily for and in connection +with specific products or compilations that contain the covered work, unless +you entered into that arrangement, or that patent license was granted, prior +to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied +license or other defenses to infringement that may otherwise be available +to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + +If 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 convey a covered work so as +to satisfy simultaneously your obligations under this License and any other +pertinent obligations, then as a consequence you may not convey it at all. +For example, if you agree to terms that obligate you to collect a royalty +for further conveying from those to whom you convey the Program, the only +way you could satisfy both those terms and this License would be to refrain +entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to +link or combine any covered work with a work licensed under version 3 of the +GNU Affero General Public License into a single combined work, and to convey +the resulting work. The terms of this License will continue to apply to the +part which is the covered work, but the special requirements of the GNU Affero +General Public License, section 13, concerning interaction through a network +will apply to the combination as such. + + 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the +GNU 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 +that a certain numbered version of the GNU General Public License "or any +later version" applies to it, you have the option of following the terms and +conditions either of that numbered version or of any later version published +by the Free Software Foundation. If the Program does not specify a version +number of the GNU General Public License, you may choose any version ever +published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of +the GNU General Public License can be used, that proxy's public statement +of acceptance of a version permanently authorizes you to choose that version +for the Program. + +Later license versions may give you additional or different permissions. However, +no additional obligations are imposed on any author or copyright holder as +a result of your choosing to follow a later version. + + 15. Disclaimer of Warranty. + +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. + + 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. + + 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot +be given local legal effect according to their terms, reviewing courts shall +apply local law that most closely approximates an absolute waiver of all civil +liability in connection with the Program, unless a warranty or assumption +of liability accompanies a copy of the Program in return for a fee. 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 state the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + + +Copyright (C) + +This 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like +this when it starts in an interactive mode: + + Copyright (C) + +This program 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, your program's commands might +be different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. For +more information on this, and how to apply and follow the GNU GPL, see . + +The GNU 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 Lesser General Public +License instead of this License. But first, please read . diff --git a/LICENSES/LGPL-2.0-or-later.txt b/LICENSES/LGPL-2.0-or-later.txt new file mode 100644 index 0000000..5c96471 --- /dev/null +++ b/LICENSES/LGPL-2.0-or-later.txt @@ -0,0 +1,446 @@ +GNU LIBRARY GENERAL PUBLIC LICENSE + +Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. + +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is numbered 2 because +it goes with version 2 of the ordinary GPL.] + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public Licenses are intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. + +This license, the Library General Public License, applies to some specially +designated Free Software Foundation software, and to any other libraries whose +authors decide to use it. You can use it for your libraries, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for this service if you +wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of +the library, or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for +a fee, you must give the recipients all the rights that we gave you. You must +make sure that they, too, receive or can get the source code. If you link +a program with the library, you must provide complete object files to the +recipients so that they can relink them with the library, after making changes +to the library and recompiling it. And you must show them these terms so they +know their rights. + +Our method of protecting your rights has two steps: (1) copyright the library, +and (2) offer you this license which gives you legal permission to copy, distribute +and/or modify the library. + +Also, for each distributor's protection, we want to make certain that everyone +understands that there is no warranty for this free library. If the library +is modified by someone else and passed on, we want its recipients to know +that what they have is not the original version, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that companies distributing free software will individually +obtain patent licenses, thus in effect transforming the program into proprietary +software. To prevent this, we have made it clear that any patent must be licensed +for everyone's free use or not licensed at all. + +Most GNU software, including some libraries, is covered by the ordinary GNU +General Public License, which was designed for utility programs. This license, +the GNU Library General Public License, applies to certain designated libraries. +This license is quite different from the ordinary one; be sure to read it +in full, and don't assume that anything in it is the same as in the ordinary +license. + +The reason we have a separate public license for some libraries is that they +blur the distinction we usually make between modifying or adding to a program +and simply using it. Linking a program with a library, without changing the +library, is in some sense simply using the library, and is analogous to running +a utility program or application program. However, in a textual and legal +sense, the linked executable is a combined work, a derivative of the original +library, and the ordinary General Public License treats it as such. + +Because of this blurred distinction, using the ordinary General Public License +for libraries did not effectively promote software sharing, because most developers +did not use the libraries. We concluded that weaker conditions might promote +sharing better. + +However, unrestricted linking of non-free programs would deprive the users +of those programs of all benefit from the free status of the libraries themselves. +This Library General Public License is intended to permit developers of non-free +programs to use free libraries, while preserving your freedom as a user of +such programs to change the free libraries that are incorporated in them. +(We have not seen how to achieve this as regards changes in header files, +but we have achieved it as regards changes in the actual functions of the +Library.) The hope is that this will lead to faster development of free libraries. + +The precise terms and conditions for copying, distribution and modification +follow. Pay close attention to the difference between a "work based on the +library" and a "work that uses the library". The former contains code derived +from the library, while the latter only works together with the library. + +Note that it is possible for a library to be covered by the ordinary General +Public License rather than by this special one. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License Agreement applies to any software library which contains a +notice placed by the copyright holder or other authorized party saying it +may be distributed under the terms of this Library General Public License +(also called "this License"). Each licensee is addressed as "you". + +A "library" means a collection of software functions and/or data prepared +so as to be conveniently linked with application programs (which use some +of those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has +been distributed under these terms. A "work based on the Library" means either +the Library or any derivative work under copyright law: that is to say, a +work containing the Library or a portion of it, either verbatim or with modifications +and/or translated straightforwardly into another language. (Hereinafter, translation +is included without limitation in the term "modification".) + +"Source code" for a work means the preferred form of the work for making modifications +to it. For a library, complete source code means all the source code for all +modules it contains, plus any associated interface definition files, plus +the scripts used to control compilation and installation of the library. + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running a program +using the Library is not restricted, and output from such a program is covered +only if its contents constitute a work based on the Library (independent of +the use of the Library in a tool for writing it). Whether that is true depends +on what the Library does and what the program that uses the Library does. + +1. You may copy and distribute verbatim copies of the Library's complete source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and disclaimer +of warranty; keep intact all the notices that refer to this License and to +the absence of any warranty; and distribute a copy of this License along with +the Library. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, +thus forming a work based on the Library, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all +of these conditions: + + a) The modified work must itself be a software library. + +b) You must cause the files modified to carry prominent notices stating that +you changed the files and the date of any change. + +c) You must cause the whole of the work to be licensed at no charge to all +third parties under the terms of this License. + +d) If a facility in the modified Library refers to a function or a table of +data to be supplied by an application program that uses the facility, other +than as an argument passed when the facility is invoked, then you must make +a good faith effort to ensure that, in the event an application does not supply +such function or table, the facility still operates, and performs whatever +part of its purpose remains meaningful. + +(For example, a function in a library to compute square roots has a purpose +that is entirely well-defined independent of the application. Therefore, Subsection +2d requires that any application-supplied function or table used by this function +must be optional: if the application does not supply it, the square root function +must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Library, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Library, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend +to the entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise +the right to control the distribution of derivative or collective works based +on the Library. + +In addition, mere aggregation of another work not based on the Library with +the Library (or with a work based on the Library) on a volume of a storage +or distribution medium does not bring the other work under the scope of this +License. + +3. You may opt to apply the terms of the ordinary GNU General Public License +instead of this License to a given copy of the Library. To do this, you must +alter all the notices that refer to this License, so that they refer to the +ordinary GNU General Public License, version 2, instead of to this License. +(If a newer version than version 2 of the ordinary GNU General Public License +has appeared, then you can specify that version instead if you wish.) Do not +make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, +so the ordinary GNU General Public License applies to all subsequent copies +and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library +into a program that is not a library. + +4. You may copy and distribute the Library (or a portion or derivative of +it, under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you accompany it with the complete corresponding +machine-readable source code, which must be distributed under the terms of +Sections 1 and 2 above on a medium customarily used for software interchange. + +If distribution of object code is made by offering access to copy from a designated +place, then offering equivalent access to copy the source code from the same +place satisfies the requirement to distribute the source code, even though +third parties are not compelled to copy the source along with the object code. + +5. A program that contains no derivative of any portion of the Library, but +is designed to work with the Library by being compiled or linked with it, +is called a "work that uses the Library". Such a work, in isolation, is not +a derivative work of the Library, and therefore falls outside the scope of +this License. + +However, linking a "work that uses the Library" with the Library creates an +executable that is a derivative of the Library (because it contains portions +of the Library), rather than a "work that uses the library". The executable +is therefore covered by this License. Section 6 states terms for distribution +of such executables. + +When a "work that uses the Library" uses material from a header file that +is part of the Library, the object code for the work may be a derivative work +of the Library even though the source code is not. Whether this is true is +especially significant if the work can be linked without the Library, or if +the work is itself a library. The threshold for this to be true is not precisely +defined by law. + +If such an object file uses only numerical parameters, data structure layouts +and accessors, and small macros and small inline functions (ten lines or less +in length), then the use of the object file is unrestricted, regardless of +whether it is legally a derivative work. (Executables containing this object +code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute +the object code for the work under the terms of Section 6. Any executables +containing that work also fall under Section 6, whether or not they are linked +directly with the Library itself. + +6. As an exception to the Sections above, you may also compile or link a "work +that uses the Library" with the Library to produce a work containing portions +of the Library, and distribute that work under terms of your choice, provided +that the terms permit modification of the work for the customer's own use +and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library +is used in it and that the Library and its use are covered by this License. +You must supply a copy of this License. If the work during execution displays +copyright notices, you must include the copyright notice for the Library among +them, as well as a reference directing the user to the copy of this License. +Also, you must do one of these things: + +a) Accompany the work with the complete corresponding machine-readable source +code for the Library including whatever changes were used in the work (which +must be distributed under Sections 1 and 2 above); and, if the work is an +executable linked with the Library, with the complete machine-readable "work +that uses the Library", as object code and/or source code, so that the user +can modify the Library and then relink to produce a modified executable containing +the modified Library. (It is understood that the user who changes the contents +of definitions files in the Library will not necessarily be able to recompile +the application to use the modified definitions.) + +b) Accompany the work with a written offer, valid for at least three years, +to give the same user the materials specified in Subsection 6a, above, for +a charge no more than the cost of performing this distribution. + +c) If distribution of the work is made by offering access to copy from a designated +place, offer equivalent access to copy the above specified materials from +the same place. + +d) Verify that the user has already received a copy of these materials or +that you have already sent this user a copy. + +For an executable, the required form of the "work that uses the Library" must +include any data and utility programs needed for reproducing the executable +from it. However, as a special exception, the source code distributed need +not include anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the operating +system on which the executable runs, unless that component itself accompanies +the executable. + +It may happen that this requirement contradicts the license restrictions of +other proprietary libraries that do not normally accompany the operating system. +Such a contradiction means you cannot use both them and the Library together +in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side +in a single library together with other library facilities not covered by +this License, and distribute such a combined library, provided that the separate +distribution of the work based on the Library and of the other library facilities +is otherwise permitted, and provided that you do these two things: + +a) Accompany the combined library with a copy of the same work based on the +Library, uncombined with any other library facilities. This must be distributed +under the terms of the Sections above. + +b) Give prominent notice with the combined library of the fact that part of +it is a work based on the Library, and explaining where to find the accompanying +uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library +except as expressly provided under this License. Any attempt otherwise to +copy, modify, sublicense, link with, or distribute the Library is void, and +will automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will not +have their licenses terminated so long as such parties remain in full compliance. + +9. You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute the +Library or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the Library +(or any work based on the Library), you indicate your acceptance of this License +to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + +10. Each time you redistribute the Library (or any work based on the Library), +the recipient automatically receives a license from the original licensor +to copy, distribute, link with or modify the Library subject to these terms +and conditions. You may not impose any further restrictions on the recipients' +exercise of the rights granted herein. You are not responsible for enforcing +compliance by third parties to this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement +or for any other reason (not limited to patent issues), conditions are imposed +on you (whether by court order, agreement or otherwise) that contradict the +conditions of this License, they do not excuse you from the conditions of +this License. If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, then as +a consequence you may not distribute the Library at all. For example, if a +patent license would not permit royalty-free redistribution of the Library +by all those who receive copies directly or indirectly through you, then the +only way you could satisfy both it and this License would be to refrain entirely +from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents +or other property right claims or to contest validity of any such claims; +this section has the sole purpose of protecting the integrity of the free +software distribution system which is implemented by public license practices. +Many people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +12. If the distribution and/or use of the Library is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Library under this License may add an explicit geographical +distribution limitation excluding those countries, so that distribution is +permitted only in or among countries not thus excluded. In such case, this +License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of +the Library General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to address +new problems or concerns. + +Each version is given a distinguishing version number. If the Library specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that version +or of any later version published by the Free Software Foundation. If the +Library does not specify a license version number, you may choose any version +ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs +whose distribution conditions are incompatible with these, write to the author +to ask for permission. For software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we sometimes make exceptions +for this. Our decision will be guided by the two goals of preserving the free +status of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE +THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE +OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES +OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Libraries + +If you develop a new library, and you want it to be of the greatest possible +use to the public, we recommend making it free software that everyone can +redistribute and change. You can do so by permitting redistribution under +these terms (or, alternatively, under the terms of the ordinary General Public +License). + +To apply these terms, attach the following notices to the library. It is safest +to attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the "copyright" +line and a pointer to where the full notice is found. + +one line to give the library's name and an idea of what it does. + +Copyright (C) year name of author + +This library is free software; you can redistribute it and/or modify it under +the terms of the GNU Library General Public License as published by the Free +Software Foundation; either version 2 of the License, or (at your option) +any later version. + +This library is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +details. + +You should have received a copy of the GNU Library General Public License +along with this library; if not, write to the Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the library, if necessary. Here +is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in + +the library `Frob' (a library for tweaking knobs) written + +by James Random Hacker. + +signature of Ty Coon, 1 April 1990 + +Ty Coon, President of Vice + +That's all there is to it! diff --git a/LICENSES/LicenseRef-KDE-Accepted-GPL.txt b/LICENSES/LicenseRef-KDE-Accepted-GPL.txt new file mode 100644 index 0000000..60a2dff --- /dev/null +++ b/LICENSES/LicenseRef-KDE-Accepted-GPL.txt @@ -0,0 +1,12 @@ +This library 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 3 of +the license or (at your option) at any later version that is +accepted by the membership of KDE e.V. (or its successor +approved by the membership of KDE e.V.), which shall act as a +proxy as defined in Section 14 of version 3 of the license. + +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. diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 0000000..204b93d --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,19 @@ +MIT License Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/about/CMakeLists.txt b/about/CMakeLists.txt new file mode 100644 index 0000000..97ac2df --- /dev/null +++ b/about/CMakeLists.txt @@ -0,0 +1,9 @@ +set(kio_about_PART_SRCS kio_about.cpp ) + +add_library(kio_about MODULE ${kio_about_PART_SRCS}) + +target_link_libraries(kio_about KF5::KIOCore Qt5::Network) +set_target_properties(kio_about PROPERTIES OUTPUT_NAME "about") + +install(TARGETS kio_about DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio ) +install( FILES about.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) diff --git a/about/Messages.sh b/about/Messages.sh new file mode 100644 index 0000000..6b70a5c --- /dev/null +++ b/about/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp *.h -o $podir/kio5_about.pot diff --git a/about/about.protocol b/about/about.protocol new file mode 100644 index 0000000..34ee1ce --- /dev/null +++ b/about/about.protocol @@ -0,0 +1,9 @@ +[Protocol] +exec=kf5/kio/about +protocol=about +input=none +output=filesystem +reading=true +defaultMimetype=text/html +Icon=help-about +Class=:local diff --git a/about/kio_about.cpp b/about/kio_about.cpp new file mode 100644 index 0000000..0706ef1 --- /dev/null +++ b/about/kio_about.cpp @@ -0,0 +1,75 @@ +/* This file is part of the KDE libraries + + Copyright (c) 2002 John Firebaugh + + 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 "kio_about.h" + +#include +#include + +using namespace KIO; + +AboutProtocol::AboutProtocol(const QByteArray &pool_socket, const QByteArray &app_socket) + : SlaveBase("about", pool_socket, app_socket) +{ +} + +AboutProtocol::~AboutProtocol() +{ +} + +void AboutProtocol::get( const QUrl& ) +{ + QByteArray output; + + QTextStream os( &output, QIODevice::WriteOnly ); + os.setCodec( "ISO-8859-1" ); // In fact ASCII + + os << "about:blank"; + os.flush(); + + mimeType("text/html"); + data( output ); + finished(); +} + +void AboutProtocol::mimetype( const QUrl& ) +{ + mimeType("text/html"); + finished(); +} + +extern "C" Q_DECL_EXPORT int kdemain( int argc, char **argv ) +{ + QCoreApplication app(argc, argv); + + app.setApplicationName("kio_about"); + + if (argc != 4) + { + fprintf(stderr, "Usage: kio_about protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + + AboutProtocol slave(argv[2], argv[3]); + slave.dispatchLoop(); + + return 0; +} + diff --git a/about/kio_about.h b/about/kio_about.h new file mode 100644 index 0000000..7bc1c44 --- /dev/null +++ b/about/kio_about.h @@ -0,0 +1,40 @@ +/* This file is part of the KDE libraries + + Copyright (c) 2002 John Firebaugh + + 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 __kio_about_h__ +#define __kio_about_h__ + +#include +#include + +#include +#include + + +class AboutProtocol : public KIO::SlaveBase +{ +public: + AboutProtocol(const QByteArray &pool_socket, const QByteArray &app_socket); + ~AboutProtocol() override; + + void get(const QUrl& url) override; + void mimetype(const QUrl& url) override; +}; + +#endif diff --git a/activities/CMakeLists.txt b/activities/CMakeLists.txt new file mode 100644 index 0000000..4732eed --- /dev/null +++ b/activities/CMakeLists.txt @@ -0,0 +1,47 @@ +# vim:set softtabstop=3 shiftwidth=3 tabstop=3 expandtab: + +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_activities\") + +include_directories ( + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ) + +add_subdirectory(fileitemplugin) + +########### next target ############### + +set (kio_activities_PART_SRCS + KioActivities.cpp + utils/qsqlquery_iterator.cpp + common/database/Database.cpp + common/database/schema/ResourcesDatabaseSchema.cpp + ) + +add_library ( + kio_activities MODULE + ${kio_activities_PART_SRCS} + ) + +target_link_libraries ( + kio_activities + Qt5::Sql + KF5::KIOCore + KF5::DBusAddons + KF5::Activities + KF5::I18n + Qt5::Network + ) +set_target_properties(kio_activities PROPERTIES OUTPUT_NAME "activities") + +install ( + TARGETS kio_activities + DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio + ) + +########### install files ############### + +install ( + FILES activities.protocol + DESTINATION ${KDE_INSTALL_KSERVICES5DIR} + ) diff --git a/activities/KioActivities.cpp b/activities/KioActivities.cpp new file mode 100644 index 0000000..f7b5506 --- /dev/null +++ b/activities/KioActivities.cpp @@ -0,0 +1,365 @@ +/* + * Copyright (C) 2012 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#include "KioActivities.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +class ActivitiesProtocol::Private { +public: + Private() + { + } + + enum PathType { + RootItem, + ActivityRootItem, + ActivityPathItem + }; + + PathType pathType(const QUrl &url, QString *activity = nullptr, + QString *filePath = nullptr) const + { + const auto fullPath = url.adjusted(QUrl::StripTrailingSlash).path(); + const auto path = fullPath.midRef(fullPath.startsWith('/') ? 1 : 0); + + if (activity) { + *activity = path.mid(0, path.indexOf("/") - 1).toString(); + } + + if (filePath) { + auto strippedPath = path.mid(path.indexOf("/") + 1); + auto splitPosition = strippedPath.indexOf("/"); + + if (splitPosition == -1) { + // if we have only one path segment + *filePath = demangledPath(strippedPath.toString()); + + } else { + // if we have sub-paths + auto head = strippedPath.mid(0, splitPosition); + auto tail = strippedPath.mid(splitPosition); + + *filePath = demangledPath(head.toString()) + tail.toString(); + } + } + + return path.length() == 0 ? RootItem + : path.contains("/") ? ActivityPathItem + : ActivityRootItem; + } + + void syncActivities(KActivities::Consumer &activities) + { + // We need to use the consumer in a synchronized way + while (activities.serviceStatus() == KActivities::Consumer::Unknown) { + QCoreApplication::processEvents(); + } + } + + KIO::UDSEntry activityEntry(const QString &activity) + { + KIO::UDSEntry uds; + uds.reserve(8); + KActivities::Info activityInfo(activity); + uds.fastInsert(KIO::UDSEntry::UDS_NAME, activity); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, activityInfo.name()); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_TYPE, i18n("Activity")); + uds.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, activityInfo.icon()); + uds.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + uds.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory")); + uds.fastInsert(KIO::UDSEntry::UDS_ACCESS, 0500); + uds.fastInsert(KIO::UDSEntry::UDS_USER, KUser().loginName()); + return uds; + } + + KIO::UDSEntry filesystemEntry(const QString &path) + { + KIO::UDSEntry uds; + auto url = QUrl::fromLocalFile(path); + + if (KIO::StatJob* job = KIO::stat(url, KIO::HideProgressInfo)) { + QScopedPointer sp(job); + job->setAutoDelete(false); + if (job->exec()) { + uds = job->statResult(); + } + } + + auto mangled = mangledPath(path); + // QProcess::execute("kdialog", { "--passivepopup", mangled }); + + uds.replace(KIO::UDSEntry::UDS_NAME, mangled); + uds.replace(KIO::UDSEntry::UDS_DISPLAY_NAME, url.fileName()); + uds.replace(KIO::UDSEntry::UDS_TARGET_URL, url.url()); + uds.replace(KIO::UDSEntry::UDS_LOCAL_PATH, path); + + return uds; + } + + QString mangledPath(const QString &path) const + { + // return QString::fromUtf8(QUrl::toPercentEncoding(path)); + return QString::fromLatin1(path.toUtf8().toBase64( + QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals)); + } + + QString demangledPath(const QString &mangled) const + { + // return QUrl::fromPercentEncoding(mangled.toUtf8()); + return QString::fromUtf8(QByteArray::fromBase64(mangled.toLatin1(), + QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals)); + } + + // KActivities::Consumer activities; +}; + + + +extern "C" int Q_DECL_EXPORT kdemain(int argc, char **argv) +{ + // necessary to use other kio slaves + QCoreApplication app(argc, argv); + if (argc != 4) { + fprintf(stderr, "Usage: kio_activities protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + // start the slave + ActivitiesProtocol slave(argv[2], argv[3]); + slave.dispatchLoop(); + return 0; +} + + +ActivitiesProtocol::ActivitiesProtocol(const QByteArray &poolSocket, + const QByteArray &appSocket) + : KIO::ForwardingSlaveBase("activities", poolSocket, appSocket) +{ +} + +ActivitiesProtocol::~ActivitiesProtocol() +{ +} + +bool ActivitiesProtocol::rewriteUrl(const QUrl &url, QUrl &newUrl) +{ + QString activity, path; + switch (d->pathType(url, &activity, &path)) { + case Private::RootItem: + case Private::ActivityRootItem: + if (activity == "current") { + KActivities::Consumer activities; + d->syncActivities(activities); + newUrl = QUrl(QStringLiteral("activities:/") + + activities.currentActivity()); + return true; + } + return false; + + case Private::ActivityPathItem: + { + // auto demangled = d->demangledPath(path); + // QProcess::execute("kdialog", + // { "--passivepopup", + // path.midRef(1).toString() + "\n" + demangled }); + + newUrl = QUrl::fromLocalFile(path); + return true; + } + + default: + return true; + } +} + +void ActivitiesProtocol::listDir(const QUrl &url) +{ + KActivities::Consumer activities; + d->syncActivities(activities); + + QString activity, path; + switch (d->pathType(url, &activity, &path)) { + case Private::RootItem: + { + KIO::UDSEntryList udslist; + + KIO::UDSEntry uds; + uds.reserve(9); + uds.fastInsert(KIO::UDSEntry::UDS_NAME, QStringLiteral("current")); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, i18n("Current activity")); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_TYPE, i18n("Activity")); + uds.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, QStringLiteral("activities")); + uds.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + uds.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory")); + uds.fastInsert(KIO::UDSEntry::UDS_ACCESS, 0500); + uds.fastInsert(KIO::UDSEntry::UDS_USER, KUser().loginName()); + uds.fastInsert(KIO::UDSEntry::UDS_TARGET_URL, QStringLiteral("activities:/") + activities.currentActivity()); + udslist << uds; + + for (const auto& activity: activities.activities()) { + udslist << d->activityEntry(activity); + } + + listEntries(udslist); + finished(); + break; + } + + case Private::ActivityRootItem: + { + KIO::UDSEntryList udslist; + + auto database = Common::Database::instance( + Common::Database::ResourcesDatabase, + Common::Database::ReadOnly); + + if (!database) { + finished(); + break; + } + + if (activity == "current") { + activity = activities.currentActivity(); + } + + static const auto queryString = QStringLiteral( + "SELECT targettedResource " + "FROM ResourceLink " + "WHERE usedActivity = '%1' " + "AND initiatingAgent = \":global\" " + ); + + auto query = database->execQuery(queryString.arg(activity)); + + for (const auto& result: query) { + auto path = result[0].toString(); + + if (!QFile(path).exists()) continue; + + KIO::UDSEntry uds; + + udslist << d->filesystemEntry(path); + } + + listEntries(udslist); + finished(); + break; + } + + case Private::ActivityPathItem: + ForwardingSlaveBase::listDir(QUrl::fromLocalFile(path)); + break; + } +} + +void ActivitiesProtocol::prepareUDSEntry(KIO::UDSEntry &entry, bool listing) const +{ + ForwardingSlaveBase::prepareUDSEntry(entry, listing); +} + +void ActivitiesProtocol::stat(const QUrl& url) +{ + QString activity; + + switch (d->pathType(url, &activity)) { + case Private::RootItem: + { + QString dirName = i18n("Activities"); + KIO::UDSEntry uds; + uds.reserve(6); + uds.fastInsert(KIO::UDSEntry::UDS_NAME, dirName); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, dirName); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_TYPE, dirName); + uds.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, QStringLiteral("activities")); + uds.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + uds.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory")); + + statEntry(uds); + finished(); + break; + } + + case Private::ActivityRootItem: + { + KActivities::Consumer activities; + d->syncActivities(activities); + + if (activity == "current") { + activity = activities.currentActivity(); + } + + statEntry(d->activityEntry(activity)); + finished(); + break; + } + + case Private::ActivityPathItem: + ForwardingSlaveBase::stat(url); + break; + } +} + +void ActivitiesProtocol::mimetype(const QUrl& url) +{ + switch (d->pathType(url)) { + case Private::RootItem: + case Private::ActivityRootItem: + mimeType(QStringLiteral("inode/directory")); + finished(); + break; + + case Private::ActivityPathItem: + ForwardingSlaveBase::mimetype(url); + break; + } + +} + +void ActivitiesProtocol::del(const QUrl& url, bool isfile) +{ + Q_UNUSED(url); + Q_UNUSED(isfile); +} + + diff --git a/activities/KioActivities.h b/activities/KioActivities.h new file mode 100644 index 0000000..a7244e9 --- /dev/null +++ b/activities/KioActivities.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2012 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef KIO_ACTIVITIES_H +#define KIO_ACTIVITIES_H + +#include + +#include + +class ActivitiesProtocol : public KIO::ForwardingSlaveBase { + Q_OBJECT + +public: + ActivitiesProtocol(const QByteArray &poolSocket, const QByteArray &appSocket); + ~ActivitiesProtocol() override; + +protected: + bool rewriteUrl(const QUrl &url, QUrl &newUrl) override; + void listDir(const QUrl &url) override; + void prepareUDSEntry(KIO::UDSEntry &entry, bool listing = false) const override; + void stat(const QUrl& url) override; + void mimetype(const QUrl& url) override; + void del(const QUrl& url, bool isfile) override; + +private: + D_PTR; +}; + +#endif // KIO_ACTIVITIES_H diff --git a/activities/Messages.sh b/activities/Messages.sh new file mode 100755 index 0000000..db3d40e --- /dev/null +++ b/activities/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT $(find . -name "*.cpp") -o $podir/kio5_activities.pot diff --git a/activities/activities.protocol b/activities/activities.protocol new file mode 100644 index 0000000..ed5ec36 --- /dev/null +++ b/activities/activities.protocol @@ -0,0 +1,16 @@ +[Protocol] +exec=kf5/kio/activities +protocol=activities +input=none +output=filesystem +reading=true +writing=true +deleting=true +linking=false +makedir=false +moving=false +listing=Name,Type,Size,Date,AccessDate,Access,Owner,Group,Link +source=false +Icon=folder-activities +Class=:local +maxInstances=100 diff --git a/activities/common/database/Database.cpp b/activities/common/database/Database.cpp new file mode 100644 index 0000000..3def794 --- /dev/null +++ b/activities/common/database/Database.cpp @@ -0,0 +1,292 @@ +/* + * Copyright (C) 2014 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#include "Database.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +namespace Common { + +namespace { +#ifdef QT_DEBUG + QString lastExecutedQuery; +#endif + + std::mutex databases_mutex; + + struct DatabaseInfo { + Qt::HANDLE thread; + Database::OpenMode openMode; + }; + + bool operator<(const DatabaseInfo &left, const DatabaseInfo &right) + { + return + left.thread < right.thread ? true : + left.thread > right.thread ? false : + left.openMode < right.openMode; + } + + std::map> databases; +}; + +class QSqlDatabaseWrapper { +private: + QSqlDatabase m_database; + bool m_open; + QString m_connectionName; + +public: + QSqlDatabaseWrapper(const DatabaseInfo &info) + : m_open(false) + { + m_connectionName = + "kactivities_db_resources_" + // Adding the thread number to the database name + + QString::number((quintptr)info.thread) + // And whether it is read-only or read-write + + (info.openMode == Database::ReadOnly ? "_readonly" : "_readwrite"); + + m_database = + QSqlDatabase::contains(m_connectionName) + ? QSqlDatabase::database(m_connectionName) + : QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), m_connectionName); + + if (info.openMode == Database::ReadOnly) { + m_database.setConnectOptions(QStringLiteral("QSQLITE_OPEN_READONLY")); + } + + // We are allowing the database file to be overridden mostly for testing purposes + m_database.setDatabaseName(ResourcesDatabaseSchema::path()); + + m_open = m_database.open(); + + if (!m_open) { + qWarning() << "KActivities: Database is not open: " + << m_database.connectionName() + << m_database.databaseName() + << m_database.lastError(); + + if (info.openMode == Database::ReadWrite) { + qFatal("KActivities: Opening the database in RW mode should always succeed"); + } + } + } + + ~QSqlDatabaseWrapper() + { + qDebug() << "Closing SQL connection: " << m_connectionName; + } + + QSqlDatabase &get() + { + return m_database; + } + + bool isOpen() const + { + return m_open; + } + + QString connectionName() const + { + return m_connectionName; + } +}; + +class Database::Private { +public: + Private() + { + } + + QSqlQuery query(const QString &query) + { + return database ? QSqlQuery(query, database->get()) : QSqlQuery(); + } + + QSqlQuery query() + { + return database ? QSqlQuery(database->get()) : QSqlQuery(); + } + + QScopedPointer database; +}; + +Database::Locker::Locker(Database &database) + : m_database(database.d->database->get()) +{ + m_database.transaction(); +} + +Database::Locker::~Locker() +{ + m_database.commit(); +} + +Database::Ptr Database::instance(Source source, OpenMode openMode) +{ + Q_UNUSED(source) // for the time being + + std::lock_guard lock(databases_mutex); + + // We are saving instances per thread and per read/write mode + DatabaseInfo info; + info.thread = QThread::currentThreadId(); + info.openMode = openMode; + + // Do we have an instance matching the request? + auto search = databases.find(info); + if (search != databases.end()) { + auto ptr = search->second.lock(); + + if (ptr) { + return ptr; + } + } + + // Creating a new database instance + auto ptr = std::make_shared(); + + ptr->d->database.reset(new QSqlDatabaseWrapper(info)); + + if (!ptr->d->database->isOpen()) { + return nullptr; + } + + databases[info] = ptr; + + if (info.openMode == ReadOnly) { + // From now on, only SELECT queries will work + ptr->setPragma(QStringLiteral("query_only = 1")); + + // These should not make any difference + ptr->setPragma(QStringLiteral("synchronous = 0")); + + } else { + // Using the write-ahead log and sync = NORMAL for faster writes + ptr->setPragma(QStringLiteral("synchronous = 1")); + } + + // Maybe we should use the write-ahead log + auto walResult = ptr->pragma(QStringLiteral("journal_mode = WAL")); + + if (walResult != "wal") { + qFatal("KActivities: Database can not be opened in WAL mode. Check the " + "SQLite version (required >3.7.0). And whether your filesystem " + "supports shared memory"); + } + + // We don't have a big database, lets flush the WAL when + // it reaches 400k, not 4M as is default + ptr->setPragma(QStringLiteral("wal_autocheckpoint = 100")); + + qDebug() << "KActivities: Database connection: " << ptr->d->database->connectionName() + << "\n query_only: " << ptr->pragma(QStringLiteral("query_only")) + << "\n journal_mode: " << ptr->pragma(QStringLiteral("journal_mode")) + << "\n wal_autocheckpoint: " << ptr->pragma(QStringLiteral("wal_autocheckpoint")) + << "\n synchronous: " << ptr->pragma(QStringLiteral("synchronous")) + ; + + return ptr; +} + +Database::Database() +{ +} + +Database::~Database() +{ +} + +QSqlQuery Database::createQuery() const +{ + return d->query(); +} + +QString Database::lastQuery() const +{ +#ifdef QT_DEBUG + return lastExecutedQuery; +#endif + return QString(); +} + +QSqlQuery Database::execQuery(const QString &query, bool ignoreErrors) const +{ +#ifdef QT_NO_DEBUG + return d->query(query); +#else + auto result = d->query(query); + + lastExecutedQuery = query; + + if (!ignoreErrors && result.lastError().isValid()) { + qWarning() << "SQL: " + << "\n error: " << result.lastError() + << "\n query: " << query; + } + + return result; +#endif +} + +QSqlQuery Database::execQueries(const QStringList &queries) const +{ + QSqlQuery result; + + for (const auto& query: queries) { + result = execQuery(query); + } + + return result; +} + +void Database::setPragma(const QString &pragma) +{ + execQuery(QStringLiteral("PRAGMA ") + pragma); +} + +QVariant Database::pragma(const QString &pragma) const +{ + return value("PRAGMA " + pragma); +} + +QVariant Database::value(const QString &query) const +{ + auto result = execQuery(query); + return result.next() ? result.value(0) : QVariant(); +} + +} // namespace Common + diff --git a/activities/common/database/Database.h b/activities/common/database/Database.h new file mode 100644 index 0000000..16bf6a4 --- /dev/null +++ b/activities/common/database/Database.h @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2014 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef COMMON_DATABASE_H +#define COMMON_DATABASE_H + +#include +#include +#include +#include + +namespace Common { + +class Database { +public: + typedef std::shared_ptr Ptr; + + enum Source { + ResourcesDatabase + }; + + enum OpenMode { + ReadWrite, + ReadOnly + }; + + static Ptr instance(Source source, OpenMode openMode); + + QSqlQuery execQueries(const QStringList &queries) const; + QSqlQuery execQuery(const QString &query, bool ignoreErrors = false) const; + QSqlQuery createQuery() const; + + void setPragma(const QString &pragma); + QVariant pragma(const QString &pragma) const; + QVariant value(const QString &query) const; + + // For debugging purposes only + QString lastQuery() const; + + ~Database(); + Database(); + + friend class Locker; + class Locker { + public: + explicit Locker(Database &database); + ~Locker(); + + private: + QSqlDatabase &m_database; + }; + + #define DATABASE_TRANSACTION(A) \ + /* enable this for debugging only: qDebug() << "Location:" << __FILE__ << __LINE__; */ \ + Common::Database::Locker lock(A) + +private: + D_PTR; +}; + +template +QString parseStarPattern(const QString &pattern, const QString &joker, + EscapeFunction escape) +{ + const auto begin = pattern.constBegin(); + const auto end = pattern.constEnd(); + + auto currentStart = pattern.constBegin(); + auto currentPosition = pattern.constBegin(); + + bool isEscaped = false; + + // This should be available in the QString class... + auto stringFromIterators = [&](const QString::const_iterator ¤tStart, + const QString::const_iterator ¤tPosition) { + return pattern.mid( + std::distance(begin, currentStart), + std::distance(currentStart, currentPosition)); + }; + + // Escaping % and _ for sql like + // auto escape = [] (QString str) { + // return str.replace("%", "\\%").replace("_", "\\_"); + // }; + + QString resultPattern; + resultPattern.reserve(pattern.size() * 1.5); + + for (; currentPosition != end; ++currentPosition) { + if (isEscaped) { + // Just skip the current character + isEscaped = false; + + } else if (*currentPosition == '\\') { + // Skip two characters + isEscaped = true; + + } else if (*currentPosition == '*') { + // Replacing the star with the sql like joker - % + resultPattern.append(escape(stringFromIterators( + currentStart, currentPosition)) + joker); + currentStart = currentPosition + 1; + + } else { + // This one is boring, nothing to do + } + } + + if (currentStart != currentPosition) { + resultPattern.append(escape(stringFromIterators( + currentStart, currentPosition))); + } + + return resultPattern; +} + +inline QString starPatternToLike(const QString &pattern) +{ + return parseStarPattern(pattern, QStringLiteral("%"), [] (QString str) { + return str.replace(QLatin1String("%"), QLatin1String("\\%")).replace(QLatin1String("_"), QLatin1String("\\_")); + }); +} + +inline QRegExp starPatternToRegex(const QString &pattern) +{ + return QRegExp(parseStarPattern(pattern, QStringLiteral(".*"), QRegExp::escape)); +} + +} // namespace Common + +#endif // COMMON_DATABASE_H + diff --git a/activities/common/database/schema/ResourcesDatabaseSchema.cpp b/activities/common/database/schema/ResourcesDatabaseSchema.cpp new file mode 100644 index 0000000..c1d1be2 --- /dev/null +++ b/activities/common/database/schema/ResourcesDatabaseSchema.cpp @@ -0,0 +1,205 @@ +/* + * Copyright (C) 2015 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#include "ResourcesDatabaseSchema.h" + +#include +#include +#include + +namespace Common { +namespace ResourcesDatabaseSchema { + +const QString name = QStringLiteral("Resources"); + +QString version() +{ + return QStringLiteral("2015.02.09"); +} + +QStringList schema() +{ + // If only we could use initializer lists here ... + + return QStringList() + + << // Schema information table, used for versioning + QStringLiteral("CREATE TABLE IF NOT EXISTS SchemaInfo (" + "key text PRIMARY KEY, value text" + ")") + + << QStringLiteral("INSERT OR IGNORE INTO schemaInfo VALUES ('version', '%1')").arg(version()) + << QStringLiteral("UPDATE schemaInfo SET value = '%1' WHERE key = 'version'").arg(version()) + + + << // The ResourceEvent table saves the Opened/Closed event pairs for + // a resource. The Accessed event is mapped to those. + // Focusing events are not stored in order not to get a + // huge database file and to lessen writes to the disk. + QStringLiteral("CREATE TABLE IF NOT EXISTS ResourceEvent (" + "usedActivity TEXT, " + "initiatingAgent TEXT, " + "targettedResource TEXT, " + "start INTEGER, " + "end INTEGER " + ")") + + << // The ResourceScoreCache table stores the calculated scores + // for resources based on the recorded events. + QStringLiteral("CREATE TABLE IF NOT EXISTS ResourceScoreCache (" + "usedActivity TEXT, " + "initiatingAgent TEXT, " + "targettedResource TEXT, " + "scoreType INTEGER, " + "cachedScore FLOAT, " + "firstUpdate INTEGER, " + "lastUpdate INTEGER, " + "PRIMARY KEY(usedActivity, initiatingAgent, targettedResource)" + ")") + + + << // @since 2014.05.05 + // The ResourceLink table stores the information, formerly kept by + // Nepomuk, of which resources are linked to which activities. + // The additional features compared to the old days are + // the ability to limit the link to specific applications, and + // to create global links. + QStringLiteral("CREATE TABLE IF NOT EXISTS ResourceLink (" + "usedActivity TEXT, " + "initiatingAgent TEXT, " + "targettedResource TEXT, " + "PRIMARY KEY(usedActivity, initiatingAgent, targettedResource)" + ")") + + << // @since 2015.01.18 + // The ResourceInfo table stores the collected information about a + // resource that is not agent nor activity related like the + // title and the mime type. + // If these are automatically retrieved (works for files), the + // flag is set to true. This is done for the agents to be able to + // override these. + QStringLiteral("CREATE TABLE IF NOT EXISTS ResourceInfo (" + "targettedResource TEXT, " + "title TEXT, " + "mimetype TEXT, " + "autoTitle INTEGER, " + "autoMimetype INTEGER, " + "PRIMARY KEY(targettedResource)" + ")") + + ; +} + +// TODO: This will require some refactoring after we introduce more databases +QString defaultPath() +{ + return QStandardPaths::writableLocation( + QStandardPaths::GenericDataLocation) + + QStringLiteral("/kactivitymanagerd/resources/database"); +} + +const char *overrideFlagProperty = "org.kde.KActivities.ResourcesDatabase.overrideDatabase"; +const char *overrideFileProperty = "org.kde.KActivities.ResourcesDatabase.overrideDatabaseFile"; + +QString path() +{ + auto app = QCoreApplication::instance(); + + return + (app->property(overrideFlagProperty).toBool()) ? + app->property(overrideFileProperty).toString() : + defaultPath(); +} + +void overridePath(const QString &path) +{ + auto app = QCoreApplication::instance(); + + app->setProperty(overrideFlagProperty, true); + app->setProperty(overrideFileProperty, path); +} + +void initSchema(Database &database) +{ + QString dbSchemaVersion; + + auto query = database.execQuery( + QStringLiteral("SELECT value FROM SchemaInfo WHERE key = 'version'"), + /* ignore error */ true); + + if (query.next()) { + dbSchemaVersion = query.value(0).toString(); + } + + // Early bail-out if the schema is up-to-date + if (dbSchemaVersion == version()) { + return; + } + + // Transition to KF5: + // We left the world of Nepomuk, and all the ontologies went + // across the sea to the Undying Lands. + // This needs to be done before executing the schema() queries + // so that we do not create new (empty) tables and block these + // queries from being executed. + if (dbSchemaVersion < QStringLiteral("2014.04.14")) { + database.execQuery( + QStringLiteral("ALTER TABLE nuao_DesktopEvent RENAME TO ResourceEvent"), + /* ignore error */ true); + database.execQuery( + QStringLiteral("ALTER TABLE kext_ResourceScoreCache RENAME TO ResourceScoreCache"), + /* ignore error */ true); + } + + database.execQueries(ResourcesDatabaseSchema::schema()); + + // We can not allow empty fields for activity and agent, they need to + // be at least magic values. These do not change the structure + // of the database, but the old data. + if (dbSchemaVersion < QStringLiteral("2015.02.09")) { + const QString updateActivity = + QStringLiteral("SET usedActivity=':global' " + "WHERE usedActivity IS NULL OR usedActivity = ''"); + + const QString updateAgent = + QStringLiteral("SET initiatingAgent=':global' " + "WHERE initiatingAgent IS NULL OR initiatingAgent = ''"); + + // When the activity field was empty, it meant the file was + // linked to all activities (aka :global) + database.execQuery("UPDATE ResourceLink " + updateActivity); + + // When the agent field was empty, it meant the file was not + // linked to a specified agent (aka :global) + database.execQuery("UPDATE ResourceLink " + updateAgent); + + // These were not supposed to be empty, but in the case they were, + // deal with them as well + database.execQuery("UPDATE ResourceEvent " + updateActivity); + database.execQuery("UPDATE ResourceEvent " + updateAgent); + database.execQuery("UPDATE ResourceScoreCache " + updateActivity); + database.execQuery("UPDATE ResourceScoreCache " + updateAgent); + + } +} + +} // namespace Common +} // namespace ResourcesDatabaseSchema + diff --git a/activities/common/database/schema/ResourcesDatabaseSchema.h b/activities/common/database/schema/ResourcesDatabaseSchema.h new file mode 100644 index 0000000..c4a956e --- /dev/null +++ b/activities/common/database/schema/ResourcesDatabaseSchema.h @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2011 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef RESOURCESDATABASESCHEMA_H +#define RESOURCESDATABASESCHEMA_H + +#include +#include "../Database.h" + +namespace Common { +namespace ResourcesDatabaseSchema { + + QString version(); + + QStringList schema(); + + QString path(); + void overridePath(const QString &path); + + void initSchema(Database &database); + +} // namespace ResourcesDatabase +} // namespace Common + +#endif // RESOURCESDATABASESCHEMA_H + diff --git a/activities/common/dbus/common.h b/activities/common/dbus/common.h new file mode 100644 index 0000000..ed133a6 --- /dev/null +++ b/activities/common/dbus/common.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2010 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef DBUS_COMMON_H +#define DBUS_COMMON_H + +#include +#include + +#define KAMD_DBUS_SERVICE \ + QStringLiteral("org.kde.ActivityManager") + +#define KAMD_DBUS_OBJECT_PATH(A) \ + (sizeof(#A) > 2 ? QLatin1String("/ActivityManager/" #A) \ + : QLatin1String("/ActivityManager")) + +#define KAMD_DBUS_OBJECT(A) \ + QLatin1String("org.kde.ActivityManager." #A) + +#define KAMD_DBUS_INTERFACE(OBJECT_PATH, OBJECT, PARENT) \ + QDBusInterface(KAMD_DBUS_SERVICE, \ + KAMD_DBUS_OBJECT_PATH(OBJECT_PATH), \ + KAMD_DBUS_OBJECT(OBJECT), \ + QDBusConnection::sessionBus(), \ + PARENT) + +#define KAMD_DBUS_DECL_INTERFACE(VAR, OBJECT_PATH, OBJECT) \ + QDBusInterface VAR(KAMD_DBUS_SERVICE, \ + KAMD_DBUS_OBJECT_PATH(OBJECT_PATH), \ + KAMD_DBUS_OBJECT(OBJECT), \ + QDBusConnection::sessionBus(), \ + nullptr) + +#define KAMD_DBUS_CLASS_INTERFACE(OBJECT_PATH, OBJECT, PARENT) \ + org::kde::ActivityManager::OBJECT( \ + KAMD_DBUS_SERVICE, \ + KAMD_DBUS_OBJECT_PATH(OBJECT_PATH), \ + QDBusConnection::sessionBus(), \ + PARENT) + +#endif // DBUS_COMMON_H + diff --git a/activities/common/specialvalues.h b/activities/common/specialvalues.h new file mode 100644 index 0000000..d4d16a3 --- /dev/null +++ b/activities/common/specialvalues.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2015 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef SPECIALVALUES_H +#define SPECIALVALUES_H + +#include + +#define GLOBAL_ACTIVITY_TAG QStringLiteral(":global") +#define ANY_ACTIVITY_TAG QStringLiteral(":any") +#define CURRENT_ACTIVITY_TAG QStringLiteral(":current") + +#define GLOBAL_AGENT_TAG QStringLiteral(":global") +#define ANY_AGENT_TAG QStringLiteral(":any") +#define CURRENT_AGENT_TAG QStringLiteral(":current") + +#define ANY_TYPE_TAG QStringLiteral(":any") + + +#endif // SPECIALVALUES_H + diff --git a/activities/fileitemplugin/CMakeLists.txt b/activities/fileitemplugin/CMakeLists.txt new file mode 100644 index 0000000..53dd772 --- /dev/null +++ b/activities/fileitemplugin/CMakeLists.txt @@ -0,0 +1,26 @@ +# vim:set softtabstop=3 shiftwidth=3 tabstop=3 expandtab: + +set (kactivitymanagerd_fileitem_linking_plugin_SRCS + FileItemLinkingPlugin.cpp + FileItemLinkingPluginActionLoader.cpp + ../utils/qsqlquery_iterator.cpp + ) + +add_library ( + kactivitymanagerd_fileitem_linking_plugin MODULE + ${kactivitymanagerd_fileitem_linking_plugin_SRCS} + ) + +target_link_libraries ( + kactivitymanagerd_fileitem_linking_plugin + Qt5::Core + Qt5::Sql + KF5::KIOFileWidgets + KF5::I18n + KF5::Activities + ) + +install ( + TARGETS kactivitymanagerd_fileitem_linking_plugin + DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kfileitemaction + ) diff --git a/activities/fileitemplugin/FileItemLinkingPlugin.cpp b/activities/fileitemplugin/FileItemLinkingPlugin.cpp new file mode 100644 index 0000000..60a2edc --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPlugin.cpp @@ -0,0 +1,214 @@ +/* + * Copyright (C) 2012 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#include "FileItemLinkingPlugin.h" +#include "FileItemLinkingPlugin_p.h" +#include "FileItemLinkingPluginActionLoader.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include "common/dbus/common.h" + +K_PLUGIN_CLASS_WITH_JSON(FileItemLinkingPlugin, "kactivitymanagerd_fileitem_linking_plugin.json") + + +// Private + +FileItemLinkingPlugin::Private::Private() + : shouldLoad(false) + , loaded(false) +{ + connect(&activities, &KActivities::Consumer::serviceStatusChanged, + this, &Private::activitiesServiceStatusChanged); +} + +void FileItemLinkingPlugin::Private::activitiesServiceStatusChanged( + KActivities::Consumer::ServiceStatus status) +{ + if (status != KActivities::Consumer::Unknown) { + loadAllActions(); + } +} + +void FileItemLinkingPlugin::Private::rootActionHovered() +{ + shouldLoad = true; + loadAllActions(); +} + +void FileItemLinkingPlugin::Private::actionTriggered() +{ + QAction *action = dynamic_cast(sender()); + + if (!action) { + return; + } + + bool link = action->property("link").toBool(); + QString activity = action->property("activity").toString(); + + KAMD_DBUS_DECL_INTERFACE(service, Resources/Linking, ResourcesLinking); + + const auto urlList = items.urlList(); + for (const auto &item : urlList) { + service.asyncCall( + link ? "LinkResourceToActivity" : "UnlinkResourceFromActivity", + QString(), + item.toLocalFile(), + activity); + } +} + +QAction *FileItemLinkingPlugin::Private::basicAction(QWidget *parentWidget) +{ + root = new QAction(QIcon::fromTheme("activities"), + i18n("Activities"), parentWidget); + + rootMenu = new QMenu(); + rootMenu->addAction(new QAction(i18n("Loading..."), this)); + + connect(root, &QAction::hovered, + this, &Private::rootActionHovered); + + + root->setMenu(rootMenu); + + return root; +} + +void FileItemLinkingPlugin::Private::loadAllActions() +{ + if (!shouldLoad + || activities.serviceStatus() == KActivities::Consumer::Unknown) { + return; + } + + if (activities.serviceStatus() == KActivities::Consumer::NotRunning) { + Action action = { }; + action.title = i18n("The Activity Manager is not running"); + + setActions({ action }); + + } else if (!loaded) { + auto loader = FileItemLinkingPluginActionLoader::create(items); + + static FileItemLinkingPluginActionStaticInit init; + + connect(loader, &FileItemLinkingPluginActionLoader::result, + this, &Private::setActions, + Qt::QueuedConnection); + + loader->start(); + + loaded = true; // ignore that the thread may not be finished at this time + } +} + +void FileItemLinkingPlugin::Private::setActions(const ActionList &actions) +{ + if (!rootMenu) { + return; + } + + for (auto action: rootMenu->actions()) { + rootMenu->removeAction(action); + action->deleteLater(); + } + + for (const auto& actionInfo: actions) { + if (actionInfo.icon != "-") { + auto action = new QAction(nullptr); + + action->setText(actionInfo.title); + action->setIcon(QIcon::fromTheme(actionInfo.icon)); + action->setProperty("activity", actionInfo.activity); + action->setProperty("link", actionInfo.link); + + rootMenu->addAction(action); + + connect(action, &QAction::triggered, + this, &Private::actionTriggered); + + } else { + auto action = new QAction(actionInfo.title, nullptr); + action->setSeparator(true); + + rootMenu->addAction(action); + } + } +} + +FileItemLinkingPluginActionStaticInit::FileItemLinkingPluginActionStaticInit() +{ + qRegisterMetaType("Action"); + qRegisterMetaType("ActionList"); +} + +// Main class + +FileItemLinkingPlugin::FileItemLinkingPlugin(QObject *parent, const QVariantList &) + : KAbstractFileItemActionPlugin(parent) +{ +} + +FileItemLinkingPlugin::~FileItemLinkingPlugin() +{ + d->setActions({}); +} + +QList FileItemLinkingPlugin::actions(const KFileItemListProperties &fileItemInfos, QWidget *parentWidget) +{ + // We can only link local files, don't show the menu if there are none + // KFileItemListProperties::isLocal() is for *all* being local, we just want *any* local + const auto urlList = fileItemInfos.urlList(); + const bool hasLocalUrl = std::any_of(urlList.begin(), urlList.end(), [](const QUrl &url) { + return url.isLocalFile(); + }); + + if (!hasLocalUrl) { + return {}; + } + + d->items = fileItemInfos; + + return { d->basicAction(parentWidget) }; +} + +#include "FileItemLinkingPlugin.moc" + diff --git a/activities/fileitemplugin/FileItemLinkingPlugin.h b/activities/fileitemplugin/FileItemLinkingPlugin.h new file mode 100644 index 0000000..39a1536 --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPlugin.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2012 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef FILE_ITEM_LINKING_PLUGIN_H +#define FILE_ITEM_LINKING_PLUGIN_H + +#include + +#include +#include +#include + +#include + +/** + * FileItemLinkingPlugin + */ +class FileItemLinkingPlugin : public KAbstractFileItemActionPlugin { +public: + FileItemLinkingPlugin(QObject *parent, const QVariantList &); + ~FileItemLinkingPlugin() override; + + QList actions(const KFileItemListProperties &fileItemInfos, + QWidget *parentWidget) override; + +private: + D_PTR; +}; + +#endif // FILE_ITEM_LINKING_PLUGIN_H diff --git a/activities/fileitemplugin/FileItemLinkingPluginActionLoader.cpp b/activities/fileitemplugin/FileItemLinkingPluginActionLoader.cpp new file mode 100644 index 0000000..7d691ab --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPluginActionLoader.cpp @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2012 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#include "FileItemLinkingPluginActionLoader.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "common/dbus/common.h" + +FileItemLinkingPluginActionLoader* FileItemLinkingPluginActionLoader::create(const KFileItemListProperties &items) +{ + auto l = new FileItemLinkingPluginActionLoader(items); + connect(l, &QThread::finished, l, &QObject::deleteLater); + return l; +} + +FileItemLinkingPluginActionLoader::FileItemLinkingPluginActionLoader( + const KFileItemListProperties &items) + : items(items) +{ +} + +void FileItemLinkingPluginActionLoader::run() +{ + ActionList actions; + + const auto activitiesList = activities.activities(); + const auto itemsSize = items.urlList().size(); + + if (itemsSize >= 10) { + // we are not going to check for this large number of files + actions << createAction(QString(), true, + i18n("Link to the current activity"), + "list-add"); + actions << createAction(QString(), false, + i18n("Unlink from the current activity"), + "list-remove"); + + actions << createSeparator(i18n("Link to:")); + for (const auto& activity: activitiesList) { + actions << createAction(activity, true); + } + + actions << createSeparator(i18n("Unlink from:")); + for (const auto& activity: activitiesList) { + actions << createAction(activity, false); + } + + } else { + auto connectionName = + QStringLiteral("kactivities_db_resources_") + + QString::number((quintptr) this); + + { + auto database = QSqlDatabase::addDatabase( + QStringLiteral("QSQLITE"), + connectionName); + + database.setDatabaseName( + QStandardPaths::writableLocation( + QStandardPaths::GenericDataLocation) + + QStringLiteral("/kactivitymanagerd/resources/database")); + + if (database.open()) { + + static const auto queryString = QStringLiteral( + "SELECT usedActivity, COUNT(targettedResource) " + "FROM ResourceLink " + "WHERE targettedResource IN (%1) " + "AND initiatingAgent = \":global\" " + "AND usedActivity != \":global\" " + "GROUP BY usedActivity"); + + QStringList escapedFiles; + QSqlField field; + field.setType(QVariant::String); + + const auto urlList = items.urlList(); + for (const auto& item: urlList) { + field.setValue(QFileInfo(item.toLocalFile()).canonicalFilePath()); + escapedFiles << database.driver()->formatValue(field); + } + + QSqlQuery query(queryString.arg(escapedFiles.join(",")), + database); + + QStringList activitiesForLinking; + QStringList activitiesForUnlinking; + + for (const auto& result: query) { + const auto linkedFileCount = result[1].toInt(); + const auto activity = result[0].toString(); + if (linkedFileCount < itemsSize) { + activitiesForLinking << activity; + } + + if (linkedFileCount > 0) { + activitiesForUnlinking << activity; + } + } + + if (activitiesForLinking.contains(activities.currentActivity()) || + !activitiesForUnlinking.contains(activities.currentActivity())) { + actions << createAction(QString(), true, + i18n("Link to the current activity"), + "list-add"); + } + if (activitiesForUnlinking.contains(activities.currentActivity())) { + actions << createAction(QString(), false, + i18n("Unlink from the current activity"), + "list-remove"); + } + + actions << createSeparator(i18n("Link to:")); + for (const auto& activity: activitiesList) { + if (activitiesForLinking.contains(activity) || + !activitiesForUnlinking.contains(activity)) { + actions << createAction(activity, true); + } + } + + actions << createSeparator(i18n("Unlink from:")); + for (const auto& activity: activitiesList) { + if (activitiesForUnlinking.contains(activity)) { + actions << createAction(activity, false); + } + } + + database.close(); + } + } + + QSqlDatabase::removeDatabase(connectionName); + } + + emit result(actions); +} + +Action +FileItemLinkingPluginActionLoader::createAction(const QString &activity, + bool link, const QString &title, + const QString &icon) const +{ + Action action = { }; + action.link = link; + + if (title.isEmpty()) { + KActivities::Info activityInfo(activity); + action.title = activityInfo.name(); + action.icon = activityInfo.icon().isEmpty() ? "activities" + : activityInfo.icon(); + + } else { + action.title = title; + } + + if (!icon.isEmpty()) { + action.icon = icon; + } + + action.activity = activity.isEmpty() ? activities.currentActivity() + : activity; + + return action; +} + +Action +FileItemLinkingPluginActionLoader::createSeparator(const QString &title) const +{ + Action action = { }; + action.icon = "-"; + action.title = title; + return action; +} + diff --git a/activities/fileitemplugin/FileItemLinkingPluginActionLoader.h b/activities/fileitemplugin/FileItemLinkingPluginActionLoader.h new file mode 100644 index 0000000..9647fe3 --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPluginActionLoader.h @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2012 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef FILE_ITEM_LINKING_PLUGIN_ACTION_LOADER_H +#define FILE_ITEM_LINKING_PLUGIN_ACTION_LOADER_H + +#include "FileItemLinkingPlugin.h" +#include "FileItemLinkingPlugin_p.h" + +#include + +#include + +#include + +class FileItemLinkingPluginActionLoader: public QThread { + Q_OBJECT + +public: + static FileItemLinkingPluginActionLoader* create(const KFileItemListProperties &items); + + void run() override; + + Action createAction(const QString &activity, bool link, + const QString &title = QString(), + const QString &icon = QString()) const; + Action createSeparator(const QString &title) const; + +Q_SIGNALS: + void result(const ActionList &actions); + +private: + FileItemLinkingPluginActionLoader(const KFileItemListProperties &items); + KFileItemListProperties items; + KActivities::Consumer activities; +}; + +#endif // FILE_ITEM_LINKING_PLUGIN_ACTION_LOADER_H diff --git a/activities/fileitemplugin/FileItemLinkingPlugin_p.h b/activities/fileitemplugin/FileItemLinkingPlugin_p.h new file mode 100644 index 0000000..a988346 --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPlugin_p.h @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2012 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef FILE_ITEM_LINKING_PLUGIN_P_H +#define FILE_ITEM_LINKING_PLUGIN_P_H + +#include "FileItemLinkingPlugin.h" + +#include + +#include + +#include +#include + +struct Action { + QString title; + QString icon; + QString activity; + bool link; +}; +typedef QList ActionList; + +class FileItemLinkingPlugin::Private : public QObject { + Q_OBJECT + +public: + Private(); + + QAction *root; + QMenu *rootMenu = nullptr; + KFileItemListProperties items; + + QAction *basicAction(QWidget *parentWidget); + + KActivities::Consumer activities; + +public Q_SLOTS: + void activitiesServiceStatusChanged(KActivities::Consumer::ServiceStatus status); + void rootActionHovered(); + void setActions(const ActionList &actions); + + void actionTriggered(); + void loadAllActions(); + +private: + bool shouldLoad : 1; + bool loaded : 1; +}; + +class FileItemLinkingPluginActionStaticInit { +public: + FileItemLinkingPluginActionStaticInit(); +}; + +#endif // FILE_ITEM_LINKING_PLUGIN_P_H diff --git a/activities/fileitemplugin/kactivitymanagerd_fileitem_linking_plugin.json b/activities/fileitemplugin/kactivitymanagerd_fileitem_linking_plugin.json new file mode 100644 index 0000000..de02ad5 --- /dev/null +++ b/activities/fileitemplugin/kactivitymanagerd_fileitem_linking_plugin.json @@ -0,0 +1,42 @@ +{ + "KPlugin": { + "Icon": "activities", + "MimeTypes": [ + "application/octet-stream", + "inode/directory" + ], + "Name": "Link Files to Activities", + "Name[ca@valencia]": "Enllaçat de fitxers a les activitats", + "Name[ca]": "Enllaçat de fitxers a les activitats", + "Name[cs]": "Připojit soubory k aktivitám", + "Name[da]": "Link filer til aktiviteter", + "Name[de]": "Datei-Verknüpfung mit Aktivitäten", + "Name[el]": "Σύνδεση αρχείων με δραστηριότητες", + "Name[en_GB]": "Link Files to Activities", + "Name[es]": "Enlazar archivos a actividades", + "Name[et]": "Failide linkimine tegevustega", + "Name[eu]": "Estekatu fitxategiak jarduerekin", + "Name[fi]": "Linkitä aktiviteetteihin tiedostoja", + "Name[fr]": "Associer les fichiers à des activités", + "Name[gl]": "Ligar ficheiros con actividades", + "Name[ia]": "Liga files a Activitates", + "Name[it]": "Collega file alle attività", + "Name[ko]": "파일과 활동 연결", + "Name[nl]": "Bestanden koppelen aan activiteiten", + "Name[nn]": "Lenkja filer til aktivitetar", + "Name[pl]": "Dowiązuj pliki do aktywności", + "Name[pt]": "Associar Ficheiros a Actividades", + "Name[pt_BR]": "Link de arquivos para atividades", + "Name[ru]": "Связывание файлов с комнатами", + "Name[sk]": "PrepojiÅ¥ súbory s Aktivitami", + "Name[sl]": "Poveži datoteke z aktivnostmi", + "Name[sv]": "Länkar filer till aktiviteter", + "Name[uk]": "Пов'язування файлів із просторами дій", + "Name[x-test]": "xxLink Files to Activitiesxx", + "Name[zh_CN]": "将文件关联到活动", + "Name[zh_TW]": "連結檔案至活動", + "ServiceTypes": [ + "KFileItemAction/Plugin" + ] + } +} diff --git a/activities/utils/d_ptr.h b/activities/utils/d_ptr.h new file mode 100644 index 0000000..3f64f27 --- /dev/null +++ b/activities/utils/d_ptr.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2012 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef D_PTR_H +#define D_PTR_H + +#include + +namespace kamd { +namespace utils { + +template +class d_ptr { +private: + std::unique_ptr d; + +public: + d_ptr(); + + template + d_ptr(Args &&...); + + ~d_ptr(); + + T *operator->() const; +}; + +#define D_PTR \ + class Private; \ + friend class Private; \ + const ::kamd::utils::d_ptr d + +} // namespace utils +} // namespace kamd + +#endif diff --git a/activities/utils/d_ptr_implementation.h b/activities/utils/d_ptr_implementation.h new file mode 100644 index 0000000..6b4ebbf --- /dev/null +++ b/activities/utils/d_ptr_implementation.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2012 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef D_PTR_IMPLEMENTATION_H +#define D_PTR_IMPLEMENTATION_H + +#include + +namespace kamd { +namespace utils { + +template +d_ptr::d_ptr() + : d(new T()) +{ +} + +template +template +d_ptr::d_ptr(Args &&... args) + : d(new T(std::forward(args)...)) +{ +} + +template +d_ptr::~d_ptr() +{ +} + +template +T *d_ptr::operator->() const +{ + return d.get(); +} + +} // namespace utils +} // namespace kamd + +#endif diff --git a/activities/utils/qsqlquery_iterator.cpp b/activities/utils/qsqlquery_iterator.cpp new file mode 100644 index 0000000..6ffca6d --- /dev/null +++ b/activities/utils/qsqlquery_iterator.cpp @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2013 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#include "qsqlquery_iterator.h" + +NextValueIterator begin(QSqlQuery &query) +{ + return NextValueIterator(query); +} + +NextValueIterator end(QSqlQuery &query) +{ + return NextValueIterator + (query, NextValueIterator::EndIterator); +} + + + diff --git a/activities/utils/qsqlquery_iterator.h b/activities/utils/qsqlquery_iterator.h new file mode 100644 index 0000000..cb1a873 --- /dev/null +++ b/activities/utils/qsqlquery_iterator.h @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2013 - 2016 by Ivan Cukic + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#ifndef UTILS_QSQLQUERYITERATOR_H +#define UTILS_QSQLQUERYITERATOR_H + +#include +#include + +template +class NextValueIterator { +public: + enum Type { + NormalIterator, + EndIterator + }; + + NextValueIterator(ResultSet &query, Type type = NormalIterator) + : m_query(query) + , m_type(type) + { + if (type != EndIterator) { + m_query.next(); + } + } + + inline bool operator!= (const NextValueIterator &other) const + { + Q_UNUSED(other); + return m_query.isValid(); + } + + inline NextValueIterator &operator*() + { + return *this; + } + + inline QVariant operator[] (int index) const + { + return m_query.value(index); + } + + inline QVariant operator[] (const QString &name) const + { + return m_query.value(name); + } + + inline NextValueIterator &operator ++() + { + m_query.next(); + return *this; + } + +private: + ResultSet &m_query; + Type m_type; + +}; + +NextValueIterator begin(QSqlQuery &query); +NextValueIterator end(QSqlQuery &query); + + +#endif /* UTILS_QSQLQUERYITERATOR_H */ + diff --git a/archive/CMakeLists.txt b/archive/CMakeLists.txt new file mode 100644 index 0000000..73d0907 --- /dev/null +++ b/archive/CMakeLists.txt @@ -0,0 +1,78 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_archive\") + +if(BUILD_TESTING) + add_subdirectory(autotests) +endif() + +set(LIBKIOARCHIVE_VERSION "5.97.0") +set(LIBKIOARCHIVE_SOVERSION "5") + +include(ECMSetupVersion) +ecm_setup_version(${LIBKIOARCHIVE_VERSION} VARIABLE_PREFIX "KIOARCHIVE" + VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kioarchive_version.h" + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KioArchiveConfigVersion.cmake" + SOVERSION ${LIBKIOARCHIVE_SOVERSION}) + +set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KioArchive") + +configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/KioArchiveConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/KioArchiveConfig.cmake" + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} +) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/KioArchiveConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/KioArchiveConfigVersion.cmake" + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel +) + +install(EXPORT KioArchiveTargets + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + FILE KioArchiveTargets.cmake +) + +install(FILES + kio_archivebase.h + ${CMAKE_CURRENT_BINARY_DIR}/libkioarchive_export.h + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} + COMPONENT Devel +) + +############### ArchiveProtocolBase library ########### + +add_library(kioarchive kio_archivebase.cpp kio_archive_debug.cpp) + +include(GenerateExportHeader) +generate_export_header(kioarchive BASE_NAME libkioarchive EXPORT_FILE_NAME libkioarchive_export.h) + +target_link_libraries(kioarchive + PUBLIC + KF5::Archive + KF5::KIOCore + PRIVATE + KF5::I18n + Qt5::Network + Qt5::DBus +) + +set_target_properties(kioarchive PROPERTIES + VERSION ${KIOARCHIVE_VERSION_STRING} + SOVERSION ${KIOARCHIVE_SOVERSION} + EXPORT_NAME KioArchive +) + +ecm_qt_declare_logging_category(kioarchive + HEADER kio_archive_debug.h + IDENTIFIER KIO_ARCHIVE_LOG +CATEGORY_NAME log_kio_archive) + +install(TARGETS kioarchive EXPORT KioArchiveTargets LIBRARY NAMELINK_SKIP ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) + +############### Archive KIOslave ###################### + +add_library(kio_archive MODULE kio_archive.cpp kio_archive_debug.cpp) +target_link_libraries(kio_archive KF5::KIOCore KF5::Archive kioarchive Qt5::Network) +set_target_properties(kio_archive PROPERTIES OUTPUT_NAME "archive") +install(TARGETS kio_archive DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) diff --git a/archive/KioArchiveConfig.cmake.in b/archive/KioArchiveConfig.cmake.in new file mode 100644 index 0000000..5383e84 --- /dev/null +++ b/archive/KioArchiveConfig.cmake.in @@ -0,0 +1,7 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) + +find_dependency(KF5KIO) + +include("${CMAKE_CURRENT_LIST_DIR}/KioArchiveTargets.cmake") diff --git a/archive/Messages.sh b/archive/Messages.sh new file mode 100644 index 0000000..cea5116 --- /dev/null +++ b/archive/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kio5_archive.pot diff --git a/archive/archive.json b/archive/archive.json new file mode 100644 index 0000000..2f5770d --- /dev/null +++ b/archive/archive.json @@ -0,0 +1,124 @@ +{ + "KDE-KIO-Protocols": { + "ar": { + "protocol": "ar", + "archiveMimetype": ["application/x-archive"], + "source": true, + "exec": "kf5/kio/archive", + "Icon": "package-x-generic", + "Class":"local", + "input":"filesystem", + "output":"filesystem", + "listing": [ + "Name", + "Type", + "Size", + "Date", + "Access", + "Owner", + "Group", + "Link" + ], + "copyFromFile": false, + "copyToFile": true, + "deleting": false, + "linking": false, + "makedir": false, + "moving": false, + "reading": true, + "writing": false + }, + "tar": { + "protocol": "tar", + "archiveMimetype": [ + "application/x-tar", + "application/x-compressed-tar", + "application/x-bzip-compressed-tar", + "application/x-webarchive", + "application/x-lzma-compressed-tar", + "application/x-xz-compressed-tar" + ], + "X-DocPath": "kioslave5/tar/index.html", + "source": true, + "exec": "kf5/kio/archive", + "Icon": "package-x-generic", + "Class":"local", + "input":"filesystem", + "output":"filesystem", + "listing": [ + "Name", + "Type", + "Size", + "Date", + "Access", + "Owner", + "Group", + "Link" + ], + "copyFromFile": false, + "copyToFile": true, + "deleting": false, + "linking": false, + "makedir": false, + "moving": false, + "reading": true, + "writing": false + }, + "sevenz": { + "protocol": "sevenz", + "archiveMimetype": ["application/x-7z-compressed"], + "source": true, + "exec": "kf5/kio/archive", + "Icon": "package-x-generic", + "Class":"local", + "input":"filesystem", + "output":"filesystem", + "listing": [ + "Name", + "Type", + "Size", + "Date", + "Access", + "Owner", + "Group", + "Link" + ], + "copyFromFile": false, + "copyToFile": true, + "deleting": false, + "linking": false, + "makedir": false, + "moving": false, + "reading": true, + "writing": false + }, + "zip": { + "protocol": "zip", + "archiveMimetype": ["application/zip"], + "source": true, + "exec": "kf5/kio/archive", + "Icon": "package-x-generic", + "Class":"local", + "input":"filesystem", + "output":"filesystem", + "listing": [ + "Name", + "Type", + "Size", + "Date", + "Access", + "Owner", + "Group", + "Link" + ], + "copyFromFile": false, + "copyToFile": true, + "deleting": false, + "linking": false, + "makedir": false, + "moving": false, + "reading": true, + "writing": false + } + } +} diff --git a/archive/autotests/CMakeLists.txt b/archive/autotests/CMakeLists.txt new file mode 100644 index 0000000..a64ea66 --- /dev/null +++ b/archive/autotests/CMakeLists.txt @@ -0,0 +1,4 @@ +add_executable(testkioarchive testkioarchive.cpp) +target_link_libraries(testkioarchive KF5::KIOCore KF5::Archive Qt5::Test) +ecm_mark_as_test(testkioarchive) +add_test(NAME testkioarchive COMMAND testkioarchive) diff --git a/archive/autotests/testkioarchive.cpp b/archive/autotests/testkioarchive.cpp new file mode 100644 index 0000000..9fbccae --- /dev/null +++ b/archive/autotests/testkioarchive.cpp @@ -0,0 +1,176 @@ +/* This file is part of the KDE project + Copyright (C) 2007 David Faure + + 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 "testkioarchive.h" +#include +#include +#include +#include +#include +#include +#include +#include + +QTEST_MAIN(TestKioArchive) +static const char s_tarFileName[] = "karchivetest.tar"; + +static void writeTestFilesToArchive( KArchive* archive ) +{ + bool ok; + ok = archive->writeFile("empty", QByteArray(), 0100644, "weis", "users"); + QVERIFY( ok ); + ok = archive->writeFile("test1", QByteArrayLiteral("Hallo"), 0100644, "weis", "users"); + QVERIFY( ok ); + ok = archive->writeFile("mydir/subfile", QByteArrayLiteral("Bonjour"), 0100644, "dfaure", "users"); + QVERIFY( ok ); + ok = archive->writeSymLink( "mydir/symlink", "subfile", "dfaure", "users" ); + QVERIFY( ok ); +} + +void TestKioArchive::initTestCase() +{ + QStandardPaths::setTestModeEnabled(true); + + // avoid KIO triggering klauncher, which can get the CI stuck + qputenv("KDE_FORK_SLAVES", "yes"); + qputenv("KIO_DISABLE_CACHE_CLEANER", "yes"); + + // Make sure we start clean + cleanupTestCase(); + + QVERIFY(QDir().mkpath(tmpDir())); + + // Taken from KArchiveTest::testCreateTar + KTar tar( s_tarFileName ); + bool ok = tar.open( QIODevice::WriteOnly ); + QVERIFY( ok ); + writeTestFilesToArchive( &tar ); + ok = tar.close(); + QVERIFY( ok ); + QFileInfo fileInfo( QFile::encodeName( s_tarFileName ) ); + QVERIFY( fileInfo.exists() ); +} + +void TestKioArchive::testListTar() +{ + m_listResult.clear(); + KIO::ListJob* job = KIO::listDir(tarUrl(), KIO::HideProgressInfo); + connect(job, &KIO::ListJob::entries, this, &TestKioArchive::slotEntries); + bool ok = job->exec(); + QVERIFY( ok ); + QVERIFY( m_listResult.count() > 1 ); + + QCOMPARE(m_listResult.count( "." ), 1); // found it, and only once + QCOMPARE(m_listResult.count("empty"), 1); + QCOMPARE(m_listResult.count("test1"), 1); + QCOMPARE(m_listResult.count("mydir"), 1); + QCOMPARE(m_listResult.count("mydir/subfile"), 0); // not a recursive listing + QCOMPARE(m_listResult.count("mydir/symlink"), 0); +} + +void TestKioArchive::testListRecursive() +{ + m_listResult.clear(); + KIO::ListJob* job = KIO::listRecursive(tarUrl(), KIO::HideProgressInfo); + connect(job, &KIO::ListJob::entries, this, &TestKioArchive::slotEntries); + bool ok = job->exec(); + QVERIFY( ok ); + QVERIFY( m_listResult.count() > 1 ); + + QCOMPARE(m_listResult.count( "." ), 1); // found it, and only once + QCOMPARE(m_listResult.count("empty"), 1); + QCOMPARE(m_listResult.count("test1"), 1); + QCOMPARE(m_listResult.count("mydir"), 1); + QCOMPARE(m_listResult.count("mydir/subfile"), 1); + QCOMPARE(m_listResult.count("mydir/symlink"), 1); +} + +QUrl TestKioArchive::tarUrl() const +{ + QUrl url; + url.setScheme("tar"); + url.setPath(QDir::currentPath()); + url = url.adjusted(QUrl::StripTrailingSlash); + url.setPath(url.path() + '/' + s_tarFileName); + return url; +} + +void TestKioArchive::slotEntries( KIO::Job*, const KIO::UDSEntryList& lst ) +{ + for( KIO::UDSEntryList::ConstIterator it = lst.begin(); it != lst.end(); ++it ) { + const KIO::UDSEntry& entry (*it); + QString displayName = entry.stringValue( KIO::UDSEntry::UDS_NAME ); + m_listResult << displayName; + } +} + +QString TestKioArchive::tmpDir() const +{ + return QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/test_kio_archive/"; +} + +void TestKioArchive::cleanupTestCase() +{ + QDir(tmpDir()).removeRecursively(); +} + +void TestKioArchive::copyFromTar(const QUrl &src, const QString& destPath) +{ + QUrl dest = QUrl::fromLocalFile(destPath); + qDebug() << src << "->" << dest; + // Check that src exists + KIO::StatJob* statJob = KIO::stat(src, KIO::StatJob::SourceSide, 0, KIO::HideProgressInfo); + bool ok = statJob->exec(); + QVERIFY( ok ); + + KIO::Job* job = KIO::copyAs( src, dest, KIO::HideProgressInfo ); + qDebug() << "copyAs" << src << dest; + ok = job->exec(); + QVERIFY( ok ); + QVERIFY( QFile::exists( destPath ) ); +} + +void TestKioArchive::testExtractFileFromTar() +{ + const QString destPath = tmpDir() + "fileFromTar_copied"; + QUrl u = tarUrl(); + u = u.adjusted(QUrl::StripTrailingSlash); + u.setPath(u.path() + '/' + "mydir/subfile"); + copyFromTar(u, destPath); + QVERIFY(QFileInfo(destPath).isFile()); + QVERIFY(QFileInfo(destPath).size() == 7); +} + +void TestKioArchive::testExtractSymlinkFromTar() +{ + const QString destPath = tmpDir() + "symlinkFromTar_copied"; + QUrl u = tarUrl(); + u = u.adjusted(QUrl::StripTrailingSlash); + u.setPath(u.path() + '/' + "mydir/symlink"); + copyFromTar(u, destPath); + QVERIFY(QFileInfo(destPath).isFile()); + QEXPECT_FAIL("", "See #5601 -- on FTP we want to download the real file, not the symlink...", Continue); + // See comment in 149903 + // Maybe this is something we can do depending on Class=:local and Class=:internet + // (we already know if a protocol is local or remote). + // So local->local should copy symlinks, while internet->local and internet->internet should + // copy the actual file, I guess? + // -> ### TODO + QVERIFY(QFileInfo(destPath).isSymLink()); +} diff --git a/archive/autotests/testkioarchive.h b/archive/autotests/testkioarchive.h new file mode 100644 index 0000000..585e0aa --- /dev/null +++ b/archive/autotests/testkioarchive.h @@ -0,0 +1,57 @@ +/* This file is part of the KDE project + Copyright (C) 2007 David Faure + + 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 TESTKIOARCHIVE_H +#define TESTKIOARCHIVE_H + +#include +#include +#include + +/** + * This is a unit test for kio_archive + * See also kdelibs/kio/tests/karchivetest for lower-level KTar and KZip tests. + */ +class TestKioArchive : public QObject +{ + Q_OBJECT + +public: + TestKioArchive() {} + +private Q_SLOTS: + void initTestCase(); + void testListTar(); + void testListRecursive(); + void testExtractFileFromTar(); + void testExtractSymlinkFromTar(); + void cleanupTestCase(); + +protected Q_SLOTS: // real slots, not tests + void slotEntries( KIO::Job*, const KIO::UDSEntryList& lst ); + +private: + QString tmpDir() const; + QUrl tarUrl() const; + void copyFromTar(const QUrl &url, const QString& destPath); + + QStringList m_listResult; +}; + +#endif diff --git a/archive/kio_archive.cpp b/archive/kio_archive.cpp new file mode 100644 index 0000000..397cb7f --- /dev/null +++ b/archive/kio_archive.cpp @@ -0,0 +1,97 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000 David Faure + + 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 "kio_archive.h" + +#include +#include + +#include +#include +#include +#include + +#include "kio_archive_debug.h" + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.archive" FILE "archive.json") +}; + +using namespace KIO; + +extern "C" { int Q_DECL_EXPORT kdemain(int argc, char **argv); } + +int kdemain( int argc, char **argv ) +{ + QCoreApplication app(argc, argv); + app.setApplicationName(QLatin1String("kio_archive")); + + qCDebug(KIO_ARCHIVE_LOG) << "Starting" << QCoreApplication::applicationPid(); + + if (argc != 4) + { + fprintf(stderr, "Usage: kio_archive protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + + ArchiveProtocol slave( argv[1], argv[2], argv[3]); + slave.dispatchLoop(); + + qCDebug(KIO_ARCHIVE_LOG) << "Done"; + return 0; +} + + +ArchiveProtocol::ArchiveProtocol( const QByteArray &proto, const QByteArray &pool, const QByteArray &app ) + : ArchiveProtocolBase( proto, pool, app ) +{ + qCDebug(KIO_ARCHIVE_LOG); +} + + +KArchive *ArchiveProtocol::createArchive( const QString & proto, const QString & archiveFile ) +{ + if ( proto == "ar" ) { + qCDebug(KIO_ARCHIVE_LOG) << "Opening KAr on " << archiveFile; + return new KAr( archiveFile ); + } + else if ( proto == "tar" ) { + qCDebug(KIO_ARCHIVE_LOG) << "Opening KTar on " << archiveFile; + return new KTar( archiveFile ); + } + else if ( proto == "zip" ) { + qCDebug(KIO_ARCHIVE_LOG) << "Opening KZip on " << archiveFile; + return new KZip( archiveFile ); + } + else if ( proto == "sevenz" ) { + qCDebug(KIO_ARCHIVE_LOG) << "Opening K7Zip on " << archiveFile; + return new K7Zip( archiveFile ); + } else { + qCWarning(KIO_ARCHIVE_LOG) << "Protocol" << proto << "not supported by this IOSlave" ; + return nullptr; + } +} + +// needed for JSON file embedding +#include "kio_archive.moc" + +// kate: space-indent on; indent-width 4; replace-tabs on; diff --git a/archive/kio_archive.h b/archive/kio_archive.h new file mode 100644 index 0000000..83e1963 --- /dev/null +++ b/archive/kio_archive.h @@ -0,0 +1,34 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000 David Faure + + 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 KIO_ARCHIVE_H +#define KIO_ARCHIVE_H + +#include "kio_archivebase.h" + +class ArchiveProtocol : public ArchiveProtocolBase +{ +public: + ArchiveProtocol( const QByteArray &proto, const QByteArray &pool, const QByteArray &app ); + ~ArchiveProtocol() override = default; + + KArchive *createArchive( const QString & proto, const QString & archiveFile ) override; +}; + +#endif // KIO_ARCHIVE_H diff --git a/archive/kio_archive_debug.h b/archive/kio_archive_debug.h new file mode 100644 index 0000000..7f96dd0 --- /dev/null +++ b/archive/kio_archive_debug.h @@ -0,0 +1,27 @@ +/* This file is part of the KDE project + Copyright (C) 2014 Laurent Montel + + 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 KIO_ARCHIVE_DEBUG_H +#define KIO_ARCHIVE_DEBUG_H + +#include +Q_DECLARE_LOGGING_CATEGORY(KIO_ARCHIVE_LOG) + +#endif + diff --git a/archive/kio_archivebase.cpp b/archive/kio_archivebase.cpp new file mode 100644 index 0000000..7004058 --- /dev/null +++ b/archive/kio_archivebase.cpp @@ -0,0 +1,672 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000 David Faure + + 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 "kio_archivebase.h" + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef Q_OS_WIN +#define S_ISDIR(m) (((m & S_IFMT) == S_IFDIR)) +#endif + +using namespace KIO; + +ArchiveProtocolBase::ArchiveProtocolBase( const QByteArray &proto, const QByteArray &pool, const QByteArray &app ) : SlaveBase( proto, pool, app ) +{ + qCDebug(KIO_ARCHIVE_LOG); + m_archiveFile = nullptr; +} + +ArchiveProtocolBase::~ArchiveProtocolBase() +{ + delete m_archiveFile; +} + +bool ArchiveProtocolBase::checkNewFile( const QUrl & url, QString & path, KIO::Error& errorNum ) +{ +#ifndef Q_OS_WIN + QString fullPath = url.path(); +#else + QString fullPath = url.path().remove(0, 1); +#endif + qCDebug(KIO_ARCHIVE_LOG) << fullPath; + + // Are we already looking at that file ? + if ( m_archiveFile && m_archiveName == fullPath.left(m_archiveName.length()) ) + { + // Has it changed ? + QT_STATBUF statbuf; + if ( QT_STAT( QFile::encodeName( m_archiveName ), &statbuf ) == 0 ) + { + if ( m_mtime == statbuf.st_mtime ) + { + path = fullPath.mid( m_archiveName.length() ); + qCDebug(KIO_ARCHIVE_LOG) << "returning" << path; + return true; + } + } + } + qCDebug(KIO_ARCHIVE_LOG) << "Need to open a new file"; + + // Close previous file + if ( m_archiveFile ) + { + m_archiveFile->close(); + delete m_archiveFile; + m_archiveFile = nullptr; + } + + // Find where the tar file is in the full path + int pos = 0; + QString archiveFile; + path.clear(); + + int len = fullPath.length(); + if ( len != 0 && fullPath[ len - 1 ] != '/' ) + fullPath += '/'; + + qCDebug(KIO_ARCHIVE_LOG) << "the full path is" << fullPath; + QT_STATBUF statbuf; + statbuf.st_mode = 0; // be sure to clear the directory bit + while ( (pos=fullPath.indexOf( '/', pos+1 )) != -1 ) + { + QString tryPath = fullPath.left( pos ); + qCDebug(KIO_ARCHIVE_LOG) << fullPath << "trying" << tryPath; + if ( QT_STAT( QFile::encodeName(tryPath), &statbuf ) == -1 ) + { + if (errno == ENOENT) + { + // The current path is no longer part of the local filesystem. + // Either we already have enough of the pathname, or we will + // not get anything more useful. + statbuf.st_mode = 0; // do not trust the result + break; + } + + if (errno == EACCES) + errorNum = KIO::ERR_ACCESS_DENIED; + else + errorNum = KIO::ERR_CANNOT_STAT; + return false; + } + + if ( !S_ISDIR(statbuf.st_mode) ) + { + archiveFile = tryPath; + m_mtime = statbuf.st_mtime; +#ifdef Q_OS_WIN // st_uid and st_gid provides no information + m_user.clear(); + m_group.clear(); +#else + KUser user(statbuf.st_uid); + m_user = user.loginName(); + KUserGroup group(statbuf.st_gid); + m_group = group.name(); +#endif + path = fullPath.mid( pos + 1 ); + qCDebug(KIO_ARCHIVE_LOG).nospace() << "fullPath=" << fullPath << " path=" << path; + len = path.length(); + if ( len > 1 ) + { + if ( path[ len - 1 ] == '/' ) + path.truncate( len - 1 ); + } + else + path = QString::fromLatin1("/"); + qCDebug(KIO_ARCHIVE_LOG).nospace() << "Found. archiveFile=" << archiveFile << " path=" << path; + break; + } + } + if ( archiveFile.isEmpty() ) + { + qCDebug(KIO_ARCHIVE_LOG) << "not found"; + if ( S_ISDIR(statbuf.st_mode) ) // Did the last stat() find a directory? + { + // Too bad, it is a directory, not an archive. + qCDebug(KIO_ARCHIVE_LOG) << "Path is a directory, not an archive."; + errorNum = KIO::ERR_IS_DIRECTORY; + } + else + errorNum = KIO::ERR_DOES_NOT_EXIST; + return false; + } + + // Open new file + m_archiveFile = this->createArchive( url.scheme(), archiveFile ); + if ( !m_archiveFile ) { + qCWarning(KIO_ARCHIVE_LOG) << "Protocol" << url.scheme() << "not supported by this IOSlave" ; + errorNum = KIO::ERR_UNSUPPORTED_PROTOCOL; + return false; + } + + if ( !m_archiveFile->open( QIODevice::ReadOnly ) ) + { + qCDebug(KIO_ARCHIVE_LOG) << "Opening" << archiveFile << "failed."; + delete m_archiveFile; + m_archiveFile = nullptr; + errorNum = KIO::ERR_CANNOT_OPEN_FOR_READING; + return false; + } + + m_archiveName = archiveFile; + return true; +} + +uint ArchiveProtocolBase::computeArchiveDirSize(const KArchiveDirectory *dir) +{ + // compute size of archive content + uint totalSize = 0; + const auto entries = dir->entries(); + for (const auto &entryName: entries) { + auto entry = dir->entry(entryName); + if (entry->isFile()) { + auto fileEntry = static_cast(entry); + totalSize += fileEntry->size(); + } + else if (entry->isDirectory()) { + const auto dirEntry = static_cast(entry); + // recurse + totalSize += computeArchiveDirSize(dirEntry); + } + } + return totalSize; +} + +KIO::StatDetails ArchiveProtocolBase::getStatDetails() +{ + // takes care of converting old metadata details to new StatDetails + // TODO KF6 : remove legacy "details" code path + KIO::StatDetails details; +#if KIOCORE_BUILD_DEPRECATED_SINCE(5, 69) + if (hasMetaData(QStringLiteral("statDetails"))) { +#endif + const QString statDetails = metaData(QStringLiteral("statDetails")); + details = statDetails.isEmpty() ? KIO::StatDefaultDetails : static_cast(statDetails.toInt()); +#if KIOCORE_BUILD_DEPRECATED_SINCE(5, 69) + } else { + const QString sDetails = metaData(QStringLiteral("details")); + details = sDetails.isEmpty() ? KIO::StatDefaultDetails : KIO::detailsToStatDetails(sDetails.toInt()); + } +#endif + return details; +} + +void ArchiveProtocolBase::createRootUDSEntry( KIO::UDSEntry & entry ) +{ + entry.clear(); + entry.reserve(7); + + auto path = m_archiveFile->fileName(); + path = path.mid(path.lastIndexOf(QLatin1Char('/')) + 1); + + entry.fastInsert( KIO::UDSEntry::UDS_NAME, "." ); + entry.fastInsert( KIO::UDSEntry::UDS_DISPLAY_NAME, path ); + entry.fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR ); + entry.fastInsert( KIO::UDSEntry::UDS_MODIFICATION_TIME, m_mtime ); + //entry.fastInsert( KIO::UDSEntry::UDS_ACCESS, 07777 ); // fake 'x' permissions, this is a pseudo-directory + entry.fastInsert( KIO::UDSEntry::UDS_USER, m_user); + entry.fastInsert( KIO::UDSEntry::UDS_GROUP, m_group); + + QMimeDatabase db; + QMimeType mt = db.mimeTypeForFile(m_archiveFile->fileName()); + if (mt.isValid()) { + entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, mt.name()); + } +} + +void ArchiveProtocolBase::createUDSEntry( const KArchiveEntry * archiveEntry, UDSEntry & entry ) +{ + entry.clear(); + + entry.reserve(8); + entry.fastInsert( KIO::UDSEntry::UDS_NAME, archiveEntry->name() ); + entry.fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, archiveEntry->isFile() ? archiveEntry->permissions() & S_IFMT : S_IFDIR ); // keep file type only + if (archiveEntry->isFile()) { + entry.fastInsert( KIO::UDSEntry::UDS_SIZE, ((KArchiveFile *)archiveEntry)->size() ); + } + entry.fastInsert( KIO::UDSEntry::UDS_MODIFICATION_TIME, archiveEntry->date().toSecsSinceEpoch()); + entry.fastInsert( KIO::UDSEntry::UDS_ACCESS, archiveEntry->permissions() & 07777 ); // keep permissions only + entry.fastInsert( KIO::UDSEntry::UDS_USER, archiveEntry->user()); + entry.fastInsert( KIO::UDSEntry::UDS_GROUP, archiveEntry->group()); + entry.fastInsert( KIO::UDSEntry::UDS_LINK_DEST, archiveEntry->symLinkTarget()); +} + +void ArchiveProtocolBase::listDir( const QUrl & url ) +{ + qCDebug(KIO_ARCHIVE_LOG) << url.url(); + + QString path; + KIO::Error errorNum; + if ( !checkNewFile( url, path, errorNum ) ) + { + if ( errorNum == KIO::ERR_CANNOT_OPEN_FOR_READING ) + { + // If we cannot open, it might be a problem with the archive header (e.g. unsupported format) + // Therefore give a more specific error message + error( KIO::ERR_SLAVE_DEFINED, + i18n( "Could not open the file, probably due to an unsupported file format.\n%1", + url.toDisplayString() ) ); + return; + } + else if ( errorNum != ERR_IS_DIRECTORY ) + { + // We have any other error + error( errorNum, url.toDisplayString() ); + return; + } + // It's a real dir -> redirect + QUrl redir = QUrl::fromLocalFile(url.path()); + qCDebug(KIO_ARCHIVE_LOG) << "Ok, redirection to" << redir.url(); + redirection( redir ); + finished(); + // And let go of the tar file - for people who want to unmount a cdrom after that + delete m_archiveFile; + m_archiveFile = nullptr; + return; + } + + if ( path.isEmpty() ) + { + QUrl redir; + redir.setScheme(url.scheme()); + qCDebug(KIO_ARCHIVE_LOG) << "url.path()=" << url.path(); + redir.setPath( url.path() + QString::fromLatin1("/") ); + qCDebug(KIO_ARCHIVE_LOG) << "redirection" << redir.url(); + redirection( redir ); + finished(); + return; + } + + qCDebug(KIO_ARCHIVE_LOG) << "checkNewFile done"; + const KArchiveDirectory* root = m_archiveFile->directory(); + const KArchiveDirectory* dir; + if (!path.isEmpty() && path != "/") + { + qCDebug(KIO_ARCHIVE_LOG) << "Looking for entry" << path; + const KArchiveEntry* e = root->entry( path ); + if ( !e ) + { + error( KIO::ERR_DOES_NOT_EXIST, url.toDisplayString() ); + return; + } + if ( ! e->isDirectory() ) + { + error( KIO::ERR_IS_FILE, url.toDisplayString() ); + return; + } + dir = (KArchiveDirectory*)e; + } else { + dir = root; + } + + const QStringList l = dir->entries(); + totalSize( l.count() ); + + UDSEntry entry; + if (!l.contains(".")) { + createRootUDSEntry(entry); + listEntry(entry); + } + + QStringList::const_iterator it = l.begin(); + for( ; it != l.end(); ++it ) + { + qCDebug(KIO_ARCHIVE_LOG) << (*it); + const KArchiveEntry* archiveEntry = dir->entry( (*it) ); + + createUDSEntry( archiveEntry, entry ); + + listEntry(entry); + } + + finished(); + + qCDebug(KIO_ARCHIVE_LOG) << "done"; +} + +void ArchiveProtocolBase::stat( const QUrl & url ) +{ + QString path; + UDSEntry entry; + KIO::Error errorNum; + if ( !checkNewFile( url, path, errorNum ) ) + { + // We may be looking at a real directory - this happens + // when pressing up after being in the root of an archive + if ( errorNum == KIO::ERR_CANNOT_OPEN_FOR_READING ) + { + // If we cannot open, it might be a problem with the archive header (e.g. unsupported format) + // Therefore give a more specific error message + error( KIO::ERR_SLAVE_DEFINED, + i18n( "Could not open the file, probably due to an unsupported file format.\n%1", + url.toDisplayString() ) ); + return; + } + else if ( errorNum != ERR_IS_DIRECTORY ) + { + // We have any other error + error( errorNum, url.toDisplayString() ); + return; + } + entry.reserve(2); + // Real directory. Return just enough information for KRun to work + entry.fastInsert( KIO::UDSEntry::UDS_NAME, url.fileName()); + qCDebug(KIO_ARCHIVE_LOG) << "returning name" << url.fileName(); + + QT_STATBUF buff; +#ifdef Q_OS_WIN + QString fullPath = url.path().remove(0, 1); +#else + QString fullPath = url.path(); +#endif + + if ( QT_STAT( QFile::encodeName( fullPath ), &buff ) == -1 ) + { + // Should not happen, as the file was already stated by checkNewFile + error( KIO::ERR_CANNOT_STAT, url.toDisplayString() ); + return; + } + + entry.fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, buff.st_mode & S_IFMT); + + statEntry( entry ); + + finished(); + + // And let go of the tar file - for people who want to unmount a cdrom after that + delete m_archiveFile; + m_archiveFile = nullptr; + return; + } + + const KArchiveDirectory* root = m_archiveFile->directory(); + const KArchiveEntry* archiveEntry; + if ( path.isEmpty() ) + { + path = QString::fromLatin1( "/" ); + archiveEntry = root; + } else { + archiveEntry = root->entry( path ); + } + if ( !archiveEntry ) + { + error( KIO::ERR_DOES_NOT_EXIST, url.toDisplayString() ); + return; + } + + if (archiveEntry == root) { + createRootUDSEntry( entry ); + } else { + createUDSEntry( archiveEntry, entry ); + } + + if (archiveEntry->isDirectory()) { + auto details = getStatDetails(); + if (details & KIO::StatRecursiveSize) { + const auto directoryEntry = static_cast(archiveEntry); + entry.fastInsert(KIO::UDSEntry::UDS_RECURSIVE_SIZE, static_cast(computeArchiveDirSize(directoryEntry))); + } + } + statEntry( entry ); + + finished(); +} + +void ArchiveProtocolBase::get( const QUrl & url ) +{ + qCDebug(KIO_ARCHIVE_LOG) << url.url(); + + QString path; + KIO::Error errorNum; + if ( !checkNewFile( url, path, errorNum ) ) + { + if ( errorNum == KIO::ERR_CANNOT_OPEN_FOR_READING ) + { + // If we cannot open, it might be a problem with the archive header (e.g. unsupported format) + // Therefore give a more specific error message + error( KIO::ERR_SLAVE_DEFINED, + i18n( "Could not open the file, probably due to an unsupported file format.\n%1", + url.toDisplayString() ) ); + return; + } + else + { + // We have any other error + error( errorNum, url.toDisplayString() ); + return; + } + } + + const KArchiveDirectory* root = m_archiveFile->directory(); + const KArchiveEntry* archiveEntry = root->entry( path ); + + if ( !archiveEntry ) + { + error( KIO::ERR_DOES_NOT_EXIST, url.toDisplayString() ); + return; + } + if ( archiveEntry->isDirectory() ) + { + error( KIO::ERR_IS_DIRECTORY, url.toDisplayString() ); + return; + } + const KArchiveFile* archiveFileEntry = static_cast(archiveEntry); + if ( !archiveEntry->symLinkTarget().isEmpty() ) + { + const QString target = archiveEntry->symLinkTarget(); + qCDebug(KIO_ARCHIVE_LOG) << "Redirection to" << target; + const QUrl realURL = url.resolved(QUrl(target)); + qCDebug(KIO_ARCHIVE_LOG) << "realURL=" << realURL; + redirection( realURL ); + finished(); + return; + } + + //qCDebug(KIO_ARCHIVE_LOG) << "Preparing to get the archive data"; + + /* + * The easy way would be to get the data by calling archiveFileEntry->data() + * However this has drawbacks: + * - the complete file must be read into the memory + * - errors are skipped, resulting in an empty file + */ + + QIODevice* io = archiveFileEntry->createDevice(); + + if (!io) + { + error( KIO::ERR_SLAVE_DEFINED, + i18n( "The archive file could not be opened, perhaps because the format is unsupported.\n%1" , + url.toDisplayString() ) ); + return; + } + + if ( !io->open( QIODevice::ReadOnly ) ) + { + error( KIO::ERR_CANNOT_OPEN_FOR_READING, url.toDisplayString() ); + delete io; + return; + } + + totalSize( archiveFileEntry->size() ); + + // Size of a QIODevice read. It must be large enough so that the mime type check will not fail + const qint64 maxSize = 0x100000; // 1MB + + qint64 bufferSize = qMin( maxSize, archiveFileEntry->size() ); + QByteArray buffer; + buffer.resize( bufferSize ); + if ( buffer.isEmpty() && bufferSize > 0 ) + { + // Something went wrong + error( KIO::ERR_OUT_OF_MEMORY, url.toDisplayString() ); + delete io; + return; + } + + bool firstRead = true; + + // How much file do we still have to process? + qint64 fileSize = archiveFileEntry->size(); + KIO::filesize_t processed = 0; + + while ( !io->atEnd() && fileSize > 0 ) + { + if ( !firstRead ) + { + bufferSize = qMin( maxSize, fileSize ); + buffer.resize( bufferSize ); + } + const qint64 read = io->read( buffer.data(), buffer.size() ); // Avoid to use bufferSize here, in case something went wrong. + if ( read != bufferSize ) + { + qCWarning(KIO_ARCHIVE_LOG) << "Read" << read << "bytes but expected" << bufferSize ; + error( KIO::ERR_CANNOT_READ, url.toDisplayString() ); + delete io; + return; + } + if ( firstRead ) + { + // We use the magic one the first data read + // (As magic detection is about fixed positions, we can be sure that it is enough data.) + QMimeDatabase db; + QMimeType mime = db.mimeTypeForFileNameAndData( path, buffer ); + qCDebug(KIO_ARCHIVE_LOG) << "Emitting mimetype" << mime.name(); + mimeType( mime.name() ); + firstRead = false; + } + data( buffer ); + processed += read; + processedSize( processed ); + fileSize -= bufferSize; + } + io->close(); + delete io; + + data( QByteArray() ); + + finished(); +} + +/* + In case someone wonders how the old filter stuff looked like : :) +void TARProtocol::slotData(void *_p, int _len) +{ + switch (m_cmd) { + case CMD_PUT: + assert(m_pFilter); + m_pFilter->send(_p, _len); + break; + default: + abort(); + break; + } +} + +void TARProtocol::slotDataEnd() +{ + switch (m_cmd) { + case CMD_PUT: + assert(m_pFilter && m_pJob); + m_pFilter->finish(); + m_pJob->dataEnd(); + m_cmd = CMD_NONE; + break; + default: + abort(); + break; + } +} + +void TARProtocol::jobData(void *_p, int _len) +{ + switch (m_cmd) { + case CMD_GET: + assert(m_pFilter); + m_pFilter->send(_p, _len); + break; + case CMD_COPY: + assert(m_pFilter); + m_pFilter->send(_p, _len); + break; + default: + abort(); + } +} + +void TARProtocol::jobDataEnd() +{ + switch (m_cmd) { + case CMD_GET: + assert(m_pFilter); + m_pFilter->finish(); + dataEnd(); + break; + case CMD_COPY: + assert(m_pFilter); + m_pFilter->finish(); + m_pJob->dataEnd(); + break; + default: + abort(); + } +} + +void TARProtocol::filterData(void *_p, int _len) +{ +debug("void TARProtocol::filterData"); + switch (m_cmd) { + case CMD_GET: + data(_p, _len); + break; + case CMD_PUT: + assert (m_pJob); + m_pJob->data(_p, _len); + break; + case CMD_COPY: + assert(m_pJob); + m_pJob->data(_p, _len); + break; + default: + abort(); + } +} +*/ + +// kate: space-indent on; indent-width 4; replace-tabs on; diff --git a/archive/kio_archivebase.h b/archive/kio_archivebase.h new file mode 100644 index 0000000..260b643 --- /dev/null +++ b/archive/kio_archivebase.h @@ -0,0 +1,68 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000 David Faure + + 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 KIO_ARCHIVEBASE_H +#define KIO_ARCHIVEBASE_H + +#include + +#include +#include + +#include "libkioarchive_export.h" + +class KArchive; +class KArchiveEntry; +class KArchiveDirectory; + +class LIBKIOARCHIVE_EXPORT ArchiveProtocolBase : public KIO::SlaveBase +{ +public: + ArchiveProtocolBase( const QByteArray &proto, const QByteArray &pool, const QByteArray &app ); + ~ArchiveProtocolBase() override; + + void listDir( const QUrl & url ) override; + void stat( const QUrl & url ) override; + void get( const QUrl & url ) override; + +private: + void createRootUDSEntry( KIO::UDSEntry & entry ); + void createUDSEntry( const KArchiveEntry * tarEntry, KIO::UDSEntry & entry ); + + virtual KArchive *createArchive( const QString & proto, const QString & archiveFile ) = 0; + + KIO::StatDetails getStatDetails(); + uint computeArchiveDirSize(const KArchiveDirectory *dir); + + /** + * \brief find, check and open the archive file + * \param url The URL of the archive + * \param path Path where the archive really is (returned value) + * \param errNum KIO error number (undefined if the function returns true) + * \return true if file was found, false if there was an error + */ + bool checkNewFile( const QUrl & url, QString & path, KIO::Error& errorNum ); + + KArchive * m_archiveFile; + QString m_archiveName; + QString m_user, m_group; + time_t m_mtime; +}; + +#endif // KIO_ARCHIVEBASE_H diff --git a/bookmarks/CMakeLists.txt b/bookmarks/CMakeLists.txt new file mode 100644 index 0000000..271f233 --- /dev/null +++ b/bookmarks/CMakeLists.txt @@ -0,0 +1,17 @@ +########### next target ############### +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_bookmarks\") + +set(kio_bookmarks_PART_SRCS kio_bookmarks.cpp kio_bookmarks_html.cpp kio_bookmarks_pixmap.cpp) + +add_library(kio_bookmarks MODULE ${kio_bookmarks_PART_SRCS}) + +target_link_libraries(kio_bookmarks KF5::KIOCore KF5::I18n KF5::Bookmarks KF5::Solid KF5::GuiAddons KF5::KIOFileWidgets) + +set_target_properties(kio_bookmarks PROPERTIES OUTPUT_NAME "bookmarks") + +install(TARGETS kio_bookmarks DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + + +########### install files ############### +install( FILES kio_bookmarks.css DESTINATION ${KDE_INSTALL_DATADIR}/kio_bookmarks ) +install( FILES bookmarks.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) diff --git a/bookmarks/Messages.sh b/bookmarks/Messages.sh new file mode 100755 index 0000000..53396ab --- /dev/null +++ b/bookmarks/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kio5_bookmarks.pot diff --git a/bookmarks/bookmarks.protocol b/bookmarks/bookmarks.protocol new file mode 100644 index 0000000..0898a6b --- /dev/null +++ b/bookmarks/bookmarks.protocol @@ -0,0 +1,9 @@ +[Protocol] +exec=kf5/kio/bookmarks +protocol=bookmarks +input=none +output=stream +reading=true +X-DocPath=kioslave5/bookmarks/index.html +Icon=bookmarks +Class=:local diff --git a/bookmarks/kio_bookmarks.cpp b/bookmarks/kio_bookmarks.cpp new file mode 100644 index 0000000..ae542ff --- /dev/null +++ b/bookmarks/kio_bookmarks.cpp @@ -0,0 +1,228 @@ +/* + Copyright (C) 2008 Xavier Vello + + 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. +*/ + +#include "kio_bookmarks.h" + +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace KIO; + +BookmarksProtocol::BookmarksProtocol( const QByteArray &pool, const QByteArray &app ) + : SlaveBase( "bookmarks", pool, app ) +{ + manager = KBookmarkManager::userBookmarksManager(); + cfg = new KConfig( "kiobookmarksrc" ); + config = cfg->group("General"); + cache = new KImageCache("kio_bookmarks", config.readEntry("CacheSize", 5 * 1024) * 1024); + cache->setPixmapCaching(false); + + indent = 0; + totalsize = 0; + columns = 4; +} + +BookmarksProtocol::~BookmarksProtocol() +{ + delete manager; + delete cache; + delete cfg; +} + +void BookmarksProtocol::parseTree() +{ + totalsize = 0; + + cfg->reparseConfiguration(); + columns = config.readEntry("Columns", 4); + if (columns < 1) + columns = 1; + + manager->notifyCompleteChange("kio_bookmarks"); + tree = manager->root(); + + if(tree.first().isNull()) + return; + + if(config.readEntry("FlattenTree", false)) + flattenTree(tree); + + KBookmarkGroup root; + if(config.readEntry("ShowRoot", true)) + { + root = tree.createNewFolder(i18n("Root")); + tree.moveBookmark(root, KBookmark()); + root.setIcon("konqueror"); + } + + KBookmark bm = tree.first(); + KBookmark next; + while(!bm.isNull()) + { + next = tree.next(bm); + if (bm.isSeparator()) + tree.deleteBookmark(bm); + else if (bm.isGroup()) + totalsize += sizeOfGroup(bm.toGroup()); + else + { + if(config.readEntry("ShowRoot", true)) + root.addBookmark(bm); + + tree.deleteBookmark(bm); + } + bm = next; + } + if(config.readEntry("ShowRoot", true)) + totalsize += sizeOfGroup(root); + + if(config.readEntry("ShowPlaces", true)) + totalsize += addPlaces(); +} + +int BookmarksProtocol::addPlaces() +{ + KFilePlacesModel placesModel; + KBookmarkGroup folder = tree.createNewFolder(i18n("Places")); + QList batteryList = Solid::Device::listFromType(Solid::DeviceInterface::Battery, QString()); + + if (batteryList.isEmpty()) { + folder.setIcon("computer"); + } else { + folder.setIcon("computer-laptop"); + } + + for (int row = 0; row < placesModel.rowCount(); ++row) { + QModelIndex index = placesModel.index(row, 0); + + if (!placesModel.isHidden(index)) + folder.addBookmark(placesModel.bookmarkForIndex(index)); + } + return sizeOfGroup(folder); +} + +void BookmarksProtocol::flattenTree( const KBookmarkGroup &folder ) +{ + KBookmark bm = folder.first(); + KBookmark prev = folder; + KBookmark next; + while (!bm.isNull()) + { + if (bm.isGroup()) { + flattenTree(bm.toGroup()); + } + + next = tree.next(bm); + + if (bm.isGroup() && bm.parentGroup().hasParent()) { + bm.setFullText("| " + bm.parentGroup().fullText() + " > " + bm.fullText()); + tree.moveBookmark(bm, prev); + prev = bm; + } + bm = next; + } +} + +// Should really go to KBookmarkGroup +int BookmarksProtocol::sizeOfGroup( const KBookmarkGroup &folder, bool real ) +{ + int size = 1; // counting the title line + for (KBookmark bm = folder.first(); !bm.isNull(); bm = folder.next(bm)) + { + if (bm.isGroup()) + size += sizeOfGroup(bm.toGroup()); + else + size += 1; + } + + // CSS sets a min-height for toplevel folders + if (folder.parentGroup() == tree && size < 8 && real == false) + size = 8; + + return size; +} + +void BookmarksProtocol::get( const QUrl& url ) +{ + QString path = url.path(); + const QRegularExpression regexp(QStringLiteral("^/(background|icon)/([\\S]+)")); + QRegularExpressionMatch rmatch; + + if (path.isEmpty() || path == "/") { + echoIndex(); + } else if (path == "/config") { + const KService::Ptr bookmarksKCM = KService::serviceByDesktopName(QStringLiteral("bookmarks")); + if (bookmarksKCM) { + auto job = new KIO::ApplicationLauncherJob(bookmarksKCM); + job->start(); + } else { + error(KIO::ERR_SLAVE_DEFINED, i18n("Could not find bookmarks config")); + } + echoHead("bookmarks:/"); + } else if (path == "/editbookmarks") { + const KService::Ptr keditbookmarks = KService::serviceByDesktopName(QStringLiteral("org.kde.keditbookmarks")); + if (keditbookmarks) { + auto job = new KIO::ApplicationLauncherJob(keditbookmarks); + job->start(); + } else { + error(KIO::ERR_SLAVE_DEFINED, i18n("Could not find bookmarks editor")); + } + echoHead("bookmarks:/"); + } else if (path.indexOf(regexp, 0, &rmatch) >= 0) { + echoImage(rmatch.captured(1), rmatch.captured(2), QUrlQuery(url).queryItemValue("size")); + } else { + echoHead(); + echo("

" + i18n("Wrong request: %1", url.toDisplayString().toHtmlEscaped()) + "

"); + } + finished(); +} + +extern "C" int Q_DECL_EXPORT kdemain(int argc, char **argv) +{ + QGuiApplication app(argc, argv); + app.setApplicationName(QLatin1String("kio_bookmarks")); + + if (argc != 4) { + qCritical() << "Usage: kio_bookmarks protocol domain-socket1 domain-socket2"; + exit(-1); + } + + BookmarksProtocol slave(argv[2], argv[3]); + slave.dispatchLoop(); + + return 0; +} diff --git a/bookmarks/kio_bookmarks.css b/bookmarks/kio_bookmarks.css new file mode 100644 index 0000000..804a247 --- /dev/null +++ b/bookmarks/kio_bookmarks.css @@ -0,0 +1,117 @@ +/* +Copyright (C) 2008 Xavier Vello + +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. +*/ + +body { + margin: 0 42px; + font-size: small; + font-family: "sans-serif"; + line-height: 16px; + text-align: center; + white-space: nowrap; +} + +div.column { + display: inline-block; + vertical-align: top; + width: 25%; + max-width: 300px; + min-width: 150px; + padding-top: 5px; + text-align: left; +} + +ul li { + list-style: none; + white-space: normal; + margin: 0; + padding: 0; +} + +div.column > ul { + margin: 5px 5px 10px 5px; + padding: 0 5px 5px 5px; + min-height: 150px; + background: no-repeat 90% 95%; +} + +div.column > ul > li.title { + text-align: center; + font-weight: bold; + font-size: 100%; + margin: 2px -6px 5px -6px; + border-bottom: 1px solid #AAA; +} + +li.link { + padding: 2px 5px 2px 20px; + margin-bottom: 0px; +} + +ul ul { + margin-bottom: 5px; + border-left: 1px solid #AAA; + margin-left: 8px; + padding-left: 5px; +} + +ul ul li.title { + padding: 0px 5px 2px 20px; + margin-left: -13px; + margin-bottom: 6px; + border-bottom: 1px solid #AAA; + height: 10px; +} + +li img { + float: left; + margin-left: -20px; +} + +a, a:hover a:visited { + text-decoration: none; + color: inherit; +} + +hr { + width: 66%; + margin: 7px auto 7px auto; + background-color: #AAA; + border: none; + height: 1px; +} + +p.message { + text-align: center; + margin: auto; + width: 50%; + margin-top: 2em; + padding: 2em; +} + +div.toolbar { + position: fixed; + right: 0; + top: 0; + padding: 2px 0; +} + +div.toolbar img { + display: block; + padding: 2px 5px; + margin: 0; +} diff --git a/bookmarks/kio_bookmarks.h b/bookmarks/kio_bookmarks.h new file mode 100644 index 0000000..bf8cf73 --- /dev/null +++ b/bookmarks/kio_bookmarks.h @@ -0,0 +1,64 @@ +/* + Copyright (C) 2008 Xavier Vello + + 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. +*/ +#ifndef KIO_BOOKMARKS_H +#define KIO_BOOKMARKS_H + +#include +#include +#include +#include +#include + +class BookmarksProtocol : public KIO::SlaveBase +{ + public: + BookmarksProtocol( const QByteArray &pool, const QByteArray &app ); + ~BookmarksProtocol() override; + + void get( const QUrl& url ) override; + + private: + int columns; + int indent; + int totalsize; + KSharedPixmapCacheMixin< KSharedDataCache >* cache; + KBookmarkManager* manager; + KConfig* cfg; + KConfigGroup config; + KBookmarkGroup tree; + void parseTree(); + void flattenTree( const KBookmarkGroup &folder ); + int sizeOfGroup(const KBookmarkGroup &folder, bool real = false); + int addPlaces(); + + // Defined in kde_bookmarks_html.cpp + void echo( const QString &string ); + QString htmlColor(const QColor &col); + QString htmlColor(const QBrush &brush); + void echoIndex(); + void echoHead(const QString &redirect = QString()); + void echoStyle(); + void echoBookmark( const KBookmark &bm); + void echoSeparator(); + void echoFolder( const KBookmarkGroup &folder ); + + // Defined in kde_bookmarks_pixmap.cpp + void echoImage( const QString &type, const QString &string, const QString &sizestring = QString()); +}; + +#endif diff --git a/bookmarks/kio_bookmarks_html.cpp b/bookmarks/kio_bookmarks_html.cpp new file mode 100644 index 0000000..0f0288f --- /dev/null +++ b/bookmarks/kio_bookmarks_html.cpp @@ -0,0 +1,214 @@ +/* +Copyright (C) 2008 Xavier Vello + +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. +*/ + +#include "kio_bookmarks.h" + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void BookmarksProtocol::echoBookmark( const KBookmark &bm) +{ + QString descriptionAsTitle = bm.description().toHtmlEscaped(); + if (!descriptionAsTitle.isEmpty()) + descriptionAsTitle.prepend(QLatin1String("\" title=\"")); + echo ("
  • " + bm.text().toHtmlEscaped() + "
  • "); +} + +void BookmarksProtocol::echoSeparator() +{ + echo ("
    "); +} + +void BookmarksProtocol::echoFolder( const KBookmarkGroup &folder ) +{ + if (sizeOfGroup(folder.toGroup(), true) > 1) + { + QString descriptionAsTitle = folder.description(); + if (!descriptionAsTitle.isEmpty()) + descriptionAsTitle.prepend(QLatin1String("\" title=\"")); + + if (folder.parentGroup() == tree) + { + if (config.readEntry("ShowBackgrounds", true)) + echo("
      "); + else + echo("
        "); + + echo ("
      • " + folder.fullText() + "
      • "); + } + else + { + echo("
          "); + echo ("
        • " + folder.text() + "
        • "); + } + indent++; + + for (KBookmark bm = folder.first(); !bm.isNull(); bm = folder.next(bm)) + { + if (bm.isGroup()) + echoFolder(bm.toGroup()); + else if (bm.isSeparator()) + echoSeparator(); + else + echoBookmark(bm); + } + + indent--; + echo("
        "); + } +} + +void BookmarksProtocol::echoIndex() +{ + parseTree(); + + echoHead(); + + KBookmark bm = tree.first(); + + if(bm.isNull()) { + echo("

        " + i18n("There are no bookmarks to display yet.") + "

        "); + } + else { + for (int i = 1; i <= columns; i++) + { + int size = 0; + echo("
        "); + indent++; + + while(!bm.isNull() && (size + sizeOfGroup(bm.toGroup())*2/3 < (totalsize / columns) || size == 0)) + { + echoFolder(bm.toGroup()); + size += sizeOfGroup(bm.toGroup()); + bm = tree.next(bm); + } + + if (i == columns) + { + while(!bm.isNull()) + { + echoFolder(bm.toGroup()); + bm = tree.next(bm); + } + } + indent--; + echo("
        "); + } + } + indent--; + echo(""); + echo(""); +} + +void BookmarksProtocol::echoHead(const QString &redirect) +{ + SlaveBase::mimeType("text/html"); + + QString css(QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kio_bookmarks/kio_bookmarks.css")); + if (css.isEmpty()) + this->warning(i18n("kio_bookmarks CSS file not found. Output will look ugly.\n" + "Check your installation.")); + + echo(""); + echo(""); + echo(""); + echo(""); + indent++; + echo("" + i18n("My Bookmarks") + ""); + echo(""); + echoStyle(); + + if (!redirect.isEmpty()) + echo(""); + + indent--; + echo(""); + echo(""); + indent++; + + /*echo("
        "); + indent++; + echo(""); + echo(""); + echo(""); + indent--; + echo("
        ");*/ + + if (!redirect.isEmpty()) + echo(""); + +} + +void BookmarksProtocol::echoStyle() +{ + KColorScheme window = KColorScheme(QPalette::Active, KColorScheme::Window); + KColorScheme view = KColorScheme(QPalette::Active, KColorScheme::View); + KColorScheme selection = KColorScheme(QPalette::Active, KColorScheme::Selection); + + QFont font = QFontDatabase::systemFont(QFontDatabase::GeneralFont); + + echo(""); +} + +void BookmarksProtocol::echo( const QString &string ) +{ + for(int i = 0; i < indent; i++) + { + data(" "); + } + data(string.toUtf8() + '\n'); +} + +QString BookmarksProtocol::htmlColor(const QColor &col) +{ + int r, g, b; + col.getRgb(&r, &g, &b); + const QString num = QString::asprintf("#%02X%02X%02X", r, g, b); + return num; +} + +QString BookmarksProtocol::htmlColor(const QBrush &brush) +{ + return htmlColor(brush.color()); +} diff --git a/bookmarks/kio_bookmarks_pixmap.cpp b/bookmarks/kio_bookmarks_pixmap.cpp new file mode 100644 index 0000000..92c9ee5 --- /dev/null +++ b/bookmarks/kio_bookmarks_pixmap.cpp @@ -0,0 +1,76 @@ +/* +Copyright (C) 2008 Xavier Vello + +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. +*/ + +#include "kio_bookmarks.h" + +#include +#include + + +#include +#include +#include + +#include +#include +#include +#include +#include + +using namespace KIO; + +void BookmarksProtocol::echoImage( const QString &type, const QString &string, const QString &sizestring ) +{ + int size = sizestring.toInt(); + if (size == 0) { + if (type == "icon") + size = 16; + else + size = 128; + } + + // Although KImageCache supports caching pixmaps, we need to send the data to the + // destination process anyways so don't bother, just hold onto the image data. + QImage image; + bool ok = cache->findImage(type + string + QString::number(size), &image); + if (!ok || image.isNull()) { + const QIcon icon = QIcon::fromTheme(string); + QPixmap pix; // QIcon can't give us a QImage anyways. + + if (type == "icon") { + pix = icon.pixmap(size, size); + } else { + pix = QPixmap(size, size); + pix.fill(Qt::transparent); + + QPainter painter(&pix); + painter.setOpacity(0.3); + painter.drawPixmap(pix.rect(), icon.pixmap(size, size), pix.rect()); + } + + image = pix.toImage(); + cache->insertImage(type + string + QString::number(size), image); + } + + QBuffer buffer; + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "PNG"); + + SlaveBase::mimeType("image/png"); + data(buffer.buffer()); +} diff --git a/cmake/FindMtp.cmake b/cmake/FindMtp.cmake new file mode 100644 index 0000000..11164ab --- /dev/null +++ b/cmake/FindMtp.cmake @@ -0,0 +1,57 @@ +# - Try to find the libmtp library +# Once done this will define +# +# MTP_FOUND - system has libmtp +# MTP_INCLUDE_DIR - the libmtp include directory +# MTP_LIBRARIES - Link these to use libmtp +# MTP_DEFINITIONS - Compiler switches required for using libmtp + +# SPDX-License-Identifier: BSD-3-Clause +# SPDX-FileCopyrightText: 2014 Jan Grulich + +if (MTP_INCLUDE_DIR AND MTP_LIBRARIES AND MTP_VERSION_OKAY) + + # in cache already + SET(MTP_FOUND TRUE) + +else (MTP_INCLUDE_DIR AND MTP_LIBRARIES AND MTP_VERSION_OKAY) + if(NOT WIN32) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + INCLUDE(FindPkgConfig) + + pkg_check_modules(_MTP libmtp) + + set(MTP_DEFINITIONS ${_MTP_CFLAGS}) + endif(NOT WIN32) + FIND_PATH(MTP_INCLUDE_DIR libmtp.h + ${_MTP_INCLUDE_DIRS} + ) + + FIND_LIBRARY(MTP_LIBRARIES NAMES mtp + PATHS + ${_MTP_LIBRARY_DIRS} + ) + + exec_program(${PKG_CONFIG_EXECUTABLE} ARGS --atleast-version=1.1.2 libmtp OUTPUT_VARIABLE _pkgconfigDevNull RETURN_VALUE MTP_VERSION_OKAY) + + if (MTP_INCLUDE_DIR AND MTP_LIBRARIES AND MTP_VERSION_OKAY STREQUAL "0") + set(MTP_FOUND TRUE) + endif (MTP_INCLUDE_DIR AND MTP_LIBRARIES AND MTP_VERSION_OKAY STREQUAL "0") + + if (MTP_FOUND) + if (NOT Mtp_FIND_QUIETLY) + message(STATUS "Found MTP: ${MTP_LIBRARIES}") + endif (NOT Mtp_FIND_QUIETLY) + else (MTP_FOUND) + if (MTP_INCLUDE_DIR AND MTP_LIBRARIES AND NOT MTP_VERSION_OKAY STREQUAL "0") + message(STATUS "Found MTP but version requirements not met") + endif (MTP_INCLUDE_DIR AND MTP_LIBRARIES AND NOT MTP_VERSION_OKAY STREQUAL "0") + if (Mtp_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find MTP") + endif (Mtp_FIND_REQUIRED) + endif (MTP_FOUND) + + MARK_AS_ADVANCED(MTP_INCLUDE_DIR MTP_LIBRARIES MTP_VERSION_OKAY) + +endif (MTP_INCLUDE_DIR AND MTP_LIBRARIES AND MTP_VERSION_OKAY) diff --git a/cmake/FindSamba.cmake b/cmake/FindSamba.cmake new file mode 100644 index 0000000..7d9e0e4 --- /dev/null +++ b/cmake/FindSamba.cmake @@ -0,0 +1,61 @@ +# - Try to find the samba directory library +# Once done this will define +# +# SAMBA_FOUND - system has SAMBA +# SAMBA_INCLUDE_DIR - the SAMBA include directory +# SAMBA_LIBRARIES - The libraries needed to use SAMBA +# Set SAMBA_REQUIRE_SMBC_SET_CONTEXT to TRUE if you need a version of Samba +# which comes with smbc_set_context() + +# SPDX-License-Identifier: BSD-3-Clause +# SPDX-FileCopyrightText: 2006 Alexander Neundorf, + +if(SAMBA_INCLUDE_DIR AND SAMBA_LIBRARIES) + # Already in cache, be silent + set(Samba_FIND_QUIETLY TRUE) +endif(SAMBA_INCLUDE_DIR AND SAMBA_LIBRARIES) + +find_package(PkgConfig) +if(PKG_CONFIG_FOUND) + pkg_check_modules(PC_SAMBA smbclient) +endif() + +find_path(SAMBA_INCLUDE_DIR NAMES libsmbclient.h HINTS ${PC_SAMBA_INCLUDEDIR}) + +find_library(SAMBA_LIBRARIES NAMES smbclient HINTS ${PC_SAMBA_LIBDIR}) + +if(SAMBA_INCLUDE_DIR AND SAMBA_LIBRARIES) + set(SAMBA_FOUND TRUE) + # check whether libsmbclient has smbc_set_context() + include(CheckSymbolExists) + include(CMakePushCheckState) + cmake_push_check_state() + set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${SAMBA_LIBRARIES}) + set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${SAMBA_INCLUDE_DIR}) + check_symbol_exists(smbc_set_context "libsmbclient.h" SAMBA_HAVE_SMBC_SET_CONTEXT) + check_symbol_exists(smbc_option_set "libsmbclient.h" SAMBA_HAVE_SMBC_OPTION_SET) + cmake_pop_check_state() + # fail if smbc_set_context() was required but hasn't been found + if(SAMBA_REQUIRE_SMBC_SET_CONTEXT AND NOT SAMBA_HAVE_SMBC_SET_CONTEXT) + set(SAMBA_FOUND FALSE) + endif() + # fail if smbc_option_set() was required but hasn't been found + if (SAMBA_REQUIRE_SMBC_OPTION_SET AND NOT SAMBA_HAVE_SMBC_OPTION_SET) + set(SAMBA_FOUND FALSE) + endif() +else() + set(SAMBA_FOUND FALSE) + set(SAMBA_HAVE_SMBC_SET_CONTEXT FALSE) +endif() + +if(SAMBA_FOUND) + if(NOT Samba_FIND_QUIETLY) + message(STATUS "Found samba: ${SAMBA_LIBRARIES}") + endif() +else() + if(Samba_FIND_REQUIRED) + message(FATAL_ERROR "Could not find Samba library") + endif() +endif() + +mark_as_advanced(SAMBA_INCLUDE_DIR SAMBA_LIBRARIES) diff --git a/cmake/FindTIRPC.cmake b/cmake/FindTIRPC.cmake new file mode 100644 index 0000000..3d568b0 --- /dev/null +++ b/cmake/FindTIRPC.cmake @@ -0,0 +1,35 @@ +# - Try to find TI-RPC +# +# The following variables will be available once found : +# +# TIRPC_INCLUDE_DIRS - The TI-RPC headers location +# TIRPC_LIBRARIES - Link these to use TI-RPC +# TIRPC_VERSION - The TIRPC version + +# SPDX-License-Identifier: BSD-3-Clause +# SPDX-FileCopyrightText: 2017 Christophe Giboudeaux + +find_package(PkgConfig QUIET) +pkg_check_modules(PC_TIRPC libtirpc) + +find_path(TIRPC_INCLUDE_DIRS + NAMES netconfig.h + PATH_SUFFIXES tirpc + HINTS ${PC_TIRPC_INCLUDE_DIRS} +) + +find_library(TIRPC_LIBRARIES + NAMES tirpc + HINTS ${PC_TIRPC_LIBRARY_DIRS} +) + +set(TIRPC_VERSION ${PC_TIRPC_VERSION}) + +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(TIRPC + REQUIRED_VARS TIRPC_LIBRARIES TIRPC_INCLUDE_DIRS + VERSION_VAR TIRPC_VERSION +) + +mark_as_advanced(TIRPC_INCLUDE_DIRS TIRPC_LIBRARIES) diff --git a/cmake/FindTaglib.cmake b/cmake/FindTaglib.cmake new file mode 100644 index 0000000..479026e --- /dev/null +++ b/cmake/FindTaglib.cmake @@ -0,0 +1,92 @@ +# !!!! This is a copy from ECM, change there (as well) !!!! + +#.rst: +# FindTaglib +# ---------- +# +# Try to find the Taglib library. +# +# This will define the following variables: +# +# ``Taglib_FOUND`` +# True if the system has the taglib library of at least the minimum +# version specified by the version parameter to find_package() +# ``Taglib_INCLUDE_DIRS`` +# The taglib include dirs for use with target_include_directories +# ``Taglib_LIBRARIES`` +# The taglib libraries for use with target_link_libraries() +# ``Taglib_VERSION`` +# The version of taglib that was found +# +# If ``Taglib_FOUND`` is TRUE, it will also define the following imported +# target: +# +# ``Taglib::Taglib`` +# The Taglib library +# +# Since 5.72.0 +# +# SPDX-FileCopyrightText: 2006 Laurent Montel +# SPDX-FileCopyrightText: 2019 Heiko Becker +# SPDX-FileCopyrightText: 2020 Elvis Angelaccio +# SPDX-License-Identifier: BSD-3-Clause + +find_package(PkgConfig QUIET) + +pkg_search_module(PC_TAGLIB QUIET taglib) + +find_path(Taglib_INCLUDE_DIRS + NAMES tag.h + PATH_SUFFIXES taglib + HINTS ${PC_TAGLIB_INCLUDEDIR} +) + +find_library(Taglib_LIBRARIES + NAMES tag + HINTS ${PC_TAGLIB_LIBDIR} +) + +set(Taglib_VERSION ${PC_TAGLIB_VERSION}) + +if (Taglib_INCLUDE_DIRS AND NOT Taglib_VERSION) + if(EXISTS "${Taglib_INCLUDE_DIRS}/taglib.h") + file(READ "${Taglib_INCLUDE_DIRS}/taglib.h" TAGLIB_H) + + string(REGEX MATCH "#define TAGLIB_MAJOR_VERSION[ ]+[0-9]+" TAGLIB_MAJOR_VERSION_MATCH ${TAGLIB_H}) + string(REGEX MATCH "#define TAGLIB_MINOR_VERSION[ ]+[0-9]+" TAGLIB_MINOR_VERSION_MATCH ${TAGLIB_H}) + string(REGEX MATCH "#define TAGLIB_PATCH_VERSION[ ]+[0-9]+" TAGLIB_PATCH_VERSION_MATCH ${TAGLIB_H}) + + string(REGEX REPLACE ".*_MAJOR_VERSION[ ]+(.*)" "\\1" TAGLIB_MAJOR_VERSION "${TAGLIB_MAJOR_VERSION_MATCH}") + string(REGEX REPLACE ".*_MINOR_VERSION[ ]+(.*)" "\\1" TAGLIB_MINOR_VERSION "${TAGLIB_MINOR_VERSION_MATCH}") + string(REGEX REPLACE ".*_PATCH_VERSION[ ]+(.*)" "\\1" TAGLIB_PATCH_VERSION "${TAGLIB_PATCH_VERSION_MATCH}") + + set(Taglib_VERSION "${TAGLIB_MAJOR_VERSION}.${TAGLIB_MINOR_VERSION}.${TAGLIB_PATCH_VERSION}") + endif() +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Taglib + FOUND_VAR + Taglib_FOUND + REQUIRED_VARS + Taglib_LIBRARIES + Taglib_INCLUDE_DIRS + VERSION_VAR + Taglib_VERSION +) + +if (Taglib_FOUND AND NOT TARGET Taglib::Taglib) + add_library(Taglib::Taglib UNKNOWN IMPORTED) + set_target_properties(Taglib::Taglib PROPERTIES + IMPORTED_LOCATION "${Taglib_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${Taglib_INCLUDE_DIRS}" + ) +endif() + +mark_as_advanced(Taglib_LIBRARIES Taglib_INCLUDE_DIRS) + +include(FeatureSummary) +set_package_properties(Taglib PROPERTIES + URL "https://taglib.org/" + DESCRIPTION "A library for reading and editing the meta-data of audio formats" +) diff --git a/cmake/Findlibssh.cmake b/cmake/Findlibssh.cmake new file mode 100644 index 0000000..44a6acd --- /dev/null +++ b/cmake/Findlibssh.cmake @@ -0,0 +1,109 @@ +# - Try to find libssh +# Once done this will define +# +# LIBSSH_FOUND - system has libssh +# LIBSSH_INCLUDE_DIRS - the libssh include directory +# LIBSSH_LIBRARIES - Link these to use libssh +# LIBSSH_DEFINITIONS - Compiler switches required for using libssh + +# SPDX-License-Identifier: BSD-3-Clause +# SPDX-FileCopyrightText: 2009-2014 Andreas Schneider +# SPDX-FileCopyrightText: 2018 Harald Sitter + +# Define an imported target to have compatibility with newer libssh and so +# we have a single target to use regardless of the code path taken in the +# finder and the actual libssh version defining the target. +macro(libssh_ensure_imported_target) + if(NOT TARGET ssh) + add_library(ssh SHARED IMPORTED) + set_target_properties(ssh PROPERTIES + IMPORTED_LOCATION "${LIBSSH_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBSSH_INCLUDE_DIR}" + ) + endif() +endmacro() + +# We prefer the config, but on Ubuntu 18.04 LTS (and to some extent later +# versions it seems) they've not packaged the config properly. So, go for the +# config by default and fall back to manual lookup iff the config was not found. +# https://bugs.kde.org/show_bug.cgi?id=400291 +# https://bugs.launchpad.net/ubuntu/+source/libssh/+bug/1800135 +find_package(libssh ${libssh_FIND_VERSION} NO_MODULE QUIET) +if(libssh_FOUND) + # Certain versions with config may not have the target, so make sure it's + # defined. + libssh_ensure_imported_target() + return() +endif() + +find_path(LIBSSH_INCLUDE_DIR + NAMES + libssh/libssh.h + PATHS + /usr/include + /usr/local/include + /opt/local/include + /sw/include + ${CMAKE_INCLUDE_PATH} + ${CMAKE_INSTALL_PREFIX}/include +) + +find_library(SSH_LIBRARY + NAMES + ssh + libssh + PATHS + /usr/lib + /usr/local/lib + /opt/local/lib + /sw/lib + ${CMAKE_LIBRARY_PATH} + ${CMAKE_INSTALL_PREFIX}/lib +) + +set(LIBSSH_LIBRARIES + ${LIBSSH_LIBRARIES} + ${SSH_LIBRARY} +) + +message("LIB: ${LIBSSH_LIBRARIES}; INC: ${LIBSSH_INCLUDE_DIR};") + +if (LIBSSH_INCLUDE_DIR AND libssh_FIND_VERSION) + file(STRINGS ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h LIBSSH_VERSION_MAJOR + REGEX "#define[ ]+LIBSSH_VERSION_MAJOR[ ]+[0-9]+") + + # Older versions of libssh like libssh-0.2 have LIBSSH_VERSION but not LIBSSH_VERSION_MAJOR + if (LIBSSH_VERSION_MAJOR) + string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_MAJOR ${LIBSSH_VERSION_MAJOR}) + file(STRINGS ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h LIBSSH_VERSION_MINOR + REGEX "#define[ ]+LIBSSH_VERSION_MINOR[ ]+[0-9]+") + string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_MINOR ${LIBSSH_VERSION_MINOR}) + file(STRINGS ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h LIBSSH_VERSION_PATCH + REGEX "#define[ ]+LIBSSH_VERSION_MICRO[ ]+[0-9]+") + string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_PATCH ${LIBSSH_VERSION_PATCH}) + + set(LIBSSH_VERSION ${LIBSSH_VERSION_MAJOR}.${LIBSSH_VERSION_MINOR}.${LIBSSH_VERSION_PATCH}) + + else (LIBSSH_VERSION_MAJOR) + message(STATUS "LIBSSH_VERSION_MAJOR not found in ${LIBSSH_INCLUDE_DIR}/libssh/libssh.h, assuming libssh is too old") + set(LIBSSH_FOUND FALSE) + endif (LIBSSH_VERSION_MAJOR) +endif (LIBSSH_INCLUDE_DIR AND libssh_FIND_VERSION) + +# If the version is too old, but libs and includes are set, +# find_package_handle_standard_args will set LIBSSH_FOUND to TRUE again, +# so we need this if() here. +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(libssh + FOUND_VAR + LIBSSH_FOUND + REQUIRED_VARS + LIBSSH_LIBRARIES + LIBSSH_INCLUDE_DIR + VERSION_VAR + LIBSSH_VERSION) + +libssh_ensure_imported_target() + +# show the LIBSSH_INCLUDE_DIRS and LIBSSH_LIBRARIES variables only in the advanced view +mark_as_advanced(LIBSSH_INCLUDE_DIR LIBSSH_LIBRARIES) diff --git a/config-runtime.h.cmake b/config-runtime.h.cmake new file mode 100644 index 0000000..2e8007c --- /dev/null +++ b/config-runtime.h.cmake @@ -0,0 +1,19 @@ +/* config-runtime.h. Generated by cmake from config-runtime.h.cmake */ + +/* Define to 1 if you have the `nice' function. */ +#cmakedefine HAVE_NICE 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_SELECT_H 1 + +/* Number of bits in a file offset, on hosts where this is settable. */ +#define _FILE_OFFSET_BITS 64 + +/* + * Used for the "KDE" version string in generated man pages. + * Using the definition from this project so as to be independent of Plasma. + */ +#define KDE_VERSION_STRING "@PROJECT_VERSION@" + +/* kdnssd with signal race protection */ +#cmakedefine HAVE_KDNSSD_WITH_SIGNAL_RACE_PROTECTION 1 diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..ca45f85 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1 @@ +ecm_optional_add_subdirectory(kioslave) diff --git a/doc/kioslave/CMakeLists.txt b/doc/kioslave/CMakeLists.txt new file mode 100644 index 0000000..0ffe1d7 --- /dev/null +++ b/doc/kioslave/CMakeLists.txt @@ -0,0 +1,20 @@ +add_subdirectory(bookmarks) +if(KArchive_HAVE_BZIP2) + add_subdirectory(bzip2) +endif() +add_subdirectory(fish) +add_subdirectory(gzip) +add_subdirectory(info) +add_subdirectory(man) +add_subdirectory(network) +add_subdirectory(nfs) +add_subdirectory(recentdocuments) +add_subdirectory(sftp) +if(NOT WIN32) + add_subdirectory(smb) +endif() +add_subdirectory(tar) +add_subdirectory(thumbnail) +if(KArchive_HAVE_LZMA) + add_subdirectory(xz) +endif() diff --git a/doc/kioslave/bookmarks/CMakeLists.txt b/doc/kioslave/bookmarks/CMakeLists.txt new file mode 100644 index 0000000..e738cbf --- /dev/null +++ b/doc/kioslave/bookmarks/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/bookmarks) diff --git a/doc/kioslave/bookmarks/index.docbook b/doc/kioslave/bookmarks/index.docbook new file mode 100644 index 0000000..7d7fa8f --- /dev/null +++ b/doc/kioslave/bookmarks/index.docbook @@ -0,0 +1,29 @@ + + + +]> + +
        +bookmarks + + + +XavierVello +xavier.vello@gmail.com + + + + +2008-08-31 +0.2 + + + +This KIO displays your bookmarks as a nice and functional &HTML; page. You access it typing bookmarks:/ in the &konqueror; location bar. + +The content and layout of the page is configurable. Just point &konqueror; to bookmarks:/config to launch the configuration dialog. + +
        + diff --git a/doc/kioslave/bzip2/CMakeLists.txt b/doc/kioslave/bzip2/CMakeLists.txt new file mode 100644 index 0000000..4674384 --- /dev/null +++ b/doc/kioslave/bzip2/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/bzip2) diff --git a/doc/kioslave/bzip2/index.docbook b/doc/kioslave/bzip2/index.docbook new file mode 100644 index 0000000..13909c5 --- /dev/null +++ b/doc/kioslave/bzip2/index.docbook @@ -0,0 +1,40 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; + + + + +bzip2 is a compression program. + +The bzip2 kioslave is not directly usable, and is intended for use +as a filter. For example, the tar kioslave can filter a file through +the bzip2 kioslave, in order to display the contents of a tar.bz2 file directly in a &konqueror; +window. + +If you click on a file compressed with a .bz2 in &konqueror;, this kioslave is used to +uncompress it and display it as a normal (uncompressed) file. + +If you are a developer, and would like to use the bzip2 filter, +you can find documentation on using kioslaves at http://techbase.kde.org + + See the manual: bzip2. + + +bzip is the ancestor of bzip2. It is rarely +used today, having been replaced with bzip2, which offers much better +compression. + +
        diff --git a/doc/kioslave/fish/CMakeLists.txt b/doc/kioslave/fish/CMakeLists.txt new file mode 100644 index 0000000..9f29e7e --- /dev/null +++ b/doc/kioslave/fish/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/fish) diff --git a/doc/kioslave/fish/index.docbook b/doc/kioslave/fish/index.docbook new file mode 100644 index 0000000..dfb6cb6 --- /dev/null +++ b/doc/kioslave/fish/index.docbook @@ -0,0 +1,73 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; + + + +2010-10-27 +&kde; 4.5 + + + +Allows you to access another computer's files using the Secure SHell (SSH) protocol. The remote computer needs to be running the SSH daemon, but the remainder of the protocol uses standard commandline tools as discussed below. + +You can use the fish kioslave like this: +fish://hostname or fish://username@hostname. + +You need to use double forward slashes. + +You can omit the username (and the trailing +@ symbol) if you have the same username on both computers. + +You can add a password in the format: +fish://username:password@hostname +but it is not necessary as you will be prompted for one if it is not +supplied. + +If you are running the SSH daemon on a non-standard +port, you can specify that port using the normal &URL; syntax as shown +below: +fish://hostname:portnumber. + +Fish should work with any roughly POSIX compatible +&UNIX; based remote computer. It uses the shell commands +cat, chgrp, +chmod, chown, +cp, dd, +env, expr, +grep, ls, +mkdir, mv, +rm, rmdir, +sed, +and wc. Fish starts +/bin/sh as its shell and expects it to be a +Bourne shell (or compatible, like bash). +If the sed and +file commands are available, as well as a +/etc/apache/magic file with &MIME; type +signatures, these will be used to guess &MIME; types. + + +If Perl is available on the remote +machine, it will be used instead. Then only env and +/bin/sh are needed. Using +Perl has the additional benefit of being +faster. + +Fish may even work on &Windows; machines, if tools like +Cygwin are installed. All the above +utilities must be in the system PATH, and the initial +shell must be able to process the command echo +FISH:;/bin/sh correctly. + +
        diff --git a/doc/kioslave/gzip/CMakeLists.txt b/doc/kioslave/gzip/CMakeLists.txt new file mode 100644 index 0000000..fa2292b --- /dev/null +++ b/doc/kioslave/gzip/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/gzip) diff --git a/doc/kioslave/gzip/index.docbook b/doc/kioslave/gzip/index.docbook new file mode 100644 index 0000000..f2ddb32 --- /dev/null +++ b/doc/kioslave/gzip/index.docbook @@ -0,0 +1,37 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; + + + + +gzip is a compression program + +The gzip kioslave is not directly usable, and is intended for use +as a filter. For example, the tar kioslave can filter a file through +the gzip kioslave, in order to display the contents of a tar.gz file directly in a &konqueror; +window. + +If you click on a file compressed with a gz extension in &konqueror;, this kioslave is +used to uncompress it and display it as a normal (uncompressed) +file. + +If you are a developer, and would like to use the gzip filter, you +can find documentation on using kioslaves at http://techbase.kde.org + + See the manual: gzip. + + +
        diff --git a/doc/kioslave/info/CMakeLists.txt b/doc/kioslave/info/CMakeLists.txt new file mode 100644 index 0000000..6e9f034 --- /dev/null +++ b/doc/kioslave/info/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/info) diff --git a/doc/kioslave/info/index.docbook b/doc/kioslave/info/index.docbook new file mode 100644 index 0000000..a60628b --- /dev/null +++ b/doc/kioslave/info/index.docbook @@ -0,0 +1,43 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; + + Nicolas + Goutte + goutte@kde.org + + + + + +Info is a type of documentation. The documents are in a file +format called texinfo, and can be read on the command line with the +info program. + +The Info ioslave allows you to read the info pages installed on +your system, from within &konqueror;. You can use it very easily: + +info:gcc + +This would show you the top level node of the Info documentation +for the &gcc; compiler. + +Info is a &GNU; replacement for +man, but is not widely used outside of +&GNU; software. + +You can quite easily browse the info documentation you have +installed from within the &khelpcenter; application, or you can use the +info ioslave directly from within both &konqueror; and the +mini-cli. + +
        diff --git a/doc/kioslave/man/CMakeLists.txt b/doc/kioslave/man/CMakeLists.txt new file mode 100644 index 0000000..d9b6629 --- /dev/null +++ b/doc/kioslave/man/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/man) diff --git a/doc/kioslave/man/index.docbook b/doc/kioslave/man/index.docbook new file mode 100644 index 0000000..b68e0fc --- /dev/null +++ b/doc/kioslave/man/index.docbook @@ -0,0 +1,93 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; + + Nicolas + Goutte + goutte@kde.org + + + + + + +Using the man ioslave you are able to read the man pages installed +on your system. It is easy to use: + + + + +man: + +See the sections of the manual, click to find the rest. + + + + +man:/fopen + +See the man page of fopen. + + + + +man:/fopen(3) + +See the man page of fopen in section 3. + + + + +man:/(3) + +See the index of section 3. + + + + +man:/intro(3) + +See the introduction of section 3. + + + + + +If there are more than one man page of the name that you +have entered, you will get a list where you can choose the man page +that you want to see. + + +There is also a shortcut: #fopen, +which has the same effect as above. + + + +If you do not find all your man pages, adjust the configuration file +/etc/manpath.config +(or a file of a similar name depending on your distribution) +or adjust the environment variables +MANPATH and MANSECT. + + + +As with any other &kde; ioslave, it is possible to enter a &URL;, like +man:/socket in any +&kde; application. Try it in &kwrite; and you will see the man page in +&HTML; format. + + + +Contact mailing list: kde-devel@kde.org + + +
        diff --git a/doc/kioslave/network/CMakeLists.txt b/doc/kioslave/network/CMakeLists.txt new file mode 100644 index 0000000..ef43b8e --- /dev/null +++ b/doc/kioslave/network/CMakeLists.txt @@ -0,0 +1 @@ +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/network) diff --git a/doc/kioslave/network/index.docbook b/doc/kioslave/network/index.docbook new file mode 100644 index 0000000..15975b2 --- /dev/null +++ b/doc/kioslave/network/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        + +network + + + + + Friedrich W. H.Kossebau + kossebau@kde.org + + + + + 2016-12-11 + Applications 16.12 + + + + + + The network ioslave enables the user to browse the devices connected to the local network + and the services running on them. It it also possible to start programs for services + whose type is known. + + + + To see all the devices found, enter + network://. + + + + network://hostname_of_device + will list the services found to be running on a device. + + + + Selecting a service will forward to a url which matches the service, given there is a suitable, e.g. + ssh://hostname_of_device:port/ for a SSH service. + Each known service type has a mimetype assigned to it, so a user can assign new handlers + for the resulting urls. This is done with the control module + File Associations in &systemsettings;. + The mimetypes of the services are currently all named inode/vnd.kde.service.*. + + + + + The network kioslave currently only finds and displays devices and services which are + actively advertising themselves using the service discovery framework + DNS-SD. + + + +
        + diff --git a/doc/kioslave/nfs/CMakeLists.txt b/doc/kioslave/nfs/CMakeLists.txt new file mode 100644 index 0000000..67bed9e --- /dev/null +++ b/doc/kioslave/nfs/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/nfs) diff --git a/doc/kioslave/nfs/index.docbook b/doc/kioslave/nfs/index.docbook new file mode 100644 index 0000000..f0aae30 --- /dev/null +++ b/doc/kioslave/nfs/index.docbook @@ -0,0 +1,46 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; + + + + +Sun's NFS protocol provides transparent remote access to +shared file systems across networks. The NFS protocol is +designed to be machine, operating system, network architecture, and +transport protocol independent. This independence is achieved through the +use of Remote Procedure Call (RPC) primitives built on +top of an eXternal Data Representation (XDR). + + + +The supporting MOUNT protocol performs the operating system-specific +functions that allow clients to attach remote folder trees to a point +within the local file system. The mount process also allows the server to +grant remote access privileges to a restricted set of clients via export +control. + + +The Lock Manager provides support for file locking when used in the +NFS environment. The Network Lock Manager +(NLM) protocol isolates the inherently stateful aspects +of file locking into a separate protocol. + + +Source: + +http://www.networksorcery.com/enp/protocol/nfs.htm + + + See the manual: nfs. + +
        diff --git a/doc/kioslave/recentdocuments/CMakeLists.txt b/doc/kioslave/recentdocuments/CMakeLists.txt new file mode 100644 index 0000000..e5ec1e5 --- /dev/null +++ b/doc/kioslave/recentdocuments/CMakeLists.txt @@ -0,0 +1 @@ +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/recentdocuments) diff --git a/doc/kioslave/recentdocuments/index.docbook b/doc/kioslave/recentdocuments/index.docbook new file mode 100644 index 0000000..6931a33 --- /dev/null +++ b/doc/kioslave/recentdocuments/index.docbook @@ -0,0 +1,35 @@ + + + +]> + +
        +Recent Documents + + + + + &Burkhard.Lueck;&Burkhard.Lueck.mail; + + + + +2016-12-01 +Applications 16.12 + + + +A kioslave to display recent documents or &URL;s in the file dialog, in the file manager, in &krunner; and in the Application Menu. + +You can use the kioslave like this: + +Type recentdocuments:/ in the location bar of &dolphin;, &konqueror; and the file dialog to list the recently opened documents or &URL;s. + +You can add an entry to the Places sidebar: right click on the sidebar, choose Add Entry, enter recentdocuments:/ in the Location field and save it. It should be available now in all file dialogs unless you check to show the entry only in this application. + +In the &systemsettings; module Plasma Search enable the search plugin Recent Documents to use this kioslave in &krunner;. + +In the Application Menu add a menu item with recent documents at the top of the menu by enabling Show recent documents on the settings page. + +
        diff --git a/doc/kioslave/sftp/CMakeLists.txt b/doc/kioslave/sftp/CMakeLists.txt new file mode 100644 index 0000000..8585184 --- /dev/null +++ b/doc/kioslave/sftp/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/sftp) diff --git a/doc/kioslave/sftp/index.docbook b/doc/kioslave/sftp/index.docbook new file mode 100644 index 0000000..b0ba892 --- /dev/null +++ b/doc/kioslave/sftp/index.docbook @@ -0,0 +1,26 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; + + + +SFTP is a Secure file transfer protocol. +sftp is an interactive file transfer program, +similar to ftp, but it performs all operations over an encrypted +ssh transport. It may use many of the features of +ssh, including public key authentication and +compression. + + See the manual: sftp. + + +
        diff --git a/doc/kioslave/smb/CMakeLists.txt b/doc/kioslave/smb/CMakeLists.txt new file mode 100644 index 0000000..b665b87 --- /dev/null +++ b/doc/kioslave/smb/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/smb) diff --git a/doc/kioslave/smb/index.docbook b/doc/kioslave/smb/index.docbook new file mode 100644 index 0000000..b711be8 --- /dev/null +++ b/doc/kioslave/smb/index.docbook @@ -0,0 +1,58 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; + + +2016-12-11 +Applications 16.12 + + +The smb ioslave enables you to browse the shares of a &Windows; (or Samba) +network. + + + +To see the workgroups, enter +smb:/. + + +smb://a_workgroup +will list the hosts in this workgroup. + + +To see the shares of a host, enter +smb://the_host +or +smb:/a_workgroup/the_host. + + +To access a share directly enter +smb://the_host/the_share +or +smb:/a_workgroup/the_host/the_share + + + +The smb ioslave requires that you have libsmbclient to use this ioslave. + + + +You can set your default user name and password in the &systemsettings; +category Network in +Connectivity +Windows Shares. This is especially useful if you are a +member of a &Windows; NT domain. There you can also set your +workgroup name, but in most cases this is not required. The kioslave will ask for your username and password if a default is not set. + + +
        + diff --git a/doc/kioslave/tar/CMakeLists.txt b/doc/kioslave/tar/CMakeLists.txt new file mode 100644 index 0000000..0902c3d --- /dev/null +++ b/doc/kioslave/tar/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/tar) diff --git a/doc/kioslave/tar/index.docbook b/doc/kioslave/tar/index.docbook new file mode 100644 index 0000000..98f44c5 --- /dev/null +++ b/doc/kioslave/tar/index.docbook @@ -0,0 +1,25 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; + + + + +An archiving program designed to store and extract files from an archive +file known as a tarfile. A tarfile may be made on a tape drive, however, it +is also common to write a tarfile to a normal file. + + + See the manual: tar. + + +
        diff --git a/doc/kioslave/thumbnail/CMakeLists.txt b/doc/kioslave/thumbnail/CMakeLists.txt new file mode 100644 index 0000000..3e8eb9b --- /dev/null +++ b/doc/kioslave/thumbnail/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/thumbnail) diff --git a/doc/kioslave/thumbnail/index.docbook b/doc/kioslave/thumbnail/index.docbook new file mode 100644 index 0000000..c17e747 --- /dev/null +++ b/doc/kioslave/thumbnail/index.docbook @@ -0,0 +1,36 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; + + +2016-12-11 +Applications 16.12 + +The thumbnail kioslave is used by &kde; for network transparent +and persistent generation of thumbnails. + +The thumbnail kioslave uses plugins to generate the actual +thumbnails. You can enable viewing of these thumbnails from the +View +Preview submenu, available in +&dolphin; or in &konqueror; in file manager mode. + +The thumbnail kioslave is not directly useful to a user, but if +you are a developer, you can use it within your own applications to +create file previews. + +See the documentation in the sources for more information. You +will find these in the source folder +thumbnail + + +
        diff --git a/doc/kioslave/xz/CMakeLists.txt b/doc/kioslave/xz/CMakeLists.txt new file mode 100644 index 0000000..33f5263 --- /dev/null +++ b/doc/kioslave/xz/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/xz) diff --git a/doc/kioslave/xz/index.docbook b/doc/kioslave/xz/index.docbook new file mode 100644 index 0000000..9a6f1a1 --- /dev/null +++ b/doc/kioslave/xz/index.docbook @@ -0,0 +1,37 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen + + + + +Xz is a compression program + +The xz kioslave is not directly usable, and is intended for use +as a filter. For example, the tar kioslave can filter a file through +the xz kioslave, in order to display the contents of a tar.lzma or tar.xz +file directly in a &konqueror; window. + +If you click on a file compressed with a .lzma or tar.xz +in &konqueror;, this kioslave is used to +uncompress it and display it as a normal (uncompressed) file. + +If you are a developer, and would like to use the xz filter, +you can find documentation on using kioslaves at http://techbase.kde.org + +See the manual: xz. + + +
        diff --git a/docfilter/CMakeLists.txt b/docfilter/CMakeLists.txt new file mode 100644 index 0000000..72ccd06 --- /dev/null +++ b/docfilter/CMakeLists.txt @@ -0,0 +1,3 @@ +########### install files ############### + +install( FILES kio_docfilter.css DESTINATION ${KDE_INSTALL_DATADIR}/kio_docfilter ) diff --git a/docfilter/kio_docfilter.css b/docfilter/kio_docfilter.css new file mode 100644 index 0000000..6980f8c --- /dev/null +++ b/docfilter/kio_docfilter.css @@ -0,0 +1,96 @@ +/* + * This is the common CSS styling for the various documentation filter + * KIO Slaves (incl. kio_man, kio_info, kio_perldoc, etc.) + * + * It is designed to mimic the look of the kde.org website (although the css + * for the website has since drifted itself...) + * + * Unfortunately at this point to get the proper effect you cannot use XHTML + * STRICT (as was used in kio_info). + */ + +body { + /* If you specify a background color you should also specify a regular color */ + background-color: white; + color: black; + padding: 0px; +} + +#header { + width: 100%; + color: #535353; + background: #eeeeee; + border-bottom: #bcbcbc 1px solid; +} + +#header_top { + margin: 0 auto; + padding: 0; + width: 60em; + min-width: 770px; + max-width: 45em; + vertical-align: middle; + color: #ffffff; + background-repeat: repeat-x; + background-position: bottom; + background-color: #0057ae; +} + +/* + * The header_top div div stuff seems to automatically setup the images but + * I'm not sure that it's actually any better than just manually creating a + * sequences of non-nested divs and setting an image that way. + */ +#header_top div { + margin: 0 auto; + padding: 0; + background-repeat: no-repeat; + background-position: bottom left; +} + +#header_top div div { + margin: 0 auto; + padding: 0; + vertical-align: middle; + text-align: left; + font-size: 1.7em; + font-weight: bold; + background-repeat: no-repeat; + background-position: bottom right; +} + +/* + * If the generated HTML does not use an tag in the div div header + * sequence then the text will be aligned wrong due to the missing margin + * provided by the image. + */ +#header_top div div img { + margin:8px 0px 9px 18px; + vertical-align: middle; +} + +#header_bottom { + margin: 0 auto; + padding: 0.1em 0em 0.3em 0; + width: 60em; + min-width: 770px; + max-width: 45em; + vertical-align: middle; + text-align: right; + background: #eeeeee; +} + +/* Used for the text and footer area at the bottom. */ +#footer { + width: 100%; + background-color: #eeeeee; + padding-top: 12pt; + padding-bottom: 12pt; + border-top: #bcbcbc 1px solid; + margin-top: 12pt; +} + +#footer_text { + text-align:center; + vertical-align: middle; +} diff --git a/filenamesearch/CMakeLists.txt b/filenamesearch/CMakeLists.txt new file mode 100644 index 0000000..768b276 --- /dev/null +++ b/filenamesearch/CMakeLists.txt @@ -0,0 +1,8 @@ +add_library(kio_filenamesearch MODULE kio_filenamesearch.cpp) +target_link_libraries(kio_filenamesearch KF5::KIOCore KF5::DBusAddons Qt5::Network KF5::KIOCore KF5::I18n) +set_target_properties(kio_filenamesearch PROPERTIES OUTPUT_NAME "filenamesearch") + +install(TARGETS kio_filenamesearch DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) +install(FILES filenamesearch.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +add_subdirectory(kded) diff --git a/filenamesearch/filenamesearch.protocol b/filenamesearch/filenamesearch.protocol new file mode 100644 index 0000000..2612ed3 --- /dev/null +++ b/filenamesearch/filenamesearch.protocol @@ -0,0 +1,17 @@ +[Protocol] +exec=kf5/kio/filenamesearch +protocol=filenamesearch +input=none +output=filesystem +reading=true +writing=false +deleting=true +linking=false +makedir=false +moving=false +listing=Name,Type,Size,Date,AccessDate,Access,Owner,Group,Link +source=false +Icon=edit-find +Class=:local +determineMimetypeFromExtension=false +maxInstances=10 diff --git a/filenamesearch/kded/CMakeLists.txt b/filenamesearch/kded/CMakeLists.txt new file mode 100644 index 0000000..ed4eefb --- /dev/null +++ b/filenamesearch/kded/CMakeLists.txt @@ -0,0 +1,13 @@ +set (KDED_FILENAMESEARCH_SRCS + filenamesearchmodule.cpp +) + +add_library(filenamesearchmodule MODULE ${KDED_FILENAMESEARCH_SRCS}) +kcoreaddons_desktop_to_json(filenamesearchmodule filenamesearchmodule.desktop) + +target_link_libraries(filenamesearchmodule + KF5::DBusAddons + KF5::KIOCore +) + +install(TARGETS filenamesearchmodule DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kded) diff --git a/filenamesearch/kded/filenamesearchmodule.cpp b/filenamesearch/kded/filenamesearchmodule.cpp new file mode 100644 index 0000000..15a0b85 --- /dev/null +++ b/filenamesearch/kded/filenamesearchmodule.cpp @@ -0,0 +1,118 @@ +/* + * This file is part of the KDE KIO-extras Project + * Copyright (C) 2016 Anthony Fieroni + * + * 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) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * 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, see . + * + */ + +#include "filenamesearchmodule.h" + +#include +#include + +#include + +FileNameSearchModule::FileNameSearchModule(QObject* parent, const QVariantList&) + : KDEDModule(parent) + , m_dirNotify(QString(), QString(), QDBusConnection::sessionBus()) +{ + connect(&m_dirNotify, &OrgKdeKDirNotifyInterface::enteredDirectory, + this, &FileNameSearchModule::registerSearchUrl); + connect(&m_dirNotify, &OrgKdeKDirNotifyInterface::leftDirectory, + this, &FileNameSearchModule::unregisterSearchUrl); + connect(&m_dirNotify, &OrgKdeKDirNotifyInterface::FilesAdded, + this, &FileNameSearchModule::slotFilesAdded); + connect(&m_dirNotify, &OrgKdeKDirNotifyInterface::FilesChanged, + this, &FileNameSearchModule::slotFilesChanged); + connect(&m_dirNotify, &OrgKdeKDirNotifyInterface::FilesRemoved, + this, &FileNameSearchModule::slotFilesRemoved); +} + +void FileNameSearchModule::registerSearchUrl(const QString &urlString) +{ + if (urlString.startsWith(QStringLiteral("filenamesearch"))) { + m_searchUrls << QUrl(urlString); + } +} + +void FileNameSearchModule::unregisterSearchUrl(const QString &urlString) +{ + if (urlString.startsWith(QStringLiteral("filenamesearch"))) { + m_searchUrls.removeAll(QUrl(urlString)); + } +} + +void FileNameSearchModule::slotFilesAdded(const QString &urlString) +{ + const QUrl url(urlString); + if (!url.isLocalFile()) { + return; + } + const QString urlPath = url.path(); + for (const QUrl &dirUrl : qAsConst(m_searchUrls)) { + if (urlPath.startsWith(dirUrl.path())) { + org::kde::KDirNotify::emitFilesAdded(dirUrl); + } + } +} + +void FileNameSearchModule::slotFilesChanged(const QStringList &files) +{ + QList fileList; + for (const QString &file : files) { + QUrl url(file); + if (!url.isLocalFile()) { + continue; + } + const QString urlPath = url.path(); + for (const QUrl &dirUrl : qAsConst(m_searchUrls)) { + if (urlPath.startsWith(dirUrl.path())) { + url.setScheme(QStringLiteral("filenamesearch")); + fileList << url; + } + } + } + if (!fileList.isEmpty()) { + org::kde::KDirNotify::emitFilesChanged(fileList); + } +} + +void FileNameSearchModule::slotFilesRemoved(const QStringList &files) +{ + QList fileList; + for (const QString &file : files) { + QUrl url(file); + if (!url.isLocalFile()) { + continue; + } + const QString urlPath = url.path(); + for (const QUrl &dirUrl : qAsConst(m_searchUrls)) { + if (urlPath.startsWith(dirUrl.path())) { + url.setScheme(QStringLiteral("filenamesearch")); + fileList << url; + } + } + } + if (!fileList.isEmpty()) { + org::kde::KDirNotify::emitFilesRemoved(fileList); + } +} + +K_PLUGIN_CLASS_WITH_JSON(FileNameSearchModule, "filenamesearchmodule.json") + +#include "filenamesearchmodule.moc" diff --git a/filenamesearch/kded/filenamesearchmodule.desktop b/filenamesearch/kded/filenamesearchmodule.desktop new file mode 100644 index 0000000..8e9c2f5 --- /dev/null +++ b/filenamesearch/kded/filenamesearchmodule.desktop @@ -0,0 +1,89 @@ +[Desktop Entry] +Type=Service +Icon=edit-find +ServiceTypes=KDEDModule +X-KDE-ServiceTypes=KDEDModule +X-KDE-Library=filenamesearchmodule +X-KDE-FactoryName=filenamesearchmodule +X-KDE-DBus-ModuleName=filenamesearchmodule +X-KDE-Kded-load-on-demand=true +X-KDE-Kded-autoload=false + +Name=Search Folder Updater +Name[ca]=Actualitzador de les carpetes de cerca +Name[ca@valencia]=Actualitzador de les carpetes de cerca +Name[cs]=Nástroj pro aktualizaci složek pro vyhledávání +Name[da]=Opdatering af søgemappe +Name[de]=Suchordner-Aktualisierung +Name[el]=Ενημέρωση για φακέλους αναζήτησης +Name[en_GB]=Search Folder Updater +Name[es]=Actualizador de carpetas de búsqueda +Name[et]=Otsingukataloogide uuendaja +Name[eu]=Bilatu karpeta eguneratzailea +Name[fi]=Hakukansiopäivitin +Name[fr]=Mise à jour du dossier Recherche +Name[gl]=Actualizador do cartafol de busca +Name[hu]=Keresésimappa-frissítő +Name[ia]=Actualisator de dossier de cerca +Name[id]=Pembaru Pencarian Folder +Name[it]=Strumento di aggiornamento delle cartelle di ricerca +Name[ko]=검색 폴더 업데이트 도구 +Name[lt]=Paieškos aplanko atnaujinimo programa +Name[nb]=Søkemappe-oppdatering +Name[nl]=Bijwerken van zoekmap +Name[nn]=Søkjemappe-oppdatering +Name[pl]=Uaktualnienie katalogu wyszukiwania +Name[pt]=Actualização das Pastas de Pesquisa +Name[pt_BR]=Atualização das pastas de pesquisa +Name[ru]=Обновление папок поиска +Name[sk]=Aktualizátor priečinkov hľadania +Name[sl]=Posodobilnik iskalnih map +Name[sr]=Ажурирање фасцикли претраге +Name[sr@ijekavian]=Ажурирање фасцикли претраге +Name[sr@ijekavianlatin]=Ažuriranje fascikli pretrage +Name[sr@latin]=Ažuriranje fascikli pretrage +Name[sv]=Uppdateringsverktyg för sökkataloger +Name[tr]=Arama Klasörü Güncelleyici +Name[uk]=Засіб оновлення тек пошуку +Name[x-test]=xxSearch Folder Updaterxx +Name[zh_CN]=搜索文件夹更新器 +Name[zh_TW]=搜尋資料夾更新器 +Comment=Allows automatic updates of Search Folders +Comment[ca]=Permet l'actualització automàtica de les carpetes de cerca +Comment[ca@valencia]=Permet l'actualització automàtica de les carpetes de cerca +Comment[cs]=Umožňuje automatickou aktualizaci prohledávaných složek +Comment[da]=Muliggør automatisk opdatering af søgemapper +Comment[de]=Ermöglicht die automatische Aktualisierung von Suchordnern +Comment[el]=Επιτρέπει αυτόματες ενημερώσεις σε φακέλους αναζήτησης +Comment[en_GB]=Allows automatic updates of Search Folders +Comment[es]=Permite actualizaciones automáticas de carpetas de búsqueda +Comment[et]=Võimaldab otsingukataloogide automaatset uuendamist +Comment[eu]=Bilaketa karpeten eguneraketa automatikoak gaitzen ditu +Comment[fi]=Mahdollistaa hakukansioiden automaattisen päivittämisen +Comment[fr]=Permet une mise à jour automatique des dossiers de recherche +Comment[gl]=Permite actualizar automaticamente os cartafoles de busca. +Comment[hu]=Lehetővé teszi a Keresési mappák automatikus frissítését +Comment[ia]=Permitte actualisationes automatic de Dossieres de cerca +Comment[id]=Memperkenankan pembaruan otomatis untuk Pencarian Folder +Comment[it]=Consente aggiornamenti automatici delle cartelle di ricerca +Comment[ko]=검색 폴더 자동 업데이트 허용 +Comment[lt]=Leidžia automatinį paieškos aplankų atnaujinimą +Comment[nb]=Tillater automatisk oppdatering av søkemapper +Comment[nl]=Staat automatisch bijwerken van zoekmappen toe +Comment[nn]=Tillèt automatiske oppdateringar av søkjemapper +Comment[pl]=Umożliwia samoczynne uaktualnienia katalogów wyszukiwania +Comment[pt]=Permite as actualizações automáticas das Pastas de Pesquisa +Comment[pt_BR]=Permite as atualizações automáticas das pastas de pesquisa +Comment[ru]=Автоматическое обновление результатов поиска файлов +Comment[sk]=Umožní automatické aktualizácie priečinkov hľadania +Comment[sl]=Omogoča samodejno posodabljanje iskalnih map +Comment[sr]=Омогућава аутоматско ажурирање фасцикли претраге +Comment[sr@ijekavian]=Омогућава аутоматско ажурирање фасцикли претраге +Comment[sr@ijekavianlatin]=Omogućava automatsko ažuriranje fascikli pretrage +Comment[sr@latin]=Omogućava automatsko ažuriranje fascikli pretrage +Comment[sv]=Tillåter automatisk uppdatering av sökkataloger +Comment[tr]=Arama Klasörlerinin otomatik güncellenmelerine izin verir +Comment[uk]=Надає змогу автоматично оновлювати теки пошуку +Comment[x-test]=xxAllows automatic updates of Search Foldersxx +Comment[zh_CN]=允许自动更新搜索文件夹 +Comment[zh_TW]=允許自動更新搜尋資料夾 diff --git a/filenamesearch/kded/filenamesearchmodule.h b/filenamesearch/kded/filenamesearchmodule.h new file mode 100644 index 0000000..c6e82e9 --- /dev/null +++ b/filenamesearch/kded/filenamesearchmodule.h @@ -0,0 +1,49 @@ +/* + * This file is part of the KDE KIO-extras Project + * Copyright (C) 2016 Anthony Fieroni + * + * 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) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * 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, see . + * + */ + +#ifndef KDED_FILENAME_SEARCH_MODULE_H_ +#define KDED_FILENAME_SEARCH_MODULE_H_ + +#include +#include +#include + +class FileNameSearchModule : public KDEDModule +{ + Q_OBJECT + +public: + FileNameSearchModule(QObject *parent, const QVariantList&); + +private Q_SLOTS: + void registerSearchUrl(const QString &urlString); + void unregisterSearchUrl(const QString &urlString); + void slotFilesAdded(const QString &urlString); + void slotFilesChanged(const QStringList &files); + void slotFilesRemoved(const QStringList &files); + +private: + QList m_searchUrls; + org::kde::KDirNotify m_dirNotify; +}; + +#endif diff --git a/filenamesearch/kio_filenamesearch.cpp b/filenamesearch/kio_filenamesearch.cpp new file mode 100644 index 0000000..57d4e98 --- /dev/null +++ b/filenamesearch/kio_filenamesearch.cpp @@ -0,0 +1,206 @@ +/*************************************************************************** + * Copyright (C) 2010 by Peter Penz * + * * + * 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 * + ***************************************************************************/ + +#include "kio_filenamesearch.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +Q_LOGGING_CATEGORY(KIO_FILENAMESEARCH, "kio_filenamesearch") + +FileNameSearchProtocol::FileNameSearchProtocol(const QByteArray &pool, const QByteArray &app) + : SlaveBase("search", pool, app) +{ + QDBusInterface kded(QStringLiteral("org.kde.kded5"), QStringLiteral("/kded"), QStringLiteral("org.kde.kded5")); + kded.call(QStringLiteral("loadModule"), QStringLiteral("filenamesearchmodule")); +} + +FileNameSearchProtocol::~FileNameSearchProtocol() +{ +} + +void FileNameSearchProtocol::stat(const QUrl& url) +{ + KIO::UDSEntry uds; + uds.reserve(9); + uds.fastInsert(KIO::UDSEntry::UDS_ACCESS, 0700); + uds.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + uds.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory")); + uds.fastInsert(KIO::UDSEntry::UDS_ICON_OVERLAY_NAMES, QStringLiteral("baloo")); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_TYPE, i18n("Search Folder")); + uds.fastInsert(KIO::UDSEntry::UDS_URL, url.url()); + + QUrlQuery query(url); + QString title = query.queryItemValue(QStringLiteral("title"), QUrl::FullyDecoded); + if (!title.isEmpty()) { + uds.fastInsert(KIO::UDSEntry::UDS_NAME, title); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, title); + } + + statEntry(uds); + finished(); +} + +void FileNameSearchProtocol::listDir(const QUrl &url) +{ + const QUrlQuery urlQuery(url); + const QString search = urlQuery.queryItemValue("search"); + if (search.isEmpty()) { + finished(); + return; + } + + const QRegularExpression pattern(search, QRegularExpression::CaseInsensitiveOption); + + std::function validator; + if (urlQuery.queryItemValue("checkContent") == QStringLiteral("yes")) { + validator = [pattern](const KFileItem &item) -> bool { + return item.determineMimeType().inherits(QStringLiteral("text/plain")) && + contentContainsPattern(item.url(), pattern); + }; + } else { + validator = [pattern](const KFileItem &item) -> bool { + return item.text().contains(pattern); + }; + } + + QSet iteratedDirs; + const QUrl directory(urlQuery.queryItemValue("url")); + searchDirectory(directory, validator, iteratedDirs); + + finished(); +} + +void FileNameSearchProtocol::searchDirectory(const QUrl &directory, + const std::function &itemValidator, + QSet &iteratedDirs) +{ + if (directory.path() == QStringLiteral("/proc")) { + // Don't try to iterate the /proc directory of Linux + return; + } + + // Get all items of the directory + QScopedPointer dirLister(new KCoreDirLister); + dirLister->setDelayedMimeTypes(true); + dirLister->openUrl(directory); + + QEventLoop eventLoop; + QObject::connect(dirLister.data(), static_cast(&KCoreDirLister::canceled), + &eventLoop, &QEventLoop::quit); + QObject::connect(dirLister.data(), static_cast(&KCoreDirLister::completed), + &eventLoop, &QEventLoop::quit); + eventLoop.exec(); + + // Visualize all items that match the search pattern + QList pendingDirs; + const KFileItemList items = dirLister->items(); + for (const KFileItem &item : items) { + if (itemValidator(item)) { + KIO::UDSEntry entry = item.entry(); + entry.replace(KIO::UDSEntry::UDS_URL, item.url().url()); + listEntry(entry); + } + + if (item.isDir()) { + if (item.isLink()) { + // Assure that no endless searching is done in directories that + // have already been iterated. + const QUrl linkDest = item.url().resolved(QUrl::fromLocalFile(item.linkDest())); + if (!iteratedDirs.contains(linkDest.path())) { + pendingDirs.append(linkDest); + } + } else { + pendingDirs.append(item.url()); + } + } + } + + iteratedDirs.insert(directory.path()); + + dirLister.reset(); + + // Recursively iterate all sub directories + for (const QUrl &pendingDir : qAsConst(pendingDirs)) { + searchDirectory(pendingDir, itemValidator, iteratedDirs); + } +} + +bool FileNameSearchProtocol::contentContainsPattern(const QUrl &fileName, const QRegularExpression &pattern) +{ + auto fileContainsPattern = [&pattern](const QString &path) -> bool { + QFile file(path); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + return false; + } + + QTextStream in(&file); + while (!in.atEnd()) { + const QString line = in.readLine(); + if (line.contains(pattern)) { + return true; + } + } + + return false; + }; + + if (fileName.isLocalFile()) { + return fileContainsPattern(fileName.toLocalFile()); + } else { + QTemporaryFile tempFile; + if (tempFile.open()) { + KIO::Job* getJob = KIO::file_copy(fileName, + QUrl::fromLocalFile(tempFile.fileName()), + -1, + KIO::Overwrite | KIO::HideProgressInfo); + if (getJob->exec()) { + // The non-local file was downloaded successfully. + return fileContainsPattern(tempFile.fileName()); + } + } + } + + return false; +} + +extern "C" int Q_DECL_EXPORT kdemain(int argc, char **argv) +{ + QCoreApplication app(argc, argv); + + if (argc != 4) { + qCDebug(KIO_FILENAMESEARCH) << "Usage: kio_filenamesearch protocol domain-socket1 domain-socket2"; + return -1; + } + + FileNameSearchProtocol slave(argv[2], argv[3]); + slave.dispatchLoop(); + + return 0; +} diff --git a/filenamesearch/kio_filenamesearch.h b/filenamesearch/kio_filenamesearch.h new file mode 100644 index 0000000..90fd237 --- /dev/null +++ b/filenamesearch/kio_filenamesearch.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2010 by Peter Penz * + * * + * 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 * + ***************************************************************************/ + +#ifndef KIO_FILENAMESEARCH_H +#define KIO_FILENAMESEARCH_H + +#include + +#include + +#include + +class QUrl; +class QRegularExpression; +class KFileItem; + +Q_DECLARE_LOGGING_CATEGORY(KIO_FILENAMESEARCH) + +/** + * @brief Lists files where the filename matches do a given query. + * + * The query is defined as part of the "search" query item of the URL. + * The directory where the searching is started is defined in the "url" query + * item. If the query item "checkContent" is set to "yes", all files with + * a text MIME type will be checked for the content. + */ +class FileNameSearchProtocol : public KIO::SlaveBase +{ +public: + FileNameSearchProtocol(const QByteArray &pool, const QByteArray &app); + ~FileNameSearchProtocol() override; + + void stat(const QUrl& url) override; + void listDir(const QUrl &url) override; + +private: + void searchDirectory(const QUrl &directory, + const std::function &itemValidator, + QSet &iteratedDirs); + + /** + * @return True, if the \a pattern is part of the file \a fileName. + */ + static bool contentContainsPattern(const QUrl &fileName, const QRegularExpression &pattern); +}; + +#endif diff --git a/filter/CMakeLists.txt b/filter/CMakeLists.txt new file mode 100644 index 0000000..641c49e --- /dev/null +++ b/filter/CMakeLists.txt @@ -0,0 +1,22 @@ +set(kio_filter_SRCS filter.cc) + +ecm_qt_declare_logging_category(kio_filter_SRCS + HEADER loggingcategory.h + IDENTIFIER KIO_FILTER_DEBUG + CATEGORY_NAME kio_filter + DEFAULT_SEVERITY Debug) + +add_library(kio_filter MODULE ${kio_filter_SRCS}) +target_link_libraries(kio_filter KF5::Archive KF5::KIOCore Qt5::Network) +set_target_properties(kio_filter PROPERTIES OUTPUT_NAME "filter") + +install(TARGETS kio_filter DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) +install( FILES gzip.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) + +if(KArchive_HAVE_BZIP2) + install( FILES bzip.protocol bzip2.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) +endif() + +if(KArchive_HAVE_LZMA) + install( FILES lzma.protocol xz.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) +endif() diff --git a/filter/bzip.protocol b/filter/bzip.protocol new file mode 100644 index 0000000..97c8669 --- /dev/null +++ b/filter/bzip.protocol @@ -0,0 +1,11 @@ +[Protocol] +exec=kf5/kio/filter +protocol=bzip +archiveMimetype=application/x-bzip +determineMimetypeFromExtension=false +input=stream +output=stream +reading=true +source=false +X-DocPath=kioslave5/bzip2/index.html +Icon=package-x-generic diff --git a/filter/bzip2.protocol b/filter/bzip2.protocol new file mode 100644 index 0000000..ab27402 --- /dev/null +++ b/filter/bzip2.protocol @@ -0,0 +1,11 @@ +[Protocol] +exec=kf5/kio/filter +protocol=bzip2 +archiveMimetype=application/x-bzip2 +determineMimetypeFromExtension=false +input=stream +output=stream +reading=true +source=false +X-DocPath=kioslave5/bzip2/index.html +Icon=package-x-generic diff --git a/filter/filter.cc b/filter/filter.cc new file mode 100644 index 0000000..fb75c62 --- /dev/null +++ b/filter/filter.cc @@ -0,0 +1,179 @@ +/* +This file is part of KDE + + Copyright (C) 1999-2000 Waldo Bastian (bastian@kde.org) + Copyright 2008 David Faure + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "filter.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "loggingcategory.h" + +extern "C" { Q_DECL_EXPORT int kdemain(int argc, char **argv); } + +int kdemain( int argc, char ** argv) +{ + QCoreApplication app(argc, argv); + app.setApplicationName("kio_filter"); + + qDebug(KIO_FILTER_DEBUG) << "Starting"; + + if (argc != 4) + { + fprintf(stderr, "Usage: kio_filter protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + + FilterProtocol slave(argv[1], argv[2], argv[3]); + slave.dispatchLoop(); + + qDebug(KIO_FILTER_DEBUG) << "Done"; + return 0; +} + +FilterProtocol::FilterProtocol( const QByteArray & protocol, const QByteArray &pool, const QByteArray &app ) + : KIO::SlaveBase( protocol, pool, app ) +{ + QString mimetype = QString::fromLatin1("application/x-") + QString::fromLatin1(protocol); + filter = KCompressionDevice::filterForCompressionType(KFilterDev::compressionTypeForMimeType( mimetype )); + Q_ASSERT(filter); +} + +void FilterProtocol::get(const QUrl& url) +{ + // In the old solution, subURL would be set by setSubURL. + // KDE4: now I simply assume bzip2:/localpath/file.bz2 and set subURL to the local path. + subURL = url; + subURL.setScheme("file"); + + if (subURL.isEmpty()) { + error(KIO::ERR_NO_SOURCE_PROTOCOL, QString::fromLatin1(mProtocol)); + return; + } + + QFile localFile(url.path()); + if (!localFile.open(QIODevice::ReadOnly)) { + error(KIO::ERR_CANNOT_READ, QString::fromLatin1(mProtocol)); + return; + } + + if (!filter) { + // TODO better error message + error(KIO::ERR_INTERNAL, QString::fromLatin1(mProtocol)); + return; + } + + filter->init(QIODevice::ReadOnly); + + bool bNeedHeader = true; + bool bNeedMimetype = true; + bool bError = true; + int result; + + QByteArray inputBuffer; + inputBuffer.resize(8*1024); + QByteArray outputBuffer; + outputBuffer.resize(8*1024); // Start with a modest buffer + filter->setOutBuffer( outputBuffer.data(), outputBuffer.size() ); + while(true) + { + if (filter->inBufferEmpty()) + { + result = localFile.read(inputBuffer.data(), inputBuffer.size()); + qDebug(KIO_FILTER_DEBUG) << "requestData: got " << result; + if (result <= 0) + { + bError = true; + break; // Unexpected EOF. + } + filter->setInBuffer( inputBuffer.data(), inputBuffer.size() ); + } + if (bNeedHeader) + { + bError = !filter->readHeader(); + if (bError) + break; + bNeedHeader = false; + } + result = filter->uncompress(); + if ((filter->outBufferAvailable() == 0) || (result == KFilterBase::End)) + { + qDebug(KIO_FILTER_DEBUG) << "avail_out = " << filter->outBufferAvailable(); + if (filter->outBufferAvailable() != 0) + { + // Discard unused space :-) + outputBuffer.resize(outputBuffer.size() - filter->outBufferAvailable()); + } + if (bNeedMimetype) { + // Can we use the "base" filename? E.g. foo.txt.bz2 + const QString extension = QFileInfo(subURL.path()).suffix(); + QMimeDatabase db; + QMimeType mime; + if (extension == "gz" || extension == "bz" || extension == "bz2") { + QString baseName = subURL.path(); + baseName.truncate(baseName.length() - extension.length() - 1 /*the dot*/); + qDebug(KIO_FILTER_DEBUG) << "baseName=" << baseName; + mime = db.mimeTypeForFileNameAndData(baseName, outputBuffer); + } else { + mime = db.mimeTypeForData(outputBuffer); + } + qDebug(KIO_FILTER_DEBUG) << "Emitting mimetype " << mime.name(); + mimeType( mime.name() ); + bNeedMimetype = false; + } + data( outputBuffer ); // Send data + filter->setOutBuffer( outputBuffer.data(), outputBuffer.size() ); + if (result == KFilterBase::End) + break; // Finished. + } + if (result != KFilterBase::Ok) + { + bError = true; + break; // Error + } + } + + if (!bError) { + result = localFile.read(inputBuffer.data(), inputBuffer.size()); + qDebug(KIO_FILTER_DEBUG) << "requestData: got" << result << "(expecting 0)"; + data(QByteArray()); // Send EOF + } + + filter->terminate(); + + if (bError) { + error(KIO::ERR_CANNOT_READ, subURL.url()); + } else { + finished(); + } + subURL = QUrl(); // Clear subURL +} diff --git a/filter/filter.h b/filter/filter.h new file mode 100644 index 0000000..2085041 --- /dev/null +++ b/filter/filter.h @@ -0,0 +1,49 @@ +/* +This file is part of KDE + + Copyright (C) 2000 Waldo Bastian (bastian@kde.org) + Copyright 2008 David Faure + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef __filter_h__ +#define __filter_h__ + +#include +#include +#include + +class QUrl; +class KFilterBase; + +class FilterProtocol : /*public QObject, */ public KIO::SlaveBase +{ +// Q_OBJECT + +public: + FilterProtocol( const QByteArray & protocol, const QByteArray &pool, const QByteArray &app ); + + void get( const QUrl &url ) override; + +private: + QUrl subURL; + KFilterBase * filter; +}; + +#endif diff --git a/filter/gzip.protocol b/filter/gzip.protocol new file mode 100644 index 0000000..9a0d289 --- /dev/null +++ b/filter/gzip.protocol @@ -0,0 +1,11 @@ +[Protocol] +exec=kf5/kio/filter +protocol=gzip +archiveMimetype=application/gzip +determineMimetypeFromExtension=false +input=stream +output=stream +reading=true +source=false +X-DocPath=kioslave5/gzip/index.html +Icon=package-x-generic diff --git a/filter/lzma.protocol b/filter/lzma.protocol new file mode 100644 index 0000000..b6c59ae --- /dev/null +++ b/filter/lzma.protocol @@ -0,0 +1,11 @@ +[Protocol] +exec=kf5/kio/filter +protocol=lzma +archiveMimetype=application/x-lzma +determineMimetypeFromExtension=true +input=stream +output=stream +reading=true +source=false +X-DocPath=kioslave5/xz/index.html +Icon=package-x-generic diff --git a/filter/xz.protocol b/filter/xz.protocol new file mode 100644 index 0000000..9a631c2 --- /dev/null +++ b/filter/xz.protocol @@ -0,0 +1,11 @@ +[Protocol] +exec=kf5/kio/filter +protocol=xz +archiveMimetype=application/x-xz +determineMimetypeFromExtension=false +input=stream +output=stream +reading=true +source=false +X-DocPath=kioslave5/xz/index.html +Icon=package-x-generic diff --git a/fish/CMakeLists.txt b/fish/CMakeLists.txt new file mode 100644 index 0000000..5af7285 --- /dev/null +++ b/fish/CMakeLists.txt @@ -0,0 +1,71 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_fish\") + +include(CheckIncludeFiles) +include(CheckFunctionExists) + +check_include_files(termios.h HAVE_TERMIOS_H) +check_include_files(util.h HAVE_UTIL_H) +check_include_files(sys/ioctl.h HAVE_SYS_IOCTL_H) +check_include_files(pty.h HAVE_PTY_H) +check_include_files("sys/types.h;libutil.h" HAVE_LIBUTIL_H) +check_function_exists(getpt HAVE_GETPT) +check_function_exists(grantpt HAVE_GRANTPT) +include(CheckLibraryExists) +check_library_exists(util openpty "" HAVE_OPENPTY) +check_library_exists(util isastream "" HAVE_ISASTREAM) + +find_library(UTIL_LIBRARIES util) +mark_as_advanced(UTIL_LIBRARIES) + +configure_file(config-fish.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-fish.h) + +########### next target ############### +# on Linux there is md5sum, on FreeBSD there is md5 +find_program(MD5SUM_EXECUTABLE NAMES md5sum md5 ) + +if (MD5SUM_EXECUTABLE) + + if ("${MD5SUM_EXECUTABLE}" MATCHES "md5sum") + set(CUT_ARG "-f 1") # for md5sum the sum is in the 1st column + else () + set(CUT_ARG "-f 4") # for md5 the sum is in the 4th column + endif () + + if (WIN32) + set(FISH_GENERATOR "generate_fishcode.bat") + else () + set(FISH_GENERATOR "generate_fishcode.sh") + endif () + set(fishcode_HDR "${CMAKE_CURRENT_BINARY_DIR}/fishcode.h") + add_custom_command(OUTPUT ${fishcode_HDR} + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${FISH_GENERATOR} ARGS ${CMAKE_CURRENT_SOURCE_DIR}/fish.pl ${MD5SUM_EXECUTABLE} ${fishcode_HDR} "${CUT_ARG}" + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/fish.pl + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) + set_source_files_properties(${fishcode_HDR} PROPERTIES SKIP_AUTOMOC TRUE) + + set(kio_fish_PART_SRCS fish.cpp ${fishcode_HDR}) + + ecm_qt_declare_logging_category(kio_fish_PART_SRCS + HEADER loggingcategory.h + IDENTIFIER KIO_FISH_DEBUG + CATEGORY_NAME kio_fish + DEFAULT_SEVERITY Info) + + add_library(kio_fish MODULE ${kio_fish_PART_SRCS}) + + target_link_libraries(kio_fish KF5::KIOCore KF5::WidgetsAddons KF5::I18n Qt5::Network) + + set_target_properties(kio_fish PROPERTIES OUTPUT_NAME "fish") + + if (UTIL_LIBRARIES) + target_link_libraries(kio_fish ${UTIL_LIBRARIES}) + endif () + + install(TARGETS kio_fish DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio ) + + + ########### install files ############### + + install( FILES fish.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) + +endif () diff --git a/fish/FAQ b/fish/FAQ new file mode 100644 index 0000000..dce0aef --- /dev/null +++ b/fish/FAQ @@ -0,0 +1,37 @@ +Freqeuently Asked Questions, last updated for kio_fish 1.1 + +Q: Typing fish:/some.host.com does not work +A: It is fish://some.host.com (double slash) + +Q: How can I use a different port? +A: Use regular URL syntax: fish://some.host.com:2222 + +Q: Something isn't working. I get strange/no displays +A: Could be a bug, could be a problem with the remote + tools. Try having perl somewhere in the PATH on the + remote machine, that should work reliably. Shell- + only mode is prone to different tool's opinion about + parameters and what they mean. Shell-only mode is + thouroughly tested only on GNU tools, and has + superficial testing on BSD and Digital Unix. Solaris + seems to have problems. Any reports for shell mode on + non-GNU machines welcome (BTW, if you see a file + .fishsrv.pl in your remote home directory, fish did + use perl mode) + +Q: The connection stays open. How do I disconnect? +A: Just wait. The system default idle timeout is used. + (about a minute or so) + +Q: Why are there no icons? +A: With this release, you should have icons almost always, + but best results are obtained if you install a recent + version of the 'file' utility that supports the '-i' + option. + +Q: How do I specify which program to use for SSH? +A: Not at all, sorry. After evaluating other programs (rsh, + rlogin, telnet) I came to the conclusion it was way too + complex to support these, as only ssh supports both, + password authentication and automatic execution. + diff --git a/fish/Messages.sh b/fish/Messages.sh new file mode 100644 index 0000000..24307b7 --- /dev/null +++ b/fish/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kio5_fish.pot diff --git a/fish/README b/fish/README new file mode 100644 index 0000000..43d365c --- /dev/null +++ b/fish/README @@ -0,0 +1,252 @@ +Overview of kio_fish +==================== + + FISH is a protocol to get filesystem access without special server + software, only using a remote shell. (Hence the name: FIles transferred + over SHell protocol). + It was first devised by Pavel Machek and implemented + as a Midnight Commander vfs module in 1998. + + This is a complete client implementation using his original version + 0.0.2 protocol, extending it with 2 commands (which are only optional - + should a real FISH server exist on server side that doesn't understand + them, this ioslave still works, only slower). Moreover, this client does + complete shell metacharacter quoting on all arguments, a fact that is + neccessary but missing from the specs. + Extensions used are: append (APPEND command), copy (COPY command), + lscount (LIST first prints number of files to be listed), lslinks (LIST + shows symlink info instead of info about link targets), lsmime (LIST + determines the MIME type on the server side) + Password and host key queries are handled via dialog boxes. + The goal of this client is to make a remote directory look and feel exactly + like a local directory, with all comfort, only slower. + + NOTE: From version 1.1.3 on, compression is no longer turned on auto- + matically. You have to specify it via ~/.ssh/config or wherever + your local ssh client reads its settings. The same goes for all other + connection parameters. OpenSSH for example has a powerful configuration + file syntax which lets you configure access differently for each host, + something I do not intend to duplicate. Read the ssh_config(5) man page + for details. If someone knows the docs to read for commercial ssh please + tell me so I can include that here as well. + + Included below is the original posting from the mc mailing list archives. + + If perl is installed on the remote machine and in the default PATH, it will + be used to transfer a custom server script which is much faster than + shell-only mode and more predictable as well. The script is stored in a + file called .fishsrv.pl in the working directory directly after login and + will be reused on subsequent connections. + + 2001/10/07 Jörg Walter + + + +From: Pavel Machek +Subject: New virtual filesystem - fish +Date: Tue, 15 Sep 1998 22:30:07 +0200 + +Hi! + +New virtual filesystem has been created, which allows you to access +files on remote computer over rsh/ssh connection, with _no_ server +needed on the other side. To use it from mc or any program using +libvfs.so, do + +cd /#sh:user@host.to.connect.to/ + +Note that password authentication will not work, so you must be +authenticated using [rs]hosts or RSA key. + +For protocol, see mc/vfs/README.fish. If someone wants to write +server, it would be good idea, since it works without server but +performance is not optimal. + + Pavel + +PS: Protocol looks like this. If you have any comments, it is time to +speak. + + + FIles transferred over SHell protocol (V 0.0.2) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This protocol was designed for transferring files over secureshell +(ssh) connection. It can be as well used for transfers over rsh, and +there may be other uses. + +Client sends requests of following form: + +#FISH_COMMAND +equivalent shell commands, +which may be multiline + +Only fish commands are defined here, shell equivalents are for your +information only and will probably vary from implementation to +implementation. Fish commands always have priority: server is +expected to execute fish command if it understands it. If it does not, +however, it can try the luck and execute shell command. + +Server's reply is multiline, but alwyas ends with + +### 000 + +line. ### is prefix to mark this line, 000 is return code. Return +codes are superset to those used in ftp. + +There are few new exit codes defined: + +000 don't know; if there were no previous lines, this marks COMPLETE +success, if they were, it marks failure. + +001 don't know; if there were no previous lines, this marks +PRELIMinary success, if they were, it marks failure + + Connecting + ~~~~~~~~~~ +Client uses "echo FISH:;/bin/sh" as command executed on remote +machine. This should make it possible for server to distinguish FISH +connections from normal rsh/ssh. + + Commands + ~~~~~~~~ +#FISH +echo; start_fish_server; echo '### 200' + +This command is sent at the begining. It marks that client wishes to +talk via FISH protocol. #VER command must follow. If server +understands FISH protocol, it has option to put FISH server somewhere +on system path and name it start_fish_server. + +#VER 0.0.2 <...> +echo '### 000' + +This command is the second one. It sends client version and extensions +to the server. Server should reply with protocol version to be used, +and list of extensions accepted. + +VER 0.0.0 +### 200 + +#PWD +pwd; echo '### 200' + +Server should reply with current directory (in form /abc/def/ghi) +followed by line indicating success. + +#LIST /directory +ls -lLa $1 | grep '^[^cbt]' | ( while read p x u g s m d y n; do echo "P$p $u.$g +S$s +d$m $d $y +:$n +"; done ) +ls -lLa $1 | grep '^[cb]' | ( while read p x u g a i m d y n; do echo "P$p $u.$g +E$a$i +dD$m $d $y +:$n +"; done ) +echo '### 200' + +This allows client to list directory or get status information about +single file. Output is in following form (any line except : +may be ommited): + +P . +S +d<3-letters month name> +D [.1234] +E, +: +L + + +Unix permissions are of form X--------- where X is type of +file. Currently, '-' means regular file, 'd' means directory, 'c', 'b' +means character and block device, 'l' means symbolic link, 'p' means +FIFO and 's' means socket. + +'d' has three fields: month (one of strings Jan Feb Mar Apr May Jun +Jul Aug Sep Oct Nov Dec), day of month, and third is either single +number indicating year, or HH:MM field (assume current year in such +case). As you've probably noticed, this is pretty broken; it is for +compatibility with ls listing. + +#RETR /some/name +ls -l /some/name | ( read a b c d x e; echo $x ); echo '### 100'; cat /some/name; echo '### 200' + +Server sends line with filesize on it, followed by line with ### 100 +indicating partial success, then it sends binary data (exactly +filesize bytes) and follows them with (with no preceeding newline) ### +200. + +Note that there's no way to abort running RETR command - except +closing the connection. + +#STOR /file/name +> /file/name; echo '### 001'; ( dd bs=4096 count=; dd bs= count=1 ) 2>/dev/null | ( cat > %s; cat > /dev/null ); echo '### 200' + +This command is for storing /file/name, which is exactly size bytes +big. You probably think I went crazy. Well, I did not: that strange +cat > /dev/null has purpose to discard any extra data which was not +written to disk (due to for example out of space condition). + +[Why? Imagine uploading file with "rm -rf /" line in it.] + +#CWD /somewhere +cd /somewhere; echo '### 000' + +It is specified here, but I'm not sure how wise idea is to use this +one: it breaks stateless-ness of the protocol. + +Following commands should be rather self-explanatory: + +#CHMOD 1234 file +chmod 1234 file; echo '### 000' + +#DELE /some/path +rm -f /some/path; echo '### 000' + +#MKD /some/path +mkdir /some/path; echo '### 000' + +#RMD /some/path +rmdir /some/path; echo '### 000' + +#RENAME /path/a /path/b +mv /path/a /path/b; echo '### 000' + +#LINK /path/a /path/b +ln /path/a /path/b; echo '### 000' + +#SYMLINK /path/a /path/b +ln -s /path/a /path/b; echo '### 000' + +#CHOWN user /file/name +chown user /file/name; echo '### 000' + +#CHGRP group /file/name +chgrp group /file/name; echo '### 000' + +#READ /path/and/filename +cat /path/and/filename | ( dd bs=4096 count= > /dev/null; +dd bs= count=1 > /dev/null; +dd bs=4096 count=; +dd bs= count=1; ) + +Returns ### 200 on successfull exit, ### 291 on successfull exit when +reading ended at eof, ### 292 on successfull exit when reading did not +end at eof. + +#WRITE /path/and/filename + +Hmm, shall we define these ones if we know our client is not going to +use them? + + +That's all, folks! + pavel@ucw.cz + + +-- +I'm really pavel@atrey.karlin.mff.cuni.cz. Pavel +Look at http://atrey.karlin.mff.cuni.cz/~pavel/ ;-). diff --git a/fish/config-fish.h.cmake b/fish/config-fish.h.cmake new file mode 100644 index 0000000..b404fef --- /dev/null +++ b/fish/config-fish.h.cmake @@ -0,0 +1,27 @@ +/* Define to 1 if you have the `isastream' function. */ +#define HAVE_ISASTREAM 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_TERMIOS_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UTIL_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_PTY_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LIBUTIL_H 1 + +/* Define to 1 if you have the `getpt' function. */ +#cmakedefine HAVE_GETPT 1 + +/* Define to 1 if you have the `grantpt' function. */ +#cmakedefine HAVE_GRANTPT 1 + +/* Defines whether we can use the openpty() function */ +#cmakedefine HAVE_OPENPTY 1 + diff --git a/fish/fish.cpp b/fish/fish.cpp new file mode 100644 index 0000000..a1e117e --- /dev/null +++ b/fish/fish.cpp @@ -0,0 +1,1711 @@ +/*************************************************************************** + fish.cpp - a FISH kioslave + ------------------- + begin : Thu Oct 4 17:09:14 CEST 2001 + copyright : (C) 2001-2003 by Jörg Walter + email : jwalt-kde@garni.ch + ***************************************************************************/ + +/*************************************************************************** + * * + * 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, version 2 of the License * + * * + ***************************************************************************/ + +/* + This code contains fragments and ideas from the ftp kioslave + done by David Faure . + + Structure is a bit complicated, since I made the mistake to use + KProcess... now there is a lightweight homebrew async IO system + inside, but if signals/slots become available for ioslaves, switching + back to KProcess should be easy. +*/ + +#include "fish.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#ifdef HAVE_PTY_H +#include +#endif + +#ifdef HAVE_TERMIOS_H +#include +#endif + +#ifdef HAVE_SYS_IOCTL_H +#include +#endif + +#ifdef HAVE_LIBUTIL_H +#include +#endif + +#ifdef HAVE_UTIL_H +#include +#endif + +#ifndef Q_OS_WIN +#include +#endif + +#include +#include +#include + +#include "fishcode.h" +#include "loggingcategory.h" + +#ifndef NDEBUG +#define myDebug(x) qCDebug(KIO_FISH_DEBUG) << __LINE__ << ": " x +#define connected() do{myDebug( << "_______ emitting connected()"); connected();}while(0) +#define dataReq() do{myDebug( << "_______ emitting dataReq()"); dataReq();}while(0) +#define needSubURLData() do{myDebug( << "_______ emitting needSubURLData()"); needSubURLData();}while(0) +#define slaveStatus(x,y) do{myDebug( << "_______ emitting slaveStatus(" << x << ", " << y << ")"); slaveStatus(x,y);}while(0) +#define statEntry(x) do{myDebug( << "_______ emitting statEntry("<encode(x).data()) + +using namespace KIO; +extern "C" { + +int Q_DECL_EXPORT kdemain( int argc, char **argv ) +{ + QCoreApplication app(argc, argv); + app.setApplicationName("kio_fish"); + + myDebug( << "*** Starting fish "); + if (argc != 4) { + myDebug( << "Usage: kio_fish protocol domain-socket1 domain-socket2"); + exit(-1); + } + + setenv("TZ", "UTC", true); + + fishProtocol slave(argv[2], argv[3]); + slave.dispatchLoop(); + + myDebug( << "*** fish Done"); + return 0; +} + +} + +const struct fishProtocol::fish_info fishProtocol::fishInfo[] = { + { ("FISH"), 0, + ("echo; /bin/sh -c start_fish_server > /dev/null 2>/dev/null; perl .fishsrv.pl " CHECKSUM " 2>/dev/null; perl -e '$|=1; print \"### 100 transfer fish server\\n\"; while() { last if /^__END__/; $code.=$_; } exit(eval($code));' 2>/dev/null;"), + 1 }, + { ("VER 0.0.3 copy append lscount lslinks lsmime exec stat"), 0, + ("echo 'VER 0.0.3 copy append lscount lslinks lsmime exec stat'"), + 1 }, + { ("PWD"), 0, + ("pwd"), + 1 }, + { ("LIST"), 1, + ("echo `ls -Lla %1 2> /dev/null | grep '^[-dsplcb]' | wc -l`;" + "echo '### 100';" + "ls -Lla %1 2>/dev/null | grep '^[-dspl]' | ( while read -r p x u g s m d y n; do file -b -i $n 2>/dev/null | sed -e '\\,^[^/]*$,d;s/^/M/;s,/.*[ \t],/,'; FILE=%1; if [ -e %1\"/$n\" ]; then FILE=%1\"/$n\"; fi; if [ -L \"$FILE\" ]; then echo \":$n\"; ls -lad \"$FILE\" | sed -e 's/.* -> /L/'; else echo \":$n\" | sed -e 's/ -> /\\\nL/'; fi; echo \"P$p $u.$g\nS$s\nd$m $d $y\n\"; done; );" + "ls -Lla %1 2>/dev/null | grep '^[cb]' | ( while read -r p x u g a i m d y n; do echo \"P$p $u.$g\nE$a$i\nd$m $d $y\n:$n\n\"; done; )"), + 0 }, + { ("STAT"), 1, + ("echo `ls -dLla %1 2> /dev/null | grep '^[-dsplcb]' | wc -l`;" + "echo '### 100';" + "ls -dLla %1 2>/dev/null | grep '^[-dspl]' | ( while read -r p x u g s m d y n; do file -b -i $n 2>/dev/null | sed -e '\\,^[^/]*$,d;s/^/M/;s,/.*[ \t],/,'; FILE=%1; if [ -e %1\"/$n\" ]; then FILE=%1\"/$n\"; fi; if [ -L \"$FILE\" ]; then echo \":$n\"; ls -lad \"$FILE\" | sed -e 's/.* -> /L/'; else echo \":$n\" | sed -e 's/ -> /\\\nL/'; fi; echo \"P$p $u.$g\nS$s\nd$m $d $y\n\"; done; );" + "ls -dLla %1 2>/dev/null | grep '^[cb]' | ( while read -r p x u g a i m d y n; do echo \"P$p $u.$g\nE$a$i\nd$m $d $y\n:$n\n\"; done; )"), + 0 }, + { ("RETR"), 1, + ("ls -l %1 2>&1 | ( read -r a b c d x e; echo $x ) 2>&1; echo '### 001'; cat %1"), + 1 }, + { ("STOR"), 2, + ("> %2; echo '### 001'; ( [ \"`expr %1 / 4096`\" -gt 0 ] && dd bs=4096 count=`expr %1 / 4096` 2>/dev/null;" + "[ \"`expr %1 % 4096`\" -gt 0 ] && dd bs=`expr %1 % 4096` count=1 2>/dev/null; ) | ( cat > %2 || echo Error $?; cat > /dev/null )"), + 0 }, + { ("CWD"), 1, + ("cd %1"), + 0 }, + { ("CHMOD"), 2, + ("chmod %1 %2"), + 0 }, + { ("DELE"), 1, + ("rm -f %1"), + 0 }, + { ("MKD"), 1, + ("mkdir %1"), + 0 }, + { ("RMD"), 1, + ("rmdir %1"), + 0 }, + { ("RENAME"), 2, + ("mv -f %1 %2"), + 0 }, + { ("LINK"), 2, + ("ln -f %1 %2"), + 0 }, + { ("SYMLINK"), 2, + ("ln -sf %1 %2"), + 0 }, + { ("CHOWN"), 2, + ("chown %1 %2"), + 0 }, + { ("CHGRP"), 2, + ("chgrp %1 %2"), + 0 }, + { ("READ"), 3, + ("echo '### 100';cat %3 /dev/zero | ( [ \"`expr %1 / 4096`\" -gt 0 ] && dd bs=4096 count=`expr %1 / 4096` >/dev/null;" + "[ \"`expr %1 % 4096`\" -gt 0 ] && dd bs=`expr %1 % 4096` count=1 >/dev/null;" + "dd bs=%2 count=1; ) 2>/dev/null;"), + 0 }, + // Yes, this is "ibs=1", since dd "count" is input blocks. + // On network connections, read() may not fill the buffer + // completely (no more data immediately available), but dd + // does ignore that fact by design. Sorry, writes are slow. + // OTOH, WRITE is not used by the current ioslave methods, + // we use APPEND. + { ("WRITE"), 3, + (">> %3; echo '### 001'; ( [ %2 -gt 0 ] && dd ibs=1 obs=%2 count=%2 2>/dev/null ) | " + "( dd ibs=32768 obs=%1 seek=1 of=%3 2>/dev/null || echo Error $?; cat >/dev/null; )"), + 0 }, + { ("COPY"), 2, + ("if [ -L %1 ]; then if cp -pdf %1 %2 2>/dev/null; then :; else LINK=\"`readlink %1`\"; ln -sf $LINK %2; fi; else cp -pf %1 %2; fi"), + 0 }, + { ("APPEND"), 2, + (">> %2; echo '### 001'; ( [ %1 -gt 0 ] && dd ibs=1 obs=%1 count=%1 2> /dev/null; ) | ( cat >> %2 || echo Error $?; cat >/dev/null; )"), + 0 }, + { ("EXEC"), 2, + ("UMASK=`umask`; umask 077; touch %2; umask $UMASK; eval %1 < /dev/null > %2 2>&1; echo \"###RESULT: $?\" >> %2"), + 0 } +}; + +fishProtocol::fishProtocol(const QByteArray &pool_socket, const QByteArray &app_socket) + : SlaveBase("fish", pool_socket, app_socket), mimeBuffer(1024, '\0'), + mimeTypeSent(false) +{ + myDebug( << "fishProtocol::fishProtocol()"); + if (sshPath == nullptr) { + // disabled: currently not needed. Didn't work reliably. + // isOpenSSH = !system("ssh -V 2>&1 | grep OpenSSH > /dev/null"); +#ifdef Q_OS_WIN + sshPath = strdup(QFile::encodeName(QStandardPaths::findExecutable("plink"))); +#else + sshPath = strdup(QFile::encodeName(QStandardPaths::findExecutable("ssh"))); +#endif + } + if (suPath == nullptr) { + suPath = strdup(QFile::encodeName(QStandardPaths::findExecutable("su"))); + } + childPid = 0; + connectionPort = 0; + isLoggedIn = false; + writeReady = true; + isRunning = false; + firstLogin = true; + errorCount = 0; + rawRead = 0; + rawWrite = -1; + recvLen = -1; + sendLen = -1; + connectionAuth.keepPassword = true; + connectionAuth.url.setScheme("fish"); + outBufPos = -1; + outBuf = nullptr; + outBufLen = 0; + + udsType = 0; + + hasAppend = false; + + isStat = false; // FIXME: just a workaround for konq deficiencies + redirectUser = ""; // FIXME: just a workaround for konq deficiencies + redirectPass = ""; // FIXME: just a workaround for konq deficiencies + fishCodeLen = strlen(fishCode); +} +/* ---------------------------------------------------------------------------------- */ + + +fishProtocol::~fishProtocol() +{ + myDebug( << "fishProtocol::~fishProtocol()"); + shutdownConnection(true); +} + +/* --------------------------------------------------------------------------- */ + +/** +Connects to a server and logs us in via SSH. Then starts FISH protocol. +*/ +void fishProtocol::openConnection() { + if (childPid) return; + + if (connectionHost.isEmpty()) + { + error( KIO::ERR_UNKNOWN_HOST, QString() ); + return; + } + + infoMessage(i18n("Connecting...")); + + myDebug( << "connecting to: " << connectionUser << "@" << connectionHost << ":" << connectionPort); + sendCommand(FISH_FISH); + sendCommand(FISH_VER); + if (connectionStart()) { + error(ERR_CANNOT_CONNECT,connectionHost); + shutdownConnection(); + return; + }; + myDebug( << "subprocess is running"); +} + +// XXX Use KPty! XXX +#ifndef Q_OS_WIN +static int open_pty_pair(int fd[2]) +{ +#if defined(HAVE_TERMIOS_H) && defined(HAVE_GRANTPT) && !defined(HAVE_OPENPTY) +/** with kind regards to The GNU C Library +Reference Manual for Version 2.2.x of the GNU C Library */ + int master, slave; + char *name; + struct ::termios ti; + memset(&ti,0,sizeof(ti)); + + ti.c_cflag = CLOCAL|CREAD|CS8; + ti.c_cc[VMIN] = 1; + +#ifdef HAVE_GETPT + master = getpt(); +#else + master = open("/dev/ptmx", O_RDWR); +#endif + if (master < 0) return 0; + + if (grantpt(master) < 0 || unlockpt(master) < 0) goto close_master; + + name = ptsname(master); + if (name == NULL) goto close_master; + + slave = open(name, O_RDWR); + if (slave == -1) goto close_master; + +#if (defined(HAVE_ISASTREAM) || defined(isastream)) && defined(I_PUSH) + if (isastream(slave) && + (ioctl(slave, I_PUSH, "ptem") < 0 || + ioctl(slave, I_PUSH, "ldterm") < 0)) + goto close_slave; +#endif + + tcsetattr(slave, TCSANOW, &ti); + fd[0] = master; + fd[1] = slave; + return 0; + +#if (defined(HAVE_ISASTREAM) || defined(isastream)) && defined(I_PUSH) +close_slave: +#endif + close(slave); + +close_master: + close(master); + return -1; +#else +#ifdef HAVE_OPENPTY + struct ::termios ti; + memset(&ti,0,sizeof(ti)); + + ti.c_cflag = CLOCAL|CREAD|CS8; + ti.c_cc[VMIN] = 1; + + return openpty(fd,fd+1,nullptr,&ti,nullptr); +#else +#ifdef __GNUC__ +#warning "No tty support available. Password dialog won't work." +#endif + return socketpair(PF_UNIX,SOCK_STREAM,0,fd); +#endif +#endif +} +#endif +/** +creates the subprocess +*/ +bool fishProtocol::connectionStart() { + int fd[2]; + int rc, flags; + thisFn.clear(); + +#ifndef Q_OS_WIN + rc = open_pty_pair(fd); + if (rc == -1) { + myDebug( << "socketpair failed, error: " << strerror(errno)); + return true; + } +#endif + + myDebug( << "Exec: " << (local ? suPath : sshPath) << " Port: " << connectionPort << " User: " << connectionUser); +#ifdef Q_OS_WIN + childPid = new KProcess(); + childPid->setOutputChannelMode(KProcess::MergedChannels); + QStringList common_args; + common_args << "-l" << connectionUser.toLatin1().constData() << "-x" << connectionHost.toLatin1().constData(); + common_args << "echo;echo FISH:;exec /bin/sh -c \"if env true 2>/dev/null; then env PS1= PS2= TZ=UTC LANG=C LC_ALL=C LOCALE=C /bin/sh; else PS1= PS2= TZ=UTC LANG=C LC_ALL=C LOCALE=C /bin/sh; fi\""; + + childPid->setProgram(sshPath, common_args); + childPid->start(); + + QByteArray buf; + int offset = 0; + while (!isLoggedIn) { + if (outBuf.size()) { + rc = childPid->write(outBuf); + outBuf.clear(); + } + else rc = 0; + + if(rc < 0) { + myDebug( << "write failed, rc: " << rc); + outBufPos = -1; + //return true; + } + + if (childPid->waitForReadyRead(1000)) { + QByteArray buf2 = childPid->readAll(); + buf += buf2; + + int noff = establishConnection(buf); + if (noff < 0) return false; + if (noff > 0) buf = buf.mid(/*offset+*/noff); +// offset = noff; + } + } +#else + childPid = fork(); + if (childPid == -1) { + myDebug( << "fork failed, error: " << strerror(errno)); + ::close(fd[0]); + ::close(fd[1]); + childPid = 0; + return true; + } + if (childPid == 0) { + // taken from konsole, see TEPty.C for details + // note: if we're running on socket pairs, + // this will fail, but thats what we expect + + for (int sig = 1; sig < NSIG; sig++) signal(sig,SIG_DFL); + + struct rlimit rlp; + getrlimit(RLIMIT_NOFILE, &rlp); + for (int i = 0; i < (int)rlp.rlim_cur; i++) + if (i != fd[1]) ::close(i); + + dup2(fd[1],0); + dup2(fd[1],1); + dup2(fd[1],2); + if (fd[1] > 2) ::close(fd[1]); + + setsid(); + +#if defined(TIOCSCTTY) + ioctl(0, TIOCSCTTY, 0); +#endif + + int pgrp = getpid(); +#if defined( _AIX) || defined( __hpux) + tcsetpgrp(0, pgrp); +#else + ioctl(0, TIOCSPGRP, (char *)&pgrp); +#endif + + const char *dev = ttyname(0); + setpgid(0,0); + if (dev) ::close(::open(dev, O_WRONLY, 0)); + setpgid(0,0); + + if (local) { + execl(suPath, "su", "-", connectionUser.toLatin1().constData(), "-c", "cd ~;echo FISH:;exec /bin/sh -c \"if env true 2>/dev/null; then env PS1= PS2= TZ=UTC LANG=C LC_ALL=C LOCALE=C /bin/sh; else PS1= PS2= TZ=UTC LANG=C LC_ALL=C LOCALE=C /bin/sh; fi\"", (void *)nullptr); + } else { + #define common_args "-l", connectionUser.toLatin1().constData(), "-x", "-e", "none", \ + "-q", connectionHost.toLatin1().constData(), \ + "echo FISH:;exec /bin/sh -c \"if env true 2>/dev/null; then env PS1= PS2= TZ=UTC LANG=C LC_ALL=C LOCALE=C /bin/sh; else PS1= PS2= TZ=UTC LANG=C LC_ALL=C LOCALE=C /bin/sh; fi\"", (void *)nullptr + // disabled: leave compression up to the client. + // (isOpenSSH?"-C":"+C"), + + if (connectionPort) + execl(sshPath, "ssh", "-p", qPrintable(QString::number(connectionPort)), common_args); + else + execl(sshPath, "ssh", common_args); + #undef common_args + } + myDebug( << "could not exec! " << strerror(errno)); + ::exit(-1); + } + ::close(fd[1]); + rc = fcntl(fd[0],F_GETFL,&flags); + rc = fcntl(fd[0],F_SETFL,flags|O_NONBLOCK); + childFd = fd[0]; + + fd_set rfds, wfds; + FD_ZERO(&rfds); + FD_ZERO(&wfds); + char buf[32768]; + int offset = 0; + while (!isLoggedIn) { + FD_SET(childFd,&rfds); + FD_ZERO(&wfds); + if (outBufPos >= 0) FD_SET(childFd,&wfds); + struct timeval timeout; + timeout.tv_sec = 0; + timeout.tv_usec = 1000; + rc = select(childFd+1, &rfds, &wfds, nullptr, &timeout); + if (rc < 0) { + if (errno == EINTR) + continue; + myDebug( << "select failed, rc: " << rc << ", error: " << strerror(errno)); + return true; + } + if (FD_ISSET(childFd, &wfds) && outBufPos >= 0) { + if (outBuf) + rc = ::write(childFd, outBuf + outBufPos, outBufLen - outBufPos); + else + rc = 0; + + if (rc >= 0) + outBufPos += rc; + else { + if (errno == EINTR) + continue; + myDebug( << "write failed, rc: " << rc << ", error: " << strerror(errno)); + outBufPos = -1; + //return true; + } + if (outBufPos >= outBufLen) { + outBufPos = -1; + outBuf = nullptr; + outBufLen = 0; + } + } else if (FD_ISSET(childFd,&rfds)) { + rc = ::read(childFd, buf + offset, sizeof(buf) - offset); + if (rc > 0) { + int noff = establishConnection(buf, rc + offset); + if (noff < 0) + return false; + if (noff > 0) + memmove(buf, buf + offset + rc - noff, noff); + offset = noff; + } else { + if (errno == EINTR) + continue; + myDebug( << "read failed, rc: " << rc << ", error: " << strerror(errno)); + return true; + } + } + } +#endif + return false; +} + +/** +writes one chunk of data to stdin of child process +*/ +#ifndef Q_OS_WIN +void fishProtocol::writeChild(const char *buf, KIO::fileoffset_t len) { + if (outBufPos >= 0 && outBuf) { +#else +void fishProtocol::writeChild(const QByteArray &buf, KIO::fileoffset_t len) { + if (outBufPos >= 0 && outBuf.size()) { +#endif + return; + } + outBuf = buf; + outBufPos = 0; + outBufLen = len; +} + +/** +manages initial communication setup including password queries +*/ +#ifndef Q_OS_WIN +int fishProtocol::establishConnection(char *buffer, KIO::fileoffset_t len) { + QString buf = QString::fromLatin1(buffer,len); +#else +int fishProtocol::establishConnection(const QByteArray &buffer) { + QString buf = buffer; +#endif + int pos=0; + // Strip trailing whitespace + while (buf.length() && (buf[buf.length()-1] == ' ')) + buf.truncate(buf.length()-1); + + myDebug( << "establishing: got " << buf); + while (childPid && ((pos = buf.indexOf('\n')) >= 0 || + buf.endsWith(':') || buf.endsWith('?'))) { + pos++; + QString str = buf.left(pos); + buf = buf.mid(pos); + if (str == "\n") + continue; + if (str == "FISH:\n") { + thisFn.clear(); + infoMessage(i18n("Initiating protocol...")); + if (!connectionAuth.password.isEmpty()) { + connectionAuth.password = connectionAuth.password.left(connectionAuth.password.length()-1); + if (connectionAuth.keepPassword) { + cacheAuthentication(connectionAuth); + } + } + isLoggedIn = true; + return 0; + } else if (!str.isEmpty()) { + thisFn += str; + } else if (buf.endsWith(':')) { + if (!redirectUser.isEmpty() && connectionUser != redirectUser) { + QUrl dest = url; + dest.setUserName(redirectUser); + dest.setPassword(redirectPass); + redirection(dest); + commandList.clear(); + commandCodes.clear(); + finished(); + redirectUser = ""; + redirectPass = ""; + return -1; + } else if (!connectionPassword.isEmpty()) { + myDebug( << "sending cpass"); + connectionAuth.password = connectionPassword+ENDLINE; + connectionPassword.clear(); + // su does not like receiving a password directly after sending + // the password prompt so we wait a while. + if (local) + sleep(1); + writeChild(connectionAuth.password.toLatin1(),connectionAuth.password.length()); + } else { + myDebug( << "sending mpass"); + connectionAuth.prompt = thisFn+buf; + if (local) + connectionAuth.caption = i18n("Local Login"); + else + connectionAuth.caption = i18n("SSH Authentication"); + if ((!firstLogin || !checkCachedAuthentication(connectionAuth))) { + connectionAuth.password.clear(); // don't prefill + int errorCode = openPasswordDialogV2(connectionAuth); + if (errorCode != 0) { + error(errorCode, connectionHost); + shutdownConnection(); + return -1; + } + } + firstLogin = false; + connectionAuth.password += ENDLINE; + if (connectionAuth.username != connectionUser) { + QUrl dest = url; + dest.setUserName(connectionAuth.username); + dest.setPassword(connectionAuth.password); + redirection(dest); + if (isStat) { // FIXME: just a workaround for konq deficiencies + redirectUser = connectionAuth.username; + redirectPass = connectionAuth.password; + } + commandList.clear(); + commandCodes.clear(); + finished(); + return -1; + } + myDebug( << "sending pass"); + if (local) + sleep(1); + writeChild(connectionAuth.password.toLatin1(),connectionAuth.password.length()); + } + thisFn.clear(); +#ifdef Q_OS_WIN + return buf.length(); + } +#else + return 0; + } else if (buf.endsWith('?')) { + int rc = messageBox(QuestionYesNo,thisFn+buf); + if (rc == KMessageBox::Yes) { + writeChild("yes\n",4); + } else { + writeChild("no\n",3); + } + thisFn.clear(); + return 0; + } +#endif + else { + myDebug( << "unmatched case in initial handling! should not happen!"); + } +#ifdef Q_OS_WIN + if (buf.endsWith(QLatin1String("(y/n)"))) { + int rc = messageBox(QuestionYesNo,thisFn+buf); + if (rc == KMessageBox::Yes) { + writeChild("y\n",2); + } else { + writeChild("n\n",2); + } + thisFn.clear(); + return 0; + } +#endif + } + return buf.length(); +} + +void fishProtocol::setHostInternal(const QUrl & u){ + int port = u.port(); + if(port <= 0 ) // no port is -1 in QUrl, but in kde3 we used 0 and the kioslaves assume that. + port = 0; + setHost(u.host(),port,u.userName(),u.password()); +} + +/** +sets connection information for subsequent commands +*/ +void fishProtocol::setHost(const QString & host, quint16 port, const QString & u, const QString & pass){ + QString user(u); + + local = (host == "localhost" && port == 0); + if (user.isEmpty()) user = getenv("LOGNAME"); + + if (host == connectionHost && port == connectionPort && user == connectionUser) + return; + myDebug( << "setHost " << u << "@" << host); + + if (childPid) shutdownConnection(); + + connectionHost = host; + connectionAuth.url.setHost(host); + + connectionUser = user; + connectionAuth.username = user; + connectionAuth.url.setUserName(user); + + connectionPort = port; + connectionPassword = pass; + firstLogin = true; +} + +/** +Forced close of the connection + +This function gets called from the application side of the universe, +it shouldn't send any response. + */ +void fishProtocol::closeConnection(){ + myDebug( << "closeConnection()"); + shutdownConnection(true); +} + +/** +Closes the connection + */ +void fishProtocol::shutdownConnection(bool forced){ + if (childPid) { +#ifdef Q_OS_WIN + childPid->terminate(); +#else + int killStatus = kill(childPid,SIGTERM); // We may not have permission... + if (killStatus == 0) waitpid(childPid, nullptr, 0); +#endif + childPid = 0; +#ifndef Q_OS_WIN + ::close(childFd); // ...in which case this should do the trick + childFd = -1; +#endif + if (!forced) + { + infoMessage(i18n("Disconnected.")); + } + } + outBufPos = -1; + outBuf = nullptr; + outBufLen = 0; + qlist.clear(); + commandList.clear(); + commandCodes.clear(); + isLoggedIn = false; + writeReady = true; + isRunning = false; + rawRead = 0; + rawWrite = -1; + recvLen = -1; + sendLen = -1; +} +/** +builds each FISH request and sets the error counter +*/ +bool fishProtocol::sendCommand(fish_command_type cmd, ...) { + const fish_info &info = fishInfo[cmd]; + myDebug( << "queuing: cmd="<< cmd << "['" << info.command << "'](" << info.params <<"), alt=['" << info.alt << "'], lines=" << info.lines); + + va_list list; + va_start(list, cmd); + QString realCmd = info.command; + QString realAlt = info.alt; + static const QRegularExpression rx("[][\\\\\n $`#!()*?{}~&<>;'\"%^@|\t]"); + for (int i = 0; i < info.params; i++) { + QString arg(va_arg(list, const char *)); + int pos = -2; + while ((pos = arg.indexOf(rx, pos + 2)) >= 0) { + arg.replace(pos,0,QString("\\")); + } + //myDebug( << "arg " << i << ": " << arg); + realCmd.append(" ").append(arg); + realAlt.replace(QRegularExpression(QLatin1Char('%') + QString::number(i + 1)), arg); + } + QString s("#"); + s.append(realCmd).append("\n ").append(realAlt).append(" 2>&1;echo '### 200'\n"); + if (realCmd == "FISH") + s.prepend(" "); + commandList.append(s); + commandCodes.append(cmd); + va_end(list); + return true; +} + +/** +checks response string for result code, converting 000 and 001 appropriately +*/ +int fishProtocol::handleResponse(const QString &str){ + myDebug( << "handling: " << str); + if (str.startsWith(QLatin1String("### "))) { + bool isOk = false; + int result = str.mid(4,3).toInt(&isOk); + if (!isOk) result = 500; + if (result == 0) result = (errorCount != 0?500:200); + if (result == 1) result = (errorCount != 0?500:100); + myDebug( << "result: " << result << ", errorCount: " << errorCount); + return result; + } else { + errorCount++; + return 0; + } +} + +int fishProtocol::makeTimeFromLs(const QString &monthStr, const QString &dayStr, const QString &timeyearStr) +{ + QDateTime dt(QDateTime::currentDateTime().toUTC()); + int year = dt.date().year(); + int month = dt.date().month(); + int currentMonth = month; + int day = dayStr.toInt(); + + static const char * const monthNames[12] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" + }; + + for (int i=0; i < 12; i++) if (monthStr.startsWith(monthNames[i])) { + month = i+1; + break; + } + + int pos = timeyearStr.indexOf(':'); + if (timeyearStr.length() == 4 && pos == -1) { + year = timeyearStr.toInt(); + } else if (pos == -1) { + return 0; + } else { + if (month > currentMonth + 1) year--; + dt.setTime(QTime(timeyearStr.left(pos).toInt(), timeyearStr.mid(pos+1).toInt(), 0)); + } + dt.setDate(QDate(year, month, day)); + + return dt.toSecsSinceEpoch(); +} + +/** +parses response from server and acts accordingly +*/ +void fishProtocol::manageConnection(const QString &l) { + QString line(l); + int rc = handleResponse(line); + QDateTime dt; + long pos, pos2, pos3; + bool isOk = false; + if (!rc) { + switch (fishCommand) { + case FISH_VER: + if (line.startsWith(QLatin1String("VER 0.0.3"))) { + line.append(" "); + hasAppend = line.contains(" append "); + } else { + error(ERR_UNSUPPORTED_PROTOCOL,line); + shutdownConnection(); + } + break; + case FISH_PWD: + url.setPath(line); + redirection(url); + break; + case FISH_LIST: + myDebug( << "listReason: " << static_cast(listReason)); + /* Fall through */ + case FISH_STAT: + if (line.length() > 0) { + switch (line[0].cell()) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + long long val = line.toLongLong(&isOk); + if (val > 0 && isOk) errorCount--; + if ((fishCommand == FISH_LIST) && (listReason == LIST)) + totalSize(val); + } + break; + + case 'P': + { + errorCount--; + if (line[1] == 'd') { + udsMime = "inode/directory"; + udsType = S_IFDIR; + } else { + if (line[1] == '-') { + udsType = S_IFREG; + } else if (line[1] == 'l') { + udsType = S_IFLNK; + } else if (line[1] == 'c') { + udsType = S_IFCHR; + } else if (line[1] == 'b') { + udsType = S_IFBLK; + } else if (line[1] == 's') { + udsType = S_IFSOCK; + } else if (line[1] == 'p') { + udsType = S_IFIFO; + } else { + myDebug( << "unknown file type: " << line[1].cell()); + errorCount++; + break; + } + } + //myDebug( << "file type: " << udsType); + + long long accessVal = 0; + if (line[2] == 'r') accessVal |= S_IRUSR; + if (line[3] == 'w') accessVal |= S_IWUSR; + if (line[4] == 'x' || line[4] == 's') accessVal |= S_IXUSR; + if (line[4] == 'S' || line[4] == 's') accessVal |= S_ISUID; + if (line[5] == 'r') accessVal |= S_IRGRP; + if (line[6] == 'w') accessVal |= S_IWGRP; + if (line[7] == 'x' || line[7] == 's') accessVal |= S_IXGRP; + if (line[7] == 'S' || line[7] == 's') accessVal |= S_ISGID; + if (line[8] == 'r') accessVal |= S_IROTH; + if (line[9] == 'w') accessVal |= S_IWOTH; + if (line[10] == 'x' || line[10] == 't') accessVal |= S_IXOTH; + if (line[10] == 'T' || line[10] == 't') accessVal |= S_ISVTX; + udsEntry.replace(KIO::UDSEntry::UDS_ACCESS, accessVal); + + pos = line.indexOf(':',12); + if (pos < 0) { + errorCount++; + break; + } + udsEntry.replace(KIO::UDSEntry::UDS_USER, line.mid(12,pos-12)); + udsEntry.replace(KIO::UDSEntry::UDS_GROUP, line.mid(pos+1)); + } + break; + + case 'd': + pos = line.indexOf(' '); + pos2 = line.indexOf(' ',pos+1); + if (pos < 0 || pos2 < 0) break; + errorCount--; + udsEntry.replace(KIO::UDSEntry::UDS_MODIFICATION_TIME, + makeTimeFromLs(line.mid(1,pos-1), line.mid(pos+1,pos2-pos), line.mid(pos2+1))); + break; + + case 'D': + pos = line.indexOf(' '); + pos2 = line.indexOf(' ',pos+1); + pos3 = line.indexOf(' ',pos2+1); + if (pos < 0 || pos2 < 0 || pos3 < 0) break; + dt.setDate(QDate(line.mid(1,pos-1).toInt(),line.mid(pos+1,pos2-pos-1).toInt(),line.mid(pos2+1,pos3-pos2-1).toInt())); + pos = pos3; + pos2 = line.indexOf(' ',pos+1); + pos3 = line.indexOf(' ',pos2+1); + if (pos < 0 || pos2 < 0 || pos3 < 0) break; + dt.setTime(QTime(line.mid(pos+1,pos2-pos-1).toInt(),line.mid(pos2+1,pos3-pos2-1).toInt(),line.mid(pos3+1).toInt())); + errorCount--; + udsEntry.replace(KIO::UDSEntry::UDS_MODIFICATION_TIME, dt.toSecsSinceEpoch()); + break; + + case 'S': + { + long long sizeVal = line.mid(1).toLongLong(&isOk); + if (!isOk) break; + errorCount--; + udsEntry.replace(KIO::UDSEntry::UDS_SIZE, sizeVal); + } + break; + + case 'E': + errorCount--; + break; + + case ':': + pos = line.lastIndexOf('/'); + thisFn = line.mid(pos < 0?1:pos+1); + if (fishCommand == FISH_LIST) { + udsEntry.replace(KIO::UDSEntry::UDS_NAME, thisFn); + } + // By default, the mimetype comes from the extension + // We'll use the file(1) result only as fallback [like the rest of KDE does] + { + QUrl kurl("fish://host/"+thisFn); + QMimeDatabase db; + QMimeType mime = db.mimeTypeForUrl(kurl); + if ( !mime.isDefault() ) + udsMime = mime.name(); + } + errorCount--; + break; + + case 'M': + // This is getting ugly. file(1) makes some uneducated + // guesses, so we must try to ignore them (#51274) + if (udsMime.isEmpty() && line.right(8) != "/unknown" && + (thisFn.indexOf('.') < 0 || (line.left(8) != "Mtext/x-" + && line != "Mtext/plain"))) { + udsMime = line.mid(1); + if ( udsMime == "inode/directory" ) // a symlink to a dir is a dir + udsType = S_IFDIR; + } + errorCount--; + break; + + case 'L': + udsEntry.replace(KIO::UDSEntry::UDS_LINK_DEST, line.mid(1)); + if (!udsType) udsType = S_IFLNK; + errorCount--; + break; + } + } else { + if (!udsMime.isNull()) + udsEntry.replace(KIO::UDSEntry::UDS_MIME_TYPE, udsMime); + udsMime.clear(); + + udsEntry.replace( KIO::UDSEntry::UDS_FILE_TYPE, udsType ); + udsType = 0; + + if (fishCommand == FISH_STAT) + udsStatEntry = udsEntry; + else if (listReason == LIST) { + listEntry(udsEntry); //1 + } else if (listReason == CHECK) checkExist = true; //0 + errorCount--; + udsEntry.clear(); + } + break; + + case FISH_RETR: + if (line.length() == 0) { + error(ERR_IS_DIRECTORY,url.toDisplayString()); + recvLen = 0; + break; + } + recvLen = line.toLongLong(&isOk); + if (!isOk) { + error(ERR_CANNOT_READ,url.toDisplayString()); + shutdownConnection(); + break; + } + break; + default : break; + } + + } else if (rc == 100) { + switch (fishCommand) { + case FISH_FISH: + writeChild(fishCode, fishCodeLen); + break; + case FISH_READ: + recvLen = 1024; + /* fall through */ + case FISH_RETR: + myDebug( << "reading " << recvLen); + if (recvLen == -1) { + error(ERR_CANNOT_READ,url.toDisplayString()); + shutdownConnection(); + } else { + rawRead = recvLen; + dataRead = 0; + mimeTypeSent = false; + if (recvLen == 0) + { + mimeType("application/x-zerosize"); + mimeTypeSent = true; + } + } + break; + case FISH_STOR: + case FISH_WRITE: + case FISH_APPEND: + rawWrite = sendLen; + //myDebug( << "sending " << sendLen); + writeChild(nullptr,0); + break; + default : break; + } + } else if (rc/100 != 2) { + switch (fishCommand) { + case FISH_STOR: + case FISH_WRITE: + case FISH_APPEND: + error(ERR_CANNOT_WRITE,url.toDisplayString()); + shutdownConnection(); + break; + case FISH_RETR: + error(ERR_CANNOT_READ,url.toDisplayString()); + shutdownConnection(); + break; + case FISH_READ: + if ( rc == 501 ) + { + mimeType("inode/directory"); + mimeTypeSent = true; + recvLen = 0; + finished(); + } + else + { + error(ERR_CANNOT_READ,url.toDisplayString()); + shutdownConnection(); + } + break; + case FISH_FISH: + case FISH_VER: + error(ERR_SLAVE_DEFINED,line); + shutdownConnection(); + break; + case FISH_PWD: + case FISH_CWD: + error(ERR_CANNOT_ENTER_DIRECTORY,url.toDisplayString()); + break; + case FISH_LIST: + myDebug( << "list error. reason: " << static_cast(listReason)); + if (listReason == LIST) error(ERR_CANNOT_ENTER_DIRECTORY,url.toDisplayString()); + else if (listReason == CHECK) { + checkExist = false; + finished(); + } + break; + case FISH_STAT: + error(ERR_DOES_NOT_EXIST,url.toDisplayString()); + udsStatEntry.clear(); + break; + case FISH_CHMOD: + error(ERR_CANNOT_CHMOD,url.toDisplayString()); + break; + case FISH_CHOWN: + case FISH_CHGRP: + error(ERR_ACCESS_DENIED,url.toDisplayString()); + break; + case FISH_MKD: + if ( rc == 501 ) + error(ERR_DIR_ALREADY_EXIST,url.toDisplayString()); + else + error(ERR_CANNOT_MKDIR,url.toDisplayString()); + break; + case FISH_RMD: + error(ERR_CANNOT_RMDIR,url.toDisplayString()); + break; + case FISH_DELE: + error(ERR_CANNOT_DELETE,url.toDisplayString()); + break; + case FISH_RENAME: + error(ERR_CANNOT_RENAME,url.toDisplayString()); + break; + case FISH_COPY: + case FISH_LINK: + case FISH_SYMLINK: + error(ERR_CANNOT_WRITE,url.toDisplayString()); + break; + default : break; + } + } else { + if (fishCommand == FISH_STOR) fishCommand = (hasAppend?FISH_APPEND:FISH_WRITE); + if (fishCommand == FISH_FISH) { + connected(); + } else if (fishCommand == FISH_LIST) { + if (listReason == CHECK && !checkOverwrite && checkExist) { + error(ERR_FILE_ALREADY_EXIST,url.toDisplayString()); + return; // Don't call finished! + } + } else if (fishCommand == FISH_STAT) { + udsStatEntry.replace( KIO::UDSEntry::UDS_NAME, url.fileName() ); + statEntry(udsStatEntry); + } else if (fishCommand == FISH_APPEND) { + dataReq(); + if (readData(rawData) > 0) sendCommand(FISH_APPEND,E(QString::number(rawData.size())),E(url.path())); + else if (!checkExist && putPerm > -1) sendCommand(FISH_CHMOD,E(QString::number(putPerm,8)),E(url.path())); + sendLen = rawData.size(); + } else if (fishCommand == FISH_WRITE) { + dataReq(); + if (readData(rawData) > 0) sendCommand(FISH_WRITE,E(QString::number(putPos)),E(QString::number(rawData.size())),E(url.path())); + else if (!checkExist && putPerm > -1) sendCommand(FISH_CHMOD,E(QString::number(putPerm,8)),E(url.path())); + putPos += rawData.size(); + sendLen = rawData.size(); + } else if (fishCommand == FISH_RETR) { + data(QByteArray()); + } + finished(); + } +} + +void fishProtocol::writeStdin(const QString &line) +{ + qlist.append(E(line)); + + if (writeReady) { + writeReady = false; + //myDebug( << "Writing: " << qlist.first().mid(0,qlist.first().indexOf('\n'))); + myDebug( << "Writing: " << qlist.first()); + myDebug( << "---------"); + writeChild((const char *)qlist.first(), qlist.first().length()); + } +} + +void fishProtocol::sent() +{ + if (rawWrite > 0) { + myDebug( << "writing raw: " << rawData.size() << "/" << rawWrite); + writeChild(rawData.data(),(rawWrite > rawData.size()?rawData.size():rawWrite)); + rawWrite -= rawData.size(); + if (rawWrite > 0) { + dataReq(); + if (readData(rawData) <= 0) { + shutdownConnection(); + } + } + return; + } else if (rawWrite == 0) { + // workaround: some dd's insist in reading multiples of + // 8 bytes, swallowing up to seven bytes. Sending + // newlines is safe even when a sane dd is used + writeChild("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",15); + rawWrite = -1; + return; + } + if (qlist.count() > 0) qlist.erase(qlist.begin()); + if (qlist.count() == 0) { + writeReady = true; + } else { + //myDebug( << "Writing: " << qlist.first().mid(0,qlist.first().indexOf('\n'))); + myDebug( << "Writing: " << qlist.first()); + myDebug( << "---------"); + writeChild((const char *)qlist.first(),qlist.first().length()); + } +} + +int fishProtocol::received(const char *buffer, KIO::fileoffset_t buflen) +{ + int pos = 0; + do { + if (buflen <= 0) break; + + if (rawRead > 0) { + myDebug( << "processedSize " << dataRead << ", len " << buflen << "/" << rawRead); + int dataSize = (rawRead > buflen?buflen:rawRead); + if (!mimeTypeSent) + { + int mimeSize = qMin(dataSize, (int)(mimeBuffer.size()-dataRead)); + memcpy(mimeBuffer.data()+dataRead,buffer,mimeSize); + dataRead += mimeSize; + rawRead -= mimeSize; + buffer += mimeSize; + buflen -= mimeSize; + if (rawRead == 0) // End of data + mimeBuffer.resize(dataRead); + if (dataRead < (int)mimeBuffer.size()) + { + myDebug( << "wait for more"); + break; + } + + QMimeDatabase db; + sendmimeType(db.mimeTypeForFileNameAndData(url.path(), mimeBuffer).name()); + mimeTypeSent = true; + if (fishCommand != FISH_READ) { + totalSize(dataRead + rawRead); + data(mimeBuffer); + processedSize(dataRead); + } + mimeBuffer.resize(1024); + pos = 0; + continue; // Process rest of buffer/buflen + } + + QByteArray bdata(buffer,dataSize); + data(bdata); + + dataRead += dataSize; + rawRead -= dataSize; + processedSize(dataRead); + if (rawRead <= 0) { + buffer += dataSize; + buflen -= dataSize; + } else { + return 0; + } + } + + if (buflen <= 0) break; + + pos = 0; + // Find newline + while((pos < buflen) && (buffer[pos] != '\n')) + ++pos; + + if (pos < buflen) + { + QString s = remoteEncoding()->decode(QByteArray(buffer,pos)); + + buffer += pos+1; + buflen -= pos+1; + + manageConnection(s); + + pos = 0; + // Find next newline + while((pos < buflen) && (buffer[pos] != '\n')) + ++pos; + } + } while (childPid && buflen && (rawRead > 0 || pos < buflen)); + return buflen; +} +/** get a file */ +void fishProtocol::get(const QUrl& u){ + myDebug( << "@@@@@@@@@ get " << u); + setHostInternal(u); + url = u; + openConnection(); + if (!isLoggedIn) return; + url = url.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + recvLen = -1; + sendCommand(FISH_RETR,E(url.path())); + } + run(); +} + +/** put a file */ +void fishProtocol::put(const QUrl& u, int permissions, KIO::JobFlags flags) { + myDebug( << "@@@@@@@@@ put " << u << " " << permissions << " " << (flags & KIO::Overwrite) << " " /* << resume */); + setHostInternal(u); + + url = u; + openConnection(); + if (!isLoggedIn) return; + url = url.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + putPerm = permissions; + + checkOverwrite = flags & KIO::Overwrite; + checkExist = false; + putPos = 0; + listReason = CHECK; + sendCommand(FISH_LIST,E(url.path())); + sendCommand(FISH_STOR,"0",E(url.path())); + + const QString mtimeStr = metaData( "modified" ); + if ( !mtimeStr.isEmpty() ) { + QDateTime dt = QDateTime::fromString( mtimeStr, Qt::ISODate ); + // TODO set modification time on url.path() somehow + // see FileProtocol::put if using utime() to do that. + } + } + run(); +} +/** executes next command in sequence or calls finished() if all is done */ +void fishProtocol::finished() { + if (commandList.count() > 0) { + fishCommand = (fish_command_type)commandCodes.first(); + errorCount = -fishInfo[fishCommand].lines; + rawRead = 0; + rawWrite = -1; + udsEntry.clear(); + udsStatEntry.clear(); + writeStdin(commandList.first()); + //if (fishCommand != FISH_APPEND && fishCommand != FISH_WRITE) infoMessage("Sending "+(commandList.first().mid(1,commandList.first().indexOf("\n")-1))+"..."); + commandList.erase(commandList.begin()); + commandCodes.erase(commandCodes.begin()); + } else { + myDebug( << "_______ emitting finished()"); + SlaveBase::finished(); + isRunning = false; + } +} + +/** aborts command sequence and calls error() */ +void fishProtocol::error(int type, const QString &detail) { + commandList.clear(); + commandCodes.clear(); + myDebug( << "ERROR: " << type << " - " << detail); + SlaveBase::error(type,detail); + isRunning = false; +} + +/** executes a chain of commands */ +void fishProtocol::run() +/* This function writes to childFd fish commands (like #STOR 0 /tmp/test ...) that are stored in outBuf +and reads from childFd the remote host's response. ChildFd is the fd to a process that communicates +with .fishsrv.pl typically running on another computer. */ +{ + if (!isRunning) { + int rc; + isRunning = true; + finished(); +#ifndef Q_OS_WIN + fd_set rfds, wfds; + FD_ZERO(&rfds); +#endif + char buf[32768]; + int offset = 0; + while (isRunning) { +#ifndef Q_OS_WIN + FD_SET(childFd,&rfds); + FD_ZERO(&wfds); + if (outBufPos >= 0) FD_SET(childFd,&wfds); + struct timeval timeout; + timeout.tv_sec = 0; + timeout.tv_usec = 1000; + rc = select(childFd+1, &rfds, &wfds, nullptr, &timeout); + if (rc < 0) { + if (errno == EINTR) + continue; + myDebug( << "select failed, rc: " << rc << ", error: " << strerror(errno)); + error(ERR_CONNECTION_BROKEN,connectionHost); + shutdownConnection(); + return; + } + // We first write the complete buffer, including all newlines. + // Do: send command and newlines, expect response then + // Do not: send commands, expect response, send newlines, expect response on newlines + // Newlines do not trigger a response. + if (FD_ISSET(childFd,&wfds) && outBufPos >= 0) { + if (outBufLen-outBufPos > 0) + rc = ::write(childFd, outBuf + outBufPos, outBufLen - outBufPos); +#else + if (outBufPos >= 0) { + if (outBufLen-outBufPos > 0) { + rc = childPid->write(outBuf); + } +#endif + else + rc = 0; + + if (rc >= 0) + outBufPos += rc; + else { +#ifndef Q_OS_WIN + if (errno == EINTR) + continue; + myDebug( << "write failed, rc: " << rc << ", error: " << strerror(errno)); +#else + myDebug( << "write failed, rc: " << rc); +#endif + error(ERR_CONNECTION_BROKEN,connectionHost); + shutdownConnection(); + return; + } + if (outBufPos >= outBufLen) { + outBufPos = -1; + outBuf = nullptr; + sent(); + } + } +#ifndef Q_OS_WIN + else if (FD_ISSET(childFd,&rfds)) { + rc = ::read(childFd, buf + offset, sizeof(buf) - offset); +#else + else if (childPid->waitForReadyRead(1000)) { + rc = childPid->read(buf + offset, sizeof(buf) - offset); +#endif + //myDebug( << "read " << rc << " bytes"); + if (rc > 0) { + int noff = received(buf, rc + offset); + if (noff > 0) memmove(buf, buf + offset + rc - noff, noff); + //myDebug( << "left " << noff << " bytes: " << QString::fromLatin1(buf,offset)); + offset = noff; + } else { +#ifndef Q_OS_WIN + if (errno == EINTR) + continue; + myDebug( << "read failed, rc: " << rc << ", error: " << strerror(errno)); +#else + myDebug( << "read failed, rc: " << rc ); +#endif + error(ERR_CONNECTION_BROKEN,connectionHost); + shutdownConnection(); + return; + } + } + if (wasKilled()) + return; + } + } +} + +/** stat a file */ +void fishProtocol::stat(const QUrl& u){ + myDebug( << "@@@@@@@@@ stat " << u); + setHostInternal(u); + url = u; + isStat = true; // FIXME: just a workaround for konq deficiencies + openConnection(); + isStat = false; // FIXME: just a workaround for konq deficiencies + if (!isLoggedIn) return; + url = url.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + sendCommand(FISH_STAT,E(url.adjusted(QUrl::StripTrailingSlash).path())); + } + run(); +} +/** find mimetype for a file */ +void fishProtocol::mimetype(const QUrl& u){ + myDebug( << "@@@@@@@@@ mimetype " << u); + setHostInternal(u); + url = u; + openConnection(); + if (!isLoggedIn) return; + url = url.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + recvLen = 1024; + sendCommand(FISH_READ,"0","1024",E(url.path())); + } + run(); +} +/** list a directory */ +void fishProtocol::listDir(const QUrl& u){ + myDebug( << "@@@@@@@@@ listDir " << u); + setHostInternal(u); + url = u; + openConnection(); + if (!isLoggedIn) return; + url = url.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + listReason = LIST; + sendCommand(FISH_LIST,E(url.path())); + } + run(); +} +/** create a directory */ +void fishProtocol::mkdir(const QUrl& u, int permissions) { + myDebug( << "@@@@@@@@@ mkdir " << u << " " << permissions); + setHostInternal(u); + url = u; + openConnection(); + if (!isLoggedIn) return; + url = url.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + sendCommand(FISH_MKD,E(url.path())); + if (permissions > -1) sendCommand(FISH_CHMOD,E(QString::number(permissions,8)),E(url.path())); + } + run(); +} +/** rename a file */ +void fishProtocol::rename(const QUrl& s, const QUrl& d, KIO::JobFlags flags) { + myDebug( << "@@@@@@@@@ rename " << s << " " << d << " " << (flags & KIO::Overwrite)); + if (s.host() != d.host() || s.port() != d.port() || s.userName() != d.userName()) { + error(ERR_UNSUPPORTED_ACTION,s.toDisplayString()); + return; + } + setHostInternal(s); + url = d; + openConnection(); + if (!isLoggedIn) return; + QUrl src = s; + url = url.adjusted(QUrl::NormalizePathSegments); + src = src.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + if (!(flags & KIO::Overwrite)) { + listReason = CHECK; + checkOverwrite = false; + sendCommand(FISH_LIST,E(url.path())); + } + sendCommand(FISH_RENAME,E(src.path()),E(url.path())); + } + run(); +} +/** create a symlink */ +void fishProtocol::symlink(const QString& target, const QUrl& u, KIO::JobFlags flags) { + myDebug( << "@@@@@@@@@ symlink " << target << " " << u << " " << (flags & KIO::Overwrite)); + setHostInternal(u); + url = u; + openConnection(); + if (!isLoggedIn) return; + url = url.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + if (!(flags & KIO::Overwrite)) { + listReason = CHECK; + checkOverwrite = false; + sendCommand(FISH_LIST,E(url.path())); + } + sendCommand(FISH_SYMLINK,E(target),E(url.path())); + } + run(); +} +/** change file permissions */ +void fishProtocol::chmod(const QUrl& u, int permissions){ + myDebug( << "@@@@@@@@@ chmod " << u << " " << permissions); + setHostInternal(u); + url = u; + openConnection(); + if (!isLoggedIn) return; + url = url.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + if (permissions > -1) sendCommand(FISH_CHMOD,E(QString::number(permissions,8)),E(url.path())); + } + run(); +} +/** copies a file */ +void fishProtocol::copy(const QUrl &s, const QUrl &d, int permissions, KIO::JobFlags flags) { + myDebug( << "@@@@@@@@@ copy " << s << " " << d << " " << permissions << " " << (flags & KIO::Overwrite)); + if (s.host() != d.host() || s.port() != d.port() || s.userName() != d.userName()) { + error(ERR_UNSUPPORTED_ACTION,s.toDisplayString()); + return; + } + //myDebug( << s << endl << d); + setHostInternal(s); + url = d; + openConnection(); + if (!isLoggedIn) return; + QUrl src = s; + url = url.adjusted(QUrl::NormalizePathSegments); + src = src.adjusted(QUrl::NormalizePathSegments); + if (src.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + if (!(flags & KIO::Overwrite)) { + listReason = CHECK; + checkOverwrite = false; + sendCommand(FISH_LIST,E(url.path())); + } + sendCommand(FISH_COPY,E(src.path()),E(url.path())); + if (permissions > -1) sendCommand(FISH_CHMOD,E(QString::number(permissions,8)),E(url.path())); + } + run(); +} +/** removes a file or directory */ +void fishProtocol::del(const QUrl &u, bool isFile){ + myDebug( << "@@@@@@@@@ del " << u << " " << isFile); + setHostInternal(u); + url = u; + openConnection(); + if (!isLoggedIn) return; + url = url.adjusted(QUrl::NormalizePathSegments); + if (url.path().isEmpty()) { + sendCommand(FISH_PWD); + } else { + sendCommand((isFile?FISH_DELE:FISH_RMD),E(url.path())); + } + run(); +} +/** special like background execute */ +void fishProtocol::special( const QByteArray &data ){ + int tmp; + + QDataStream stream(data); + + stream >> tmp; + switch (tmp) { + case FISH_EXEC_CMD: // SSH EXEC + { + QUrl u; + QString command; + stream >> u; + stream >> command; + myDebug( << "@@@@@@@@@ exec " << u << " " << command); + setHostInternal(u); + url = u; + openConnection(); + if (!isLoggedIn) return; + sendCommand(FISH_EXEC,E(command),E(url.path())); + run(); + break; + } + default: + // Some command we don't understand. + error(ERR_UNSUPPORTED_ACTION,QString().setNum(tmp)); + break; + } +} +/** report status */ +void fishProtocol::slave_status() { + myDebug( << "@@@@@@@@@ slave_status"); + if (childPid > 0) + slaveStatus(connectionHost,isLoggedIn); + else + slaveStatus(QString(),false); +} diff --git a/fish/fish.h b/fish/fish.h new file mode 100644 index 0000000..7c9eddd --- /dev/null +++ b/fish/fish.h @@ -0,0 +1,217 @@ +/*************************************************************************** + fish.h - a FISH kioslave + ------------------- + begin : Thu Oct 4 17:09:14 CEST 2001 + copyright : (C) 2001 by Jörg Walter + email : trouble@garni.ch + ***************************************************************************/ + +/*************************************************************************** + * * + * 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, version 2 of the License * + * * + ***************************************************************************/ +#ifndef FISH_H +#define FISH_H + +#include +#include +#include + +#define FISH_EXEC_CMD 'X' + +class fishProtocol : public KIO::SlaveBase +{ +public: + fishProtocol(const QByteArray &pool_socket, const QByteArray &app_socket); + ~fishProtocol() override; + + /** +Connects to a server and logs us in via SSH. Then starts FISH protocol. +@ref isConnected is set to true if logging on was successful. +It is set to false if the connection becomes closed. + + */ + void openConnection() override; + + /** + Clean up connection + */ + void shutdownConnection(bool forced=false); + /** sets connection information for subsequent commands */ + void setHost(const QString & host, quint16 port, const QString & user, const QString & pass) override; + /** Forced close of the connection */ + void closeConnection() override; + /** get a file */ + void get(const QUrl& url) override; + /** put a file */ + void put(const QUrl& url, int permissions, KIO::JobFlags flags ) override; + /** aborts command sequence and calls error() */ + void error(int type, const QString &detail); + /** executes next command in sequence or calls finished() if all is done */ + void finished(); + /** stat a file */ + void stat(const QUrl& url) override; + /** find mimetype for a file */ + void mimetype(const QUrl& url) override; + /** list a directory */ + void listDir(const QUrl& url) override; + /** create a directory */ + void mkdir(const QUrl&url, int permissions) override; + /** rename a file */ + void rename(const QUrl& src, const QUrl& dest, KIO::JobFlags flags) override; + /** create a symlink */ + void symlink(const QString& target, const QUrl& dest, KIO::JobFlags flags) override; + /** change file permissions */ + void chmod(const QUrl& url, int permissions) override; + /** copies a file */ + void copy(const QUrl &src, const QUrl &dest, int permissions, KIO::JobFlags flags) override; + /** report status */ + void slave_status() override; + /** removes a file or directory */ + void del(const QUrl &u, bool isfile) override; + /** special like background execute */ + void special( const QByteArray &data ) override; + +private: // Private attributes + /** fd for reading and writing to the process */ + int childFd; + /** buffer for data to be written */ +#ifndef Q_OS_WIN + const char *outBuf; +#else + QByteArray outBuf; +#endif + /** current write position in buffer */ + KIO::fileoffset_t outBufPos; + /** length of buffer */ + KIO::fileoffset_t outBufLen; + /** use su if true else use ssh */ + bool local; + /** // FIXME: just a workaround for konq deficiencies */ + bool isStat; + /** // FIXME: just a workaround for konq deficiencies */ + QString redirectUser, redirectPass; + +protected: // Protected attributes + /** for LIST/STAT */ + KIO::UDSEntry udsEntry; + /** for LIST/STAT */ + KIO::UDSEntry udsStatEntry; + /** for LIST/STAT */ + long long udsType; + /** for LIST/STAT */ + QString udsMime; + /** for LIST/STAT */ + QString thisFn; + /** for STAT */ + QString wantedFn; + QString statPath; + /** url of current request */ + QUrl url; + /** true if connection is logged in successfully */ + bool isLoggedIn; + /** host name of current connection */ + QString connectionHost; + /** user name of current connection */ + QString connectionUser; + /** port of current connection */ + int connectionPort; + /** password of current connection */ + QString connectionPassword; + /** AuthInfo object used for logging in */ + KIO::AuthInfo connectionAuth; + /** number of lines received, == 0 -> everything went ok */ + int errorCount; + /** queue for lines to be sent */ + QList qlist; + /** queue for commands to be sent */ + QStringList commandList; + /** queue for commands to be sent */ + QList commandCodes; + /** bytes still to be read in raw mode */ + KIO::fileoffset_t rawRead; + /** bytes still to be written in raw mode */ + KIO::fileoffset_t rawWrite; + /** data bytes to read in next read command */ + KIO::fileoffset_t recvLen; + /** data bytes to write in next write command */ + KIO::fileoffset_t sendLen; + /** true if the last write operation was finished */ + bool writeReady; + /** true if a command stack is currently executing */ + bool isRunning; + /** reason of LIST command */ + enum { CHECK, LIST } listReason; + /** true if FISH server understands APPEND command */ + bool hasAppend; + /** permission of created file */ + int putPerm; + /** true if file may be overwritten */ + bool checkOverwrite; + /** current position of write */ + KIO::fileoffset_t putPos; + /** true if file already existed */ + bool checkExist; + /** true if this is the first login attempt (== use cached password) */ + bool firstLogin; + /** write buffer */ + QByteArray rawData; + /** buffer for storing bytes used for MimeMagic */ + QByteArray mimeBuffer; + /** whther the mimetype has been sent already */ + bool mimeTypeSent; + /** number of bytes read so far */ + KIO::fileoffset_t dataRead; + /** details about each fishCommand */ + static const struct fish_info { + const char *command; + int params; + const char *alt; + int lines; + } fishInfo[]; + /** last FISH command sent to server */ + enum fish_command_type { FISH_FISH, FISH_VER, FISH_PWD, FISH_LIST, FISH_STAT, + FISH_RETR, FISH_STOR, + FISH_CWD, FISH_CHMOD, FISH_DELE, FISH_MKD, FISH_RMD, + FISH_RENAME, FISH_LINK, FISH_SYMLINK, FISH_CHOWN, + FISH_CHGRP, FISH_READ, FISH_WRITE, FISH_COPY, FISH_APPEND, FISH_EXEC } fishCommand; + int fishCodeLen; +protected: // Protected methods + /** manages initial communication setup including password queries */ +#ifndef Q_OS_WIN + int establishConnection(char *buffer, KIO::fileoffset_t buflen); +#else + int establishConnection(const QByteArray &buffer); +#endif + int received(const char *buffer, KIO::fileoffset_t buflen); + void sent(); + /** builds each FISH request and sets the error counter */ + bool sendCommand(fish_command_type cmd, ...); + /** checks response string for result code, converting 000 and 001 appropriately */ + int handleResponse(const QString &str); + /** parses a ls -l time spec */ + int makeTimeFromLs(const QString &dayStr, const QString &monthStr, const QString &timeyearStr); + /** executes a chain of commands */ + void run(); + /** creates the subprocess */ + bool connectionStart(); + /** writes one chunk of data to stdin of child process */ +#ifndef Q_OS_WIN + void writeChild(const char *buf, KIO::fileoffset_t len); +#else + void writeChild(const QByteArray &buf, KIO::fileoffset_t len); +#endif + /** parses response from server and acts accordingly */ + void manageConnection(const QString &line); + /** writes to process */ + void writeStdin(const QString &line); + /** Verify port **/ + void setHostInternal(const QUrl & u); + +}; + + +#endif diff --git a/fish/fish.pl b/fish/fish.pl new file mode 100755 index 0000000..678d6cc --- /dev/null +++ b/fish/fish.pl @@ -0,0 +1,368 @@ +#!/usr/bin/perl +# 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, version 2 of the License +=pod +This file was transferred by kio_fish, a network client part of the +KDE project. You may safely delete it, it will be transferred again +when needed. +=cut + +use Fcntl; + +$|++; +#open(DEBUG,">/tmp/kio_fish.debug.$$.log"); +# save code in initial directory if just transferred +if (defined $code) { + unlink('.fishsrv.pl'); + sysopen(FH,'.fishsrv.pl',O_WRONLY|O_CREAT|O_EXCL); + print FH $code; + close(FH); + chmod(0444,'.fishsrv.pl'); +# request new code if it changed (checksum mismatch) +# for automatic upgrades +} elsif ($ARGV[0] ne "{CHECKSUM}") { + $|=1; + print "### 100 transfer fish server\n"; + while() { + last if /^__END__/; + $code.=$_; + } + exit(eval($code)); +} + +# we are up and running. +print "### 200\n"; +use strict; +use POSIX qw(getcwd dup2 strftime); +$SIG{'CHLD'} = 'IGNORE'; +$| = 1; +MAIN: while () { + chomp; + chomp; + next if !length($_) || substr($_,0,1) ne '#'; +#print DEBUG "$_\n"; + s/^#//; + /^VER / && do { + # We do not advertise "append" capability anymore, as "write" is + # as fast in perl mode and more reliable (overlapping writes) + print "VER 0.0.3 copy lscount lslinks lsmime exec stat\n### 200\n"; + next; + }; + /^PWD$/ && do { + print getcwd(),"\n### 200\n"; + next; + }; + /^SYMLINK\s+((?:\\.|[^\\])*?)\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $ofn = unquote($1); + my $fn = unquote($2); + print (symlink($ofn,$fn)?"### 200\n":"### 500 $!\n"); + next; + }; + /^COPY\s+((?:\\.|[^\\])*?)\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $ofn = unquote($1); + my $fn = unquote($2); + my ($size) = (stat($ofn))[7]; + my $read = 1; + if (-l $ofn) { + my $dest = readlink($ofn); + unlink($fn); + symlink($dest,$fn) || ($read = 0); + } else { + sysopen(FH,$ofn,O_RDONLY) || do { print "### 500 $!\n"; next; }; + sysopen(OFH,$fn,O_WRONLY|O_CREAT|O_TRUNC) || do { close(FH); print "### 500 $!\n"; next; }; + local $/ = undef; + my $buffer = ''; + while ($size > 32768 && ($read = sysread(FH,$buffer,32768)) > 0) { + $size -= $read; + if (syswrite(OFH,$buffer,$read) != $read) { + close(FH); close(OFH); + print "### 500 $!\n"; + next MAIN; + } + + } + while ($size > 0 && ($read = sysread(FH,$buffer,$size)) > 0) { + $size -= $read; + if (syswrite(OFH,$buffer,$read) != $read) { + close(FH); close(OFH); + print "### 500 $!\n"; + next MAIN; + } + } + close(FH); + close(OFH); + } + if ($read > 0) { + print "### 200\n"; + } else { + print "### 500 $!\n"; + } + next; + }; + /^LINK\s+((?:\\.|[^\\])*?)\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $ofn = unquote($1); + my $fn = unquote($2); + print (link($ofn,$fn)?"### 200\n":"### 500 $!\n"); + next; + }; + /^RENAME\s+((?:\\.|[^\\])*?)\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $ofn = unquote($1); + my $fn = unquote($2); + print (rename($ofn,$fn)?"### 200\n":"### 500 $!\n"); + next; + }; + /^CHGRP\s+(\d+)\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $fn = unquote($2); + print (chown(-1,int($1),$fn)?"### 200\n":"### 500 $!\n"); + next; + }; + /^CHOWN\s+(\d+)\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $fn = unquote($2); + print (chown(int($1),-1,$fn)?"### 200\n":"### 500 $!\n"); + next; + }; + /^CHMOD\s+([0-7]+)\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $fn = unquote($2); + print (chmod(oct($1),$fn)?"### 200\n":"### 500 $!\n"); + next; + }; + /^DELE\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $fn = unquote($1); + print (unlink($fn)?"### 200\n":"### 500 $!\n"); + next; + }; + /^RMD\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $dn = unquote($1); + print (rmdir($dn)?"### 200\n":"### 500 $!\n"); + next; + }; + /^MKD\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $dn = unquote($1); + if (mkdir($dn,0777)) { + print "### 200\n"; + } else { + my $err = $!; + print (chdir($dn)?"### 501 $err\n":"### 500 $err\n"); + } + next; + }; + /^CWD\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $dn = unquote($1); + print (chdir($dn)?"### 200\n":"### 500 $!\n"); + next; + }; + /^LIST\s+((?:\\.|[^\\])*?)\s*$/ && do { + list($1, 1); + next; + }; + /^STAT\s+((?:\\.|[^\\])*?)\s*$/ && do { + list($1, 0); + next; + }; + /^WRITE\s+(\d+)\s+(\d+)\s+((?:\\.|[^\\])*?)\s*$/ && do { + write_loop($2,$3,O_WRONLY|O_CREAT,$1); + next; + }; + /^APPEND\s+(\d+)\s+((?:\\.|[^\\])*?)\s*$/ && do { + write_loop($1,$2,O_WRONLY|O_APPEND); + next; + }; + /^STOR\s+(\d+)\s+((?:\\.|[^\\])*?)\s*$/ && do { + write_loop($1,$2,O_WRONLY|O_CREAT|O_TRUNC); + next; + }; + /^RETR\s+((?:\\.|[^\\])*?)\s*$/ && do { + read_loop($1); + next; + }; + /^READ\s+(\d+)\s+(\d+)\s+((?:\\.|[^\\])*?)\s*$/ && do { + read_loop($3,$2,$1); + next; + }; + /^EXEC\s+((?:\\.|[^\\])*?)\s+((?:\\.|[^\\])*?)\s*$/ && do { + my $tempfile = unquote($2); + my $command = unquote($1); + $command = $command . ";echo \"###RESULT: \$?\""; + print("### 500 $!\n"), next + if (!sysopen(FH,$tempfile,O_CREAT|O_EXCL|O_WRONLY,0600)); + my $pid = fork(); + print("### 500 $!\n"), next + if (!defined $pid); + if ($pid == 0) { + open(STDOUT,'>>&FH'); + open(STDERR,'>>&FH'); + open(STDIN,' 32768 && ($read = sysread(FH,$buffer,32768)) > 0) { +#print DEBUG "$size left, $read read\n"; + $size -= $read; + print $buffer; + } + while ($size > 0 && ($read = sysread(FH,$buffer,$size)) > 0) { +#print DEBUG "$size left, $read read\n"; + $size -= $read; + print $buffer; + } + while ($size > 0) { + print ' '; + $size--; + } + $error ||= $! if $read <= 0; + close(FH); + if (!$error) { + print "### 200\n"; + } else { + print "### 500 $error\n"; + } +} + +sub write_loop { + my $size = int($_[0]); + my $fn = unquote($_[1]); +#print DEBUG "write_loop called $size size, $fn fn, $_[2]\n"; + my $error = ''; + sysopen(FH,$fn,$_[2]) || do { print "### 400 $!\n"; return; }; + eval { flock(FH,2); }; + if ($_[3]) { + sysseek(FH,int($_[3]),0) || do { close(FH);print "### 400 $!\n"; return; }; + } + ; + print "### 100\n"; + my $buffer = ''; + my $read = 1; + while ($size > 32768 && ($read = read(STDIN,$buffer,32768)) > 0) { +#print DEBUG "$size left, $read read\n"; + $size -= $read; + $error ||= $! if (syswrite(FH,$buffer,$read) != $read); + } + while ($size > 0 && ($read = read(STDIN,$buffer,$size)) > 0) { +#print DEBUG "$size left, $read read\n"; + $size -= $read; + $error ||= $! if (syswrite(FH,$buffer,$read) != $read); + } + close(FH); + if (!$error) { + print "### 200\n"; + } else { + print "### 500 $error\n"; + } +} + +sub unquote { $_ = shift; s/\\(.)/$1/g; return $_; } + +sub filetype { + my ($mode,$link,$uid,$gid) = @_; + my $result = 'P'; + while (1) { + -f _ && do { $result .= '-'; last; }; + -d _ && do { $result .= 'd'; last; }; + defined($link) && do { $result .= 'l'; last; }; + -c _ && do { $result .= 'c'; last; }; + -b _ && do { $result .= 'b'; last; }; + -S _ && do { $result .= 's'; last; }; + -p _ && do { $result .= 'p'; last; }; + $result .= '?'; last; + } + $result .= ($mode & 0400?'r':'-'); + $result .= ($mode & 0200?'w':'-'); + $result .= ($mode & 0100?($mode&04000?'s':'x'):($mode&04000?'S':'-')); + $result .= ($mode & 0040?'r':'-'); + $result .= ($mode & 0020?'w':'-'); + $result .= ($mode & 0010?($mode&02000?'s':'x'):($mode&02000?'S':'-')); + $result .= ($mode & 0004?'r':'-'); + $result .= ($mode & 0002?'w':'-'); + $result .= ($mode & 0001?($mode&01000?'t':'x'):($mode&01000?'T':'-')); + + $result .= ' '; + $result .= (getpwuid($uid)||$uid); + $result .= ':'; + $result .= (getgrgid($gid)||$gid); + $result .= "\n"; + return $result; +} + +sub mimetype { + my $fn = shift; + return "Minode/directory\n" if -d $fn; + pipe(IN,OUT); + my $pid = fork(); + return '' if (!defined $pid); + if ($pid) { + close(OUT); + my $type = ; + close(IN); + chomp $type; + chomp $type; + $type =~ s/[,; ].*//; + return '' if ($type !~ m/\//); + return "M$type\n" + } + close(IN); + sysopen(NULL,'/dev/null',O_RDWR); + dup2(fileno(NULL),fileno(STDIN)); + dup2(fileno(OUT),fileno(STDOUT)); + dup2(fileno(NULL),fileno(STDERR)); + exec('/usr/bin/file','-i','-b','-L',$fn); + exit(0); +} +__END__ diff --git a/fish/fish.protocol b/fish/fish.protocol new file mode 100644 index 0000000..d0968ad --- /dev/null +++ b/fish/fish.protocol @@ -0,0 +1,103 @@ +[Protocol] +exec=kf5/kio/fish +protocol=fish +input=none +output=filesystem +listing=Name,Type,Size,Date,Access,Owner,Group,Link, +reading=true +writing=true +makedir=true +deleting=true +linking=true +moving=true +Icon=folder-remote +maxInstances=20 +maxInstancesPerHost=5 +Description=A kioslave for the FISH protocol +Description[af]='n Kioslave vir die FISH protokol +Description[be]=Kioslave для пратакола FISH +Description[be@latin]=Słužba „kioslave” dla pratakoła FISH +Description[bg]=Kioslave за протокола FISH +Description[bn]=ফিশ (FISH) প্রোটোকল-এর জন্য একটি kioslave +Description[bn_IN]=FISH প্রোটোকলের জন্য একটি kioslave +Description[br]=Ur c'hioslave evit ar c'homenad FISH +Description[bs]=U/I zahvat za protokol FISH +Description[ca]=Un «kioslave» per al protocol FISH +Description[ca@valencia]=Un «kioslave» per al protocol FISH +Description[cs]=Pomocný protokol pro FISH +Description[csb]=Wtëkôcz protokòłu FISH +Description[da]=En kioslave for FISH-protokollen +Description[de]=Ein-/Ausgabemodul für das FISH-Protokoll +Description[el]=Ένας kioslave για το πρωτόκολλο FISH +Description[en_GB]=A kioslave for the FISH protocol +Description[eo]=kioslave por la FISH-protokolo +Description[es]=Un kioslave para el protocolo FISH +Description[et]=FISH protokolli IO-moodul +Description[eu]=FISH protokolorako kioslavea +Description[fa]=یک kioslave برای قرارداد FISH +Description[fi]=Liitäntä FISH-yhteyskäytäntö +Description[fr]=Un module d'entrées / sorties pour le protocole FISH +Description[fy]=In kioslave foar it FISH protokol +Description[ga]=Sclábhaí KIO le haghaidh prótacal FISH +Description[gl]=Un kioslave para o protocolo FISH +Description[gu]=FISH પ્રોટોકોલ માટે kioslave +Description[he]=kioslave עבור פרוטוקול FISH +Description[hi]=फिश प्रोटोकॉल हेतु के-आई-ओ-स्लेव +Description[hne]=फिस प्रोटोकाल बर के-आई-ओ-स्लेव +Description[hr]=Kioslave za FISH protokol +Description[hsb]=kioslave za FISH-protokol +Description[hu]=KDE-protokoll a FISH protokollhoz +Description[ia]=Un kioslave pro le protocollo FISH +Description[id]=Sebuah kioslave untuk protokol FISH +Description[is]=kioslave fyrir FISH samskiptaregluna +Description[it]=Un kioslave per il protocollo FISH +Description[ja]=FISH プロトコルのための kioslave +Description[ka]=kioslave FISH პროტოკოლისთვის +Description[kk]=FISH протоколына арналған kioslave +Description[km]=kioslave សម្រាប់​ពិធីការ FISH +Description[kn]=FISH ಪ್ರಕ್ರಮ (ಪ್ರೋಟೋಕಾಲ್) ಗೆ ಒಂದು ಕೆಐಓಅಧೀನಾನ್ವಯ (ಸ್ಲೇವ್) +Description[ko]=FISH 프로토콜 KIO 슬레이브 +Description[ku]=Ji bo protokola FISH Kioslaveyek +Description[lt]=FISH protokolo kio pavaldusis +Description[lv]=KIO apstrādātājs FISH protokolam +Description[mai]=फिश प्रोटोकाल लेल के-आई-ओ-स्लेव +Description[mk]=КИО-служител за протоколот FISH +Description[ml]=ഫിഷ് പ്രോട്ടോക്കോളുകള്‍കൂള്ള ഒരു കിയൊസ്ലെവു് +Description[mr]=FISH शिष्टाचार हेतु kioslave +Description[ms]=Hamba kio untuk protokol FISH +Description[nb]=En IU-slave for FISH-protokollen +Description[nds]=En In-/Utgaavmoduul för't fish-Protokoll +Description[ne]=FISH प्रोटोकलका लागि एउटा किओस्लाभ +Description[nl]=Een kioslave voor het protocol FISH +Description[nn]=Ein KIO-slave for FISH-protokollen +Description[or]=FISH ପ୍ରୋଟୋକଲ ପାଇଁ ଗୋଟିଏ kioslave +Description[pa]=FISH ਪਰੋਟੋਕਾਲ ਲਈ kioslave +Description[pl]=Wtyczka protokołu FISH +Description[pt]=Um 'kioslave' para o protocolo FISH +Description[pt_BR]=Um kioslave para o protocolo FISH +Description[ro]=Un dispozitiv de I/E pentru protocolul FISH +Description[ru]=Поддержка протокола FISH +Description[se]=SO-šláva FISH-protokolla várás +Description[si]=FISH ක්‍රියා පටිපාටිය සඳහා kioslave +Description[sk]=Kioslave pre protokol FISH +Description[sl]=kioslave za protokol FISH +Description[sr]=У/И захват за протокол ФИСХ +Description[sr@ijekavian]=У/И захват за протокол ФИСХ +Description[sr@ijekavianlatin]=U/I zahvat za protokol FISH +Description[sr@latin]=U/I zahvat za protokol FISH +Description[sv]=En I/O-slav för protokollet FISH +Description[ta]=FISH நெறிமுறைக்கான ஒரு க்யோஸ்லேவ் +Description[te]=ఫిష్ ప్రొటొకాల్ కొరకు ఐఒ బానిస +Description[tg]=Фармонбари kioslave барои қарордоди FISH +Description[th]=ตัวนำข้อมูลเข้า-ออกสำหรับโพรโทคอล FISH +Description[tr]=FISH protokolü için kioslave +Description[ug]=FISH كېلىشىمىنىڭ kioslave +Description[uk]=Підлеглий засіб введення-виведення для протоколу FISH +Description[uz]=FISH protokoli uchun KCH-sleyv +Description[uz@cyrillic]=FISH протоколи учун КЧ-слейв +Description[vi]=A kioslave cho giao thức FISH +Description[wa]=On vårlet d' I/R pol protocole FISH +Description[x-test]=xxA kioslave for the FISH protocolxx +Description[zh_CN]=FISH 协议的 KIO slave +Description[zh_TW]=用於 FISH 通訊協定的 kioslave +X-DocPath=kioslave5/fish/index.html diff --git a/fish/generate_fishcode.bat b/fish/generate_fishcode.bat new file mode 100644 index 0000000..588eef0 --- /dev/null +++ b/fish/generate_fishcode.bat @@ -0,0 +1 @@ +python %~dp0generate_fishcode.py %* \ No newline at end of file diff --git a/fish/generate_fishcode.py b/fish/generate_fishcode.py new file mode 100644 index 0000000..9f399bd --- /dev/null +++ b/fish/generate_fishcode.py @@ -0,0 +1,37 @@ +#1 is generate_fishcode.py +#2 is md5sum +#3 is the output file +#4 are the parameters for cut +import sys +import re +import hashlib + +fp = open(sys.argv[1], "rb") +r = fp.read() +fp.close() + +m = hashlib.md5() +m.update(r) +sm = m.hexdigest() + +fp = open(sys.argv[1], "r") +r = fp.read() +fp.close() + +fp = open(sys.argv[3], "w") +fp.write('#define CHECKSUM "%s"\n' % sm) +fp.write('static const char *fishCode(\n') + +r = re.sub(r'\\', r'\\\\', r) +r = re.sub(r'"', r'\\"', r) +p = re.compile('^[ ]*', re.M) +r = p.sub('"', r) +p = re.compile(r'^"# .*\n*', re.M) +r = p.sub('', r) +p = re.compile('[ ]*$', re.M) +r = p.sub(r'\\n"', r) +p = re.compile(r'^"\\n"\n?', re.M) +r = p.sub('', r) +r = re.sub(r'{CHECKSUM}', sm, r, 1) +fp.write(r + ");\n") +fp.close() diff --git a/fish/generate_fishcode.sh b/fish/generate_fishcode.sh new file mode 100755 index 0000000..a1e5651 --- /dev/null +++ b/fish/generate_fishcode.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# $1 is fish.pl +# $2 is md5sum +# $3 is the output file +# $4 are the parameters for cut + +SUM=`$2 "$1" | cut -d ' ' $4 ` +echo '#define CHECKSUM "'$SUM'"' > $3 +echo 'static const char fishCode[] =' >> $3 +sed -e 's/\\/\\\\/g;s/"/\\"/g;s/^[ ]*/"/;/^"# /d;s/[ ]*$/\\n"/;/^"\\n"$/d;s/{CHECKSUM}/'$SUM'/;' "$1" >> $3 +echo ';' >> $3 + diff --git a/fish/tests/CMakeLists.txt b/fish/tests/CMakeLists.txt new file mode 100644 index 0000000..48c4f82 --- /dev/null +++ b/fish/tests/CMakeLists.txt @@ -0,0 +1,5 @@ +add_executable( copytester main.cpp copytester.cpp) + +target_link_libraries( copytester KF5::KIOCore ) + +install( TARGETS copytester ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) diff --git a/fish/tests/README b/fish/tests/README new file mode 100644 index 0000000..89d18ed --- /dev/null +++ b/fish/tests/README @@ -0,0 +1,14 @@ +copytester is a test case for the fish kioslave. It copies 100 files from /tmp to /tmp/test using fish's functions. +It was written to verify KDE bug 147948: https://bugs.kde.org/show_bug.cgi?id=147948 + +To run it, do the following: +mkdir /tmp/test +for i in $(seq 1 1 100); do touch /tmp/fishtest${i}.txt; done +cmake . && make -j4 && rm /tmp/test/*; ./copytester + +Then, to run it again and again, do: +rm /tmp/test/*; ./copytester + +If the program is successful (i.e. the bug does not exist) it will terminate, otherwise, run infinitely. + +More info: http://techbase.kde.org/Development/Tutorials/Debugging/Debugging_IOSlaves/Debugging_kio_fish diff --git a/fish/tests/copytester.cpp b/fish/tests/copytester.cpp new file mode 100644 index 0000000..210307c --- /dev/null +++ b/fish/tests/copytester.cpp @@ -0,0 +1,49 @@ +/* Copytester is a test case for the fish kioslave. It copies 100 files from /tmp to /tmp/test using fish's functions. +It was written to verify KDE bug 147948: https://bugs.kde.org/show_bug.cgi?id=147948 + +To use this program, do + mkdir /tmp/test + for i in $(seq 1 1 100); do touch /tmp/fishtest${i}.txt; done +*/ + +#include +#include +#include +#include +#include +#include +#include + +class TransferJob; + +Browser::Browser() : QWidget(NULL) +{ + slotButtonClicked(); +} + +void Browser::slotButtonClicked() +{ + kDebug() << "entering function"; + // creating a kioslave + kDebug() << "getting via fish*************************************************************"; + KUrl::List selectedUrls; + + for (int i=1; i<=99; i++) + { + QString filename=QString("/tmp/fishtest"); + filename.append(QString::number(i)).append(".txt"); + kDebug() << filename; + selectedUrls.push_back(KUrl(filename)); + } + KUrl destUrl("fish://root@localhost/tmp/test"); + KIO::CopyJob* job0 = KIO::copy( selectedUrls, destUrl ); + job0->start(); +} + +void Browser::dataishere(KIO::Job *,const QByteArray & data ) +{ + static int counter=0; + kDebug() << ++counter << " data is here*************************************************************"; + kDebug() << data; + kapp->quit(); +} diff --git a/fish/tests/copytester.h b/fish/tests/copytester.h new file mode 100644 index 0000000..f422378 --- /dev/null +++ b/fish/tests/copytester.h @@ -0,0 +1,21 @@ +/* Copytester is a test case for the fish kioslave. It copies 100 files from /tmp to /tmp/test using fish's functions. +It was written to verify KDE bug 147948: https://bugs.kde.org/show_bug.cgi?id=147948 */ + +#ifndef KDE4START_H__ +#define KDE4START_H__ + +#include +#include +#include +#include + +class Browser : public QWidget +{ + Q_OBJECT + public: + Browser(); + public slots: + void slotButtonClicked(); + void dataishere(KIO::Job *,const QByteArray &); +}; +#endif diff --git a/fish/tests/main.cpp b/fish/tests/main.cpp new file mode 100644 index 0000000..02502b7 --- /dev/null +++ b/fish/tests/main.cpp @@ -0,0 +1,21 @@ +/* Copytester is a test case for the fish kioslave. It copies 100 files from /tmp to /tmp/test using fish's functions. +It was written to verify KDE bug 147948: https://bugs.kde.org/show_bug.cgi?id=147948 */ + +#include +#include +#include +#include +#include +#include + +int main (int argc, char *argv[]) +{ + const QByteArray& ba=QByteArray("test"); + const KLocalizedString name=ki18n("copytester"); + KAboutData aboutData( ba, ba, name, ba, name); + KCmdLineArgs::init( argc, argv, &aboutData ); + KApplication copytester; + + Browser *mw = new Browser(); + copytester.exec(); +} diff --git a/info/CMakeLists.txt b/info/CMakeLists.txt new file mode 100644 index 0000000..3c25818 --- /dev/null +++ b/info/CMakeLists.txt @@ -0,0 +1,15 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_info\") + +add_library(kio_info MODULE info.cc) +target_link_libraries(kio_info + KF5::I18n + KF5::IconThemes + KF5::KIOCore + Qt5::Network +) +set_target_properties(kio_info PROPERTIES OUTPUT_NAME "info") + +install(TARGETS kio_info DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) +install( FILES kde-info2html.conf DESTINATION ${KDE_INSTALL_DATADIR}/kio_info ) +install( FILES info.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) +install( PROGRAMS kde-info2html DESTINATION ${KDE_INSTALL_DATADIR}/kio_info ) diff --git a/info/Messages.sh b/info/Messages.sh new file mode 100755 index 0000000..8fcce25 --- /dev/null +++ b/info/Messages.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env bash +# SPDX-License-Identifier: MIT + +$XGETTEXT *.cc -o $podir/kio5_info.pot diff --git a/info/info.cc b/info/info.cc new file mode 100644 index 0000000..f0478a2 --- /dev/null +++ b/info/info.cc @@ -0,0 +1,274 @@ +// SPDX-License-Identifier: MIT + +#include "info.h" + +#include +#include +#include +#ifdef Q_OS_WIN +#include +#define getpid _getpid +#define popen _popen +#define pclose _pclose +#else +#include // getpid() +#endif + +#include +#include +#include + +#include +#include +#include + +Q_LOGGING_CATEGORY(LOG_KIO_INFO, "kio_info") + +using namespace KIO; + +InfoProtocol::InfoProtocol( const QByteArray &pool, const QByteArray &app ) + : SlaveBase( "info", pool, app ) + , m_page( "" ) + , m_node( "" ) +{ + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::InfoProtocol"; + m_cssLocation = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kio_docfilter/kio_docfilter.css" ); + m_perl = QStandardPaths::findExecutable( "perl" ); + m_infoScript = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kio_info/kde-info2html" ); + m_infoConf = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kio_info/kde-info2html.conf"); + + if( m_perl.isNull() || m_infoScript.isNull() || m_infoConf.isNull() ) { + qCCritical( LOG_KIO_INFO ) << "Critical error: Cannot locate files for HTML-conversion"; + QString errorStr; + if ( m_perl.isNull() ) { + errorStr = "perl."; + } else { + QString missing =m_infoScript.isNull() ? "kio_info/kde-info2html" : "kio_info/kde-info2html.conf"; + errorStr = "kde-info2html" + i18n( "\nUnable to locate file %1 which is necessary to run this service. " + "Please check your software installation." , missing ); + } + error( KIO::ERR_CANNOT_LAUNCH_PROCESS, errorStr ); + exit(); + } + + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::InfoProtocol - done"; +} + +InfoProtocol::~InfoProtocol() +{ + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::~InfoProtocol"; + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::~InfoProtocol - done"; +} + +void InfoProtocol::get( const QUrl& url ) +{ + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::get"; + qCDebug( LOG_KIO_INFO ) << "URL: " << url.toDisplayString() << " , Path :" << url.path(); + + if (url.path()=="/") + { + QUrl newUrl("info:/dir"); + redirection(newUrl); + finished(); + return; + }; + + // some people write info://autoconf instead of info:/autoconf + if (!url.host().isEmpty()) { + QUrl newURl(url); + newURl.setPath(url.host()+url.path()); + newURl.setHost(QString()); + redirection(newURl); + finished(); + return; + } + + if ( url.path().right(1) == "/" ) + { + // Trailing / are not supported, so we need to remove them. + QUrl newUrl( url ); + QString newPath( url.path() ); + newPath.chop( 1 ); + newUrl.setPath( newPath ); + redirection( newUrl ); + finished(); + return; + } + + // '<' in the path looks suspicious, someone is trying info:/dir/ + if (url.path().contains('<')) + { + error(KIO::ERR_DOES_NOT_EXIST, url.url()); + return; + } + + mimeType("text/html"); + // extract the path and node from url + decodeURL( url ); + + QString cmd = KShell::quoteArg(m_perl); + cmd += ' '; + cmd += KShell::quoteArg(m_infoScript); + cmd += ' '; + cmd += KShell::quoteArg(m_infoConf); + cmd += ' '; + cmd += KShell::quoteArg(m_cssLocation); + cmd += ' '; + cmd += KShell::quoteArg(m_page); + cmd += ' '; + cmd += KShell::quoteArg(m_node); + + qCDebug( LOG_KIO_INFO ) << "cmd: " << cmd; + + FILE *file = popen( QFile::encodeName(cmd), "r" ); + if ( !file ) { + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::get popen failed"; + error( ERR_CANNOT_LAUNCH_PROCESS, cmd ); + return; + } + + char buffer[ 4096 ]; + + bool empty = true; + while ( !feof( file ) ) + { + int n = fread( buffer, 1, sizeof( buffer ), file ); + if ( !n && feof( file ) && empty ) { + error( ERR_CANNOT_LAUNCH_PROCESS, cmd ); + return; + } + if ( n < 0 ) + { + // ERROR + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::get ERROR!"; + pclose( file ); + return; + } + + empty = false; + data( QByteArray::fromRawData( buffer, n ) ); + } + + pclose( file ); + + finished(); + + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::get - done"; +} + +void InfoProtocol::mimetype( const QUrl& /* url */ ) +{ + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::mimetype"; + + // to get rid of those "Open with" dialogs... + mimeType( "text/html" ); + + // finish action + finished(); + + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::mimetype - done"; +} + +void InfoProtocol::decodeURL( const QUrl &url ) +{ + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::decodeURL"; + + /* Notes: + * + * I cleaned up the URL decoding and chose not to support URLs in the + * form "info:/usr/local/share/info/libc.info.gz" or similar which the + * older code attempted (and failed, maybe it had worked once) to do. + * + * The reason is that an obvious use such as viewing a info file off your + * infopath would work for the first page, but then all the links would be + * wrong. Of course, one could change kde-info2html to make it work, but I don't + * think it worthy, others are free to disagree and write the necessary code ;) + * + * luis pedro + */ + + if ( url == QUrl("info:/browse_by_file?special=yes") ) { + m_page = "#special#"; + m_node = "browse_by_file"; + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::decodeURL - special - browse by file"; + return; + } + + decodePath( url.path() ); + + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::decodeURL - done"; +} + +void InfoProtocol::decodePath( QString path ) +{ + qCDebug( LOG_KIO_INFO ) << "InfoProtocol::decodePath(-" < +#include + +Q_DECLARE_LOGGING_CATEGORY(LOG_KIO_INFO) + +class InfoProtocol : public KIO::SlaveBase +{ +public: + + InfoProtocol( const QByteArray &pool, const QByteArray &app ); + ~InfoProtocol() override; + + void get( const QUrl& url ) override; + void stat( const QUrl& url ) override; + void mimetype( const QUrl& url ) override; + +protected: + + void decodeURL( const QUrl &url ); + void decodePath( QString path ); + +private: + + QString m_page; + QString m_node; + + QString m_perl; + QString m_infoScript; + QString m_infoConf; + QString m_cssLocation; +}; + +#endif // __info_h__ diff --git a/info/info.protocol b/info/info.protocol new file mode 100644 index 0000000..4ba9f1d --- /dev/null +++ b/info/info.protocol @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: MIT +[Protocol] +exec=kf5/kio/info +protocol=info +input=none +output=filesystem +reading=true +defaultMimetype=text/html +determineMimetypeFromExtension=false +X-DocPath=kioslave5/info/index.html +Icon=help-contents +Class=:local diff --git a/info/kde-info2html b/info/kde-info2html new file mode 100755 index 0000000..8a33ea8 --- /dev/null +++ b/info/kde-info2html @@ -0,0 +1,1084 @@ +#!/usr/bin/perl +#--------------------------------------------------------- +# info2html +#--------------------------------------------------------- +# +# PURPOSE +# This perl script converts info nodes to HTML format. +# The node is specified on the command line using the +# syntax +# () +# If and/or are missing, (dir)Top is assumed. +# +# AUTHOR +# Karl Guggisberg +# +# Changes for the KDE Help Center (c) 1999 Matthias ELter +# (me@kde.org) +# +# LICENSE +# GPL +# +# HISTORY +# 11.10.93 V 1.0 +# 14.10.93 V 1.0a some comments added +# 15.10.93 V 1.0b file for configuration settings +# 16.10.93 V 1.0c multiple info path possible +# some bugs in escaping references removed +# 28.6.94 V 1.0d some minor changes +# 8.4.95 V 1.1 bug fixes by Tim Witham +# +# March 1999 Changes for use in KDE Help Center +# February 2000 Changes for bzip2 format +# Sept. 4 2002 Updated to the KDE look +# by Hisham Muhammad +# January 30 2003 Ported Hisham's work to HEAD +# by David Pashley +# March 6 2003 Substitute use of absolute fixed file URLs to images with help:common URLs +# for the images and style sheet. By Luis Pedro Coelho +# March 9 2003 Add support for browsing by file. by Luis Pedro Coelho +# June 11 2003 Update the layout of the sides to the new infopageslayout. +# by Sven Leiber +# July 22 2008 Add support for lzma. +# by Per Øyvind Karlsen +# January 8 2009 Update lzma support for new xz tool and format. +# by Per Øyvind Karlsen +# +#------------------------------------------------------- + +use strict; + +# set here the full path of the info2html.conf +push @INC, $1 if $0 =~ m{(.*/)[^/]+$}; # full path of config file is passed in ARGV[1] by caller but let's clean this anyway +my $config_file = $ARGV[0]; +my $css_file = $ARGV[1]; +chomp $css_file; +my $css_link = qq() if $css_file; +delete $ENV{CDPATH}; +delete $ENV{ENV}; +require $config_file; #-- configuration settings +my $DOCTYPE = qq(); + +my $STYLESHEET_KDE = + qq( + $css_link + ); + +# the use of a query should make sure it never conflicts with a "real" path +my $BROWSE_BY_FILE_PATH = '/browse_by_file?special=yes'; + + +my $DONTPRINTYET = 'DONTPRINTYET '; + +#-- patterns +my $NODEBORDER = '\037\014?'; #-- delimiter of an info node +my $REDIRSEP = '\177'; #-- delimiter in tag tables +my $WS = '[ \t]+'; #-- white space + +my $WSS = '[ \t]*'; #-- white space * +my $TE = '[\t\,\.]'; #-- end of a tag +my $TAG = '[^\t\,\.]+'; #-- pattern for a tag +my $FTAG = '[^\)]+'; #-- pattern for a file name in + #-- a cross reference + +#--------------------------------------------------------- +# DieFileNotFound +#--------------------------------------------------------- +# Replies and error message if the file '$FileName' is +# not accessible. +#--------------------------------------------------------- +sub DieFileNotFound { + my ($FileName) = @_; + $FileName =~ s/&/&/g; + $FileName =~ s/>/>/g; + $FileName =~ s/ + +$STYLESHEET_KDE +Info: (no page found) + + +

        KDE Info Pages Viewer Error

        + No info page for topic "$FileName" found.
        + You may find what you are looking for at the $FileName manpage. + +EOF + die "\n"; +} + +#--------------------------------------------------------- +# Redirect +#--------------------------------------------------------- +# Since we can't do a kioslave redirection from here, we resort to an HTML +# redirection. +# +# It could be simpler to just output the correct page, but that would leave the +# the browser URL indication a bit wrong and more importantly we might mess up relative links. +# Therefore, I implemented it like this which is simpler if not as nice on the end user +# who sees a flicker. +#--------------------------------------------------------- + +sub Redirect { + my ($File,$Tag) = @_; + print <Doing redirection + + $STYLESHEET_KDE + + + +

        Redirecting ....

        +

        If you are not automatically taken to a new page, click here to continue. + + +EOF + + exit 0; +} + +#--------------------------------------------------------- +# FileNotFound +#--------------------------------------------------------- +# If the file is not found and the node is '', try to go through +# dir entries. +# This deals with cases like info:ls should open "coreutils/ls invocation" +#--------------------------------------------------------- +sub FileNotFound { + my ($FileName,$NodeName) = @_; + DieFileNotFound($FileName) if $NodeName ne 'Top' || $FileName eq 'dir'; + # Try to find it in dir + + my $DirFileName = &FindFile('dir'); + if ($DirFileName =~ m/.info.bz2$/ ) { + open DIR, "-|", "bzcat", $DirFileName; + } + elsif ($DirFileName =~ m/.info.(lzma|xz)$/ ) { + open DIR, "-|", "xzcat", $DirFileName; + } + + elsif ($DirFileName =~ m/.info.gz$/ ) { + open DIR, "-|", "gzip", "-dc", $DirFileName; + } + else { + open DIR, $DirFileName; + } + my $looking = 1; + while (

        ) { + next if $looking && !/\* Menu/; + $looking = 0; + my @item = &ParseMenuItem($_,'dir'); + if (!@item) { next } + my ($MenuLinkTag, $MenuLinkFile, $MenuLinkRef, $MenuLinkText) = @item; + if ($MenuLinkRef eq $FileName) { + &Redirect($MenuLinkFile, $MenuLinkTag); + exit 0; + } + } + &DieFileNotFound($FileName); +} + +#--------------------------------------------------------- +# Escape +#--------------------------------------------------------- +# This procedures escapes some special characeters. The +# escape sequence follows the WWW guide for escaped +# characters in URLs +#--------------------------------------------------------- +sub Escape { + my ($Tag) = @_; + #-- escaping is not needed anymore KG/28.6.94 + #-- it is, for "?" %3f (info:/cvs/What is CVS?), kaper/23.7.02 + $Tag =~ s/ /%20/g; # space + $Tag =~ s/\?$/%3f/g; # space + $Tag =~ s/\"/%22/g; # space + $Tag =~ s/\#/%23/g; +# $Tag =~ s/\+/%AB/g; # + + $Tag; +} + +#---------------------------------------------------------- +# DirnameCheck +# TV: This is totally broken. +# I don't know what was the original attempt but that code +# cannot work ! we cannot match the info name (which has no full path) +# with the info path ... +# The only thing i can see (guessed from the || part of the caller) +# is that we try to reject files with "/" in their name, guessing +# we pass a man page full path instead of a info file name ... +# In *that* case, the flow logic is inverted and we should have used "&&" +# instead of "||" +# +# Thus the commented out call... +#---------------------------------------------------------- +#sub DirnameCheck { +# my ($Base) = @_; +# my $Dir = $Base; +# +# $Base =~ s!.*/!!g; +# $Dir =~ s!\Q$Base\E!!; +# +# foreach (@info2html::config::INFODIR) { +# return 1 if $Dir =~ /^$_/; +# } +# +# foreach my $i (split(/:/, $ENV{INFOPATH})) { +# return 1 if $Dir =~ /^$i/; +# } +# +# return 0; +#} + +#---------------------------------------------------------- +# DeEscape +#---------------------------------------------------------- +#sub DeEscape { +# my ($Tag) = @_; +# #-- deescaping is not needed anymore. KG/28.6.94 +# $Tag =~ s/%AB/+/g; +# $Tag =~ s/%20/ /g; +# $Tag =~ s/\.\.\///g; +# $Tag =~ s/\.\.//g; +# $Tag =~ s/\.\///g; +# $Tag; +#} + +sub infocat { +# Collect them all into an array that can be sorted + + my %InfoFile; + my %LinkText; + my @dirs; + + foreach my $dir (@info2html::config::INFODIR) { + push @dirs, $dir; + } + if ($ENV{'INFOPATH'}) { + foreach my $dir (split(/:/, $ENV{INFOPATH})) { + push @dirs, $dir; + } + } + + foreach my $dir (@dirs) { + opendir DIR, $dir; + my ($infofile,$filedesc); + while ($infofile = readdir(DIR)) { + if ($infofile =~ m/.info.bz2$/ ) { + open INFOFILE, "-|", "bzcat", "$dir/$infofile"; + } + elsif ($infofile =~ m/.info.(lzma|xz)$/ ) { + open INFOFILE, "-|", "xzcat", "$dir/$infofile"; + } + elsif ($infofile =~ m/.info.gz$/ ) { + open INFOFILE, "-|", "gzip", "-dc", "$dir/$infofile"; + } + elsif ($infofile =~ m/.info$/) { + open INFOFILE, "-|", "$dir/$infofile"; + } + else { + next; + } + $filedesc = ''; + my $collect = 0; + my $empty = 1; + while () { + last if (m/END-INFO-DIR-ENTRY/); + s/^\* //; + chomp; + next if /^\s*$/; + if ($collect) { + $filedesc .= "\n
        " if ($collect < 16); + $filedesc .= $_; + --$collect; + $empty = 0; + } elsif (!$empty && !$collect) { + $filedesc .= "
        ...\n"; + last; + } + $collect=16 if (m/START-INFO-DIR-ENTRY/); + } + if ($empty) { $filedesc .= 'no description available'; } + close INFOFILE; + $filedesc .= $infofile if ($filedesc eq ""); +# Add to the hash + $LinkText{$filedesc} = "$dir/$infofile"; + $InfoFile{$filedesc} = "$infofile"; + } + } + +# Now output the list + my @sorted = sort { lc($a) cmp lc($b) } keys %InfoFile; + + print '
        '; + foreach my $description ( @sorted ) { + print < $LinkText{$description} +
        $description + +EOF + } + print '
        '; +} + +#---------------------------------------------------------- +# ParsHeaderToken +#---------------------------------------------------------- +# Parses the header line of an info node for a specific +# link directive (e.g. Up, Prev) +# +# Returns a link as (InfoFile,Tag). +#---------------------------------------------------------- +sub ParsHeaderToken { + my ($HeaderLine, $Token) = @_; + return ("", "") if $HeaderLine !~ /$Token:/; #-- token not available + my ($InfoFile, $node, $Temp); + if ($HeaderLine =~ m!$Token:$WS(\(($FTAG)\))!) { + $InfoFile = $2; + $Temp = $2 ne "" ? '\(' . $2 . '\)' : ""; + } + $node = $1 if $HeaderLine =~ m!$Token:$WS$Temp$WSS([^\t,\n]+)?([\t,\.\n])!; + $node ||= "Top"; + return $InfoFile, $node; +} + +#--------------------------------------------------------- +# ParsHeaderLine +#-------------------------------------------------------- +# Parses the header line on an info node for all link +# directives allowed in a header line. +# Sometimes the keyword 'Previous' is found in stead of +# 'Prev'. Thats why the redirection line is checked +# against both of these keywords. +#------------------------------------------------------- +sub ParsHeaderLine { + my ($HL) = @_; + my @LinkList; + #-- Node + push(@LinkList, &ParsHeaderToken($HL, "Node")); + #-- Next + push(@LinkList, &ParsHeaderToken($HL, "Next")); + #-- Up + push(@LinkList, &ParsHeaderToken($HL, "Up")); + #-- Prev or Previous + my @LinkInfo = &ParsHeaderToken($HL, "Prev"); + &ParsHeaderToken($HL, "Previous") if $LinkInfo[0] eq "" && $LinkInfo[1] eq ""; + push(@LinkList, @LinkInfo); + return @LinkList; +} + +############################################################ +# turn tabs into correct number of spaces +# +sub Tab2Space { + my ($line) = @_; + $line =~ s/^\t/ /; # 8 leading spaces if initial tab + while ($line =~ s/^([^\t]+)(\t)/$1 . ' ' x (8 - length($1) % 8)/e) { + } # replace each tab with right num of spaces + return $line; +} + +#-------------------------------------------------------- +# ParseMenuItem +#-------------------------------------------------------- +# Takes a line containing a Menu item and returns a list of +# ($MenuLinkTag, $MenuLinkFile, $MenuLinkRef, $MenuLinkText) +# or undef if the parsing fails +#------------------------------------------------------- + +sub ParseMenuItem { + my ($Line,$BaseInfoFile) = @_; + my ($MenuLinkTag, $MenuLinkFile, $MenuLinkRef, $MenuLinkText); + $Line = &Tab2Space($Line); # make sure columns line up well + + if ($Line =~ /\* ([^:]+)::/) { # -- is a simple entry ending with :: ? + $MenuLinkTag = $1; + $MenuLinkRef = $1; + $MenuLinkText = $'; #' --just to help emacs perl-mode + $MenuLinkFile = &Escape($BaseInfoFile); + } elsif ($Line =~ /\* ([^:]+):(\s*\(($FTAG)\)($TAG)?$TE\.?)?(.*)$/) { + $MenuLinkFile = $BaseInfoFile; + $MenuLinkRef = $1; + $MenuLinkText = $5; + if ($2) { + $MenuLinkFile = $3; + $MenuLinkTag = $4 || 'Top'; + $MenuLinkText = ($2 ? ' ' x (length($2)+1) : '') . "$5\n"; + } else { + $Line = "$5\n"; + if ($Line =~ /( *($TAG)?$TE(.*))$/) { + $MenuLinkTag = $2; + $MenuLinkText = $Line; + } + } + } else { + return undef; + } + $MenuLinkTag = &Escape($MenuLinkTag); # -- escape special chars + $MenuLinkText =~ s/^ *//; + return ($MenuLinkTag, $MenuLinkFile, $MenuLinkRef, $MenuLinkText); +} + +#-------------------------------------------------------- +# MenuItem2HTML +#-------------------------------------------------------- +# Transform an info menu item in HTML with references +#------------------------------------------------------- +sub MenuItem2HTML { + my ($Line, $BaseInfoFile) = @_; + my @parse_results = &ParseMenuItem($Line, $BaseInfoFile); + if (!@parse_results) { return $Line; } + my ($MenuLinkTag, $MenuLinkFile, $MenuLinkRef, $MenuLinkText) = @parse_results; + #-- produce a HTML line + return "$MenuLinkText"; +} + +#------------------------------------------------------------- +# ReadIndirectTable +#------------------------------------------------------------ +# Scans an info file for the occurence of an 'Indirect:' +# table. Scans the entrys and returns two lists with the +# filenames and the global offsets. +#--------------------------------------------------------- +sub ReadIndirectTable { + my ($FileName, $FileNames, $Offsets) = @_; + + local *FH1; + if ($FileName =~ /\.gz$/) { + open FH1, "-|", "gunzip", "-q", "-d", "-c", $FileName || &DieFileNotFound($FileName); + } elsif ($FileName =~ /\.bz2$/) { + open FH1, "-|", "bunzip2", "-q", "-d", "-c", $FileName || &DieFileNotFound($FileName); + } elsif ($FileName =~ /\.(lzma|xz)$/) { + open FH1, "-|", "unxz", "-q", "-d", "-c", $FileName || &DieFileNotFound($FileName); + } else { + open(FH1, $FileName) || &DieFileNotFound($FileName); + } + #-- scan for start of Indirect: Table + local $_; + while () { + my $Next = if /$NODEBORDER/; + last if $Next =~ /^Indirect:/i; + } + #-- scan the entrys and setup the arrays + local $_; + while () { + last if /$NODEBORDER/; + if (/([^:]+):[ \t]+(\d+)/) { + push(@$FileNames, $1); + push(@$Offsets, $2); + } + } + close(FH1); +} + +#--------------------------------------------------------- +# ReadTagTable +#-------------------------------------------------------- +# Reads in a tag table from an info file. +# Returns an assoziative array with the tags found. +# Tags are transformed to lower case (info is not +# case sensitive for tags). +# The entrys in the assoziative Array are of the +# form +# # +# may be empty if an indirect table is +# present or if the node is located in the +# main file. +# 'Exists' indicates if a tag table has been found. +# 'IsIndirect' indicates if the tag table is based +# on a indirect table. +#-------------------------------------------------------- +sub ReadTagTable { + my ($FileName, $TagList, $Exists, $IsIndirect) = @_; + + local *FH; + if ($FileName =~ /\.gz$/) { + open FH, "-|", "gunzip", "-q", "-d", "-c", $FileName || &DieFileNotFound($FileName); + } elsif ($FileName =~ /\.bz2$/) { + open FH, "-|", "bunzip2", "-q", "-d", "-c", $FileName || &DieFileNotFound($FileName); + } elsif ($FileName =~ /\.(lzma|xz)$/) { + open FH, "-|", "unxz", "-q", "-d", "-c", $FileName || &DieFileNotFound($FileName); + } else { + open FH, $FileName || &DieFileNotFound($FileName); + } + ($$Exists, $$IsIndirect) = (0, 0); + #-- scan for start of tag table + local $_; + while () { + if (/$NODEBORDER/) { + if ( =~ /^Tag table:/i) { + $$Exists = 1; + last; + } + } + } + #-- scan the entrys + local $_; + while () { + $$IsIndirect = 1 if /^\(Indirect\)/i; + last if /$NODEBORDER/; + if (/Node:[ \t]+([^$REDIRSEP]+)$REDIRSEP(\d+)/) { + my ($Tag, $Offset) = (lc($1), $2); + my $File = $1 if /File:[ \t]+([^\t,]+)/; + $TagList->{$Tag} = $File."#".$Offset; + } + } + close(FH); +} + +#---------------------------------------------------------- +# ParsCrossRefs +#---------------------------------------------------------- +# scans a line for the existence of cross references and +# transforms them to HTML using a little icon +#---------------------------------------------------------- +sub ParsCrossRefs { + my ($prev, $Line, $BaseInfoFile) = @_; + my ($NewLine, $Token); + my ($CrossRef, $CrossRefFile, $CrossRefTag, $CrossRefRef, $CrossRefText); + $Line = " " . $Line; + if ($prev =~ /\*Note([^\t\,\.]*)$/mi) { + $Line = "$prev-NEWLINE-$Line" if $Line =~ /^$TAG$TE/m; + } + my @Tokens = split(/(\*Note)/i, $Line); # -- split the line + while ($Token = shift @Tokens) { + $CrossRefTag = $CrossRefRef = $CrossRefFile = $CrossRefText = ''; + if ($Token !~ /^\*Note/i) { #-- this part is pure text + $NewLine .= $Token; + next; #-- ... take the next part + } + $CrossRef = shift(@Tokens); + if ($CrossRef !~ /:/) { #-- seems not to be a valid cross ref. + $NewLine .= $Token.$CrossRef; + next; # -- ... take the next one + } + if ($CrossRef =~ /^([^:]+)::/) { # -- a simple cross ref.. + $CrossRefTag = $1; + $CrossRefText = $'; + $CrossRefRef = $CrossRefTag; + $CrossRefTag =~ s/-NEWLINE-/ /g; + $CrossRefTag =~ s/^\s+//; + $CrossRefTag =~ s/\s+/ /g; + $CrossRefRef =~ s/-NEWLINE-/\n/g; + $CrossRefTag = &Escape($CrossRefTag); # -- escape specials + $BaseInfoFile = &Escape($BaseInfoFile); + $NewLine .= ""; + $NewLine .= "$CrossRefRef$CrossRefText"; + next; # -- .. take the next one + } + if ($CrossRef !~ /$TE/) { # never mind if tag doesn't end on this line + $NewLine .= $Token.$CrossRef; + next; + } +#print "--- Com. CR : $CrossRef --- \n"; + if ($CrossRef =~ /([^:]+):/) { #-- A more complicated one .. + $CrossRefRef = $1; + $CrossRef = $'; + $CrossRefText = $CrossRef; + } + if ($CrossRef =~ /^(\s|\n|-NEWLINE-)*\(($FTAG)\)/) { #-- .. with another file ? + $CrossRefFile = $2; + $CrossRef = $'; + } + $CrossRefTag = $2 if $CrossRef =~ /^(\s|\n|-NEWLINE-)*($TAG)?($TE)/; #-- ... and a tag ? + if ($CrossRefTag eq "" && $CrossRefFile eq "") { + $NewLine .= "*Note : $CrossRefText$3"; + next; + } + + $CrossRefTag =~ s/-NEWLINE-/ /g; + $CrossRefTag =~ s/^\s+//; + $CrossRefTag =~ s/\s+/ /g; + $CrossRefRef =~ s/-NEWLINE-/\n/g; + $CrossRefText =~ s/-NEWLINE-/\n/g; + $CrossRefFile = $BaseInfoFile if $CrossRefFile eq ""; + $CrossRefTag = "Top" if $CrossRefTag eq ""; + $CrossRefRef = "($CrossRefFile)$CrossRefTag" if $CrossRefRef eq ''; + $CrossRefTag = &Escape($CrossRefTag); #-- escape specials + $CrossRefFile = &Escape($CrossRefFile); + #-- append the HTML text + $NewLine .= ""; + $NewLine .= "$CrossRefRef$CrossRefText"; + } + if ($NewLine =~ /\*Note([^\t\,\.]*)$/i) { + return "$DONTPRINTYET$NewLine"; + } else { + $NewLine; #-- return the new line + } +} + + +#------------------------------------------------------------- +# PrintLinkInfo +#------------------------------------------------------------- +# prints the HTML text for a link information in the +# header of an info node. Uses some icons URLs of icons +# are specified in 'info2html.conf'. +#------------------------------------------------------------ +sub PrintLinkInfo { + my ($LinkType, $LinkFile, $LinkTag, $BaseInfoFile) = @_; + my ($LinkFileEsc, $LinkTypeText); + return if $LinkFile eq "" && $LinkTag eq ""; + + #-- If no auxiliary file specified use the current info file + $LinkFile ||= $BaseInfoFile; + my $LinkRef = $LinkTag; + $LinkTag = &Escape($LinkTag); + $LinkFileEsc = &Escape($LinkFile); + #-- print the HTML Text + print < + $LinkTypeText + $LinkRef + +EOF +} + +#------------------------------------------------------------- +# PrintHeader +#------------------------------------------------------------- +# Prints the header for an info node in HTML format +#------------------------------------------------------------ +sub PrintHeader { + my ($LinkList, $BaseInfoFile) = @_; + my @LinkList = @{$LinkList}; + + my $UpcaseInfoFile = $BaseInfoFile; + $UpcaseInfoFile =~ tr/a-z/A-Z/; + #-- TEXT for the header of an info node + print < + + + Info: ($BaseInfoFile) $LinkList[1] + $STYLESHEET_KDE + + + + + + \n"; + os << "

        \n"; + + os << indexLine << '\n'; + + // print footer + os << "\n"; + + // set the links "toolbar" also at the top + os_h << indexLine << '\n'; + os.flush(); + os_h.flush(); + + infoMessage(QString()); + data(array_h + array_d); + // Do not call finished(), the caller will do that +} + +void MANProtocol::listDir(const QUrl &url) +{ + qCDebug(KIO_MAN_LOG) << url; + + QString title; + QString section; + + if ( !parseUrl(url.path(), title, section) ) { + error( KIO::ERR_MALFORMED_URL, url.url() ); + return; + } + + // stat() and listDir() declared that everything is an html file. + // However we can list man: and man:(1) as a directory (e.g. in dolphin). + // But we cannot list man:ls as a directory, this makes no sense (#154173) + + if (!title.isEmpty() && title != "/") { + error(KIO::ERR_IS_FILE, url.url()); + return; + } + + UDSEntryList uds_entry_list; + + if (section.isEmpty()) { + for (QStringList::ConstIterator it = section_names.constBegin(); it != section_names.constEnd(); ++it) { + UDSEntry uds_entry; + uds_entry.reserve(3); + + QString name = "man:/(" + *it + ')'; + uds_entry.fastInsert( KIO::UDSEntry::UDS_NAME, sectionName( *it ) ); + uds_entry.fastInsert( KIO::UDSEntry::UDS_URL, name ); + uds_entry.fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR ); + + uds_entry_list.append( uds_entry ); + } + } + + QStringList list = findPages( section, QString(), false ); + + QStringList::Iterator it = list.begin(); + QStringList::Iterator end = list.end(); + + for ( ; it != end; ++it ) { + stripExtension( &(*it) ); + + UDSEntry uds_entry; + uds_entry.reserve(3); + uds_entry.fastInsert(KIO::UDSEntry::UDS_NAME, *it); + uds_entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG); + uds_entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("text/html")); + uds_entry_list.append( uds_entry ); + } + + listEntries( uds_entry_list ); + finished(); +} + +void MANProtocol::getProgramPath() +{ + if (!mySgml2RoffPath.isEmpty()) + return; + + mySgml2RoffPath = QStandardPaths::findExecutable("sgml2roff"); + if (!mySgml2RoffPath.isEmpty()) + return; + + /* sgml2roff isn't found in PATH. Check some possible locations where it may be found. */ + mySgml2RoffPath = QStandardPaths::findExecutable("sgml2roff", QStringList(QLatin1String(SGML2ROFF_DIRS))); + if (!mySgml2RoffPath.isEmpty()) + return; + + /* Cannot find sgml2roff program: */ + outputError(xi18nc("@info", "Could not find the sgml2roff program on your system. " + "Please install it if necessary, and ensure that it can be found using " + "the environment variable PATH.")); + error(KIO::ERR_SLAVE_DEFINED, QString()); + exit(); +} diff --git a/man/kio_man.h b/man/kio_man.h new file mode 100644 index 0000000..2ca7307 --- /dev/null +++ b/man/kio_man.h @@ -0,0 +1,90 @@ +/* This file is part of the KDE libraries + Copyright (c) 2000 Matthias Hoelzer-Kluepfel + + + 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 __kio_man_h__ +#define __kio_man_h__ + + + +#include +#include + +#include +#include + +class MANProtocol : public QObject, public KIO::SlaveBase +{ + Q_OBJECT + +public: + + MANProtocol(const QByteArray &pool_socket, const QByteArray &app_socket); + ~MANProtocol() override; + + void get(const QUrl& url) override; + void stat(const QUrl& url) override; + + void mimetype(const QUrl &url) override; + void listDir(const QUrl &url) override; + + void outputError(const QString& errmsg); + void outputMatchingPages(const QStringList &matchingPages); + + void showMainIndex(); + void showIndex(const QString& section); + + // the following two functions are the interface to man2html + void output(const char *insert); + char *readManPage(const char *filename); + + static MANProtocol *self(); + +private: + void checkManPaths(); + QStringList manDirectories(); + QMap buildIndexMap(const QString& section); + bool addWhatIs(QMap& i, const QString& f, const QString& mark); + void parseWhatIs( QMap &i, QTextStream &t, const QString &mark ); + QStringList findPages(const QString& section, + const QString &title, + bool full_path = true); + + QStringList buildSectionList(const QStringList& dirs) const; + void constructPath(QStringList& constr_path, QStringList constr_catmanpath); + + void outputHeader(QTextStream &os, const QString &header, const QString &title = QString()); + +private: + static MANProtocol *_self; + QByteArray lastdir; + + void findManPagesInSection(const QString &dir, const QString &title, bool full_path, QStringList &list); + QStringList m_manpath; ///< Path of man directories + QStringList m_mandbpath; ///< Path of catman directories + QStringList section_names; + + QString mySgml2RoffPath; + void getProgramPath(); + + QBuffer m_outputBuffer; ///< Buffer for the output + QByteArray m_manCSSFile; ///< Path to kio_man.css +}; + + +#endif diff --git a/man/kio_man_debug.cpp b/man/kio_man_debug.cpp new file mode 100644 index 0000000..83f5d54 --- /dev/null +++ b/man/kio_man_debug.cpp @@ -0,0 +1,23 @@ +/* This file is part of the KDE project + Copyright (C) 2014 Laurent Montel + + 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 "kio_man_debug.h" +Q_LOGGING_CATEGORY(KIO_MAN_LOG, "log_kio_man") + + diff --git a/man/kio_man_debug.h b/man/kio_man_debug.h new file mode 100644 index 0000000..e3f8812 --- /dev/null +++ b/man/kio_man_debug.h @@ -0,0 +1,27 @@ +/* This file is part of the KDE project + Copyright (C) 2014 Laurent Montel + + 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 KIO_MAN_DEBUG_H +#define KIO_MAN_DEBUG_H + +#include +Q_DECLARE_LOGGING_CATEGORY(KIO_MAN_LOG) + +#endif + diff --git a/man/man.protocol b/man/man.protocol new file mode 100644 index 0000000..42799e4 --- /dev/null +++ b/man/man.protocol @@ -0,0 +1,13 @@ +[Protocol] +exec=kf5/kio/man +protocol=man +input=none +output=filesystem +reading=true +listing=Name +defaultMimetype=text/html +determineMimetypeFromExtension=false +X-DocPath=kioslave5/man/index.html +maxInstances=10 +Icon=help-contents +Class=:local diff --git a/man/man2html.cpp b/man/man2html.cpp new file mode 100644 index 0000000..a8192f3 --- /dev/null +++ b/man/man2html.cpp @@ -0,0 +1,6298 @@ +/* + This file is part of the KDE libraries + + Copyright (C) 2000 Stephan Kulow + Copyright (C) 2005 Nicolas GOUTTE + Copyright (C) 2011 Martin Koller + + ... and others (see SVN history) +*/ + +// Start of verbatim comment + +/* +** This program was written by Richard Verhoeven (NL:5482ZX35) +** at the Eindhoven University of Technology. Email: rcb5@win.tue.nl +** +** Permission is granted to distribute, modify and use this program as long +** as this comment is not removed or changed. +*/ + +// End of verbatim comment + +/* + * man2html-linux-1.0/1.1 + * This version modified for Redhat/Caldera linux - March 1996. + * Michael Hamilton . + * + * man2html-linux-1.2 + * Added support for BSD mandoc pages - I didn't have any documentation + * on the mandoc macros, so I may have missed some. + * Michael Hamilton . + * + * vh-man2html-1.3 + * Renamed to avoid confusion (V for Verhoeven, H for Hamilton). + * + * vh-man2html-1.4 + * Now uses /etc/man.config + * Added support for compressed pages. + * Added "length-safe" string operations for client input parameters. + * More secure, -M secured, and client input string lengths checked. + * + */ + +/* +** If you want to use this program for your WWW server, adjust the line +** which defines the CGIBASE or compile it with the -DCGIBASE='"..."' option. +** +** You have to adjust the built-in manpath to your local system. Note that +** every directory should start and end with the '/' and that the first +** directory should be "/" to allow a full path as an argument. +** +** The program first check if PATH_INFO contains some information. +** If it does (t.i. man2html/some/thing is used), the program will look +** for a manpage called PATH_INFO in the manpath. +** +** Otherwise the manpath is searched for the specified command line argument, +** where the following options can be used: +** +** name name of manpage (csh, printf, xv, troff) +** section the section (1 2 3 4 5 6 7 8 9 n l 1v ...) +** -M path an extra directory to look for manpages (replaces "/") +** +** If man2html finds multiple manpages that satisfy the options, an index +** is displayed and the user can make a choice. If only one page is +** found, that page will be displayed. +** +** man2html will add links to the converted manpages. The function add_links +** is used for that. At the moment it will add links as follows, where +** indicates what should match to start with: +** ^^^ +** Recognition Item Link +** ---------------------------------------------------------- +** name(*) Manpage ../man?/name.* +** ^ +** name@hostname Email address mailto:name@hostname +** ^ +** method://string URL method://string +** ^^^ +** www.host.name WWW server http://www.host.name +** ^^^^ +** ftp.host.name FTP server ftp://ftp.host.name +** ^^^^ +** Include file file:/usr/include/file.h +** ^^^ +** +** Since man2html does not check if manpages, hosts or email addresses exist, +** some links might not work. For manpages, some extra checks are performed +** to make sure not every () pair creates a link. Also out of date pages +** might point to incorrect places. +** +** The program will not allow users to get system specific files, such as +** /etc/passwd. It will check that "man" is part of the specified file and +** that "/../" isn't. Even if someone manages to get such file, man2html will +** handle it like a manpage and will usually not produce any output (or crash). +** +** If you find any bugs when normal manpages are converted, please report +** them to me (rcb5@win.tue.nl) after you have checked that man(1) can handle +** the manpage correct. +** +** Known bugs and missing features: +** +** * Equations are not converted at all. +** * Tables are converted but some features are not possible in html. +** * The tabbing environment is converted by counting characters and adding +** spaces. This might go wrong (outside
        )
        +**  * Some manpages rely on the fact that troff/nroff is used to convert
        +**    them and use features which are not described in the man manpages.
        +**    (definitions, calculations, conditionals, requests). I can't guarantee
        +**    that all these features work on all manpages. (I didn't have the
        +**    time to look through all the available manpages.)
        +*/
        +
        +#include "man2html.h"
        +#include "kio_man_debug.h"
        +#include "request_hash.h"
        +
        +#include 
        +
        +#include 
        +
        +#include 
        +#include 
        +
        +#include 
        +
        +#include 
        +#include 
        +#include 
        +#include 
        +#include 
        +#include 
        +#include 
        +#include 
        +
        +#ifdef SIMPLE_MAN2HTML
        +# include 
        +# include 
        +# include 
        +# include 
        +# include 
        +# include 
        +# include 
        +# include 
        +# define BYTEARRAY(x) x.constData()
        +#else
        +# include 
        +# define BYTEARRAY(x) x
        +#endif
        +
        +#define NULL_TERMINATED(n) ((n) + 1)
        +
        +#define HUGE_STR_MAX  10000
        +#define LARGE_STR_MAX 2000
        +#define MED_STR_MAX   500
        +
        +#define DOCTYPE "\n"
        +
        +/* mdoc(7) Bl/El lists to HTML list types */
        +#define BL_DESC_LIST   1
        +#define BL_BULLET_LIST 2
        +#define BL_ENUM_LIST   4
        +
        +/* mdoc(7) Bd/Ed example(?) blocks */
        +#define BD_LITERAL  1
        +#define BD_INDENT   2
        +
        +static int s_nroff = 1; // NROFF mode by default
        +
        +static QByteArray mandoc_name;  // Nm can store the first used name
        +
        +static int mandoc_name_count = 0; /* Don't break on the first Nm */
        +
        +/* below this you should not change anything unless you know a lot
        +** about this program or about troff.
        +*/
        +
        +
        +/// Structure for character definitions
        +struct CSTRDEF
        +{
        +  int nr, slen;
        +  const char *st;
        +};
        +
        +
        +
        +const char NEWLINE[2] = "\n";
        +
        +/**
        + * Class for defining strings and macros
        + */
        +class StringDefinition
        +{
        +  public:
        +    StringDefinition(void) : m_length(0) {}
        +    StringDefinition(int len, const char* cstr) : m_length(len), m_output(cstr) {}
        +  public:
        +    int m_length; ///< Length of output text
        +    QByteArray m_output; ///< Defined string
        +};
        +
        +/**
        + * Class for defining number registers
        + * \note Not for internal read-only registers
        + */
        +class NumberDefinition
        +{
        +  public:
        +    NumberDefinition(void) : m_value(0), m_increment(0) {}
        +    NumberDefinition(int value) : m_value(value), m_increment(0) {}
        +    NumberDefinition(int value, int incr) : m_value(value), m_increment(incr) {}
        +  public:
        +    int m_value; ///< value of number register
        +    int m_increment; ///< Increment of number register
        +    // ### TODO: display form (.af)
        +};
        +
        +/**
        + * Map of character definitions
        + */
        +static QMap s_characterDefinitionMap;
        +
        +/**
        + * Map of string variable and macro definitions
        + * \note String variables and macros are the same thing!
        + */
        +static QMap s_stringDefinitionMap;
        +
        +/**
        + * Map of number registers
        + * \note Intern number registers (starting with a dot are not handled here)
        + */
        +static QMap s_numberDefinitionMap;
        +
        +static void fill_old_character_definitions(void);
        +
        +/**
        + * Initialize character variables
        + */
        +static void InitCharacterDefinitions(void)
        +{
        +  fill_old_character_definitions();
        +  // ### HACK: as we are converting to HTML too early, define characters with HTML references
        +  s_characterDefinitionMap.insert("<-", StringDefinition(1, "←"));     // <-
        +  s_characterDefinitionMap.insert("->", StringDefinition(1, "→"));     // ->
        +  s_characterDefinitionMap.insert("<>", StringDefinition(1, "↔"));     // <>
        +  s_characterDefinitionMap.insert("<=", StringDefinition(1, "≤"));     // <=
        +  s_characterDefinitionMap.insert(">=", StringDefinition(1, "≥"));     // >=
        +  // End HACK
        +}
        +
        +/**
        + * Initialize string variables
        + */
        +static void InitStringDefinitions(void)
        +{
        +  // mdoc-only, see mdoc.samples(7)
        +  s_stringDefinitionMap.insert("<=", StringDefinition(1, "≤"));
        +  s_stringDefinitionMap.insert(">=", StringDefinition(1, "≥"));
        +  s_stringDefinitionMap.insert("Rq", StringDefinition(1, "”"));
        +  s_stringDefinitionMap.insert("Lq", StringDefinition(1, "“"));
        +  s_stringDefinitionMap.insert("ua", StringDefinition(1, "&circ"));     // Note this is different from \(ua
        +  s_stringDefinitionMap.insert("aa", StringDefinition(1, "´"));
        +  s_stringDefinitionMap.insert("ga", StringDefinition(1, "`"));
        +  s_stringDefinitionMap.insert("q", StringDefinition(1, """));
        +  s_stringDefinitionMap.insert("Pi", StringDefinition(1, "π"));
        +  s_stringDefinitionMap.insert("Ne", StringDefinition(1, "≠"));
        +  s_stringDefinitionMap.insert("Le", StringDefinition(1, "≤"));
        +  s_stringDefinitionMap.insert("Ge", StringDefinition(1, "≥"));
        +  s_stringDefinitionMap.insert("Lt", StringDefinition(1, "<"));
        +  s_stringDefinitionMap.insert("Gt", StringDefinition(1, ">"));
        +  s_stringDefinitionMap.insert("Pm", StringDefinition(1, "±"));
        +  s_stringDefinitionMap.insert("If", StringDefinition(1, "∞"));
        +  s_stringDefinitionMap.insert("Na", StringDefinition(3, "NaN"));
        +  s_stringDefinitionMap.insert("Ba", StringDefinition(1, "|"));
        +  // end mdoc-only
        +  // man(7)
        +  s_stringDefinitionMap.insert("Tm", StringDefinition(1, "™"));     // \*(TM
        +  s_stringDefinitionMap.insert("R", StringDefinition(1, "®"));     // \*R
        +  s_stringDefinitionMap.insert("lq", StringDefinition(1, "“"));     // Left angled double quote
        +  s_stringDefinitionMap.insert("rq", StringDefinition(1, "”"));     // Right angled double quote
        +  // end man(7)
        +  // Missing characters from man(7):
        +  // \*S "Change to default font size"
        +#ifndef SIMPLE_MAN2HTML
        +  // Special KDE KIO man:
        +  const QByteArray kdeversion(KDE_VERSION_STRING);
        +  s_stringDefinitionMap.insert(".KDE_VERSION_STRING", StringDefinition(kdeversion.length(), kdeversion));
        +#endif
        +}
        +
        +/**
        + * Initialize number registers
        + * \note Internal read-only registers are not handled here
        + */
        +static void InitNumberDefinitions(void)
        +{
        +  // As the date number registers are more for end-users, better choose local time.
        +  // Groff seems to support Gregorian dates only
        +  QDate today(QDate::currentDate());
        +  s_numberDefinitionMap.insert("year", today.year());   // Y2K-correct year
        +  s_numberDefinitionMap.insert("yr", today.year() - 1900);   // Y2K-incorrect year
        +  s_numberDefinitionMap.insert("mo", today.month());
        +  s_numberDefinitionMap.insert("dy", today.day());
        +  s_numberDefinitionMap.insert("dw", today.dayOfWeek());
        +}
        +
        +
        +#define V(A,B) ((A)*256+(B))
        +
        +//used in expand_char, e.g. for "\(bu"
        +// see groff_char(7) for list
        +static const CSTRDEF standardchars[] =
        +{
        +  { V('*', '*'), 1, "*" },
        +  { V('*', 'A'), 1, "Α" },
        +  { V('*', 'B'), 1, "Β" },
        +  { V('*', 'C'), 1, "Ξ" },
        +  { V('*', 'D'), 1, "Δ" },
        +  { V('*', 'E'), 1, "Ε" },
        +  { V('*', 'F'), 1, "Φ" },
        +  { V('*', 'G'), 1, "Γ" },
        +  { V('*', 'H'), 1, "Θ" },
        +  { V('*', 'I'), 1, "Ι" },
        +  { V('*', 'K'), 1, "Κ" },
        +  { V('*', 'L'), 1, "Λ" },
        +  { V('*', 'M'), 1, "&Mu:" },
        +  { V('*', 'N'), 1, "Ν" },
        +  { V('*', 'O'), 1, "Ο" },
        +  { V('*', 'P'), 1, "Π" },
        +  { V('*', 'Q'), 1, "Ψ" },
        +  { V('*', 'R'), 1, "Ρ" },
        +  { V('*', 'S'), 1, "Σ" },
        +  { V('*', 'T'), 1, "Τ" },
        +  { V('*', 'U'), 1, "Υ" },
        +  { V('*', 'W'), 1, "Ω" },
        +  { V('*', 'X'), 1, "Χ" },
        +  { V('*', 'Y'), 1, "Η" },
        +  { V('*', 'Z'), 1, "Ζ" },
        +  { V('*', 'a'), 1, "α"},
        +  { V('*', 'b'), 1, "β"},
        +  { V('*', 'c'), 1, "ξ"},
        +  { V('*', 'd'), 1, "δ"},
        +  { V('*', 'e'), 1, "ε"},
        +  { V('*', 'f'), 1, "φ"},
        +  { V('*', 'g'), 1, "γ"},
        +  { V('*', 'h'), 1, "θ"},
        +  { V('*', 'i'), 1, "ι"},
        +  { V('*', 'k'), 1, "κ"},
        +  { V('*', 'l'), 1, "λ"},
        +  { V('*', 'm'), 1, "μ" },
        +  { V('*', 'n'), 1, "ν"},
        +  { V('*', 'o'), 1, "ο"},
        +  { V('*', 'p'), 1, "π"},
        +  { V('*', 'q'), 1, "ψ"},
        +  { V('*', 'r'), 1, "ρ"},
        +  { V('*', 's'), 1, "σ"},
        +  { V('*', 't'), 1, "τ"},
        +  { V('*', 'u'), 1, "υ"},
        +  { V('*', 'w'), 1, "ω"},
        +  { V('*', 'x'), 1, "χ"},
        +  { V('*', 'y'), 1, "η"},
        +  { V('*', 'z'), 1, "ζ"},
        +  { V('+', '-'), 1, "±" }, // not in groff_char(7)
        +  { V('+', 'f'), 1, "φ"}, // phi1, we use the standard phi
        +  { V('+', 'h'), 1, "θ"}, // theta1, we use the standard theta
        +  { V('+', 'p'), 1, "ω"}, // omega1, we use the standard omega
        +  { V('1', '2'), 1, "½" },
        +  { V('1', '4'), 1, "¼" },
        +  { V('3', '4'), 1, "¾" },
        +  { V('F', 'i'), 1, "ffi" }, // ffi ligature
        +  { V('F', 'l'), 1, "ffl" }, // ffl ligature
        +  { V('a', 'p'), 1, "~" },
        +  { V('b', 'r'), 1, "|" },
        +  { V('b', 'u'), 1, "•" },
        +  { V('b', 'v'), 1, "|" },
        +  { V('c', 'i'), 1, "○" }, // circle
        +  { V('c', 'o'), 1, "©" },
        +  { V('c', 't'), 1, "¢" },
        +  { V('d', 'e'), 1, "°" },
        +  { V('d', 'g'), 1, "†" },
        +  { V('d', 'i'), 1, "÷" },
        +  { V('e', 'm'), 1, "—" },
        +  { V('e', 'n'), 1, "–"},
        +  { V('e', 'q'), 1, "=" },
        +  { V('e', 's'), 1, "∅" },
        +  { V('f', 'f'), 1, "�xFB00;" }, // ff ligature
        +  { V('f', 'i'), 1, "�xFB01;" }, // fi ligature
        +  { V('f', 'l'), 1, "�xFB02;" }, // fl ligature
        +  { V('f', 'm'), 1, "′" },
        +  { V('g', 'a'), 1, "`" },
        +  { V('h', 'y'), 1, "-" },
        +  { V('l', 'c'), 2, "|¯" }, // ### TODO: not in groff_char(7)
        +  { V('l', 'f'), 2, "|_" }, // ### TODO: not in groff_char(7)
        +  { V('l', 'k'), 1, "{" }, // ### TODO: not in groff_char(7)
        +  { V('m', 'i'), 1, "-" }, // ### TODO: not in groff_char(7)
        +  { V('m', 'u'), 1, "×" },
        +  { V('n', 'o'), 1, "¬" },
        +  { V('o', 'r'), 1, "|" },
        +  { V('p', 'l'), 1, "+" },
        +  { V('r', 'c'), 2, "¯|" }, // ### TODO: not in groff_char(7)
        +  { V('r', 'f'), 2, "_|" }, // ### TODO: not in groff_char(7)
        +  { V('r', 'g'), 1, "®" },
        +  { V('r', 'k'), 1, "}" }, // ### TODO: not in groff_char(7)
        +  { V('r', 'n'), 1, "‾" },
        +  { V('r', 'u'), 1, "_" },
        +  { V('s', 'c'), 1, "§" },
        +  { V('s', 'l'), 1, "/" },
        +  { V('s', 'q'), 2, "□" }, // WHITE SQUARE
        +  { V('t', 's'), 1, "ς" }, // FINAL SIGMA
        +  { V('u', 'l'), 1, "_" },
        +  { V('-', 'D'), 1, "Ð" },
        +  { V('S', 'd'), 1, "ð" },
        +  { V('T', 'P'), 1, "Þ" },
        +  { V('T', 'p'), 1, "þ" },
        +  { V('A', 'E'), 1, "Æ" },
        +  { V('a', 'e'), 1, "æ" },
        +  { V('O', 'E'), 1, "Œ" },
        +  { V('o', 'e'), 1, "œ" },
        +  { V('s', 's'), 1, "ß" },
        +  { V('\'', 'A'), 1, "Á" },
        +  { V('\'', 'E'), 1, "É" },
        +  { V('\'', 'I'), 1, "Í" },
        +  { V('\'', 'O'), 1, "Ó" },
        +  { V('\'', 'U'), 1, "Ú" },
        +  { V('\'', 'Y'), 1, "Ý" },
        +  { V('\'', 'a'), 1, "á" },
        +  { V('\'', 'e'), 1, "é" },
        +  { V('\'', 'i'), 1, "í" },
        +  { V('\'', 'o'), 1, "ó" },
        +  { V('\'', 'u'), 1, "ú" },
        +  { V('\'', 'y'), 1, "ý" },
        +  { V(':', 'A'), 1, "Ä" },
        +  { V(':', 'E'), 1, "Ë" },
        +  { V(':', 'I'), 1, "Ï" },
        +  { V(':', 'O'), 1, "Ö" },
        +  { V(':', 'U'), 1, "Ü" },
        +  { V(':', 'a'), 1, "ä" },
        +  { V(':', 'e'), 1, "ë" },
        +  { V(':', 'i'), 1, "ï" },
        +  { V(':', 'o'), 1, "ö" },
        +  { V(':', 'u'), 1, "ü" },
        +  { V(':', 'y'), 1, "ÿ" },
        +  { V('^', 'A'), 1, "Â" },
        +  { V('^', 'E'), 1, "Ê" },
        +  { V('^', 'I'), 1, "Î" },
        +  { V('^', 'O'), 1, "Ô" },
        +  { V('^', 'U'), 1, "Û" },
        +  { V('^', 'a'), 1, "â" },
        +  { V('^', 'e'), 1, "ê" },
        +  { V('^', 'i'), 1, "î" },
        +  { V('^', 'o'), 1, "ô" },
        +  { V('^', 'u'), 1, "û" },
        +  { V('`', 'A'), 1, "À" },
        +  { V('`', 'E'), 1, "È" },
        +  { V('`', 'I'), 1, "Ì" },
        +  { V('`', 'O'), 1, "Ò" },
        +  { V('`', 'U'), 1, "Ù" },
        +  { V('`', 'a'), 1, "à" },
        +  { V('`', 'e'), 1, "è" },
        +  { V('`', 'i'), 1, "ì" },
        +  { V('`', 'o'), 1, "ò" },
        +  { V('`', 'u'), 1, "ù" },
        +  { V('~', 'A'), 1, "Ã" },
        +  { V('~', 'N'), 1, "Ñ" },
        +  { V('~', 'O'), 1, "Õ" },
        +  { V('~', 'a'), 1, "ã" },
        +  { V('~', 'n'), 1, "ñ" },
        +  { V('~', 'o'), 1, "õ" },
        +  { V(',', 'C'), 1, "Ç" },
        +  { V(',', 'c'), 1, "ç" },
        +  { V('/', 'L'), 1, "Ł" },
        +  { V('/', 'l'), 1, "ł" },
        +  { V('/', 'O'), 1, "Ø" },
        +  { V('/', 'o'), 1, "ø" },
        +  { V('o', 'A'), 1, "Å" },
        +  { V('o', 'a'), 1, "å" },
        +  { V('a', '"'), 1, "\"" },
        +  { V('a', '-'), 1, "¯" },
        +  { V('a', '.'), 1, "." },
        +  { V('a', '^'), 1, "ˆ" },
        +  { V('a', 'a'), 1, "´" },
        +  { V('a', 'b'), 1, "`" },
        +  { V('a', 'c'), 1, "¸" },
        +  { V('a', 'd'), 1, "¨" },
        +  { V('a', 'h'), 1, "˂" }, // caron
        +  { V('a', 'o'), 1, "˚" }, // ring
        +  { V('a', '~'), 1, "˜" },
        +  { V('h', 'o'), 1, "˛" }, // ogonek
        +  { V('.', 'i'), 1, "ı" }, // dot less i
        +  { V('C', 's'), 1, "¤" }, //krazy:exclude=spelling
        +  { V('D', 'o'), 1, "$" },
        +  { V('P', 'o'), 1, "£" },
        +  { V('Y', 'e'), 1, "¥" },
        +  { V('F', 'n'), 1, "ƒ" },
        +  { V('F', 'o'), 1, "«" },
        +  { V('F', 'c'), 1, "»" },
        +  { V('f', 'o'), 1, "‹" }, // single left guillemet
        +  { V('f', 'c'), 1, "›" }, // single right guillemet
        +  { V('r', '!'), 1, "&iecl;" },
        +  { V('r', '?'), 1, "¿" },
        +  { V('O', 'f'), 1, "ª" },
        +  { V('O', 'm'), 1, "º" },
        +  { V('p', 'c'), 1, "·" },
        +  { V('S', '1'), 1, "¹" },
        +  { V('S', '2'), 1, "²" },
        +  { V('S', '3'), 1, "³" },
        +  { V('<', '-'), 1, "←" },
        +  { V('-', '>'), 1, "→" },
        +  { V('<', '>'), 1, "↔" },
        +  { V('d', 'a'), 1, "↓" },
        +  { V('u', 'a'), 1, "↑" },
        +  { V('l', 'A'), 1, "⇐" },
        +  { V('r', 'A'), 1, "⇒" },
        +  { V('h', 'A'), 1, "⇔" },
        +  { V('d', 'A'), 1, "⇓" },
        +  { V('u', 'A'), 1, "⇑" },
        +  { V('b', 'a'), 1, "|" },
        +  { V('b', 'b'), 1, "¦" },
        +  { V('t', 'm'), 1, "™" },
        +  { V('d', 'd'), 1, "‡" },
        +  { V('p', 's'), 1, "¶" },
        +  { V('%', '0'), 1, "‰" },
        +  { V('f', '/'), 1, "⁄" }, // Fraction slash
        +  { V('s', 'd'), 1, "″" },
        +  { V('h', 'a'), 1, "^" },
        +  { V('t', 'i'), 1, "˜" },
        +  { V('l', 'B'), 1, "[" },
        +  { V('r', 'B'), 1, "]" },
        +  { V('l', 'C'), 1, "{" },
        +  { V('r', 'C'), 1, "}" },
        +  { V('l', 'a'), 1, "<" },
        +  { V('r', 'a'), 1, ">" },
        +  { V('l', 'h'), 1, "≤" },
        +  { V('r', 'h'), 1, "≥" },
        +  { V('B', 'q'), 1, "„" },
        +  { V('b', 'q'), 1, "‚" },
        +  { V('l', 'q'), 1, "“" },
        +  { V('r', 'q'), 1, "”" },
        +  { V('o', 'q'), 1, "‘" },
        +  { V('c', 'q'), 1, "’" },
        +  { V('a', 'q'), 1, "'" },
        +  { V('d', 'q'), 1, "\"" },
        +  { V('a', 't'), 1, "@" },
        +  { V('s', 'h'), 1, "#" },
        +  { V('r', 's'), 1, "\\" },
        +  { V('t', 'f'), 1, "∴" },
        +  { V('~', '~'), 1, "≅" },
        +  { V('~', '='), 1, "≈" },
        +  { V('!', '='), 1, "≠" },
        +  { V('<', '='), 1, "≤" },
        +  { V('=', '='), 1, "≡" },
        +  { V('=', '~'), 1, "≅" }, // ### TODO: verify
        +  { V('>', '='), 1, "≥" },
        +  { V('A', 'N'), 1, "∧" },
        +  { V('O', 'R'), 1, "∨" },
        +  { V('t', 'e'), 1, "∃" },
        +  { V('f', 'a'), 1, "∀" },
        +  { V('A', 'h'), 1, "ℵ" },
        +  { V('I', 'm'), 1, "ℑ" },
        +  { V('R', 'e'), 1, "ℜ" },
        +  { V('i', 'f'), 1, "∞" },
        +  { V('m', 'd'), 1, "⋅" },
        +  { V('m', 'o'), 1, "∆" }, // element ### TODO verify
        +  { V('n', 'm'), 1, "∉" },
        +  { V('p', 't'), 1, "∝" },
        +  { V('p', 'p'), 1, "⊥" },
        +  { V('s', 'b'), 1, "⊂" },
        +  { V('s', 'p'), 1, "⊃" },
        +  { V('i', 'b'), 1, "⊆" },
        +  { V('i', 'p'), 1, "⊇" },
        +  { V('i', 's'), 1, "∫" },
        +  { V('s', 'r'), 1, "√" },
        +  { V('p', 'd'), 1, "∂" },
        +  { V('c', '*'), 1, "⊗" },
        +  { V('c', '+'), 1, "⊕" },
        +  { V('c', 'a'), 1, "∩" },
        +  { V('c', 'u'), 1, "∪" },
        +  { V('g', 'r'), 1, "V" }, // gradient ### TODO Where in Unicode?
        +  { V('C', 'R'), 1, "↵" },
        +  { V('s', 't'), 2, "-)" }, // "such that" ### TODO Where in Unicode?
        +  { V('/', '_'), 1, "∠" },
        +  { V('w', 'p'), 1, "℘" },
        +  { V('l', 'z'), 1, "◊" },
        +  { V('a', 'n'), 1, "-" }, // "horizontal arrow extension"  ### TODO Where in Unicode?
        +};
        +
        +// long form for abbreviated standard names (.St macro)
        +struct StandardName
        +{
        +  const char *abbrev;
        +  const char *formalName;
        +};
        +
        +static const StandardName STANDARD_NAMES[] =
        +{
        +  { "-ansiC", "ANSI X3.159-1989 ('ANSI C89')" },
        +  { "-ansiC-89", "ANSI X3.159-1989 ('ANSI C89')" },
        +  { "-isoC", "ISO/IEC 9899:1990 ('ISO C90')" },
        +  { "-isoC-90", "ISO/IEC 9899:1990 ('ISO C90')" },
        +  { "-isoC-99", "ISO/IEC 9899:1999 ('ISO C99')" },
        +  { "-isoC-2011", "ISO/IEC 9899:2011 ('ISO C11')" },
        +  { "-iso9945-1-90", "ISO/IEC 9945-1:1990 ('POSIX.1')" },
        +  { "-iso9945-1-96", "ISO/IEC 9945-1:1996 ('POSIX.1')" },
        +  { "-p1003.1", "IEEE Std 1003.1 ('POSIX.1')" },
        +  { "-p1003.1-88", "IEEE Std 1003.1-1988 ('POSIX.1')" },
        +  { "-p1003.1-90", "ISO/IEC 9945-1:1990 ('POSIX.1')" },
        +  { "-p1003.1-96", "ISO/IEC 9945-1:1996 ('POSIX.1')" },
        +  { "-p1003.1b-93", "IEEE Std 1003.1b-1993 ('POSIX.1')" },
        +  { "-p1003.1c-95", "IEEE Std 1003.1c-1995 ('POSIX.1')" },
        +  { "-p1003.1g-2000", "IEEE Std 1003.1g-2000 ('POSIX.1')" },
        +  { "-p1003.1i-95", "IEEE Std 1003.1i-1995 ('POSIX.1')" },
        +  { "-p1003.1-2001", "IEEE Std 1003.1-2001 ('POSIX.1')" },
        +  { "-p1003.1-2004", "IEEE Std 1003.1-2004 ('POSIX.1')" },
        +  { "-p1003.1-2008", "IEEE Std 1003.1-2008 ('POSIX.1')" },
        +  { "-iso9945-2-93", "ISO/IEC 9945-2:1993 ('POSIX.2')" },
        +  { "-p1003.2", "IEEE Std 1003.2 ('POSIX.2')" },
        +  { "-p1003.2-92", "IEEE Std 1003.2-1992 ('POSIX.2')" },
        +  { "-p1003.2a-92", "IEEE Std 1003.2a-1992 ('POSIX.2')" },
        +  { "-susv2", "Version 2 of the Single UNIX Specification ('SUSv2')" },
        +  { "-susv3", "Version 3 of the Single UNIX Specification ('SUSv3')" },
        +  { "-svid4", "System V Interface Definition, Fourth Edition ('SVID4')" },
        +  { "-xbd5", "X/Open Base Definitions Issue 5 ('XBD5')" },
        +  { "-xcu5", "X/Open Commands and Utilities Issue 5 ('XCU5')" },
        +  { "-xcurses4.2", "X/Open Curses Issue 4, Version 2 ('XCURSES4.2')" },
        +  { "-xns5", "X/Open Networking Services Issue 5 ('XNS5')" },
        +  { "-xns5.2", "X/Open Networking Services Issue 5.2 ('XNS5.2')" },
        +  { "-xpg3", "X/Open Portability Guide Issue 3 ('XPG3')" },
        +  { "-xpg4", "X/Open Portability Guide Issue 4 ('XPG4')" },
        +  { "-xpg4.2", "X/Open Portability Guide Issue 4, Version 2 ('XPG4.2')" },
        +  { "-xsh5", "X/Open System Interfaces and Headers Issue 5 ('XSH5')" },
        +  { "-ieee754", "IEEE Std 754-1985" },
        +  { "-iso8802-3", "ISO/IEC 8802-3:1989" }
        +};
        +
        +
        +/* default: print code */
        +
        +
        +/* static char eqndelimopen=0, eqndelimclose=0; */
        +static char escapesym = '\\', nobreaksym = '\'', controlsym = '.', fieldsym = 0, padsym = 0;
        +
        +static char *buffer = nullptr;
        +static int buffpos = 0, buffmax = 0;
        +static bool scaninbuff = false;
        +static int itemdepth = 0;
        +static int in_div = 0;
        +static int dl_set[20] = { 0 };
        +static QStack listItemStack;
        +static bool still_dd = 0;
        +static int tabstops[20] = { 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96 };
        +static int maxtstop = 12;
        +static int curpos = 0;
        +static bool break_the_while_loop = false;
        +
        +static char *scan_troff(char *c, bool san, char **result);
        +static char *scan_troff_mandoc(char *c, bool san, char **result);
        +static int getNumberRegisterValue(const QByteArray &name, int sign = 0);
        +
        +static QList s_argumentList;
        +
        +static QByteArray cssFile;
        +
        +static QByteArray s_dollarZero; // Value of $0
        +
        +void setCssFile(const QByteArray& _cssFile)
        +{
        +  cssFile = _cssFile;
        +}
        +
        +static void fill_old_character_definitions(void)
        +{
        +  for (const CSTRDEF &standardchar : standardchars)
        +  {
        +    const int nr = standardchar.nr;
        +    const char temp[3] = { char(nr / 256), char(nr % 256), 0 };
        +    QByteArray name(temp);
        +    s_characterDefinitionMap.insert(name, StringDefinition(standardchar.slen, standardchar.st));
        +  }
        +}
        +
        +static char outbuffer[NULL_TERMINATED(HUGE_STR_MAX)];
        +static int no_newline_output = 0;
        +static int newline_for_fun = 0;
        +static bool output_possible = false;
        +
        +static const char * const includedirs[] =
        +{
        +  "/usr/include",
        +  "/usr/include/sys",
        +  "/usr/local/include",
        +  "/opt/local/include",
        +  "/usr/ccs",
        +  "/usr/X11R6/include",
        +  "/usr/openwin/include",
        +  "/usr/include/g++",
        +  nullptr
        +};
        +
        +static bool ignore_links = false;
        +
        +static void add_links(char *c)
        +{
        +  /*
        +  ** Add the links to the output.
        +  ** At the moment the following are recognized:
        +  **
        +  ** name(*)                 -> ../man?/name.*
        +  ** method://string         -> method://string
        +  ** www.host.name           -> http://www.host.name
        +  ** ftp.host.name           -> ftp://ftp.host.name
        +  ** name@host               -> mailto:name@host
        +  **                 -> file:/usr/include/name.h   (guess)
        +  **
        +  ** Other possible links to add in the future:
        +  **
        +  ** /dir/dir/file  -> file:/dir/dir/file
        +  */
        +
        +  if (ignore_links)
        +  {
        +    output_real(c);
        +    return;
        +  }
        +
        +  int i, j, nr;
        +  char *f, *g, *h;
        +  const int numtests = 6; // Nmber of tests
        +  char *idtest[numtests]; // url, mailto, www, ftp, manpage, C header file
        +  bool ok;
        +  /* search for (section) */
        +  nr = 0;
        +  idtest[0] = strstr(c + 1, "://");
        +  idtest[1] = strchr(c + 1, '@');
        +  idtest[2] = strstr(c, "www.");
        +  idtest[3] = strstr(c, "ftp.");
        +  idtest[4] = strchr(c + 1, '(');
        +  idtest[5] = strstr(c + 1, ".h>");
        +  for (i = 0; i < numtests; ++i) nr += (idtest[i] != nullptr);
        +  while (nr)
        +  {
        +    j = -1;
        +    for (i = 0; i < numtests; i++)
        +      if (idtest[i] && (j < 0 || idtest[i] < idtest[j])) j = i;
        +    switch (j)
        +    {
        +      case 5:   /*  */
        +      {
        +        f = idtest[5];
        +        h = f + 2;
        +        g = f;
        +        while (g > c && g[-1] != ';') g--;
        +        bool wrote_include = false;
        +
        +        if (g != c)
        +        {
        +          QByteArray dir;
        +          QByteArray file(g, h - g);
        +          file = file.trimmed();
        +          for (int index = 0; includedirs[index]; index++)
        +          {
        +            QByteArray str(includedirs[index]);
        +            str.append('/');
        +            str.append(file);
        +            if (!access(str.data(), R_OK))
        +            {
        +              dir = includedirs[index];
        +              break;
        +            }
        +          }
        +          if (!dir.isEmpty())
        +          {
        +
        +            char t;
        +            t = *g;
        +            *g = 0;
        +            output_real(c);
        +            *g = t;
        +            *h = 0;
        +
        +            QByteArray str;
        +            str.append("");
        +            str.append(file.data());
        +            str.append(">");
        +
        +            output_real(str.data());
        +            c = f + 6;
        +            wrote_include = true;
        +          }
        +
        +        }
        +
        +        if (!wrote_include)
        +        {
        +          f[5] = 0;
        +          output_real(c);
        +          f[5] = ';';
        +          c = f + 5;
        +        }
        +      }
        +      break;
        +      case 4: /* manpage */
        +        f = idtest[j];
        +        /* check section */
        +        g = strchr(f, ')');
        +        // The character before f must be alphanumeric, the end of a HTML tag or the end of a  
        +        if (g != nullptr && f > c && (g - f) < 12 && (isalnum(f[-1]) || f[-1] == '>' || (f[-1] == ';')) &&
        +            (isdigit(f[1]) || (f[1] == 'n')) && f[1] != '0' && ((g - f) <= 2 || isalpha(f[2])))
        +        {
        +          ok = true;
        +          h = f + 2;
        +          while (h < g)
        +          {
        +            if (!isalnum(*h++))
        +            {
        +              ok = false;
        +              break;
        +            }
        +          }
        +        }
        +        else
        +          ok = false;
        +
        +        h = f - 1;
        +        if (ok)
        +        {
        +          // Skip  
        +          qCDebug(KIO_MAN_LOG) << "BEFORE SECTION:" <<  *h;
        +          if ((h > c + 5) && (! memcmp(h - 5, " ", 6)))
        +          {
        +            h -= 6;
        +            qCDebug(KIO_MAN_LOG) << "Skip  ";
        +          }
        +          else if ( (h > (c + 6)) && (!memcmp(h - 6, " ", 7)) ) //    narrow space
        +          {
        +            h -= 7;
        +          }
        +          else if (*h == ';')
        +          {
        +            // Not a non-breaking space, so probably not ok
        +            ok = false;
        +          }
        +        }
        +
        +        if (ok)
        +        {
        +          /* this might be a link */
        +          /* skip html makeup */
        +          while (h > c && *h == '>')
        +          {
        +            while (h != c && *h != '<') h--;
        +            if (h != c) h--;
        +          }
        +          if (isalnum(*h))
        +          {
        +            char t, sec, *e;
        +            QByteArray fstr(f);
        +            e = h + 1;
        +            sec = f[1];
        +            const int index = fstr.indexOf(')', 2);
        +            QByteArray subsec;
        +            if (index != -1)
        +              subsec = fstr.mid(2, index - 2);
        +            else // No closing ')' found, take first character as subsection.
        +              subsec = fstr.mid(2, 1);
        +            while (h > c && (isalnum(h[-1]) || h[-1] == '_'
        +                             || h[-1] == ':' || h[-1] == '-' || h[-1] == '.'))
        +              h--;
        +            t = *h;
        +            *h = '\0';
        +            output_real(c);
        +            *h = t;
        +            t = *e;
        +            *e = '\0';
        +            QByteArray str("";
        +            str += h;
        +            str += "";
        +            output_real(str.data());
        +            *e = t;
        +            c = e;
        +          }
        +        }
        +        *f = '\0';
        +        output_real(c);
        +        *f = '(';
        +        idtest[4] = f - 1;
        +        c = f;
        +        break; /* manpage */
        +      case 3: /* ftp */
        +      case 2: /* www */
        +        g = f = idtest[j];
        +        while (*g && (isalnum(*g) || *g == '_' || *g == '-' || *g == '+' ||
        +                      *g == '.' || *g == '/')) g++;
        +        if (g[-1] == '.') g--;
        +        if (g - f > 4)
        +        {
        +          char t;
        +          t = *f;
        +          *f = '\0';
        +          output_real(c);
        +          *f = t;
        +          t = *g;
        +          *g = '\0';
        +          QByteArray str;
        +          str.append("");
        +          str.append(f);
        +          str.append("");
        +          output_real(str.data());
        +          *g = t;
        +          c = g;
        +        }
        +        else
        +        {
        +          f[3] = '\0';
        +          output_real(c);
        +          c = f + 3;
        +          f[3] = '.';
        +        }
        +        break;
        +      case 1: /* mailto */
        +        g = f = idtest[1];
        +        while (g > c && (isalnum(g[-1]) || g[-1] == '_' || g[-1] == '-' ||
        +                         g[-1] == '+' || g[-1] == '.' || g[-1] == '%')) g--;
        +        if (g - 7 >= c && g[-1] == ':')
        +        {
        +          // We have perhaps an email address starting with mailto:
        +          if (!qstrncmp("mailto:", g - 7, 7))
        +            g -= 7;
        +        }
        +        h = f + 1;
        +        while (*h && (isalnum(*h) || *h == '_' || *h == '-' || *h == '+' ||
        +                      *h == '.')) h++;
        +        if (*h == '.') h--;
        +        if (h - f > 4 && f - g > 1)
        +        {
        +          char t;
        +          t = *g;
        +          *g = '\0';
        +          output_real(c);
        +          *g = t;
        +          t = *h;
        +          *h = '\0';
        +          QByteArray str;
        +          str.append("");
        +          str.append(g);
        +          str.append("");
        +          output_real(str.data());
        +          *h = t;
        +          c = h;
        +        }
        +        else
        +        {
        +          *f = '\0';
        +          output_real(c);
        +          *f = '@';
        +          idtest[1] = c;
        +          c = f;
        +        }
        +        break;
        +      case 0: /* url */
        +        g = f = idtest[0]; // ://foo...
        +
        +        // backup before :// to get protocol
        +        while (g > c && isalpha(g[-1]) && islower(g[-1])) g--;
        +        h = f + 3; // start past ://
        +        // determine length of path and part of query it looks like...
        +        while (*h && !isspace(*h) && *h != '<' && *h != '>' && *h != '"' &&
        +               *h != '&') h++;
        +        // if protocol length 3-6 characters and path has any length at all...
        +        // more tests added because this code breaks stylesheet links that use
        +        // the correct file:/// stuff.
        +        if (f - g > 2 && f - g < 7 && h - f > 3 && (strstr(c, "http://") != nullptr || strstr(c, "ftp://") != nullptr))
        +        {
        +          char t;
        +          t = *g;
        +          *g = '\0';
        +          output_real(c);
        +          *g = t;
        +          t = *h;
        +          *h = '\0';
        +          QByteArray str;
        +          str.append("");
        +          str.append(g);
        +          str.append("");
        +          output_real(str.data());
        +          *h = t;
        +          c = h;
        +        }
        +        else
        +        {
        +          f[1] = '\0';
        +          output_real(c);
        +          f[1] = '/';
        +          c = f + 1;
        +        }
        +        break;
        +      default:
        +        break;
        +    }
        +    nr = 0;
        +    if (idtest[0] && idtest[0] <= c) idtest[0] = strstr(c + 1, "://");
        +    if (idtest[1] && idtest[1] <= c) idtest[1] = strchr(c + 1, '@');
        +    if (idtest[2] && idtest[2] < c) idtest[2] = strstr(c, "www.");
        +    if (idtest[3] && idtest[3] < c) idtest[3] = strstr(c, "ftp.");
        +    if (idtest[4] && idtest[4] <= c) idtest[4] = strchr(c + 1, '(');
        +    if (idtest[5] && idtest[5] <= c) idtest[5] = strstr(c + 1, ".h>");
        +    for (i = 0; i < numtests; i++) nr += (idtest[i] != nullptr);
        +  }
        +  output_real(c);
        +}
        +
        +//---------------------------------------------------------------------
        +
        +static QByteArray current_font;
        +static int current_size = 0;
        +
        +/*
        + "fillout" is the mode of text output:
        + 1 = fill mode (line breaks happen when the browser wants them. Normal HTML text)
        + 0 = no-fill mode (preformatted text (
        ..
        ). + Input lines are output as-is, retaining line breaks and ignoring the current line length. +*/ +static int fillout = 1; + +//--------------------------------------------------------------------- + +static void out_html(const char *c) +{ + if ( !c || !*c ) return; + + // Added, probably due to the const? + char *c2 = qstrdup(c); + char *c3 = c2; + + static int obp = 0; + + if (no_newline_output) + { + int i = 0; + no_newline_output = 1; + while (c2[i]) + { + if (!no_newline_output) c2[i-1] = c2[i]; + if (c2[i] == '\n') no_newline_output = 0; + i++; + } + if (!no_newline_output) c2[i-1] = 0; + } + if (scaninbuff) + { + while (*c2) + { + if (buffpos >= buffmax) + { + char *h = new char[buffmax*2]; + + memcpy(h, buffer, buffmax); + delete [] buffer; + buffer = h; + buffmax = buffmax * 2; + } + buffer[buffpos++] = *c2++; + } + } + else + if (output_possible) + { + while (*c2) + { + outbuffer[obp++] = *c2; + if (*c2 == '\n' || obp >= HUGE_STR_MAX) + { + outbuffer[obp] = '\0'; + add_links(outbuffer); + obp = 0; + } + c2++; + } + } + delete [] c3; +} + +//--------------------------------------------------------------------- + +void checkListStack() // see if we need to end a previously begun list item +{ + if ( !listItemStack.isEmpty() && (listItemStack.size() == itemdepth) ) + { + out_html(""); + } +} + +//--------------------------------------------------------------------- + +static QByteArray set_font(const QByteArray& name) +{ + // Every font but R (Regular) creates elements + QByteArray markup; + if ( (current_font != "R") && (current_font != "P") && !current_font.isEmpty() ) + markup += ""; + const uint len = name.length(); + bool fontok = true; + if (len == 1) + { + const char lead = name[0]; + switch (lead) + { + case 'P': // ### TODO: this seems to mean "precedent font" + case 'R': + break; // regular, do nothing + case 'I': + markup += ""; + break; + case 'B': + markup += ""; + break; + case 'L': + markup += ""; + break; // ### What's L? + default: + fontok = false; + } + } + else if (len == 2) + { + if (name == "BI") + markup += ""; + // Courier + else if (name == "CR") + markup += ""; + else if (name == "CW") // CW is used by pod2man(1) (part of perldoc(1)) + markup += ""; + else if (name == "CI") + markup += ""; + else if (name == "CB") + markup += ""; + // Times + else if (name == "TR") + markup += ""; + else if (name == "TI") + markup += ""; + else if (name == "TB") + markup += ""; + // Helvetica + else if (name == "HR") + markup += ""; + else if (name == "HI") + markup += ""; + else if (name == "HB") + markup += ""; + else + fontok = false; + } + else if (len == 3) + { + if (name == "CBI") + markup += ""; + else if (name == "TBI") + markup += ""; + else if (name == "HBI") + markup += ""; + else + fontok = false; + } + else + fontok = false; + + if (fontok) + current_font = name; + else + current_font = "R"; // Still nothing, then it is 'R' (Regular) // krazy:exclude=doublequote_chars + return markup; +} + +//--------------------------------------------------------------------- + +static QByteArray change_to_size(int nr) +{ + switch (nr) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + nr = nr - '0'; + break; + case '\0': + break; + default: + nr = current_size + nr; + if (nr > 9) nr = 9; + if (nr < -9) nr = -9; + break; + } + if (nr == current_size) + return ""; + const QByteArray font(current_font); + QByteArray markup; + markup = set_font("R"); + if (current_size) + markup += ""; + current_size = nr; + if (nr) + { + int percent = 100 + nr*1; + markup += ""; + } + markup += set_font(font); + return markup; +} + +//--------------------------------------------------------------------- + +/* static int asint=0; */ +static int intresult = 0; + +static bool skip_escape = false; +static bool single_escape = false; + +static char *scan_escape_direct(char *c, QByteArray& cstr); + +/** + * scan a named character + * param c position + */ +static QByteArray scan_named_character(char*& c) +{ + QByteArray name; + if (*c == '(') + { + // \*(ab Name of two characters + if (c[1] == escapesym) + { + QByteArray cstr; + c = scan_escape_direct(c + 2, cstr); + // ### HACK: as we convert characters too early to HTML, we need to support more than 2 characters here and assume that all characters passed by the variable are to be used. + name = cstr; + } + else + { + name += c[1]; + name += c[2]; + c += 3; + } + } + else if (*c == '[') + { + // \*[long_name] Long name + // Named character groff(7) + // We must find the ] to get a name + c++; + while (*c && *c != ']' && *c != '\n') + { + if (*c == escapesym) + { + QByteArray cstr; + c = scan_escape_direct(c + 1, cstr); + const int result = cstr.indexOf(']'); + if (result == -1) + name += cstr; + else + { + // Note: we drop the characters after the ] + name += cstr.left(result); + } + } + else + { + name += *c; + c++; + } + } + if (!*c || *c == '\n') + { + qCDebug(KIO_MAN_LOG) << "Found linefeed! Could not parse character name: " << BYTEARRAY(name); + return ""; + } + c++; + } + else if (*c == 'C' || c[1] == '\'') + { + // \C'name' + c += 2; + while (*c && *c != '\'' && *c != '\n') + { + if (*c == escapesym) + { + QByteArray cstr; + c = scan_escape_direct(c + 1, cstr); + const int result = cstr.indexOf('\''); + if (result == -1) + name += cstr; + else + { + // Note: we drop the characters after the ] + name += cstr.left(result); + } + } + else + { + name += *c; + c++; + } + } + if (!*c || *c == '\n') + { + qCDebug(KIO_MAN_LOG) << "Found linefeed! Could not parse (\\C mode) character name: " << BYTEARRAY(name); + return ""; + } + c++; + } + // Note: characters with a one character length name do not exist, as they would collide with other escapes + + // Now we have the name, let us find it between the string names + QMap::const_iterator it = s_characterDefinitionMap.constFind(name); + if (it == s_characterDefinitionMap.constEnd()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: cannot find character with name: " << BYTEARRAY(name); + // No output, as an undefined string is empty by default + return ""; + } + else + { + qCDebug(KIO_MAN_LOG) << "Character with name: \"" << BYTEARRAY(name) << "\" => " << BYTEARRAY((*it).m_output); + return (*it).m_output; + } +} + +//--------------------------------------------------------------------- + +static QByteArray scan_named_string(char*& c) +{ + QByteArray name; + if (*c == '(') + { + // \*(ab Name of two characters + if (c[1] == escapesym) + { + QByteArray cstr; + c = scan_escape_direct(c + 2, cstr); + qCDebug(KIO_MAN_LOG) << "\\(" << BYTEARRAY(cstr); + // ### HACK: as we convert characters too early to HTML, we need to support more than 2 characters here and assume that all characters passed by the variable are to be used. + name = cstr; + } + else + { + name += c[1]; + name += c[2]; + c += 3; + } + } + else if (*c == '[') + { + // \*[long_name] Long name + // Named character groff(7) + // We must find the ] to get a name + c++; + while (*c && *c != ']' && *c != '\n') + { + if (*c == escapesym) + { + QByteArray cstr; + c = scan_escape_direct(c + 1, cstr); + const int result = cstr.indexOf(']'); + if (result == -1) + name += cstr; + else + { + // Note: we drop the characters after the ] + name += cstr.left(result); + } + } + else + { + name += *c; + c++; + } + } + if (!*c || *c == '\n') + { + qCDebug(KIO_MAN_LOG) << "Found linefeed! Could not parse string name: " << BYTEARRAY(name); + return ""; + } + c++; + } + else + { + // \*a Name of one character + name += *c; + c++; + } + // Now we have the name, let us find it between the string names + QMap::const_iterator it = s_stringDefinitionMap.constFind(name); + if (it == s_stringDefinitionMap.constEnd()) + { + // try a number register: + return QByteArray::number(getNumberRegisterValue(name)); + + //qCDebug(KIO_MAN_LOG) << "EXCEPTION: cannot find string with name: " << BYTEARRAY(name); + // No output, as an undefined string is empty by default + //return ""; + } + else + { + qCDebug(KIO_MAN_LOG) << "String with name: '" << BYTEARRAY(name) << "' => >>>" << BYTEARRAY((*it).m_output) << "<<<"; + return (*it).m_output; + } +} + +//--------------------------------------------------------------------- + +static QByteArray scan_dollar_parameter(char*& c) +{ + int argno = 0; // No dollar argument number yet! + if (*c == '0') + { + //qCDebug(KIO_MAN_LOG) << "$0"; + c++; + return s_dollarZero; + } + else if (*c >= '1' && *c <= '9') + { + //qCDebug(KIO_MAN_LOG) << "$ direct"; + argno = (*c - '0'); + c++; + } + else if (*c == '(') + { + //qCDebug(KIO_MAN_LOG) << "$("; + if (c[1] && c[2] && c[1] >= '0' && c[1] <= '9' && c[2] >= '0' && c[2] <= '9') + { + argno = (c[1] - '0') * 10 + (c[2] - '0'); + c += 3; + } + else + { + if (!c[1]) + c++; + else if (!c[2]) + c += 2; + else + c += 3; + return ""; + } + } + else if (*c == '[') + { + //qCDebug(KIO_MAN_LOG) << "$["; + argno = 0; + c++; + while (*c && *c >= '0' && *c <= '9' && *c != ']') + { + argno *= 10; + argno += (*c - '0'); + c++; + } + if (*c != ']') + { + return ""; + } + c++; + } + else if ((*c == '*') || (*c == '@')) + { + const bool quote = (*c == '@'); + QList::const_iterator it = s_argumentList.constBegin(); + QByteArray param; + bool space = false; + for (; it != s_argumentList.constEnd(); ++it) + { + if (space) + param += ' '; + if (quote) + param += '\"'; // Not as HTML, as it could be used by macros ! + param += (*it); + if (quote) + param += '\"'; // Not as HTML, as it could be used by macros! + space = true; + } + c++; + return param; + } + else + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: unknown parameter $" << *c; + return ""; + } + //qCDebug(KIO_MAN_LOG) << "ARG $" << argno; + if (!s_argumentList.isEmpty() && argno > 0) + { + //qCDebug(KIO_MAN_LOG) << "ARG $" << argno << " OK!"; + argno--; + if (argno >= s_argumentList.size()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: cannot find parameter $" << (argno + 1); + return ""; + } + + return s_argumentList[argno]; + } + return ""; +} + +//--------------------------------------------------------------------- +/// return the value of read-only number registers + +static int read_only_number_register(const QByteArray& name) +{ + // Internal read-only variables + if (name == ".$") + { + qCDebug(KIO_MAN_LOG) << "\\n[.$] == " << s_argumentList.size(); + return s_argumentList.size(); + } + else if (name == ".g") + return 0; // We are not groff(1) + else if (name == ".s") + return current_size; +#if 0 + // ### TODO: map the fonts to a number + else if (name == ".f") + return current_font; +#endif + else if (name == ".P") + return 0; // We are not printing + else if (name == ".A") + return s_nroff; +#ifndef SIMPLE_MAN2HTML + // Special KDE KIO man: + const QString version_string(KDE_VERSION_STRING); + const int version_major = version_string.section('.', 0, 0).toInt(); + const int version_minor = version_string.section('.', 1, 1).toInt(); + const int version_patch = version_string.section('.', 2, 2).toInt(); + if (name == ".KDE_VERSION_MAJOR") + return version_major; + else if (name == ".KDE_VERSION_MINOR") + return version_minor; + else if (name == ".KDE_VERSION_RELEASE") + return version_patch; + else if (name == ".KDE_VERSION") + return (version_major << 16) | (version_minor << 8) | version_patch; +#endif + else if ( name == ".T" ) + return 0; // Set to 1 in nroff, if -T option used; always 0 in troff. + + // ### TODO: groff defines many more read-only number registers + qCDebug(KIO_MAN_LOG) << "EXCEPTION: unknown read-only number register: " << BYTEARRAY(name); + + return 0; // Undefined variable + +} + +//--------------------------------------------------------------------- + +static int getNumberRegisterValue(const QByteArray &name, int sign) +{ + if (name[0] == '.') + { + return read_only_number_register(name); + } + else + { + QMap< QByteArray, NumberDefinition >::iterator it = s_numberDefinitionMap.find(name); + if (it == s_numberDefinitionMap.end()) + { + return 0; // Undefined variable + } + else + { + (*it).m_value += sign * (*it).m_increment; + return (*it).m_value; + } + } +} + +//--------------------------------------------------------------------- +/// get the value of a number register and auto-increment if asked + +static int scan_number_register(char*& c) +{ + int sign = 0; // Sign for auto-increment (if any) + switch (*c) + { + case '+': + sign = 1; + c++; + break; + case '-': + sign = -1; + c++; + break; + default: + break; + } + QByteArray name; + if (*c == '[') + { + c++; + if (*c == '+') + { + sign = 1; + c++; + } + else if (*c == '-') + { + sign = -1; + c++; + } + while (*c && *c != ']' && *c != '\n') + { + // ### TODO: a \*[string] could be inside and should be processed + name += *c; + c++; + } + if (!*c || *c == '\n') + { + qCDebug(KIO_MAN_LOG) << "Found linefeed! Could not parse number register name: " << BYTEARRAY(name); + return 0; + } + c++; + } + else if (*c == '(') + { + c++; + if (*c == '+') + { + sign = 1; + c++; + } + else if (*c == '-') + { + sign = -1; + c++; + } + name += c[0]; + name += c[1]; + c += 2; + } + else + { + name += *c; + c++; + } + + return getNumberRegisterValue(name, sign); +} + +//--------------------------------------------------------------------- +// scan a name from the following +// x ... return x (one char) +// (xx ... return xx (two chars) +// [xxx] ... return xxx (any chars) +// after scanning, c points to the terminating char (0, \n or ]) + +static QByteArray scan_name(char *&c) +{ + QByteArray name; + if ( *c == '(' ) + { + int i = 0; + for (c++; *c && (*c != '\n') && (i < 2); c++, i++) + name += *c; + } + else if ( *c == '[' ) + { + for (c++; *c && (*c != ']') && (*c != '\n'); c++) + name += *c; + } + else + name += *c; + + return name; +} + +//--------------------------------------------------------------------- +/// get and set font + +static QByteArray scan_named_font(char*& c) +{ + QByteArray name; + if (*c == '(') + { + // \f(ab Name of two characters + if (c[1] == escapesym) + { + QByteArray cstr; + c = scan_escape_direct(c + 2, cstr); + qCDebug(KIO_MAN_LOG) << "\\(" << BYTEARRAY(cstr); + // ### HACK: as we convert characters too early to HTML, we need to support more than 2 characters here and assume that all characters passed by the variable are to be used. + name = cstr; + } + else + { + name += c[1]; + name += c[2]; + c += 3; + } + } + else if (*c == '[') + { + // \f[long_name] Long name + // We must find the ] to get a name + c++; + while (*c && *c != ']' && *c != '\n') + { + if (*c == escapesym) + { + QByteArray cstr; + c = scan_escape_direct(c + 1, cstr); + const int result = cstr.indexOf(']'); + if (result == -1) + name += cstr; + else + { + // Note: we drop the characters after the ] + name += cstr.left(result); + } + } + else + { + name += *c; + c++; + } + } + if (!*c || *c == '\n') + { + qCDebug(KIO_MAN_LOG) << "Found linefeed! Could not parse font name: " << BYTEARRAY(name); + return ""; + } + c++; + } + else if ( *c ) // \f alone makes c point at 0-byte + { + // \fa Font name with one character or one digit + // ### HACK do *not* use: name = *c; or name would be empty + name += *c; + c++; + } + //qCDebug(KIO_MAN_LOG) << "FONT NAME: " << BYTEARRAY( name ); + // Now we have the name, let us find the font + bool ok = false; + const unsigned int number = name.toUInt(&ok); + if (ok) + { + if (number < 5) + { + const char* const fonts[] = { "R", "I", "B", "BI", "CR" }; // Regular, Italic, Bold, Bold Italic, Courier regular + name = fonts[ number ]; + } + else + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: font has too big number: " << BYTEARRAY(name) << " => " << number; + name = "R"; // Let assume Regular // krazy:exclude=doublequote_chars + } + } + else if (name.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: font has no name => using R"; + name = "R"; // Let assume Regular // krazy:exclude=doublequote_chars + } + if (!skip_escape) + return set_font(name); + else + return ""; +} + +//--------------------------------------------------------------------- + +static QByteArray scan_number_code(char*& c) +{ + QByteArray number; + if (*c != '\'') + return ""; + c++; // Go past the opening single quote + while (*c && (*c != '\n') && (*c != '\'')) + { + number += *c; + c++; + } + bool ok = false; + unsigned int result = number.toUInt(&ok); + if ((result < ' ') || (result > 65535)) + return ""; + else if (result == '\t') + { + curpos += 8; + curpos &= 0xfff8; + return "\t"; + } + number.setNum(result); + number.prepend("&#"); + number.append(";"); + curpos ++; + c++; // Go past the closing single quote + return number; +} + +//--------------------------------------------------------------------- +// ### TODO known missing escapes from groff(7): +// ### TODO \R + +static char *scan_escape_direct(char *c, QByteArray& cstr) +{ + bool exoutputp; + bool exskipescape; + int i, j; + bool cplusplus = true; // Should the c++ call be executed at the end of the function + + cstr.clear(); + intresult = 0; + switch (*c) + { + case 'e': + cstr += escapesym; + curpos++; + break; + case '0': // space of digit width + cstr = " "; // Unicode FIGURE SPACE + curpos++; + break; + case '~': // non-breakable-space (resizeable!) + case ' ': + cstr = " "; + curpos++; + break; + case '|': // half-non-breakable-space + case '^': // quarter-non-breakable-space + cstr = " "; // Unicode NARROW NO-BREAK SPACE + curpos++; + break; + case ':': + break; // ignore optional line break + case ',': + break; // left italic correction, always a zero motion + case '/': + cstr = " "; // Unicode THIN SPACE + curpos++; + break; // italic correction, i.e. a small piece of horizontal motion + case '"': // comment. skip rest of line + for (c++; *c && (*c != '\n'); c++) ; + cplusplus = false; + break; + // ### TODO \# like \" but does not ignore the end of line (groff(7)) + case '$': + { + c++; + cstr = scan_dollar_parameter(c); + cplusplus = false; + break; + } + case 'z': + { + c++; + if (*c == '\\') + { + c = scan_escape_direct(c + 1, cstr); + c--; + } + else + cstr = QByteArray(c, 1); + break; + } + case 'k': + { + // Store the current horizontal position in the _input_ line in + // number register with name POSITION + c++; + cstr = scan_name(c); + cstr.clear(); // TODO not implemented; discard it + break; + } + case '!': + case '%': + case 'a': + case 'd': + case 'r': + case 'u': + case '\n': + case '&': // Non-printing, zero width character + case ')': // Transparent non-printing zero width character + break; + case '(': + case '[': + case 'C': + { + // Do not go forward as scan_named_character needs the leading symbol + cstr = scan_named_character(c); + cplusplus = false; + break; + } + case '*': + { + c++; + cstr = scan_named_string(c); + cplusplus = false; + break; + } + case 'f': + { + c++; + cstr = scan_named_font(c); + cplusplus = false; + break; + } + case 'F': // font family + { + c++; + cstr = scan_name(c); + + if ( cstr == "C" ) + cstr = set_font("CR"); + else if ( cstr == "T" ) + cstr = set_font("TR"); + else if ( cstr == "H" ) + cstr = set_font("HR"); + else + cstr = set_font(cstr); + + break; + } + case 'm': // color + { + c++; + cstr = scan_name(c); + + if ( cstr.isEmpty() ) + cstr = ""; + else + cstr = ""; + + break; + } + case 's': // ### FIXME: many forms are missing + c++; + j = 0; + i = 0; + if (*c == '-') + { + j = -1; + c++; + } + else if (*c == '+') + { + j = 1; + c++; + } + if (*c == '0') c++; + else if (*c == '\\') + { + c++; + c = scan_escape_direct(c, cstr); + i = intresult; + if (!j) j = 1; + } + else + while (isdigit(*c) && (!i || (!j && i < 4))) i = i * 10 + (*c++) - '0'; + if (!j) + { + j = 1; + if (i) i = i - 10; + } + if (!skip_escape) cstr = change_to_size(i * j); + c--; + break; + case 'n': + { + c++; + intresult = scan_number_register(c); + cplusplus = false; + break; + } + case 'w': + c++; + i = *c; + c++; + exoutputp = output_possible; + exskipescape = skip_escape; + output_possible = false; + skip_escape = true; + j = 0; + while (*c != i) + { + j++; + if (*c == escapesym) + c = scan_escape_direct(c + 1, cstr); + else + c++; + } + output_possible = exoutputp; + skip_escape = exskipescape; + intresult = j; + break; + case 'l': + cstr = "
        "; + curpos = 0; + case 'b': + case 'v': + case 'x': + case 'o': + case 'L': + case 'h': + c++; + i = *c; + c++; + exoutputp = output_possible; + exskipescape = skip_escape; + output_possible = 0; + skip_escape = true; + while (*c != i) + if (*c == escapesym) c = scan_escape_direct(c + 1, cstr); + else c++; + output_possible = exoutputp; + skip_escape = exskipescape; + break; + case 'c': + no_newline_output = 1; + break; + case '{': + newline_for_fun++; + break; // Start conditional block + case '}': + if (newline_for_fun) newline_for_fun--; + break; // End conditional block + case 'p': + cstr = "
        \n"; + curpos = 0; + break; + case 't': + cstr = "\t"; + curpos = (curpos + 8) & 0xfff8; + break; + case '<': + cstr = "<"; + curpos++; + break; + case '>': + cstr = ">"; + curpos++; + break; + case '\\': + { + if (single_escape) + c--; + else + cstr = "\\"; + break; + } + case 'N': + { + c++; + cstr = scan_number_code(c); + cplusplus = false; + break; + } + case '\'': + cstr = "´"; + curpos++; + break; // groff(7) ### TODO verify + case '`': + cstr = "`"; // krazy:exclude=doublequote_chars + curpos++; + break; // groff(7) + case '-': + cstr = "-"; // krazy:exclude=doublequote_chars + curpos++; + break; // groff(7) + case '.': + cstr = "."; // krazy:exclude=doublequote_chars + curpos++; + break; // groff(7) + default: + cstr = QByteArray(c, 1); + curpos++; + break; + } + if (cplusplus && *c) + c++; + return c; +} + +//--------------------------------------------------------------------- + +static char *scan_escape(char *c) +{ + QByteArray cstr; + char* result = scan_escape_direct(c, cstr); + if (!skip_escape) + out_html(cstr); + return result; +} + +//--------------------------------------------------------------------- + +class TABLEROW; + +class TABLEITEM +{ + public: + TABLEITEM(TABLEROW *row); + ~TABLEITEM() + { + delete [] contents; + } + void setContents(const char *_contents) + { + delete [] contents; + contents = qstrdup(_contents); + } + const char *getContents() const + { + return contents; + } + + void init() + { + delete [] contents; + contents = nullptr; + size = 0; + align = 0; + valign = 0; + colspan = 1; + rowspan = 1; + font = 0; + vleft = 0; + vright = 0; + space = 0; + width = 0; + } + + void copyLayout(const TABLEITEM *orig) + { + size = orig->size; + align = orig->align; + valign = orig->valign; + colspan = orig->colspan; + rowspan = orig->rowspan; + font = orig->font; + vleft = orig->vleft; + vright = orig->vright; + space = orig->space; + width = orig->width; + } + + public: + int size, align, valign, colspan, rowspan, font, vleft, vright, space, width; + + private: + char *contents; + TABLEROW *_parent; +}; + +class TABLEROW +{ + char *test; + public: + TABLEROW() + { + test = new char; + prev = nullptr; + next = nullptr; + } + ~TABLEROW() + { + qDeleteAll(items); + items.clear(); + delete test; + + } + int length() const + { + return items.count(); + } + bool has(int index) + { + return (index >= 0) && (index < (int)items.count()); + } + TABLEITEM &at(int index) + { + return *items.at(index); + } + + TABLEROW *copyLayout() const; + + void addItem(TABLEITEM *item) + { + items.append(item); + } + TABLEROW *prev, *next; + + private: + QList items; +}; + +TABLEITEM::TABLEITEM(TABLEROW *row) : contents(nullptr), _parent(row) +{ + init(); + _parent->addItem(this); +} + +TABLEROW *TABLEROW::copyLayout() const +{ + TABLEROW *newrow = new TABLEROW(); + + QListIterator it(items); + while (it.hasNext()) + { + TABLEITEM *newitem = new TABLEITEM(newrow); + newitem->copyLayout(it.next()); + } + return newrow; +} + +static const char * const tableopt[] = { "center", "expand", "box", "allbox", + "doublebox", "tab", "linesize", + "delim", nullptr + }; +static const int tableoptl[] = { 6, 6, 3, 6, 9, 3, 8, 5, 0}; + + +static void clear_table(TABLEROW *table) +{ + TABLEROW *tr1, *tr2; + + tr1 = table; + while (tr1->prev) tr1 = tr1->prev; + while (tr1) + { + tr2 = tr1; + tr1 = tr1->next; + delete tr2; + } +} + +//--------------------------------------------------------------------- + +static char *scan_expression(char *c, int *result); + +//--------------------------------------------------------------------- + +static char *scan_format(char *c, TABLEROW **result, int *maxcol) +{ + TABLEROW *layout, *currow; + TABLEITEM *curfield; + int i, j; + if (*result) + { + clear_table(*result); + } + layout = currow = new TABLEROW(); + curfield = new TABLEITEM(currow); + while (*c && *c != '.') + { + switch (*c) + { + case 'C': + case 'c': + case 'N': + case 'n': + case 'R': + case 'r': + case 'A': + case 'a': + case 'L': + case 'l': + case 'S': + case 's': + case '^': + case '_': + if (curfield->align) + curfield = new TABLEITEM(currow); + curfield->align = toupper(*c); + c++; + break; + case 'i': + case 'I': + case 'B': + case 'b': + curfield->font = toupper(*c); + c++; + break; + case 'f': + case 'F': + c++; + curfield->font = toupper(*c); + c++; + if (!isspace(*c) && *c != '.') c++; + break; + case 't': + case 'T': + curfield->valign = 't'; + c++; + break; + case 'p': + case 'P': + c++; + i = j = 0; + if (*c == '+') + { + j = 1; + c++; + } + if (*c == '-') + { + j = -1; + c++; + } + while (isdigit(*c)) i = i * 10 + (*c++) - '0'; + if (j) curfield->size = i * j; + else curfield->size = j - 10; + break; + case 'v': + case 'V': + case 'w': + case 'W': + c = scan_expression(c + 2, &curfield->width); + break; + case '|': + if (curfield->align) curfield->vleft++; + else curfield->vright++; + c++; + break; + case 'e': + case 'E': + c++; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + i = 0; + while (isdigit(*c)) i = i * 10 + (*c++) - '0'; + curfield->space = i; + break; + case ',': + case '\n': + currow->next = new TABLEROW(); + currow->next->prev = currow; + currow = currow->next; + currow->next = nullptr; + curfield = new TABLEITEM(currow); + c++; + break; + default: + c++; + break; + } + } + if (*c == '.') while (*c++ != '\n'); + *maxcol = 0; + currow = layout; + while (currow) + { + i = currow->length(); + if (i > *maxcol) *maxcol = i; + currow = currow->next; + } + *result = layout; + return c; +} + +//--------------------------------------------------------------------- + +static TABLEROW *next_row(TABLEROW *tr) +{ + if (tr->next) + { + tr = tr->next; + if (!tr->next) + return next_row(tr); + return tr; + } + else + { + tr->next = tr->copyLayout(); + tr->next->prev = tr; + return tr->next; + } +} + +//--------------------------------------------------------------------- + +static char itemreset[20] = "\\fR\\s0"; + +#define FORWARDCUR do { curfield++; } while (currow->has(curfield) && currow->at(curfield).align=='S'); + +static char *scan_table(char *c) +{ + char *h; + char *g; + int center = 0, expand = 0, box = 0, border = 0, linesize = 1; + int i, j, maxcol = 0, finished = 0; + QByteArray oldfont; + int oldsize, oldfillout; + char itemsep = '\t'; + TABLEROW *layout = nullptr, *currow; + int curfield = -1; + while (*c++ != '\n'); + h = c; + if (*h == '.') return c -1; + oldfont = current_font; + oldsize = current_size; + oldfillout = fillout; + out_html(set_font("R")); + out_html(change_to_size(0)); + if (!fillout) + { + fillout = 1; + out_html("
        "); + } + while (*h && *h != '\n') h++; + if (h[-1] == ';') + { + /* scan table options */ + while (c < h) + { + while (isspace(*c)) c++; + for (i = 0; tableopt[i] && qstrncmp(tableopt[i], c, tableoptl[i]);i++); + c = c + tableoptl[i]; + switch (i) + { + case 0: + center = 1; + break; + case 1: + expand = 1; + break; + case 2: + box = 1; + break; + case 3: + border = 1; + break; + case 4: + box = 2; + break; + case 5: + while (*c++ != '('); + itemsep = *c++; + break; + case 6: + while (*c++ != '('); + linesize = 0; + while (isdigit(*c)) linesize = linesize * 10 + (*c++) - '0'; + break; + case 7: + while (*c != ')') c++; + default: + break; + } + c++; + } + c = h + 1; + } + /* scan layout */ + c = scan_format(c, &layout, &maxcol); +// currow=layout; + currow = next_row(layout); + curfield = 0; + i = 0; + while (!finished && *c) + { + /* search item */ + h = c; + if ((*c == '_' || *c == '=') && (c[1] == itemsep || c[1] == '\n')) + { + if (c[-1] == '\n' && c[1] == '\n') + { + if (currow->prev) + { + currow->prev->next = new TABLEROW(); + currow->prev->next->next = currow; + currow->prev->next->prev = currow->prev; + currow->prev = currow->prev->next; + } + else + { + currow->prev = layout = new TABLEROW(); + currow->prev->prev = nullptr; + currow->prev->next = currow; + } + TABLEITEM *newitem = new TABLEITEM(currow->prev); + newitem->align = *c; + newitem->colspan = maxcol; + curfield = 0; + c = c + 2; + } + else + { + if (currow->has(curfield)) + { + currow->at(curfield).align = *c; + FORWARDCUR; + } + if (c[1] == '\n') + { + currow = next_row(currow); + curfield = 0; + } + c = c + 2; + } + } + else if (*c == 'T' && c[1] == '{') + { + h = c + 2; + c = strstr(h, "\nT}"); + c++; + *c = '\0'; + g = nullptr; + scan_troff(h, 0, &g); + scan_troff(itemreset, 0, &g); + *c = 'T'; + c += 3; + if (currow->has(curfield)) + { + currow->at(curfield).setContents(g); + FORWARDCUR; + } + delete [] g; + + if (c[-1] == '\n') + { + currow = next_row(currow); + curfield = 0; + } + } + else if (*c == '.' && c[1] == 'T' && c[2] == '&' && c[-1] == '\n') + { + TABLEROW *hr; + while (*c++ != '\n'); + hr = currow; + currow = currow->prev; + hr->prev = nullptr; + c = scan_format(c, &hr, &i); + hr->prev = currow; + currow->next = hr; + currow = hr; + next_row(currow); + curfield = 0; + } + else if (*c == '.' && c[1] == 'T' && c[2] == 'E' && c[-1] == '\n') + { + finished = 1; + while (*c++ != '\n'); + if (currow->prev) + currow->prev->next = nullptr; + currow->prev = nullptr; + clear_table(currow); + currow = nullptr; + } + else if (*c == '.' && c[-1] == '\n' && !isdigit(c[1])) + { + /* skip troff request inside table (usually only .sp ) */ + while (*c++ != '\n'); + } + else + { + h = c; + while (*c && (*c != itemsep || c[-1] == '\\') && + (*c != '\n' || c[-1] == '\\')) c++; + i = 0; + if (*c == itemsep) + { + i = 1; + *c = '\n'; + } + if (h[0] == '\\' && h[2] == '\n' && + (h[1] == '_' || h[1] == '^')) + { + if (currow->has(curfield)) + { + currow->at(curfield).align = h[1]; + FORWARDCUR; + } + h = h + 3; + } + else + { + g = nullptr; + h = scan_troff(h, 1, &g); + scan_troff(itemreset, 0, &g); + if (currow->has(curfield)) + { + currow->at(curfield).setContents(g); + FORWARDCUR; + } + delete [] g; + } + if (i) *c = itemsep; + c = h; + if (c[-1] == '\n') + { + currow = next_row(currow); + curfield = 0; + } + } + } + /* calculate colspan and rowspan */ + currow = layout; + while (currow->next) currow = currow->next; + while (currow) + { + int ti = 0, ti1 = 0, ti2 = -1; + TABLEROW *prev = currow->prev; + if (!prev) + break; + + while (prev->has(ti1)) + { + if (currow->has(ti)) + switch (currow->at(ti).align) + { + case 'S': + if (currow->has(ti2)) + { + currow->at(ti2).colspan++; + if (currow->at(ti2).rowspan < prev->at(ti1).rowspan) + currow->at(ti2).rowspan = prev->at(ti1).rowspan; + } + break; + case '^': + if (prev->has(ti1)) prev->at(ti1).rowspan++; + default: + if (ti2 < 0) ti2 = ti; + else + { + do + { + ti2++; + } + while (currow->has(ti2) && currow->at(ti2).align == 'S'); + } + break; + } + ti++; + if (ti1 >= 0) ti1++; + } + currow = currow->prev; + } + /* produce html output */ + if (center) out_html("
        "); + if (box == 2) out_html(""); + curfield = 0; + while (currow->has(curfield)) + { + if (currow->at(curfield).align != 'S' && currow->at(curfield).align != '^') + { + out_html(""); + } + curfield++; + } + out_html("\n"); + currow = currow->next; + } + + clear_table(layout); + + if (box && !border) out_html("
        "); + out_html("
        \n"); + currow = layout; + while (currow) + { + j = 0; + out_html("
        at(curfield).align) + { + case 'N': + currow->at(curfield).space += 4; + case 'R': + out_html(" ALIGN=right"); + break; + case 'C': + out_html(" ALIGN=center"); + default: + break; + } + if (!currow->at(curfield).valign && currow->at(curfield).rowspan > 1) + out_html(" VALIGN=center"); + if (currow->at(curfield).colspan > 1) + { + out_html(" COLSPAN="); + out_html(QByteArray::number(currow->at(curfield).colspan)); + } + if (currow->at(curfield).rowspan > 1) + { + out_html(" ROWSPAN="); + out_html(QByteArray::number(currow->at(curfield).rowspan)); + } + j = j + currow->at(curfield).colspan; + out_html(">"); + if (currow->at(curfield).size) out_html(change_to_size(currow->at(curfield).size)); + if (currow->at(curfield).font) + out_html(set_font(QByteArray::number(currow->at(curfield).font))); + switch (currow->at(curfield).align) + { + case '=': + out_html("

        "); + break; + case '_': + out_html("
        "); + break; + default: + out_html(currow->at(curfield).getContents()); + break; + } + if (currow->at(curfield).space) + for (i = 0; i < currow->at(curfield).space;i++) out_html(" "); + if (currow->at(curfield).font) out_html(set_font("R")); + if (currow->at(curfield).size) out_html(change_to_size(0)); + if (j >= maxcol && currow->at(curfield).align > '@' && currow->at(curfield).align != '_') + out_html("
        "); + out_html("
        "); + out_html(""); + if (box == 2) out_html(""); + if (center) + out_html("
        \n"); + else + out_html("\n"); + if (!oldfillout) out_html("
        ");
        +  fillout = oldfillout;
        +  out_html(change_to_size(oldsize));
        +  out_html(set_font(oldfont));
        +  return c;
        +}
        +
        +//---------------------------------------------------------------------
        +
        +static char *scan_expression(char *c, int *result, const unsigned int numLoop)
        +{
        +  int value = 0, value2, sign = 1, opex = 0;
        +  char oper = 'c';
        +  bool oldSkipEscape = skip_escape;
        +  skip_escape = true;  // evaluating an expression shall not print it
        +
        +  if (*c == '!')
        +  {
        +    c = scan_expression(c + 1, &value);
        +    value = (!value);
        +  }
        +  else if (*c == 'n')
        +  {
        +    c++;
        +    value = s_nroff;
        +  }
        +  else if (*c == 't')
        +  {
        +    c++;
        +    value = 1 - s_nroff;
        +  }
        +  else if (*c == '\'' || *c == '"' || *c < ' ' || (*c == '\\' && c[1] == '('))
        +  {
        +    /* ?string1?string2?
        +    ** test if string1 equals string2.
        +    */
        +    char *st1 = nullptr, *st2 = nullptr, *h;
        +    char *tcmp = nullptr;
        +    char sep;
        +    sep = *c;
        +    if (sep == '\\')
        +    {
        +      tcmp = c;
        +      c = c + 3;
        +    }
        +    c++;
        +    h = c;
        +    while (*c != sep && (!tcmp || qstrncmp(c, tcmp, 4))) c++;
        +    *c = '\n';
        +    scan_troff(h, 1, &st1);
        +    *c = sep;
        +    if (tcmp) c = c + 3;
        +    c++;
        +    h = c;
        +    while (*c != sep && (!tcmp || qstrncmp(c, tcmp, 4))) c++;
        +    *c = '\n';
        +    scan_troff(h, 1, &st2);
        +    *c = sep;
        +    if (!st1 && !st2) value = 1;
        +    else if (!st1 || !st2) value = 0;
        +    else value = (!qstrcmp(st1, st2));
        +    delete [] st1;
        +    delete [] st2;
        +    if (tcmp) c = c + 3;
        +    c++;
        +  }
        +  else
        +  {
        +    while (*c && (!isspace(*c) || (numLoop > 0)) && *c != ')' && opex >= 0)
        +    {
        +      opex = 0;
        +      switch (*c)
        +      {
        +        case '(':
        +          c = scan_expression(c + 1, &value2, numLoop + 1);
        +          value2 = sign * value2;
        +          opex = 1;
        +          break;
        +        case '.':
        +        case '0':
        +        case '1':
        +        case '2':
        +        case '3':
        +        case '4':
        +        case '5':
        +        case '6':
        +        case '7':
        +        case '8':
        +        case '9':
        +        {
        +          int num = 0, denum = 1;
        +          value2 = 0;
        +          while (isdigit(*c)) value2 = value2 * 10 + ((*c++) - '0');
        +          if (*c == '.' && isdigit(c[1]))
        +          {
        +            c++;
        +            while (isdigit(*c))
        +            {
        +              num = num * 10 + ((*c++) - '0');
        +              denum = denum * 10;
        +            }
        +          }
        +          if (isalpha(*c))
        +          {
        +            /* scale indicator */
        +            switch (*c)
        +            {
        +              case 'i': /* inch -> 10pt */
        +                value2 = value2 * 10 + (num * 10 + denum / 2) / denum;
        +                num = 0;
        +                break;
        +              default:
        +                break;
        +            }
        +            c++;
        +          }
        +          value2 = value2 + (num + denum / 2) / denum;
        +          value2 = sign * value2;
        +          opex = 1;
        +          if (*c == '.')
        +            opex = -1;
        +
        +        }
        +        break;
        +        case '\\':
        +          c = scan_escape(c + 1);
        +          value2 = intresult * sign;
        +          if (isalpha(*c)) c++; /* scale indicator */
        +          opex = 1;
        +          break;
        +        case '-':
        +          if (oper)
        +          {
        +            sign = -1;
        +            c++;
        +            break;
        +          }
        +        case '>':
        +        case '<':
        +        case '+':
        +        case '/':
        +        case '*':
        +        case '%':
        +        case '&':
        +        case '=':
        +        case ':':
        +          if (c[1] == '=') oper = (*c++) + 16;
        +          else oper = *c;
        +          c++;
        +          break;
        +        default:
        +          c++;
        +          break;
        +      }
        +      if (opex > 0)
        +      {
        +        sign = 1;
        +        switch (oper)
        +        {
        +          case 'c':
        +            value = value2;
        +            break;
        +          case '-':
        +            value = value - value2;
        +            break;
        +          case '+':
        +            value = value + value2;
        +            break;
        +          case '*':
        +            value = value * value2;
        +            break;
        +          case '/':
        +            if (value2) value = value / value2;
        +            break;
        +          case '%':
        +            if (value2) value = value % value2;
        +            break;
        +          case '<':
        +            value = (value < value2);
        +            break;
        +          case '>':
        +            value = (value > value2);
        +            break;
        +          case '>'+16:
        +            value = (value >= value2);
        +            break;
        +          case '<'+16:
        +            value = (value <= value2);
        +            break;
        +          case '=':
        +          case '='+16:
        +            value = (value == value2);
        +            break;
        +          case '&':
        +            value = (value && value2);
        +            break;
        +          case ':':
        +            value = (value || value2);
        +            break;
        +          default:
        +          {
        +            qCDebug(KIO_MAN_LOG) << "Unknown operator " << char(oper);
        +          }
        +        }
        +        oper = 0;
        +      }
        +    }
        +    if (*c == ')') c++;
        +  }
        +  *result = value;
        +
        +  skip_escape = oldSkipEscape;
        +
        +  return c;
        +}
        +
        +//---------------------------------------------------------------------
        +
        +static char *scan_expression(char *c, int *result)
        +{
        +  return scan_expression(c, result, 0);
        +}
        +
        +//---------------------------------------------------------------------
        +
        +static void trans_char(char *c, char s, char t)
        +{
        +  char *sl = c;
        +  int slash = 0;
        +  while (*sl != '\n' || slash)
        +  {
        +    if (!slash)
        +    {
        +      if (*sl == escapesym)
        +        slash = 1;
        +      else if (*sl == s)
        +        *sl = t;
        +    }
        +    else slash = 0;
        +    sl++;
        +  }
        +}
        +
        +//---------------------------------------------------------------------
        +// parse 1 line (or a line which stretches multiple lines by \(enter) )
        +// return all arguments starting at \p c in \p args
        +// returns the pointer to the next char where scanning should continue
        +// (which is the char after the ending \n)
        +// argPointers .. a list of pointers to the startchars of each arg pointing into the string given with c
        +
        +void getArguments(/* const */ char *&c, QList &args, QList *argPointers = nullptr)
        +{
        +  args.clear();
        +  if ( argPointers )
        +    argPointers->clear();
        +
        +  QByteArray arg;
        +  arg.reserve(30);  // reduce num of reallocs
        +  bool inString = false;
        +  bool inArgument = false;
        +
        +  for (; *c && (*c != '\n'); c++)
        +  {
        +    if ( *c == '"' )
        +    {
        +      if ( !inString )
        +      {
        +        inString = true;  // start of quoted argument
        +      }
        +      else
        +      {
        +        // according to http://heirloom.sourceforge.net/doctools/troff.pdf chapter 7.3
        +        // two consecutive quotes inside a string is one quote char
        +        if ( *(c+1) == '"' )
        +        {
        +          arg += '"';
        +          c++;
        +        }
        +        else  // end of quoted argument
        +        {
        +          args.append(arg);
        +          arg.clear();
        +          inString = false;
        +          inArgument = false;
        +        }
        +      }
        +    }
        +    else if ( *c == ' ' )
        +    {
        +      if ( inString )
        +      {
        +        arg += *c;
        +        if ( !inArgument )  // argument not yet found (leading spaces)
        +        {
        +          inArgument = true;
        +
        +          if ( argPointers )
        +            argPointers->append(c);
        +        }
        +      }
        +      else if ( inArgument )
        +      {
        +        // end of previous argument
        +        args.append(arg);
        +        arg.clear();
        +        inArgument = false;
        +      }
        +    }
        +    else if ( (*c == escapesym) && (*(c+1) == ' ') )
        +    {
        +      // special handling \ shall be kept as is
        +      arg += *c++;
        +      arg += *c;
        +
        +      if ( !inArgument )  // argument not yet found (leading spaces)
        +      {
        +        inArgument = true;
        +
        +        if ( argPointers )
        +          argPointers->append(c);
        +      }
        +    }
        +    else if ( (*c == escapesym) && (*(c+1) == '\n') )
        +    {
        +      c++;
        +    }
        +    else if ( (*c == escapesym) && (*(c+1) == '"') )  // start of comment; skip rest of line
        +    {
        +      if ( inArgument )
        +      {
        +        // end of previous argument
        +        args.append(arg);
        +        arg.clear();
        +        inArgument = false;
        +      }
        +
        +      // skip rest of line
        +      while ( *c && (*c != '\n') ) c++;
        +      break;
        +    }
        +    else if ( *c != ' ' )
        +    {
        +      arg += *c;
        +      if ( !inArgument )  // argument not yet found (leading spaces)
        +      {
        +        inArgument = true;
        +
        +        if ( argPointers )
        +          argPointers->append(c);
        +      }
        +    }
        +  }
        +
        +  if ( inArgument )
        +  {
        +    // end of previous argument
        +    args.append(arg);
        +  }
        +
        +  if ( *c ) c++;
        +}
        +
        +//---------------------------------------------------------------------
        +
        +static const char * const abbrev_list[] =
        +{
        +  "GSBG", "Getting Started ",
        +  "SUBG", "Customizing SunOS",
        +  "SHBG", "Basic Troubleshooting",
        +  "SVBG", "SunView User's Guide",
        +  "MMBG", "Mail and Messages",
        +  "DMBG", "Doing More with SunOS",
        +  "UNBG", "Using the Network",
        +  "GDBG", "Games, Demos & Other Pursuits",
        +  "CHANGE", "SunOS 4.1 Release Manual",
        +  "INSTALL", "Installing SunOS 4.1",
        +  "ADMIN", "System and Network Administration",
        +  "SECUR", "Security Features Guide",
        +  "PROM", "PROM User's Manual",
        +  "DIAG", "Sun System Diagnostics",
        +  "SUNDIAG", "Sundiag User's Guide",
        +  "MANPAGES", "SunOS Reference Manual",
        +  "REFMAN", "SunOS Reference Manual",
        +  "SSI", "Sun System Introduction",
        +  "SSO", "System Services Overview",
        +  "TEXT", "Editing Text Files",
        +  "DOCS", "Formatting Documents",
        +  "TROFF", "Using nroff and troff",
        +  "INDEX", "Global Index",
        +  "CPG", "C Programmer's Guide",
        +  "CREF", "C Reference Manual",
        +  "ASSY", "Assembly Language Reference",
        +  "PUL", "Programming Utilities and Libraries",
        +  "DEBUG", "Debugging Tools",
        +  "NETP", "Network Programming",
        +  "DRIVER", "Writing Device Drivers",
        +  "STREAMS", "STREAMS Programming",
        +  "SBDK", "SBus Developer's Kit",
        +  "WDDS", "Writing Device Drivers for the SBus",
        +  "FPOINT", "Floating-Point Programmer's Guide",
        +  "SVPG", "SunView 1 Programmer's Guide",
        +  "SVSPG", "SunView 1 System Programmer's Guide",
        +  "PIXRCT", "Pixrect Reference Manual",
        +  "CGI", "SunCGI Reference Manual",
        +  "CORE", "SunCore Reference Manual",
        +  "4ASSY", "Sun-4 Assembly Language Reference",
        +  "SARCH", "SPARC Architecture Manual",
        +  "KR", "The C Programming Language",
        +  nullptr, nullptr
        +};
        +
        +static const char *lookup_abbrev(const char *c)
        +{
        +  int i = 0;
        +
        +  if (!c) return "";
        +  while (abbrev_list[i] && qstrcmp(c, abbrev_list[i])) i = i + 2;
        +  if (abbrev_list[i])
        +    return abbrev_list[i+1];
        +  else
        +    return c;
        +}
        +
        +//---------------------------------------------------------------------
        +
        +static const char * const section_list[] =
        +{
        +#ifdef Q_OS_SOLARIS
        +  // for Solaris
        +  "1", "User Commands",
        +  "1B", "SunOS/BSD Compatibility Package Commands",
        +  "1b", "SunOS/BSD Compatibility Package Commands",
        +  "1C", "Communication Commands ",
        +  "1c", "Communication Commands",
        +  "1F", "FMLI Commands ",
        +  "1f", "FMLI Commands",
        +  "1G", "Graphics and CAD Commands ",
        +  "1g", "Graphics and CAD Commands ",
        +  "1M", "Maintenance Commands",
        +  "1m", "Maintenance Commands",
        +  "1S", "SunOS Specific Commands",
        +  "1s", "SunOS Specific Commands",
        +  "2", "System Calls",
        +  "3", "C Library Functions",
        +  "3B", "SunOS/BSD Compatibility Library Functions",
        +  "3b", "SunOS/BSD Compatibility Library Functions",
        +  "3C", "C Library Functions",
        +  "3c", "C Library Functions",
        +  "3E", "C Library Functions",
        +  "3e", "C Library Functions",
        +  "3F", "Fortran Library Routines",
        +  "3f", "Fortran Library Routines",
        +  "3G", "C Library Functions",
        +  "3g", "C Library Functions",
        +  "3I", "Wide Character Functions",
        +  "3i", "Wide Character Functions",
        +  "3K", "Kernel VM Library Functions",
        +  "3k", "Kernel VM Library Functions",
        +  "3L", "Lightweight Processes Library",
        +  "3l", "Lightweight Processes Library",
        +  "3M", "Mathematical Library",
        +  "3m", "Mathematical Library",
        +  "3N", "Network Functions",
        +  "3n", "Network Functions",
        +  "3R", "Realtime Library",
        +  "3r", "Realtime Library",
        +  "3S", "Standard I/O Functions",
        +  "3s", "Standard I/O Functions",
        +  "3T", "Threads Library",
        +  "3t", "Threads Library",
        +  "3W", "C Library Functions",
        +  "3w", "C Library Functions",
        +  "3X", "Miscellaneous Library Functions",
        +  "3x", "Miscellaneous Library Functions",
        +  "4", "File Formats",
        +  "4B", "SunOS/BSD Compatibility Package File Formats",
        +  "4b", "SunOS/BSD Compatibility Package File Formats",
        +  "5", "Headers, Tables, and Macros",
        +  "6", "Games and Demos",
        +  "7", "Special Files",
        +  "7B", "SunOS/BSD Compatibility Special Files",
        +  "7b", "SunOS/BSD Compatibility Special Files",
        +  "8", "Maintenance Procedures",
        +  "8C", "Maintenance Procedures",
        +  "8c", "Maintenance Procedures",
        +  "8S", "Maintenance Procedures",
        +  "8s", "Maintenance Procedures",
        +  "9", "DDI and DKI",
        +  "9E", "DDI and DKI Driver Entry Points",
        +  "9e", "DDI and DKI Driver Entry Points",
        +  "9F", "DDI and DKI Kernel Functions",
        +  "9f", "DDI and DKI Kernel Functions",
        +  "9S", "DDI and DKI Data Structures",
        +  "9s", "DDI and DKI Data Structures",
        +  "L", "Local Commands",
        +#elif defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
        +  "1", "General Commands",
        +  "2", "System Calls",
        +  "3", "Library Functions",
        +  "4", "Kernel Interfaces",
        +  "5", "File Formats",
        +  "6", "Games",
        +  "7", "Miscellaneous Information",
        +  "8", "System Manager's Manuals",
        +  "9", "Kernel Developer's Manuals",
        +#else
        +  // Other OS
        +  "1", "User Commands ",
        +  "1C", "User Commands",
        +  "1G", "User Commands",
        +  "1S", "User Commands",
        +  "1V", "User Commands ",
        +  "2", "System Calls",
        +  "2V", "System Calls",
        +  "3", "C Library Functions",
        +  "3C", "Compatibility Functions",
        +  "3F", "Fortran Library Routines",
        +  "3K", "Kernel VM Library Functions",
        +  "3L", "Lightweight Processes Library",
        +  "3M", "Mathematical Library",
        +  "3N", "Network Functions",
        +  "3R", "RPC Services Library",
        +  "3S", "Standard I/O Functions",
        +  "3V", "C Library Functions",
        +  "3X", "Miscellaneous Library Functions",
        +  "4", "Devices and Network Interfaces",
        +  "4F", "Protocol Families",
        +  "4I", "Devices and Network Interfaces",
        +  "4M", "Devices and Network Interfaces",
        +  "4N", "Devices and Network Interfaces",
        +  "4P", "Protocols",
        +  "4S", "Devices and Network Interfaces",
        +  "4V", "Devices and Network Interfaces",
        +  "5", "File Formats",
        +  "5V", "File Formats",
        +  "6", "Games and Demos",
        +  "7", "Environments, Tables, and Troff Macros",
        +  "7V", "Environments, Tables, and Troff Macros",
        +  "8", "Maintenance Commands",
        +  "8C", "Maintenance Commands",
        +  "8S", "Maintenance Commands",
        +  "8V", "Maintenance Commands",
        +  "L", "Local Commands",
        +#endif
        +  // The defaults
        +  nullptr, "Misc. Reference Manual Pages",
        +  nullptr, nullptr
        +};
        +
        +static const char *section_name(char *c)
        +{
        +  int i = 0;
        +
        +  if (!c) return "";
        +  while (section_list[i] && qstrcmp(c, section_list[i])) i = i + 2;
        +  if (section_list[i+1]) return section_list[i+1];
        +  else return c;
        +}
        +
        +static char *skip_till_newline(char *c)
        +{
        +  int lvl = 0;
        +
        +  while (*c && (*c != '\n' || lvl > 0))
        +  {
        +    if (*c == '\\')
        +    {
        +      c++;
        +      if (*c == '}')
        +        lvl--;
        +      else if (*c == '{')
        +        lvl++;
        +      else if (*c == '\0')
        +        break;
        +    }
        +    c++;
        +  }
        +  if (*c) c++;
        +  if (lvl < 0 && newline_for_fun)
        +  {
        +    newline_for_fun = newline_for_fun + lvl;
        +    if (newline_for_fun < 0) newline_for_fun = 0;
        +  }
        +  return c;
        +}
        +
        +//---------------------------------------------------------------------
        +
        +static bool s_whileloop = false;
        +
        +/// Processing the .while request
        +static void request_while(char*& c, int j, bool mdoc)
        +{
        +  // ### TODO: .continue
        +  qCDebug(KIO_MAN_LOG) << "Entering .while";
        +  c += j;
        +  char* newline = skip_till_newline(c);
        +  const char oldchar = *newline;
        +  *newline = 0;
        +  // We store the full .while stuff into a QByteArray as if it would be a macro
        +  const QByteArray macro = c ;
        +  qCDebug(KIO_MAN_LOG) << "'Macro' of .while" << BYTEARRAY(macro);
        +  // Prepare for continuing after .while loop end
        +  *newline = oldchar;
        +  c = newline;
        +  // Process -while loop
        +  const bool oldwhileloop = s_whileloop;
        +  s_whileloop = true;
        +  int result = true; // It must be an int due to the call to scan_expression
        +  break_the_while_loop = false;
        +  while (result && !break_the_while_loop)
        +  {
        +    // Unlike for a normal macro, we have the condition at start, so we do not need to prepend extra bytes
        +    char* liveloop = qstrdup(macro.data());
        +    qCDebug(KIO_MAN_LOG) << "Scanning .while condition";
        +    qCDebug(KIO_MAN_LOG) << "Loop macro " << liveloop;
        +    char* end_expression = scan_expression(liveloop, &result);
        +    qCDebug(KIO_MAN_LOG) << "After " << end_expression;
        +    if (result)
        +    {
        +      qCDebug(KIO_MAN_LOG) << "New .while iteration";
        +      // The condition is true, so call the .while's content
        +      char* help = end_expression + 1;
        +      while (*help && (*help == ' '  || *help == '\t'))
        +        ++help;
        +      if (! *help)
        +      {
        +        // We have a problem, so stop .while
        +        result = false;
        +        break;
        +      }
        +      if (mdoc)
        +        scan_troff_mandoc(help, false, nullptr);
        +      else
        +        scan_troff(help, false, nullptr);
        +    }
        +    delete[] liveloop;
        +  }
        +  break_the_while_loop = false;
        +
        +  //
        +  s_whileloop = oldwhileloop;
        +  qCDebug(KIO_MAN_LOG) << "Ending .while";
        +}
        +
        +//---------------------------------------------------------------------
        +// Processing mixed fonts requests like .BI
        +
        +static void request_mixed_fonts(char*& c, int j, const char* font1, const char* font2, const bool mode, const bool inFMode)
        +{
        +  c += j;
        +  if (*c == '\n') c++;
        +
        +  QList args;
        +  getArguments(c, args);
        +
        +  for (int i = 0; i < args.count(); i++)
        +  {
        +    if (mode || inFMode)
        +    {
        +      out_html(" ");
        +      curpos++;
        +    }
        +    out_html(set_font((i&1) ? font2 : font1));
        +    scan_troff(args[i].data(), 1, nullptr);
        +  }
        +  out_html(set_font("R"));
        +  if (mode)
        +  {
        +    out_html(" ]");
        +    curpos++;
        +  }
        +  out_html(NEWLINE);
        +  if (!fillout)
        +    curpos = 0;
        +  else
        +    curpos++;
        +}
        +
        +//---------------------------------------------------------------------
        +
        +// &%(#@ c programs !!!
        +//static int ifelseval=0;
        +// If/else can be nested!
        +static QStack s_ifelseval;
        +
        +//---------------------------------------------------------------------
        +
        +// Process a (mdoc) request involving quotes
        +static char* process_quote(char* c, int j, const char* open, const char* close)
        +{
        +  trans_char(c, '"', '\a');
        +  c += j;
        +  if (*c == '\n') c++; // ### TODO: why? Quote requests cannot be empty!
        +  out_html(open);
        +  c = scan_troff_mandoc(c, 1, nullptr);
        +  out_html(close);
        +  out_html(NEWLINE);
        +  if (fillout)
        +    curpos++;
        +  else
        +    curpos = 0;
        +  return c;
        +}
        +
        +//---------------------------------------------------------------------
        +/**
        + * Is the char \p ch a punctuation in sense of mdoc(7)
        + */
        +
        +static bool is_mdoc_punctuation(const char ch)
        +{
        +  if ((ch >= '0' &&  ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
        +    return false;
        +  else if (ch == '.' || ch == ',' || ch == ';' || ch == ':' || ch == '(' || ch == ')'
        +           || ch == '[' || ch == ']')
        +    return true;
        +  else
        +    return false;
        +}
        +
        +//---------------------------------------------------------------------
        +/**
        + * Can the char \p c be part of an identifier
        + * \note For groff, an identifier can consist of nearly all ASCII printable non-white-space characters
        + * See info:/groff/Identifiers
        + */
        +
        +static bool is_identifier_char(const char c)
        +{
        +  if (c >= '!' && c <= '[')   // Include digits and upper case
        +    return true;
        +  else if (c >= ']' && c <= '~')   // Include lower case
        +    return true;
        +  else if (c == '\\')
        +    return false; // ### TODO: it should be treated as escape instead!
        +  return false;
        +}
        +
        +//---------------------------------------------------------------------
        +
        +static QByteArray scan_identifier(char*& c)
        +{
        +  char* h = c; // help pointer
        +  // ### TODO Groff seems to eat nearly everything as identifier name (info:/groff/Identifiers)
        +  while (*h && *h != '\a' && *h != '\n' && is_identifier_char(*h))
        +    ++h;
        +  const char tempchar = *h;
        +  *h = 0;
        +  const QByteArray name = c;
        +  *h = tempchar;
        +  if (name.isEmpty())
        +  {
        +    qCDebug(KIO_MAN_LOG) << "EXCEPTION: identifier empty!";
        +  }
        +  c = h;
        +  return name;
        +}
        +
        +//---------------------------------------------------------------------
        +
        +static char *scan_request(char *c)
        +{
        +  // mdoc(7) stuff
        +  static bool mandoc_synopsis = false; /* True if we are in the synopsis section */
        +  static bool mandoc_command = false;  /* True if this is mdoc(7) page */
        +  static int mandoc_bd_options; /* Only copes with non-nested Bd's */
        +  static int function_argument = 0; // Number of function argument (.Fo, .Fa, .Fc)
        +
        +  int i = 0;
        +  bool mode = false;
        +  char *h = nullptr;
        +  char *sl;
        +  QList args;
        +
        +  while (*c == ' ' || *c == '\t') c++; // Spaces or tabs allowed between control character and request
        +  if (c[0] == '\n') return c + 1;
        +  if (c[0] == escapesym)
        +  {
        +    /* some pages use .\" .\$1 .\} */
        +    /* .\$1 is too difficult/stuppid */
        +    if (c[1] == '$')
        +    {
        +      qCDebug(KIO_MAN_LOG) << "Found .\\$";
        +      c = skip_till_newline(c); // ### TODO
        +    }
        +    else
        +    {
        +      // the result of the escape expansion must be parsed again
        +      c++;
        +      QByteArray cstr;
        +      c = scan_escape_direct(c, cstr);
        +      for (; *c && (*c != '\n'); c++) cstr += *c;
        +      if ( cstr.length() )
        +        scan_request(cstr.data());
        +    }
        +  }
        +  else
        +  {
        +    int nlen = 0;
        +    QByteArray macroName;
        +    while (c[nlen] && (c[nlen] != ' ') && (c[nlen] != '\t') && (c[nlen] != '\n') && (c[nlen] != escapesym))
        +    {
        +      macroName += c[nlen];
        +      nlen++;
        +    }
        +    int j = nlen;
        +    while (c[j] == ' ' || c[j] == '\t') j++;
        +    /* search macro database of self-defined macros */
        +    QMap::const_iterator it = s_stringDefinitionMap.constFind(macroName);
        +
        +    // ### HACK: e.g. nmap, smb.conf redefine SH, SS to increase the font, etc. for non-TTY output
        +    // Ignore those to make the HTML result look better
        +    if ( (macroName != "SH") && (macroName != "SS") &&
        +         it != s_stringDefinitionMap.constEnd() )
        +    {
        +      qCDebug(KIO_MAN_LOG) << "CALLING MACRO: " << BYTEARRAY(macroName);
        +      const QByteArray oldDollarZero = s_dollarZero; // Previous value of $0
        +      s_dollarZero = macroName;
        +
        +      c += j;
        +      getArguments(c, args);
        +      for (i = 0; i < args.count(); i++)
        +      {
        +        char *h = nullptr;
        +
        +        if (mandoc_command)
        +          scan_troff_mandoc(args[i].data(), 1, &h);
        +        else
        +          scan_troff(args[i].data(), 1, &h);
        +
        +        args[i] = h;
        +        delete [] h;
        +      }
        +
        +      if (!(*it).m_output.isEmpty())
        +      {
        +        //qCDebug(KIO_MAN_LOG) << "Macro content is: "<< BYTEARRAY( (*it).m_output );
        +        const unsigned int length = (*it).m_output.length();
        +        char* work = new char [length+2];
        +        work[0] = '\n'; // The macro must start after an end of line to allow a request on first line
        +        qstrncpy(work + 1, (*it).m_output.data(), length + 1);
        +        const QList oldArgumentList(s_argumentList);
        +        s_argumentList.clear();
        +        for (i = 0; i < args.count(); i++)
        +          s_argumentList.push_back(args[i]);
        +
        +        const int onff = newline_for_fun;
        +        if (mandoc_command)
        +          scan_troff_mandoc(work + 1, 0, nullptr);
        +        else
        +          scan_troff(work + 1, 0, nullptr);
        +        delete[] work;
        +        newline_for_fun = onff;
        +        s_argumentList = oldArgumentList;
        +      }
        +      s_dollarZero = oldDollarZero;
        +      qCDebug(KIO_MAN_LOG) << "ENDING MACRO: " << BYTEARRAY(macroName);
        +    }
        +    else
        +    {
        +      qCDebug(KIO_MAN_LOG) << "REQUEST: " << BYTEARRAY(macroName);
        +      switch (RequestNum request = RequestHash::getRequest(macroName, macroName.length()))
        +      {
        +        case REQ_ab: // groff(7) "ABort"
        +        {
        +          h = c + j;
        +          while (*h && *h != '\n') h++;
        +          *h = '\0';
        +          if (scaninbuff && buffpos)
        +          {
        +            buffer[buffpos] = '\0';
        +            qCDebug(KIO_MAN_LOG) << "ABORT: " << buffer;
        +          }
        +          // ### TODO find a way to display it to the user
        +          qCDebug(KIO_MAN_LOG) << "Aborting: .ab " << (c + j);
        +          return nullptr;
        +          break;
        +        }
        +        case REQ_An: // mdoc(7) "Author Name"
        +        {
        +          c += j;
        +          c = scan_troff_mandoc(c, 1, nullptr);
        +          break;
        +        }
        +        case REQ_di: // groff(7) "end current DIversion"
        +        {
        +          qCDebug(KIO_MAN_LOG) << "Start .di";
        +          c += j;
        +          if (*c == '\n')
        +          {
        +            ++c;
        +            break;
        +          }
        +          const QByteArray name(scan_identifier(c));
        +          while (*c && *c != '\n') c++;
        +          c++;
        +          h = c;
        +          while (*c && qstrncmp(c, ".di", 3)) while (*c && *c++ != '\n');
        +          *c = '\0';
        +          char* result = nullptr;
        +          scan_troff(h, 0, &result);
        +          QMap::iterator it = s_stringDefinitionMap.find(name);
        +          if (it == s_stringDefinitionMap.end())
        +          {
        +            StringDefinition def;
        +            def.m_length = 0;
        +            def.m_output = result;
        +            s_stringDefinitionMap.insert(name, def);
        +          }
        +          else
        +          {
        +            (*it).m_length = 0;
        +            (*it).m_output = result;
        +          }
        +          delete[] result;
        +          if (*c) *c = '.';
        +          c = skip_till_newline(c);
        +          qCDebug(KIO_MAN_LOG) << "end .di";
        +          break;
        +        }
        +        case REQ_ds: // groff(7) "Define String variable"
        +          mode = true;
        +        case REQ_as: // groff (7) "Append String variable"
        +        {
        +          qCDebug(KIO_MAN_LOG) << "start .ds/.as";
        +          int oldcurpos = curpos;
        +          c += j;
        +          const QByteArray name(scan_identifier(c));
        +          if (name.isEmpty())
        +            break;
        +          // an initial " is removed to allow leading space
        +          while (*c && isspace(*c)) c++;
        +          if (*c == '"') c++;
        +
        +          single_escape = true;
        +          curpos = 0;
        +          char* result = nullptr;
        +          c = scan_troff(c, 1, &result);
        +          QMap::iterator it = s_stringDefinitionMap.find(name);
        +          if (it == s_stringDefinitionMap.end())
        +          {
        +            StringDefinition def;
        +            def.m_length = curpos;
        +            def.m_output = result;
        +            s_stringDefinitionMap.insert(name, def);
        +          }
        +          else
        +          {
        +            if (mode)
        +            {   // .ds Defining String
        +              (*it).m_length = curpos;
        +              (*it).m_output = result;
        +            }
        +            else
        +            {   // .as Appending String
        +              (*it).m_length += curpos;
        +              (*it).m_output += result;
        +            }
        +          }
        +          delete[] result;
        +          single_escape = false;
        +          curpos = oldcurpos;
        +          qCDebug(KIO_MAN_LOG) << "end .ds/.as";
        +          break;
        +        }
        +        case REQ_br: // groff(7) "line BReak"
        +        {
        +          if (still_dd)
        +            out_html("
        "); // ### VERIFY (does not look like generating good HTML) + else + out_html("
        \n"); + curpos = 0; + c = c + j; + if (c[0] == escapesym) c = scan_escape(c + 1); + c = skip_till_newline(c); + break; + } + case REQ_c2: // groff(7) "reset non-break Control character" (2 means non-break) + { + c = c + j; + if (*c != '\n') + nobreaksym = *c; + else + nobreaksym = '\''; + c = skip_till_newline(c); + break; + } + case REQ_cc: // groff(7) "reset Control Character" + { + c = c + j; + if (*c != '\n') + controlsym = *c; + else + controlsym = '.'; + c = skip_till_newline(c); + break; + } + case REQ_ce: // groff (7) "CEnter" + { + c = c + j; + if (*c == '\n') + i = 1; + else + { + i = 0; + while ('0' <= *c && *c <= '9') + { + i = i * 10 + *c - '0'; + c++; + } + } + c = skip_till_newline(c); + /* center next i lines */ + if (i > 0) + { + out_html("
        \n"); + while (i && *c) + { + char *line = nullptr; + c = scan_troff(c, 1, &line); + if (line && qstrncmp(line, "
        ", 4)) + { + out_html(line); + out_html("
        \n"); + delete [] line; // ### FIXME: memory leak! + i--; + } + } + out_html("
        \n"); + curpos = 0; + } + break; + } + case REQ_ec: // groff(7) "reset Escape Character" + { + c = c + j; + if (*c != '\n') + escapesym = *c; + else + escapesym = '\\'; + break; + c = skip_till_newline(c); + } + case REQ_eo: // groff(7) "turn Escape character Off" + { + escapesym = '\0'; + c = skip_till_newline(c); + break; + } + case REQ_ex: // groff(7) "EXit" + { + return nullptr; + break; + } + case REQ_fc: // groff(7) "set Field and pad Character" + { + c = c + j; + if (*c == '\n') + fieldsym = padsym = '\0'; + else + { + fieldsym = c[0]; + padsym = c[1]; + } + c = skip_till_newline(c); + break; + } + case REQ_fi: // groff(7) "FIll" + { + if (!fillout) + { + out_html(set_font("R")); + out_html(change_to_size('0')); + out_html("
        \n"); + } + curpos = 0; + fillout = 1; + c = skip_till_newline(c); + break; + } + case REQ_ft: // groff(7) "FonT" + { + c += j; + h = skip_till_newline(c); + const char oldChar = *h; + *h = 0; + const QByteArray name = c; + // ### TODO: name might contain a variable + if (name.isEmpty()) + out_html(set_font("P")); // Previous font + else + out_html(set_font(name)); + *h = oldChar; + c = h; + break; + } + case REQ_el: // groff(7) "ELse" + { + int ifelseval = s_ifelseval.pop(); + /* .el anything : else part of if else */ + if (ifelseval) + { + c = c + j; + c[-1] = '\n'; + c = scan_troff(c, 1, nullptr); + } + else + c = skip_till_newline(c + j); + break; + } + case REQ_ie: // groff(7) "If with Else" + /* .ie c anything : then part of if else */ + // fallthrough + case REQ_if: // groff(7) "IF" + { + /* .if c anything + * .if !c anything + * .if N anything + * .if !N anything + * .if 'string1'string2' anything + * .if !'string1'string2' anything + */ + c = c + j; + c = scan_expression(c, &i); + if (request == REQ_ie) + { + int ifelseval = !i; + s_ifelseval.push(ifelseval); + } + if (i) + { + *c = '\n'; + c++; + c = scan_troff(c, 1, nullptr); + } + else + c = skip_till_newline(c); + break; + } + case REQ_ig: // groff(7) "IGnore" + { + const char *endwith = "..\n"; + i = 3; + c = c + j; + if (*c != '\n' && *c != '\\') + { + /* Not newline or comment */ + endwith = c - 1; + i = 1; + c[-1] = '.'; + while (*c && *c != '\n') c++, i++; + } + c++; + while (*c && qstrncmp(c, endwith, i)) while (*c++ != '\n'); + while (*c && *c++ != '\n'); + break; + } + case REQ_nf: // groff(7) "No Filling" + { + if (fillout) + { + out_html(set_font("R")); + out_html(change_to_size('0')); + out_html("
        \n");
        +          }
        +          curpos = 0;
        +          fillout = 0;
        +          c = skip_till_newline(c);
        +          break;
        +        }
        +        case REQ_ps: // groff(7) "previous Point Size"
        +        {
        +          c += j;
        +          getArguments(c, args);
        +          if ( args.count() == 0 )
        +            out_html(change_to_size('0'));
        +          else
        +          {
        +            char *h = args[0].data();
        +            j = 0;
        +            i = 0;
        +            if (*h == '-')
        +            {
        +              j = -1;
        +              h++;
        +            }
        +            else if (*h == '+')
        +              j = 1;
        +            h++;
        +            scan_expression(h, &i);
        +            if (!j)
        +            {
        +              j = 1;
        +              if (i > 5) i = i - 10;
        +            }
        +            out_html(change_to_size(i*j));
        +          }
        +          break;
        +        }
        +        case REQ_sp: // groff(7) "SKip one line"
        +        {
        +          c += j;
        +          if (fillout)
        +            out_html("

        "); + else + out_html(NEWLINE); + curpos = 0; + c = skip_till_newline(c); + break; + } + case REQ_so: // groff(7) "Include SOurce file" + { + char *buf; + char *name = nullptr; + curpos = 0; + c = c + j; + if (*c == '/') + h = c; + else + { + h = c - 3; + h[0] = '.'; + h[1] = '.'; + h[2] = '/'; + } + while (*c != '\n') c++; + *c = '\0'; + scan_troff(h, 1, &name); + if (name[3] == '/') + h = name + 3; + else + h = name; + + // The format of the argument to .so varies among man pages. + // Some of them, e.g. pam.8, use "PAM.8". Others, e.g. telinit.8, + // use "man8/init.8". So they are not always true relative paths, + // although the man(1) command seems to handle them with no problem. + // + // The code above starting "h = c - 3" attempts to turn the argument + // into a relative path, but that is not correct in the case of pam.8 + // as above. So this removes the "../" prefix again if there is + // no other slash following it. + char *firstSlash = strchr(h, '/'); + if (firstSlash != 0) + { + char *nextSlash = strchr(firstSlash + 1, '/'); + if (nextSlash == 0) + h = firstSlash + 1; + } + + /* this works alright, except for section 3 */ + buf = read_man_page(h); + if (!buf) + { + qCDebug(KIO_MAN_LOG) << "Unable to open or read file: .so " << (h); + out_html("
        " + "man2html: unable to open or read file.\n"); + out_html(h); + out_html("
        \n"); + } + else + scan_troff(buf + 1, 0, nullptr); + delete [] buf; + delete [] name; + + *c++ = '\n'; + break; + } + case REQ_ta: // gorff(7) "set TAbulators" + { + c = c + j; + j = 0; + while (*c != '\n') + { + sl = scan_expression(c, &tabstops[j]); + if (j > 0 && (*c == '-' || *c == '+')) tabstops[j] += tabstops[j-1]; + c = sl; + while (*c == ' ' || *c == '\t') c++; + j++; + } + maxtstop = j; + curpos = 0; + break; + } + case REQ_ti: // groff(7) "Temporary Indent" + { + /*while (itemdepth || dl_set[itemdepth]) { + out_html("\n"); + if (dl_set[itemdepth]) dl_set[itemdepth]=0; + else itemdepth--; + }*/ + out_html("
        \n"); + c = c + j; + c = scan_expression(c, &j); + for (i = 0; i < j; i++) out_html(" "); + curpos = j; + c = skip_till_newline(c); + break; + } + case REQ_tm: // groff(7) "TerMinal" ### TODO: what are useful uses for it + { + c += j; + getArguments(c, args); + if ( args.count() ) + qCDebug(KIO_MAN_LOG) << ".tm " << args[0]; + break; + } + case REQ_B: // man(7) "Bold" + mode = 1; + case REQ_I: // man(7) "Italic" + { + /* parse one line in a certain font */ + c += j; + getArguments(c, args); + + out_html(set_font(mode ? "B" : "I")); + + for (int i = 0; i < args.count(); i++) + { + scan_troff(args[i].data(), 1, nullptr); + out_html(" "); + } + + out_html(set_font("R")); + + if (fillout) + curpos++; + else + { + out_html(NEWLINE); + curpos = 0; + } + break; + } + case REQ_Fd: // mdoc(7) "Function Definition" + { + // Normal text must be printed in bold, punctuation in regular font + c += j; + if (*c == '\n') c++; + getArguments(c, args); + + for (i = 0; i < args.count(); i++) + { + // ### FIXME In theory, only a single punctuation character is recognized as punctuation + if ( is_mdoc_punctuation(args[i][0]) ) + out_html(set_font("R")); + else + out_html(set_font("B")); + scan_troff(args[i].data(), 1, nullptr); + out_html(" "); + } + // In the mdoc synopsis, there are automatical line breaks (### TODO: before or after?) + if (mandoc_synopsis) + out_html("
        "); + + out_html(set_font("R")); + out_html(NEWLINE); + if (!fillout) + curpos = 0; + else + curpos++; + break; + } + case REQ_Fn: // mdoc(7) for "Function calls" + { + // brackets and commas have to be inserted automatically + c += j; + if (*c == '\n') c++; + getArguments(c, args); + if ( args.count() ) + { + for (i = 0; i < args.count(); i++) + { + if (i) + out_html(set_font("I")); + else + out_html(set_font("B")); + scan_troff(args[i].data(), 1, nullptr); + out_html(set_font("R")); + if (i == 0) + { + out_html(" ("); + } + else if (i < args.count() - 1) + out_html(", "); + } + out_html(")"); + } + out_html(set_font("R")); + if (mandoc_synopsis) + out_html("
        "); + out_html(NEWLINE); + if (!fillout) + curpos = 0; + else + curpos++; + break; + } + case REQ_Fo: // mdoc(7) "Function definition Opening" + { + char* font[2] = {(char*)"B", (char*)"R" }; + c += j; + if (*c == '\n') c++; + char *eol = strchr(c, '\n'); + char *semicolon = strchr(c, ';'); + if ((semicolon != nullptr) && (semicolon < eol)) *semicolon = ' '; + + getArguments(c, args); + // Normally a .Fo has only one parameter + for (i = 0; i < args.count(); i++) + { + out_html(set_font(font[i&1])); + scan_troff(args[i].data(), 1, nullptr); + if (i == 0) + { + out_html(" ("); + } + // ### TODO What should happen if there is more than one argument + // else if (i 0 + out_html(set_font("R")); + out_html(NEWLINE); + if (!fillout) + curpos = 0; + else + curpos++; + break; + } + case REQ_Fc:// mdoc(7) "Function definition Close" + { + // .Fc has no parameter + c += j; + c = skip_till_newline(c); + char* font[2] = {(char*)"B", (char*)"R" }; + out_html(set_font(font[i&1])); + out_html(")"); + out_html(set_font("R")); + if (mandoc_synopsis) + out_html("
        "); + out_html(NEWLINE); + if (!fillout) + curpos = 0; + else + curpos++; + function_argument = 0; // Reset the count variable + break; + } + case REQ_Fa: // mdoc(7) "Function definition argument" + { + char* font[2] = {(char*)"B", (char*)"R" }; + c += j; + if (*c == '\n') c++; + getArguments(c, args); + out_html(set_font(font[i&1])); + // function_argument==0 means that we had no .Fo before, e.g. in mdoc.samples(7) + if (function_argument > 1) + { + out_html(", "); + curpos += 2; + function_argument++; + } + else if (function_argument == 1) + { + // We are only at the first parameter + function_argument++; + } + for (i = 0; i < args.count(); i++) + scan_troff(args[i].data(), 1, nullptr); + + out_html(set_font("R")); + if (!fillout) + curpos = 0; + else + curpos++; + break; + } + + case REQ_OP: /* groff manpages use this construction */ + { + /* .OP a b : [ a b ] */ + out_html(set_font("R")); + out_html("["); + curpos++; + request_mixed_fonts(c, j, "B", "I", true, false); + break; + } + case REQ_Ft: //perhaps "Function return type" + { + request_mixed_fonts(c, j, "B", "I", false, true); + break; + } + case REQ_BR: + { + request_mixed_fonts(c, j, "B", "R", false, false); + break; + } + case REQ_BI: + { + request_mixed_fonts(c, j, "B", "I", false, false); + break; + } + case REQ_IB: + { + request_mixed_fonts(c, j, "I", "B", false, false); + break; + } + case REQ_IR: + { + request_mixed_fonts(c, j, "I", "R", false, false); + break; + } + case REQ_RB: + { + request_mixed_fonts(c, j, "R", "B", false, false); + break; + } + case REQ_RI: + { + request_mixed_fonts(c, j, "R", "I", false, false); + break; + } + case REQ_DT: // man(7) "Default Tabulators" + { + for (j = 0;j < 20; j++) tabstops[j] = (j + 1) * 8; + maxtstop = 20; + c = skip_till_newline(c); + break; + } + case REQ_IP: // man(7) "Ident Paragraph" + { + c += j; + getArguments(c, args); + + if (!dl_set[itemdepth]) + { + out_html("
        \n"); + dl_set[itemdepth] = 1; + } + out_html("
        "); + + if ( args.count() ) + scan_troff(args[0].data(), 1, nullptr); + + out_html("
        \n
        "); + listItemStack.push("DD"); + curpos = 0; + break; + } + case REQ_TP: // man(7) "hanging Tag Paragraph" + { + if (!dl_set[itemdepth]) + { + out_html("
        \n"); + dl_set[itemdepth] = 1; + } + out_html(set_font("R")); + out_html("
        "); + c = skip_till_newline(c); + /* somewhere a definition ends with '.TP' */ + if (!*c) + still_dd = true; + else + { + // HACK for proc(5) + while (c[0] == '.' && c[1] == '\\' && c[2] == '\"') + { + // We have a comment, so skip the line + c = skip_till_newline(c); + } + c = scan_troff(c, 1, nullptr); + out_html("
        "); + listItemStack.push("DD"); + } + curpos = 0; + break; + } + case REQ_IX: // Indexing term (printed on standard error) + { + c = skip_till_newline(c); // ignore + break; + } + case REQ_P: // man(7) "Paragraph" + case REQ_LP:// man(7) "Paragraph" + case REQ_PP:// man(7) "Paragraph; reset Prevailing indent" + { + if (dl_set[itemdepth]) + { + out_html("
        \n"); + dl_set[itemdepth] = 0; + } + else + if (fillout) out_html("
        "); + + if (fillout) + out_html("
        \n"); + else + out_html(NEWLINE); + + curpos = 0; + c = skip_till_newline(c); + break; + } + case REQ_HP: // man(7) "Hanging indent Paragraph" + { + if (!dl_set[itemdepth]) + { + out_html("
        "); + dl_set[itemdepth] = 1; + } + out_html("
        \n"); + still_dd = true; + c = skip_till_newline(c); + curpos = 0; + break; + } + case REQ_PD: // man(7) "Paragraph Distance" + { + c = skip_till_newline(c); + break; + } + case REQ_Rs: // mdoc(7) "Relative margin Start" + case REQ_RS: // man(7) "Relative margin Start" + { + c += j; + getArguments(c, args); + j = 1; + if (args.count() > 0) scan_expression(args[0].data(), &j); + if (j >= 0) + { + itemdepth++; + dl_set[itemdepth] = 0; + out_html("
        "); + listItemStack.push("DD"); + curpos = 0; + } + break; + } + case REQ_Re: // mdoc(7) "Relative margin End" + case REQ_RE: // man(7) "Relative margin End" + { + if (itemdepth > 0) + { + if (dl_set[itemdepth]) out_html("
        "); + out_html("
        \n"); + itemdepth--; + } + c = skip_till_newline(c); + curpos = 0; + break; + } + case REQ_SB: // man(7) "Small; Bold" + { + out_html(set_font("B")); + out_html(""); + c = scan_troff(c + j, 1, nullptr); + out_html(""); + out_html(set_font("R")); + break; + } + case REQ_SM: // man(7) "SMall" + { + c = c + j; + if (*c == '\n') c++; + out_html(""); + c = scan_troff(c, 1, nullptr); + out_html(""); + break; + } + case REQ_Ss: // mdoc(7) "Sub Section" + mandoc_command = 1; + case REQ_SS: // mdoc(7) "Sub Section" + mode = true; + case REQ_Sh: // mdoc(7) "Sub Header" + /* hack for fallthru from above */ + mandoc_command = !mode || mandoc_command; + case REQ_SH: // man(7) "Sub Header" + { + c = c + j; + if (*c == '\n') c++; + while (itemdepth || dl_set[itemdepth]) + { + out_html("
        \n"); + if (dl_set[itemdepth]) + dl_set[itemdepth] = 0; + else if (itemdepth > 0) + itemdepth--; + } + out_html(set_font("R")); + out_html(change_to_size(0)); + if (!fillout) + { + fillout = 1; + out_html("
        "); + } + trans_char(c, '"', '\a'); + if (in_div) + { + out_html("\n"); + in_div = 0; + } + if (mode) + out_html("\n

        "); + else + out_html("\n

        "); + mandoc_synopsis = qstrncmp(c, "SYNOPSIS", 8) == 0; + c = mandoc_command ? scan_troff_mandoc(c, 1, nullptr) : scan_troff(c, 1, nullptr); + if (mode) + out_html("

        \n"); + else + out_html("\n"); + + out_html("
        \n"); + in_div = 1; + curpos = 0; + break; + } + case REQ_Sx: // mdoc(7) + { + // reference to a section header + out_html(set_font("B")); + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') c++; + c = scan_troff(c, 1, nullptr); + out_html(set_font("R")); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_St: // groff_mdoc + { + c += j; + getArguments(c, args); + if ( args.count() ) + { + bool found = false; + for (const StandardName &standardName : STANDARD_NAMES) + { + if ( args[0] == standardName.abbrev ) + { + found = true; + out_html(standardName.formalName); + break; + } + } + if ( !found ) // an unknown standard - print the abbreviation + out_html(args[0]); + } + break; + } + case REQ_TS: // Table Start tbl(1) + { + c = scan_table(c); + break; + } + case REQ_Dt: /* mdoc(7) */ + mandoc_command = true; + case REQ_TH: // man(7) "Title Header" + { + if (!output_possible) + { + c += j; + getArguments(c, args); + output_possible = true; + out_html(DOCTYPE"\n\n"); + out_html("\n"); + out_html(""); + if ( args.count() ) + { + // work around the problem that in a title no HTML tags are allowed + // but args[0] can have formatting escapes, e.g. to switch a font + // which results in a HTML tag added to the output + char *result = nullptr; + scan_troff(args[0].data(), 0, &result); + char *p = result; + QByteArray title; + while ( *p ) + { + if ( *p == '<' ) // tag begin -> skip whole tag + { + for (p++; *p && (*p != '>'); p++) ; + if ( *p ) p++; + } + if ( *p ) + title += *p++; + } + ignore_links = true; + title += '\n'; // needed so that out_html flushes buffer and ignore_links works + out_html(title); + ignore_links = false; + delete [] result; + } + out_html(" Manpage\n"); + + // KDE defaults. + out_html("\n"); + + // Output our custom stylesheet. + out_html("\n"); + + // Some elements need background images, but this + // could not be included in the stylesheet, + // include it now. + out_html("\n\n" + ); + + out_html("\n"); + + out_html("\n\n"); + out_html("\n\n"); + + out_html("
        \n"); + out_html("
        \n"); + out_html("\"top-kde\" "); + if ( args.count() ) + scan_troff(args[0].data(), 0, nullptr); + out_html(" - KDE Man Page Viewer"); + out_html("
        \n"); + + out_html("
        \n"); + out_html("

        "); + if ( args.count() ) + scan_troff(args[0].data(), 0, nullptr); + out_html("

        \n"); + if (args.count() > 1) + { + out_html("Section: "); + if ( !mandoc_command && (args.count() > 4) ) + scan_troff(args[4].data(), 0, nullptr); + else + out_html(section_name(args[1].data())); + out_html(" ("); + scan_troff(args[1].data(), 0, nullptr); + out_html(")\n"); + } + else + { + out_html("Section not specified"); + } + } + else + { + qCWarning(KIO_MAN_LOG) << ".TH found but output not possible" ; + c = skip_till_newline(c); + } + curpos = 0; + break; + } + case REQ_TX: // mdoc(7) + { + c += j; + getArguments(c, args); + out_html(set_font("I")); + const char *c2 = lookup_abbrev(args[0]); + curpos += qstrlen(c2); + out_html(c2); + out_html(set_font("R")); + if (args.count() > 1) + out_html(args[1]); + break; + } + case REQ_rm: // groff(7) "ReMove" + /* .rm xx : Remove request, macro or string */ + mode = true; + case REQ_rn: // groff(7) "ReName" + /* .rn xx yy : Rename request, macro or string xx to yy */ + { + qCDebug(KIO_MAN_LOG) << "start .rm/.rn"; + c += j; + const QByteArray name(scan_identifier(c)); + if (name.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty origin string to remove/rename"; + break; + } + QByteArray name2; + if (!mode) + { + while (*c && isspace(*c) && *c != '\n') ++c; + name2 = scan_identifier(c); + if (name2.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty destination string to rename"; + break; + } + } + c = skip_till_newline(c); + QMap::iterator it = s_stringDefinitionMap.find(name); + if (it == s_stringDefinitionMap.end()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: cannot find string to rename or remove: " << BYTEARRAY(name); + } + else + { + if (mode) + { + // .rm ReMove + s_stringDefinitionMap.remove(name); // ### QT4: removeAll + } + else + { + // .rn ReName + StringDefinition def = (*it); + s_stringDefinitionMap.remove(name); // ### QT4: removeAll + s_stringDefinitionMap.insert(name2, def); + } + } + qCDebug(KIO_MAN_LOG) << "end .rm/.rn"; + break; + } + case REQ_nx: + case REQ_in: // groff(7) "INdent" + { + /* .in +-N : Indent */ + c = skip_till_newline(c); + break; + } + case REQ_nr: // groff(7) "Number Register" + { + qCDebug(KIO_MAN_LOG) << "start .nr"; + c += j; + const QByteArray name(scan_identifier(c)); + if (name.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty name for register variable"; + break; + } + while (*c && (*c == ' ' || *c == '\t')) c++; + int sign = 0; + if (*c && (*c == '+' || *c == '-')) + { + if (*c == '+') + sign = 1; + else if (*c == '-') + sign = -1; + } + int value = 0; + int increment = 0; + c = scan_expression(c, &value); + if (*c && *c != '\n') + { + while (*c && (*c == ' ' || *c == '\t')) c++; + c = scan_expression(c, &increment); + } + c = skip_till_newline(c); + QMap ::iterator it = s_numberDefinitionMap.find(name); + if (it == s_numberDefinitionMap.end()) + { + if (sign < 1) + value = -value; + NumberDefinition def(value, increment); + s_numberDefinitionMap.insert(name, def); + } + else + { + if (sign > 0) + (*it).m_value += value; + else if (sign < 0) + (*it).m_value += - value; + else + (*it).m_value = value; + (*it).m_increment = increment; + } + qCDebug(KIO_MAN_LOG) << "end .nr"; + break; + } + case REQ_am: // groff(7) "Append Macro" + /* .am xx yy : append to a macro. */ + /* define or handle as .ig yy */ + mode = true; + // fallthrough + case REQ_de: // groff(7) "DEfine macro" + case REQ_de1: // groff(7) "DEfine macro" + { + /* .de xx yy : define or redefine macro xx; end at .yy (..) */ + /* define or handle as .ig yy */ + qCDebug(KIO_MAN_LOG) << "Start .am/.de"; + c += j; + getArguments(c, args); + if ( args.count() == 0 ) + break; + + const QByteArray name(args[0]); + + QByteArray endmacro; + if (args.count() == 1) + endmacro = ".."; + else + endmacro = "." + args[1]; // krazy:exclude=doublequote_chars + + sl = c; + while (*c && qstrncmp(c, endmacro, endmacro.length())) + c = skip_till_newline(c); + + QByteArray macro; + while (sl != c) + { + if (sl[0] == '\\' && sl[1] == '\\') + { + macro += '\\'; + sl++; + } + else + macro += *sl; + sl++; + } + + QMap::iterator it = s_stringDefinitionMap.find(name); + if (it == s_stringDefinitionMap.end()) + { + StringDefinition def; + def.m_length = 0; + def.m_output = macro; + s_stringDefinitionMap.insert(name, def); + } + else if (mode) + { + // .am Append Macro + (*it).m_length = 0; // It could be formerly a string + if (!(*it).m_output.endsWith('\n')) + (*it).m_output += '\n'; + (*it).m_output += macro; + } + else + { + // .de DEfine macro + (*it).m_length = 0; // It could be formerly a string + (*it).m_output = macro; + } + c = skip_till_newline(c); + qCDebug(KIO_MAN_LOG) << "End .am/.de"; + break; + } + case REQ_Bl: // mdoc(7) "Begin List" + { + QByteArray list_options; + char *nl = strchr(c, '\n'); + c = c + j; + if (dl_set[itemdepth]) + { + /* These things can nest. */ + itemdepth++; + } + if (nl) + { + /* Parse list options */ + list_options = QByteArray(c, nl - c); + } + if ( list_options.contains("-bullet") ) + { + /* HTML Unnumbered List */ + dl_set[itemdepth] = BL_BULLET_LIST; + out_html("
          \n"); + } + else if ( list_options.contains("-enum") ) + { + /* HTML Ordered List */ + dl_set[itemdepth] = BL_ENUM_LIST; + out_html("
            \n"); + } + else + { + /* HTML Descriptive List */ + dl_set[itemdepth] = BL_DESC_LIST; + out_html("
            \n"); + } + curpos = 0; + c = skip_till_newline(c); + break; + } + case REQ_El: // mdoc(7) "End List" + { + checkListStack(); + c = c + j; + if (dl_set[itemdepth] & BL_DESC_LIST) + out_html("
            \n"); + else if (dl_set[itemdepth] & BL_BULLET_LIST) + out_html("
        \n"); + else if (dl_set[itemdepth] & BL_ENUM_LIST) + out_html("\n"); + dl_set[itemdepth] = 0; + if (itemdepth > 0) itemdepth--; + if ( !fillout ) + out_html(NEWLINE); + + curpos = 0; + c = skip_till_newline(c); + break; + } + case REQ_It: // mdoc(7) "list ITem" + { + checkListStack(); + c = c + j; + //if (qstrncmp(c, "Xo", 2) == 0 && isspace(*(c + 2))) + //c = skip_till_newline(c); + if (dl_set[itemdepth] & BL_DESC_LIST) + { + out_html("
        "); + out_html(set_font("B")); + if (*c == '\n') + { + /* Don't allow embedded comms after a newline */ + c++; + c = scan_troff(c, 1, nullptr); + } + else + { + /* Do allow embedded comms on the same line. */ + c = scan_troff_mandoc(c, 1, nullptr); + } + out_html(set_font("R")); + out_html("
        "); + out_html(NEWLINE); + out_html("
        "); + listItemStack.push("DD"); + } + else if (dl_set[itemdepth] & (BL_BULLET_LIST | BL_ENUM_LIST)) + { + out_html("
      • "); + listItemStack.push("LI"); + c = scan_troff_mandoc(c, 1, nullptr); + out_html(NEWLINE); + } + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Bk: /* mdoc(7) */ + case REQ_Ek: /* mdoc(7) */ + case REQ_Dd: /* mdoc(7) */ + case REQ_Os: // mdoc(7) "Operating System" + case REQ_Sm: // mdoc(7) space mode + c = skip_till_newline(c); // TODO + break; + case REQ_Bt: // mdoc(7) "Beta Test" + { + //trans_char(c, '"', '\a'); + //c = c + j; + out_html(" is currently in beta test."); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_At: /* mdoc(7) */ + case REQ_Fx: /* mdoc(7) */ + case REQ_Nx: /* mdoc(7) */ + case REQ_Ox: /* mdoc(7) */ + case REQ_Bx: /* mdoc(7) */ + case REQ_Ux: /* mdoc(7) */ + case REQ_Dx: /* mdoc(7) */ + { + bool parsable = true; + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') c++; + if (request == REQ_At) + { + out_html("AT&T UNIX "); + parsable = false; + } + else if (request == REQ_Fx) + { + out_html("FreeBSD "); + parsable = false; + } + else if (request == REQ_Nx) + out_html("NetBSD "); + else if (request == REQ_Ox) + out_html("OpenBSD "); + else if (request == REQ_Bx) + out_html("BSD "); + else if (request == REQ_Ux) + out_html("UNIX "); + else if (request == REQ_Dx) + out_html("DragonFly "); + if (parsable) + c = scan_troff_mandoc(c, 1, nullptr); + else + c = scan_troff(c, 1, nullptr); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Dl: /* mdoc(7) */ + { + c = c + j; + out_html(NEWLINE); + out_html("
        "); + if (*c == '\n') c++; + c = scan_troff_mandoc(c, 1, nullptr); + out_html("
        "); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Bd: /* mdoc(7) */ + { /* Seems like a kind of example/literal mode */ + QByteArray bd_options; + char *nl = strchr(c, '\n'); + c = c + j; + if (nl) + bd_options = QByteArray(c, nl - c); + out_html(NEWLINE); + mandoc_bd_options = 0; /* Remember options for terminating Bl */ + if ( bd_options.contains("-offset indent") ) + { + mandoc_bd_options |= BD_INDENT; + out_html("
        \n"); + } + if ( bd_options.contains("-literal") || bd_options.contains("-unfilled") ) + { + if (fillout) + { + mandoc_bd_options |= BD_LITERAL; + out_html(set_font("R")); + out_html(change_to_size('0')); + out_html("
        \n");
        +            }
        +            curpos = 0;
        +            fillout = 0;
        +          }
        +          c = skip_till_newline(c);
        +          break;
        +        }
        +        case REQ_Ed:    /* mdoc(7) */
        +        {
        +          if (mandoc_bd_options & BD_LITERAL)
        +          {
        +            if (!fillout)
        +            {
        +              out_html(set_font("R"));
        +              out_html(change_to_size('0'));
        +              out_html("
        \n"); + } + } + if (mandoc_bd_options & BD_INDENT) + out_html("
        \n"); + curpos = 0; + fillout = 1; + c = skip_till_newline(c); + break; + } + case REQ_Be: /* mdoc(7) */ + { + c = c + j; + if (fillout) + out_html("

        "); + else + { + out_html(NEWLINE); + } + curpos = 0; + c = skip_till_newline(c); + break; + } + case REQ_Xr: /* mdoc(7) */ // ### FIXME: it should issue a directly + { + /* Translate xyz 1 to xyz(1) + * Allow for multiple spaces. Allow the section to be missing. + */ + char buff[NULL_TERMINATED(MED_STR_MAX)]; + char *bufptr; + trans_char(c, '"', '\a'); + bufptr = buff; + c = c + j; + if (*c == '\n') c++; /* Skip spaces */ + while (isspace(*c) && *c != '\n') c++; + while (isalnum(*c) || *c == '.' || *c == ':' || *c == '_' || *c == '-') + { + /* Copy the xyz part */ + *bufptr = *c; + bufptr++; + if (bufptr >= buff + MED_STR_MAX) break; + c++; + } + while (isspace(*c) && *c != '\n') c++; /* Skip spaces */ + if (isdigit(*c)) + { + /* Convert the number if there is one */ + *bufptr = '('; + bufptr++; + if (bufptr < buff + MED_STR_MAX) + { + while (isalnum(*c)) + { + *bufptr = *c; + bufptr++; + if (bufptr >= buff + MED_STR_MAX) break; + c++; + } + if (bufptr < buff + MED_STR_MAX) + { + *bufptr = ')'; + bufptr++; + } + } + } + while (*c != '\n') + { + /* Copy the remainder */ + if (!isspace(*c)) + { + *bufptr = *c; + bufptr++; + if (bufptr >= buff + MED_STR_MAX) break; + } + c++; + } + *bufptr = '\n'; + bufptr[1] = 0; + scan_troff_mandoc(buff, 1, nullptr); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Fl: // mdoc(7) "FLags" + { + //trans_char(c, '"', '\a'); + c += j; + QList argPointers; + getArguments(c, args, &argPointers); + out_html(set_font("B")); + out_html("-"); + if ( args.count() == 0 ) + { + /*out_html("-");*/ // stdin or stdout + } + else + { + if ( argPointers.count() ) + scan_troff_mandoc(argPointers[0], 1, nullptr); + /* + for (i = 0; i < args.count(); ++i) + { + if (ispunct(args[i][0]) && args[i][0] != '-') + { + scan_troff_mandoc(argPointers[i], 1, NULL); + } + else + { + if (i > 0) + out_html(" "); // Put a space between flags + out_html("-"); + scan_troff_mandoc(argPointers[i], 1, NULL); + } + } + */ + } + out_html(set_font("R")); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Pa: /* mdoc(7) */ + case REQ_Pf: /* mdoc(7) */ + { + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') c++; + c = scan_troff_mandoc(c, 1, nullptr); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Pp: /* mdoc(7) */ + { + if (fillout) + out_html("

        \n"); + else + { + out_html(NEWLINE); + } + curpos = 0; + c = skip_till_newline(c); + break; + } + case REQ_Aq: // mdoc(7) "Angle bracket Quote" + c = process_quote(c, j, "<", ">"); + break; + case REQ_Bq: // mdoc(7) "Bracket Quote" + c = process_quote(c, j, "[", "]"); + break; + case REQ_Dq: // mdoc(7) "Double Quote" + c = process_quote(c, j, "“", "”"); + break; + case REQ_Pq: // mdoc(7) "Parenthese Quote" + c = process_quote(c, j, "(", ")"); + break; + case REQ_Qq: // mdoc(7) "straight double Quote" + c = process_quote(c, j, """, """); + break; + case REQ_Sq: // mdoc(7) "Single Quote" + c = process_quote(c, j, "‘", "’"); + break; + case REQ_Op: /* mdoc(7) */ + { + trans_char(c, '"', '\a'); + c += j; + if (*c == '\n') c++; + out_html(set_font("R")); + out_html("["); + c = scan_troff_mandoc(c, 1, nullptr); + out_html(set_font("R")); + out_html("]"); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Oo: /* mdoc(7) */ + { + trans_char(c, '"', '\a'); + c += j; + if (*c == '\n') c++; + out_html(set_font("R")); + out_html("["); + c = scan_troff_mandoc(c, 1, nullptr); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Oc: /* mdoc(7) */ + { + trans_char(c, '"', '\a'); + c += j; + out_html(set_font("R")); + out_html("]"); + c = scan_troff_mandoc(c, 1, nullptr); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Ql: /* mdoc(7) */ + { + /* Single quote first word in the line */ + char *sp; + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') c++; + sp = c; + do + { + /* Find first whitespace after the + * first word that isn't a mandoc macro + */ + while (*sp && isspace(*sp)) sp++; + while (*sp && !isspace(*sp)) sp++; + } + while (*sp && isupper(*(sp - 2)) && islower(*(sp - 1))); + + /* Use a newline to mark the end of text to + * be quoted + */ + if (*sp) *sp = '\n'; + out_html("`"); /* Quote the text */ + c = scan_troff_mandoc(c, 1, nullptr); + out_html("'"); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Ar: /* mdoc(7) */ + { + /* parse one line in italics */ + out_html(set_font("I")); + c += j; + QList argPointers; + getArguments(c, args, &argPointers); + if ( args.count() == 0 ) + { + // An empty Ar means "file ..." + out_html("file ..."); + } + else + { + if ( argPointers.count() ) + c = scan_troff_mandoc(argPointers[0], 1, nullptr); + } + + out_html(set_font("R")); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Em: /* mdoc(7) */ + { + out_html(""); + trans_char(c, '"', '\a'); + c += j; + if (*c == '\n') c++; + c = scan_troff_mandoc(c, 1, nullptr); + out_html(""); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Ad: /* mdoc(7) */ + case REQ_Va: /* mdoc(7) */ + case REQ_Xo: /* mdoc(7) */ + case REQ_Xc: /* mdoc(7) */ + { + /* parse one line in italics */ + out_html(set_font("I")); + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') c++; + c = scan_troff_mandoc(c, 1, nullptr); + out_html(set_font("R")); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Nd: /* mdoc(7) */ + { + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') c++; + out_html(" - "); + c = scan_troff_mandoc(c, 1, nullptr); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Nm: // mdoc(7) "Name Macro" + { + c += j; + QList argPointers; + getArguments(c, args, &argPointers); + + if ( mandoc_name.isEmpty() && args.count() ) + mandoc_name = args[0]; + + if ( mandoc_synopsis ) + { + /* Break lines only in the Synopsis. + * The Synopsis section seems to be treated + * as a special case - Bummer! + * Do not insert a break before the very first Nm in this section + */ + + if ( mandoc_name_count ) + out_html("
        "); + + mandoc_name_count++; + } + + out_html(set_font("B")); + + // only show name if + // .Nm (first not-null-length defined name) + // .Nm name + // do not show + // .Nm "" + if ( args.count() == 0 ) + scan_troff(mandoc_name.data(), 0, nullptr); + else + { + if ( argPointers.count() ) + c = scan_troff_mandoc(argPointers[0], 1, nullptr); + } + + out_html(set_font("R")); + + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Cd: /* mdoc(7) */ + case REQ_Cm: /* mdoc(7) */ + case REQ_Ic: /* mdoc(7) */ + case REQ_Ms: /* mdoc(7) */ + case REQ_Or: /* mdoc(7) */ + case REQ_Sy: /* mdoc(7) */ + { + /* parse one line in bold */ + out_html(set_font("B")); + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') c++; + c = scan_troff_mandoc(c, 1, nullptr); + out_html(set_font("R")); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Ta: /* mdoc(7) */ + { + // ### FIXME: this is a simplification + // for a list item element in a ".Bl -tag -width indent" type list + // man:mdoc says: "indent == Six constant width spaces" + out_html("      "); + c = c + j; + if (*c == '\n') c++; + break; + } + // ### FIXME: punctuation is handled badly! + case REQ_Dv: /* mdoc(7) */ + case REQ_Ev: /* mdoc(7) */ + case REQ_Fr: /* mdoc(7) */ + case REQ_Li: /* mdoc(7) */ + case REQ_nN: /* mdoc(7) */ + { + trans_char(c, '"', '\a'); + c += j; + if (*c == '\n') c++; + out_html(set_font("B")); + c = scan_troff_mandoc(c, 1, nullptr); + out_html(set_font("R")); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Tn: /* mdoc(7) Trade Names ... prints its arguments in a smaller font */ + { + trans_char(c, '"', '\a'); + c += j; + if (*c == '\n') c++; + out_html(""); + c = scan_troff_mandoc(c, 1, NULL); + out_html(""); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_Ns: /* mdoc(7) No-Space Macro */ + { + c += j; + while (*c && isspace(*c) && (*c != '\n')) c++; + // fallthrough (The '.Ns' macro always invokes the '.No' macro...) + } + case REQ_No: /* mdoc(7) Normal Text Macro */ + { + if ( request == REQ_No ) // not fallen through from REQ_Ns + { + trans_char(c, '"', '\a'); + c += j; + if (*c == '\n') c++; + } + out_html(""); + c = scan_troff_mandoc(c, 1, NULL); + out_html(""); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_perc_A: /* mdoc(7) biblio stuff */ + case REQ_perc_D: + case REQ_perc_N: + case REQ_perc_O: + case REQ_perc_P: + case REQ_perc_Q: + case REQ_perc_V: + { + c = c + j; + if (*c == '\n') c++; + c = scan_troff(c, 1, nullptr); /* Don't allow embedded mandoc coms */ + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_perc_B: + case REQ_perc_J: + case REQ_perc_R: + case REQ_perc_T: + { + c = c + j; + out_html(set_font("I")); + if (*c == '\n') c++; + c = scan_troff(c, 1, nullptr); /* Don't allow embedded mandoc coms */ + out_html(set_font("R")); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case REQ_URL: // man(7) ".URL url link trailer" + { + c += j; + + getArguments(c, args); + ignore_links = true; + out_html("
        0 ) + scan_troff(args[0].data(), 0, nullptr); + + out_html("\">"); + if ( args.count() > 1 ) + scan_troff(args[1].data(), 0, nullptr); + + out_html("\n"); // trailing newline important to make ignore_links work + ignore_links = false; + + if ( args.count() > 2 ) + scan_troff(args[2].data(), 1, nullptr); + + break; + } + case REQ_tr: // translate TODO + { + c = skip_till_newline(c); + break; + } + case REQ_nroff: // groff(7) "NROFF mode" + mode = true; + case REQ_troff: // groff(7) "TROFF mode" + { + s_nroff = mode; + c += j; + c = skip_till_newline(c); + break; + } + case REQ_als: // groff(7) "ALias String" + { + /* + * Note an alias is supposed to be something like a hard link + * However to make it simplier, we only copy the string. + */ + // Be careful: unlike .rn, the destination is first, origin is second + qCDebug(KIO_MAN_LOG) << "start .als"; + c += j; + const QByteArray name(scan_identifier(c)); + if (name.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty destination string to alias"; + break; + } + while (*c && isspace(*c) && *c != '\n') ++c; + const QByteArray name2(scan_identifier(c)); + if (name2.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty origin string to alias"; + break; + } + qCDebug(KIO_MAN_LOG) << "Alias " << BYTEARRAY(name2) << " to " << BYTEARRAY(name); + c = skip_till_newline(c); + if (name == name2) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: same origin and destination string to alias: " << BYTEARRAY(name); + break; + } + // Second parameter is origin (unlike in .rn) + QMap::iterator it = s_stringDefinitionMap.find(name2); + if (it == s_stringDefinitionMap.end()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: cannot find string to make alias of " << BYTEARRAY(name2); + } + else + { + StringDefinition def = (*it); + s_stringDefinitionMap.insert(name, def); + } + qCDebug(KIO_MAN_LOG) << "end .als"; + break; + } + case REQ_rr: // groff(7) "Remove number Register" + { + qCDebug(KIO_MAN_LOG) << "start .rr"; + c += j; + const QByteArray name(scan_identifier(c)); + if (name.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty origin string to remove/rename: "; + break; + } + c = skip_till_newline(c); + QMap ::iterator it = s_numberDefinitionMap.find(name); + if (it == s_numberDefinitionMap.end()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: trying to remove inexistant number register: "; + } + else + { + s_numberDefinitionMap.remove(name); + } + qCDebug(KIO_MAN_LOG) << "end .rr"; + break; + } + case REQ_rnn: // groff(7) "ReName Number register" + { + qCDebug(KIO_MAN_LOG) << "start .rnn"; + c += j; + const QByteArray name(scan_identifier(c)); + if (name.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty origin to remove/rename number register"; + break; + } + while (*c && isspace(*c) && *c != '\n') ++c; + const QByteArray name2(scan_identifier(c)); + if (name2.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty destination to rename number register"; + break; + } + c = skip_till_newline(c); + QMap::iterator it = s_numberDefinitionMap.find(name); + if (it == s_numberDefinitionMap.end()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: cannot find number register to rename" << BYTEARRAY(name); + } + else + { + NumberDefinition def = (*it); + s_numberDefinitionMap.remove(name); // ### QT4: removeAll + s_numberDefinitionMap.insert(name2, def); + } + qCDebug(KIO_MAN_LOG) << "end .rnn"; + break; + } + case REQ_aln: // groff(7) "ALias Number Register" + { + /* + * Note an alias is supposed to be something like a hard link + * However to make it simplier, we only copy the string. + */ + // Be careful: unlike .rnn, the destination is first, origin is second + qCDebug(KIO_MAN_LOG) << "start .aln"; + c += j; + const QByteArray name(scan_identifier(c)); + if (name.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty destination number register to alias"; + break; + } + while (*c && isspace(*c) && *c != '\n') ++c; + const QByteArray name2(scan_identifier(c)); + if (name2.isEmpty()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: empty origin number register to alias"; + break; + } + qCDebug(KIO_MAN_LOG) << "Alias " << BYTEARRAY(name2) << " to " << BYTEARRAY(name); + c = skip_till_newline(c); + if (name == name2) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: same origin and destination number register to alias: " << BYTEARRAY(name); + break; + } + // Second parameter is origin (unlike in .rnn) + QMap::iterator it = s_numberDefinitionMap.find(name2); + if (it == s_numberDefinitionMap.end()) + { + qCDebug(KIO_MAN_LOG) << "EXCEPTION: cannot find string to make alias: " << BYTEARRAY(name2); + } + else + { + NumberDefinition def = (*it); + s_numberDefinitionMap.insert(name, def); + } + qCDebug(KIO_MAN_LOG) << "end .aln"; + break; + } + case REQ_shift: // groff(7) "SHIFT parameter" + { + c += j; + h = c; + while (*h && *h != '\n' && isdigit(*h)) ++h; + const char tempchar = *h; + *h = 0; + const QByteArray number(c); + *h = tempchar; + c = skip_till_newline(h); + unsigned int result = 1; // Numbers of shifts to do + if (!number.isEmpty()) + { + bool ok = false; + result = number.toUInt(&ok); + if (!ok || result < 1) + result = 1; + } + for (unsigned int num = 0; num < result; ++num) + { + if (!s_argumentList.isEmpty()) + s_argumentList.pop_front(); + } + break; + } + case REQ_while: // groff(7) "WHILE loop" + { + request_while(c, j, mandoc_command); + break; + } + case REQ_break: // groff(7) Break out of a while loop. + { + c += j; + break_the_while_loop = true; + break; + } + case REQ_do: // groff(7) "DO command" + { + // ### HACK: we just replace do by a \n and a . + *c = '\n'; + c++; + *c = '.'; + // The . will be treated as next character + break; + } + case REQ_nop: // groff(7) nop + { + c += j; + break; + } + default: + { + if (mandoc_command && + ((isupper(*c) && islower(*(c + 1))) + || (islower(*c) && isupper(*(c + 1))))) + { + /* Let through any mdoc(7) commands that haven't + * been delt with. + * I don't want to miss anything out of the text. + */ + char buf[4] = { c[0], c[1], ' ', 0 }; + out_html(buf); /* Print the command (it might just be text). */ + c = c + j; + trans_char(c, '"', '\a'); + if (*c == '\n') c++; + out_html(set_font("R")); + c = scan_troff(c, 1, nullptr); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + } + else + c = skip_till_newline(c); + break; + } + } + } + } + if (fillout) + { + out_html(NEWLINE); + curpos++; + } + return c; +} + +//--------------------------------------------------------------------- + +static int contained_tab = 0; +static bool mandoc_line = false; // Signals whether to look for embedded mandoc commands. + +static char *scan_troff(char *c, bool san, char **result) +{ /* san : stop at newline */ + QByteArray intbuff; + intbuff.reserve(MED_STR_MAX); +#define FLUSHIBP { out_html(intbuff); intbuff.clear(); } + char *exbuffer; + int exbuffpos, exbuffmax, exnewline_for_fun; + bool exscaninbuff; + int usenbsp = 0; + + exbuffer = buffer; + exbuffpos = buffpos; + exbuffmax = buffmax; + exnewline_for_fun = newline_for_fun; + exscaninbuff = scaninbuff; + newline_for_fun = 0; + if (result) + { + if (*result) + { + buffer = *result; + buffpos = qstrlen(buffer); + buffmax = buffpos; + } + else + { + buffer = new char[LARGE_STR_MAX + 1]; + buffpos = 0; + buffmax = LARGE_STR_MAX; + } + scaninbuff = true; + } + char *h = c; // ### FIXME below are too many tests that may go before the position of c + /* start scanning */ + + while (h && *h && (!san || newline_for_fun || (*h != '\n')) && !break_the_while_loop) + { + if (*h == escapesym) + { + h++; + FLUSHIBP; + // ###HACK: I think after escape expansion, the line should be reparsed + // (this seems to be what troff does), but it would double-escape + // HTML chars, e.g. the first escape produces ""); + curpos = 0; + still_dd = false; + } + switch (*h) + { + case '&': + { + intbuff += "&"; + curpos++; + break; + } + case '<': + { + intbuff += "<"; + curpos++; + break; + } + case '>': + { + intbuff += ">"; + curpos++; + break; + } + case '"': + { + intbuff += """; + curpos++; + break; + } + case '\n': + { + if (h != c && h[-1] == '\n' && fillout) + { + intbuff += "

        "; + } + if (contained_tab && fillout) + { + intbuff += "
        "; + } + contained_tab = 0; + curpos = 0; + usenbsp = 0; + intbuff += '\n'; + FLUSHIBP; + break; + } + case '\t': + { + int curtab = 0; + contained_tab = 1; + FLUSHIBP; + /* like a typewriter, not like TeX */ + tabstops[19] = curpos + 1; + while (curtab < maxtstop && tabstops[curtab] <= curpos) + curtab++; + if (curtab < maxtstop) + { + if (!fillout) + { + while (curpos < tabstops[curtab]) + { + intbuff += ' '; + if (intbuff.length() > MED_STR_MAX) + { + FLUSHIBP; + } + curpos++; + } + } + else + { + out_html(""); + while (curpos < tabstops[curtab]) + { + out_html(" "); + curpos++; + } + out_html(""); + } + } + break; + } + default: + { + if (*h == ' ' && (h[-1] == '\n' || usenbsp)) + { + FLUSHIBP; + if (!usenbsp && fillout) + { + out_html("
        "); + curpos = 0; + } + usenbsp = fillout; + if (usenbsp) + out_html(" "); + else + intbuff += ' '; + } + else if (*h > 31 && *h < 127) intbuff += *h; + else if (((unsigned char)(*h)) > 127) + { + intbuff += *h; + } + curpos++; + break; + } + } + if ( intbuff.length() > MED_STR_MAX ) FLUSHIBP; + h++; + } + } + FLUSHIBP; + if (buffer) buffer[buffpos] = '\0'; + if (san && h && *h) h++; + newline_for_fun = exnewline_for_fun; + if (result) + { + *result = buffer; + buffer = exbuffer; + buffpos = exbuffpos; + buffmax = exbuffmax; + scaninbuff = exscaninbuff; + } + + return h; +} + +//--------------------------------------------------------------------- + +static char *scan_troff_mandoc(char *c, bool san, char **result) +{ + char *ret; + char *end = c; + bool oldval = mandoc_line; + mandoc_line = true; + while (*end && *end != '\n') + { + end++; + } + + if (end > c + 2 + && ispunct(*(end - 1)) + && isspace(*(end - 2)) && *(end - 2) != '\n') + { + /* Don't format lonely punctuation E.g. in "xyz ," format + * the xyz and then append the comma removing the space. + */ + *(end - 2) = '\n'; + ret = scan_troff(c, san, result); + *end = 0; + out_html(end - 1); // output the punct char + *end = '\n'; + ret = end; + } + else + { + ret = scan_troff(c, san, result); + } + mandoc_line = oldval; + return ret; +} + +//--------------------------------------------------------------------- +// Entry point + +void scan_man_page(const char *man_page) +{ + if (!man_page) + return; + + qCDebug(KIO_MAN_LOG) << "Start scanning man page"; + + // ### Do more init + // Unlike man2html, we actually call this several times, hence the need to + // properly cleanup all those static vars + s_ifelseval.clear(); + + s_characterDefinitionMap.clear(); + InitCharacterDefinitions(); + + s_stringDefinitionMap.clear(); + InitStringDefinitions(); + + s_numberDefinitionMap.clear(); + InitNumberDefinitions(); + + s_argumentList.clear(); + listItemStack.clear(); + + in_div = 0; + + s_dollarZero = ""; // No macro called yet! + mandoc_name = ""; + + output_possible = false; + int strLength = qstrlen(man_page); + char *buf = new char[strLength + 2]; + qstrcpy(buf + 1, man_page); + buf[0] = '\n'; + + qCDebug(KIO_MAN_LOG) << "Parse man page"; + + scan_troff(buf + 1, 0, nullptr); + + qCDebug(KIO_MAN_LOG) << "Man page parsed!"; + + while (itemdepth || dl_set[itemdepth]) + { + checkListStack(); + out_html("\n"); + if (dl_set[itemdepth]) dl_set[itemdepth] = 0; + else if (itemdepth > 0) itemdepth--; + } + + out_html(set_font("R")); + out_html(change_to_size(0)); + if (!fillout) + { + fillout = 1; + out_html(""); + } + out_html(NEWLINE); + + if (in_div) + { + output_real("

      • \n"); + in_div = 0; + } + + if (output_possible) + { + // The output is buggy wrt to how divs are handled. Fixing it would + // require closing divs before other block-level elements are output, + // and I do not feel like going to find them all. + output_real("
        \n"); + + output_real("
        \n"); +#ifdef SIMPLE_MAN2HTML + output_real("Generated by kio_man"); +#else + output_real("Generated by kio_man version "); + output_real(QString(KDE_VERSION_STRING).toHtmlEscaped().toLocal8Bit()); +#endif + output_real("
        \n\n"); + + output_real("\n\n"); + } + delete [] buf; + + // Release memory + s_characterDefinitionMap.clear(); + s_stringDefinitionMap.clear(); + s_numberDefinitionMap.clear(); + s_argumentList.clear(); + + // reinit static variables for reuse + delete [] buffer; + buffer = nullptr; + + escapesym = '\\'; + nobreaksym = '\''; + controlsym = '.'; + fieldsym = 0; + padsym = 0; + + buffpos = 0; + buffmax = 0; + scaninbuff = false; + itemdepth = 0; + for (int i = 0; i < 20; i++) + dl_set[i] = 0; + still_dd = false; + for (int i = 0; i < 12; i++) + tabstops[i] = (i + 1) * 8; + maxtstop = 12; + curpos = 0; + + mandoc_name_count = 0; +} + +//--------------------------------------------------------------------- + +char *manPageToUtf8(const QByteArray &input, const QByteArray &dirName) +{ + // as we do not know in which encoding the man source is, try to automatically + // detect it and always return it as UTF-8 + + QByteArray encoding; + + // some pages contain "coding:" information. See "man manconv" + // (but I find pages which do not exactly obey the format described in manconv, e.g. + // the control char is either "." or "'") + // Therefore use a QRegularExpression + const QRegularExpression regex("[\\.']\\\\\"[^$]*coding:\\s*(\\S*)\\s", QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch rmatch; + if (QString::fromLatin1(input).indexOf(regex, 0, &rmatch) == 0) + { + encoding = rmatch.captured(1).toLatin1(); + + qCDebug(KIO_MAN_LOG) << "found embedded encoding" << encoding; + } + else + { + // check according to the dirName the man page is in + + // if the dirName contains a ".", the encoding follows, e.g. "de.UTF-8" + int dot = dirName.indexOf('.'); + if ( dot != -1 ) + { + encoding = dirName.mid(dot + 1); + } + else + { + /* wanted to use KEncodingProber ... however it fails and gives very unreliable + results ... telling me often UTF-8 encoded pages are EUC-JP or gb18030 ... + In fact all man pages here on openSuse are encoded in UTF-8 + + KEncodingProber encodingProber; + encodingProber.feed(input); + + qCDebug(KIO_MAN_LOG) << "auto-detect encoding; guess=" << encodingProber.encoding() + << "confidence=" << encodingProber.confidence(); + + encoding = encodingProber.encoding(); + */ + + // the original bug report #141340 + // mentioned the env var MAN_ICONV_INPUT_CHARSET ... let's check if it is set + // This seems not be a std. man-db env var, but I find several traces of it on the web + encoding = qgetenv("MAN_ICONV_INPUT_CHARSET"); + + if ( encoding.isEmpty() ) + encoding = "UTF-8"; + } + } + + QTextCodec *codec = 0; + + if ( !encoding.isEmpty() ) + codec = QTextCodec::codecForName(encoding); + + if ( !codec ) // fallback encoding + codec = QTextCodec::codecForName("ISO-8859-1"); + + qCDebug(KIO_MAN_LOG) << "using the encoding" << codec->name() << "for file in dir" << dirName; + + QString out = codec->toUnicode(input); + QByteArray array = out.toUtf8(); + + // TODO get rid of this double allocation and scan a QByteArray + const int len = array.size(); + char *buf = new char[len + 4]; + memmove(buf + 1, array.data(), len); + buf[0] = buf[len+1] = '\n'; // Start and end with an end of line + buf[len+2] = buf[len+3] = '\0'; // Two NUL characters at end + + return buf; +} + +//--------------------------------------------------------------------- + +#ifdef SIMPLE_MAN2HTML +void output_real(const char *insert) +{ + std::cout << insert; +} + +char *read_man_page(const char *filename) +{ + KFilterDev fd(QFile::decodeName(filename)); + + if ( !fd.open(QIODevice::ReadOnly) ) + { + std::cerr << "read_man_page: can not open " << filename << std::endl; + return nullptr; + } + + QDir dir(QFileInfo(QFile::decodeName(filename)).dir()); + dir.cdUp(); + char *data = manPageToUtf8(fd.readAll(), QFile::encodeName(dir.dirName())); + + return data; +} + +//-------------------------------------------------------------------------------- + +#ifndef KIO_MAN_TEST +int main(int argc, char **argv) +{ + if (argc < 2) + { + std::cerr << "call: " << argv[0] << " \n"; + return 1; + } + if (chdir(argv[1])) + { + char *buf = read_man_page(argv[1]); + if (buf) + { + scan_man_page(buf); + delete [] buf; + } + } + else + { + DIR *dir = opendir("."); + struct dirent *ent; + while ((ent = readdir(dir)) != nullptr) + { + std::cerr << "converting " << ent->d_name << std::endl; + char *buf = read_man_page(ent->d_name); + if (buf) + { + scan_man_page(buf); + delete [] buf; + } + } + closedir(dir); + } + return 0; +} +#endif + + +#endif + +// kate: indent-mode cstyle; space-indent on; indent-width 2; replace-tabs on; diff --git a/man/man2html.h b/man/man2html.h new file mode 100644 index 0000000..2d738de --- /dev/null +++ b/man/man2html.h @@ -0,0 +1,44 @@ +/** + * \file man2html.h + * + * Converts man pages to HTML. This kioslave is not part of kdelibs and is + * not public API. + * \internal + */ + +#ifndef MAN2HTML_H +#define MAN2HTML_H + +class QByteArray; + +/** + Try to detect the encoding of given man page content + and convert it to UTF-8 +*/ +char *manPageToUtf8(const QByteArray &input, const QByteArray &dirName); + +/** call this with the buffer you have */ +void scan_man_page(const char *man_page); + +/* + * Sets the path to a CSS file that should be included with the generated + * HTML output. + * + * \param HTML-encoded path to the file to reference for stylesheets. + * \since 4.1 + */ +extern void setCssFile(const QByteArray& _cssFile); + +/** implement this somewhere. It will be called + with HTML contents +*/ +extern void output_real(const char *insert); + +/** + * called for requested man pages. filename can be a + * relative path! Return NULL on errors. The returned + * char array is freed by man2html + */ +extern char *read_man_page(const char *filename); + +#endif // MAN2HTML_H diff --git a/man/request_hash.cpp b/man/request_hash.cpp new file mode 100644 index 0000000..58a9c91 --- /dev/null +++ b/man/request_hash.cpp @@ -0,0 +1,31 @@ +/* This file is part of the KDE libraries + Copyright (C) 2011 Martin Koller + + 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 "request_hash.h" +#include + +//--------------------------------------------------------------------- + +RequestNum RequestHash::getRequest(const char *str, int len) +{ + const Requests *req = Perfect_Hash::in_word_set(str, len); + return req ? req->number : REQ_UNKNOWN; +} + +//--------------------------------------------------------------------- diff --git a/man/request_hash.h b/man/request_hash.h new file mode 100644 index 0000000..b7461ba --- /dev/null +++ b/man/request_hash.h @@ -0,0 +1,199 @@ +#ifndef RequestHash_H +#define RequestHash_H + +/* This file is part of the KDE libraries + Copyright (C) 2011 Martin Koller + + 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. +*/ + +// Some known missing requests from mdoc(7): +// - start or end of quotings + +// Some of the requests are from mdoc. +// On Linux see the man pages mdoc(7), mdoc.samples(7) and groff_mdoc(7) +// See also the online man pages of FreeBSD: mdoc(7) + +enum RequestNum +{ + REQ_UNKNOWN = -1, + REQ_ab, + REQ_di, + REQ_ds, + REQ_as, + REQ_br, + REQ_c2, + REQ_cc, + REQ_ce, + REQ_ec, + REQ_eo, + REQ_ex, + REQ_fc, + REQ_fi, + REQ_ft, // groff(7) "FonT" + REQ_el, + REQ_ie, + REQ_if, + REQ_ig, + REQ_nf, + REQ_ps, + REQ_sp, + REQ_so, + REQ_ta, + REQ_ti, + REQ_tm, + REQ_B, + REQ_I, + REQ_Fd, + REQ_Fn, + REQ_Fo, + REQ_Fc, + REQ_OP, + REQ_Ft, + REQ_Fa, + REQ_BR, + REQ_BI, + REQ_IB, + REQ_IR, + REQ_RB, + REQ_RI, + REQ_DT, + REQ_IP, // man(7) "Indent Paragraph" + REQ_TP, + REQ_IX, + REQ_P, + REQ_LP, + REQ_PP, + REQ_HP, + REQ_PD, + REQ_Rs, + REQ_RS, + REQ_Re, + REQ_RE, + REQ_SB, + REQ_SM, + REQ_Ss, + REQ_St, + REQ_SS, + REQ_Sh, + REQ_SH, // man(7) "Sub Header" + REQ_Sx, + REQ_TS, + REQ_Dt, + REQ_TH, + REQ_TX, + REQ_rm, + REQ_rn, + REQ_nx, + REQ_in, + REQ_nr, // groff(7) "Number Register" + REQ_am, + REQ_de, + REQ_de1, // groff(7) Same as .de but with compatibility mode switched off during macro expansion. + REQ_Bl, // mdoc(7) "Begin List" + REQ_El, // mdoc(7) "End List" + REQ_It, // mdoc(7) "ITem" + REQ_Bk, + REQ_Ek, + REQ_Dd, + REQ_Os, // mdoc(7) + REQ_Bt, + REQ_At, // mdoc(7) "AT&t" (not parsable, not callable) + REQ_Fx, // mdoc(7) "Freebsd" (not parsable, not callable) + REQ_Nx, + REQ_Ox, + REQ_Bx, // mdoc(7) "Bsd" + REQ_Ux, // mdoc(7) "UniX" + REQ_Dl, + REQ_Bd, + REQ_Ed, + REQ_Be, + REQ_Xr, // mdoc(7) "eXternal Reference" + REQ_Fl, // mdoc(7) "FLag" + REQ_Pa, + REQ_Pf, + REQ_Pp, + REQ_Dq, // mdoc(7) "Double Quote" + REQ_Op, + REQ_Oo, + REQ_Oc, + REQ_Pq, // mdoc(7) "Parenthese Quote" + REQ_Ql, + REQ_Sq, // mdoc(7) "Single Quote" + REQ_Ar, + REQ_Ad, + REQ_Em, // mdoc(7) "EMphasis" + REQ_Va, + REQ_Nd, + REQ_Nm, + REQ_Cd, + REQ_Cm, + REQ_Ic, + REQ_Ms, + REQ_Or, + REQ_Sy, + REQ_Dv, + REQ_Ev, + REQ_Fr, + REQ_Li, + REQ_No, + REQ_Ns, + REQ_Tn, + REQ_nN, + REQ_perc_A, + REQ_perc_D, + REQ_perc_N, + REQ_perc_O, + REQ_perc_P, + REQ_perc_Q, + REQ_perc_V, + REQ_perc_B, + REQ_perc_J, + REQ_perc_R, + REQ_perc_T, + REQ_An, // mdoc(7) "Author Name" + REQ_Aq, // mdoc(7) "Angle bracket Quote" + REQ_Bq, // mdoc(7) "Bracket Quote" + REQ_Qq, // mdoc(7) "straight double Quote" + REQ_tr, // translate + REQ_troff, // groff(7) "TROFF mode" + REQ_nroff, // groff(7) "NROFF mode" + REQ_als, // groff(7) "ALias String" + REQ_rr, // groff(7) "Remove number Register" + REQ_rnn, // groff(7) "ReName Number register" + REQ_aln, // groff(7) "ALias Number register" + REQ_shift, // groff(7) "SHIFT parameter" + REQ_while, // groff(7) "WHILE loop" + REQ_do, // groff(7) "DO command" + REQ_Dx, // mdoc(7) "DragonFly" macro + REQ_Ta, // mdoc(7) "Ta" inside .It macro + REQ_break, // groff(7) "Break out of a while loop" + REQ_nop, // groff(7) .nop macro + REQ_URL, // man(7) .URL macro + REQ_Sm, // mdoc(7) space mode + REQ_Xo, // mdoc(7) extended argument list open + REQ_Xc // mdoc(7) extended argument list close +}; + +class RequestHash +{ + public: + // return the RequestNum for given first len bytes from str or REQ_UNKNOWN + // if an undefined key is searched + static RequestNum getRequest(const char *str, int len); +}; + +#endif diff --git a/man/requests.gperf b/man/requests.gperf new file mode 100644 index 0000000..d4f2bbb --- /dev/null +++ b/man/requests.gperf @@ -0,0 +1,165 @@ +%struct-type +%language=C++ +%define initializer-suffix ,REQ_UNKNOWN +%includes +%null-strings +%compare-strncmp +%readonly-tables +struct Requests { const char *name; RequestNum number; }; +%% +"ab", REQ_ab +"di", REQ_di +"ds", REQ_ds +"as", REQ_as +"br", REQ_br +"c2", REQ_c2 +"cc", REQ_cc +"ce", REQ_ce +"ec", REQ_ec +"eo", REQ_eo +"ex", REQ_ex +"fc", REQ_fc +"fi", REQ_fi +"ft", REQ_ft +"el", REQ_el +"ie", REQ_ie +"if", REQ_if +"ig", REQ_ig +"nf", REQ_nf +"ps", REQ_ps +"sp", REQ_sp +"so", REQ_so +"ta", REQ_ta +"ti", REQ_ti +"tm", REQ_tm +"B", REQ_B +"I", REQ_I +"Fd", REQ_Fd +"Fn", REQ_Fn +"Fo", REQ_Fo +"Fc", REQ_Fc +"OP", REQ_OP +"Ft", REQ_Ft +"Fa", REQ_Fa +"BR", REQ_BR +"BI", REQ_BI +"IB", REQ_IB +"IR", REQ_IR +"RB", REQ_RB +"RI", REQ_RI +"DT", REQ_DT +"IP", REQ_IP +"TP", REQ_TP +"IX", REQ_IX +"P", REQ_P +"LP", REQ_LP +"PP", REQ_PP +"HP", REQ_HP +"PD", REQ_PD +"Rs", REQ_Rs +"RS", REQ_RS +"Re", REQ_Re +"RE", REQ_RE +"SB", REQ_SB +"SM", REQ_SM +"Ss", REQ_Ss +"St", REQ_St +"SS", REQ_SS +"Sh", REQ_Sh +"SH", REQ_SH +"Sx", REQ_Sx +"TS", REQ_TS +"Dt", REQ_Dt +"TH", REQ_TH +"TX", REQ_TX +"rm", REQ_rm +"rn", REQ_rn +"nx", REQ_nx +"in", REQ_in +"nr", REQ_nr +"am", REQ_am +"de", REQ_de +"de1", REQ_de1 +"Bl", REQ_Bl +"El", REQ_El +"It", REQ_It +"Bk", REQ_Bk +"Ek", REQ_Ek +"Dd", REQ_Dd +"Os", REQ_Os +"Bt", REQ_Bt +"At", REQ_At +"Fx", REQ_Fx +"Nx", REQ_Nx +"Ox", REQ_Ox +"Bx", REQ_Bx +"Ux", REQ_Ux +"Dl", REQ_Dl +"Bd", REQ_Bd +"Ed", REQ_Ed +"Be", REQ_Be +"Xr", REQ_Xr +"Fl", REQ_Fl +"Pa", REQ_Pa +"Pf", REQ_Pf +"Pp", REQ_Pp +"Dq", REQ_Dq +"Op", REQ_Op +"Oo", REQ_Oo +"Oc", REQ_Oc +"Pq", REQ_Pq +"Ql", REQ_Ql +"Sq", REQ_Sq +"Ar", REQ_Ar +"Ad", REQ_Ad +"Em", REQ_Em +"Va", REQ_Va +"Nd", REQ_Nd +"Nm", REQ_Nm +"Cd", REQ_Cd +"Cm", REQ_Cm +"Ic", REQ_Ic +"Ms", REQ_Ms +"Or", REQ_Or +"Sy", REQ_Sy +"Dv", REQ_Dv +"Ev", REQ_Ev +"Fr", REQ_Fr +"Li", REQ_Li +"No", REQ_No +"Ns", REQ_Ns +"Tn", REQ_Tn +"nN", REQ_nN +"%A", REQ_perc_A +"%D", REQ_perc_D +"%N", REQ_perc_N +"%O", REQ_perc_O +"%P", REQ_perc_P +"%Q", REQ_perc_Q +"%V", REQ_perc_V +"%B", REQ_perc_B +"%J", REQ_perc_J +"%R", REQ_perc_R +"%T", REQ_perc_T +"An", REQ_An +"Aq", REQ_Aq +"Bq", REQ_Bq +"Qq", REQ_Qq +"tr", REQ_tr +"troff", REQ_troff +"nroff", REQ_nroff +"als", REQ_als +"rr", REQ_rr +"rnn", REQ_rnn +"aln", REQ_aln +"shift", REQ_shift +"while", REQ_while +"do", REQ_do +"Dx", REQ_Dx +"Ta", REQ_Ta +"break", REQ_break +"nop", REQ_nop +"URL", REQ_URL +"Sm", REQ_Sm +"Xo", REQ_Xo +"Xc", REQ_Xc diff --git a/man/tests/CMakeLists.txt b/man/tests/CMakeLists.txt new file mode 100644 index 0000000..b9a1570 --- /dev/null +++ b/man/tests/CMakeLists.txt @@ -0,0 +1,42 @@ +include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/.. ) + +########### next target ############### + +set(kio_man_test_SRCS + kio_man_test.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../man2html.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../request_hash.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../kio_man.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../kio_man_debug.cpp) +ecm_gperf_generate(../requests.gperf ${CMAKE_CURRENT_BINARY_DIR}/request_gperf.h kio_man_test_SRCS) +set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/request_gperf.h PROPERTY SKIP_AUTOMOC ON) + + + +add_executable(kio_man_test ${kio_man_test_SRCS}) +ecm_mark_as_test(kio_man_test) +set_target_properties(kio_man_test PROPERTIES COMPILE_FLAGS "-DSIMPLE_MAN2HTML -DKIO_MAN_TEST") +target_link_libraries(kio_man_test Qt5::Widgets KF5::I18n KF5::KIOCore KF5::Archive KF5::Codecs Qt5::Network) +if (AVOID_NULLPTR_WARNING_FLAG) + target_compile_options(kio_man_test PRIVATE ${AVOID_NULLPTR_WARNING_FLAG}) +endif() + + + +########### next target ############### + +set(man2html_SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/../request_hash.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../man2html.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../kio_man_debug.cpp) +ecm_gperf_generate(../requests.gperf ${CMAKE_CURRENT_BINARY_DIR}/request_gperf.h man2html_SRCS) +set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/request_gperf.h PROPERTY SKIP_AUTOMOC ON) + + +add_executable(man2html ${man2html_SRCS}) +ecm_mark_as_test(man2html) +set_target_properties(man2html PROPERTIES COMPILE_FLAGS -DSIMPLE_MAN2HTML) +target_link_libraries(man2html Qt5::Core KF5::Codecs KF5::Archive) +if (AVOID_NULLPTR_WARNING_FLAG) + target_compile_options(man2html PRIVATE ${AVOID_NULLPTR_WARNING_FLAG}) +endif() diff --git a/man/tests/kio_man_test.cpp b/man/tests/kio_man_test.cpp new file mode 100644 index 0000000..eccf6da --- /dev/null +++ b/man/tests/kio_man_test.cpp @@ -0,0 +1,35 @@ + + +#include + +#include "kio_man.h" + + +#include +#include + + +class kio_man_test : public MANProtocol +{ + Q_OBJECT + +public: + kio_man_test(const QByteArray &pool_socket, const QByteArray &app_socket); + +}; + + + + + +int main(int argc, char **argv) +{ + QApplication a( argc, argv); + + MANProtocol testproto("/tmp/kiotest.in", "/tmp/kiotest.out"); + testproto.showIndex("3"); + + return 0; +} + +#include "kio_man_test.moc" diff --git a/mtp/CMakeLists.txt b/mtp/CMakeLists.txt new file mode 100644 index 0000000..fb4c8c8 --- /dev/null +++ b/mtp/CMakeLists.txt @@ -0,0 +1,24 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_mtp\") + +add_definitions(-DQT_NO_CAST_FROM_ASCII) + +add_subdirectory(shared) +add_subdirectory(kiod_module) + +set(kio_mtp_PART_SRCS + kio_mtp.cpp +) + +include_directories("shared") +add_library(kio_mtp MODULE ${kio_mtp_PART_SRCS} ) +target_link_libraries(kio_mtp kmtp Qt5::Core KF5::KIOCore KF5::I18n KF5::DBusAddons) +set_target_properties(kio_mtp PROPERTIES OUTPUT_NAME "mtp") + +install(TARGETS kio_mtp DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + +########### install files ############### + +install( FILES mtp-network.desktop DESTINATION ${KDE_INSTALL_DATADIR}/konqueror/dirtree/remote ) +install( FILES solid_mtp.desktop DESTINATION ${KDE_INSTALL_DATADIR}/solid/actions ) +install( FILES mtp.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) +install( FILES mtp-network.desktop DESTINATION ${KDE_INSTALL_DATADIR}/remoteview ) diff --git a/mtp/Messages.sh b/mtp/Messages.sh new file mode 100644 index 0000000..1f9d3b9 --- /dev/null +++ b/mtp/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kio5_mtp.pot diff --git a/mtp/README b/mtp/README new file mode 100644 index 0000000..c33e16e --- /dev/null +++ b/mtp/README @@ -0,0 +1,32 @@ +kio-mtp: KIO slave to access MTP devices +======================================== + +This KIO slave enables KDE applications to access +files stored on devices that provide access to them +via the MTP protocol. + +Usage +----- + +To list all currently connected devices, just type +mtp:/ in the addressbar of your preferred KDE filebrowser. + +Using the scheme mtp:udi= you can access the +device using their unique device identifier as provided +by Solid. + +A Device Notificator Desktop-File is also provided that +enables you to access the device directly from there. + + +Bugs +---- + +Please report all bugs to the KDE Bugzilla at https://bugs.kde.org +using the product "kio" with the component "mtp". + + +Contact +------- + +If you want to get in contact with me drop me an email: philschmidt@gmx.net diff --git a/mtp/kio_mtp.cpp b/mtp/kio_mtp.cpp new file mode 100644 index 0000000..8b3fb11 --- /dev/null +++ b/mtp/kio_mtp.cpp @@ -0,0 +1,879 @@ +/* + * Main implementation for KIO-MTP + * Copyright (C) 2012 Philipp Schmidt + * Copyright (C) 2018 Andreas Krutzler + * + * 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. + */ + +#include "kio_mtp.h" + +// #include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "kmtpdeviceinterface.h" +#include "kmtpstorageinterface.h" + +static UDSEntry getEntry(const KMTPDeviceInterface *device) +{ + UDSEntry entry; + entry.reserve(5); + entry.fastInsert(UDSEntry::UDS_NAME, device->friendlyName()); + entry.fastInsert(UDSEntry::UDS_ICON_NAME, QStringLiteral("multimedia-player")); + entry.fastInsert(UDSEntry::UDS_FILE_TYPE, S_IFDIR); + entry.fastInsert(UDSEntry::UDS_ACCESS, S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH); + entry.fastInsert(UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory")); + return entry; +} + +static UDSEntry getEntry(const KMTPStorageInterface *storage) +{ + UDSEntry entry; + entry.reserve(5); + entry.fastInsert(UDSEntry::UDS_NAME, storage->description()); + entry.fastInsert(UDSEntry::UDS_ICON_NAME, QStringLiteral("drive-removable-media")); + entry.fastInsert(UDSEntry::UDS_FILE_TYPE, S_IFDIR); + entry.fastInsert(UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + entry.fastInsert(UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory")); + return entry; +} + +static UDSEntry getEntry(const KMTPFile &file) +{ + UDSEntry entry; + entry.reserve(9); + entry.fastInsert(UDSEntry::UDS_NAME, file.filename()); + if (file.isFolder()) { + entry.fastInsert(UDSEntry::UDS_FILE_TYPE, S_IFDIR); + entry.fastInsert(UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO); + } else { + entry.fastInsert(UDSEntry::UDS_FILE_TYPE, S_IFREG); + entry.fastInsert(UDSEntry::UDS_ACCESS, S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH); + entry.fastInsert(UDSEntry::UDS_SIZE, file.filesize()); + } + entry.fastInsert(UDSEntry::UDS_MIME_TYPE, file.filetype()); + entry.fastInsert(UDSEntry::UDS_INODE, file.itemId()); + entry.fastInsert(UDSEntry::UDS_ACCESS_TIME, file.modificationdate()); + entry.fastInsert(UDSEntry::UDS_MODIFICATION_TIME, file.modificationdate()); + entry.fastInsert(UDSEntry::UDS_CREATION_TIME, file.modificationdate()); + return entry; +} + +static QString urlDirectory(const QUrl &url, bool appendTrailingSlash = false) +{ + if (!appendTrailingSlash) { + return url.adjusted(QUrl::StripTrailingSlash | QUrl::RemoveFilename).path(); + } + return url.adjusted(QUrl::RemoveFilename).path(); +} + +static QString urlFileName(const QUrl &url) +{ + return url.fileName(); +} + +static QString convertPath(const QString &slavePath) +{ + return slavePath.section(QLatin1Char('/'), 3, -1, QString::SectionIncludeLeadingSep); +} + +////////////////////////////////////////////////////////////////////////////// +///////////////////////////// Slave Implementation /////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +Q_LOGGING_CATEGORY(LOG_KIO_MTP, "kde.kio-mtp") + +extern "C" +int Q_DECL_EXPORT kdemain(int argc, char **argv) +{ + QCoreApplication app(argc, argv); + app.setApplicationName(QLatin1String("kio_mtp")); + + if (argc != 4) { + fprintf(stderr, "Usage: kio_mtp protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + + MTPSlave slave(argv[2], argv[3]); + + slave.dispatchLoop(); + + qCDebug(LOG_KIO_MTP) << "Slave EventLoop ended"; + + return 0; +} + +MTPSlave::MTPSlave(const QByteArray &pool, const QByteArray &app) + : SlaveBase("mtp", pool, app) +{ + qCDebug(LOG_KIO_MTP) << "Slave started"; + qCDebug(LOG_KIO_MTP) << "Connected to kiod5 module:" << m_kmtpDaemon.isValid(); +} + +MTPSlave::~MTPSlave() +{ + qCDebug(LOG_KIO_MTP) << "Slave destroyed"; +} + +int MTPSlave::checkUrl(const QUrl &url, bool redirect) +{ + if (url.path().startsWith(QLatin1String("udi=")) && redirect) { + const QString udi = url.adjusted(QUrl::StripTrailingSlash).path().remove(0, 4); + + qCDebug(LOG_KIO_MTP) << "udi = " << udi; + + const KMTPDeviceInterface *device = m_kmtpDaemon.deviceFromUdi(udi); + if (device) { + QUrl newUrl; + newUrl.setScheme(QStringLiteral("mtp")); + newUrl.setPath(QLatin1Char('/') + device->friendlyName()); + redirection(newUrl); + + return 1; + } else { + return 2; + } + } else if (url.path().startsWith(QLatin1Char('/'))) { + return 0; + } + return -1; +} + +void MTPSlave::listDir(const QUrl &url) +{ + const int check = checkUrl(url); + switch (check) { + case 0: + break; + case 1: + finished(); + return; + case 2: + error(ERR_DOES_NOT_EXIST, url.path()); + return; + default: + error(ERR_MALFORMED_URL, url.path()); + return; + } + + // list '.' entry, otherwise files cannot be pasted to empty folders + KIO::UDSEntry entry; + entry.reserve(4); + entry.fastInsert(KIO::UDSEntry::UDS_NAME, QStringLiteral(".")); + entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + entry.fastInsert(KIO::UDSEntry::UDS_SIZE, 0); + entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH); + listEntry(entry); + + const QStringList pathItems = url.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + // list devices + if (pathItems.isEmpty()) { + qCDebug(LOG_KIO_MTP) << "Root directory, listing devices"; + + totalSize(filesize_t(m_kmtpDaemon.devices().size())); + + const auto devices = m_kmtpDaemon.devices(); + for (const KMTPDeviceInterface *device : devices) { + listEntry(getEntry(device)); + } + + qCDebug(LOG_KIO_MTP) << "[SUCCESS] :: Devices:" << m_kmtpDaemon.devices().size(); + finished(); + return; + } + + // traverse into device + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(pathItems.first()); + if (mtpDevice) { + // list storage media + if (pathItems.size() == 1) { + qCDebug(LOG_KIO_MTP) << "Listing storage media for device " << pathItems.first(); + + const auto storages = mtpDevice->storages(); + totalSize(filesize_t(storages.size())); + + if (storages.count() > 0) { + for (KMTPStorageInterface *storage : storages) { + listEntry(getEntry(storage)); + } + + finished(); + qCDebug(LOG_KIO_MTP) << "[SUCCESS] :: Storage media:" << storages.count(); + } else { + error(ERR_SLAVE_DEFINED, i18n("No storage media found. Make sure your device is unlocked and has MTP enabled in its USB connection settings.")); + } + } else { + // list files and folders + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(pathItems.at(1)); + if (storage) { + int result; + const QString path = convertPath(url.path()); + const KMTPFileList files = storage->getFilesAndFolders(path, result); + + switch (result) { + case 0: + break; + case 2: + error(ERR_IS_FILE, url.path()); + return; + default: + // path not found + error(ERR_CANNOT_ENTER_DIRECTORY, url.path()); + return; + } + + for (const KMTPFile &file : files) { + listEntry(getEntry(file)); + } + + finished(); + qCDebug(LOG_KIO_MTP) << "[SUCCESS] :: Files:" << files.count(); + } else { + // storage not found + error(ERR_CANNOT_ENTER_DIRECTORY, url.path()); + qCDebug(LOG_KIO_MTP) << "[ERROR] :: Storage"; + } + } + } else { + // device not found + error(ERR_CANNOT_ENTER_DIRECTORY, url.path()); + qCDebug(LOG_KIO_MTP) << "[ERROR] :: Device"; + } +} + +void MTPSlave::stat(const QUrl &url) +{ + const int check = checkUrl(url); + switch (check) { + case 0: + break; + case 1: + finished(); + return; + case 2: + error(ERR_DOES_NOT_EXIST, url.path()); + return; + default: + error(ERR_MALFORMED_URL, url.path()); + return; + } + + const QStringList pathItems = url.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + UDSEntry entry; + // root + if (pathItems.size() < 1) { + entry.reserve(4); + entry.fastInsert(UDSEntry::UDS_NAME, QLatin1String("mtp:///")); + entry.fastInsert(UDSEntry::UDS_FILE_TYPE, S_IFDIR); + entry.fastInsert(UDSEntry::UDS_ACCESS, S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH); + entry.fastInsert(UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory")); + } else { + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(pathItems.first()); + if (mtpDevice) { + + // device + if (pathItems.size() < 2) { + entry = getEntry(mtpDevice); + } else { + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(pathItems.at(1)); + if (storage) { + + // storage + if (pathItems.size() < 3) { + entry = getEntry(storage); + } + // folder/file + else { + const KMTPFile file = storage->getFileMetadata(convertPath(url.path())); + if (file.isValid()) { + entry = getEntry(file); + } else { + error(ERR_DOES_NOT_EXIST, url.path()); + return; + } + } + } else { + error(ERR_DOES_NOT_EXIST, url.path()); + return; + } + } + } else { + error(ERR_DOES_NOT_EXIST, url.path()); + return; + } + } + + statEntry(entry); + finished(); +} + +void MTPSlave::mimetype(const QUrl &url) +{ + const int check = checkUrl(url); + switch (check) { + case 0: + break; + case 1: + finished(); + return; + case 2: + error(ERR_DOES_NOT_EXIST, url.path()); + return; + default: + error(ERR_MALFORMED_URL, url.path()); + return; + } + + const QStringList pathItems = url.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + if (pathItems.size() > 2) { + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(pathItems.first()); + if (mtpDevice) { + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(pathItems.at(1)); + if (storage) { + const KMTPFile file = storage->getFileMetadata(convertPath(url.path())); + if (file.isValid()) { + // NOTE the difference between calling mimetype and mimeType + mimeType(file.filetype()); + return; + } + } + } + } else { + mimeType(QStringLiteral("inode/directory")); + return; + } + + error(ERR_DOES_NOT_EXIST, url.path()); +} + +void MTPSlave::get(const QUrl &url) +{ + const int check = checkUrl(url); + switch (check) { + case 0: + break; + default: + error(ERR_MALFORMED_URL, url.path()); + return; + } + + const QStringList pathItems = url.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + + // file + if (pathItems.size() > 2) { + + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(pathItems.first()); + if (mtpDevice) { + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(pathItems.at(1)); + if (storage) { + const QString path = convertPath(url.path()); + const KMTPFile source = storage->getFileMetadata(path); + if (!source.isValid()) { + error(KIO::ERR_DOES_NOT_EXIST, url.path()); + return; + } + + mimeType(source.filetype()); + totalSize(source.filesize()); + + int result = storage->getFileToHandler(path); + if (result) { + error(KIO::ERR_CANNOT_READ, url.path()); + return; + } + + QEventLoop loop; + connect(storage, &KMTPStorageInterface::dataReady, &loop, [this] (const QByteArray &data) { + MTPSlave::data(data); + }); + connect(storage, &KMTPStorageInterface::copyFinished, &loop, &QEventLoop::exit); + result = loop.exec(); + + qCDebug(LOG_KIO_MTP) << "data received"; + + if (result) { + error(ERR_CANNOT_READ, url.path()); + return; + } + + data(QByteArray()); + finished(); + return; + } + } + } else { + error(ERR_UNSUPPORTED_ACTION, url.path()); + return; + } + error(ERR_CANNOT_READ, url.path()); +} + +void MTPSlave::put(const QUrl &url, int, JobFlags flags) +{ + const int check = checkUrl(url); + switch (check) { + case 0: + break; + default: + error(ERR_MALFORMED_URL, url.path()); + return; + } + + const QStringList destItems = url.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + + // can't copy to root or device, needs storage + if (destItems.size() < 2) { + error(ERR_UNSUPPORTED_ACTION, url.path()); + return; + } + + // we need to get the entire file first, then we can upload + qCDebug(LOG_KIO_MTP) << "use temp file"; + + QTemporaryFile temp; + if (temp.open()) { + QByteArray buffer; + int len = 0; + + do { + dataReq(); + len = readData(buffer); + temp.write(buffer); + } while (len > 0); + + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(destItems.first()); + if (mtpDevice) { + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(destItems.at(1)); + if (storage) { + const QString destinationPath = convertPath(url.path()); + + // check if the file already exists on the device + const KMTPFile destinationFile = storage->getFileMetadata(destinationPath); + if (destinationFile.isValid()) { + if (flags & KIO::Overwrite) { + // delete existing file on the device + const int result = storage->deleteObject(destinationPath); + if (result) { + error(ERR_CANNOT_DELETE, url.path()); + return; + } + } else { + error(ERR_FILE_ALREADY_EXIST, url.path()); + return; + } + } + + totalSize(quint64(temp.size())); + + QDBusUnixFileDescriptor descriptor(temp.handle()); + int result = storage->sendFileFromFileDescriptor(descriptor, destinationPath); + if (result) { + error(KIO::ERR_CANNOT_WRITE, urlFileName(url)); + return; + } + + result = waitForCopyOperation(storage); + processedSize(quint64(temp.size())); + temp.close(); + + switch (result) { + case 0: + break; + case 2: + error(ERR_IS_FILE, urlDirectory(url)); + return; + default: + error(KIO::ERR_CANNOT_WRITE, urlFileName(url)); + return; + } + + qCDebug(LOG_KIO_MTP) << "data sent"; + finished(); + return; + } + } + } + + error(KIO::ERR_CANNOT_WRITE, urlFileName(url)); +} + +void MTPSlave::copy(const QUrl &src, const QUrl &dest, int, JobFlags flags) +{ + if (src.scheme() == QLatin1String("mtp") && dest.scheme() == QLatin1String("mtp")) { + qCDebug(LOG_KIO_MTP) << "Copy on device: Not supported"; + // MTP doesn't support moving files directly on the device, so we have to download and then upload... + + error(ERR_UNSUPPORTED_ACTION, i18n("Cannot copy/move files on the device itself")); + return; + } else if (src.scheme() == QLatin1String("file") && dest.scheme() == QLatin1String("mtp")) { + // copy from filesystem to the device + + const int check = checkUrl(dest); + switch (check) { + case 0: + break; + default: + error(ERR_MALFORMED_URL, dest.path()); + return; + } + + QStringList destItems = dest.path().split(QLatin1Char('/') , QString::SkipEmptyParts); + + // can't copy to root or device, needs storage + if (destItems.size() < 2) { + error(ERR_UNSUPPORTED_ACTION, dest.path()); + return; + } + + qCDebug(LOG_KIO_MTP) << "Copy file " << urlFileName(src) << "from filesystem to device" << urlDirectory(src, true) << urlDirectory(dest, true); + + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(destItems.first()); + if (mtpDevice) { + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(destItems.at(1)); + if (storage) { + const QString destinationPath = convertPath(dest.path()); + + // check if the file already exists on the device + const KMTPFile destinationFile = storage->getFileMetadata(destinationPath); + if (destinationFile.isValid()) { + if (flags & KIO::Overwrite) { + // delete existing file on the device + const int result = storage->deleteObject(destinationPath); + if (result) { + error(ERR_CANNOT_DELETE, dest.path()); + return; + } + } else { + error(ERR_FILE_ALREADY_EXIST, dest.path()); + return; + } + } + + QFile srcFile(src.path()); + if (!srcFile.open(QIODevice::ReadOnly)) { + error(KIO::ERR_CANNOT_OPEN_FOR_READING, src.path()); + return; + } + + qCDebug(LOG_KIO_MTP) << "Sending file" << srcFile.fileName() << "with size" << srcFile.size(); + + totalSize(quint64(srcFile.size())); + + QDBusUnixFileDescriptor descriptor(srcFile.handle()); + int result = storage->sendFileFromFileDescriptor(descriptor, destinationPath); + if (result) { + error(KIO::ERR_CANNOT_WRITE, urlFileName(dest)); + return; + } + + result = waitForCopyOperation(storage); + processedSize(quint64(srcFile.size())); + srcFile.close(); + + if (result) { + error(KIO::ERR_CANNOT_WRITE, urlFileName(dest)); + return; + } + + qCDebug(LOG_KIO_MTP) << "Sent file"; + finished(); + return; + } + } + error(KIO::ERR_CANNOT_WRITE, urlFileName(src)); + + } else if (src.scheme() == QLatin1String("mtp") && dest.scheme() == QLatin1String("file")) { + // copy from the device to filesystem + + const int check = checkUrl(src); + switch (check) { + case 0: + break; + default: + error(ERR_MALFORMED_URL, src.path()); + return; + } + + qCDebug(LOG_KIO_MTP) << "Copy file" << urlFileName(src) << "from device to filesystem" << urlDirectory(src, true) << urlDirectory(dest, true); + + QFileInfo destination(dest.path()); + + if (!(flags & KIO::Overwrite) && destination.exists()) { + error(ERR_FILE_ALREADY_EXIST, dest.path()); + return; + } + + const QStringList srcItems = src.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + + // can't copy to root or device, needs storage + if (srcItems.size() < 2) { + error(ERR_UNSUPPORTED_ACTION, src.path()); + return; + } + + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(srcItems.first()); + if (mtpDevice) { + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(srcItems.at(1)); + if (storage) { + + QFile destFile(dest.path()); + if (!destFile.open(QIODevice::Truncate | QIODevice::WriteOnly)) { + error(KIO::ERR_WRITE_ACCESS_DENIED, dest.path()); + return; + } + + const KMTPFile source = storage->getFileMetadata(convertPath(src.path())); + if (!source.isValid()) { + error(KIO::ERR_DOES_NOT_EXIST, src.path()); + return; + } + + totalSize(source.filesize()); + + QDBusUnixFileDescriptor descriptor(destFile.handle()); + int result = storage->getFileToFileDescriptor(descriptor, convertPath(src.path())); + if (result) { + error(KIO::ERR_CANNOT_READ, urlFileName(src)); + return; + } + + result = waitForCopyOperation(storage); + processedSize(quint64(source.filesize())); + destFile.close(); + + if (result) { + error(KIO::ERR_CANNOT_READ, urlFileName(src)); + return; + } + + // set correct modification time + struct ::utimbuf times; + times.actime = QDateTime::currentDateTime().toSecsSinceEpoch(); + times.modtime = source.modificationdate(); + + ::utime(dest.path().toUtf8().data(), ×); + + qCDebug(LOG_KIO_MTP) << "Received file"; + finished(); + return; + } + } + error(KIO::ERR_CANNOT_READ, urlFileName(src)); + } +} + +void MTPSlave::mkdir(const QUrl &url, int) +{ + const int check = checkUrl(url); + switch (check) { + case 0: + break; + default: + error(ERR_MALFORMED_URL, url.path()); + return; + } + + const QStringList pathItems = url.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + if (pathItems.size() > 2) { + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(pathItems.first()); + if (mtpDevice) { + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(pathItems.at(1)); + if (storage) { + // TODO: folder already exists + const quint32 itemId = storage->createFolder(convertPath(url.path())); + if (itemId) { + finished(); + return; + } + } + } + } + error(ERR_CANNOT_MKDIR, url.path()); +} + +void MTPSlave::del(const QUrl &url, bool) +{ + const int check = checkUrl(url); + switch (check) { + case 0: + break; + default: + error(ERR_MALFORMED_URL, url.path()); + return; + } + + const QStringList pathItems = url.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + if (pathItems.size() >= 2) { + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(pathItems.first()); + if (mtpDevice) { + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(pathItems.at(1)); + if (storage) { + const int result = storage->deleteObject(convertPath(url.path())); + if (!result) { + finished(); + return; + } + } + } + } + error(ERR_CANNOT_DELETE, url.path()); +} + +void MTPSlave::rename(const QUrl &src, const QUrl &dest, JobFlags flags) +{ + int check = checkUrl(src); + switch (check) { + case 0: + break; + default: + error(ERR_MALFORMED_URL, src.path()); + return; + } + check = checkUrl(dest); + switch (check) { + case 0: + break; + default: + error(ERR_MALFORMED_URL, dest.path()); + return; + } + + if (src.scheme() != QLatin1String("mtp")) { + // Kate: when editing files directly on the device and the user wants to save the changes, + // Kate tries to move the file from /tmp/xxx to the MTP device which is not supported. + // The ERR_UNSUPPORTED_ACTION error tells Kate to copy the file instead of moving. + error(ERR_UNSUPPORTED_ACTION, src.path()); + return; + } + + const QStringList srcItems = src.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(srcItems.first()); + if (mtpDevice) { + // rename Device + if (srcItems.size() == 1) { + const int result = mtpDevice->setFriendlyName(urlFileName(dest)); + if (!result) { + finished(); + return; + } + } + // rename Storage + else if (srcItems.size() == 2) { + error(ERR_CANNOT_RENAME, src.path()); + return; + } else { + // rename file or folder + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(srcItems.at(1)); + if (storage) { + + // check if the file already exists on the device + const QString destinationPath = convertPath(dest.path()); + const KMTPFile destinationFile = storage->getFileMetadata(destinationPath); + if (destinationFile.isValid()) { + if (flags & KIO::Overwrite) { + // delete existing file on the device + const int result = storage->deleteObject(destinationPath); + if (result) { + error(ERR_CANNOT_DELETE, dest.path()); + return; + } + } else { + error(ERR_FILE_ALREADY_EXIST, dest.path()); + return; + } + } + + const int result = storage->setFileName(convertPath(src.path()), dest.fileName()); + if (!result) { + finished(); + return; + } + } + } + } + error(ERR_CANNOT_RENAME, src.path()); +} + +void MTPSlave::virtual_hook(int id, void *data) +{ + switch(id) { + case SlaveBase::GetFileSystemFreeSpace: { + QUrl *url = static_cast(data); + fileSystemFreeSpace(*url); + } break; + default: + SlaveBase::virtual_hook(id, data); + } +} + +void MTPSlave::fileSystemFreeSpace(const QUrl &url) +{ + qCDebug(LOG_KIO_MTP) << "fileSystemFreeSpace:" << url; + + const int check = checkUrl(url); + switch (check) { + case 0: + break; + case 1: + finished(); + return; + case 2: + error(ERR_DOES_NOT_EXIST, url.toDisplayString()); + return; + default: + error(ERR_MALFORMED_URL, url.toDisplayString()); + return; + } + + const QStringList pathItems = url.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + + // Storage + if (pathItems.size() > 1) { + const KMTPDeviceInterface *mtpDevice = m_kmtpDaemon.deviceFromName(pathItems.first()); + if (mtpDevice) { + const KMTPStorageInterface *storage = mtpDevice->storageFromDescription(pathItems.at(1)); + if (storage) { + setMetaData(QStringLiteral("total"), QString::number(storage->maxCapacity())); + setMetaData(QStringLiteral("available"), QString::number(storage->freeSpaceInBytes())); + finished(); + return; + } + } + } + error(KIO::ERR_CANNOT_STAT, url.toDisplayString()); +} + +int MTPSlave::waitForCopyOperation(const KMTPStorageInterface *storage) +{ + QEventLoop loop; + connect(storage, &KMTPStorageInterface::copyProgress, &loop, [this] (qulonglong sent, qulonglong total) { + Q_UNUSED(total) + processedSize(sent); + }); + + // any chance to 'miss' the copyFinished signal and dead lock the slave? + connect(storage, &KMTPStorageInterface::copyFinished, &loop, &QEventLoop::exit); + return loop.exec(); +} + + diff --git a/mtp/kio_mtp.h b/mtp/kio_mtp.h new file mode 100644 index 0000000..fed8316 --- /dev/null +++ b/mtp/kio_mtp.h @@ -0,0 +1,101 @@ +/* + * Main implementation for KIO-MTP + * Copyright (C) 2012 Philipp Schmidt + * Copyright (C) 2018 Andreas Krutzler + * + * 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. + */ + +#ifndef KIO_MTP_H +#define KIO_MTP_H + +#include +#include +#include + +#include +#include +#include +#include + + +// #include + +#include +#include + +#define MAX_XFER_BUF_SIZE 16348 +#define KIO_MTP 7000 +#include + +class KMTPDeviceInterface; +class KMTPStorageInterface; +class KMTPFile; + +using namespace KIO; + +Q_DECLARE_LOGGING_CATEGORY(LOG_KIO_MTP) + +class MTPSlave : public QObject, public KIO::SlaveBase +{ +Q_OBJECT + +public: + /* + * Overwritten KIO-functions, see "kio_mtp.cpp" + */ + MTPSlave(const QByteArray &pool, const QByteArray &app); + ~MTPSlave() override; + + void listDir(const QUrl &url) override; + void stat(const QUrl &url) override; + void mimetype(const QUrl &url) override; + void get(const QUrl &url) override; + void put(const QUrl &url, int, JobFlags flags) override; + void copy(const QUrl &src, const QUrl &dest, int, JobFlags flags) override; + void mkdir(const QUrl &url, int) override; + void del(const QUrl &url, bool) override; + void rename(const QUrl &src, const QUrl &dest, JobFlags flags) override; + +// private slots: +// +// void test(); + +protected: + void virtual_hook(int id, void *data) override; + +private: + /** + * Check if it is a valid url or an udi. + * + * @param url The url to checkUrl + * @param redirect If udi= should be redirected or just return false + * @return 0 if valid, 1 if udi and redirected, 2 if udi but invalid device, -1 else + */ + int checkUrl(const QUrl &url, bool redirect = true); + + void fileSystemFreeSpace(const QUrl &url); + + /** + * @brief Waits for a pending copy operation to finish while updating its progress. + * @param storage + * @return The result of the operation, usually 0 if valid + */ + int waitForCopyOperation(const KMTPStorageInterface *storage); + + KMTPDInterface m_kmtpDaemon; +}; + +#endif // KIO_MTP_H diff --git a/mtp/kiod_module/CMakeLists.txt b/mtp/kiod_module/CMakeLists.txt new file mode 100644 index 0000000..1564721 --- /dev/null +++ b/mtp/kiod_module/CMakeLists.txt @@ -0,0 +1,19 @@ +add_definitions(-DQT_NO_CAST_FROM_ASCII) + +set(kiod_kmtpd_SRCS + kmtpd.cpp + mtpdevice.cpp + mtpstorage.cpp +) + +include_directories(${MTP_INCLUDE_DIR} "../shared") + +qt5_add_dbus_adaptor(kiod_kmtpd_SRCS ../shared/org.kde.kmtp.daemon.xml kmtpd.h KMTPd) +qt5_add_dbus_adaptor(kiod_kmtpd_SRCS ../shared/org.kde.kmtp.device.xml mtpdevice.h MTPDevice) +qt5_add_dbus_adaptor(kiod_kmtpd_SRCS ../shared/org.kde.kmtp.storage.xml mtpstorage.h MTPStorage) + +kcoreaddons_add_plugin(kmtpd INSTALL_NAMESPACE "kf5/kiod" JSON kmtpd.json SOURCES ${kiod_kmtpd_SRCS}) + +target_link_libraries(kmtpd ${MTP_LIBRARIES} kmtp Qt5::Core KF5::CoreAddons KF5::DBusAddons KF5::Solid) + +kdbusaddons_generate_dbus_service_file(kiod5 org.kde.kmtp.daemon ${KDE_INSTALL_FULL_LIBEXECDIR_KF5}) diff --git a/mtp/kiod_module/kmtpd.cpp b/mtp/kiod_module/kmtpd.cpp new file mode 100644 index 0000000..bb04e44 --- /dev/null +++ b/mtp/kiod_module/kmtpd.cpp @@ -0,0 +1,171 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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, see . +*/ + +#include "kmtpd.h" + +#include +#include + +#include +#include +#include + +#include "daemonadaptor.h" + +K_PLUGIN_CLASS_WITH_JSON(KMTPd, "kmtpd.json") + +Q_LOGGING_CATEGORY(LOG_KIOD_KMTPD, "kf5.kiod.kmtpd") + +KMTPd::KMTPd(QObject *parent, const QList ¶meters) + : KDEDModule(parent) +{ + Q_UNUSED(parameters) + + LIBMTP_Init(); + + // search for already connected devices + for (const Solid::Device &solidDevice : Solid::Device::listFromType(Solid::DeviceInterface::PortableMediaPlayer)) { + checkDevice(solidDevice); + } + + auto notifier = Solid::DeviceNotifier::instance(); + connect(notifier, &Solid::DeviceNotifier::deviceAdded, this, &KMTPd::deviceAdded); + connect(notifier, &Solid::DeviceNotifier::deviceRemoved, this, &KMTPd::deviceRemoved); + + new DaemonAdaptor(this); + QDBusConnection::sessionBus().registerService(QStringLiteral("org.kde.kiod5")); + QDBusConnection::sessionBus().registerObject(QStringLiteral("/modules/kmtpd"), this); +} + +KMTPd::~KMTPd() +{ + // Release devices + for (const MTPDevice *device : qAsConst(m_devices)) { + deviceRemoved(device->udi()); + } +} + +QString KMTPd::version() const +{ + return QStringLiteral(LIBMTP_VERSION_STRING); +} + +void KMTPd::checkDevice(const Solid::Device &solidDevice) +{ + if (!deviceFromUdi(solidDevice.udi())) { + qCDebug(LOG_KIOD_KMTPD) << "new device, getting raw devices"; + + const Solid::GenericInterface *iface = solidDevice.as(); + if (!iface) { + qCDebug(LOG_KIOD_KMTPD) << "Solid device " << solidDevice.udi() << " has NOT a Solid::GenericInterface"; + return; + } + + const QMap &properties = iface->allProperties(); + const quint32 solidBusNum = properties.value(QStringLiteral("BUSNUM")).toUInt(); + const quint32 solidDevNum = properties.value(QStringLiteral("DEVNUM")).toUInt(); + + LIBMTP_raw_device_t *rawdevices = nullptr; + int numrawdevices; + LIBMTP_error_number_t err; + + err = LIBMTP_Detect_Raw_Devices(&rawdevices, &numrawdevices); + switch (err) { + case LIBMTP_ERROR_CONNECTING: + qCWarning(LOG_KIOD_KMTPD) << "There has been an error connecting to the devices"; + break; + case LIBMTP_ERROR_MEMORY_ALLOCATION: + qCWarning(LOG_KIOD_KMTPD) << "Encountered a Memory Allocation Error"; + break; + case LIBMTP_ERROR_NONE: { + qCDebug(LOG_KIOD_KMTPD) << "No Error, continuing"; + + for (int i = 0; i < numrawdevices; i++) { + LIBMTP_raw_device_t *rawDevice = &rawdevices[i]; + uint32_t rawBusNum = rawDevice->bus_location; + uint32_t rawDevNum = rawDevice->devnum; + + if (rawBusNum == solidBusNum && rawDevNum == solidDevNum) { + qCDebug(LOG_KIOD_KMTPD) << "Found device matching the Solid description"; + + LIBMTP_mtpdevice_t *mtpDevice = LIBMTP_Open_Raw_Device_Uncached(rawDevice); + if (mtpDevice) { + MTPDevice *device = new MTPDevice(QStringLiteral("/modules/kmtpd/device%1").arg(m_devices.count()), mtpDevice, rawDevice, solidDevice.udi(), m_timeout); + m_devices.append(device); + emit devicesChanged(); + } else { + qCWarning(LOG_KIOD_KMTPD) << "LIBMTP_Open_Raw_Device_Uncached: Could not open MTP device"; + } + } + } + } + break; + case LIBMTP_ERROR_GENERAL: + default: + qCWarning(LOG_KIOD_KMTPD) << "Unknown connection error"; + break; + } + free(rawdevices); + } +} + +MTPDevice *KMTPd::deviceFromUdi(const QString &udi) const +{ + auto deviceIt = std::find_if(m_devices.constBegin(), m_devices.constEnd(), [udi] (const MTPDevice *device) { + return device->udi() == udi; + }); + + return deviceIt == m_devices.constEnd() ? nullptr : *deviceIt; +} + +QList KMTPd::listDevices() const +{ + QList list; + for (const auto &device : m_devices) { + list.append(QDBusObjectPath(device->dbusObjectName())); + } + + return list; +} + +void KMTPd::deviceAdded(const QString &udi) +{ + qCDebug(LOG_KIOD_KMTPD) << "New device attached with udi=" << udi << ". Checking if PortableMediaPlayer..."; + + const Solid::Device device(udi); + if (device.isDeviceInterface(Solid::DeviceInterface::PortableMediaPlayer)) { + qCDebug(LOG_KIOD_KMTPD) << "SOLID: New Device with udi=" << udi; + + checkDevice(device); + } +} + +void KMTPd::deviceRemoved(const QString &udi) +{ + MTPDevice *device = deviceFromUdi(udi); + if (device) { + qCDebug(LOG_KIOD_KMTPD) << "SOLID: Device with udi=" << udi << " removed."; + + m_devices.removeOne(device); + delete device; + emit devicesChanged(); + } +} + +#include "kmtpd.moc" diff --git a/mtp/kiod_module/kmtpd.h b/mtp/kiod_module/kmtpd.h new file mode 100644 index 0000000..3d5e40c --- /dev/null +++ b/mtp/kiod_module/kmtpd.h @@ -0,0 +1,63 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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, see . +*/ + +#ifndef KMTPD_H +#define KMTPD_H + +#include +#include + +#include + +#include "mtpdevice.h" + +Q_DECLARE_LOGGING_CATEGORY(LOG_KIOD_KMTPD) + +class KMTPd : public KDEDModule +{ + Q_OBJECT + Q_PROPERTY(QString version READ version CONSTANT) + +public: + explicit KMTPd(QObject *parent, const QList ¶meters); + ~KMTPd() override; + + QString version() const; + +private: + void checkDevice(const Solid::Device &solidDevice); + MTPDevice *deviceFromUdi(const QString &udi) const; + + QList m_devices; + qint32 m_timeout; + +public slots: + // D-Bus methods + QList listDevices() const; + +private slots: + void deviceAdded(const QString &udi); + void deviceRemoved(const QString &udi); + +signals: + // D-Bus signals + void devicesChanged(); +}; + +#endif // KMTPD_H diff --git a/mtp/kiod_module/kmtpd.json b/mtp/kiod_module/kmtpd.json new file mode 100644 index 0000000..7b648f5 --- /dev/null +++ b/mtp/kiod_module/kmtpd.json @@ -0,0 +1,72 @@ +{ + "KPlugin": { + "Description": "TODO", + "Description[ca@valencia]": "Per fer", + "Description[ca]": "Per fer", + "Description[cs]": "Úkoly", + "Description[da]": "TODO", + "Description[de]": " ", + "Description[el]": "TODO", + "Description[en_GB]": "TODO", + "Description[es]": "POR HACER", + "Description[et]": "kirjutamata", + "Description[eu]": "EGITEKO", + "Description[fi]": "TODO", + "Description[fr]": "A faire", + "Description[gl]": "PENDENTE", + "Description[ia]": "DE FACER", + "Description[it]": "Da fare", + "Description[ko]": "TODO", + "Description[lt]": "Užduočių sąraÅ¡as", + "Description[nl]": "TE DOEN", + "Description[nn]": "TODO", + "Description[pl]": "DO ZROBIENIA", + "Description[pt]": "POR FAZER", + "Description[pt_BR]": "A FAZER", + "Description[ru]": "TODO", + "Description[sk]": "Úlohy", + "Description[sl]": "Za narediti", + "Description[sv]": "ATT GÖRA", + "Description[uk]": "ЩЕ НЕ НАПИСАНО", + "Description[x-test]": "xxTODOxx", + "Description[zh_CN]": "待办事项", + "Description[zh_TW]": "待做", + "Name": "KDE MTP daemon", + "Name[ca@valencia]": "Dimoni MTP del KDE", + "Name[ca]": "Dimoni MTP del KDE", + "Name[cs]": "Démon MTP pro KDE", + "Name[da]": "KDE MTP-dæmon", + "Name[de]": "KDE-MTP-Dienst", + "Name[el]": "KDE MTP διεργασία", + "Name[en_GB]": "KDE MTP daemon", + "Name[es]": "Demonio MTP de KDE", + "Name[et]": "KDE MTP deemon", + "Name[eu]": "KDE MTP daimona", + "Name[fi]": "KDE:n MTP-palvelu", + "Name[fr]": "Démon « MTP » de KDE", + "Name[gl]": "Servizo de MTP de KDE", + "Name[ia]": "Demone KDE MTP", + "Name[it]": "Demone MTP di KDE", + "Name[ko]": "KDE MTP 데몬", + "Name[lt]": "KDE MTP tarnyba", + "Name[nl]": "KDE MTP-daemon", + "Name[nn]": "KDE MTP-teneste", + "Name[pl]": "Usługa KDE MTP", + "Name[pt]": "Servidor de MTP do KDE", + "Name[pt_BR]": "Daemon MTP KDE", + "Name[ru]": "Служба KDE MTP", + "Name[sk]": "KDE MTP démon", + "Name[sl]": "KDE demon MTP", + "Name[sv]": "KDE:s MTP-demon", + "Name[uk]": "Фонова служба MTP KDE", + "Name[x-test]": "xxKDE MTP daemonxx", + "Name[zh_CN]": "KDE MTP 守护程序", + "Name[zh_TW]": "KDE MTP 守護程式", + "ServiceTypes": [ + "KDEDModule" + ] + }, + "X-KDE-DBus-ServiceName": "kmtpd", + "X-KDE-Kded-autoload": false, + "X-KDE-Kded-load-on-demand": true +} diff --git a/mtp/kiod_module/mtpdevice.cpp b/mtp/kiod_module/mtpdevice.cpp new file mode 100644 index 0000000..02df861 --- /dev/null +++ b/mtp/kiod_module/mtpdevice.cpp @@ -0,0 +1,121 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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, see . +*/ + +#include "mtpdevice.h" + +#include + +#include +#include +#include + +#include "mtpstorage.h" + +// D-Bus adaptors +#include "deviceadaptor.h" + +/** + * Creates a Cached Device that has a predefined lifetime (default: 10000 msec)s + * The lifetime is reset every time the device is accessed. After it expires it + * will be released. + * + * @param device The LIBMTP_mtpdevice_t pointer to cache + * @param udi The UDI of the new device to cache + */ +MTPDevice::MTPDevice(const QString &dbusObjectPath, LIBMTP_mtpdevice_t *device, LIBMTP_raw_device_t *rawdevice, const QString &udi, qint32 timeout, QObject *parent) + : QObject(parent), + m_dbusObjectName(dbusObjectPath), + m_timeout(timeout), + m_mtpdevice(device), + m_rawdevice(*rawdevice), + m_udi(udi) +{ + const char *deviceName = LIBMTP_Get_Friendlyname(device); + const char *deviceModel = LIBMTP_Get_Modelname(device); + + // prefer friendly devicename over model + if (!deviceName) { + m_friendlyName = QString::fromUtf8(deviceModel); + } else { + m_friendlyName = QString::fromUtf8(deviceName); + } + + qCDebug(LOG_KIOD_KMTPD) << "Created device " << m_friendlyName << " with udi=" << udi << " and timeout " << timeout; + + new DeviceAdaptor(this); + QDBusConnection::sessionBus().registerObject(m_dbusObjectName, this); + + int index = 0; + for (LIBMTP_devicestorage_t *storage = device->storage; storage != nullptr; storage = storage->next) { + m_storages.append(new MTPStorage(QStringLiteral("%1/storage%2").arg(m_dbusObjectName).arg(index++), storage, this)); + } +} + +MTPDevice::~MTPDevice() +{ + qCDebug(LOG_KIOD_KMTPD) << "release device:" << m_friendlyName; + LIBMTP_Release_Device(m_mtpdevice); +} + +LIBMTP_mtpdevice_t *MTPDevice::getDevice() +{ + return m_mtpdevice; +} + +QString MTPDevice::dbusObjectName() const +{ + return m_dbusObjectName; +} + +QString MTPDevice::udi() const +{ + return m_udi; +} + +QString MTPDevice::friendlyName() const +{ + return m_friendlyName; +} + +int MTPDevice::setFriendlyName(const QString &friendlyName) +{ + if (m_friendlyName == friendlyName) { + return 1; + } + + const int result = LIBMTP_Set_Friendlyname(m_mtpdevice, friendlyName.toUtf8().constData()); + if (!result) { + m_friendlyName = friendlyName; + emit friendlyNameChanged(m_friendlyName); + + } + return result; +} + +QList MTPDevice::listStorages() const +{ + QList list; + list.reserve(m_storages.count()); + for (const MTPStorage *storage : m_storages) { + list.append(QDBusObjectPath(storage->dbusObjectPath())); + } + return list; +} + +#include "moc_mtpdevice.cpp" diff --git a/mtp/kiod_module/mtpdevice.h b/mtp/kiod_module/mtpdevice.h new file mode 100644 index 0000000..26125ab --- /dev/null +++ b/mtp/kiod_module/mtpdevice.h @@ -0,0 +1,78 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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, see . +*/ + +#ifndef MTPDEVICE_H +#define MTPDEVICE_H + +#include + +#include +#include + +Q_DECLARE_LOGGING_CATEGORY(LOG_KIOD_KMTPD) + +class MTPStorage; + +/** + * @brief This D-Bus interface is used to access a single MTP device. + */ +class MTPDevice : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString udi READ udi CONSTANT) + Q_PROPERTY(QString friendlyName READ friendlyName NOTIFY friendlyNameChanged) + +public: + explicit MTPDevice(const QString &dbusObjectPath, + LIBMTP_mtpdevice_t *device, + LIBMTP_raw_device_t *rawdevice, + const QString &udi, + qint32 timeout, + QObject *parent = nullptr); + ~MTPDevice() override; + + LIBMTP_mtpdevice_t *getDevice(); + QString dbusObjectName() const; + + // D-Bus properties + QString udi() const; + QString friendlyName() const; + +private: + const QString m_dbusObjectName; + QList m_storages; + qint32 m_timeout; + + LIBMTP_mtpdevice_t *m_mtpdevice; + LIBMTP_raw_device_t m_rawdevice; + + QString m_udi; + QString m_friendlyName; + +public slots: + // D-Bus methods + + int setFriendlyName(const QString &friendlyName); + QList listStorages() const; + +signals: + void friendlyNameChanged(const QString &friendlyName); +}; + +#endif // MTPDEVICE_H diff --git a/mtp/kiod_module/mtpstorage.cpp b/mtp/kiod_module/mtpstorage.cpp new file mode 100644 index 0000000..80b2bcc --- /dev/null +++ b/mtp/kiod_module/mtpstorage.cpp @@ -0,0 +1,635 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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, see . +*/ + +#include "mtpstorage.h" + +#include +#include + +#include "mtpdevice.h" +#include "storageadaptor.h" + +/** + * @brief MTPDataPutFunc callback function, "puts" data from the device somewhere else + */ +static uint16_t onDataPut(void *, void *priv, uint32_t sendlen, unsigned char *data, uint32_t *putlen) +{ + MTPStorage *storage = static_cast(priv); + emit storage->dataReady(QByteArray(reinterpret_cast(data), int(sendlen))); + *putlen = sendlen; + + return LIBMTP_HANDLER_RETURN_OK; +} + +static int onDataProgress(const uint64_t sent, const uint64_t total, const void * const priv) +{ + MTPStorage *storage = const_cast(static_cast(priv)); + emit storage->copyProgress(sent, total); + return LIBMTP_HANDLER_RETURN_OK; +} + +static QString convertToPath(const QStringList &pathItems, const int elements) +{ + QString path; + + for (int i = 0; i < elements && elements <= pathItems.size(); i++) { + path.append(QLatin1Char('/')); + path.append(pathItems.at(i)); + } + + return path; +} + +/** + * @brief Converts a mime-type to a LIBMTP_filetype_t + */ +static LIBMTP_filetype_t getFiletype(const QString &filename) +{ + LIBMTP_filetype_t filetype; + + const QString ptype = filename.split(QLatin1Char('.')).last(); + + /* This need to be kept constantly updated as new file types arrive. */ + if (ptype == QLatin1String("wav")) { + filetype = LIBMTP_FILETYPE_WAV; + } else if (ptype == QLatin1String("mp3")) { + filetype = LIBMTP_FILETYPE_MP3; + } else if (ptype == QLatin1String("wma")) { + filetype = LIBMTP_FILETYPE_WMA; + } else if (ptype == QLatin1String("ogg")) { + filetype = LIBMTP_FILETYPE_OGG; + } else if (ptype == QLatin1String("mp4")) { + filetype = LIBMTP_FILETYPE_MP4; + } else if (ptype == QLatin1String("wmv")) { + filetype = LIBMTP_FILETYPE_WMV; + } else if (ptype == QLatin1String("avi")) { + filetype = LIBMTP_FILETYPE_AVI; + } else if (ptype == QLatin1String("mpeg") || + ptype == QLatin1String("mpg")) { + filetype = LIBMTP_FILETYPE_MPEG; + } else if (ptype == QLatin1String("asf")) { + filetype = LIBMTP_FILETYPE_ASF; + } else if (ptype == QLatin1String("qt") || + ptype == QLatin1String("mov")) { + filetype = LIBMTP_FILETYPE_QT; + } else if (ptype == QLatin1String("wma")) { + filetype = LIBMTP_FILETYPE_WMA; + } else if (ptype == QLatin1String("jpg") || + ptype == QLatin1String("jpeg")) { + filetype = LIBMTP_FILETYPE_JPEG; + } else if (ptype == QLatin1String("jfif")) { + filetype = LIBMTP_FILETYPE_JFIF; + } else if (ptype == QLatin1String("tif") || + ptype == QLatin1String("tiff")) { + filetype = LIBMTP_FILETYPE_TIFF; + } else if (ptype == QLatin1String("bmp")) { + filetype = LIBMTP_FILETYPE_BMP; + } else if (ptype == QLatin1String("gif")) { + filetype = LIBMTP_FILETYPE_GIF; + } else if (ptype == QLatin1String("pic") || + ptype == QLatin1String("pict")) { + filetype = LIBMTP_FILETYPE_PICT; + } else if (ptype == QLatin1String("png")) { + filetype = LIBMTP_FILETYPE_PNG; + } else if (ptype == QLatin1String("wmf")) { + filetype = LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT; + } else if (ptype == QLatin1String("ics")) { + filetype = LIBMTP_FILETYPE_VCALENDAR2; + } else if (ptype == QLatin1String("exe") || + ptype == QLatin1String("com") || + ptype == QLatin1String("bat") || + ptype == QLatin1String("dll") || + ptype == QLatin1String("sys")) { + filetype = LIBMTP_FILETYPE_WINEXEC; + } else if (ptype == QLatin1String("aac")) { + filetype = LIBMTP_FILETYPE_AAC; + } else if (ptype == QLatin1String("mp2")) { + filetype = LIBMTP_FILETYPE_MP2; + } else if (ptype == QLatin1String("flac")) { + filetype = LIBMTP_FILETYPE_FLAC; + } else if (ptype == QLatin1String("m4a")) { + filetype = LIBMTP_FILETYPE_M4A; + } else if (ptype == QLatin1String("doc")) { + filetype = LIBMTP_FILETYPE_DOC; + } else if (ptype == QLatin1String("xml")) { + filetype = LIBMTP_FILETYPE_XML; + } else if (ptype == QLatin1String("xls")) { + filetype = LIBMTP_FILETYPE_XLS; + } else if (ptype == QLatin1String("ppt")) { + filetype = LIBMTP_FILETYPE_PPT; + } else if (ptype == QLatin1String("mht")) { + filetype = LIBMTP_FILETYPE_MHT; + } else if (ptype == QLatin1String("jp2")) { + filetype = LIBMTP_FILETYPE_JP2; + } else if (ptype == QLatin1String("jpx")) { + filetype = LIBMTP_FILETYPE_JPX; + } else if (ptype == QLatin1String("bin")) { + filetype = LIBMTP_FILETYPE_FIRMWARE; + } else if (ptype == QLatin1String("vcf")) { + filetype = LIBMTP_FILETYPE_VCARD3; + } else { + /* Tagging as unknown file type */ + filetype = LIBMTP_FILETYPE_UNKNOWN; + } + + return filetype; +} + +/** + * @brief Converts a LIBMTP_filetype_t to a mime-type + */ +static QString getMimetype(LIBMTP_filetype_t filetype) +{ + switch (filetype) { + case LIBMTP_FILETYPE_FOLDER: + return QStringLiteral("inode/directory"); + + case LIBMTP_FILETYPE_WAV: + return QStringLiteral("audio/wav"); + case LIBMTP_FILETYPE_MP3: + return QStringLiteral("audio/x-mp3"); + case LIBMTP_FILETYPE_WMA: + return QStringLiteral("audio/x-ms-wma"); + case LIBMTP_FILETYPE_OGG: + return QStringLiteral("audio/x-vorbis+ogg"); + case LIBMTP_FILETYPE_AUDIBLE: + return QString(); + case LIBMTP_FILETYPE_MP4: + return QStringLiteral("audio/mp4"); + case LIBMTP_FILETYPE_UNDEF_AUDIO: + return QString(); + case LIBMTP_FILETYPE_WMV: + return QStringLiteral("video/x-ms-wmv"); + case LIBMTP_FILETYPE_AVI: + return QStringLiteral("video/x-msvideo"); + case LIBMTP_FILETYPE_MPEG: + return QStringLiteral("video/mpeg"); + case LIBMTP_FILETYPE_ASF: + return QStringLiteral("video/x-ms-asf"); + case LIBMTP_FILETYPE_QT: + return QStringLiteral("video/quicktime"); + case LIBMTP_FILETYPE_UNDEF_VIDEO: + return QString(); + case LIBMTP_FILETYPE_JPEG: + return QStringLiteral("image/jpeg"); + case LIBMTP_FILETYPE_JFIF: + return QString(); + case LIBMTP_FILETYPE_TIFF: + return QStringLiteral("image/tiff"); + case LIBMTP_FILETYPE_BMP: + return QStringLiteral("image/bmp"); + case LIBMTP_FILETYPE_GIF: + return QStringLiteral("image/gif"); + case LIBMTP_FILETYPE_PICT: + return QStringLiteral("image/x-pict"); + case LIBMTP_FILETYPE_PNG: + return QStringLiteral("image/png"); + case LIBMTP_FILETYPE_VCALENDAR1: + return QStringLiteral("text/x-vcalendar"); + case LIBMTP_FILETYPE_VCALENDAR2: + return QStringLiteral("text/x-vcalendar"); + case LIBMTP_FILETYPE_VCARD2: + return QStringLiteral("text/x-vcard"); + case LIBMTP_FILETYPE_VCARD3: + return QStringLiteral("text/x-vcard"); + case LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT: + return QStringLiteral("image/x-wmf"); + case LIBMTP_FILETYPE_WINEXEC: + return QStringLiteral("application/x-ms-dos-executable"); + case LIBMTP_FILETYPE_TEXT: + return QStringLiteral("text/plain"); + case LIBMTP_FILETYPE_HTML: + return QStringLiteral("text/html"); + case LIBMTP_FILETYPE_FIRMWARE: + return QString(); + case LIBMTP_FILETYPE_AAC: + return QStringLiteral("audio/aac"); + case LIBMTP_FILETYPE_MEDIACARD: + return QString(); + case LIBMTP_FILETYPE_FLAC: + return QStringLiteral("audio/flac"); + case LIBMTP_FILETYPE_MP2: + return QStringLiteral("video/mpeg"); + case LIBMTP_FILETYPE_M4A: + return QStringLiteral("audio/mp4"); + case LIBMTP_FILETYPE_DOC: + return QStringLiteral("application/msword"); + case LIBMTP_FILETYPE_XML: + return QStringLiteral("text/xml"); + case LIBMTP_FILETYPE_XLS: + return QStringLiteral("application/vnd.ms-excel"); + case LIBMTP_FILETYPE_PPT: + return QStringLiteral("application/vnd.ms-powerpoint"); + case LIBMTP_FILETYPE_MHT: + return QString(); + case LIBMTP_FILETYPE_JP2: + return QStringLiteral("image/jpeg2000"); + case LIBMTP_FILETYPE_JPX: + return QStringLiteral("application/x-jbuilder-project"); + case LIBMTP_FILETYPE_UNKNOWN: + default: + return QString(); + } +} + +/** + * @brief Creates @ref KMTPFile from LIBMTP_file_t + * + * @param file Must not be a nullptr! + */ +static KMTPFile createMTPFile(const LIBMTP_file_t *file) +{ + return KMTPFile(file->item_id, + file->parent_id, + file->storage_id, + file->filename, + file->filesize, + file->modificationdate, + getMimetype(file->filetype)); +} + +MTPStorage::MTPStorage(const QString &dbusObjectPath, const LIBMTP_devicestorage_t *mtpStorage, MTPDevice *parent) + : QObject(parent), + m_dbusObjectPath(dbusObjectPath) +{ + setStorageProperties(mtpStorage); + + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + + new StorageAdaptor(this); + QDBusConnection::sessionBus().registerObject(m_dbusObjectPath, this); +} + +QString MTPStorage::dbusObjectPath() const +{ + return m_dbusObjectPath; +} + +QString MTPStorage::description() const +{ + return m_description; +} + +quint64 MTPStorage::maxCapacity() const +{ + return m_maxCapacity; +} + +quint64 MTPStorage::freeSpaceInBytes() +{ + updateStorageInfo(); + return m_freeSpaceInBytes; +} + +void MTPStorage::setStorageProperties(const LIBMTP_devicestorage_t *storage) +{ + m_id = storage->id; + m_maxCapacity = storage->MaxCapacity; + m_freeSpaceInBytes = storage->FreeSpaceInBytes; + m_description = QString::fromUtf8(storage->StorageDescription); +} + +void MTPStorage::updateStorageInfo() +{ + if (!LIBMTP_Get_Storage(getDevice(), LIBMTP_STORAGE_SORTBY_NOTSORTED)) { + for (const LIBMTP_devicestorage_t *storage = getDevice()->storage; storage != nullptr; storage = storage->next) { + if (m_id == storage->id) { + qCDebug(LOG_KIOD_KMTPD) << "storage info updated"; + setStorageProperties(storage); + break; + } + } + } +} + +LIBMTP_mtpdevice_t *MTPStorage::getDevice() const +{ + return static_cast(parent())->getDevice(); +} + +KMTPFile MTPStorage::getFileFromPath(const QString &path) +{ + const QStringList pathItems = path.split(QLatin1Char('/'), QString::SkipEmptyParts); + + // don't handle the root directory + if (!pathItems.isEmpty()) { + + // 1. check if the file is in the cache + const quint32 itemId = queryPath(path); + if (itemId) { + qCDebug(LOG_KIOD_KMTPD) << "Match found in cache, checking device"; + + LIBMTP_file_t *file = LIBMTP_Get_Filemetadata(getDevice(), itemId); + if (file) { + qCDebug(LOG_KIOD_KMTPD) << "Found file in cache"; + const KMTPFile mtpFile = createMTPFile(file); + LIBMTP_destroy_file_t(file); + return mtpFile; + } + } + + // 2. query cache for parent + else if (pathItems.size() > 1) { + QString parentPath = convertToPath(pathItems, pathItems.size() - 1); + quint32 parentId = queryPath(parentPath); + + qCDebug(LOG_KIOD_KMTPD) << "Match for parent found in cache, checking device. Parent id = " << parentId; + + LIBMTP_file_t *parent = LIBMTP_Get_Filemetadata(getDevice(), parentId); + if (parent) { + qCDebug(LOG_KIOD_KMTPD) << "Found parent in cache"; + + const KMTPFileList list = getFilesAndFoldersCached(parentPath, parentId); + const auto it = std::find_if(list.constBegin(), list.constEnd(), [pathItems](const KMTPFile & file) { + return file.filename() == pathItems.last(); + }); + + LIBMTP_destroy_file_t(parent); + if (it != list.constEnd()) { + qCDebug(LOG_KIOD_KMTPD) << "Found file from cached parent"; + return *it; + } + } + } + } + + // 3. traverse further while depth not reached + QString currentPath; + quint32 currentParent = LIBMTP_FILES_AND_FOLDERS_ROOT; + + for (const QString &element : pathItems) { + const KMTPFileList list = getFilesAndFoldersCached(currentPath, currentParent); + auto it = std::find_if(list.constBegin(), list.constEnd(), [element] (const KMTPFile &file) { + return file.filename() == element; + }); + + if (it != list.constEnd()) { + currentParent = it->itemId(); + } else { + qCDebug(LOG_KIOD_KMTPD) << "File not found!"; + return KMTPFile(); + } + currentPath.append(QLatin1Char('/') + element); + } + + LIBMTP_file_t *file = LIBMTP_Get_Filemetadata(getDevice(), currentParent); + if (file) { + qCDebug(LOG_KIOD_KMTPD) << "Found file using tree walk"; + + const KMTPFile mtpFile = createMTPFile(file); + LIBMTP_destroy_file_t(file); + return mtpFile; + } + return KMTPFile(); +} + +KMTPFileList MTPStorage::getFilesAndFoldersCached(const QString &path, quint32 parentId) +{ + KMTPFileList mtpFiles; + + LIBMTP_file_t *tmp = nullptr; + LIBMTP_file_t *file = LIBMTP_Get_Files_And_Folders(getDevice(), m_id, parentId); + while (file != nullptr) { + const KMTPFile mtpFile = createMTPFile(file); + addPath(path + QLatin1Char('/') + mtpFile.filename(), mtpFile.itemId()); + mtpFiles.append(mtpFile); + + tmp = file; + file = file->next; + LIBMTP_destroy_file_t(tmp); + } + return mtpFiles; +} + +quint32 MTPStorage::queryPath(const QString &path, int timeToLive) +{ + QPair< QDateTime, uint32_t > item = m_cache.value(path); + + if (item.second != 0) { + QDateTime dateTime = QDateTime::currentDateTimeUtc(); + + if (item.first > dateTime) { + item.first = dateTime.addSecs(timeToLive); + m_cache.insert(path, item); + return item.second; + } else { + m_cache.remove(path); + return 0; + } + } + + return 0; +} + +void MTPStorage::addPath(const QString &path, quint32 id, int timeToLive) +{ + QDateTime dateTime = QDateTime::currentDateTimeUtc(); + dateTime = dateTime.addSecs(timeToLive); + + QPair< QDateTime, uint32_t > item(dateTime, id); + + m_cache.insert(path, item); +} + +void MTPStorage::removePath(const QString &path) +{ + m_cache.remove(path); +} + +KMTPFileList MTPStorage::getFilesAndFolders(const QString &path, int &result) +{ + result = 0; + if (path.isEmpty() || path == QLatin1String("/")) { + // list root directory + return getFilesAndFoldersCached(path, LIBMTP_FILES_AND_FOLDERS_ROOT); + } + const KMTPFile file = getFileFromPath(path); + if (!file.isValid()) { + result = 1; // not existing + return KMTPFileList(); + } else if (!file.isFolder()) { + result = 2; // is file + return KMTPFileList(); + } + return getFilesAndFoldersCached(path, file.itemId()); +} + +KMTPFile MTPStorage::getFileMetadata(const QString &path) +{ + qCDebug(LOG_KIOD_KMTPD) << "getFileMetadata:" << path; + return getFileFromPath(path); +} + +int MTPStorage::getFileToHandler(const QString &path) +{ + qCDebug(LOG_KIOD_KMTPD) << "getFileToHandler:" << path; + + const KMTPFile source = getFileMetadata(path); + if (source.isValid()) { + const quint32 itemId = source.itemId(); + QTimer::singleShot(0, this, [this, itemId] { + const int result = LIBMTP_Get_File_To_Handler(getDevice(), itemId, onDataPut, this, onDataProgress, this); + if (result) { + LIBMTP_Dump_Errorstack(getDevice()); + LIBMTP_Clear_Errorstack(getDevice()); + } + emit copyFinished(result); + }); + return 0; + } + return 1; +} + +int MTPStorage::getFileToFileDescriptor(const QDBusUnixFileDescriptor &descriptor, const QString &sourcePath) +{ + qCDebug(LOG_KIOD_KMTPD) << "getFileToFileDescriptor:" << sourcePath; + + const KMTPFile source = getFileMetadata(sourcePath); + if (source.isValid()) { + const quint32 itemId = source.itemId(); + + // big files take some time to copy, and this may lead into D-Bus timeouts. + // therefore the actual copying is not done within the D-Bus method itself but right after we return to the event loop + QTimer::singleShot(0, this, [this, itemId, descriptor] { + const int result = LIBMTP_Get_File_To_File_Descriptor(getDevice(), itemId, descriptor.fileDescriptor(), onDataProgress, this); + if (result) { + LIBMTP_Dump_Errorstack(getDevice()); + LIBMTP_Clear_Errorstack(getDevice()); + } + emit copyFinished(result); + }); + return 0; + } + return 1; +} + +int MTPStorage::sendFileFromFileDescriptor(const QDBusUnixFileDescriptor &descriptor, const QString &destinationPath) +{ + qCDebug(LOG_KIOD_KMTPD) << "sendFileFromFileDescriptor:" << destinationPath; + + QStringList destItems = destinationPath.split(QLatin1Char('/'), QString::SkipEmptyParts); + if (destItems.isEmpty()) { + return 1; + } + + const QString filename = destItems.takeLast(); + uint32_t parentId = LIBMTP_FILES_AND_FOLDERS_ROOT; + + if (!destItems.isEmpty()) { + // not root folder, search for parent folder + const KMTPFile parent = getFileMetadata(convertToPath(destItems, destItems.size())); + parentId = parent.itemId(); + if (!parent.isFolder()) { + return 2; + } + } + + QTimer::singleShot(0, this, [this, parentId, descriptor, filename] { + int result = 1; + QT_STATBUF srcBuf; + if (QT_FSTAT(descriptor.fileDescriptor(), &srcBuf) != -1) { + const QDateTime lastModified = QDateTime::fromSecsSinceEpoch(srcBuf.st_mtim.tv_sec); + + LIBMTP_file_t *file = LIBMTP_new_file_t(); + file->parent_id = parentId; + file->filename = qstrdup(filename.toUtf8().data()); + file->filetype = getFiletype(filename); + file->filesize = quint64(srcBuf.st_size); + file->modificationdate = lastModified.toSecsSinceEpoch(); // no matter what to set here, current time is taken + file->storage_id = m_id; + + result = LIBMTP_Send_File_From_File_Descriptor(getDevice(), descriptor.fileDescriptor(), file, onDataProgress, this); + LIBMTP_destroy_file_t(file); + + if (result) { + LIBMTP_Dump_Errorstack(getDevice()); + LIBMTP_Clear_Errorstack(getDevice()); + } + } + emit copyFinished(result); + }); + + return 0; +} + +int MTPStorage::setFileName(const QString &path, const QString &newName) +{ + qCDebug(LOG_KIOD_KMTPD) << "setFileName:" << path << newName; + + const KMTPFile file = getFileFromPath(path); + if (file.isValid()) { + LIBMTP_file_t *source = LIBMTP_Get_Filemetadata(getDevice(), file.itemId()); + if (source) { + const int result = LIBMTP_Set_File_Name(getDevice(), source, newName.toUtf8().constData()); + if (!result) { + removePath(path); + LIBMTP_destroy_file_t(source); + } + return result; + } + } + return 1; +} + +quint32 MTPStorage::createFolder(const QString &path) +{ + qCDebug(LOG_KIOD_KMTPD) << "createFolder:" << path; + + quint32 folderId = 0; + const QStringList pathItems = path.split(QLatin1Char('/'), QString::SkipEmptyParts); + const quint32 destinationId = queryPath(path); + + if (!pathItems.isEmpty() && !destinationId) { + QByteArray dirName = pathItems.last().toUtf8(); + + if (pathItems.size() == 1) { + // create folder in device root + folderId = LIBMTP_Create_Folder(getDevice(), dirName.data(), LIBMTP_FILES_AND_FOLDERS_ROOT, m_id); + + } else { + const KMTPFile parentFolder = getFileMetadata(path.section(QLatin1Char('/'), 0, -2, QString::SectionIncludeLeadingSep)); + if (parentFolder.isFolder()) { + folderId = LIBMTP_Create_Folder(getDevice(), dirName.data(), parentFolder.itemId(), m_id); + } + } + + if (folderId) { + LIBMTP_Dump_Errorstack(getDevice()); + LIBMTP_Clear_Errorstack(getDevice()); + } else { + addPath(path, folderId); + } + } + return folderId; +} + +int MTPStorage::deleteObject(const QString &path) +{ + qCDebug(LOG_KIOD_KMTPD) << "deleteObject:" << path; + + const KMTPFile file = getFileMetadata(path); + const int ret = LIBMTP_Delete_Object(getDevice(), file.itemId()); + if (!ret) { + removePath(path); + } + return ret; +} + +#include "moc_mtpstorage.cpp" diff --git a/mtp/kiod_module/mtpstorage.h b/mtp/kiod_module/mtpstorage.h new file mode 100644 index 0000000..7b3fd05 --- /dev/null +++ b/mtp/kiod_module/mtpstorage.h @@ -0,0 +1,142 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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, see . +*/ + +#ifndef MTPSTORAGE_H +#define MTPSTORAGE_H + +#include + +#include +#include + +class MTPDevice; + +/** + * @brief This D-Bus interface is used to access a single MTP storage. + * + * This includes storage management like file-, folder- and object-access. + * + * As a performance optimization to reduce hardware interaction, + * a time based cache for file ids, mapping their path to their ID is used. + */ +class MTPStorage : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString description READ description) + Q_PROPERTY(quint64 maxCapacity READ maxCapacity) + Q_PROPERTY(quint64 freeSpaceInBytes READ freeSpaceInBytes) + +public: + explicit MTPStorage(const QString &dbusObjectPath, const LIBMTP_devicestorage_t *mtpStorage, MTPDevice *parent); + + QString dbusObjectPath() const; + + // D-Bus properties + QString description() const; + quint64 maxCapacity() const; + quint64 freeSpaceInBytes(); + +private: + Q_DISABLE_COPY(MTPStorage) + + void setStorageProperties(const LIBMTP_devicestorage_t *storage); + void updateStorageInfo(); + + LIBMTP_mtpdevice_t *getDevice() const; + + /** + * @brief Get the correct file/folder from the device. + * + * @param path + * @return + */ + KMTPFile getFileFromPath(const QString &path); + + /** + * @brief Get all children files/folders of @a parentId and cache them. + * + * @param path parent path, used for caching + * @param parentId + * @return + */ + KMTPFileList getFilesAndFoldersCached(const QString &path, quint32 parentId); + + /** + * @brief Returns the ID of the item at the given path, else 0. + * + * Automatically discards old items. + * + * @param path The Path to query the cache for + * @return The ID of the Item if it exists, else 0 + */ + quint32 queryPath(const QString &path, int timeToLive = 60); + + /** + * @brief Adds a Path to the Cache with the given id and ttl. + * + * @param path The path of the file/folder + * @param id The file ID on the storage + * @param timeToLive The time in seconds the entry should be valid + */ + void addPath(const QString &path, quint32 id, int timeToLive = 60); + + /** + * @brief Remove the given path from the cache, i.e. if it got deleted + * + * @param path The path that should be removed + */ + void removePath(const QString &path); + + const QString m_dbusObjectPath; + + // LIBMTP_devicestorage_t properties + quint32 m_id; /**< Unique ID for this storage */ + quint64 m_maxCapacity; /**< Maximum capability */ + quint64 m_freeSpaceInBytes; /**< Free space in bytes */ + QString m_description; /**< A brief description of this storage */ + + QHash > m_cache; + +public slots: + // D-Bus methods + + // file management + KMTPFileList getFilesAndFolders(const QString &path, int &result); + KMTPFile getFileMetadata(const QString &path); + + int getFileToHandler(const QString &path); + int getFileToFileDescriptor(const QDBusUnixFileDescriptor &descriptor, const QString &sourcePath); + + int sendFileFromFileDescriptor(const QDBusUnixFileDescriptor &descriptor, const QString &destinationPath); + int setFileName(const QString &path, const QString &newName); + + // folder management + quint32 createFolder(const QString &path); + + // object management + int deleteObject(const QString &path); + +signals: + // D-Bus signals + void dataReady(const QByteArray &data); + void copyProgress(qulonglong transferredBytes, qulonglong totalBytes); + void copyFinished(int result); +}; + +#endif // MTPSTORAGE_H diff --git a/mtp/mtp-network.desktop b/mtp/mtp-network.desktop new file mode 100644 index 0000000..36347b9 --- /dev/null +++ b/mtp/mtp-network.desktop @@ -0,0 +1,48 @@ +[Desktop Entry] +Icon=multimedia-player +Name=MTP Devices +Name[ar]=أجهزة MTP +Name[ca]=Dispositius MTP +Name[ca@valencia]=Dispositius MTP +Name[cs]=Zařízení MTP +Name[da]=MTP-enheder +Name[de]=MTP-Geräte +Name[el]=Συσκευές MTP +Name[en_GB]=MTP Devices +Name[es]=Dispositivos MTP +Name[et]=MTP-seadmed +Name[eu]=MTP Gailuak +Name[fi]=MTP-laitteet +Name[fr]=Périphériques MTP +Name[gl]=Dispositivos MTP +Name[he]=התקני MTP +Name[hu]=MTP eszközök +Name[ia]=Dispositivos MTP +Name[id]=Perangkat MTP +Name[is]=MTP Tæki +Name[it]=Dispositivi MTP +Name[ja]=MTP デバイス +Name[ko]=MTP 장치 +Name[lt]=MTP įrenginiai +Name[nb]=MTP-enheter +Name[nl]=MTP-apparaten +Name[nn]=MTP-einingar +Name[pl]=Urządzenia MTP +Name[pt]=Dispositivos MTP +Name[pt_BR]=Dispositivos MTP +Name[ru]=Устройства MTP +Name[sk]=Zariadenia MTP +Name[sl]=Naprave MTP +Name[sr]=МТП уређаји +Name[sr@ijekavian]=МТП уређаји +Name[sr@ijekavianlatin]=MTP uređaji +Name[sr@latin]=MTP uređaji +Name[sv]=MTP-enheter +Name[tr]=MTP Aygıtları +Name[uk]=Пристрої MTP +Name[x-test]=xxMTP Devicesxx +Name[zh_CN]=MTP 设备 +Name[zh_TW]=MTP 裝置 +# Open=false +Type=Link +URL=mtp:/ diff --git a/mtp/mtp.protocol b/mtp/mtp.protocol new file mode 100644 index 0000000..b55813a --- /dev/null +++ b/mtp/mtp.protocol @@ -0,0 +1,17 @@ +[Protocol] +exec=kf5/kio/mtp +protocol=mtp +input=none +output=filesystem +listing=Name,Type,Size,Access +reading=true +writing=true +makedir=true +deleting=true +opening=true +moving=false +linking=false +copyFromFile=true +copyToFile=true +Icon=network-workgroup +maxInstances=1 diff --git a/mtp/shared/CMakeLists.txt b/mtp/shared/CMakeLists.txt new file mode 100644 index 0000000..381795a --- /dev/null +++ b/mtp/shared/CMakeLists.txt @@ -0,0 +1,21 @@ +add_definitions(-DQT_NO_CAST_FROM_ASCII) + +set(kmtp_PART_SRCS + kmtpdinterface.cpp + kmtpdeviceinterface.cpp + kmtpstorageinterface.cpp + kmtpfile.cpp +) + +set_source_files_properties(org.kde.kmtp.storage.xml + PROPERTIES INCLUDE kmtpfile.h +) + +qt5_add_dbus_interfaces(kmtp_PART_SRCS + org.kde.kmtp.daemon.xml + org.kde.kmtp.device.xml + org.kde.kmtp.storage.xml +) + +add_library(kmtp STATIC ${kmtp_PART_SRCS}) +target_link_libraries(kmtp Qt5::Core Qt5::DBus) diff --git a/mtp/shared/kmtpdeviceinterface.cpp b/mtp/shared/kmtpdeviceinterface.cpp new file mode 100644 index 0000000..a1c6c6f --- /dev/null +++ b/mtp/shared/kmtpdeviceinterface.cpp @@ -0,0 +1,70 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "kmtpdeviceinterface.h" +#include "kmtpstorageinterface.h" + +KMTPDeviceInterface::KMTPDeviceInterface(const QString &dbusObjectPath, QObject *parent) + : QObject(parent) +{ + m_dbusInterface = new org::kde::kmtp::Device(QStringLiteral("org.kde.kiod5"), + dbusObjectPath, + QDBusConnection::sessionBus(), + this); + + const auto storageNames = m_dbusInterface->listStorages().value(); + m_storages.reserve(storageNames.count()); + for (const QDBusObjectPath &storageName : storageNames) { + m_storages.append(new KMTPStorageInterface(storageName.path(), this)); + } +} + +QString KMTPDeviceInterface::udi() const +{ + return m_dbusInterface->udi(); +} + +QString KMTPDeviceInterface::friendlyName() const +{ + return m_dbusInterface->friendlyName(); +} + +QVector KMTPDeviceInterface::storages() const +{ + return m_storages; +} + +KMTPStorageInterface *KMTPDeviceInterface::storageFromDescription(const QString &description) const +{ + auto storageIt = std::find_if(m_storages.constBegin(), m_storages.constEnd(), [description] (KMTPStorageInterface *storage) { + return storage->description() == description; + }); + + return storageIt == m_storages.constEnd() ? nullptr : *storageIt; +} + +int KMTPDeviceInterface::setFriendlyName(const QString &friendlyName) +{ + return m_dbusInterface->setFriendlyName(friendlyName); +} + +#include "moc_kmtpdeviceinterface.cpp" diff --git a/mtp/shared/kmtpdeviceinterface.h b/mtp/shared/kmtpdeviceinterface.h new file mode 100644 index 0000000..1e0c601 --- /dev/null +++ b/mtp/shared/kmtpdeviceinterface.h @@ -0,0 +1,64 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef KMTPDEVICEINTERFACE_H +#define KMTPDEVICEINTERFACE_H + +#include + +#include "deviceinterface.h" + +class KMTPStorageInterface; + +/** + * @brief The KMTPDeviceInterface class + * + * @note This interface should be a public API. + */ +class KMTPDeviceInterface : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString udi READ udi CONSTANT) + Q_PROPERTY(QString friendlyName READ friendlyName NOTIFY friendlyNameChanged) + +public: + explicit KMTPDeviceInterface(const QString &dbusObjectPath, QObject *parent); + + QString udi() const; + QString friendlyName() const; + + QVector storages() const; + KMTPStorageInterface *storageFromDescription(const QString &description) const; + +private: + org::kde::kmtp::Device *m_dbusInterface; + QVector m_storages; + +public slots: + int setFriendlyName(const QString &friendlyName); + +signals: + void friendlyNameChanged(const QString &friendlyName); +}; + + +#endif // KMTPDEVICEINTERFACE_H diff --git a/mtp/shared/kmtpdinterface.cpp b/mtp/shared/kmtpdinterface.cpp new file mode 100644 index 0000000..1a2acd5 --- /dev/null +++ b/mtp/shared/kmtpdinterface.cpp @@ -0,0 +1,85 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "kmtpdinterface.h" +#include "kmtpdeviceinterface.h" + +KMTPDInterface::KMTPDInterface(QObject *parent) + : QObject(parent) +{ + // connect to the KDE MTP daemon over D-Bus + m_dbusInterface = new org::kde::kmtp::Daemon(QStringLiteral("org.kde.kiod5"), + QStringLiteral("/modules/kmtpd"), + QDBusConnection::sessionBus()); + + updateDevices(); +} + +bool KMTPDInterface::isValid() const +{ + return m_dbusInterface->isValid(); +} + +KMTPDeviceInterface *KMTPDInterface::deviceFromName(const QString &friendlyName) const +{ + auto deviceIt = std::find_if(m_devices.constBegin(), m_devices.constEnd(), [friendlyName] (const KMTPDeviceInterface *device) { + return device->friendlyName() == friendlyName; + }); + + return deviceIt == m_devices.constEnd() ? nullptr : *deviceIt; +} + +KMTPDeviceInterface *KMTPDInterface::deviceFromUdi(const QString &udi) const +{ + auto deviceIt = std::find_if(m_devices.constBegin(), m_devices.constEnd(), [udi] (const KMTPDeviceInterface *device) { + return device->udi() == udi; + }); + + return deviceIt == m_devices.constEnd() ? nullptr : *deviceIt; +} + +QVector KMTPDInterface::devices() const +{ + return m_devices; +} + +QString KMTPDInterface::version() const +{ + return m_dbusInterface->version(); +} + +void KMTPDInterface::updateDevices() +{ + qDeleteAll(m_devices); + m_devices.clear(); + const auto deviceNames = m_dbusInterface->listDevices().value(); + for (const QDBusObjectPath &deviceName : deviceNames) { + m_devices.append(new KMTPDeviceInterface(deviceName.path(), this)); + } +} + +QList KMTPDInterface::listDevices() +{ + return m_dbusInterface->listDevices(); +} + +#include "moc_kmtpdinterface.cpp" diff --git a/mtp/shared/kmtpdinterface.h b/mtp/shared/kmtpdinterface.h new file mode 100644 index 0000000..a314a87 --- /dev/null +++ b/mtp/shared/kmtpdinterface.h @@ -0,0 +1,70 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef KMTPDINTERFACE_H +#define KMTPDINTERFACE_H + +#include +#include "daemoninterface.h" + +class KMTPDeviceInterface; + +/** + * @brief The KMTPDeviceInterface class + * + * @note This interface should be a public API. + */ +class KMTPDInterface : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString version READ version CONSTANT) + +public: + explicit KMTPDInterface(QObject *parent = nullptr); + + bool isValid() const; + + KMTPDeviceInterface *deviceFromName(const QString &friendlyName) const; + KMTPDeviceInterface *deviceFromUdi(const QString &udi) const; + + QVector devices() const; + + // D-Bus properties + QString version() const; + +private: + void updateDevices(); + + org::kde::kmtp::Daemon *m_dbusInterface; + QVector m_devices; + +public slots: + // D-Bus methods + QList listDevices(); + +signals: + // D-Bus signals + void devicesChanged(); +}; + + +#endif // KMTPDINTERFACE_H diff --git a/mtp/shared/kmtpfile.cpp b/mtp/shared/kmtpfile.cpp new file mode 100644 index 0000000..efd7f42 --- /dev/null +++ b/mtp/shared/kmtpfile.cpp @@ -0,0 +1,147 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "kmtpfile.h" + +KMTPFile::KMTPFile() + : m_itemId(0), + m_parentId(0), + m_storageId(0), + m_filesize(0), + m_modificationdate(0) +{ +} + +KMTPFile::KMTPFile(quint32 itemId, + quint32 parentId, + quint32 storageId, + const char *filename, + quint64 filesize, + qint64 modificationdate, + const QString &filetype) + : m_itemId(itemId), + m_parentId(parentId), + m_storageId(storageId), + m_filename(QString::fromUtf8(filename)), + m_filesize(filesize), + m_modificationdate(modificationdate), + m_filetype(filetype) +{ + +} + +bool KMTPFile::isValid() const +{ + return m_itemId != 0; +} + +bool KMTPFile::isFolder() const +{ + return m_filetype == QLatin1String("inode/directory"); +} + +quint32 KMTPFile::itemId() const +{ + return m_itemId; +} + +quint32 KMTPFile::parentId() const +{ + return m_parentId; +} + +quint32 KMTPFile::storageId() const +{ + return m_storageId; +} + +QString KMTPFile::filename() const +{ + return m_filename; +} + +quint64 KMTPFile::filesize() const +{ + return m_filesize; +} + +qint64 KMTPFile::modificationdate() const +{ + return m_modificationdate; +} + +QString KMTPFile::filetype() const +{ + return m_filetype; +} + +QDBusArgument &operator<<(QDBusArgument &argument, const KMTPFile &mtpFile) +{ + argument.beginStructure(); + argument << mtpFile.m_itemId + << mtpFile.m_parentId + << mtpFile.m_storageId + << mtpFile.m_filename + << mtpFile.m_filesize + << mtpFile.m_modificationdate + << mtpFile.m_filetype; + argument.endStructure(); + return argument; +} + +const QDBusArgument &operator>>(const QDBusArgument &argument, KMTPFile &mtpFile) +{ + argument.beginStructure(); + argument >> mtpFile.m_itemId + >> mtpFile.m_parentId + >> mtpFile.m_storageId + >> mtpFile.m_filename + >> mtpFile.m_filesize + >> mtpFile.m_modificationdate + >> mtpFile.m_filetype; + argument.endStructure(); + return argument; +} + +QDBusArgument &operator<<(QDBusArgument &argument, const KMTPFileList &list) +{ + argument.beginArray(qMetaTypeId()); + for (const KMTPFile &file : list) { + argument << file; + } + argument.endArray(); + return argument; +} + +const QDBusArgument &operator>>(const QDBusArgument &argument, KMTPFileList &list) +{ + argument.beginArray(); + list.clear(); + while (!argument.atEnd()) { + KMTPFile file; + argument >> file; + list.append(file); + } + + argument.endArray(); + return argument; +} diff --git a/mtp/shared/kmtpfile.h b/mtp/shared/kmtpfile.h new file mode 100644 index 0000000..b3670a8 --- /dev/null +++ b/mtp/shared/kmtpfile.h @@ -0,0 +1,90 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef KMTPFILE_H +#define KMTPFILE_H + +#include + +/** + * @brief A wrapper class for LIBMTP_file_t which provides streaming operators for D-Bus marshalling + * + * LIBMTP_file_t definitions with some exceptions: + * item_id: unchanged + * parent_id: unchanged + * storage_id: unchanged + * filename: represented as string + * filesize: unchanged + * modificationsdate: represented as an int64 + * filetype: converted to a mime-string + * next: omitted as it is not necessary in a list + */ +class KMTPFile +{ + +public: + KMTPFile(); + KMTPFile(const KMTPFile &other) = default; + explicit KMTPFile(quint32 itemId, + quint32 parentId, + quint32 storageId, + const char *filename, + quint64 filesize, + qint64 modificationdate, + const QString &filetype); + + bool isValid() const; + bool isFolder() const; + + quint32 itemId() const; + quint32 parentId() const; + quint32 storageId() const; + QString filename() const; + quint64 filesize() const; + qint64 modificationdate() const; + QString filetype() const; + +private: + quint32 m_itemId; /**< Unique item ID */ + quint32 m_parentId; /**< ID of parent folder */ + quint32 m_storageId; /**< ID of storage holding this file */ + QString m_filename; /**< Filename of this file */ + quint64 m_filesize; /**< Size of file in bytes */ + qint64 m_modificationdate; /**< Date of last alteration of the file */ + QString m_filetype; /**< Filetype used for the current file */ + + friend QDBusArgument& operator<<(QDBusArgument &argument, const KMTPFile &mtpFile); + friend const QDBusArgument& operator>>(const QDBusArgument &argument, KMTPFile &mtpFile); +}; + +typedef QList KMTPFileList; + +Q_DECLARE_METATYPE(KMTPFile) +Q_DECLARE_METATYPE(KMTPFileList) + +QDBusArgument& operator<<(QDBusArgument &argument, const KMTPFile &mtpFile); +const QDBusArgument& operator>>(const QDBusArgument &argument, KMTPFile &mtpFile); + +QDBusArgument& operator<<(QDBusArgument &argument, const KMTPFileList &list); +const QDBusArgument& operator>>(const QDBusArgument &argument, KMTPFileList &list); + +#endif // KMTPFILE_H diff --git a/mtp/shared/kmtpstorageinterface.cpp b/mtp/shared/kmtpstorageinterface.cpp new file mode 100644 index 0000000..aa35f8d --- /dev/null +++ b/mtp/shared/kmtpstorageinterface.cpp @@ -0,0 +1,98 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "kmtpstorageinterface.h" +#include "kmtpdeviceinterface.h" + +KMTPStorageInterface::KMTPStorageInterface(const QString &dbusObjectPath, KMTPDeviceInterface *parent) + : QObject(parent) +{ + m_dbusInterface = new org::kde::kmtp::Storage(QStringLiteral("org.kde.kiod5"), + dbusObjectPath, + QDBusConnection::sessionBus(), + this); + m_dbusInterface->setTimeout(5 * 60 * 1000); // TODO: listing folders with a huge amount of files may take a while + + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + + connect(m_dbusInterface, &org::kde::kmtp::Storage::dataReady, this, &KMTPStorageInterface::dataReady); + connect(m_dbusInterface, &org::kde::kmtp::Storage::copyProgress, this, &KMTPStorageInterface::copyProgress); + connect(m_dbusInterface, &org::kde::kmtp::Storage::copyFinished, this, &KMTPStorageInterface::copyFinished); +} + +QString KMTPStorageInterface::description() const +{ + return m_dbusInterface->description(); +} + +quint64 KMTPStorageInterface::maxCapacity() const +{ + return m_dbusInterface->maxCapacity(); +} + +quint64 KMTPStorageInterface::freeSpaceInBytes() const +{ + return m_dbusInterface->freeSpaceInBytes(); +} + +KMTPFileList KMTPStorageInterface::getFilesAndFolders(const QString &path, int &result) const +{ + return m_dbusInterface->getFilesAndFolders(path, result); +} + +KMTPFile KMTPStorageInterface::getFileMetadata(const QString &path) const +{ + return m_dbusInterface->getFileMetadata(path); +} + +int KMTPStorageInterface::getFileToHandler(const QString &path) const +{ + return m_dbusInterface->getFileToHandler(path); +} + +int KMTPStorageInterface::getFileToFileDescriptor(const QDBusUnixFileDescriptor &descriptor, const QString &sourcePath) const +{ + return m_dbusInterface->getFileToFileDescriptor(descriptor, sourcePath).value(); +} + +int KMTPStorageInterface::sendFileFromFileDescriptor(const QDBusUnixFileDescriptor &descriptor, const QString &destinationPath) const +{ + return m_dbusInterface->sendFileFromFileDescriptor(descriptor, destinationPath); +} + +int KMTPStorageInterface::setFileName(const QString &path, const QString &newName) const +{ + return m_dbusInterface->setFileName(path, newName); +} + +quint32 KMTPStorageInterface::createFolder(const QString &path) const +{ + return m_dbusInterface->createFolder(path); +} + +int KMTPStorageInterface::deleteObject(const QString &path) const +{ + return m_dbusInterface->deleteObject(path); +} + +#include "moc_kmtpstorageinterface.cpp" diff --git a/mtp/shared/kmtpstorageinterface.h b/mtp/shared/kmtpstorageinterface.h new file mode 100644 index 0000000..74fb68f --- /dev/null +++ b/mtp/shared/kmtpstorageinterface.h @@ -0,0 +1,77 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + Copyright (C) 2018 Andreas Krutzler + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef KMTPSTORAGEINTERFACE_H +#define KMTPSTORAGEINTERFACE_H + +#include "storageinterface.h" +#include "kmtpfile.h" + +class KMTPDeviceInterface; + +/** + * @brief The KMTPStorageInterface class + * + * @note This interface should be a public API. + */ +class KMTPStorageInterface : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString description READ description) + Q_PROPERTY(quint64 maxCapacity READ maxCapacity) + Q_PROPERTY(quint64 freeSpaceInBytes READ freeSpaceInBytes) + +public: + explicit KMTPStorageInterface(const QString &dbusObjectPath, KMTPDeviceInterface *parent); + + QString description() const; + quint64 maxCapacity() const; + quint64 freeSpaceInBytes() const; + +private: + org::kde::kmtp::Storage *m_dbusInterface; + +public slots: + // file management + KMTPFileList getFilesAndFolders(const QString &path, int &result) const; + KMTPFile getFileMetadata(const QString &path) const; + + int getFileToHandler(const QString &path) const; + int getFileToFileDescriptor(const QDBusUnixFileDescriptor &descriptor, const QString &sourcePath) const; + + int sendFileFromFileDescriptor(const QDBusUnixFileDescriptor &descriptor, const QString &destinationPath) const; + + int setFileName(const QString &path, const QString &newName) const; + + // folder management + quint32 createFolder(const QString &path) const; + + // object management + int deleteObject(const QString &path) const; + +signals: + void dataReady(const QByteArray &data); + void copyProgress(qulonglong transferredBytes, qulonglong totalBytes); + void copyFinished(int result); +}; + +#endif // KMTPSTORAGEINTERFACE_H diff --git a/mtp/shared/org.kde.kmtp.daemon.xml b/mtp/shared/org.kde.kmtp.daemon.xml new file mode 100644 index 0000000..c2dd648 --- /dev/null +++ b/mtp/shared/org.kde.kmtp.daemon.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/mtp/shared/org.kde.kmtp.device.xml b/mtp/shared/org.kde.kmtp.device.xml new file mode 100644 index 0000000..a84978a --- /dev/null +++ b/mtp/shared/org.kde.kmtp.device.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mtp/shared/org.kde.kmtp.storage.xml b/mtp/shared/org.kde.kmtp.storage.xml new file mode 100644 index 0000000..aba9ecc --- /dev/null +++ b/mtp/shared/org.kde.kmtp.storage.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mtp/solid_mtp.desktop b/mtp/solid_mtp.desktop new file mode 100644 index 0000000..11071d1 --- /dev/null +++ b/mtp/solid_mtp.desktop @@ -0,0 +1,40 @@ +[Desktop Entry] +X-KDE-Solid-Predicate=PortableMediaPlayer.supportedProtocols == 'mtp' +Type=Service +Actions=open; + +[Desktop Action open] +Exec=kioclient5 exec mtp:udi=%i/ +Icon=system-file-manager +Name=Browse Files with File Manager +Name[ca]=Navega pels fitxers amb el gestor de fitxers +Name[ca@valencia]=Navega pels fitxers amb el gestor de fitxers +Name[cs]=Prohlížet soubory ve správci souborů +Name[da]=Gennemse med filhÃ¥ndtering +Name[de]=Dateien mit Dateiverwaltung durchsuchen +Name[el]=Περιήγηση σε αρχεία με τον διαχειριστή αρχείων +Name[en_GB]=Browse Files with File Manager +Name[es]=Explorar archivos con el gestor de archivos +Name[et]=Failide sirvimine failihalduriga +Name[eu]=Arakatu fitxategiak fitxategi kudeatzailearekin +Name[fi]=Selaa tiedostoja tiedostonhallinnassa +Name[fr]=Parcourir les fichiers avec le gestionnaire de fichiers +Name[gl]=Explorar o ficheiros co xestor de ficheiros +Name[ia]=Navigar Files con le Gerente de Files +Name[it]=Sfoglia file con il gestore dei file +Name[ja]=ファイルマネージャでファイルを閲覧 +Name[ko]=파일 관리자로 파일 탐색 +Name[lt]=NarÅ¡yti failus naudojant failų tvarkytuvę +Name[nl]=Door bestanden bladeren met bestandsbeheerder +Name[nn]=Bla gjennom filer med filhandsamaren +Name[pl]=Otwórz w przeglądarce plików +Name[pt]=Navegar com o Gestor de Ficheiros +Name[pt_BR]=Navegar com o gerenciador de arquivos +Name[ru]=Открыть в диспетчере файлов +Name[sk]=PrehliadaÅ¥ Súbory zo Správcom Súborov +Name[sl]=Brskaj po datotekah z upravljalnikom datotek +Name[sv]=Bläddra bland filer med filhanterare +Name[uk]=Переглянути файли у програмі для керування файлами +Name[x-test]=xxBrowse Files with File Managerxx +Name[zh_CN]=使用文件管理器浏览文件 +Name[zh_TW]=使用檔案管理員瀏覽檔案 diff --git a/network/CMakeLists.txt b/network/CMakeLists.txt new file mode 100644 index 0000000..915c924 --- /dev/null +++ b/network/CMakeLists.txt @@ -0,0 +1,12 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_network\") + +add_definitions( + -DQT_USE_FAST_OPERATOR_PLUS + -DQT_NO_CAST_TO_ASCII + -DQT_NO_CAST_FROM_ASCII +) + +add_subdirectory( network ) +add_subdirectory( ioslave ) +add_subdirectory( kded ) +add_subdirectory( mimetypes ) diff --git a/network/Messages.sh b/network/Messages.sh new file mode 100644 index 0000000..2f82072 --- /dev/null +++ b/network/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT $(find . -name *.cpp) -o $podir/kio5_network.pot diff --git a/network/README b/network/README new file mode 100644 index 0000000..4d5eaba --- /dev/null +++ b/network/README @@ -0,0 +1,37 @@ +networkkio +========== + +This is an experimental kioslave which presents the network. +It also includes a library which models the network, the devices, and services, +and could be reused by other code. + +Please contact the author Friedrich W. H. Kossebau for any further questions. +Cooperation in this area is welcome :) + + +ioslave +------- +The ioslave lists the local network as represented by the +The protocol name is "network", so enter "network:/" to see your local network. +Currently, due to synchronisation problems, the network data is fetched from the +kded network module via D-Bus, instead of using the network library directly. + + +kded +---- +A kded module to emit KDirNotify signals as needed if the network structure changes. + +That way all users of the network kioslave and listening to KDirNotify can update the view, +e.g. Dolphin, Konqueror and the KDElibs file dialogs. +It also offers the data of the network structure over D-Bus, as currently used by the ioslave. + + +network +------- +A library which models the network with all its devices and the services offered by them. + +Currently it uses KDNSSD, the KDElibs interface to the zeroconf service discovery system, +as the engine to find about the content of network structure. Later on this library should +support different backends concurrently (also UPnP, Windows related stuff like smb, +including undiscoverable/hidden but user/admin entered ones). +If this works out this library might end in KDElibs solid module. diff --git a/network/ioslave/CMakeLists.txt b/network/ioslave/CMakeLists.txt new file mode 100644 index 0000000..3b77ccb --- /dev/null +++ b/network/ioslave/CMakeLists.txt @@ -0,0 +1,26 @@ +include_directories( + ../network +) + +set( kio_network_SRCS + networkdbusinterface.cpp + networkinitwatcher.cpp + networkthread.cpp + networkuri.cpp + mimetypes.cpp + networkslave.cpp + main.cpp +) + +# qt5_add_dbus_interface( kio_network_SRCS ../kded/org.kde.network.xml networkdbusproxy ) + +add_library(kio_network MODULE ${kio_network_SRCS} ) +target_link_libraries( kio_network molletnetwork5 KF5::KIOCore KF5::I18n ) + +set_target_properties(kio_network PROPERTIES OUTPUT_NAME "network") + +install( TARGETS kio_network DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + +install( FILES network.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) +install( FILES network.desktop DESTINATION ${KDE_INSTALL_DATADIR}/remoteview) +install( FILES virtualfolder_network.desktop DESTINATION ${KDE_INSTALL_DATADIR}/konqsidebartng/virtual_folders/remote) diff --git a/network/ioslave/main.cpp b/network/ioslave/main.cpp new file mode 100644 index 0000000..fab6e65 --- /dev/null +++ b/network/ioslave/main.cpp @@ -0,0 +1,43 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "networkslave.h" + +// Qt +#include + + +extern "C" +{ + +int Q_DECL_EXPORT kdemain( int argc, char** argv ) +{ + QCoreApplication app( argc, argv ); + app.setApplicationName(QLatin1String("kio_network")); + + NetworkSlave slave( argv[1], argv[2], argv[3] ); + slave.dispatchLoop(); + + return 0; +} + +} diff --git a/network/ioslave/mimetypes.cpp b/network/ioslave/mimetypes.cpp new file mode 100644 index 0000000..613a92c --- /dev/null +++ b/network/ioslave/mimetypes.cpp @@ -0,0 +1,171 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "mimetypes.h" + +// Qt +#include + + +const char Mimetypes::NetworkMimetype[] = "inode/vnd.kde.network"; + +// keep in sync with Mollet::NetDevice::Type +const char* const Mimetypes::DeviceMimetype[] = +{ + "inode/vnd.kde.device.unknown", + "inode/vnd.kde.device.scanner", + "inode/vnd.kde.device.printer", + "inode/vnd.kde.device.server", + "inode/vnd.kde.device.router", + "inode/vnd.kde.device.workstation" +}; + + +struct MimetypePair { + const char* typeName; + const char* mimetype; +}; + + +// keep in sync with network.xml +static const char* const SimpleServiceMimetype[] = +{ + "ftp", + "sftp-ssh", + "ftps", + "nfs", + "afpovertcp", + "smb", + "webdav", + "webdavs", + + "svn", + "rsync", + + "pop3", + "imap", + + "ssh", + "telnet", + "rfb", + "rdp", + + "http", + "ntp", + "ldap", + + "xmpp-server", + "presence", + "lobby", + "giver", + "sip", + "h323", + "skype", + + "ipp", + "printer", + "pdl-datastream", + + "plasma", + + "kbattleship", + "lskat", + "kfourinline", + "ksirk", + + "pulse-server", + "pulse-source", + "pulse-sink", + "udisks-ssh", + "libvirt", + "airmouse", + + "postgresql", + "couchdb_location", + + "realplayfavs", + "acrobat-server", + "adobe-vc", + "ggz", + + "pgpkey-ldap", + "pgpkey-hkp", + "pgpkey-https", + + "maemo-inf", + + "airport", + "daap", + "dacp", + "eppc", + "net-assistant", + "odisk", + "raop", + "touch-able", + "workstation", + "sleep-proxy", + "nssocketport", + "home-sharing", + "appletv-itunes", + "appletv-pair", + + "upnp.BasicDevice1", + "upnp.WLANAccessPointDevice1", + "upnp.InternetGatewayDevice1", + "upnp.PrinterBasic1", + "upnp.PrinterEnhanced1", + "upnp.Scanner1", + "upnp.MediaServer1", + "upnp.MediaRenderer1", + "upnp.MediaServer2", + "upnp.MediaRenderer2", + "upnp.MediaServer3", + "upnp.SolarProtectionBlind1", + "upnp.DigitalSecurityCamera1", + "upnp.HVAC1", + "upnp.LightingControls1", + "upnp.RemoteUIClientDevice1", + "upnp.RemoteUIServerDevice1", + "upnp.RAClient1", + "upnp.RAServer1", + "upnp.RADiscoveryAgent1", + "upnp.LANDevice1", + "upnp.WANDevice1", + "upnp.WANConnectionDevice1", + "upnp.WFADevice1", + "upnp.Unknown" +}; +static const int SimpleServiceMimetypeCount = sizeof(SimpleServiceMimetype) / sizeof(SimpleServiceMimetype[0]); + +QString Mimetypes::mimetypeForServiceType( const QString& serviceTypeName ) +{ + QString subType = QLatin1String("unknown"); + for( int i=0; i + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef MIMETYPES_H +#define MIMETYPES_H + +class QString; + + +class Mimetypes +{ + public: + static const char NetworkMimetype[]; + static const char* const DeviceMimetype[]; + + static QString mimetypeForServiceType( const QString& serviceTypeName ); +}; + +#endif diff --git a/network/ioslave/network.desktop b/network/ioslave/network.desktop new file mode 100644 index 0000000..1f19126 --- /dev/null +++ b/network/ioslave/network.desktop @@ -0,0 +1,98 @@ +[Desktop Entry] +Type=Link + +URL=network:/ + +Icon=network-workgroup +Name=Network +Name[af]=Netwerk +Name[ar]=الشّبكة +Name[as]=নে'টৱৰ্ক +Name[be]=Сетка +Name[be@latin]=Sietka +Name[bg]=Мрежа +Name[bn]=নেটওয়ার্ক +Name[bn_IN]=নেটওয়ার্ক +Name[br]=Rouedad +Name[bs]=Mreža +Name[ca]=Xarxa +Name[ca@valencia]=Xarxa +Name[cs]=Síť +Name[csb]=Séc +Name[cy]=Rhwydwaith +Name[da]=Netværk +Name[de]=Netzwerk +Name[el]=Δίκτυο +Name[en_GB]=Network +Name[eo]=Reto +Name[es]=Red +Name[et]=Võrk +Name[eu]=Sarea +Name[fa]=شبکه +Name[fi]=Verkko +Name[fr]=Réseau +Name[fy]=Netwurk +Name[ga]=Líonra +Name[gl]=Rede +Name[gu]=નેટવર્ક +Name[he]=רשת +Name[hi]=नेटवर्क +Name[hne]=नेटवर्क +Name[hr]=Mreža +Name[hsb]=Syć +Name[hu]=Hálózat +Name[ia]=Rete +Name[id]=Jaringan +Name[is]=Netkerfi +Name[it]=Rete +Name[ja]=ネットワーク +Name[ka]=ქსელი +Name[kk]=Желі +Name[km]=បណ្ដាញ +Name[kn]=ಜಾಲ +Name[ko]=네트워크 +Name[ku]=Tor +Name[lt]=Tinklas +Name[lv]=TÄ«kls +Name[mai]=नेटवर्क +Name[mk]=Мрежа +Name[ml]=ശൃംഖല +Name[mr]=संजाळ +Name[ms]=Rangkaian +Name[nb]=Nettverk +Name[nds]=Nettwark +Name[ne]=सञ्जाल +Name[nl]=Netwerk +Name[nn]=Nettverk +Name[oc]=Ret +Name[or]=ନେଟୱର୍କ +Name[pa]=ਨੈੱਟਵਰਕ +Name[pl]=Sieć +Name[pt]=Rede +Name[pt_BR]=Rede +Name[ro]=Rețea +Name[ru]=Сеть +Name[se]=Fierbmi +Name[si]=ජාලය +Name[sk]=SieÅ¥ +Name[sl]=Omrežje +Name[sr]=Мрежа +Name[sr@ijekavian]=Мрежа +Name[sr@ijekavianlatin]=Mreža +Name[sr@latin]=Mreža +Name[sv]=Nätverk +Name[ta]=பிணையம் +Name[te]=నెట్ వర్క్ +Name[tg]=Шабакаи Интернет +Name[th]=เครือข่าย +Name[tr]=Ağ +Name[ug]=تور +Name[uk]=Мережа +Name[uz]=Tarmoq +Name[uz@cyrillic]=Тармоқ +Name[vi]=Mạng +Name[wa]=Rantoele +Name[xh]=Umsebenzi womnatha +Name[x-test]=xxNetworkxx +Name[zh_CN]=网络 +Name[zh_TW]=網路 diff --git a/network/ioslave/network.protocol b/network/ioslave/network.protocol new file mode 100644 index 0000000..8dcb21e --- /dev/null +++ b/network/ioslave/network.protocol @@ -0,0 +1,84 @@ +[Protocol] +protocol=network + +input=none +output=filesystem + +X-DocPath=kioslave5/network/index.html + +Icon=network-workgroup +Description=A kioslave to browse the network +Description[bg]=Kioslave за разглеждане на мрежата +Description[bn]=নেটওয়ার্ক ব্রাউজ করার জন্য একটি kioslave +Description[bs]=U/I zahvat za pregledanje mreže +Description[ca]=Un «kioslave» per a explorar la xarxa +Description[ca@valencia]=Un «kioslave» per a explorar la xarxa +Description[cs]=Pomocný protokol pro procházení sítě +Description[csb]=Wtëkôcz przezéraniô sécë +Description[da]=En kioslave til at gennemse netværket +Description[de]=Ein-/Ausgabemodul zum Durchsuchen des Netzwerks +Description[el]=Ένας kioslave για να περιηγηθείτε στο δίκτυο +Description[en_GB]=A kioslave to browse the network +Description[eo]=kioslave por foliumi reton +Description[es]=Un kioslave para explorar la red +Description[et]=KIO moodul võrgu sirvimiseks +Description[eu]=Sarea arakatzeko kioslavea +Description[fa]=یک kioslave برای مرور شبکه +Description[fi]=Yhteyskäytäntö verkkopalveluiden selaamiseen +Description[fr]=Un module d'entrées / sorties pour naviguer dans le réseau +Description[fy]=In kioslave om it network troch te blêdzjen +Description[ga]=Sclábhaí KIO a bhrabhsálann an líonra +Description[gl]=Un kioslave para navegar pola rede +Description[gu]=નેટવર્ક શોધખોળ માટે કિઓસ્લેવ +Description[he]=kioslave לדפדוף ברשת +Description[hi]=संजाल ब्राउज़ करने के लिये kioslave +Description[hr]=Kioslave za kretanje po mreži +Description[hu]=KDE-protokoll hálózatböngészéshez +Description[ia]=Un kioslave pro navigar le rete +Description[id]=Sebuah kioslave untuk menelusuri jaringan +Description[is]=kioslave fyrir flakk um netið +Description[it]=Un kioslave per navigare la rete +Description[ja]=ネットワークをブラウズするための kioslave +Description[kk]=Желіні ақтаруға арналған kioslave +Description[km]=kioslave ត្រូវ​រក​មើល​បណ្ដាញ +Description[kn]=ಜಾಲಬಂಧವನ್ನು ವೀಕ್ಷಿಸಲು ಒಂದು kioslave +Description[ko]=네트워크를 탐색하는 KIO 슬레이브 +Description[lt]=Kio pavaldusis, skirtas narÅ¡yti tinklą +Description[lv]=KIO apstrādātājs tÄ«kla pārlÅ«koÅ¡anai +Description[mk]=КИО-служител за прелистување мрежа +Description[ml]=ശൃംഖല ബ്രൌസ് ചെയ്യാനുള്ളൊരു കിയൊസ്ലേവു് +Description[mr]=संजाळ ब्राऊज करण्याकरिता kioslave +Description[nb]=En kioslave som blar i nettverket +Description[nds]=En In-/Utgaavmoduul, mit dat sik dat Nettwark dörkieken lett +Description[nl]=Een kioslave voor bladeren op het netwerk +Description[nn]=Ein KIO-slave for Ã¥ bla gjennom nettverket +Description[pa]=ਨੈੱਟਵਰਕ ਝਲਕ ਲਈ kioslave +Description[pl]=Wtyczka do przeglądania sieci +Description[pt]=Um 'kioslave' para navegar na rede +Description[pt_BR]=Um kioslave para navegar na rede +Description[ro]=Un kioslave pentru răsfoirea rețelei +Description[ru]=Обзор локальной сети +Description[si]=ජාලය සඳහා kioslave +Description[sk]=Kioslave pre prechádzanie siete +Description[sl]=Podpora kioslave za brskanje po omrežju +Description[sr]=У/И захват за прегледање мреже +Description[sr@ijekavian]=У/И захват за прегледање мреже +Description[sr@ijekavianlatin]=U/I zahvat za pregledanje mreže +Description[sr@latin]=U/I zahvat za pregledanje mreže +Description[sv]=En I/O-slav för att bläddra pÃ¥ nätverket +Description[tg]=Фармонбари kioslave барои истифодаи шабакаи Интернет +Description[th]=ตัวนำข้อมูลเข้า-ออกสำหรับการเรียกดูเครือข่าย +Description[tr]=Ağa göz atmak için bir kioslave +Description[ug]=تور كۆرىدىغان kioslave +Description[uk]=Підлеглий засіб введення-виведення для перегляду мережі +Description[vi]=Một kioslave để duyệt mạng +Description[wa]=On vÃ¥rlet d' I/R po betchter el rantoele +Description[x-test]=xxA kioslave to browse the networkxx +Description[zh_CN]=浏览网络的 KIO slave +Description[zh_TW]=瀏覽網路的 kioslave +exec=kf5/kio/network + +reading=true +listing=Name +determineMimetypeFromExtension=false +Class=:internet diff --git a/network/ioslave/networkdbusinterface.cpp b/network/ioslave/networkdbusinterface.cpp new file mode 100644 index 0000000..1102210 --- /dev/null +++ b/network/ioslave/networkdbusinterface.cpp @@ -0,0 +1,44 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "networkdbusinterface.h" + +// Qt +#include + + +static const char NetworkDBusInterfaceName[] = "org.kde.network"; + +NetworkDBusInterface::NetworkDBusInterface( const QString& service, const QString& path, const QDBusConnection& connection, QObject* parent ) + : QDBusAbstractInterface( service, path, NetworkDBusInterfaceName, connection, parent ) +{ + // TODO: best place to do this? + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); +} + +NetworkDBusInterface::~NetworkDBusInterface() +{ +} + diff --git a/network/ioslave/networkdbusinterface.h b/network/ioslave/networkdbusinterface.h new file mode 100644 index 0000000..055e33f --- /dev/null +++ b/network/ioslave/networkdbusinterface.h @@ -0,0 +1,74 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORKDBUSINTERFACE_H +#define NETWORKDBUSINTERFACE_H + + +// network +#include +// Qt +#include +#include + + +// TODO: see file networkdbus.h +class NetworkDBusInterface: public QDBusAbstractInterface +{ + Q_OBJECT + + public: + NetworkDBusInterface( const QString& service, const QString& path, const QDBusConnection& connection, QObject* parent = nullptr ); + ~NetworkDBusInterface() override; + + public Q_SLOTS: + QDBusReply deviceData( const QString& hostAddress ); + QDBusReply serviceData( const QString& hostAddress, const QString& serviceName, const QString& serviceType ); + QDBusReply deviceDataList(); + QDBusReply serviceDataList( const QString& hostAddress ); +}; + +// TODO: is QDBus::Block the right solution here? +inline QDBusReply NetworkDBusInterface::deviceData( const QString& hostAddress ) +{ + QList argumentList; + argumentList << QVariant::fromValue(hostAddress); + return callWithArgumentList( QDBus::Block, QString::fromLatin1("deviceData"), argumentList ); +} +inline QDBusReply NetworkDBusInterface::serviceData( const QString& hostAddress, const QString& serviceName, const QString& serviceType ) +{ + QList argumentList; + argumentList << QVariant::fromValue(hostAddress) << QVariant::fromValue(serviceName) << QVariant::fromValue(serviceType); + return callWithArgumentList( QDBus::Block, QString::fromLatin1("serviceData"), argumentList ); +} +inline QDBusReply NetworkDBusInterface::deviceDataList() +{ + return call( QString::fromLatin1("deviceDataList") ); +} +inline QDBusReply NetworkDBusInterface::serviceDataList( const QString& hostAddress ) +{ + QList argumentList; + argumentList << QVariant::fromValue(hostAddress); + return callWithArgumentList( QDBus::Block, QString::fromLatin1("serviceDataList"), argumentList ); +} + +#endif diff --git a/network/ioslave/networkinitwatcher.cpp b/network/ioslave/networkinitwatcher.cpp new file mode 100644 index 0000000..4edaee9 --- /dev/null +++ b/network/ioslave/networkinitwatcher.cpp @@ -0,0 +1,23 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "networkinitwatcher.h" diff --git a/network/ioslave/networkinitwatcher.h b/network/ioslave/networkinitwatcher.h new file mode 100644 index 0000000..a739049 --- /dev/null +++ b/network/ioslave/networkinitwatcher.h @@ -0,0 +1,71 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORKINITWATCHER_H +#define NETWORKINITWATCHER_H + +// network +#include "network.h" +//Qt +#include +#include +#include + +using namespace Mollet; + + +class NetworkInitWatcher : public QObject +{ + Q_OBJECT + + public: + NetworkInitWatcher( Network* network, QMutex* mutex ); + ~NetworkInitWatcher() override; + + public Q_SLOTS: + void onNetworkInitDone(); + + private: + QMutex* mMutex; +}; + + +inline NetworkInitWatcher::NetworkInitWatcher( Network* network, QMutex* mutex ) + : mMutex( mutex ) +{ + connect( network, SIGNAL(initDone()), SLOT(onNetworkInitDone()) ); +} +inline NetworkInitWatcher::~NetworkInitWatcher() +{ +qDebug(); +} + +inline void NetworkInitWatcher::onNetworkInitDone() +{ +qDebug()<<"before unlock"; + mMutex->unlock(); +qDebug()<<"after unlock"; + deleteLater(); +qDebug()<<"after deleteLater"; +} + +#endif diff --git a/network/ioslave/networkslave.cpp b/network/ioslave/networkslave.cpp new file mode 100644 index 0000000..b8ba57b --- /dev/null +++ b/network/ioslave/networkslave.cpp @@ -0,0 +1,309 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "networkslave.h" + +// ioslave +#include "networkuri.h" +#include "mimetypes.h" +#include "networkdbusinterface.h" +// network +#include +#include +// KDE Libs +#include +// Qt +#include +#include + +// static const char NetworkIconName[] = "network-workgroup"; + + +NetworkSlave::NetworkSlave( const QByteArray& name, const QByteArray& poolSocket, const QByteArray& programSocket ) + : SlaveBase( name, poolSocket, programSocket ) +{ + mNetworkDBusProxy = new NetworkDBusInterface( QLatin1String("org.kde.kded5"), + QLatin1String("/modules/networkwatcher"), + QDBusConnection::sessionBus() ); +} + +void NetworkSlave::get( const QUrl& url ) +{ + const NetworkUri networkUri( url ); + + bool successfulGetting = false; + + const NetworkUri::Type type = networkUri.type(); + if( type == NetworkUri::Service ) + { + const QString hostAddress = networkUri.hostAddress(); + const QString serviceName = networkUri.serviceName(); + const QString serviceType = networkUri.serviceType(); + QDBusReply reply = mNetworkDBusProxy->serviceData( hostAddress, serviceName, serviceType ); + + if( reply.isValid() ) // TODO: find how a not found service can be expressed in the reply + { + Mollet::NetService serviceData = reply.value(); + if( serviceData.isValid() ) + { + const QUrl url(serviceData.url()); + redirection( url ); + finished(); + successfulGetting = true; + } + } + } + + if( ! successfulGetting ) + error( KIO::ERR_DOES_NOT_EXIST, url.toDisplayString() ); +} + +void NetworkSlave::mimetype( const QUrl& url ) +{ + const NetworkUri networkUri( url ); + + bool successfulMimetyping = false; + NetworkUri::Type type = networkUri.type(); + if( type == NetworkUri::Domain ) + { + mimeType( QLatin1String(Mimetypes::NetworkMimetype) ); + finished(); + successfulMimetyping = true; + } + else + { + const QString hostAddress = networkUri.hostAddress(); + if( type == NetworkUri::Device ) + { + QDBusReply reply = mNetworkDBusProxy->deviceData( hostAddress ); + + if( reply.isValid() ) // TODO: find how a not found service can be expressed in the reply + { + Mollet::NetDevice deviceData = reply.value(); + + mimeType( QLatin1String(Mimetypes::DeviceMimetype[deviceData.type()]) ); + finished(); + successfulMimetyping = true; + } + } + else if( type == NetworkUri::Service ) + { + const QString serviceName = networkUri.serviceName(); + const QString serviceType = networkUri.serviceType(); + QDBusReply reply = mNetworkDBusProxy->serviceData( hostAddress, serviceName, serviceType ); + + if( reply.isValid() ) // TODO: find how a not found service can be expressed in the reply + { + Mollet::NetService serviceData = reply.value(); + if( serviceData.isValid() ) + { + const QUrl url(serviceData.url()); + redirection( url ); + //mimeType( Mimetypes::mimetypeForServiceType(serviceData.type()) ); + finished(); + successfulMimetyping = true; + } + } + } + } + + if( !successfulMimetyping ) + error( KIO::ERR_DOES_NOT_EXIST, url.toDisplayString() ); +} + + +void NetworkSlave::stat( const QUrl& url ) +{ + const NetworkUri networkUri( url ); + + bool successfulStating = false; + NetworkUri::Type type = networkUri.type(); + + if( type == NetworkUri::Domain ) + { + KIO::UDSEntry entry; + feedEntryAsNetwork( &entry ); + statEntry( entry ); + finished(); + successfulStating = true; + } + else + { + const QString hostAddress = networkUri.hostAddress(); + if( type == NetworkUri::Device ) + { + QDBusReply reply = mNetworkDBusProxy->deviceData( hostAddress ); + + if( reply.isValid() ) // TODO: find how a not found service can be expressed in the reply + { + Mollet::NetDevice deviceData = reply.value(); + + KIO::UDSEntry entry; + feedEntryAsDevice( &entry, deviceData ); + statEntry( entry ); + finished(); + successfulStating = true; + } + } + else if( type == NetworkUri::Service ) + { + const QString serviceName = networkUri.serviceName(); + const QString serviceType = networkUri.serviceType(); + QDBusReply reply = mNetworkDBusProxy->serviceData( hostAddress, serviceName, serviceType ); + + if( reply.isValid() ) // TODO: find how a not found service can be expressed in the reply + { + Mollet::NetService serviceData = reply.value(); + if( serviceData.isValid() ) + { + const QUrl url( serviceData.url() ); + redirection( url ); + //KIO::UDSEntry entry; + //feedEntryAsService( &entry, serviceData ); + //statEntry( entry ); + finished(); + successfulStating = true; + } + } + } + } + + if( !successfulStating ) + error( KIO::ERR_DOES_NOT_EXIST, url.toDisplayString() ); +} + +void NetworkSlave::listDir( const QUrl& url ) +{ + const NetworkUri networkUri( url ); + + bool successfulListing = false; + NetworkUri::Type networkUriType = networkUri.type(); + + if( networkUriType != NetworkUri::InvalidUrl ) + { + if( networkUriType == NetworkUri::Domain ) + { + QDBusReply reply = mNetworkDBusProxy->deviceDataList(); + + if( reply.isValid() ) // TODO: find how a not found service can be expressed in the reply + { + const Mollet::NetDeviceList deviceDataList = reply.value(); + + for (const Mollet::NetDevice& deviceData : deviceDataList) { + KIO::UDSEntry entry; + feedEntryAsDevice( &entry, deviceData ); + listEntry( entry ); + } + finished(); + successfulListing = true; + } + } + else + { + const QString hostAddress = networkUri.hostAddress(); + if( networkUriType == NetworkUri::Device ) + { + QDBusReply reply = mNetworkDBusProxy->serviceDataList( hostAddress ); + + if( reply.isValid() ) // TODO: find how a not found service can be expressed in the reply + { + const Mollet::NetServiceList serviceDataList = reply.value(); + + for (const Mollet::NetService& serviceData : serviceDataList) { + KIO::UDSEntry entry; + feedEntryAsService( &entry, serviceData ); + listEntry( entry ); + } + finished(); + successfulListing = true; + } + } + else if( networkUriType == NetworkUri::Service ) + { + const QString serviceName = networkUri.serviceName(); + const QString serviceType = networkUri.serviceType(); + QDBusReply reply = mNetworkDBusProxy->serviceData( hostAddress, serviceName, serviceType ); + + if( reply.isValid() ) // TODO: find how a not found service can be expressed in the reply + { + Mollet::NetService serviceData = reply.value(); + if( serviceData.isValid() ) + { + const QUrl url( serviceData.url() ); + redirection( url ); + finished(); + successfulListing = true; + } + } + } + } + } + + if( ! successfulListing ) + error( KIO::ERR_DOES_NOT_EXIST, url.toDisplayString() ); +} + + +void NetworkSlave::feedEntryAsNetwork( KIO::UDSEntry* entry ) +{ + entry->reserve(3); + entry->fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR ); + entry->fastInsert( KIO::UDSEntry::UDS_DISPLAY_NAME, i18n("Network")); +// entry->fastInsert( KIO::UDSEntry::UDS_ICON_NAME, NetworkIconName ); + entry->fastInsert( KIO::UDSEntry::UDS_MIME_TYPE, QLatin1String(Mimetypes::NetworkMimetype) ); + +} + +void NetworkSlave::feedEntryAsDevice( KIO::UDSEntry* entry, const Mollet::NetDevice& deviceData ) +{ + entry->reserve(4); + entry->fastInsert( KIO::UDSEntry::UDS_NAME, deviceData.hostAddress() ); + entry->fastInsert( KIO::UDSEntry::UDS_DISPLAY_NAME, deviceData.name() ); + entry->fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR ); +// entry->fastInsert( KIO::UDSEntry::UDS_ICON_NAME, NetDevice::iconName(deviceData.type()) ); + entry->fastInsert( KIO::UDSEntry::UDS_MIME_TYPE, QLatin1String(Mimetypes::DeviceMimetype[deviceData.type()]) ); + +} + +void NetworkSlave::feedEntryAsService( KIO::UDSEntry* entry, const Mollet::NetService& serviceData ) +{ + entry->reserve(7); + entry->fastInsert( KIO::UDSEntry::UDS_NAME, serviceData.name()+QLatin1Char('.')+serviceData.type() ); + entry->fastInsert( KIO::UDSEntry::UDS_DISPLAY_NAME, serviceData.name() ); + entry->fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFLNK ); + entry->fastInsert( KIO::UDSEntry::UDS_ACCESS, S_IRWXU|S_IRWXG|S_IRWXO ); + entry->fastInsert( KIO::UDSEntry::UDS_ICON_NAME, serviceData.iconName() ); + entry->fastInsert( KIO::UDSEntry::UDS_MIME_TYPE, Mimetypes::mimetypeForServiceType(serviceData.type()) ); + if( !serviceData.url().isEmpty() ) + entry->fastInsert( KIO::UDSEntry::UDS_TARGET_URL, serviceData.url() ); +} + +void NetworkSlave::reportError( const NetworkUri& networkUri, int errorId ) +{ +Q_UNUSED( networkUri ) +Q_UNUSED( errorId ) +} + +NetworkSlave::~NetworkSlave() +{ + delete mNetworkDBusProxy; +} diff --git a/network/ioslave/networkslave.h b/network/ioslave/networkslave.h new file mode 100644 index 0000000..6c44a5f --- /dev/null +++ b/network/ioslave/networkslave.h @@ -0,0 +1,62 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORKSLAVE_H +#define NETWORKSLAVE_H + +// KDE +#include + +class NetworkDBusInterface; +class NetworkUri; +namespace Mollet { +class NetDevice; +class NetService; +} +namespace KIO { +class UDSEntry; +} + +class NetworkSlave : public KIO::SlaveBase +{ + public: + NetworkSlave( const QByteArray& name, const QByteArray& poolSocket, const QByteArray& programSocket ); + ~NetworkSlave() override; + + public: // KIO::SlaveBase API + void mimetype( const QUrl& url ) override; + void get( const QUrl& url ) override; + void stat( const QUrl& url ) override; + void listDir( const QUrl& url ) override; + + private: + void feedEntryAsNetwork( KIO::UDSEntry* entry ); + void feedEntryAsDevice( KIO::UDSEntry* entry, const Mollet::NetDevice& deviceData ); + void feedEntryAsService( KIO::UDSEntry* entry, const Mollet::NetService& serviceData ); + + void reportError( const NetworkUri& networkUri, int errorId ); + + private: // data + NetworkDBusInterface* mNetworkDBusProxy; +}; + +#endif diff --git a/network/ioslave/networkthread.cpp b/network/ioslave/networkthread.cpp new file mode 100644 index 0000000..f804a4d --- /dev/null +++ b/network/ioslave/networkthread.cpp @@ -0,0 +1,82 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "networkthread.h" + +// ioslave +#include "networkinitwatcher.h" +// network +#include "network.h" +#include "netdevice.h" +#include "netservice.h" +//Qt +#include + +#include + +NetworkThread::NetworkThread() + : QThread() + , mNetwork( nullptr ) + , mContinue( true ) +{ +} + +Mollet::Network* NetworkThread::network() const { return mNetwork; } + +void NetworkThread::pause() +{ + mMutex.lock(); + exit(); +} + + +void NetworkThread::unpause() +{ + mMutex.unlock(); +} + +void NetworkThread::finish() +{ + mContinue = false; + exit(); +} + + +void NetworkThread::run() +{ + mNetwork = Mollet::Network::network(); + + mMutex.lock(); + new NetworkInitWatcher( mNetwork, &mMutex ); + + do + { + exec(); + mMutex.lock(); + mMutex.unlock(); + } + while( mContinue ); +} + +NetworkThread::~NetworkThread() +{ +} diff --git a/network/ioslave/networkthread.h b/network/ioslave/networkthread.h new file mode 100644 index 0000000..968a174 --- /dev/null +++ b/network/ioslave/networkthread.h @@ -0,0 +1,59 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORKTHREAD_H +#define NETWORKTHREAD_H + +// Qt +#include +#include + +namespace Mollet { +class Network; +} + + +class NetworkThread : public QThread +{ + public: + NetworkThread(); + ~NetworkThread() override; + + public: + Mollet::Network* network() const; + + public: + void pause(); + void unpause(); + void finish(); + + protected: // QThread API + void run() override; + + private: + QMutex mMutex; + Mollet::Network* mNetwork; + + bool mContinue; +}; + +#endif diff --git a/network/ioslave/networkuri.cpp b/network/ioslave/networkuri.cpp new file mode 100644 index 0000000..6b6cc47 --- /dev/null +++ b/network/ioslave/networkuri.cpp @@ -0,0 +1,23 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "networkuri.h" diff --git a/network/ioslave/networkuri.h b/network/ioslave/networkuri.h new file mode 100644 index 0000000..c763f81 --- /dev/null +++ b/network/ioslave/networkuri.h @@ -0,0 +1,97 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORKURI_H +#define NETWORKURI_H + +// KDE +#include +// // Qt +// #include + + +// network://domain/hostname/servicename +class NetworkUri +{ +// friend QDataStream& operator<<( QDataStream& stream, const NetworkUri& networkUri ); + + public: + enum Type { InvalidUrl, Domain, Device, Service }; + public: + explicit NetworkUri( const QUrl &url ); + + public: + const QString& hostAddress() const; + const QString& serviceName() const; + const QString& serviceType() const; + NetworkUri::Type type() const; + + private: + + private: // data + QString mHostAddress; + QString mServiceName; + QString mServiceType; +}; + + +inline NetworkUri::NetworkUri( const QUrl &url ) +{ + mHostAddress = url.path().mid( 1 ); + const int slashIndex = mHostAddress.indexOf( QLatin1Char('/') ); + if( slashIndex != -1 ) + { + // servicetype is currently appended as .type to the name + const int serviceTypeIndex = mHostAddress.lastIndexOf( QLatin1Char('.') ) + 1; + mServiceType = mHostAddress.mid( serviceTypeIndex ); + + const int serviceNameLength = (serviceTypeIndex-1) - (slashIndex+1); + mServiceName = mHostAddress.mid( slashIndex + 1, serviceNameLength ); + mHostAddress.resize( slashIndex ); + } +} + +inline const QString& NetworkUri::hostAddress() const { return mHostAddress; } +inline const QString& NetworkUri::serviceName() const { return mServiceName; } +inline const QString& NetworkUri::serviceType() const { return mServiceType; } + +inline NetworkUri::Type NetworkUri::type() const +{ + Type result = + mHostAddress.isEmpty() ? Domain : + mServiceName.isEmpty() ? Device : + /*else*/ Service; + + return result; +} + +/* +inline QDataStream& operator<<( QDataStream& stream, const NetworkUri& networkUri ) +{ + stream << "NetworkUri(host:"<(networkUri.type())<<")"; + return stream; +} +*/ + +#endif diff --git a/network/ioslave/virtualfolder_network.desktop b/network/ioslave/virtualfolder_network.desktop new file mode 100644 index 0000000..c5b9ff1 --- /dev/null +++ b/network/ioslave/virtualfolder_network.desktop @@ -0,0 +1,103 @@ +[Desktop Entry] +Type=Link + +URL=network:/ + +Icon=network-workgroup +Name=Network +Name[af]=Netwerk +Name[ar]=الشّبكة +Name[as]=নে'টৱৰ্ক +Name[be]=Сетка +Name[be@latin]=Sietka +Name[bg]=Мрежа +Name[bn]=নেটওয়ার্ক +Name[bn_IN]=নেটওয়ার্ক +Name[br]=Rouedad +Name[bs]=Mreža +Name[ca]=Xarxa +Name[ca@valencia]=Xarxa +Name[cs]=Síť +Name[csb]=Séc +Name[cy]=Rhwydwaith +Name[da]=Netværk +Name[de]=Netzwerk +Name[el]=Δίκτυο +Name[en_GB]=Network +Name[eo]=Reto +Name[es]=Red +Name[et]=Võrk +Name[eu]=Sarea +Name[fa]=شبکه +Name[fi]=Verkko +Name[fr]=Réseau +Name[fy]=Netwurk +Name[ga]=Líonra +Name[gl]=Rede +Name[gu]=નેટવર્ક +Name[he]=רשת +Name[hi]=नेटवर्क +Name[hne]=नेटवर्क +Name[hr]=Mreža +Name[hsb]=Syć +Name[hu]=Hálózat +Name[ia]=Rete +Name[id]=Jaringan +Name[is]=Netkerfi +Name[it]=Rete +Name[ja]=ネットワーク +Name[ka]=ქსელი +Name[kk]=Желі +Name[km]=បណ្ដាញ +Name[kn]=ಜಾಲ +Name[ko]=네트워크 +Name[ku]=Tor +Name[lt]=Tinklas +Name[lv]=TÄ«kls +Name[mai]=नेटवर्क +Name[mk]=Мрежа +Name[ml]=ശൃംഖല +Name[mr]=संजाळ +Name[ms]=Rangkaian +Name[nb]=Nettverk +Name[nds]=Nettwark +Name[ne]=सञ्जाल +Name[nl]=Netwerk +Name[nn]=Nettverk +Name[oc]=Ret +Name[or]=ନେଟୱର୍କ +Name[pa]=ਨੈੱਟਵਰਕ +Name[pl]=Sieć +Name[pt]=Rede +Name[pt_BR]=Rede +Name[ro]=Rețea +Name[ru]=Сеть +Name[se]=Fierbmi +Name[si]=ජාලය +Name[sk]=SieÅ¥ +Name[sl]=Omrežje +Name[sr]=Мрежа +Name[sr@ijekavian]=Мрежа +Name[sr@ijekavianlatin]=Mreža +Name[sr@latin]=Mreža +Name[sv]=Nätverk +Name[ta]=பிணையம் +Name[te]=నెట్ వర్క్ +Name[tg]=Шабакаи Интернет +Name[th]=เครือข่าย +Name[tr]=Ağ +Name[ug]=تور +Name[uk]=Мережа +Name[uz]=Tarmoq +Name[uz@cyrillic]=Тармоқ +Name[vi]=Mạng +Name[wa]=Rantoele +Name[xh]=Umsebenzi womnatha +Name[x-test]=xxNetworkxx +Name[zh_CN]=网络 +Name[zh_TW]=網路 +# Comment= + +# Open=false +X-KDE-TreeModule=Directory +X-KDE-KonqSidebarModule=konqsidebar_tree diff --git a/network/kded/CMakeLists.txt b/network/kded/CMakeLists.txt new file mode 100644 index 0000000..bb253b0 --- /dev/null +++ b/network/kded/CMakeLists.txt @@ -0,0 +1,21 @@ +include_directories( + ../network + ../ioslave +) +set( kded_networkwatcher_SRCS + networkdbusadaptor.cpp + kioslavenotifier.cpp + networkwatcher.cpp +) + +qt5_add_dbus_adaptor( kded_networkwatcher_SRCS org.kde.network.kioslavenotifier.xml kioslavenotifier.h Mollet::KioSlaveNotifier ) + +add_library(kded_networkwatcher MODULE ${kded_networkwatcher_SRCS} ) +set_target_properties(kded_networkwatcher PROPERTIES OUTPUT_NAME networkwatcher) +kcoreaddons_desktop_to_json(kded_networkwatcher networkwatcher.desktop) + +target_link_libraries( kded_networkwatcher KF5::DBusAddons KF5::KIOCore molletnetwork5 ) + +install( TARGETS kded_networkwatcher DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kded ) + +install( FILES org.kde.network.kioslavenotifier.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} RENAME kf5_org.kde.network.kioslavenotifier.xml ) diff --git a/network/kded/kioslavenotifier.cpp b/network/kded/kioslavenotifier.cpp new file mode 100644 index 0000000..cec64a1 --- /dev/null +++ b/network/kded/kioslavenotifier.cpp @@ -0,0 +1,199 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "kioslavenotifier.h" + +// module +#include "kioslavenotifieradaptor.h" +// kioslave +#include +// network +#include +#include +#include +// KDE +#include +// Qt +#include + +#include + + +namespace Mollet +{ + +static inline QString idFrom( const NetworkUri& networkUri ) +{ + return networkUri.hostAddress().isEmpty() ? QString() : + networkUri.serviceName().isEmpty() ? networkUri.hostAddress() : + /*else*/ networkUri.hostAddress()+QLatin1Char('/')+networkUri.serviceName(); +} + +static inline QString dirIdFor( const NetDevice& device ) +{ +Q_UNUSED( device ) + return QString(); +} +static inline QString pathFor( const NetDevice& device ) +{ + return device.hostAddress(); +} + +static inline QString dirIdFor( const NetService& service ) +{ + return service.device().hostAddress(); +} + +static inline QString pathFor( const NetService& service ) +{ + return service.device().hostAddress() + QLatin1Char('/') + service.name()+QLatin1Char('.')+service.type(); +} + + +KioSlaveNotifier::KioSlaveNotifier( Network* network, QObject* parent ) + : QObject( parent ) +{ + QDBusConnection sessionBus = QDBusConnection::sessionBus(); + const QString allServices; + const QString allPaths; + const QString interface = QLatin1String( "org.kde.KDirNotify" ); + sessionBus.connect( allServices, allPaths, interface, QLatin1String("enteredDirectory"), + this, SLOT(onDirectoryEntered(QString)) ); + sessionBus.connect( allServices, allPaths, interface, QLatin1String("leftDirectory"), + this, SLOT(onDirectoryLeft(QString)) ); + + new KioSlaveNotifierAdaptor( this ); + + connect( network, SIGNAL(devicesAdded(QList)), SLOT(onDevicesAdded(QList)) ); + connect( network, SIGNAL(devicesRemoved(QList)), SLOT(onDevicesRemoved(QList)) ); + connect( network, SIGNAL(servicesAdded(QList)), SLOT(onServicesAdded(QList)) ); + connect( network, SIGNAL(servicesRemoved(QList)), SLOT(onServicesRemoved(QList)) ); +} + +QStringList KioSlaveNotifier::watchedDirectories() const +{ + return mWatchedDirs.keys(); +} + + +void KioSlaveNotifier::onDirectoryEntered( const QString& directory ) +{ + if( !directory.startsWith(QLatin1String("network:/")) ) + return; + + const NetworkUri networkUri(( QUrl(directory) )); + const QString id = idFrom( networkUri ); + + QHash::Iterator it = mWatchedDirs.find( id ); + + if( it == mWatchedDirs.end() ) + { + mWatchedDirs.insert( id, 1 ); + } + else + (*it)++; +} + + +void KioSlaveNotifier::onDirectoryLeft( const QString& directory ) +{ + if( !directory.startsWith(QLatin1String("network:/")) ) + return; + + const NetworkUri networkUri(( QUrl(directory) )); + const QString id = idFrom( networkUri ); + + QHash::Iterator it = mWatchedDirs.find( id ); + + if( it == mWatchedDirs.end() ) + return; + + if( *it == 1 ) + mWatchedDirs.erase( it ); + else + (*it)--; +} + + +void KioSlaveNotifier::notifyAboutAdded( const QString& dirId ) +{ + QHash::Iterator it = mWatchedDirs.find( dirId ); + if( it != mWatchedDirs.end() ) + { + const QUrl url( QLatin1String("network:/") + dirId ); + org::kde::KDirNotify::emitFilesAdded( url ); + } +} + +void KioSlaveNotifier::notifyAboutRemoved( const QString& dirId, const QString& itemPath ) +{ + QHash::Iterator it = mWatchedDirs.find( dirId ); + if( it != mWatchedDirs.end() ) + { + QList itemUrls; + itemUrls.append( QUrl( QStringLiteral("network:/") + itemPath ) ); + org::kde::KDirNotify::emitFilesRemoved( itemUrls ); + } +} + + +void KioSlaveNotifier::onDevicesAdded( const QList& deviceList ) +{ + for (const NetDevice& device : deviceList) { + const QString id = dirIdFor( device ); + notifyAboutAdded( id ); + } +} + +void KioSlaveNotifier::onDevicesRemoved( const QList& deviceList ) +{ + for (const NetDevice& device : deviceList) { + const QString dirId = dirIdFor( device ); + const QString itemPath = pathFor( device ); + notifyAboutRemoved( dirId, itemPath ); + } +} + + +void KioSlaveNotifier::onServicesAdded( const QList& serviceList ) +{ + for (const NetService& service : serviceList) { + const QString id = dirIdFor( service ); + notifyAboutAdded( id ); + } +} + + +void KioSlaveNotifier::onServicesRemoved( const QList& serviceList ) +{ + for (const NetService& service : serviceList) { + const QString dirId = dirIdFor( service ); + const QString itemPath = pathFor( service ); + notifyAboutRemoved( dirId, itemPath ); + } +} + +KioSlaveNotifier::~KioSlaveNotifier() +{ +} + +} diff --git a/network/kded/kioslavenotifier.h b/network/kded/kioslavenotifier.h new file mode 100644 index 0000000..85064cf --- /dev/null +++ b/network/kded/kioslavenotifier.h @@ -0,0 +1,69 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef KIOSLAVENOTIFIER_H +#define KIOSLAVENOTIFIER_H + +// Qt +#include +#include + +namespace Mollet +{ + +class Network; +class NetDevice; +class NetService; + + +class KioSlaveNotifier : public QObject +{ + Q_OBJECT + + public: + explicit KioSlaveNotifier( Network* network, QObject* parent = nullptr ); + ~KioSlaveNotifier() override; + + public: // for debugging, remove also from adaptor.xml + QStringList watchedDirectories() const; + + public Q_SLOTS: + void onDirectoryEntered( const QString& directory ); + void onDirectoryLeft( const QString& directory ); + + private: + void notifyAboutAdded( const QString& dirId ); + void notifyAboutRemoved( const QString& dirId, const QString& itemPath ); + + private Q_SLOTS: + void onDevicesAdded( const QList& deviceList ); + void onDevicesRemoved( const QList& deviceList ); + void onServicesAdded( const QList& serviceList ); + void onServicesRemoved( const QList& serviceList ); + + private: + QHash mWatchedDirs; +}; + +} + +#endif diff --git a/network/kded/networkdbusadaptor.cpp b/network/kded/networkdbusadaptor.cpp new file mode 100644 index 0000000..94af3a4 --- /dev/null +++ b/network/kded/networkdbusadaptor.cpp @@ -0,0 +1,65 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "networkdbusadaptor.h" + +// network +#include +// Qt +#include + + +namespace Mollet +{ + +NetworkDBusAdaptor::NetworkDBusAdaptor( NetworkWatcher* parent ) + : QDBusAbstractAdaptor( parent ) +{ + // TODO: best place to do this? + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); +} + +NetDevice NetworkDBusAdaptor::deviceData( const QString& hostAddress ) +{ + return parent()->deviceData( hostAddress ); +} +NetService NetworkDBusAdaptor::serviceData( const QString& hostAddress, const QString& serviceName, const QString& serviceType ) +{ + return parent()->serviceData( hostAddress, serviceName, serviceType ); +} +NetDeviceList NetworkDBusAdaptor::deviceDataList() +{ + return parent()->deviceDataList(); +} +NetServiceList NetworkDBusAdaptor::serviceDataList( const QString& hostAddress ) +{ + return parent()->serviceDataList( hostAddress ); +} + +NetworkDBusAdaptor::~NetworkDBusAdaptor() +{ +} + +} diff --git a/network/kded/networkdbusadaptor.h b/network/kded/networkdbusadaptor.h new file mode 100644 index 0000000..16b41f3 --- /dev/null +++ b/network/kded/networkdbusadaptor.h @@ -0,0 +1,63 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORKDBUSADAPTOR_H +#define NETWORKDBUSADAPTOR_H + +// kded +#include "networkwatcher.h" +// +#include +// Qt +#include +#include + + +namespace Mollet +{ + +// TODO: see file networkdbus.h +class NetworkDBusAdaptor: public QDBusAbstractAdaptor +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.kde.network") + + public: + explicit NetworkDBusAdaptor( NetworkWatcher* parent ); + ~NetworkDBusAdaptor() override; + + public: + NetworkWatcher* parent() const; + + public Q_SLOTS: + Mollet::NetDevice deviceData( const QString& hostAddress ); + Mollet::NetService serviceData( const QString& hostAddress, const QString& serviceName, const QString& serviceType ); + Mollet::NetDeviceList deviceDataList(); + Mollet::NetServiceList serviceDataList( const QString& hostAddress ); +}; + + +inline NetworkWatcher* NetworkDBusAdaptor::parent() const { return static_cast( QObject::parent() ); } + +} + +#endif diff --git a/network/kded/networkwatcher.cpp b/network/kded/networkwatcher.cpp new file mode 100644 index 0000000..c69de2a --- /dev/null +++ b/network/kded/networkwatcher.cpp @@ -0,0 +1,122 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "networkwatcher.h" + +// module +#include "networkdbusadaptor.h" +#include "kioslavenotifier.h" +// network +#include +// KF +#include +#include +// Qt +#include + +namespace Mollet +{ + +K_PLUGIN_CLASS_WITH_JSON(NetworkWatcher, "networkwatcher.json") + +NetworkWatcher::NetworkWatcher( QObject* parent, const QList& parameters ) + : KDEDModule( parent ) +{ +Q_UNUSED( parameters ) + mNetwork = Network::network(); + + new KioSlaveNotifier( mNetwork ); + + new NetworkDBusAdaptor( this ); + QDBusConnection::sessionBus().registerService( QString::fromLatin1("org.kde.kded5") ); + QDBusConnection::sessionBus().registerObject( QString::fromLatin1("/modules/networkwatcher"), this ); +} + +// TODO: instead use networkuri and return QVariant for all these +NetDevice NetworkWatcher::deviceData( const QString& hostAddress ) +{ + NetDevice result; + + const QList deviceList = mNetwork->deviceList(); + for (const NetDevice& device : deviceList) { + if( device.hostAddress() == hostAddress ) + { + result = device; + break; + } + } + + return result; +} + +NetService NetworkWatcher::serviceData( const QString& hostAddress, const QString& serviceName, const QString& serviceType ) +{ + NetService result; + + const QList deviceList = mNetwork->deviceList(); + for (const NetDevice& device : deviceList) { + if( device.hostAddress() == hostAddress ) + { + const QList serviceList = device.serviceList(); + + for (const NetService& service : serviceList) { + if( service.name() == serviceName && service.type() == serviceType ) + { + result = service; + break; + } + } + break; + } + } + + return result; +} + +NetDeviceList NetworkWatcher::deviceDataList() +{ + return mNetwork->deviceList(); +} + +NetServiceList NetworkWatcher::serviceDataList( const QString& hostAddress ) +{ + NetServiceList result; + + const QList deviceList = mNetwork->deviceList(); + for (const NetDevice& device : deviceList) { + if( device.hostAddress() == hostAddress ) + { + result = device.serviceList(); + break; + } + } + + return result; +} + +NetworkWatcher::~NetworkWatcher() +{ +} + +} + +#include "networkwatcher.moc" diff --git a/network/kded/networkwatcher.desktop b/network/kded/networkwatcher.desktop new file mode 100644 index 0000000..5cb3aad --- /dev/null +++ b/network/kded/networkwatcher.desktop @@ -0,0 +1,146 @@ +[Desktop Entry] +Type=Service +X-KDE-ServiceTypes=KDEDModule +X-KDE-Library=networkwatcher +X-KDE-DBus-ModuleName=networkwatcher +X-KDE-Kded-autoload=false +X-KDE-Kded-load-on-demand=true +Name=Network Watcher +Name[ar]=مراقب الشّبكة +Name[bg]=Наблюдение на мрежата +Name[bn]=নেটওয়ার্ক ওয়াচার +Name[bs]=Nadzornik mreže +Name[ca]=Vigilant de la xarxa +Name[ca@valencia]=Vigilant de la xarxa +Name[cs]=Sledování sítě +Name[csb]=Dozérôcz sécë +Name[da]=NetværksovervÃ¥ger +Name[de]=Netzwerküberwachung +Name[el]=Επόπτης δικτύων +Name[en_GB]=Network Watcher +Name[eo]=Kontrolilo de reto +Name[es]=Observador de redes +Name[et]=Võrgujälgija +Name[eu]=Sare-behatzailea +Name[fa]=دیده‌بان شبکه +Name[fi]=Verkkotilan valvoja +Name[fr]=Surveillance du réseau +Name[fy]=Netwurk sjogger +Name[ga]=Fairtheoir Líonra +Name[gl]=Vixilante da rede +Name[gu]=નેટવર્ક દેખરેખ +Name[he]=מנטר הרשת +Name[hi]=नेटवर्क चौकीदार +Name[hr]=Nadzornik mreže +Name[hu]=Hálózatfigyelő +Name[ia]=Observator de Rete +Name[id]=Pengawas Jaringan +Name[is]=Netskoðunartól +Name[it]=Guardia di rete +Name[ja]=ネットワークウォッチゃ +Name[kk]=Желі бақылауышы +Name[km]=កម្មវិធីមើល​បណ្ដាញ +Name[kn]=ಜಾಲಬಂಧ ನೋಡುಗ(ವಾಚರ್) +Name[ko]=네트워크 모니터 +Name[lt]=Tinklo stebėtojas +Name[lv]=TÄ«kla novērotājs +Name[mai]=नेटवर्क वाचर +Name[mk]=Анализатор на мрежи +Name[ml]=ശൃംഖല നിരീക്ഷകന്‍ +Name[mr]=संजाळ नोंदकर्ता +Name[nb]=NettverksovervÃ¥ker +Name[nds]=Nettwark-Kieker +Name[nl]=Netwerkbewaker +Name[nn]=Nettverksovervakar +Name[pa]=ਨੈੱਟਵਰਕ ਵਾਂਚਰ +Name[pl]=Analizator sieci +Name[pt]=Vigilante da Rede +Name[pt_BR]=Monitor de rede +Name[ro]=Supraveghetor rețea +Name[ru]=Слежение за сетевыми папками +Name[si]=ජාල විශ්ලේෂකය +Name[sk]=Sledovanie siete +Name[sl]=Opazovalnik omrežja +Name[sr]=Надзорник мреже +Name[sr@ijekavian]=Надзорник мреже +Name[sr@ijekavianlatin]=Nadzornik mreže +Name[sr@latin]=Nadzornik mreže +Name[sv]=Nätverksövervakare +Name[tg]=Нигаҳбони шабакаи Интернет +Name[th]=เครื่องมือสอดส่องเครือข่าย +Name[tr]=Ağ İzleyici +Name[ug]=تور كۆزەتچى +Name[uk]=Наглядач мережі +Name[vi]=Trình theo dõi mạng +Name[wa]=Waiteu d' rantoele +Name[x-test]=xxNetwork Watcherxx +Name[zh_CN]=网络监视器 +Name[zh_TW]=網路監控器 +Comment=Keeps track of the network and updates directory listings of the network:/ protocol +Comment[bg]=Наблюдение на мрежата и обновяване на съответните списъци на мрежовия протокол +Comment[bn]=নেটওয়ার্ক-এর ওপর লক্ষ্য রাখে এবং প্রয়োজনমত network:/ প্রোটোকল-এর ডিরেক্টরি তালিকা আপডেট করে +Comment[bs]=Prati mrežu i ažurira ispise fascikli protokola network:/ +Comment[ca]=Fa un seguiment de la xarxa i actualitza els llistats de directoris del protocol network:/ +Comment[ca@valencia]=Fa un seguiment de la xarxa i actualitza els llistats de directoris del protocol network:/ +Comment[cs]=Udržuje přehled o síti a aktualizuje výpisy adresářů protokolu network:/ +Comment[csb]=Dozérô sécë ë aktualizëje wëskrzënianié katalogów sécë:/ protocol +Comment[da]=Holder øje med netværket og opdaterer mappelister for protokollen network:/ +Comment[de]=Überwacht das Netzwerk und aktualisiert Ordnerauflistungen des Protokolls „network:/“ +Comment[el]=Καταγραφή του δικτύου και ενημέρωση της λίστας των φακέλων του δικτύου:/πρωτόκολλο +Comment[en_GB]=Keeps track of the network and updates directory listings of the network:/ protocol +Comment[eo]=Ĝi konservas spuron de la reto kaj ĝisdatigas liston de dosierujoj de la protokolo network:/ +Comment[es]=Sigue la pista de la red y actualiza los listados de directorios del protocolo network:/ +Comment[et]=Hoiab võrgul silma peal ja uuendab protokolli network:/ kataloogide nimekirja +Comment[eu]=Sarearen segimendua egiten du eta network:/ protokoloaren direktorio-zerrendak eguneratzen ditu +Comment[fa]=شبکه را میپاید و سیاهه‌ی پوشه‌های شبکه روبرو را به روز میکند:/ protocol +Comment[fi]=Pitää kirjaa verkosta ja päivittää network:/-yhteyskäytännön kansioluettelot +Comment[fr]=Conserve des enregistrements du réseau et met à jour les contenus des dossiers pour le protocole « network:/ » +Comment[fy]=Hâld de netwurk en fernijings triemtafel listen fan it network:/ protocol yn de gaten +Comment[ga]=Coimeádann sé cuntas ar an líonra agus nuashonraíonn comhadlanna den phrótacal network:/ +Comment[gl]=Segue a rede e actualiza as listas de directorios do protocolo network:/ +Comment[gu]=નેટવર્કની દેખરેખ રાખે છે અને network:/ પ્રોટોકોલની ડિરેક્ટરી યાદીઓ સુધારે છે +Comment[he]=משמש למעקב אחר הרשת ולעידכון של רשימת התיקיות בפרוטוקול network:/ +Comment[hi]=संजाल की जानकारी रखता है और संजाल के निर्देशिका सूचियाँ का अद्यतन करता है:/ protocol +Comment[hr]=Pazi na mrežu i ažurira popis direktorija protokola network:/ +Comment[hu]=Figyeli a hálózat állapotát és frissíti a mappalistákat a network:/ protokollal +Comment[ia]=Il mantene tracia del rete e il actualisa listas de directorio de le rete:/protocollo +Comment[id]=Pemantauan jaringan dan pembaruan pendaftaran direktori dari jaringan/protokol +Comment[is]=Fylgist með netvirkni og uppfærir möppubreytingar með network:/ samskiptareglunni +Comment[it]=Tiene traccia della rete e aggiorna la lista delle cartelle del protocollo network:/ +Comment[ja]=ネットワークのトラックを保持し、network:/ プロトコルのディレクトリリスティングを更新します +Comment[kk]=Желіке бақылап отырып network:/ протоколы тізімдерінің қапшығын жаңартып отырады +Comment[km]=តាមដាន​បណ្ដាញ និង​​ធ្វើ​បច្ចុប្បន្នភាព​ថត ​ដោយ​រាយ​ពិធីការ network:/ +Comment[ko]=네트워크의 변경 사항을 추적하며 network:/ 프로토콜의 디렉터리 목록을 업데이트합니다 +Comment[lt]=Seka tinklą ir atnaujina network:/ protokolo katalogų sąrašą +Comment[lv]=Seko lÄ«dzi tÄ«kam un atjaunina network:/ protokola mapju sarakstus +Comment[mk]=Ја следи мрежата и ги ажурира приказите на папки од протоколот network:/ +Comment[ml]=network:/ പ്രോട്ടോകോളില്‍ ശൃംഖലയുടേയും തട്ടുകളുടെ പട്ടികകളേയും നിരീക്ഷിയ്ക്കുന്നു +Comment[mr]=संजाळावर लक्ष ठेउन त्यातील संचयीका यादी अद्ययावत ठेवतो +Comment[nb]=Holder øye med nettverket og oppdaterer katalogoppføringer for protokollen network:/ +Comment[nds]=Beluert dat Nettwark un frischt Orner-Oplisten vun't network:/-Protokoll op +Comment[nl]=Bewaakt het netwerk en actualiseert de mappenweergave van het network:/ protocol +Comment[nn]=Held auge med nettverket og oppdaterer kataloglistene i network:/-protokollen +Comment[pa]=network:/ ਪਰੋਟੋਕਾਲ ਰਾਹੀਂ ਦਿੱਤੀਆਂ ਡਾਇਰੈਕਟਰੀਆਂ ਤੇ ਨੈੱਟਵਰਕ ਬਾਰੀ ਜਾਣਕਾਰੀ ਰੱਖੋ +Comment[pl]=Śledzi sieć i uaktualnia zawartości katalogów dla protokołu network:/ +Comment[pt]=Mantém um registo da rede e actualiza as listagens de pastas no protocolo 'network:/' +Comment[pt_BR]=Monitora a rede e atualiza a listagem de pastas do protocolo network:/ +Comment[ro]=Duce evidența rețelei și actualizează conținutul dosarelor protocolului network:/ +Comment[ru]=Поиск служб и обновление содержимого каталогов по протоколу network:/ +Comment[si]=ජාලය හා ජාලයේ:/ ක්‍රියාපටිපාටියේ යාවත්කාලීනබහාළුම් ලැයිස්තුගත කිරීමගැන විමසිල්ලෙන් සිටින්න +Comment[sk]=Udržuje prehľad o sieti a aktualizuje výpisy adresárov protokolu network:/ +Comment[sl]=Sledi omrežju in posodablja seznam map za network:/ protokol +Comment[sr]=Прати мрежу и ажурира исписе фасцикли протокола network:/ +Comment[sr@ijekavian]=Прати мрежу и ажурира исписе фасцикли протокола network:/ +Comment[sr@ijekavianlatin]=Prati mrežu i ažurira ispise fascikli protokola network:/ +Comment[sr@latin]=Prati mrežu i ažurira ispise fascikli protokola network:/ +Comment[sv]=HÃ¥ller reda pÃ¥ nätverket och uppdaterar kataloglistningar för protokollet network:/ +Comment[tg]=Фаъолияти шабакаи Интернетро қайд мекунад ва мазмуни феҳрасти шабакаро навсозӣ мекунад:/ қарордод +Comment[th]=คอยติดตามการปรับปรุงของเครือข่าย และการปรับปรุงของไดเรกทอรีผ่านโพรโทคอล network:/ +Comment[tr]=Ağı ve network:/ protokolündeki dizin güncellemelerini izler +Comment[ug]=ئىزلاش تورى ۋە network:/ كېلىشىمى كۆرسەتكەن مۇندەرىجىنىڭ يېڭىلىنىش ئەھۋالى +Comment[uk]=Стежить за мережею і оновлює списки каталогів протоколу network:/ +Comment[vi]=Theo dõi mạng và cập nhật danh sách thư mục trong giao thức network:// +Comment[wa]=WÃ¥de ene trace des djivêyes des ridants del rantoele et des metaedjes a djoû do protocole network:/ +Comment[x-test]=xxKeeps track of the network and updates directory listings of the network:/ protocolxx +Comment[zh_CN]=跟踪网络及 network:/ 协议所列目录的更新情况 +Comment[zh_TW]=保持追蹤此網路,並更新 network:/ 協定中的目錄清單 diff --git a/network/kded/networkwatcher.h b/network/kded/networkwatcher.h new file mode 100644 index 0000000..7212222 --- /dev/null +++ b/network/kded/networkwatcher.h @@ -0,0 +1,58 @@ +/* + This file is part of the network kioslave, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORKWATCHER_H +#define NETWORKWATCHER_H + +// KDE +#include + +namespace Mollet +{ +class Network; +class NetDevice; +class NetService; +typedef QList NetDeviceList; +typedef QList NetServiceList; + + +class NetworkWatcher : public KDEDModule +{ + Q_OBJECT + + public: + NetworkWatcher( QObject* parent, const QList& parameters ); + ~NetworkWatcher() override; + + public: + Mollet::NetDevice deviceData( const QString& hostAddress ); + Mollet::NetService serviceData( const QString& hostAddress, const QString& serviceName, const QString& serviceType ); + Mollet::NetDeviceList deviceDataList(); + Mollet::NetServiceList serviceDataList( const QString& hostAddress ); + + private: + Network* mNetwork; +}; + +} + +#endif diff --git a/network/kded/org.kde.network.kioslavenotifier.xml b/network/kded/org.kde.network.kioslavenotifier.xml new file mode 100644 index 0000000..5d85c1e --- /dev/null +++ b/network/kded/org.kde.network.kioslavenotifier.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/network/kded/org.kde.network.xml b/network/kded/org.kde.network.xml new file mode 100644 index 0000000..17c644c --- /dev/null +++ b/network/kded/org.kde.network.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/network/mimetypes/CMakeLists.txt b/network/mimetypes/CMakeLists.txt new file mode 100644 index 0000000..4d7368b --- /dev/null +++ b/network/mimetypes/CMakeLists.txt @@ -0,0 +1,6 @@ +# shared-mime-info 0.40 is mandatory for generic-icon +set( SHARED_MIME_INFO_MINIMUM_VERSION "0.40" ) +find_package( SharedMimeInfo REQUIRED ) + +install( FILES network.xml DESTINATION ${KDE_INSTALL_MIMEDIR} RENAME kf5_network.xml ) +update_xdg_mimetypes( ${KDE_INSTALL_MIMEDIR} ) diff --git a/network/mimetypes/network.xml b/network/mimetypes/network.xml new file mode 100644 index 0000000..f64bc86 --- /dev/null +++ b/network/mimetypes/network.xml @@ -0,0 +1,499 @@ + + + + + + + + Network + + + + + + Workstation + + + + + + Router + + + + + Server + + + + + Printer + + + + + Scanner + + + + + Unknown device + + + + + + + + Unknown service + + + + + + + + FTP server + FTP + File transfer protocol + + + + + SFTP (ssh) server + + + + + FTPS server + FTPS + FTP over SSL + + + + + NFS server + NFS + Network filesystem + + + + + AFP server + + + + + SMB server + + + + + WebDav server + + + + + WebDav secure server + + + + + + Subversion server + + + + RSync server + + + + + + POP3 server + + + + IMAP server + + + + + + + SSH server + SSH + Secure shell + + + + + Telnet server + + + + + Display server + + + + RDP server + + + + + + + Web server + + + + Time server + + + + LDAP server + + + + + + XMPP/Jabber server + + + + Chat + + + + Gobby server + + + + Giver Peer + + + + SIP Telephony + + + + H323 Telephony + + + + Skype Telephony + + + + + + Internet Printing + + + + Unix Printing + + + + PDL Printing + + + + + + Plasma service + + + + + + KBattleship game table + + + + Lieutenant skat game server + + + + Four-in-line game table + + + + KSirk game table + + + + + + Pulse server + + + + Pulse source + + + + Pulse sink + + + + Udisks server + + + + libvirt server + + + + Air Mouse server + + + + + + PostgreSQL server + + + + CouchDB server + + + + + + RealPlayer Shared Favorites + + + + Adobe Acrobat server + + + + Adobe Version Cue + + + + GGZ Server + GGZ + GGZ Gaming Zone + + + + + + Maemo Info + + + + + + AirPort Base Station + + + + Digital Audio Access + + + + iTunes Remote Control + + + + Remote AppleEvents + + + + Apple Remote Desktop + + + + Optical Disk Sharing + + + + Remote Audio Output + + + + iPhone and iPod touch Remote Controllable + + + + Workgroup Manager + + + + Sleep Proxy + + + + NSSocketPort + + + + iTunes Home Sharing + + + + Apple TV iTunes discovery + + + + Apple TV Pairing + + + + + + Unknown UPnP Device + UPnP Universal Plug and Play + + + + + UPnP Basic Device + UPnP Universal Plug and Play + + + + UPnP WLAN Access Point Device + UPnP Universal Plug and Play + + + + UPnP Internet Gateway Device + UPnP Universal Plug and Play + + + + UPnP Printer (Basic) + UPnP Universal Plug and Play + + + + UPnP Printer (Enhanced) + UPnP Universal Plug and Play + + + + UPnP Scanner + UPnP Universal Plug and Play + + + + UPnP Media Server + UPnP Universal Plug and Play + + + + UPnP Media Renderer + UPnP Universal Plug and Play + + + + UPnP Media Server + UPnP Universal Plug and Play + + + + UPnP Media Renderer + UPnP Universal Plug and Play + + + + UPnP Media Server + UPnP Universal Plug and Play + + + + UPnP Solar Protection Blind + UPnP Universal Plug and Play + + + + UPnP Digital Security Camera + UPnP Universal Plug and Play + + + + UPnP HVAC + UPnP Universal Plug and Play + Heating, Ventilating, and Air Conditioning + + + + UPnP Lighting Controls + UPnP Universal Plug and Play + + + + UPnP Remote UI Client + UPnP Universal Plug and Play + + + + UPnP Remote UI Server + UPnP Universal Plug and Play + + + + UPnP Remote Access Client + UPnP Universal Plug and Play + + + + UPnP Remote Access Server + UPnP Universal Plug and Play + + + + UPnP Remote Access Discovery Agent + UPnP Universal Plug and Play + + + + + UPnP LAN Device + UPnP Universal Plug and Play + + + + UPnP WAN Device + UPnP Universal Plug and Play + + + + UPnP WAN Connection Device + UPnP Universal Plug and Play + + + + + UPnP Wi-Fi Alliance Device + UPnP Universal Plug and Play + + + + + + + + + diff --git a/network/network/CMakeLists.txt b/network/network/CMakeLists.txt new file mode 100644 index 0000000..7c105c2 --- /dev/null +++ b/network/network/CMakeLists.txt @@ -0,0 +1,55 @@ + + +include_directories( + builder +) + +set( netsystemdriver_SRCS + builder/simpleitemfactory.cpp +) + +set( dnssdnetworkbuilder_SRCS + builder/dnssd/dnssdnetworkbuilder.cpp +) + +set( upnpnetworkbuilder_SRCS + builder/upnp/cagibidevice.cpp + builder/upnp/cagibidbuscodec.cpp + builder/upnp/upnpnetworkbuilder.cpp +) + +set( networkbuilder_SRCS + builder/abstractnetworkbuilder.cpp + builder/abstractnetsystemfactory.cpp +) + +set( networkdbus_LIB_SRCS + networkdbus.cpp +) + +set( molletnetwork5_LIB_SRCS + ${netsystemdriver_SRCS} + ${upnpnetworkbuilder_SRCS} + ${dnssdnetworkbuilder_SRCS} + ${networkbuilder_SRCS} + ${networkdbus_LIB_SRCS} + network_p.cpp + network.cpp + netdevice_p.cpp + netdevice.cpp + netservice_p.cpp + netservice.cpp +) + +add_library( molletnetwork5 SHARED ${molletnetwork5_LIB_SRCS} ) +target_link_libraries( molletnetwork5 + PUBLIC + KF5::DNSSD + Qt5::Network + Qt5::Gui + Qt5::DBus +) + +set_target_properties( molletnetwork5 PROPERTIES VERSION ${RELEASE_SERVICE_VERSION} SOVERSION ${RELEASE_SERVICE_VERSION_MAJOR} ) + +install( TARGETS molletnetwork5 ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP ) diff --git a/network/network/README b/network/network/README new file mode 100644 index 0000000..5089726 --- /dev/null +++ b/network/network/README @@ -0,0 +1,44 @@ +How does the network get constructed? +============================================= + +There are two kind of objects: +a) adapters to the service discovery systems +b) factories to build network items + +Then there are adapter-specific interface for the factories, so a adapter can +handover its system-specific data to the factory. + +The factories understand the data structure the adapters hand over (given they +implement its interface) and construct the matching network items, e.g. a +NetDevice or a NetService of a certain type. +The adapters listen to the discovery systems and on a new item reported by the +system ask those factories which implemented their interface if they could +turn that into an object in terms of the network library and then tell them +to do so if they can. + +Examples: +interface: DNSSDNetSystemAble +adapter: DNSSDNetworkBuilder +factory: SimpleItemFactory (only one so far, anyway) + +Reasoning for this approach: +With a plugin system yet to come, one could install a new factory for a +service type "coffee/tea filling level", which could understand data from two +or three adapters, so you do not need an extra factory for each adapter, but +have a central point of competence. + +So now for a new backend you would need to do add these things: +a) NEWNetSystemAble +b) NEWNetworkBuilder +c) have SimpleItemFactory implement NEWNetSystemAble + +SimpleItemFactory is just, as the name should hint, a simple factory, which +turns a service description into a plain NetService item, without any +additional logic or behaviour. Later on it is planned to have factories which can +create complete proxy objects to services on the network. But that needs some +more thoughts. Stuff for KDE 4.4, including considering a Solid integration + +The device type detection (heuristics based) is currently pretty bogus and +just works for a certain private network, so do not wonder about that part of +the code :) It should be really turned of before the 4.3 release and for the time +given just have one type of device: a device. diff --git a/network/network/TODO b/network/network/TODO new file mode 100644 index 0000000..f4f5a8a --- /dev/null +++ b/network/network/TODO @@ -0,0 +1,97 @@ +Add backends for +* Jini +* UPnP +* SMB +* manually added devices/services + -> means also support for state not-present +* scanning? + +list of dns-ds service types: http://www.dns-sd.org/ServiceTypes.html + +See if there could be a xdg database of products with device ontology/categories. + +Add a device guesser which tries to estimate the type of device by the services +(or even with a dedicated protocol if there is one?) + +Devices: +* Fileserver/-storage +* Webserver +* Desktop-like Computer (human-interface general purpose) + * wearable + * MID + * Handheld + * E-Book reader (is media renderer?) + * Laptop +* Game server +* Server +* Router +* Internet Gateway Device (IGD) +* Mediaserver +* Mediarenderer +* HVAC +* Scanner +* WLAN Access point +* Digital Security camera +* Wearable +* Augmented-reality device (headmounted) + + +Questions: +What is a (virtual) device, what is a service? +Aren't all servives virtual devices? +So present as device or service? + +Some devices use services as interface utility (e.g. a http server for SOAP). +Separate human/computer-usable services? +Firstlevel service and secondlevel service? + +Physical objects should be represented as physical objects. Perhaps mark with flag. +Which of the virtual machines in a server is the physical one if the vm host doesn't show up? + +How to handle unknown devices? +Who might want to see them? Developers? +Or users, to see it's there but not supported (=without a driver)? +There could be a user editable whitelist/blacklist. + +Support should be plugin-based, so 3-party developers can easily try to develop their own drivers. + + +There need to be servicetype-specific handlers which can create the service proxy object. +Should be able to register to different discovery backends (collision handling by priority perhaps). +For now simple listing with non-funct system items will do. + + + { "_presence._tcp", "presence", "inode/vnd.kde.service.presence", "im-user", false, 0, 0, 0, 0 }, +// presence http://www.xmpp.org/registrar/linklocal.html +// "1st", firstName, "email", emailAddress, "last", lastName, "status", "avail"); +// TODO: make this first non-simple item, showing addressbook entry + + // KDE + { "_knotes._tcp", "knotes", "inode/vnd.kde.service.knotes", "knotes", false, "http", 0, 0, 0 }, +// TODO: make this second non-simple item, listing notes or enable the drop of ones (forwarding to some knotes: protocol? + + + + + QList& deviceList = mNetworkPrivate->deviceList(); + static const char* DeviceNamen[] = + { + "Datensafe.local", + "Schleuder.local", + "Phlox.local", + "buntekuh.local" + }; + for( int i=0; i<4; ++i ) + { + const QString hostName( DeviceNamen[i] ); + const QString deviceName = hostName.left( hostName.indexOf('.') ); + NetDevicePrivate* d = new NetDevicePrivate( deviceName, hostName ); + d->setType( NetDevice::Workstation ); + + NetDevice device( d ); + deviceList.append( device ); + + QList newDevices; + newDevices.append( device ); + mNetworkPrivate->emitDevicesAdded( newDevices ); + } diff --git a/network/network/builder/abstractnetsystemfactory.cpp b/network/network/builder/abstractnetsystemfactory.cpp new file mode 100644 index 0000000..2a7f946 --- /dev/null +++ b/network/network/builder/abstractnetsystemfactory.cpp @@ -0,0 +1,23 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "abstractnetsystemfactory.h" diff --git a/network/network/builder/abstractnetsystemfactory.h b/network/network/builder/abstractnetsystemfactory.h new file mode 100644 index 0000000..7933c59 --- /dev/null +++ b/network/network/builder/abstractnetsystemfactory.h @@ -0,0 +1,48 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef ABSTRACTNETSYSTEMFACTORY_H +#define ABSTRACTNETSYSTEMFACTORY_H + +// Qt +#include + + +namespace Mollet +{ + +class AbstractNetSystemFactory : public QObject +{ + Q_OBJECT + + public: + ~AbstractNetSystemFactory() override; + + public: // API to be implemented +}; + + +inline AbstractNetSystemFactory::~AbstractNetSystemFactory() {} + +} + +#endif diff --git a/network/network/builder/abstractnetworkbuilder.cpp b/network/network/builder/abstractnetworkbuilder.cpp new file mode 100644 index 0000000..c2b15d4 --- /dev/null +++ b/network/network/builder/abstractnetworkbuilder.cpp @@ -0,0 +1,23 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "abstractnetworkbuilder.h" diff --git a/network/network/builder/abstractnetworkbuilder.h b/network/network/builder/abstractnetworkbuilder.h new file mode 100644 index 0000000..316812b --- /dev/null +++ b/network/network/builder/abstractnetworkbuilder.h @@ -0,0 +1,67 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef ABSTRACTNETWORKBUILDER_H +#define ABSTRACTNETWORKBUILDER_H + +// Qt +#include + +namespace Mollet +{ +class AbstractNetSystemFactory; + + +class AbstractNetworkBuilder : public QObject +{ + Q_OBJECT + + public: + ~AbstractNetworkBuilder() override; + + public: // API to be implemented + // build initial table synch +// virtual void init() = 0; + // build initial table asynch +// virtual void startInit() = 0; + + // TODO: how to handle previously found, but unknown (or now-underpriorized) services? ignore and wait for rescan? + virtual void registerNetSystemFactory( AbstractNetSystemFactory* netSystemFactory ) = 0; + // temporary solution: have all factories set, then call start + virtual void start() = 0; + + + // drop all knowledge and restart +// virtual void rescan() +// virtual void startRescan() + + Q_SIGNALS: + /** initial structure build */ + void initDone(); +}; + + +inline AbstractNetworkBuilder::~AbstractNetworkBuilder() {} + +} + +#endif diff --git a/network/network/builder/dnssd/dnssdnetsystemable.h b/network/network/builder/dnssd/dnssdnetsystemable.h new file mode 100644 index 0000000..a2186f4 --- /dev/null +++ b/network/network/builder/dnssd/dnssdnetsystemable.h @@ -0,0 +1,59 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef DNSSDNETSYSTEMABLE_H +#define DNSSDNETSYSTEMABLE_H + +// KDE +#include +// Qt +#include + +namespace Mollet { +class NetServicePrivate; +class NetDevice; +} +class QString; + + +namespace Mollet +{ + +class DNSSDNetSystemAble +{ + public: + virtual ~DNSSDNetSystemAble(); + + public: // API to be implemented + virtual bool canCreateNetSystemFromDNSSD( const QString& serviceType ) const = 0; + virtual NetServicePrivate* createNetService( const KDNSSD::RemoteService::Ptr& service, const NetDevice& device ) const = 0; + virtual QString dnssdId( const KDNSSD::RemoteService::Ptr& dnssdService ) const = 0; +}; + + +inline DNSSDNetSystemAble::~DNSSDNetSystemAble() {} + +} + +Q_DECLARE_INTERFACE( Mollet::DNSSDNetSystemAble, "org.kde.mollet.dnssdnetsystemable/1.0" ) + +#endif diff --git a/network/network/builder/dnssd/dnssdnetworkbuilder.cpp b/network/network/builder/dnssd/dnssdnetworkbuilder.cpp new file mode 100644 index 0000000..3f056d9 --- /dev/null +++ b/network/network/builder/dnssd/dnssdnetworkbuilder.cpp @@ -0,0 +1,309 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009-2010 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "dnssdnetworkbuilder.h" + +// lib +#include "dnssdnetsystemable.h" +#include "abstractnetsystemfactory.h" +#include "network_p.h" +#include "netdevice_p.h" +// KDE +#include +#include +// Qt +#include +#include + +#include + + +namespace Mollet +{ + +DNSSDNetworkBuilder::DNSSDNetworkBuilder( NetworkPrivate* networkPrivate ) + : AbstractNetworkBuilder() + , mNetworkPrivate( networkPrivate ) + , mServiceTypeBrowser( nullptr ) +{ +} + + +void DNSSDNetworkBuilder::registerNetSystemFactory( AbstractNetSystemFactory* netSystemFactory ) +{ + DNSSDNetSystemAble* dnssdNetSystemAble = qobject_cast( netSystemFactory ); + + if( dnssdNetSystemAble ) + mNetSystemFactoryList.append( dnssdNetSystemAble ); +} + +void DNSSDNetworkBuilder::start() +{ + mIsInit = true; + mNoOfInitServiceTypes = 0; + + mServiceTypeBrowser = new KDNSSD::ServiceTypeBrowser(); + connect(mServiceTypeBrowser, &KDNSSD::ServiceTypeBrowser::serviceTypeAdded, this, &DNSSDNetworkBuilder::addServiceType); + connect(mServiceTypeBrowser, &KDNSSD::ServiceTypeBrowser::serviceTypeRemoved, this, &DNSSDNetworkBuilder::removeServiceType); + connect(mServiceTypeBrowser, &KDNSSD::ServiceTypeBrowser::finished, this, &DNSSDNetworkBuilder::onServiceTypeBrowserFinished); +// TODO: add a signal network initialized to Network, so is cleared when first usable + mServiceTypeBrowser->startBrowse(); +} + +void DNSSDNetworkBuilder::addServiceType( const QString& serviceType ) +{ + if( mServiceBrowserTable.contains(serviceType)) + return; + + KDNSSD::ServiceBrowser* serviceBrowser = new KDNSSD::ServiceBrowser( serviceType, true ); + connect(serviceBrowser, &KDNSSD::ServiceBrowser::serviceAdded, this, &DNSSDNetworkBuilder::addService); + connect(serviceBrowser, &KDNSSD::ServiceBrowser::serviceRemoved, this, &DNSSDNetworkBuilder::removeService); + + if( mIsInit ) + { + ++mNoOfInitServiceTypes; + connect(serviceBrowser, &KDNSSD::ServiceBrowser::finished, this, &DNSSDNetworkBuilder::onServiceBrowserFinished); + } + + mServiceBrowserTable[serviceType] = serviceBrowser; + serviceBrowser->startBrowse(); +} + +void DNSSDNetworkBuilder::removeServiceType( const QString& serviceType ) +{ + Q_UNUSED(serviceType) + // for now we keep the service browser (aren't that many) because otherwise + // the serviceRemoved calls won't reach us. + // we could also go through all the devices and remove the services manually as a fix + return; +#if 0 + QHash::Iterator it = mServiceBrowserTable.find( serviceType ); + + if( it == mServiceBrowserTable.end() ) + return; + + KDNSSD::ServiceBrowser* serviceBrowser = *it; + mServiceBrowserTable.erase( it ); + // TODO: will all servicesRemoved be called before? on test NO! + serviceBrowser->deleteLater(); +#endif +} + +void DNSSDNetworkBuilder::addService( KDNSSD::RemoteService::Ptr service ) +{ + QList& deviceList = mNetworkPrivate->deviceList(); + + QString hostName = service->hostName(); + // TODO: this blocks. and the ip address should be delivered from DNS-SD with resolve + const QHostAddress hostAddress = KDNSSD::ServiceBrowser::resolveHostName( hostName ); + const QString ipAddress = hostAddress.toString(); + // forget domain name if just ip address + if( hostName == ipAddress ) + hostName.clear(); + + // device TODO: only search for if we can create the service? + NetDevicePrivate* d = nullptr; + const NetDevice* deviceOfService = nullptr; + for (const NetDevice& device : qAsConst(deviceList)) { + const QString deviceHostName = device.hostName(); + const bool useIpAddress = ( deviceHostName.isEmpty() || hostName.isEmpty() ); + const bool isSameAddress = useIpAddress ? + ( device.ipAddress() == ipAddress ) : + ( deviceHostName == hostName ); + + if( isSameAddress ) + { + d = device.dPtr(); + // workaround: KDNSSD currently (4.7.0) emits two signals per service + // just relying on service->serviceName() is fragile, but matches + // current approach in removeService(...) + QString id; + const QString serviceType = service->type(); + for (const DNSSDNetSystemAble* factory : qAsConst(mNetSystemFactoryList)) { + if( factory->canCreateNetSystemFromDNSSD(serviceType) ) + { + id = factory->dnssdId( service ); + break; + } + } + if( d->hasService(id) ) + return; + + deviceOfService = &device; + break; + } + } + if( !d ) + { + const QString deviceName = hostName.left( hostName.indexOf(QLatin1Char('.')) ); + d = new NetDevicePrivate( deviceName ); + d->setHostName( hostName ); + d->setIpAddress( ipAddress ); + NetDevice device( d ); + deviceList.append( device ); + deviceOfService = &deviceList.last(); + + QList newDevices; + newDevices.append( device ); + // TODO: the new service will be announced two times, once with the new device and once alone. + // what to do about that? which order? okay? for now just do not attach services before. find usecases. + mNetworkPrivate->emitDevicesAdded( newDevices ); + } + else + { + if( d->hostName().isEmpty() && ! hostName.isEmpty() ) + d->setHostName( hostName ); + } + + + const QString serviceType = service->type(); + + NetServicePrivate* netServicePrivate = nullptr; + // do a priority based lookup who can build the object + // TODO: priorisation + for (const DNSSDNetSystemAble* factory : qAsConst(mNetSystemFactoryList)) { + if( factory->canCreateNetSystemFromDNSSD(serviceType) ) + { + // TODO: here we should rather see if this service already exists + netServicePrivate = factory->createNetService( service, *deviceOfService ); + break; + } + } + // TODO: create dummy service +// if( ! netServicePrivate ) +// netServicePrivate = new UnknownService; + + NetService netService( netServicePrivate ); + d->addService( netService ); + + // try guessing the device type by the services on it + // TODO: move into devicefactory + NetDevice::Type deviceTypeByService = NetDevice::Unknown; + QString deviceName; + if( serviceType == QLatin1String("_workstation._tcp") ) + { + deviceTypeByService = NetDevice::Workstation; + deviceName = service->serviceName().left( service->serviceName().lastIndexOf(QLatin1Char('[')) ).trimmed(); + } + else if( serviceType == QLatin1String("_net-assistant._udp") ) + { + deviceTypeByService = NetDevice::Workstation; + deviceName = service->serviceName(); + } + else if( serviceType == QLatin1String("_airport._tcp") ) + deviceTypeByService = NetDevice::Router; + else if( serviceType == QLatin1String("_ipp._tcp") + || serviceType == QLatin1String("_printer._tcp") + || serviceType == QLatin1String("_pdl-datastream._tcp") ) + { + deviceTypeByService = NetDevice::Printer; + deviceName = service->serviceName(); + } + + if( deviceTypeByService != NetDevice::Unknown ) + { + if( deviceTypeByService > d->type() ) + { + d->setType( deviceTypeByService ); + if( ! deviceName.isEmpty() ) + d->setName( deviceName ); + } + } + + QList newServices; + newServices.append( netService ); + mNetworkPrivate->emitServicesAdded( newServices ); +} + +// TODO: each builder should refcount its services, so a shared one does not get removed to early +// (might disappear for one sd because of master breakdown) +void DNSSDNetworkBuilder::removeService( KDNSSD::RemoteService::Ptr service ) +{ + QList& deviceList = mNetworkPrivate->deviceList(); + + const QString hostName = service->hostName(); + + // device + QMutableListIterator it( deviceList ); + while( it.hasNext()) + { + const NetDevice& device = it.next(); + if( device.hostName() == hostName ) + { + QString id; + const QString serviceType = service->type(); + for (const DNSSDNetSystemAble* factory : qAsConst(mNetSystemFactoryList)) { + if( factory->canCreateNetSystemFromDNSSD(serviceType) ) + { + id = factory->dnssdId( service ); + break; + } + } + NetDevicePrivate* d = device.dPtr(); + NetService netService = d->removeService( id ); + if( !netService.isValid() ) + break; + + QList removedServices; + removedServices.append( netService ); + mNetworkPrivate->emitServicesRemoved( removedServices ); + + // remove device on last service + if( d->serviceList().count() == 0 ) + { + QList removedDevices; + removedDevices.append( device ); + // remove only after taking copy from reference into removed list + it.remove(); + + mNetworkPrivate->emitDevicesRemoved( removedDevices ); + } + break; + } + } +} + +void DNSSDNetworkBuilder::onServiceTypeBrowserFinished() +{ + if( mIsInit ) + { + mIsInit = false; + if( mNoOfInitServiceTypes == 0 ) + emit initDone(); + } +} + +void DNSSDNetworkBuilder::onServiceBrowserFinished() +{ + --mNoOfInitServiceTypes; + // only check for countdown after end of new service types + if( !mIsInit && mNoOfInitServiceTypes == 0 ) + emit initDone(); +} + +DNSSDNetworkBuilder::~DNSSDNetworkBuilder() +{ + qDeleteAll(mServiceBrowserTable); + delete mServiceTypeBrowser; +} + +} diff --git a/network/network/builder/dnssd/dnssdnetworkbuilder.h b/network/network/builder/dnssd/dnssdnetworkbuilder.h new file mode 100644 index 0000000..bb3eb1d --- /dev/null +++ b/network/network/builder/dnssd/dnssdnetworkbuilder.h @@ -0,0 +1,85 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef DNSSDNETWORKBUILDER_H +#define DNSSDNETWORKBUILDER_H + +// lib +#include "abstractnetworkbuilder.h" +#include "network.h" +#include "netdevice.h" +// KDE +#include +#include +#include +// Qt +#include + +namespace Mollet { +class DNSSDNetSystemAble; +} + +namespace DNSSD { +class ServiceBrowser; +class ServiceTypeBrowser; +} + + +namespace Mollet +{ + +class DNSSDNetworkBuilder : public AbstractNetworkBuilder +{ + Q_OBJECT + + public: + explicit DNSSDNetworkBuilder( NetworkPrivate* networkPrivate ); + ~DNSSDNetworkBuilder() override; + + public: // AbstractNetworkBuilder API + void registerNetSystemFactory( AbstractNetSystemFactory* netSystemFactory ) override; + void start() override; + + private Q_SLOTS: + void addServiceType( const QString& serviceType ); + void addService( KDNSSD::RemoteService::Ptr service ); + void removeServiceType( const QString& serviceType ); + void removeService( KDNSSD::RemoteService::Ptr service ); + + void onServiceTypeBrowserFinished(); + void onServiceBrowserFinished(); + + private: // data + NetworkPrivate* mNetworkPrivate; + + KDNSSD::ServiceTypeBrowser* mServiceTypeBrowser; + QHash mServiceBrowserTable; + + QList mNetSystemFactoryList; + + bool mIsInit; + int mNoOfInitServiceTypes; +}; + +} + +#endif diff --git a/network/network/builder/simpleitemfactory.cpp b/network/network/builder/simpleitemfactory.cpp new file mode 100644 index 0000000..13e59ac --- /dev/null +++ b/network/network/builder/simpleitemfactory.cpp @@ -0,0 +1,271 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009-2010 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "simpleitemfactory.h" + +// lib +#include "netservice_p.h" +// #include "service.h" +#include "upnp/cagibidevice.h" + +// Qt +#include + +// KDE +#include + +#include + +namespace Mollet +{ + +struct DNSSDServiceDatum { + const char* dnssdTypeName; + const char* typeName; + const char* fallbackIconName; + bool isFilesystem; + const char* protocol; // KDE can forward to it + const char* pathField; + const char* iconField; + const char* userField; + const char* passwordField; + + void feedUrl( QUrl* url, const KDNSSD::RemoteService* remoteService ) const; +}; + +static const DNSSDServiceDatum DNSSDServiceData[] = +{ + // file services + { "_ftp._tcp", "ftp", "folder-remote", true, "ftp", "path", nullptr, "u", "p" }, + { "_sftp-ssh._tcp", "sftp-ssh", "folder-remote", true, "sftp", nullptr, nullptr, "u", "p" }, + { "_ftps._tcp", "ftps", "folder-remote", true, "ftps", "path", nullptr, "u", "p" }, + { "_nfs._tcp", "nfs", "folder-remote", true, "nfs", "path", nullptr, nullptr, nullptr }, + { "_afpovertcp._tcp", "afpovertcp", "folder-remote", true, "afp", "path", nullptr, nullptr, nullptr }, + { "_smb._tcp", "smb", "folder-remote", true, "smb", "path", nullptr, "u", "p" }, + { "_webdav._tcp", "webdav", "folder-remote", true, "webdav", "path", nullptr, "u", "p" }, + { "_webdavs._tcp", "webdavs", "folder-remote", true, "webdavs", "path", nullptr, "u", "p" }, + + { "_svn._tcp", "svn", "folder-sync", true, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_rsync._tcp", "rsync", "folder-sync", true, nullptr, nullptr, nullptr, nullptr, nullptr }, + + // email + { "_imap._tcp", "imap", "email", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_pop3._tcp", "pop3", "email", false, "pop3", nullptr, nullptr, nullptr, nullptr }, + + // shell services + { "_ssh._tcp", "ssh", "terminal", false, "ssh", nullptr, nullptr, "u", "p" }, + { "_telnet._tcp", "telnet", "terminal", false, "telnet", nullptr, nullptr, "u", "p" }, + { "_rfb._tcp", "rfb", "krfb", false, "vnc", "path", nullptr, "u", "p" }, + { "_rdp._tcp", "rdp", "krfb", false, "rdp", nullptr, nullptr, nullptr, nullptr }, + + // other standard services + { "_http._tcp", "http", "folder-html", false, "http", "path", nullptr, "u", "p" }, + { "_ntp._udp", "ntp", "xclock", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_ldap._tcp", "ldap", "user-group-properties", false, "ldap", nullptr, nullptr, nullptr, nullptr }, + + // user2user (chat, collaboration) + { "_xmpp-server._tcp", "xmpp-server", "xchat", false, "jabber", nullptr, nullptr, nullptr, nullptr }, + { "_presence._tcp", "presence", "im-user", false, "presence", nullptr, nullptr, nullptr, nullptr }, + { "_lobby._tcp", "lobby", "document-edit", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_giver._tcp", "giver", "folder-remote", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_sip._udp", "sip", "phone", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_h323._tcp", "h323", "phone", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_skype._tcp", "skype", "phone", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + + // printing + { "_ipp._tcp", "ipp", "printer", false, "ipp", "path", nullptr, "u", "p" }, + { "_printer._tcp", "printer", "printer", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_pdl-datastream._tcp", "pdl-datastream", "printer", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + + // KDE workspace + { "_plasma._tcp", "plasma", "plasma", false, "plasma", "name", "icon", nullptr, nullptr }, + + // KDE games + { "_kbattleship._tcp", "kbattleship", "kbattleship", false, "kbattleship", nullptr, nullptr, nullptr, nullptr }, + { "_lskat._tcp", "lskat", "lskat", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_kfourinline._tcp", "kfourinline", "kfourinline", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_ksirk._tcp", "ksirk", "ksirk", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + + // hardware + { "_pulse-server._tcp","pulse-server","audio-card", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_pulse-source._tcp","pulse-source","audio-input-line", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_pulse-sink._tcp", "pulse-sink", "speaker", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_udisks-ssh._tcp", "udisks-ssh", "drive-harddisk", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_libvirt._tcp", "libvirt", "computer", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_airmouse._tcp", "airmouse", "input-mouse", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + + // database + { "_postgresql._tcp", "postgresql", "server-database", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_couchdb_location._tcp", "couchdb_location", "server-database", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + + // else + { "_realplayfavs._tcp","realplayfavs","favorites", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_acrobatSRV._tcp", "acrobat-server","application-pdf", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_adobe-vc._tcp", "adobe-vc", "services", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_ggz._tcp", "ggz", "applications-games", false, "ggz", nullptr, nullptr, nullptr, nullptr }, + + { "_pgpkey-ldap._tcp", "pgpkey-ldap", "application-pgp-keys", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_pgpkey-hkp._tcp", "pgpkey-hkp", "application-pgp-keys", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_pgpkey-https._tcp", "pgpkey-https", "application-pgp-keys", true, "https", "path", nullptr, nullptr, nullptr }, + + // Maemo + { "_maemo-inf._tcp", "maemo-inf", "pda", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + // TODO: _maemo-inf._tcp seems to be not a service, just some about info, use to identify device and hide + + // Apple + { "_airport._tcp", "airport", "network-wireless", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_daap._tcp", "daap", "folder-sound", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_dacp._tcp", "dacp", "folder-sound", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_eppc._tcp", "eppc", "network-connect", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_net-assistant._udp", "net-assistant", "services", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_odisk._tcp", "odisk", "media-optical", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_raop._tcp", "raop", "speaker", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_touch-able._tcp", "touch-able", "input-tablet", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_workstation._tcp", "workstation", "network-workgroup", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_sleep-proxy._udp", "sleep-proxy", "services", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_nssocketport._tcp", "nssocketport", "services", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_home-sharing._tcp", "home-sharing", "services", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_appletv-itunes._tcp","appletv-itunes","services", false, nullptr, nullptr, nullptr, nullptr, nullptr }, + { "_appletv-pair._tcp", "appletv-pair", "services", false, nullptr, nullptr, nullptr, nullptr, nullptr } +}; +// result["_ssh._tcp"]= DNSSDNetServiceBuilder(i18n("Remote disk (fish)"), "fish", "service/ftp", QString(), "u", "p"); +// network-server-database icon +// see // SubEthaEdit 2 +// Defined TXT keys: txtvers=1, name=, userid=, version=2 + +static const int DNSSDServiceDataSize = sizeof( DNSSDServiceData ) / sizeof( DNSSDServiceData[0] ); + +static const DNSSDServiceDatum UnknownServiceDatum = { "", "unknown", "unknown", false, nullptr, nullptr, nullptr, nullptr, nullptr }; + +// TODO: +// * find out how ws (webservices, _ws._tcp), upnp (_upnp._tcp) are exactly meant to be used +// * learn about uddi +// * see how the apple specific protocols can be used for devicetype identification (printer, scanner) + + +void DNSSDServiceDatum::feedUrl( QUrl* url, const KDNSSD::RemoteService* remoteService ) const +{ + const QMap serviceTextData = remoteService->textData(); + + url->setScheme( QString::fromLatin1(protocol) ); + if( userField ) + url->setUserName( QLatin1String(serviceTextData.value(QLatin1String(userField)).constData()) ); + if( passwordField ) + url->setPassword( QLatin1String(serviceTextData.value(QLatin1String(passwordField)).constData()) ); + if( pathField ) + url->setPath( QLatin1String(serviceTextData.value(QLatin1String(pathField)).constData()) ); + + url->setHost( remoteService->hostName() ); + url->setPort( remoteService->port() ); +} + + +SimpleItemFactory::SimpleItemFactory() + : AbstractNetSystemFactory() +{ +} + + +bool SimpleItemFactory::canCreateNetSystemFromDNSSD( const QString& serviceType ) const +{ +Q_UNUSED( serviceType ) + return true; +} + +QString SimpleItemFactory::dnssdId( const KDNSSD::RemoteService::Ptr& dnssdService ) const +{ + return dnssdService->type() + QLatin1Char('_') + dnssdService->serviceName(); +} + +NetServicePrivate* SimpleItemFactory::createNetService( const KDNSSD::RemoteService::Ptr& dnssdService, const NetDevice& device ) const +{ + NetServicePrivate* result; + + const QString dnssdServiceType = dnssdService->type(); + + const DNSSDServiceDatum* serviceDatum = &UnknownServiceDatum; + for( int i = 0; i< DNSSDServiceDataSize; ++i ) + { + const DNSSDServiceDatum* datum = &DNSSDServiceData[i]; + if( dnssdServiceType == QLatin1String(datum->dnssdTypeName) ) + { + serviceDatum = datum; + break; + } + } + + QUrl url; + if( serviceDatum->protocol ) + serviceDatum->feedUrl( &url, dnssdService.data() ); + + const bool isUnknown = ( serviceDatum == &UnknownServiceDatum ); + const QString typeName = isUnknown ? + dnssdServiceType.mid( 1, dnssdServiceType.lastIndexOf(QLatin1Char('.'))-1 ) : + QString::fromLatin1( serviceDatum->typeName ); + + QString iconName = QString::fromLatin1(serviceDatum->fallbackIconName); + if ( serviceDatum->iconField ) { + const QMap serviceTextData = dnssdService->textData(); + QString serviceIconName = QString::fromUtf8(serviceTextData[QString::fromLatin1(serviceDatum->iconField)]); + if ( QIcon::hasThemeIcon(serviceIconName) ) { + iconName = serviceIconName; + } + } + + result = new NetServicePrivate( dnssdService->serviceName(), iconName, + typeName, device, url.url(), SimpleItemFactory::dnssdId(dnssdService) ); + + return result; +} + +bool SimpleItemFactory::canCreateNetSystemFromUpnp( const Cagibi::Device& upnpDevice ) const +{ +Q_UNUSED( upnpDevice ) + return true; +} + +QString SimpleItemFactory::upnpId( const Cagibi::Device& upnpDevice ) const +{ + return upnpDevice.udn(); +} + +// TODO: add KIcon with specialized KIconLoader (fetches Icons via D-Bus) +NetServicePrivate* SimpleItemFactory::createNetService( const Cagibi::Device& upnpDevice, const NetDevice& device ) const +{ + NetServicePrivate* result; + + QString url = upnpDevice.presentationUrl(); + if( url.isEmpty() ) + { + url = QString::fromLatin1( "upnp://" ); + url.append( upnpDevice.udn() ); + } + result = new NetServicePrivate( upnpDevice.friendlyName(), + QString::fromLatin1("unknown"), + QString::fromLatin1("upnp.")+upnpDevice.type(), device, url, SimpleItemFactory::upnpId(upnpDevice) ); + + return result; +} + +SimpleItemFactory::~SimpleItemFactory() {} + +} diff --git a/network/network/builder/simpleitemfactory.h b/network/network/builder/simpleitemfactory.h new file mode 100644 index 0000000..700d34a --- /dev/null +++ b/network/network/builder/simpleitemfactory.h @@ -0,0 +1,64 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef SIMPLEITEMFACTORY_H +#define SIMPLEITEMFACTORY_H + +// lib +#include +#include +#include + + +namespace Mollet +{ + +class SimpleItemFactory : public AbstractNetSystemFactory, + public DNSSDNetSystemAble, + public UpnpNetSystemAble +{ + Q_OBJECT + Q_INTERFACES( + Mollet::DNSSDNetSystemAble + Mollet::UpnpNetSystemAble + ) + + public: + SimpleItemFactory(); + ~SimpleItemFactory() override; + + public: // DNSSDNetSystemAble API + bool canCreateNetSystemFromDNSSD( const QString& serviceType ) const override; + NetServicePrivate* createNetService( const KDNSSD::RemoteService::Ptr& service, const NetDevice& device ) const override; + QString dnssdId( const KDNSSD::RemoteService::Ptr& dnssdService ) const override; + + public: // UpnpNetSystemAble API + bool canCreateNetSystemFromUpnp( const Cagibi::Device& upnpDevice ) const override; + NetServicePrivate* createNetService( const Cagibi::Device& upnpDevice, const NetDevice& device ) const override; + QString upnpId( const Cagibi::Device& upnpDevice ) const override; + + private: +}; + +} + +#endif diff --git a/network/network/builder/upnp/cagibidbuscodec.cpp b/network/network/builder/upnp/cagibidbuscodec.cpp new file mode 100644 index 0000000..ceaa90e --- /dev/null +++ b/network/network/builder/upnp/cagibidbuscodec.cpp @@ -0,0 +1,116 @@ +/* + This file is part of the KUPnP library, part of the KDE project. + + Copyright 2010-2011 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "cagibidbuscodec.h" + +// network +#include "cagibidevice_p.h" +// Qt +#include + +#include + +static const QString type = QLatin1String( "deviceType" ); +static const QString friendlyName = QLatin1String( "friendlyName" ); +static const QString manufacturerName = QLatin1String( "manufacturer" ); +static const QString modelDescription = QLatin1String( "modelDescription" ); +static const QString modelName = QLatin1String( "modelName" ); +static const QString modelNumber = QLatin1String( "modelNumber" ); +static const QString serialNumber = QLatin1String( "serialNumber" ); +static const QString udn = QLatin1String( "UDN" ); +static const QString presentationUrl = QLatin1String( "presentationURL" ); +static const QString ipAddress = QLatin1String( "ipAddress" ); +static const QString portNumber = QLatin1String( "ipPortNumber" ); +static const QString parentDeviceUdn = QLatin1String( "parentDeviceUDN" ); + + +QDBusArgument& operator<<( QDBusArgument& argument, const Cagibi::Device& device ) +{ + Q_UNUSED( device ) + // not used in code at the moment, so do not stream anything + // QtDBus marshaller still uses it to calculate the D-Bus argument signature + argument.beginMap( QVariant::String, QVariant::String ); + argument.endMap(); + + return argument; +} + +const QDBusArgument& operator>>( const QDBusArgument& argument, + Cagibi::Device& device ) +{ + Cagibi::DevicePrivate* const devicePrivate = device.d.data(); + + argument.beginMap(); + + QString key; + QString value; + while( ! argument.atEnd() ) + { + argument.beginMapEntry(); + argument >> key; + + if( key == type ) + { + QString type; + argument >> type; + const QStringList typeParts = type.split( QLatin1Char(':') ); +qDebug()<=5 ) + devicePrivate->mType = typeParts[3]+typeParts[4]; + } + else if( key == friendlyName ) + argument >> devicePrivate->mFriendlyName; + else if( key == manufacturerName ) + argument >> devicePrivate->mManufacturerName; +// const QString& manufacturerUrl() const; + else if( key == modelDescription ) + argument >> devicePrivate->mModelDescription; + else if( key == modelName ) + argument >> devicePrivate->mModelName; + else if( key == modelNumber ) + argument >> devicePrivate->mModelNumber; + else if( key == serialNumber ) + argument >> devicePrivate->mSerialNumber; + else if( key == udn ) + argument >> devicePrivate->mUdn; +// const QString upc() const; + else if( key == presentationUrl ) + argument >> devicePrivate->mPresentationUrl; + else if( key == ipAddress ) + argument >> devicePrivate->mIpAddress; + else if( key == portNumber ) + argument >> devicePrivate->mIpPortNumber; + else if( key == parentDeviceUdn ) + argument >> devicePrivate->mParentDeviceUdn; +// const QList& icons() const; +// const QList& services() const; +// const QList& devices() const; + // unknown key + else + argument >> value; + argument.endMapEntry(); + } + + argument.endMap(); + + return argument; +} diff --git a/network/network/builder/upnp/cagibidbuscodec.h b/network/network/builder/upnp/cagibidbuscodec.h new file mode 100644 index 0000000..39643d4 --- /dev/null +++ b/network/network/builder/upnp/cagibidbuscodec.h @@ -0,0 +1,40 @@ +/* + This file is part of the KUPnP library, part of the KDE project. + + Copyright 2010 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef CAGIBIDBUSCODEC_H +#define CAGIBIDBUSCODEC_H + +// lib +#include "cagibidevice.h" +// Qt +#include +#include + +class QDBusArgument; +QDBusArgument& operator<<( QDBusArgument& argument, + const Cagibi::Device& device ); +const QDBusArgument& operator>>( const QDBusArgument& argument, + Cagibi::Device& device ); + +Q_DECLARE_METATYPE( Cagibi::Device ) + +#endif diff --git a/network/network/builder/upnp/cagibidevice.cpp b/network/network/builder/upnp/cagibidevice.cpp new file mode 100644 index 0000000..7314a20 --- /dev/null +++ b/network/network/builder/upnp/cagibidevice.cpp @@ -0,0 +1,70 @@ +/* + This file is part of the KUPnP library, part of the KDE project. + + Copyright 2009-2010 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "cagibidevice.h" +#include "cagibidevice_p.h" + + +namespace Cagibi +{ + +Device::Device() + : d( new DevicePrivate() ) +{ +} + +Device::Device( DevicePrivate* _d ) + : d( _d ) +{ +} + +Device::Device( const Device& other ) + : d( other.d ) +{ +} + +const QString& Device::type() const { return d->type(); } +const QString& Device::friendlyName() const { return d->friendlyName(); } +const QString& Device::manufacturerName() const { return d->manufacturerName(); } +const QString& Device::modelDescription() const { return d->modelDescription(); } +const QString& Device::modelName() const { return d->modelName(); } +const QString& Device::modelNumber() const { return d->modelNumber(); } +const QString& Device::serialNumber() const { return d->serialNumber(); } +const QString& Device::udn() const { return d->udn(); } +const QString& Device::presentationUrl() const { return d->presentationUrl(); } +const QString& Device::ipAddress() const { return d->ipAddress(); } +int Device::ipPortNumber() const { return d->ipPortNumber(); } + +bool Device::hasParentDevice() const { return d->hasParentDevice(); } +const QString& Device::parentDeviceUdn() const { return d->parentDeviceUdn(); } + +Device& Device::operator=( const Device& other ) +{ + d = other.d; + return *this; +} + +Device::~Device() +{ +} + +} diff --git a/network/network/builder/upnp/cagibidevice.h b/network/network/builder/upnp/cagibidevice.h new file mode 100644 index 0000000..5113319 --- /dev/null +++ b/network/network/builder/upnp/cagibidevice.h @@ -0,0 +1,85 @@ +/* + This file is part of the KUPnP library, part of the KDE project. + + Copyright 2009-2010 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef CAGIBIDEVICE_H +#define CAGIBIDEVICE_H + +// Qt +#include + +namespace Cagibi { class Device; } +class QString; +class QDBusArgument; +extern QDBusArgument& operator<<( QDBusArgument& argument, + const Cagibi::Device& device ); +extern const QDBusArgument& operator>>( const QDBusArgument& argument, + Cagibi::Device& device ); + + +namespace Cagibi +{ +class DevicePrivate; + +class Device +{ + friend QDBusArgument& ::operator<<( QDBusArgument& argument, + const Cagibi::Device& device ); + friend const QDBusArgument& ::operator>>( const QDBusArgument& argument, + Cagibi::Device& device ); + + protected: + explicit Device( DevicePrivate* _d ); + + public: + Device(); + Device( const Device& other ); + + ~Device(); + + public: + Device& operator=( const Device& other ); + + public: + const QString& type() const; + const QString& friendlyName() const; + const QString& manufacturerName() const; +// QString manufacturerUrl() const; + const QString& modelDescription() const; + const QString& modelName() const; + const QString& modelNumber() const; + const QString& serialNumber() const; + const QString& udn() const; +// QString upc() const; + const QString& presentationUrl() const; + const QString& ipAddress() const; + int ipPortNumber() const; + + bool hasParentDevice() const; + const QString& parentDeviceUdn() const; + + protected: + QExplicitlySharedDataPointer d; +}; + +} + +#endif diff --git a/network/network/builder/upnp/cagibidevice_p.h b/network/network/builder/upnp/cagibidevice_p.h new file mode 100644 index 0000000..7ceec6a --- /dev/null +++ b/network/network/builder/upnp/cagibidevice_p.h @@ -0,0 +1,101 @@ +/* + This file is part of the KUPnP library, part of the KDE project. + + Copyright 2009-2010 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef CAGIBIDEVICE_P_H +#define CAGIBIDEVICE_P_H + +// lib +#include "cagibidevice.h" +// Qt +#include +#include + + +namespace Cagibi +{ + +class DevicePrivate : public QSharedData +{ + friend const QDBusArgument& ::operator>>( const QDBusArgument& argument, + Cagibi::Device& device ); + + public: + DevicePrivate(); + + public: + const QString& type() const; + const QString& friendlyName() const; + const QString& manufacturerName() const; +// const QString& manufacturerUrl() const; + const QString& modelDescription() const; + const QString& modelName() const; + const QString& modelNumber() const; + const QString& serialNumber() const; + const QString& udn() const; +// const QString upc() const; + const QString& presentationUrl() const; + const QString& ipAddress() const; + int ipPortNumber() const; + + bool hasParentDevice() const; + const QString& parentDeviceUdn() const; + + protected: + QString mType; + /// short user-friendly title + QString mFriendlyName; + QString mManufacturerName; +// QString mManufacturerUrl; + /// long user-friendly title + QString mModelDescription; + QString mModelName; + QString mModelNumber; + QString mSerialNumber; + QString mUdn; +// QString mUpc; Universal Product Code; + QString mPresentationUrl; + + QString mIpAddress; + int mIpPortNumber; + + QString mParentDeviceUdn; +}; + + +inline DevicePrivate::DevicePrivate() {} +inline const QString& DevicePrivate::type() const { return mType; } +inline const QString& DevicePrivate::friendlyName() const { return mFriendlyName; } +inline const QString& DevicePrivate::manufacturerName() const { return mManufacturerName; } +inline const QString& DevicePrivate::modelDescription() const { return mModelDescription; } +inline const QString& DevicePrivate::modelName() const { return mModelName; } +inline const QString& DevicePrivate::modelNumber() const { return mModelNumber; } +inline const QString& DevicePrivate::serialNumber() const { return mSerialNumber; } +inline const QString& DevicePrivate::udn() const { return mUdn; } +inline const QString& DevicePrivate::presentationUrl() const { return mPresentationUrl; } +inline const QString& DevicePrivate::ipAddress() const { return mIpAddress; } +inline int DevicePrivate::ipPortNumber() const { return mIpPortNumber; } +inline bool DevicePrivate::hasParentDevice() const { return (! mParentDeviceUdn.isEmpty() ); } +inline const QString& DevicePrivate::parentDeviceUdn() const { return mParentDeviceUdn; } + +} + +#endif diff --git a/network/network/builder/upnp/upnpnetsystemable.h b/network/network/builder/upnp/upnpnetsystemable.h new file mode 100644 index 0000000..e5b8b78 --- /dev/null +++ b/network/network/builder/upnp/upnpnetsystemable.h @@ -0,0 +1,59 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef UPNPNETSYSTEMABLE_H +#define UPNPNETSYSTEMABLE_H + +// Qt +#include + +namespace Cagibi { +class Device; +} +class QString; + + +namespace Mollet +{ +class NetServicePrivate; +class NetDevice; + + +class UpnpNetSystemAble +{ + public: + virtual ~UpnpNetSystemAble(); + + public: // API to be implemented + virtual bool canCreateNetSystemFromUpnp( const Cagibi::Device& upnpDevice ) const = 0; + virtual NetServicePrivate* createNetService( const Cagibi::Device& upnpDevice, const NetDevice& device ) const = 0; + virtual QString upnpId( const Cagibi::Device& upnpDevice ) const = 0; +}; + + +inline UpnpNetSystemAble::~UpnpNetSystemAble() {} + +} + +Q_DECLARE_INTERFACE( Mollet::UpnpNetSystemAble, "org.kde.mollet.upnpnetsystemable/1.0" ) + +#endif diff --git a/network/network/builder/upnp/upnpnetworkbuilder.cpp b/network/network/builder/upnp/upnpnetworkbuilder.cpp new file mode 100644 index 0000000..ba1aa17 --- /dev/null +++ b/network/network/builder/upnp/upnpnetworkbuilder.cpp @@ -0,0 +1,351 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009-2011 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "upnpnetworkbuilder.h" + +// lib +#include "upnpnetsystemable.h" +#include "abstractnetsystemfactory.h" +#include "network_p.h" +#include "netdevice_p.h" +#include "netservice_p.h" +#include "cagibidevice.h" +#include "cagibidbuscodec.h" +// Qt +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace Mollet +{ +static const char cagibiServiceName[] = "org.kde.Cagibi"; +static const char cagibiDeviceListObjectPath[] = "/org/kde/Cagibi/DeviceList"; +static const char cagibiDeviceListInterface[] = "org.kde.Cagibi.DeviceList"; + +UpnpNetworkBuilder::UpnpNetworkBuilder( NetworkPrivate* networkPrivate ) + : AbstractNetworkBuilder() + , mNetworkPrivate( networkPrivate ) + , mCagibiDeviceListDBusProxy( nullptr ) +{ +} + +void UpnpNetworkBuilder::registerNetSystemFactory( AbstractNetSystemFactory* netSystemFactory ) +{ + UpnpNetSystemAble* upnpNetSystemAble = qobject_cast( netSystemFactory ); + + if( upnpNetSystemAble ) + mNetSystemFactoryList.append( upnpNetSystemAble ); +} + +void UpnpNetworkBuilder::start() +{ + QMetaObject::invokeMethod( this, "startBrowse", Qt::QueuedConnection ); +} + +void UpnpNetworkBuilder::startBrowse() +{ + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + + QDBusConnection dbusConnection = QDBusConnection::systemBus(); + + const QString serviceName = QLatin1String( cagibiServiceName ); + const QString deviceListObjectPath = QLatin1String( cagibiDeviceListObjectPath ); + const QString deviceListInterface = QLatin1String( cagibiDeviceListInterface ); + + // install service watcher + QDBusServiceWatcher* cagibiServiceWatcher = + new QDBusServiceWatcher( serviceName, + dbusConnection, + QDBusServiceWatcher::WatchForOwnerChange, + this ); + connect( cagibiServiceWatcher, SIGNAL(serviceOwnerChanged(QString,QString,QString)), + SLOT(onCagibiServiceOwnerChanged(QString,QString,QString)) ); + + // create devicelist proxy + mCagibiDeviceListDBusProxy = + new QDBusInterface( serviceName, + deviceListObjectPath, + deviceListInterface, + dbusConnection, this ); + connect( mCagibiDeviceListDBusProxy, SIGNAL(devicesAdded(DeviceTypeMap)), + SLOT(onDevicesAdded(DeviceTypeMap)) ); + connect( mCagibiDeviceListDBusProxy, SIGNAL(devicesRemoved(DeviceTypeMap)), + SLOT(onDevicesRemoved(DeviceTypeMap)) ); + + // query current devicelist + queryCurrentDevices(); + + emit initDone(); +} + +void UpnpNetworkBuilder::queryCurrentDevices() +{ + // query current devicelist + QDBusPendingCall allDevicesCall = + mCagibiDeviceListDBusProxy->asyncCall( QLatin1String("allDevices") ); + + QDBusPendingCallWatcher* allDevicesCallWatcher = + new QDBusPendingCallWatcher( allDevicesCall, this ); + connect( allDevicesCallWatcher, SIGNAL(finished(QDBusPendingCallWatcher*)), + SLOT(onAllDevicesCallFinished(QDBusPendingCallWatcher*)) ); +} + +void UpnpNetworkBuilder::onAllDevicesCallFinished( QDBusPendingCallWatcher* allDevicesCallWatcher ) +{ + QDBusReply reply = *allDevicesCallWatcher; + + if( reply.isValid() ) + { +//qDebug() << "Connected to Cagibi, listing of UPnP devices/services started."; + const DeviceTypeMap deviceTypeMap = reply; + onDevicesAdded( deviceTypeMap ); + } + else + { + //qDebug() << "Could not connect to Cagibi, no listing of UPnP devices/services."; + //qDebug() << "Error: " << reply.error().name(); + } + + delete allDevicesCallWatcher; +} + +void UpnpNetworkBuilder::addUPnPDevices( const QList& upnpDevices ) +{ + QList addedDevices; + QList addedServices; + + QList& deviceList = mNetworkPrivate->deviceList(); + for (const Cagibi::Device& upnpDevice : upnpDevices) { + if( upnpDevice.hasParentDevice() ) + continue; + + const QString ipAddress = upnpDevice.ipAddress(); + + NetDevicePrivate* d = nullptr; + const NetDevice* deviceOfService = nullptr; + for (const NetDevice& device : qAsConst(deviceList)) { + const bool isSameAddress = ( device.ipAddress() == ipAddress ); +//qDebug()<<"existing device:"<setIpAddress( ipAddress ); + + NetDevice device( d ); + addedDevices.append( device ); + deviceList.append( device ); + deviceOfService = &deviceList.last(); +//qDebug()<<"new device:"<canCreateNetSystemFromUpnp(upnpDevice) ) + { + // TODO: here we should rather see if this service already exists + netServicePrivate = factory->createNetService( upnpDevice, *deviceOfService ); + break; + } + } + + NetService netService( netServicePrivate ); + d->addService( netService ); + + addedServices.append( netService ); +//qDebug()<<"new service:"< d->type() ) + { + d->setType( deviceTypeByService ); + if( ! deviceName.isEmpty() ) + d->setName( deviceName ); + } + } + } + + if( ! addedDevices.isEmpty() ) + mNetworkPrivate->emitDevicesAdded( addedDevices ); + if( ! addedServices.isEmpty() ) + mNetworkPrivate->emitServicesAdded( addedServices ); +} + + +void UpnpNetworkBuilder::removeUPnPDevices( const QList& upnpDevices ) +{ + QList removedDevices; + QList removedServices; + + QList& deviceList = mNetworkPrivate->deviceList(); + for (const Cagibi::Device& upnpDevice : upnpDevices) { + const QString ipAddress = upnpDevice.ipAddress(); + + QMutableListIterator it( deviceList ); + while( it.hasNext()) + { + const NetDevice& device = it.next(); + if( device.ipAddress() == ipAddress ) + { + QString id; + for (const UpnpNetSystemAble* factory : qAsConst(mNetSystemFactoryList)) { + if( factory->canCreateNetSystemFromUpnp(upnpDevice) ) + { + id = factory->upnpId( upnpDevice ); + break; + } + } + NetDevicePrivate* d = device.dPtr(); + NetService netService = d->removeService( id ); + if( ! netService.isValid() ) + break; + + removedServices.append( netService ); + + // remove device on last service + if( d->serviceList().count() == 0 ) + { + removedDevices.append( device ); + // remove only after taking copy from reference into removed list + it.remove(); + } + break; + } + } + } + if( ! removedServices.isEmpty() ) + mNetworkPrivate->emitServicesRemoved( removedServices ); + if( ! removedDevices.isEmpty() ) + mNetworkPrivate->emitDevicesRemoved( removedDevices ); +} + + +void UpnpNetworkBuilder::onDevicesAdded( const DeviceTypeMap& deviceTypeMap ) +{ + DeviceTypeMap::ConstIterator it = deviceTypeMap.constBegin(); + DeviceTypeMap::ConstIterator end = deviceTypeMap.constEnd(); + for( ; it != end; ++it ) + { + const QString udn = it.key(); + QList args; + args << udn; + mCagibiDeviceListDBusProxy->callWithCallback( + QLatin1String("deviceDetails"), args, + this, SLOT(onAddedDeviceDetails(Cagibi::Device)), nullptr ); + } +} + +void UpnpNetworkBuilder::onDevicesRemoved( const DeviceTypeMap& deviceTypeMap ) +{ + QList upnpDevices; + + DeviceTypeMap::ConstIterator it = deviceTypeMap.constBegin(); + DeviceTypeMap::ConstIterator end = deviceTypeMap.constEnd(); + for( ; it != end; ++it ) + { + QHash::Iterator adIt = + mActiveDevices.find( it.key() ); + if( adIt != mActiveDevices.end() ) + { +//qDebug()<<"removing UPnP device" << adIt.value().friendlyName(); + upnpDevices.append( adIt.value() ); + mActiveDevices.erase( adIt ); + } + } + + removeUPnPDevices( upnpDevices ); +} + +void UpnpNetworkBuilder::onAddedDeviceDetails( const Cagibi::Device& device ) +{ + // currently only root devices are shown + if( device.hasParentDevice() ) + return; + + mActiveDevices.insert( device.udn(), device ); + + QList devices; + devices.append( device ); + addUPnPDevices( devices ); +} + +void UpnpNetworkBuilder::onCagibiServiceOwnerChanged( const QString& serviceName, + const QString& oldOwner, + const QString& newOwner ) +{ + Q_UNUSED(serviceName); + Q_UNUSED(newOwner); + + // old service disappeared? + if( ! oldOwner.isEmpty() ) + { +//qDebug()<<"Cagibi disappeared, removing all UPnP devices"; + + // remove all registered UPnP devices + QList upnpDevices = mActiveDevices.values(); + mActiveDevices.clear(); + + removeUPnPDevices( upnpDevices ); + } + + if( ! newOwner.isEmpty() ) + queryCurrentDevices(); +} + +UpnpNetworkBuilder::~UpnpNetworkBuilder() +{ +} + +} diff --git a/network/network/builder/upnp/upnpnetworkbuilder.h b/network/network/builder/upnp/upnpnetworkbuilder.h new file mode 100644 index 0000000..309b0c1 --- /dev/null +++ b/network/network/builder/upnp/upnpnetworkbuilder.h @@ -0,0 +1,91 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef UPNPNETWORKBUILDER_H +#define UPNPNETWORKBUILDER_H + +// lib +#include +#include +#include +// Qt +#include +#include + +namespace Cagibi { class Device; } + +class QDBusInterface; +class QDBusPendingCallWatcher; + +typedef QHash DeviceTypeMap; +Q_DECLARE_METATYPE( DeviceTypeMap ) + + +namespace Mollet +{ +class UpnpNetSystemAble; + + +class UpnpNetworkBuilder : public AbstractNetworkBuilder +{ + Q_OBJECT + + public: + explicit UpnpNetworkBuilder( NetworkPrivate* networkPrivate ); + ~UpnpNetworkBuilder() override; + + public: // AbstractNetworkBuilder API + void registerNetSystemFactory( AbstractNetSystemFactory* netSystemFactory ) override; + void start() override; + //TODO: void stop(); ? why needed, what to do? + + protected: + void addUPnPDevices( const QList& devices ); + void removeUPnPDevices( const QList& devices ); + + private Q_SLOTS: + void startBrowse(); + + void onDevicesAdded( const DeviceTypeMap& deviceTypeMap ); + void onDevicesRemoved( const DeviceTypeMap& deviceTypeMap ); + void onAddedDeviceDetails( const Cagibi::Device& device ); + void onCagibiServiceOwnerChanged( const QString& serviceName, + const QString& oldOwner, const QString& newOwner ); + + void onAllDevicesCallFinished( QDBusPendingCallWatcher* allDevicesCallWatcher ); + + private: + void queryCurrentDevices(); + + private: // data + NetworkPrivate* mNetworkPrivate; + + QList mNetSystemFactoryList; + + QHash mActiveDevices; + + QDBusInterface* mCagibiDeviceListDBusProxy; +}; + +} + +#endif diff --git a/network/network/molletnetwork_export.h b/network/network/molletnetwork_export.h new file mode 100644 index 0000000..61bc339 --- /dev/null +++ b/network/network/molletnetwork_export.h @@ -0,0 +1,40 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef MOLLETNETWORK_EXPORT_H +#define MOLLETNETWORK_EXPORT_H + +#ifndef MOLLETNETWORK_EXPORT + // building the library? +# if defined(MAKE_MOLLETNETWORK_LIB) +# define MOLLETNETWORK_EXPORT Q_DECL_EXPORT + // using the library +# else +# define MOLLETNETWORK_EXPORT Q_DECL_IMPORT +# endif +#endif + +# ifndef MOLLETNETWORK_EXPORT_DEPRECATED +# define MOLLETNETWORK_EXPORT_DEPRECATED QT_DEPRECATED MOLLETNETWORK_EXPORT +# endif + +#endif diff --git a/network/network/netdevice.cpp b/network/network/netdevice.cpp new file mode 100644 index 0000000..9ce4808 --- /dev/null +++ b/network/network/netdevice.cpp @@ -0,0 +1,80 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "netdevice.h" +#include "netdevice_p.h" + +namespace Mollet +{ + +Q_GLOBAL_STATIC_WITH_ARGS(QSharedPointer, dummyNetDevicePrivate, ( new NetDevicePrivate(QString()) )) + + +QString NetDevice::iconName( Type type ) +{ + static const char* const IconName[] = + { + /*"unknown"*/"network-server", "scanner", "printer", "network-server-database", "network-server", "computer" + }; + + return QLatin1String(IconName[type]); +} + +NetDevice::NetDevice() + : d( *dummyNetDevicePrivate ) +{ +} + +NetDevice::NetDevice( NetDevicePrivate* _d ) + : d( _d ) +{ +} + +NetDevice::NetDevice( const NetDevice& other ) + : d( other.d ) +{ +} + +QString NetDevice::name() const { return d->name(); } +QString NetDevice::hostName() const { return d->hostName(); } +QString NetDevice::ipAddress() const { return d->ipAddress(); } +QString NetDevice::hostAddress() const { return d->hostAddress(); } +NetDevice::Type NetDevice::type() const { return d->type(); } +QList NetDevice::serviceList() const { return d->serviceList(); } + + +NetDevice& NetDevice::operator =( const NetDevice& other ) +{ + d = other.d; + return *this; +} + +void NetDevice::setDPtr( NetDevicePrivate* _d ) +{ + d.reset(_d); +} + +NetDevice::~NetDevice() +{ +} + +} diff --git a/network/network/netdevice.h b/network/network/netdevice.h new file mode 100644 index 0000000..090e261 --- /dev/null +++ b/network/network/netdevice.h @@ -0,0 +1,95 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETDEVICE_H +#define NETDEVICE_H + +// lib +#include "molletnetwork_export.h" +// Qt +#include + +namespace Mollet { +class NetService; +class NetDevice; +} +template < class T > class QList; +class QString; +class QDBusArgument; + +extern MOLLETNETWORK_EXPORT QDBusArgument& operator<<( QDBusArgument& argument, const Mollet::NetDevice& device ); +extern MOLLETNETWORK_EXPORT const QDBusArgument& operator>>( const QDBusArgument& argument, Mollet::NetDevice& device ); + + +namespace Mollet +{ + +class NetDevicePrivate; + + +class MOLLETNETWORK_EXPORT NetDevice +{ + friend class DNSSDNetworkBuilder; + friend class UpnpNetworkBuilder; + friend QDBusArgument& ::operator<<( QDBusArgument& argument, const NetDevice& device ); + friend const QDBusArgument& ::operator>>( const QDBusArgument& argument, NetDevice& device ); + + public: + // later has priority + enum Type { Unknown = 0, Scanner, Printer, FileServer, Router, Workstation }; + static QString iconName( Type type ); + + public: + NetDevice(); + NetDevice( const NetDevice& other ); + virtual ~NetDevice(); + + public: + QString name() const; + QString hostName() const; + /// if hostName is not set, use ipAddress to identify device + QString ipAddress() const; + /// returns hostName if set, otherwise ipAddress TODO: find better name + QString hostAddress() const; + Type type() const; + QList serviceList() const; + + public: + NetDevice& operator =( const NetDevice& other ); + + private: + explicit NetDevice( NetDevicePrivate* _d ); + void setDPtr( NetDevicePrivate* _d ); + NetDevicePrivate* dPtr() const; + + private: + QSharedPointer d; +}; + +typedef QList NetDeviceList; + + +inline NetDevicePrivate* NetDevice::dPtr() const { return const_cast( d.data() ); } + +} + +#endif diff --git a/network/network/netdevice_p.cpp b/network/network/netdevice_p.cpp new file mode 100644 index 0000000..0bf3123 --- /dev/null +++ b/network/network/netdevice_p.cpp @@ -0,0 +1,78 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "netdevice_p.h" + +// library +#include "netservice_p.h" +// Qt +#include + + +namespace Mollet +{ + +NetDevicePrivate::NetDevicePrivate( const QString& name ) + : mName( name ) + , mType( NetDevice::Unknown ) +{ +} + +bool NetDevicePrivate::hasService( const QString& id ) const +{ + bool result = false; + + for (const NetService& service : mServiceList) { + const NetServicePrivate* const d = service.dPtr(); + if( d->id() == id ) + { + result = true; + break; + } + } + + return result; +} + +NetService NetDevicePrivate::removeService( const QString& id ) +{ + NetService result; + QMutableListIterator it( mServiceList ); + while( it.hasNext()) + { + const NetService& service = it.next(); + const NetServicePrivate* const d = service.dPtr(); + if( d->id() == id ) + { + result = service; + it.remove(); + break; + } + } + return result; +} + +NetDevicePrivate::~NetDevicePrivate() +{ +} + +} diff --git a/network/network/netdevice_p.h b/network/network/netdevice_p.h new file mode 100644 index 0000000..33daa0c --- /dev/null +++ b/network/network/netdevice_p.h @@ -0,0 +1,85 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETDEVICE_P_H +#define NETDEVICE_P_H + +// lib +#include "netdevice.h" +#include "netservice.h" +// Qt +#include +#include +#include + + +namespace Mollet +{ + +class NetDevicePrivate : public QSharedData +{ + public: + explicit NetDevicePrivate( const QString& name ); + virtual ~NetDevicePrivate(); + + public: + const QString& name() const; + const QString& hostName() const; + const QString& ipAddress() const; + const QString& hostAddress() const; + NetDevice::Type type() const; + const QList& serviceList() const; + bool hasService( const QString& id ) const; + + public: + void setName( const QString& name ); + void setHostName( const QString& hostName ); + void setIpAddress( const QString& ipAddress ); + void setType( NetDevice::Type type ); + void addService( const NetService& service ); + NetService removeService( const QString& id ); + + private: + QString mName; + QString mHostName; + QString mIpAddress; + NetDevice::Type mType; + QList mServiceList; +}; + + +inline const QString& NetDevicePrivate::name() const { return mName; } +inline const QString& NetDevicePrivate::hostName() const { return mHostName; } +inline const QString& NetDevicePrivate::ipAddress() const { return mIpAddress; } +inline NetDevice::Type NetDevicePrivate::type() const { return mType; } +inline const QList& NetDevicePrivate::serviceList() const { return mServiceList; } +inline const QString& NetDevicePrivate::hostAddress() const { return mHostName.isEmpty() ? mIpAddress : mHostName; } + +inline void NetDevicePrivate::setName( const QString& name ) { mName = name; } +inline void NetDevicePrivate::setHostName( const QString& hostName ) { mHostName = hostName; } +inline void NetDevicePrivate::setIpAddress( const QString& ipAddress ) { mIpAddress = ipAddress; } +inline void NetDevicePrivate::setType( NetDevice::Type type ) { mType = type; } +inline void NetDevicePrivate::addService( const NetService& service ) { mServiceList.append( service ); } + +} + +#endif diff --git a/network/network/netservice.cpp b/network/network/netservice.cpp new file mode 100644 index 0000000..aca6399 --- /dev/null +++ b/network/network/netservice.cpp @@ -0,0 +1,79 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "netservice.h" +#include "netservice_p.h" + +// lib +#include "netdevice.h" +// Qt +#include + + +namespace Mollet +{ + +// +Q_GLOBAL_STATIC_WITH_ARGS(QSharedPointer, + defaultEmptyNetServicePrivate, + ( new NetServicePrivate(QString(),QString(),QString(),NetDevice(),QString(),QString()) )) + + +NetService::NetService() + : d( *defaultEmptyNetServicePrivate ) +{ +} + +NetService::NetService( NetServicePrivate* _d ) + : d( _d ) +{ +} + +NetService::NetService( const NetService& other ) + : d( other.d ) +{ +} + +QString NetService::name() const { return d->name(); } +QString NetService::iconName() const { return d->iconName(); } +QString NetService::type() const { return d->type(); } +NetDevice NetService::device() const { return d->device(); } +bool NetService::isValid() const { return !d->type().isEmpty(); } // was !d.isNull() +QString NetService::url() const { return d->url(); } + + +NetService& NetService::operator =( const NetService& other ) +{ + d = other.d; + return *this; +} + +void NetService::setDPtr( NetServicePrivate* _d ) +{ + d.reset(_d); +} + +NetService::~NetService() +{ +} + +} diff --git a/network/network/netservice.h b/network/network/netservice.h new file mode 100644 index 0000000..4c29851 --- /dev/null +++ b/network/network/netservice.h @@ -0,0 +1,91 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETSERVICE_H +#define NETSERVICE_H + +// lib +#include "molletnetwork_export.h" +// Qt +#include + +namespace Mollet { +class NetDevice; +class NetService; +} +template < class T > class QList; +class QString; +class QDBusArgument; + +extern MOLLETNETWORK_EXPORT QDBusArgument& operator<<( QDBusArgument& argument, const Mollet::NetService& service ); +extern MOLLETNETWORK_EXPORT const QDBusArgument& operator>>( const QDBusArgument& argument, Mollet::NetService& service ); + + +namespace Mollet +{ + +class NetServicePrivate; + + +class MOLLETNETWORK_EXPORT NetService +{ + friend class DNSSDNetworkBuilder; + friend class UpnpNetworkBuilder; + friend class NetDevicePrivate; + friend QDBusArgument& ::operator<<( QDBusArgument& argument, const NetService& service ); + friend const QDBusArgument& ::operator>>( const QDBusArgument& argument, NetService& service ); + + public: + NetService(); + NetService( const NetService& other ); + virtual ~NetService(); + + public: + QString name() const; + QString iconName() const; + QString type() const; + NetDevice device() const; + bool isValid() const; + + // TODO: not sure all services come down to one url + QString url() const; + + public: + NetService& operator =( const NetService& other ); + + private: + explicit NetService( NetServicePrivate* _d ); + void setDPtr( NetServicePrivate* _d ); + NetServicePrivate* dPtr() const; + + private: + QSharedPointer d; +}; + +typedef QList NetServiceList; + + +inline NetServicePrivate* NetService::dPtr() const { return const_cast( d.data() ); } + +} + +#endif diff --git a/network/network/netservice_p.cpp b/network/network/netservice_p.cpp new file mode 100644 index 0000000..2a5a7ff --- /dev/null +++ b/network/network/netservice_p.cpp @@ -0,0 +1,45 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009,2011 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "netservice_p.h" + + +namespace Mollet +{ + +NetServicePrivate::NetServicePrivate( const QString& name, const QString& iconName, const QString& type, + const NetDevice& device, const QString& url, const QString& id ) + : mName( name ) + , mIconName( iconName ) + , mType( type ) + , mDevice( device ) + , mUrl( url ) + , mId( id ) +{ +} + + +NetServicePrivate::~NetServicePrivate() +{ +} + +} diff --git a/network/network/netservice_p.h b/network/network/netservice_p.h new file mode 100644 index 0000000..524f784 --- /dev/null +++ b/network/network/netservice_p.h @@ -0,0 +1,71 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009,2011 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETSERVICE_P_H +#define NETSERVICE_P_H + +// lib +#include "netdevice.h" +#include "netservice.h" +// Qt +#include +#include + + +namespace Mollet +{ + +class NetServicePrivate : public QSharedData +{ + public: + explicit NetServicePrivate( const QString& name, const QString& iconName, const QString& type, + const NetDevice& device, const QString& url, const QString& id ); + virtual ~NetServicePrivate(); + + public: + const QString& name() const; + const QString& iconName() const; + const QString& type() const; + const NetDevice& device() const; + const QString& url() const; + const QString& id() const; + + private: + QString mName; + QString mIconName; + QString mType; + NetDevice mDevice; + QString mUrl; + QString mId; +}; + + +inline const QString& NetServicePrivate::name() const { return mName; } +inline const QString& NetServicePrivate::iconName() const { return mIconName; } +inline const QString& NetServicePrivate::type() const { return mType; } +inline const NetDevice& NetServicePrivate::device() const { return mDevice; } +inline const QString& NetServicePrivate::url() const { return mUrl; } +inline const QString& NetServicePrivate::id() const { return mId; } + +} + +#endif diff --git a/network/network/network.cpp b/network/network/network.cpp new file mode 100644 index 0000000..bbc0ce2 --- /dev/null +++ b/network/network/network.cpp @@ -0,0 +1,55 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "network.h" +#include "network_p.h" + +// Qt +#include +#include + + +namespace Mollet +{ + +Q_GLOBAL_STATIC( Network, networkSingleton ) + +Network* Network::network() +{ + return networkSingleton; +} + +Network::Network() + : d( new NetworkPrivate(this) ) +{ + d->init(); +} + +QList Network::deviceList() const { return d->deviceList(); } + +Network::~Network() +{ +} + +} + +#include "moc_network.cpp" diff --git a/network/network/network.h b/network/network/network.h new file mode 100644 index 0000000..a8b0611 --- /dev/null +++ b/network/network/network.h @@ -0,0 +1,77 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORK_H +#define NETWORK_H + +// lib +#include "molletnetwork_export.h" +// Qt +#include + +namespace Mollet { +class NetDevice; +class NetService; +} +template < class T > class QList; + + +namespace Mollet +{ +class NetworkPrivate; + +class MOLLETNETWORK_EXPORT Network : public QObject +{ + Q_OBJECT + + friend class NetworkPrivate; + + public: + static Network* network(); + + public: + Network(); + ~Network() override; + + public: + QList deviceList() const; + + Q_SIGNALS: + void devicesAdded( const QList& deviceList ); + void devicesRemoved( const QList& deviceList ); + void servicesAdded( const QList& serviceList ); + void servicesRemoved( const QList& serviceList ); + + void initDone(); + + private: + Q_PRIVATE_SLOT( d, void onBuilderInit() ) + + private: + NetworkPrivate* const d; +}; + +// void connect( Network& network, const char* signal, QObject* object, const char* slot ); + +} + +#endif diff --git a/network/network/network_p.cpp b/network/network/network_p.cpp new file mode 100644 index 0000000..d7ae32e --- /dev/null +++ b/network/network/network_p.cpp @@ -0,0 +1,73 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "network_p.h" + +// lib +#include "builder/dnssd/dnssdnetworkbuilder.h" +#include "builder/upnp/upnpnetworkbuilder.h" +#include "builder/simpleitemfactory.h" + +#include + +namespace Mollet +{ + +NetworkPrivate::NetworkPrivate( Network* parent ) + : p( parent ) +{ +} + +void NetworkPrivate::init() +{ + SimpleItemFactory* simpleItemFactory = new SimpleItemFactory(); + mNetSystemFactoryList.append( simpleItemFactory ); + + DNSSDNetworkBuilder* dnssdBuilder = new DNSSDNetworkBuilder( this ); + UpnpNetworkBuilder* upnpBuilder = new UpnpNetworkBuilder( this ); + mNetworkBuilderList.append( dnssdBuilder ); + mNetworkBuilderList.append( upnpBuilder ); + mNoOfInitBuilders = mNetworkBuilderList.count(); + + for (AbstractNetworkBuilder* builder : qAsConst(mNetworkBuilderList)) { + for (AbstractNetSystemFactory* factory : qAsConst(mNetSystemFactoryList)) { + builder->registerNetSystemFactory( factory ); + } + p->connect( builder, SIGNAL(initDone()), SLOT(onBuilderInit()) ); + builder->start(); + } +} + +void NetworkPrivate::onBuilderInit() +{ + --mNoOfInitBuilders; + if( mNoOfInitBuilders == 0 ) + emit p->initDone(); +} + +NetworkPrivate::~NetworkPrivate() +{ + qDeleteAll( mNetworkBuilderList ); + qDeleteAll( mNetSystemFactoryList ); +} + +} diff --git a/network/network/network_p.h b/network/network/network_p.h new file mode 100644 index 0000000..4757cbf --- /dev/null +++ b/network/network/network_p.h @@ -0,0 +1,77 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORK_P_H +#define NETWORK_P_H + +// lib +#include "network.h" +#include "netdevice.h" + + +namespace Mollet +{ + +class AbstractNetworkBuilder; +class AbstractNetSystemFactory; + +class NetworkPrivate +{ + public: + explicit NetworkPrivate( Network* parent ); + virtual ~NetworkPrivate(); + + public: + const QList& deviceList() const; + QList& deviceList(); + + public: + void init(); + void onBuilderInit(); + + public: + void emitDevicesAdded( const QList& deviceList ); + void emitDevicesRemoved( const QList& deviceList ); + void emitServicesAdded( const QList& serviceList ); + void emitServicesRemoved( const QList& serviceList ); + + private: // data + Network* p; + QList mDeviceList; + QList mNetworkBuilderList; + QList mNetSystemFactoryList; + + int mNoOfInitBuilders; +}; + + +inline const QList& NetworkPrivate::deviceList() const { return mDeviceList; } +inline QList& NetworkPrivate::deviceList() { return mDeviceList; } + +inline void NetworkPrivate::emitDevicesAdded( const QList& deviceList ) { emit p->devicesAdded( deviceList ); } +inline void NetworkPrivate::emitDevicesRemoved( const QList& deviceList ) { emit p->devicesRemoved( deviceList ); } +inline void NetworkPrivate::emitServicesAdded( const QList& serviceList ) { emit p->servicesAdded( serviceList ); } +inline void NetworkPrivate::emitServicesRemoved( const QList& serviceList ) { emit p->servicesRemoved( serviceList ); } + +} + +#endif diff --git a/network/network/networkdbus.cpp b/network/network/networkdbus.cpp new file mode 100644 index 0000000..5245e6f --- /dev/null +++ b/network/network/networkdbus.cpp @@ -0,0 +1,106 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#include "networkdbus.h" + +// network +#include "netdevice_p.h" +#include "netservice_p.h" +// Qt +#include + + +// TODO: Attention, we currently do not stream any references to other items, just the direct data! + +QDBusArgument& operator<<( QDBusArgument& argument, const Mollet::NetDevice& device ) +{ + Mollet::NetDevicePrivate* devicePrivate = device.dPtr(); + + argument.beginStructure(); + argument << devicePrivate->name(); + argument << devicePrivate->hostName(); + argument << devicePrivate->ipAddress(); + argument << (int) devicePrivate->type(); + argument.endStructure(); + + return argument; +} +const QDBusArgument& operator>>( const QDBusArgument& argument, Mollet::NetDevice& device ) +{ + QString name; + QString hostName; + QString ipAddress; + int type; + + argument.beginStructure(); + argument >> name; + argument >> hostName; + argument >> ipAddress; + argument >> type; + argument.endStructure(); + + Mollet::NetDevicePrivate* d = new Mollet::NetDevicePrivate( name ); + d->setHostName( hostName ); + d->setIpAddress( ipAddress ); + d->setType( (Mollet::NetDevice::Type)type ); + + device.setDPtr( d ); + + return argument; +} + +QDBusArgument& operator<<( QDBusArgument& argument, const Mollet::NetService& service ) +{ + Mollet::NetServicePrivate* servicePrivate = service.dPtr(); + + argument.beginStructure(); + argument << servicePrivate->name(); + argument << servicePrivate->iconName(); + argument << servicePrivate->type(); + argument << servicePrivate->url(); + argument << servicePrivate->id(); + argument.endStructure(); + + return argument; +} +const QDBusArgument& operator>>( const QDBusArgument& argument, Mollet::NetService& service ) +{ + QString name; + QString iconName; + QString type; + QString url; + QString id; + + argument.beginStructure(); + argument >> name; + argument >> iconName; + argument >> type; + argument >> url; + argument >> id; + argument.endStructure(); + + Mollet::NetServicePrivate* d = new Mollet::NetServicePrivate( name, iconName, type, Mollet::NetDevice(), url, id ); + + service.setDPtr( d ); + + return argument; +} diff --git a/network/network/networkdbus.h b/network/network/networkdbus.h new file mode 100644 index 0000000..9d549e8 --- /dev/null +++ b/network/network/networkdbus.h @@ -0,0 +1,52 @@ +/* + This file is part of the Mollet network library, part of the KDE project. + + Copyright 2009 Friedrich W. H. Kossebau + + 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) version 3, or any + later version accepted by the membership of KDE e.V. (or its + successor approved by the membership of KDE e.V.), which shall + act as a proxy defined in Section 6 of version 3 of the license. + + 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, see . +*/ + +#ifndef NETWORKDBUS_H +#define NETWORKDBUS_H + +// lib +#include "molletnetwork_export.h" +#include "netdevice.h" +#include "netservice.h" +// Qt +#include + + +// TODO: copying single items out of an interlinked structure does not work +// classical problem with different address spaces. +// instead just the item data is transferred for now. Perhaps this should become another data structure +// which uses ids as reference to the linked data. Needs more use cases to get a better picture. +// also needed: xml description for introspection and automagical creation of adaptor and interface + + +MOLLETNETWORK_EXPORT QDBusArgument& operator<<( QDBusArgument& argument, const Mollet::NetDevice& device ); +MOLLETNETWORK_EXPORT const QDBusArgument& operator>>( const QDBusArgument& argument, Mollet::NetDevice& device ); + +MOLLETNETWORK_EXPORT QDBusArgument& operator<<( QDBusArgument& argument, const Mollet::NetService& service ); +MOLLETNETWORK_EXPORT const QDBusArgument& operator>>( const QDBusArgument& argument, Mollet::NetService& service ); + +Q_DECLARE_METATYPE(Mollet::NetDevice) +Q_DECLARE_METATYPE(Mollet::NetService) +Q_DECLARE_METATYPE(Mollet::NetDeviceList) +Q_DECLARE_METATYPE(Mollet::NetServiceList) + +#endif diff --git a/nfs/CMakeLists.txt b/nfs/CMakeLists.txt new file mode 100644 index 0000000..7189b25 --- /dev/null +++ b/nfs/CMakeLists.txt @@ -0,0 +1,39 @@ +## Check for XDR functions +include(CheckCXXSymbolExists) + +set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${TIRPC_LIBRARIES}) +set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${TIRPC_INCLUDE_DIRS}) +check_cxx_symbol_exists(xdr_u_int64_t "rpc/xdr.h" HAVE_XDR_U_INT64_T) +check_cxx_symbol_exists(xdr_uint64_t "rpc/xdr.h" HAVE_XDR_UINT64_T) +check_cxx_symbol_exists(xdr_u_hyper "rpc/xdr.h" HAVE_XDR_U_HYPER) +check_cxx_symbol_exists(xdr_u_longlong_t "rpc/xdr.h" HAVE_XDR_U_LONGLONG_T) + +if (NOT HAVE_XDR_U_INT64_T AND NOT HAVE_XDR_UINT64_T AND NOT HAVE_XDR_U_HYPER AND NOT HAVE_XDR_U_LONGLONG_T) + message(FATAL_ERROR "Could not find 64-bit XDR datatype functions!") +endif (NOT HAVE_XDR_U_INT64_T AND NOT HAVE_XDR_UINT64_T AND NOT HAVE_XDR_U_HYPER AND NOT HAVE_XDR_U_LONGLONG_T) + +if (HAVE_XDR_U_INT64_T) + add_definitions(-DHAVE_XDR_U_INT64_T) +endif (HAVE_XDR_U_INT64_T) +if (HAVE_XDR_UINT64_T) + add_definitions(-DHAVE_XDR_UINT64_T) +endif (HAVE_XDR_UINT64_T) +if (HAVE_XDR_U_HYPER) + add_definitions(-DHAVE_XDR_U_HYPER) +endif (HAVE_XDR_U_HYPER) +if (HAVE_XDR_U_LONGLONG_T) + add_definitions(-DHAVE_XDR_U_LONGLONG_T) +endif (HAVE_XDR_U_LONGLONG_T) + +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_nfs\") +include_directories(${TIRPC_INCLUDE_DIRS}) + +add_library(kio_nfs MODULE kio_nfs.cpp nfsv2.cpp nfsv3.cpp rpc_nfs3_prot_xdr.c rpc_nfs2_prot_xdr.c) +target_link_libraries(kio_nfs KF5::KIOCore KF5::I18n Qt5::Network ${TIRPC_LIBRARIES}) +set_target_properties(kio_nfs PROPERTIES OUTPUT_NAME "nfs") + +install(TARGETS kio_nfs DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + +########### install files ############### + +install( FILES nfs.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) diff --git a/nfs/Messages.sh b/nfs/Messages.sh new file mode 100644 index 0000000..cc55f96 --- /dev/null +++ b/nfs/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kio5_nfs.pot diff --git a/nfs/README b/nfs/README new file mode 100644 index 0000000..a266381 --- /dev/null +++ b/nfs/README @@ -0,0 +1,3 @@ +This contains a kio slave for NFS version 2 and 3. + +Mathias diff --git a/nfs/kio_nfs.cpp b/nfs/kio_nfs.cpp new file mode 100644 index 0000000..2975e88 --- /dev/null +++ b/nfs/kio_nfs.cpp @@ -0,0 +1,735 @@ +/* This file is part of the KDE project + + Copyright(C) 2000 Alexander Neundorf , + 2014 Mathias Tillman + + 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 "kio_nfs.h" + +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "nfsv2.h" +#include "nfsv3.h" + +using namespace KIO; +using namespace std; + +Q_LOGGING_CATEGORY(LOG_KIO_NFS, "kde.kio-nfs") + + +extern "C" int Q_DECL_EXPORT kdemain(int argc, char** argv); + +int kdemain(int argc, char** argv) +{ + if (argc != 4) { + fprintf(stderr, "Usage: kio_nfs protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + + qCDebug(LOG_KIO_NFS) << "NFS: kdemain: starting"; + + NFSSlave slave(argv[2], argv[3]); + slave.dispatchLoop(); + + return 0; +} + +NFSSlave::NFSSlave(const QByteArray& pool, const QByteArray& app) + : KIO::SlaveBase("nfs", pool, app), + m_protocol(nullptr) +{ + + qCDebug(LOG_KIO_NFS) << pool << app; +} +NFSSlave::~NFSSlave() +{ + if (m_protocol != nullptr) { + delete m_protocol; + } +} + +void NFSSlave::openConnection() +{ + qCDebug(LOG_KIO_NFS) << "openConnection"; + + if (m_protocol != nullptr) { + m_protocol->openConnection(); + } else { + bool connectionError = false; + + int version = 4; + while (version > 1) { + qCDebug(LOG_KIO_NFS) << "Trying NFS version" << version; + + // We need to create a new NFS protocol handler + switch (version) { + case 4: { + // TODO + qCDebug(LOG_KIO_NFS) << "NFSv4 is not supported at this time"; + } + break; + case 3: { + m_protocol = new NFSProtocolV3(this); + } + break; + case 2: { + m_protocol = new NFSProtocolV2(this); + } + break; + } + + // Unimplemented protocol version + if (m_protocol == nullptr) { + version--; + continue; + } + + m_protocol->setHost(m_host); + if (m_protocol->isCompatible(connectionError)) { + break; + } + + version--; + delete m_protocol; + m_protocol = nullptr; + } + + + if (m_protocol == nullptr) { + // If we could not find a compatible protocol, send an error. + if (!connectionError) { + error(KIO::ERR_CANNOT_CONNECT, i18n("%1: Unsupported NFS version", m_host)); + } else { + error(KIO::ERR_CANNOT_CONNECT, m_host); + } + } else { + // Otherwise we open the connection + m_protocol->openConnection(); + } + } +} + +void NFSSlave::closeConnection() +{ + qCDebug(LOG_KIO_NFS); + + if (m_protocol != nullptr) { + m_protocol->closeConnection(); + } +} + +void NFSSlave::setHost(const QString& host, quint16 /*port*/, const QString& /*user*/, const QString& /*pass*/) +{ + qCDebug(LOG_KIO_NFS); + + if (m_protocol != nullptr) { + // New host? New protocol! + if (m_host != host) { + qCDebug(LOG_KIO_NFS) << "Deleting old protocol"; + delete m_protocol; + m_protocol = nullptr; + } else { + m_protocol->setHost(host); + } + } + + m_host = host; +} + +void NFSSlave::put(const QUrl& url, int _mode, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol()) { + m_protocol->put(url, _mode, _flags); + } +} + +void NFSSlave::get(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol()) { + m_protocol->get(url); + } +} + +void NFSSlave::listDir(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + if (verifyProtocol()) { + m_protocol->listDir(url); + } +} + +void NFSSlave::symlink(const QString& target, const QUrl& dest, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol()) { + m_protocol->symlink(target, dest, _flags); + } +} + +void NFSSlave::stat(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol()) { + m_protocol->stat(url); + } +} + +void NFSSlave::mkdir(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol()) { + m_protocol->mkdir(url, permissions); + } +} + +void NFSSlave::del(const QUrl& url, bool isfile) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol()) { + m_protocol->del(url, isfile); + } +} + +void NFSSlave::chmod(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol()) { + m_protocol->chmod(url, permissions); + } +} + +void NFSSlave::rename(const QUrl& src, const QUrl& dest, KIO::JobFlags flags) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol()) { + m_protocol->rename(src, dest, flags); + } +} + +void NFSSlave::copy(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol()) { + m_protocol->copy(src, dest, mode, flags); + } +} + +bool NFSSlave::verifyProtocol() +{ + const bool haveProtocol = (m_protocol != nullptr); + if (!haveProtocol) { + openConnection(); + + if (m_protocol == nullptr) { + // We have failed.... :( + qCDebug(LOG_KIO_NFS) << "Could not find a compatible protocol version!!"; + return false; + } + + // If we are not connected @openConnection will have sent an + // error message to the client, so it's safe to return here. + if (!m_protocol->isConnected()) { + return false; + } + } else if (!m_protocol->isConnected()) { + m_protocol->openConnection(); + if (!m_protocol->isConnected()) { + return false; + } + } + + if (m_protocol->isConnected()) { + return true; + } + + finished(); + return false; +} + + +NFSFileHandle::NFSFileHandle() + : m_handle(nullptr), + m_size(0), + m_linkHandle(nullptr), + m_linkSize(0), + m_isInvalid(true), + m_isLink(false) +{ + +} + +NFSFileHandle::NFSFileHandle(const NFSFileHandle& src) + : NFSFileHandle() +{ + (*this) = src; +} + +NFSFileHandle::NFSFileHandle(const fhandle3& src) + : NFSFileHandle() +{ + (*this) = src; +} + +NFSFileHandle::NFSFileHandle(const fhandle& src) + : NFSFileHandle() +{ + (*this) = src; +} + +NFSFileHandle::NFSFileHandle(const nfs_fh3& src) + : NFSFileHandle() +{ + (*this) = src; +} + +NFSFileHandle::NFSFileHandle(const nfs_fh& src) + : NFSFileHandle() +{ + (*this) = src; +} + +NFSFileHandle::~NFSFileHandle() +{ + if (m_handle != nullptr) { + delete [] m_handle; + } + if (m_linkHandle != nullptr) { + delete [] m_linkHandle; + } +} + +void NFSFileHandle::toFH(nfs_fh3& fh) const +{ + fh.data.data_len = m_size; + fh.data.data_val = m_handle; +} + +void NFSFileHandle::toFH(nfs_fh& fh) const +{ + memcpy(fh.data, m_handle, m_size); +} + +void NFSFileHandle::toFHLink(nfs_fh3& fh) const +{ + fh.data.data_len = m_linkSize; + fh.data.data_val = m_linkHandle; +} + +void NFSFileHandle::toFHLink(nfs_fh& fh) const +{ + memcpy(fh.data, m_linkHandle, m_size); +} + +NFSFileHandle& NFSFileHandle::operator=(const NFSFileHandle& src) +{ + if (src.m_size > 0) { + if (m_handle != nullptr) { + delete [] m_handle; + m_handle = nullptr; + } + + m_size = src.m_size; + m_handle = new char[m_size]; + memcpy(m_handle, src.m_handle, m_size); + } + if (src.m_linkSize > 0) { + if (m_linkHandle != nullptr) { + delete [] m_linkHandle; + m_linkHandle = nullptr; + } + + m_linkSize = src.m_linkSize; + m_linkHandle = new char[m_linkSize]; + memcpy(m_linkHandle, src.m_linkHandle, m_linkSize); + } + + m_isInvalid = src.m_isInvalid; + m_isLink = src.m_isLink; + return *this; +} + +NFSFileHandle& NFSFileHandle::operator=(const fhandle3& src) +{ + if (m_handle != nullptr) { + delete [] m_handle; + m_handle = nullptr; + } + + m_size = src.fhandle3_len; + m_handle = new char[m_size]; + memcpy(m_handle, src.fhandle3_val, m_size); + m_isInvalid = false; + return *this; +} + +NFSFileHandle& NFSFileHandle::operator=(const fhandle& src) +{ + if (m_handle != nullptr) { + delete [] m_handle; + m_handle = nullptr; + } + + m_size = NFS_FHSIZE; + m_handle = new char[m_size]; + memcpy(m_handle, src, m_size); + m_isInvalid = false; + return *this; +} + +NFSFileHandle& NFSFileHandle::operator=(const nfs_fh3& src) +{ + if (m_handle != nullptr) { + delete [] m_handle; + m_handle = nullptr; + } + + m_size = src.data.data_len; + m_handle = new char[m_size]; + memcpy(m_handle, src.data.data_val, m_size); + m_isInvalid = false; + return *this; +} + +NFSFileHandle& NFSFileHandle::operator=(const nfs_fh& src) +{ + if (m_handle != nullptr) { + delete [] m_handle; + m_handle = nullptr; + } + + m_size = NFS_FHSIZE; + m_handle = new char[m_size]; + memcpy(m_handle, src.data, m_size); + m_isInvalid = false; + return *this; +} + +void NFSFileHandle::setLinkSource(const nfs_fh3& src) +{ + if (m_linkHandle != nullptr) { + delete [] m_linkHandle; + m_linkHandle = nullptr; + } + + m_linkSize = src.data.data_len; + m_linkHandle = new char[m_linkSize]; + memcpy(m_linkHandle, src.data.data_val, m_linkSize); + m_isLink = true; +} + +void NFSFileHandle::setLinkSource(const nfs_fh& src) +{ + if (m_linkHandle != nullptr) { + delete [] m_linkHandle; + m_linkHandle = nullptr; + } + + m_linkSize = NFS_FHSIZE; + m_linkHandle = new char[m_linkSize]; + memcpy(m_linkHandle, src.data, m_linkSize); + m_isLink = true; +} + + +NFSProtocol::NFSProtocol(NFSSlave* slave) + : m_slave(slave) +{ + +} + +void NFSProtocol::copy(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) +{ + if (src.isLocalFile()) { + copyTo(src, dest, mode, flags); + } else if (dest.isLocalFile()) { + copyFrom(src, dest, mode, flags); + } else { + copySame(src, dest, mode, flags); + } +} + +void NFSProtocol::addExportedDir(const QString& path) +{ + m_exportedDirs.append(path); +} + +const QStringList& NFSProtocol::getExportedDirs() +{ + return m_exportedDirs; +} + +bool NFSProtocol::isExportedDir(const QString& path) +{ + // If the path is the root filesystem we always return true. + if (QFileInfo(path).isRoot()) { + return true; + } + + for (QStringList::const_iterator it = m_exportedDirs.constBegin(); it != m_exportedDirs.constEnd(); ++it) { + if (path.length() < (*it).length() && (*it).startsWith(path)) { + QString rest = (*it).mid(path.length()); + if (rest.isEmpty() || rest[0] == QDir::separator()) { + qCDebug(LOG_KIO_NFS) << "isExportedDir" << path << "returning true"; + + return true; + } + } + } + + return false; +} + +void NFSProtocol::removeExportedDir(const QString& path) +{ + m_exportedDirs.removeOne(path); +} + +void NFSProtocol::addFileHandle(const QString& path, NFSFileHandle fh) +{ + m_handleCache.insert(path, fh); +} + +NFSFileHandle NFSProtocol::getFileHandle(const QString& path) +{ + if (!isConnected()) { + return NFSFileHandle(); + } + + if (!isValidPath(path)) { + qCDebug(LOG_KIO_NFS) << path << "is not a valid path"; + return NFSFileHandle(); + } + + // The handle may already be in the cache, check it now. + // The exported dirs are always in the cache. + if (m_handleCache.contains(path)) { + return m_handleCache[path]; + } + + // Loop detected, abort. + if (QFileInfo(path).path() == path) { + return NFSFileHandle(); + } + + // Look up the file handle from the protocol + NFSFileHandle childFH = lookupFileHandle(path); + if (!childFH.isInvalid()) { + m_handleCache.insert(path, childFH); + } + + return childFH; +} + +void NFSProtocol::removeFileHandle(const QString& path) +{ + m_handleCache.remove(path); +} + +bool NFSProtocol::isValidPath(const QString& path) +{ + if (path.isEmpty() || path == QDir::separator()) { + return true; + } + + for (QStringList::const_iterator it = m_exportedDirs.constBegin(); it != m_exportedDirs.constEnd(); ++it) { + if ((path.length() == (*it).length() && path.startsWith((*it))) || (path.startsWith((*it) + QDir::separator()))) { + return true; + } + } + + return false; +} + +bool NFSProtocol::isValidLink(const QString& parentDir, const QString& linkDest) +{ + if (linkDest.isEmpty()) { + return false; + } + + if (QFileInfo(linkDest).isAbsolute()) { + return (!getFileHandle(linkDest).isInvalid()); + } else { + QString absDest = QFileInfo(parentDir, linkDest).filePath(); + absDest = QDir::cleanPath(absDest); + return (!getFileHandle(absDest).isInvalid()); + } + + return false; +} + +int NFSProtocol::openConnection(const QString& host, int prog, int vers, CLIENT*& client, int& sock) +{ + if (host.isEmpty()) { + return KIO::ERR_UNKNOWN_HOST; + } + struct sockaddr_in server_addr; + if (host[0] >= '0' && host[0] <= '9') { + server_addr.sin_family = AF_INET; + server_addr.sin_addr.s_addr = inet_addr(host.toLatin1()); + } else { + struct hostent* hp = gethostbyname(host.toLatin1()); + if (hp == nullptr) { + return KIO::ERR_UNKNOWN_HOST; + } + server_addr.sin_family = AF_INET; + memcpy(&server_addr.sin_addr, hp->h_addr, hp->h_length); + } + + server_addr.sin_port = 0; + + sock = RPC_ANYSOCK; + client = clnttcp_create(&server_addr, prog, vers, &sock, 0, 0); + if (client == nullptr) { + server_addr.sin_port = 0; + sock = RPC_ANYSOCK; + + timeval pertry_timeout; + pertry_timeout.tv_sec = 3; + pertry_timeout.tv_usec = 0; + client = clntudp_create(&server_addr, prog, vers, pertry_timeout, &sock); + if (client == nullptr) { + ::close(sock); + return KIO::ERR_CANNOT_CONNECT; + } + } + + QString hostName = QHostInfo::localHostName(); + QString domainName = QHostInfo::localDomainName(); + if (!domainName.isEmpty()) { + hostName = hostName + QLatin1Char('.') + domainName; + } + + client->cl_auth = authunix_create(hostName.toUtf8().data(), geteuid(), getegid(), 0, nullptr); + + return 0; +} + +bool NFSProtocol::checkForError(int clientStat, int nfsStat, const QString& text) +{ + if (clientStat != RPC_SUCCESS) { + qCDebug(LOG_KIO_NFS) << "RPC error" << clientStat << text; + + m_slave->error(KIO::ERR_INTERNAL_SERVER, i18n("RPC error %1", clientStat)); + return false; + } + + if (nfsStat != NFS_OK) { + qCDebug(LOG_KIO_NFS) << "NFS error:" << nfsStat << text; + switch (nfsStat) { + case NFSERR_PERM: + m_slave->error(KIO::ERR_ACCESS_DENIED, text); + break; + case NFSERR_NOENT: + m_slave->error(KIO::ERR_DOES_NOT_EXIST, text); + break; + //does this mapping make sense ? + case NFSERR_IO: + m_slave->error(KIO::ERR_INTERNAL_SERVER, text); + break; + //does this mapping make sense ? + case NFSERR_NXIO: + m_slave->error(KIO::ERR_DOES_NOT_EXIST, text); + break; + case NFSERR_ACCES: + m_slave->error(KIO::ERR_ACCESS_DENIED, text); + break; + case NFSERR_EXIST: + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, text); + break; + //does this mapping make sense ? + case NFSERR_NODEV: + m_slave->error(KIO::ERR_DOES_NOT_EXIST, text); + break; + case NFSERR_NOTDIR: + m_slave->error(KIO::ERR_IS_FILE, text); + break; + case NFSERR_ISDIR: + m_slave->error(KIO::ERR_IS_DIRECTORY, text); + break; + //does this mapping make sense ? + case NFSERR_FBIG: + m_slave->error(KIO::ERR_INTERNAL_SERVER, text); + break; + //does this mapping make sense ? + case NFSERR_NOSPC: + m_slave->error(KIO::ERR_INTERNAL_SERVER, i18n("No space left on device")); + break; + case NFSERR_ROFS: + m_slave->error(KIO::ERR_CANNOT_WRITE, i18n("Read only file system")); + break; + case NFSERR_NAMETOOLONG: + m_slave->error(KIO::ERR_INTERNAL_SERVER, i18n("Filename too long")); + break; + case NFSERR_NOTEMPTY: + m_slave->error(KIO::ERR_CANNOT_RMDIR, text); + break; + //does this mapping make sense ? + case NFSERR_DQUOT: + m_slave->error(KIO::ERR_INTERNAL_SERVER, i18n("Disk quota exceeded")); + break; + case NFSERR_STALE: + m_slave->error(KIO::ERR_DOES_NOT_EXIST, text); + break; + default: + m_slave->error(KIO::ERR_UNKNOWN, i18n("NFS error %1 - %2", nfsStat, text)); + break; + } + return false; + } + return true; +} + +void NFSProtocol::createVirtualDirEntry(UDSEntry& entry) +{ + entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory"); + entry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); + entry.insert(KIO::UDSEntry::UDS_USER, QString::fromLatin1("root")); + entry.insert(KIO::UDSEntry::UDS_GROUP, QString::fromLatin1("root")); + // Dummy size. + entry.insert(KIO::UDSEntry::UDS_SIZE, 0); +} + +#include "moc_kio_nfs.cpp" diff --git a/nfs/kio_nfs.h b/nfs/kio_nfs.h new file mode 100644 index 0000000..1e4b6c9 --- /dev/null +++ b/nfs/kio_nfs.h @@ -0,0 +1,209 @@ +/* This file is part of the KDE project + Copyright (C) 2000 Alexander Neundorf , + 2014 Mathias Tillman + + 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 KIO_NFS_H +#define KIO_NFS_H + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "rpc_nfs2_prot.h" +#include "rpc_nfs3_prot.h" + +Q_DECLARE_LOGGING_CATEGORY(LOG_KIO_NFS); + +class NFSProtocol; + +class NFSSlave : public QObject, public KIO::SlaveBase +{ + Q_OBJECT + +public: + NFSSlave(const QByteArray& pool, const QByteArray& app); + ~NFSSlave() override; + + void openConnection() override; + void closeConnection() override; + + void setHost(const QString& host, quint16 port, const QString& user, const QString& pass) override; + + void put(const QUrl& url, int _mode, KIO::JobFlags _flags) override; + void get(const QUrl& url) override; + void listDir(const QUrl& url) override; + void symlink(const QString& target, const QUrl& dest, KIO::JobFlags) override; + void stat(const QUrl& url) override; + void mkdir(const QUrl& url, int permissions) override; + void del(const QUrl& url, bool isfile) override; + void chmod(const QUrl& url, int permissions) override; + void rename(const QUrl& src, const QUrl& dest, KIO::JobFlags flags) override; + void copy(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) override; + +protected: + // Verifies the current protocol and connection state, returns true if valid. + bool verifyProtocol(); + +private: + NFSProtocol* m_protocol; + + // We need to cache this because the @openConnection call is responsible + // for creating the protocol, and the @setHost call might happen before that. + QString m_host; +}; + + +class NFSFileHandle +{ +public: + NFSFileHandle(); + NFSFileHandle(const NFSFileHandle& handle); + NFSFileHandle(const fhandle3& src); + NFSFileHandle(const fhandle& src); + NFSFileHandle(const nfs_fh3& src); + NFSFileHandle(const nfs_fh& src); + ~NFSFileHandle(); + + // Copies the handle data to an nfs file handle + void toFH(nfs_fh3& fh) const; + void toFH(nfs_fh& fh) const; + + // Copies the source link handle data to an nfs file handle + void toFHLink(nfs_fh3& fh) const; + void toFHLink(nfs_fh& fh) const; + + NFSFileHandle& operator=(const NFSFileHandle& src); + NFSFileHandle& operator=(const fhandle3& src); + NFSFileHandle& operator=(const fhandle& src); + NFSFileHandle& operator=(const nfs_fh3& src); + NFSFileHandle& operator=(const nfs_fh& src); + + bool isInvalid() const + { + return m_isInvalid; + } + void setInvalid() + { + m_isInvalid = true; + } + + bool isLink() const + { + return m_isLink; + } + bool isBadLink() const + { + return (m_isLink && m_linkSize == 0); + } + + void setLinkSource(const nfs_fh3& src); + void setLinkSource(const nfs_fh& src); + void setBadLink() + { + m_isLink = true; + m_linkSize = 0; + } + +protected: + char* m_handle; + unsigned int m_size; + + // Set to the link source's handle. + char* m_linkHandle; + unsigned int m_linkSize; + + bool m_isInvalid; + bool m_isLink; +}; + +typedef QMap NFSFileHandleMap; + +class NFSProtocol +{ +public: + explicit NFSProtocol(NFSSlave* slave); + virtual ~NFSProtocol() {} + + virtual bool isCompatible(bool &connectionError) = 0; + virtual bool isConnected() const = 0; + + virtual void openConnection() = 0; + virtual void closeConnection() = 0; + + virtual void setHost(const QString& host) = 0; + + virtual void put(const QUrl& url, int _mode, KIO::JobFlags _flags) = 0; + virtual void get(const QUrl& url) = 0; + virtual void listDir(const QUrl& url) = 0; + virtual void symlink(const QString& target, const QUrl& dest, KIO::JobFlags) = 0; + virtual void stat(const QUrl& url) = 0; + virtual void mkdir(const QUrl& url, int permissions) = 0; + virtual void del(const QUrl& url, bool isfile) = 0; + virtual void chmod(const QUrl& url, int permissions) = 0; + virtual void rename(const QUrl& src, const QUrl& dest, KIO::JobFlags flags) = 0; + + void copy(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags); + +protected: + // Copy from NFS to NFS + virtual void copySame(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) = 0; + // Copy from NFS to local + virtual void copyFrom(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) = 0; + // Copy from local to NFS + virtual void copyTo(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) = 0; + + // Look up a file handle + virtual NFSFileHandle lookupFileHandle(const QString& path) = 0; + + // Modify the exported dirs. + void addExportedDir(const QString& path); + const QStringList& getExportedDirs(); + bool isExportedDir(const QString& path); + void removeExportedDir(const QString& path); + + // File handle cache functions. + void addFileHandle(const QString& path, NFSFileHandle fh); + NFSFileHandle getFileHandle(const QString& path); + void removeFileHandle(const QString& path); + + // Make sure that the path is actually a part of an nfs share. + bool isValidPath(const QString& path); + bool isValidLink(const QString& parentDir, const QString& linkDest); + + int openConnection(const QString& host, int prog, int vers, CLIENT*& client, int& sock); + + bool checkForError(int clientStat, int nfsStat, const QString& text); + + void createVirtualDirEntry(KIO::UDSEntry& entry); + +private: + NFSSlave* m_slave; + + NFSFileHandleMap m_handleCache; + QStringList m_exportedDirs; +}; + +#endif diff --git a/nfs/nfs.protocol b/nfs/nfs.protocol new file mode 100644 index 0000000..9b45f87 --- /dev/null +++ b/nfs/nfs.protocol @@ -0,0 +1,20 @@ +[Protocol] +exec=kf5/kio/nfs +protocol=nfs +input=none +output=filesystem +listing=Name,Type,Size,Date,AccessDate,CreationDate,Access,Owner,Group,Link +reading=true +writing=true +makedir=true +deleting=true +linking=true +moving=true +copyToFile=true +copyFromFile=true +maxInstances=20 +maxInstancesPerHost=5 +X-DocPath=kioslave5/nfs/index.html +Icon=folder-remote +Class=:internet + diff --git a/nfs/nfsv2.cpp b/nfs/nfsv2.cpp new file mode 100644 index 0000000..63b922d --- /dev/null +++ b/nfs/nfsv2.cpp @@ -0,0 +1,1858 @@ +/* This file is part of the KDE project + + Copyright(C) 2000 Alexander Neundorf , + 2014 Mathias Tillman + + 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 "nfsv2.h" + +#include + +#include + +// This is needed on Solaris so that rpc.h defines clnttcp_create etc. +#ifndef PORTMAP +#define PORTMAP +#endif +#include // for rpc calls + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +// This is for NFS version 2. +#define NFSPROG 100003UL +#define NFSVERS 2UL + + +NFSProtocolV2::NFSProtocolV2(NFSSlave* slave) + : NFSProtocol(slave), + m_slave(slave), + m_mountClient(nullptr), + m_mountSock(-1), + m_nfsClient(nullptr), + m_nfsSock(-1) +{ + qCDebug(LOG_KIO_NFS) << "NFS2::NFS2"; + + clnt_timeout.tv_sec = 20; + clnt_timeout.tv_usec = 0; +} + +NFSProtocolV2::~NFSProtocolV2() +{ + closeConnection(); +} + +bool NFSProtocolV2::isCompatible(bool& connectionError) +{ + int ret = -1; + + CLIENT* client = nullptr; + int sock = 0; + if (NFSProtocol::openConnection(m_currentHost, NFSPROG, NFSVERS, client, sock) == 0) { + // Check if the NFS version is compatible + ret = clnt_call(client, NFSPROC_NULL, + (xdrproc_t) xdr_void, nullptr, + (xdrproc_t) xdr_void, nullptr, clnt_timeout); + + connectionError = false; + } else { + qCDebug(LOG_KIO_NFS) << "openConnection failed"; + connectionError = true; + } + + if (sock != -1) { + ::close(sock); + } + + if (client != nullptr) { + CLNT_DESTROY(client); + } + + qCDebug(LOG_KIO_NFS) << ret; + return (ret == RPC_SUCCESS); +} + +bool NFSProtocolV2::isConnected() const +{ + return (m_nfsClient != nullptr); +} + +void NFSProtocolV2::closeConnection() +{ + qCDebug(LOG_KIO_NFS); + + // Unmount all exported dirs(if any) + if (m_mountClient != nullptr) { + clnt_call(m_mountClient, MOUNTPROC_UMNTALL, + (xdrproc_t) xdr_void, nullptr, + (xdrproc_t) xdr_void, nullptr, + clnt_timeout); + } + + if (m_mountSock >= 0) { + ::close(m_mountSock); + m_mountSock = -1; + } + if (m_nfsSock >= 0) { + ::close(m_nfsSock); + m_nfsSock = -1; + } + + if (m_mountClient != nullptr) { + CLNT_DESTROY(m_mountClient); + m_mountClient = nullptr; + } + if (m_nfsClient != nullptr) { + CLNT_DESTROY(m_nfsClient); + m_nfsClient = nullptr; + } +} + +NFSFileHandle NFSProtocolV2::lookupFileHandle(const QString& path) +{ + int rpcStatus; + diropres res; + if (lookupHandle(path, rpcStatus, res)) { + NFSFileHandle fh = res.diropres_u.diropres.file; + + // It it a link? Get the link target. + if (res.diropres_u.diropres.attributes.type == NFLNK) { + nfs_fh readLinkArgs; + fh.toFH(readLinkArgs); + + char dataBuffer[NFS_MAXPATHLEN]; + + readlinkres readLinkRes; + memset(&readLinkRes, 0, sizeof(readLinkRes)); + readLinkRes.readlinkres_u.data = dataBuffer; + + int rpcStatus = clnt_call(m_nfsClient, NFSPROC_READLINK, + (xdrproc_t) xdr_nfs_fh, reinterpret_cast(&readLinkArgs), + (xdrproc_t) xdr_readlinkres, reinterpret_cast(&readLinkRes), + clnt_timeout); + + if (rpcStatus == RPC_SUCCESS && readLinkRes.status == NFS_OK) { + const QString linkDest = QString::fromLocal8Bit(readLinkRes.readlinkres_u.data); + QString linkPath; + if (QFileInfo(linkDest).isAbsolute()) { + linkPath = linkDest; + } else { + linkPath = QFileInfo(QFileInfo(path).path(), linkDest).absoluteFilePath(); + } + + diropres linkRes; + if (lookupHandle(linkPath, rpcStatus, linkRes)) { + NFSFileHandle linkFH = linkRes.diropres_u.diropres.file; + linkFH.setLinkSource(res.diropres_u.diropres.file); + + qCDebug(LOG_KIO_NFS) << "Found target -" << linkPath; + + return linkFH; + } + } + + // If we have reached this point the file is a link, but we failed to get the target. + fh.setBadLink(); + } + + return fh; + } + + return NFSFileHandle(); +} + +/* Open connection connects to the mount daemon on the server side. + In order to do this it needs authentication and calls auth_unix_create(). + Then it asks the mount daemon for the exported shares. Then it tries + to mount all these shares. If this succeeded for at least one of them, + a client for the nfs daemon is created. + */ +void NFSProtocolV2::openConnection() +{ + qCDebug(LOG_KIO_NFS) << m_currentHost; + + int connErr; + if ((connErr = NFSProtocol::openConnection(m_currentHost, MOUNTPROG, MOUNTVERS, m_mountClient, m_mountSock)) != 0) { + // Close the connection and send the error id to the slave + closeConnection(); + m_slave->error(connErr, m_currentHost); + return; + } + + exports exportlist; + memset(&exportlist, 0, sizeof(exportlist)); + + int clnt_stat = clnt_call(m_mountClient, MOUNTPROC_EXPORT, + (xdrproc_t) xdr_void, nullptr, + (xdrproc_t) xdr_exports, reinterpret_cast(&exportlist), + clnt_timeout); + + if (!checkForError(clnt_stat, 0, m_currentHost.toLatin1())) { + return; + } + + int exportsCount = 0; + QStringList failList; + + fhstatus fhStatus; + for (; exportlist != nullptr; exportlist = exportlist->ex_next, exportsCount++) { + memset(&fhStatus, 0, sizeof(fhStatus)); + + clnt_stat = clnt_call(m_mountClient, MOUNTPROC_MNT, + (xdrproc_t) xdr_dirpath, reinterpret_cast(&exportlist->ex_dir), + (xdrproc_t) xdr_fhstatus, reinterpret_cast(&fhStatus), + clnt_timeout); + + if (fhStatus.fhs_status == 0) { + QString fname = QFileInfo(QDir("/"), exportlist->ex_dir).filePath(); + + // Check if the dir is already exported + if (NFSProtocol::isExportedDir(fname)) { + continue; + } + + addFileHandle(fname, static_cast(fhStatus.fhstatus_u.fhs_fhandle)); + addExportedDir(fname); + } else { + failList.append(exportlist->ex_dir); + } + } + + // Check if some exported dirs failed to mount + if (failList.size() > 0) { + m_slave->error(KIO::ERR_CANNOT_MOUNT, i18n("Failed to mount %1", failList.join(", "))); + + // All exports failed to mount, fail + if (failList.size() == exportsCount) { + closeConnection(); + return; + } + } + + if ((connErr = NFSProtocol::openConnection(m_currentHost, NFSPROG, NFSVERS, m_nfsClient, m_nfsSock)) != 0) { + closeConnection(); + m_slave->error(connErr, m_currentHost); + } + + m_slave->connected(); + + qCDebug(LOG_KIO_NFS) << "openConnection succeeded"; +} + +void NFSProtocolV2::listDir(const QUrl& url) +{ + // We should always be connected if it reaches this point, + // but better safe than sorry! + if (!isConnected()) { + return; + } + + if (url.isEmpty()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, url.path()); + + return; + } + + const QString path(url.path()); + + // The root "directory" is just a list of the exported directories, + // so list them here. + if (isExportedDir(path)) { + qCDebug(LOG_KIO_NFS) << "Listing exported dir"; + + QStringList virtualList; + for (QStringList::const_iterator it = getExportedDirs().constBegin(); it != getExportedDirs().constEnd(); ++it) { + // When an export is multiple levels deep(mnt/nfs for example) we only + // want to display one level at a time. + QString name = (*it); + name = name.remove(0, path.length()); + if (name.startsWith('/')) { + name = name.mid(1); + } + if (name.indexOf('/') != -1) { + name.truncate(name.indexOf('/')); + } + + if (!virtualList.contains(name)) { + virtualList.append(name); + } + } + + for (QStringList::const_iterator it = virtualList.constBegin(); it != virtualList.constEnd(); ++it) { + qCDebug(LOG_KIO_NFS) << (*it) << "found in exported dir"; + + KIO::UDSEntry entry; + entry.insert(KIO::UDSEntry::UDS_NAME, (*it)); + + createVirtualDirEntry(entry); + m_slave->listEntry(entry); + } + + m_slave->finished(); + return; + } + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid() || fh.isBadLink()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + readdirargs listargs; + memset(&listargs, 0, sizeof(listargs)); + listargs.count = 1024 * sizeof(entry); + fh.toFH(listargs.dir); + + readdirres listres; + + QStringList filesToList; + entry* lastEntry = nullptr; + do { + memset(&listres, 0, sizeof(listres)); + // In case that we didn't get all entries we need to set the cookie to the last one we actually received. + if (lastEntry != nullptr) { + memcpy(listargs.cookie, lastEntry->cookie, NFS_COOKIESIZE); + } + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC_READDIR, + (xdrproc_t) xdr_readdirargs, reinterpret_cast(&listargs), + (xdrproc_t) xdr_readdirres, reinterpret_cast(&listres), + clnt_timeout); + + if (!checkForError(clnt_stat, listres.status, path)) { + return; + } + + for (entry* dirEntry = listres.readdirres_u.reply.entries; dirEntry != nullptr; dirEntry = dirEntry->nextentry) { + if (dirEntry->name != QString(".") && dirEntry->name != QString("..")) { + filesToList.append(QFile::decodeName(dirEntry->name)); + } + + lastEntry = dirEntry; + } + } while (!listres.readdirres_u.reply.eof); + + KIO::UDSEntry entry; + for (QStringList::const_iterator it = filesToList.constBegin(); it != filesToList.constEnd(); ++it) { + QString filePath = QFileInfo(QDir(path), (*it)).filePath(); + + int rpcStatus; + diropres dirres; + if (!lookupHandle(filePath, rpcStatus, dirres)) { + qCDebug(LOG_KIO_NFS) << "Failed to lookup" << filePath << ", rpc:" << rpcStatus << ", nfs:" << dirres.status; + // Try the next file instead of failing + continue; + } + + entry.clear(); + entry.insert(KIO::UDSEntry::UDS_NAME, (*it)); + + //is it a symlink ? + if (dirres.diropres_u.diropres.attributes.type == NFLNK) { + int rpcStatus; + readlinkres readLinkRes; + char nameBuf[NFS_MAXPATHLEN]; + if (symLinkTarget(filePath, rpcStatus, readLinkRes, nameBuf)) { + const QString linkDest = QString::fromLocal8Bit(readLinkRes.readlinkres_u.data); + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + + bool badLink = true; + NFSFileHandle linkFH; + if (isValidLink(path, linkDest)) { + QString linkPath; + if (QFileInfo(linkDest).isAbsolute()) { + linkPath = linkDest; + } else { + linkPath = QFileInfo(path, linkDest).absoluteFilePath(); + } + + int rpcStatus; + diropres lookupRes; + if (lookupHandle(linkPath, rpcStatus, lookupRes)) { + attrstat attrAndStat; + if (getAttr(linkPath, rpcStatus, attrAndStat)) { + badLink = false; + + linkFH = lookupRes.diropres_u.diropres.file; + linkFH.setLinkSource(dirres.diropres_u.diropres.file); + + completeUDSEntry(entry, attrAndStat.attrstat_u.attributes); + } + } + + } + + if (badLink) { + linkFH = dirres.diropres_u.diropres.file; + linkFH.setBadLink(); + + completeBadLinkUDSEntry(entry, dirres.diropres_u.diropres.attributes); + } + + addFileHandle(filePath, linkFH); + } else { + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, i18n("Unknown target")); + completeBadLinkUDSEntry(entry, dirres.diropres_u.diropres.attributes); + } + } else { + addFileHandle(filePath, dirres.diropres_u.diropres.file); + completeUDSEntry(entry, dirres.diropres_u.diropres.attributes); + } + + m_slave->listEntry(entry); + } + + m_slave->finished(); +} + +void NFSProtocolV2::stat(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + if (isExportedDir(path)) { + KIO::UDSEntry entry; + + entry.insert(KIO::UDSEntry::UDS_NAME, path); + createVirtualDirEntry(entry); + + m_slave->statEntry(entry); + m_slave->finished(); + return; + } + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid()) { + qCDebug(LOG_KIO_NFS) << "File handle is invalid"; + m_slave->error(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + int rpcStatus; + attrstat attrAndStat; + if (!getAttr(path, rpcStatus, attrAndStat)) { + checkForError(rpcStatus, attrAndStat.status, path); + return; + } + + const QFileInfo fileInfo(path); + + KIO::UDSEntry entry; + entry.insert(KIO::UDSEntry::UDS_NAME, fileInfo.fileName()); + + // Is it a symlink? + if (attrAndStat.attrstat_u.attributes.type == NFLNK) { + qCDebug(LOG_KIO_NFS) << "It's a symlink"; + + QString linkDest; + + int rpcStatus; + readlinkres readLinkRes; + char nameBuf[NFS_MAXPATHLEN]; + if (symLinkTarget(path, rpcStatus, readLinkRes, nameBuf)) { + linkDest = QString::fromLocal8Bit(readLinkRes.readlinkres_u.data); + } else { + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, i18n("Unknown target")); + completeBadLinkUDSEntry(entry, attrAndStat.attrstat_u.attributes); + + m_slave->statEntry(entry); + m_slave->finished(); + return; + } + + qCDebug(LOG_KIO_NFS) << "link dest is" << linkDest; + + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + if (!isValidLink(fileInfo.path(), linkDest)) { + completeBadLinkUDSEntry(entry, attrAndStat.attrstat_u.attributes); + } else { + QString linkPath; + if (QFileInfo(linkDest).isAbsolute()) { + linkPath = linkDest; + } else { + linkPath = QFileInfo(fileInfo.path(), linkDest).absoluteFilePath(); + } + + int rpcStatus; + attrstat attrAndStat; + if (!getAttr(linkPath, rpcStatus, attrAndStat)) { + checkForError(rpcStatus, attrAndStat.status, linkPath); + return; + } + + completeUDSEntry(entry, attrAndStat.attrstat_u.attributes); + } + } else { + completeUDSEntry(entry, attrAndStat.attrstat_u.attributes); + } + + m_slave->statEntry(entry); + m_slave->finished(); +} + +void NFSProtocolV2::setHost(const QString& host) +{ + qCDebug(LOG_KIO_NFS) << host; + if (host.isEmpty()) { + m_slave->error(KIO::ERR_UNKNOWN_HOST, QString()); + return; + } + + if (host == m_currentHost) { + return; + } + + // Set the new host and close the current connection + m_currentHost = host; + closeConnection(); +} + +void NFSProtocolV2::mkdir(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + const QFileInfo fileInfo(path); + if (isExportedDir(fileInfo.path())) { + m_slave->error(KIO::ERR_WRITE_ACCESS_DENIED, path); + return; + } + + const NFSFileHandle fh = getFileHandle(fileInfo.path()); + if (fh.isInvalid() || fh.isBadLink()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + createargs createArgs; + fh.toFH(createArgs.where.dir); + + QByteArray tmpName = QFile::encodeName(fileInfo.fileName()); + createArgs.where.name = tmpName.data(); + + if (permissions == -1) { + createArgs.attributes.mode = 0755; + } else { + createArgs.attributes.mode = permissions; + } + + diropres dirres; + memset(&dirres, 0, sizeof(diropres)); + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC_MKDIR, + (xdrproc_t) xdr_createargs, reinterpret_cast(&createArgs), + (xdrproc_t) xdr_diropres, reinterpret_cast(&dirres), + clnt_timeout); + + if (!checkForError(clnt_stat, dirres.status, path)) { + return; + } + + m_slave->finished(); +} + +void NFSProtocolV2::del(const QUrl& url, bool) +{ + int rpcStatus; + nfsstat nfsStatus; + if (!remove(url.path(), rpcStatus, nfsStatus)) { + checkForError(rpcStatus, nfsStatus, url.path()); + + qCDebug(LOG_KIO_NFS) << "Could not delete" << url; + return; + } + + m_slave->finished(); +} + +void NFSProtocolV2::chmod(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + if (isExportedDir(path)) { + m_slave->error(KIO::ERR_ACCESS_DENIED, path); + return; + } + + sattr attributes; + memset(&attributes, 0xFF, sizeof(attributes)); + attributes.mode = permissions; + + int rpcStatus; + nfsstat result; + if (!setAttr(path, attributes, rpcStatus, result)) { + checkForError(rpcStatus, result, path); + return; + } + + + m_slave->finished(); +} + +void NFSProtocolV2::get(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid() || fh.isBadLink()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + readargs readArgs; + fh.toFH(readArgs.file); + readArgs.offset = 0; + readArgs.count = NFS_MAXDATA; + readArgs.totalcount = NFS_MAXDATA; + + readres readRes; + memset(&readRes, 0, sizeof(readres)); + + char buf[NFS_MAXDATA]; + readRes.readres_u.reply.data.data_val = buf; + + bool validRead = false; + int offset = 0; + QByteArray readBuffer; + do { + int clnt_stat = clnt_call(m_nfsClient, NFSPROC_READ, + (xdrproc_t) xdr_readargs, reinterpret_cast(&readArgs), + (xdrproc_t) xdr_readres, reinterpret_cast(&readRes), + clnt_timeout); + + if (!checkForError(clnt_stat, readRes.status, path)) { + return; + } + + if (readArgs.offset == 0) { + m_slave->totalSize(readRes.readres_u.reply.attributes.size); + + const QMimeDatabase db; + const QMimeType type = db.mimeTypeForFileNameAndData(url.fileName(), readBuffer); + m_slave->mimeType(type.name()); + } + + offset = readRes.readres_u.reply.data.data_len; + readArgs.offset += offset; + if (offset > 0) { + validRead = true; + + readBuffer = QByteArray::fromRawData(readRes.readres_u.reply.data.data_val, offset); + m_slave->data(readBuffer); + readBuffer.clear(); + + m_slave->processedSize(readArgs.offset); + } + + } while (offset > 0); + + if (validRead) { + m_slave->data(QByteArray()); + m_slave->processedSize(readArgs.offset); + } + + m_slave->finished(); +} + +void NFSProtocolV2::put(const QUrl& url, int _mode, KIO::JobFlags flags) +{ + qCDebug(LOG_KIO_NFS) << url << _mode; + + const QString destPath(url.path()); + + const QFileInfo fileInfo(destPath); + if (isExportedDir(fileInfo.path())) { + m_slave->error(KIO::ERR_WRITE_ACCESS_DENIED, destPath); + return; + } + + NFSFileHandle destFH = getFileHandle(destPath); + if (destFH.isBadLink()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, destPath); + return; + } + + //the file exists and we don't want to overwrite + if (!destFH.isInvalid() && (!(flags & KIO::Overwrite))) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + int rpcStatus; + diropres dirOpRes; + if (!create(destPath, _mode, rpcStatus, dirOpRes)) { + checkForError(rpcStatus, dirOpRes.status, fileInfo.fileName()); + return; + } + + destFH = dirOpRes.diropres_u.diropres.file.data; + + writeargs writeArgs; + memset(&writeArgs, 0, sizeof(writeargs)); + destFH.toFH(writeArgs.file); + writeArgs.beginoffset = 0; + writeArgs.totalcount = 0; + writeArgs.offset = 0; + + attrstat attrStat; + + int result = 0, bytesWritten = 0; + do { + // Request new data + m_slave->dataReq(); + + QByteArray buffer; + result = m_slave->readData(buffer); + + char* data = buffer.data(); + int bytesToWrite = buffer.size(), writeNow = 0; + if (result > 0) { + do { + if (bytesToWrite > NFS_MAXDATA) { + writeNow = NFS_MAXDATA; + } else { + writeNow = bytesToWrite; + } + + writeArgs.data.data_val = data; + writeArgs.data.data_len = writeNow; + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC_WRITE, + (xdrproc_t) xdr_writeargs, reinterpret_cast(&writeArgs), + (xdrproc_t) xdr_attrstat, reinterpret_cast(&attrStat), + clnt_timeout); + + if (!checkForError(clnt_stat, attrStat.status, fileInfo.fileName())) { + return; + } + + bytesWritten += writeNow; + writeArgs.offset = bytesWritten; + + data = data + writeNow; + bytesToWrite -= writeNow; + } while (bytesToWrite > 0); + } + } while (result > 0); + + m_slave->finished(); +} + +void NFSProtocolV2::rename(const QUrl& src, const QUrl& dest, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS) << src << "to" << dest; + + const QString srcPath(src.path()); + if (isExportedDir(srcPath)) { + m_slave->error(KIO::ERR_CANNOT_RENAME, srcPath); + return; + } + + const QString destPath(dest.path()); + if (isExportedDir(destPath)) { + m_slave->error(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + int rpcStatus; + nfsstat nfsStatus; + if (!rename(src.path(), destPath, rpcStatus, nfsStatus)) { + if (!checkForError(rpcStatus, nfsStatus, destPath)) { + return; + } + } + + m_slave->finished(); +} + +void NFSProtocolV2::copySame(const QUrl& src, const QUrl& dest, int _mode, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS) << src << "to" << dest; + + const QString srcPath(src.path()); + + const NFSFileHandle srcFH = getFileHandle(srcPath); + if (srcFH.isInvalid()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath = dest.path(); + if (isExportedDir(QFileInfo(destPath).path())) { + m_slave->error(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + // The file exists and we don't want to overwrite + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + // Is it a link? No need to copy the data then, just copy the link destination. + if (srcFH.isLink()) { + //get the link dest + int rpcStatus; + readlinkres readLinkRes; + char nameBuf[NFS_MAXPATHLEN]; + if (!symLinkTarget(srcPath, rpcStatus, readLinkRes, nameBuf)) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString linkPath = QString::fromLocal8Bit(readLinkRes.readlinkres_u.data); + + nfsstat linkRes; + if (!symLink(linkPath, destPath, rpcStatus, linkRes)) { + checkForError(rpcStatus, linkRes, linkPath); + return; + } + + m_slave->finished(); + return; + } + + unsigned long resumeOffset = 0; + bool bResume = false; + const QString partFilePath = destPath + QLatin1String(".part"); + const NFSFileHandle partFH = getFileHandle(partFilePath); + const bool bPartExists = !partFH.isInvalid(); + const bool bMarkPartial = m_slave->configValue(QStringLiteral("MarkPartial"), true); + + if (bPartExists) { + int rpcStatus; + diropres partRes; + if (lookupHandle(partFilePath, rpcStatus, partRes)) { + if (bMarkPartial && partRes.diropres_u.diropres.attributes.size > 0) { + if (partRes.diropres_u.diropres.attributes.type == NFDIR) { + m_slave->error(KIO::ERR_IS_DIRECTORY, partFilePath); + return; + } + + bResume = m_slave->canResume(partRes.diropres_u.diropres.attributes.size); + if (bResume) { + resumeOffset = partRes.diropres_u.diropres.attributes.size; + } + } + } + + // Remove the part file if we are not resuming + if (!bResume) { + if (!remove(partFilePath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove part file, ignoring..."; + } + } + } + + // Create the file if we are not resuming a parted transfer, + // or if we are not using part files(bResume is false in that case) + NFSFileHandle destFH; + if (!bResume) { + QString createPath; + if (bMarkPartial) { + createPath = partFilePath; + } else { + createPath = destPath; + } + + int rpcStatus; + diropres dirOpRes; + if (!create(createPath, _mode, rpcStatus, dirOpRes)) { + checkForError(rpcStatus, dirOpRes.status, createPath); + return; + } + + destFH = dirOpRes.diropres_u.diropres.file.data; + } else { + // Since we are resuming it's implied that we are using a part file, + // which should exist at this point. + destFH = getFileHandle(partFilePath); + + qCDebug(LOG_KIO_NFS) << "Resuming old transfer"; + } + + char buf[NFS_MAXDATA]; + + writeargs writeArgs; + destFH.toFH(writeArgs.file); + writeArgs.beginoffset = 0; + writeArgs.totalcount = 0; + writeArgs.offset = 0; + writeArgs.data.data_val = buf; + + readargs readArgs; + srcFH.toFH(readArgs.file); + readArgs.offset = 0; + readArgs.count = NFS_MAXDATA; + readArgs.totalcount = NFS_MAXDATA; + + if (bResume) { + writeArgs.offset = resumeOffset; + readArgs.offset = resumeOffset; + } + + readres readRes; + memset(&readRes, 0, sizeof(readres)); + readRes.readres_u.reply.data.data_val = buf; + + attrstat attrStat; + memset(&attrStat, 0, sizeof(attrstat)); + + bool error = false; + int bytesRead = 0; + do { + int clnt_stat = clnt_call(m_nfsClient, NFSPROC_READ, + (xdrproc_t) xdr_readargs, reinterpret_cast(&readArgs), + (xdrproc_t) xdr_readres, reinterpret_cast(&readRes), + clnt_timeout); + + if (!checkForError(clnt_stat, readRes.status, destPath)) { + error = true; + break; + } + + bytesRead = readRes.readres_u.reply.data.data_len; + + // We should only send out the total size and mimetype at the start of the transfer + if (readArgs.offset == 0 || (bResume && writeArgs.offset == resumeOffset)) { + m_slave->totalSize(readRes.readres_u.reply.attributes.size); + + QMimeDatabase db; + QMimeType type = db.mimeTypeForFileNameAndData(src.fileName(), QByteArray::fromRawData(writeArgs.data.data_val, bytesRead)); + m_slave->mimeType(type.name()); + } + + + if (bytesRead > 0) { + readArgs.offset += bytesRead; + + writeArgs.data.data_len = bytesRead; + + clnt_stat = clnt_call(m_nfsClient, NFSPROC_WRITE, + (xdrproc_t) xdr_writeargs, reinterpret_cast(&writeArgs), + (xdrproc_t) xdr_attrstat, reinterpret_cast(&attrStat), + clnt_timeout); + + if (!checkForError(clnt_stat, attrStat.status, destPath)) { + error = true; + break; + } + + writeArgs.offset += bytesRead; + + m_slave->processedSize(readArgs.offset); + } + } while (bytesRead > 0); + + if (error) { + if (bMarkPartial) { + // Remove the part file if it's smaller than the minimum keep size. + const unsigned int size = m_slave->configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + if (writeArgs.offset < size) { + if (!remove(partFilePath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove part file, ignoring..."; + } + } + } + } else { + // Rename partial file to its original name. + if (bMarkPartial) { + // Remove the destination file(if it exists) + if (!getFileHandle(destPath).isInvalid() && !remove(destPath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove destination file" << destPath << ", ignoring..."; + } + + if (!rename(partFilePath, destPath)) { + qCDebug(LOG_KIO_NFS) << "Failed to rename" << partFilePath << "to" << destPath; + m_slave->error(KIO::ERR_CANNOT_RENAME_PARTIAL, partFilePath); + return; + } + } + + // Restore modification time + int rpcStatus; + attrstat attrRes; + if (getAttr(srcPath, rpcStatus, attrRes)) { + sattr attributes; + memset(&attributes, 0xFF, sizeof(attributes)); + attributes.mtime.seconds = attrRes.attrstat_u.attributes.mtime.seconds; + attributes.mtime.useconds = attrRes.attrstat_u.attributes.mtime.useconds; + + nfsstat attrSetRes; + if (!setAttr(destPath, attributes, rpcStatus, attrSetRes)) { + qCDebug(LOG_KIO_NFS) << "Failed to restore mtime, ignoring..." << rpcStatus << attrSetRes; + } + } + + qCDebug(LOG_KIO_NFS) << "Copied" << writeArgs.offset << "bytes of data"; + + m_slave->processedSize(readArgs.offset); + m_slave->finished(); + } +} + +void NFSProtocolV2::copyFrom(const QUrl& src, const QUrl& dest, int _mode, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS) << src << "to" << dest; + + const QString srcPath(src.path()); + + const NFSFileHandle srcFH = getFileHandle(srcPath); + if (srcFH.isInvalid()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath(dest.path()); + + // The file exists and we don't want to overwrite + if (QFile::exists(destPath) && (_flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + // Is it a link? No need to copy the data then, just copy the link destination. + if (srcFH.isLink()) { + qCDebug(LOG_KIO_NFS) << "Is a link"; + + int rpcStatus; + readlinkres readLinkRes; + char nameBuf[NFS_MAXPATHLEN]; + if (!symLinkTarget(srcPath, rpcStatus, readLinkRes, nameBuf)) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + QFile::link(QString::fromLocal8Bit(readLinkRes.readlinkres_u.data), destPath); + + m_slave->finished(); + return; + } + + bool bResume = false; + const QFileInfo partInfo(destPath + QLatin1String(".part")); + const bool bPartExists = partInfo.exists(); + const bool bMarkPartial = m_slave->configValue(QStringLiteral("MarkPartial"), true); + + if (bMarkPartial && bPartExists && partInfo.size() > 0) { + if (partInfo.isDir()) { + m_slave->error(KIO::ERR_IS_DIRECTORY, partInfo.absoluteFilePath()); + return; + } + + bResume = m_slave->canResume(partInfo.size()); + } + + if (bPartExists && !bResume) { + QFile::remove(partInfo.absoluteFilePath()); + } + + QFile::OpenMode openMode; + QString outFileName; + if (bResume) { + outFileName = partInfo.absoluteFilePath(); + openMode = QFile::WriteOnly | QFile::Append; + } else { + outFileName = (bMarkPartial ? partInfo.absoluteFilePath() : destPath); + openMode = QFile::WriteOnly | QFile::Truncate; + } + + QFile destFile(outFileName); + if (!bResume) { + QFile::Permissions perms; + if (_mode == -1) { + perms = QFile::ReadOwner | QFile::WriteOwner; + } else { + perms = KIO::convertPermissions(_mode | QFile::WriteOwner); + } + destFile.setPermissions(perms); + } + + if (!destFile.open(openMode)) { + switch (destFile.error()) { + case QFile::OpenError: + if (bResume) { + m_slave->error(KIO::ERR_CANNOT_RESUME, destPath); + } else { + m_slave->error(KIO::ERR_CANNOT_OPEN_FOR_WRITING, destPath); + } + break; + case QFile::PermissionsError: + m_slave->error(KIO::ERR_WRITE_ACCESS_DENIED, destPath); + break; + default: + m_slave->error(KIO::ERR_CANNOT_OPEN_FOR_WRITING, destPath); + break; + } + return; + } + + char buf[NFS_MAXDATA]; + + readargs readArgs; + srcFH.toFH(readArgs.file); + if (bResume) { + readArgs.offset = partInfo.size(); + } else { + readArgs.offset = 0; + } + readArgs.count = NFS_MAXDATA; + readArgs.totalcount = NFS_MAXDATA; + + readres readRes; + memset(&readRes, 0, sizeof(readres)); + readRes.readres_u.reply.data.data_val = buf; + + attrstat attrStat; + memset(&attrStat, 0, sizeof(attrstat)); + + bool error = false; + int bytesRead = 0; + do { + int clnt_stat = clnt_call(m_nfsClient, NFSPROC_READ, + (xdrproc_t) xdr_readargs, reinterpret_cast(&readArgs), + (xdrproc_t) xdr_readres, reinterpret_cast(&readRes), + clnt_timeout); + + if (!checkForError(clnt_stat, readRes.status, destPath)) { + error = true; + break; + } + + bytesRead = readRes.readres_u.reply.data.data_len; + + if (readArgs.offset == 0) { + m_slave->totalSize(readRes.readres_u.reply.attributes.size); + + QMimeDatabase db; + QMimeType type = db.mimeTypeForFileNameAndData(src.fileName(), QByteArray::fromRawData(readRes.readres_u.reply.data.data_val, bytesRead)); + m_slave->mimeType(type.name()); + } + + + if (bytesRead > 0) { + readArgs.offset += bytesRead; + + if (destFile.write(readRes.readres_u.reply.data.data_val, bytesRead) != bytesRead) { + m_slave->error(KIO::ERR_CANNOT_WRITE, destPath); + + error = true; + break; + } + + m_slave->processedSize(readArgs.offset); + } + } while (bytesRead > 0); + + // Close the file so we can modify the modification time later. + destFile.close(); + + if (error) { + if (bMarkPartial) { + // Remove the part file if it's smaller than the minimum keep + const int size = m_slave->configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + if (partInfo.size() < size) { + QFile::remove(partInfo.absoluteFilePath()); + } + } + } else { + // Rename partial file to its original name. + if (bMarkPartial) { + const QString sPart = partInfo.absoluteFilePath(); + if (QFile::exists(destPath)) { + QFile::remove(destPath); + } + if (!QFile::rename(sPart, destPath)) { + qCDebug(LOG_KIO_NFS) << "Failed to rename" << sPart << "to" << destPath; + m_slave->error(KIO::ERR_CANNOT_RENAME_PARTIAL, sPart); + return; + } + } + + // Restore the mtime on the file. + const QString mtimeStr = m_slave->metaData("modified"); + if (!mtimeStr.isEmpty()) { + QDateTime dt = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dt.isValid()) { + qCDebug(LOG_KIO_NFS) << "Setting modification time to" << dt.toSecsSinceEpoch(); + + struct utimbuf utbuf; + utbuf.actime = QFileInfo(destPath).lastRead().toSecsSinceEpoch(); // access time, unchanged + utbuf.modtime = dt.toSecsSinceEpoch(); // modification time + utime(QFile::encodeName(destPath).constData(), &utbuf); + } + } + + qCDebug(LOG_KIO_NFS) << "Copied" << readArgs.offset << "bytes of data"; + + m_slave->processedSize(readArgs.offset); + m_slave->finished(); + } +} + +void NFSProtocolV2::copyTo(const QUrl& src, const QUrl& dest, int _mode, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS) << src << "to" << dest; + + // The source does not exist, how strange. + const QString srcPath(src.path()); + if (!QFile::exists(srcPath)) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath(dest.path()); + if (isExportedDir(destPath)) { + m_slave->error(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + // The file exists and we don't want to overwrite. + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + // Is it a link? No need to copy the data then, just copy the link destination. + const QString symlinkTarget = QFile::symLinkTarget(srcPath); + if (!symlinkTarget.isEmpty()) { + int rpcStatus; + nfsstat linkRes; + if (!symLink(symlinkTarget, destPath, rpcStatus, linkRes)) { + checkForError(rpcStatus, linkRes, symlinkTarget); + return; + } + + m_slave->finished(); + return; + } + + unsigned long resumeOffset = 0; + bool bResume = false; + const QString partFilePath = destPath + QLatin1String(".part"); + const NFSFileHandle partFH = getFileHandle(partFilePath); + const bool bPartExists = !partFH.isInvalid(); + const bool bMarkPartial = m_slave->configValue(QStringLiteral("MarkPartial"), true); + + if (bPartExists) { + int rpcStatus; + diropres partRes; + if (lookupHandle(partFilePath, rpcStatus, partRes)) { + if (bMarkPartial && partRes.diropres_u.diropres.attributes.size > 0) { + if (partRes.diropres_u.diropres.attributes.type == NFDIR) { + m_slave->error(KIO::ERR_IS_DIRECTORY, partFilePath); + return; + } + + bResume = m_slave->canResume(partRes.diropres_u.diropres.attributes.size); + if (bResume) { + resumeOffset = partRes.diropres_u.diropres.attributes.size; + } + } + } + + // Remove the part file if we are not resuming + if (!bResume) { + if (!remove(partFilePath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove part file, ignoring..."; + } + } + } + + // Open the source file + QFile srcFile(srcPath); + if (!srcFile.open(QIODevice::ReadOnly)) { + m_slave->error(KIO::ERR_CANNOT_OPEN_FOR_READING, srcPath); + return; + } + + // Create the file if we are not resuming a parted transfer, + // or if we are not using part files(bResume is false in that case) + NFSFileHandle destFH; + if (!bResume) { + QString createPath; + if (bMarkPartial) { + createPath = partFilePath; + } else { + createPath = destPath; + } + + int rpcStatus; + diropres dirOpRes; + if (!create(createPath, _mode, rpcStatus, dirOpRes)) { + checkForError(rpcStatus, dirOpRes.status, createPath); + return; + } + + destFH = dirOpRes.diropres_u.diropres.file.data; + } else { + // Since we are resuming it's implied that we are using a part file, + // which should exist at this point. + destFH = getFileHandle(partFilePath); + + qCDebug(LOG_KIO_NFS) << "Resuming old transfer"; + } + + // Send the total size to the slave. + m_slave->totalSize(srcFile.size()); + + // Set up write arguments. + char buf[NFS_MAXDATA]; + + writeargs writeArgs; + memset(&writeArgs, 0, sizeof(writeargs)); + destFH.toFH(writeArgs.file); + writeArgs.data.data_val = buf; + writeArgs.beginoffset = 0; + writeArgs.totalcount = 0; + if (bResume) { + writeArgs.offset = resumeOffset; + } else { + writeArgs.offset = 0; + } + + attrstat attrStat; + memset(&attrStat, 0, sizeof(attrstat)); + + bool error = false; + int bytesRead = 0; + do { + bytesRead = srcFile.read(writeArgs.data.data_val, NFS_MAXDATA); + if (bytesRead < 0) { + m_slave->error(KIO::ERR_CANNOT_READ, srcPath); + + error = true; + break; + } + + if (bytesRead > 0) { + writeArgs.data.data_len = bytesRead; + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC_WRITE, + (xdrproc_t) xdr_writeargs, reinterpret_cast(&writeArgs), + (xdrproc_t) xdr_attrstat, reinterpret_cast(&attrStat), + clnt_timeout); + + if (!checkForError(clnt_stat, attrStat.status, destPath)) { + error = true; + break; + } + + writeArgs.offset += bytesRead; + + m_slave->processedSize(writeArgs.offset); + } + } while (bytesRead > 0); + + if (error) { + if (bMarkPartial) { + // Remove the part file if it's smaller than the minimum keep size. + const unsigned int size = m_slave->configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + if (writeArgs.offset < size) { + if (!remove(partFilePath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove part file, ignoring..."; + } + } + } + } else { + // Rename partial file to its original name. + if (bMarkPartial) { + // Remove the destination file(if it exists) + if (!getFileHandle(destPath).isInvalid() && !remove(destPath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove destination file" << destPath << ", ignoring..."; + } + + if (!rename(partFilePath, destPath)) { + qCDebug(LOG_KIO_NFS) << "Failed to rename" << partFilePath << "to" << destPath; + m_slave->error(KIO::ERR_CANNOT_RENAME_PARTIAL, partFilePath); + return; + } + } + + // Restore the mtime on the file. + const QString mtimeStr = m_slave->metaData("modified"); + if (!mtimeStr.isEmpty()) { + QDateTime dt = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dt.isValid()) { + sattr attributes; + memset(&attributes, 0xFF, sizeof(attributes)); + attributes.mtime.seconds = dt.toSecsSinceEpoch(); + attributes.mtime.useconds = attributes.mtime.seconds * 1000000ULL; + + int rpcStatus; + nfsstat attrSetRes; + if (!setAttr(destPath, attributes, rpcStatus, attrSetRes)) { + qCDebug(LOG_KIO_NFS) << "Failed to restore mtime, ignoring..." << rpcStatus << attrSetRes; + } + } + } + + qCDebug(LOG_KIO_NFS) << "Copied" << writeArgs.offset << "bytes of data"; + + m_slave->processedSize(writeArgs.offset); + m_slave->finished(); + } +} + +void NFSProtocolV2::symlink(const QString& target, const QUrl& dest, KIO::JobFlags flags) +{ + const QString destPath(dest.path()); + if (isExportedDir(QFileInfo(destPath).path())) { + m_slave->error(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + if (!getFileHandle(destPath).isInvalid() && (flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + int rpcStatus; + nfsstat res; + if (!symLink(target, destPath, rpcStatus, res)) { + checkForError(rpcStatus, res, destPath); + return; + } + + m_slave->finished(); + +} + + +bool NFSProtocolV2::create(const QString& path, int mode, int& rpcStatus, diropres& result) +{ + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + if (!isConnected()) { + result.status = NFSERR_ACCES; + return false; + } + + const QFileInfo fileInfo(path); + if (isExportedDir(fileInfo.path())) { + result.status = NFSERR_ACCES; + return false; + } + + const NFSFileHandle directoryFH = getFileHandle(fileInfo.path()); + if (directoryFH.isInvalid()) { + result.status = NFSERR_NOENT; + return false; + } + + QByteArray tmpName = QFile::encodeName(fileInfo.fileName()); + + createargs args; + directoryFH.toFH(args.where.dir); + args.where.name = tmpName.data(); + + memset(&args.attributes, 0xFF, sizeof(sattr)); + if (mode == -1) { + args.attributes.mode = 0644; + } else { + args.attributes.mode = mode; + } + args.attributes.uid = geteuid(); + args.attributes.gid = getegid(); + args.attributes.size = 0; + + rpcStatus = clnt_call(m_nfsClient, NFSPROC_CREATE, + (xdrproc_t) xdr_createargs, reinterpret_cast(&args), + (xdrproc_t) xdr_diropres, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result.status == NFS_OK); +} + +bool NFSProtocolV2::getAttr(const QString& path, int& rpcStatus, attrstat& result) +{ + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + if (!isConnected()) { + result.status = NFSERR_ACCES; + return false; + } + + const NFSFileHandle fileFH = getFileHandle(path); + if (fileFH.isInvalid()) { + result.status = NFSERR_NOENT; + return false; + } + + nfs_fh fh; + fileFH.toFH(fh); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC_GETATTR, + (xdrproc_t) xdr_nfs_fh, reinterpret_cast(&fh), + (xdrproc_t) xdr_attrstat, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result.status == NFS_OK); +} + +bool NFSProtocolV2::lookupHandle(const QString& path, int& rpcStatus, diropres& result) +{ + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + if (!isConnected()) { + result.status = NFSERR_ACCES; + return false; + } + + const QFileInfo fileInfo(path); + + const NFSFileHandle parentFH = getFileHandle(fileInfo.path()); + if (parentFH.isInvalid()) { + result.status = NFSERR_NOENT; + return false; + } + + QByteArray tmpName = QFile::encodeName(fileInfo.fileName()); + + diropargs dirargs; + memset(&dirargs, 0, sizeof(diropargs)); + parentFH.toFH(dirargs.dir); + dirargs.name = tmpName.data(); + + memset(&result, 0, sizeof(diropres)); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC_LOOKUP, + (xdrproc_t) xdr_diropargs, reinterpret_cast(&dirargs), + (xdrproc_t) xdr_diropres, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result.status == NFS_OK); +} + +bool NFSProtocolV2::symLinkTarget(const QString& path, int& rpcStatus, readlinkres& result, char* dataBuffer) +{ + const NFSFileHandle fh = getFileHandle(path); + + nfs_fh nfsFH; + if (fh.isLink() && !fh.isBadLink()) { + fh.toFHLink(nfsFH); + } else { + fh.toFH(nfsFH); + } + + result.readlinkres_u.data = dataBuffer; + + rpcStatus = clnt_call(m_nfsClient, NFSPROC_READLINK, + (xdrproc_t) xdr_nfs_fh, reinterpret_cast(&nfsFH), + (xdrproc_t) xdr_readlinkres, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result.status == NFS_OK); +} + +bool NFSProtocolV2::remove(const QString& path) +{ + int rpcStatus; + nfsstat nfsStatus; + + return remove(path, rpcStatus, nfsStatus); +} + +bool NFSProtocolV2::remove(const QString& path, int& rpcStatus, nfsstat& result) +{ + qCDebug(LOG_KIO_NFS) << path; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + if (!isConnected()) { + result = NFSERR_PERM; + return false; + } + + const QFileInfo fileInfo(path); + if (isExportedDir(fileInfo.path())) { + result = NFSERR_ACCES; + return false; + } + + const NFSFileHandle directoryFH = getFileHandle(fileInfo.path()); + if (directoryFH.isInvalid()) { + result = NFSERR_NOENT; + return false; + } + + int rpcLookupStatus; + diropres lookupRes; + if (!lookupHandle(path, rpcLookupStatus, lookupRes)) { + result = NFSERR_NOENT; + return false; + } + + QByteArray tmpName = QFile::encodeName(fileInfo.fileName()); + + diropargs dirargs; + memset(&dirargs, 0, sizeof(diropargs)); + directoryFH.toFH(dirargs.dir); + dirargs.name = tmpName.data(); + + if (lookupRes.diropres_u.diropres.attributes.type != NFDIR) { + rpcStatus = clnt_call(m_nfsClient, NFSPROC_REMOVE, + (xdrproc_t) xdr_diropargs, reinterpret_cast(&dirargs), + (xdrproc_t) xdr_nfsstat, reinterpret_cast(&result), + clnt_timeout); + } else { + rpcStatus = clnt_call(m_nfsClient, NFSPROC_RMDIR, + (xdrproc_t) xdr_diropargs, reinterpret_cast(&dirargs), + (xdrproc_t) xdr_nfsstat, reinterpret_cast(&result), + clnt_timeout); + } + + bool ret = (rpcStatus == RPC_SUCCESS && result == NFS_OK); + if (ret) { + removeFileHandle(path); + } + + return ret; +} + +bool NFSProtocolV2::rename(const QString& src, const QString& dest) +{ + int rpcStatus; + nfsstat result; + + return rename(src, dest, rpcStatus, result); +} + +bool NFSProtocolV2::rename(const QString& src, const QString& dest, int& rpcStatus, nfsstat& result) +{ + qCDebug(LOG_KIO_NFS) << src << dest; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + const QFileInfo srcFileInfo(src); + if (isExportedDir(srcFileInfo.path())) { + result = NFSERR_ACCES; + return false; + } + + const NFSFileHandle srcDirectoryFH = getFileHandle(srcFileInfo.path()); + if (srcDirectoryFH.isInvalid()) { + result = NFSERR_NOENT; + return false; + } + + const QFileInfo destFileInfo(dest); + if (isExportedDir(destFileInfo.path())) { + result = NFSERR_ACCES; + return false; + } + + const NFSFileHandle destDirectoryFH = getFileHandle(destFileInfo.path()); + if (destDirectoryFH.isInvalid()) { + result = NFSERR_NOENT; + return false; + } + + renameargs renameArgs; + memset(&renameArgs, 0, sizeof(renameargs)); + + QByteArray srcByteName = QFile::encodeName(srcFileInfo.fileName()); + srcDirectoryFH.toFH(renameArgs.from.dir); + renameArgs.from.name = srcByteName.data(); + + QByteArray destByteName = QFile::encodeName(destFileInfo.fileName()); + destDirectoryFH.toFH(renameArgs.to.dir); + renameArgs.to.name = destByteName.data(); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC_RENAME, + (xdrproc_t) xdr_renameargs, reinterpret_cast(&renameArgs), + (xdrproc_t) xdr_nfsstat, reinterpret_cast(&result), + clnt_timeout); + + bool ret = (rpcStatus == RPC_SUCCESS && result == NFS_OK); + if (ret) { + // Can we actually find the new handle? + int lookupStatus; + diropres lookupRes; + if (lookupHandle(dest, lookupStatus, lookupRes)) { + // Remove the old file, and add the new one + removeFileHandle(src); + addFileHandle(dest, lookupRes.diropres_u.diropres.file); + } + } + + return ret; +} + +bool NFSProtocolV2::setAttr(const QString& path, const sattr& attributes, int& rpcStatus, nfsstat& result) +{ + qCDebug(LOG_KIO_NFS) << path; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid()) { + result = NFSERR_NOENT; + return false; + } + + sattrargs sAttrArgs; + fh.toFH(sAttrArgs.file); + memcpy(&sAttrArgs.attributes, &attributes, sizeof(attributes)); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC_SETATTR, + (xdrproc_t) xdr_sattrargs, reinterpret_cast(&sAttrArgs), + (xdrproc_t) xdr_nfsstat, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result == NFS_OK); +} + +bool NFSProtocolV2::symLink(const QString& target, const QString& dest, int& rpcStatus, nfsstat& result) +{ + qCDebug(LOG_KIO_NFS) << target << dest; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + // Remove dest first, we don't really care about the return value at this point, + // the symlink call will fail if dest was not removed correctly. + remove(dest); + + + const QFileInfo fileInfo(dest); + if (isExportedDir(fileInfo.path())) { + result = NFSERR_ACCES; + return false; + } + + const NFSFileHandle fh = getFileHandle(fileInfo.path()); + if (fh.isInvalid()) { + result = NFSERR_NOENT; + return false; + } + + QByteArray fromBytes = QFile::encodeName(fileInfo.fileName()); + QByteArray toBytes = QFile::encodeName(target); + + symlinkargs symLinkArgs; + memset(&symLinkArgs, 0, sizeof(symLinkArgs)); + + fh.toFH(symLinkArgs.from.dir); + symLinkArgs.from.name = fromBytes.data(); + symLinkArgs.to = toBytes.data(); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC_SYMLINK, + (xdrproc_t) xdr_symlinkargs, reinterpret_cast(&symLinkArgs), + (xdrproc_t) xdr_nfsstat, reinterpret_cast(&result), + clnt_timeout); + + // Add the new handle to the cache + NFSFileHandle destFH = getFileHandle(dest); + if (!destFH.isInvalid()) { + addFileHandle(dest, destFH); + } + + return (rpcStatus == RPC_SUCCESS && result == NFS_OK); +} + + +void NFSProtocolV2::completeUDSEntry(KIO::UDSEntry& entry, const fattr& attributes) +{ + entry.insert(KIO::UDSEntry::UDS_SIZE, attributes.size); + entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, attributes.mtime.seconds); + entry.insert(KIO::UDSEntry::UDS_ACCESS_TIME, attributes.atime.seconds); + entry.insert(KIO::UDSEntry::UDS_CREATION_TIME, attributes.ctime.seconds); + entry.insert(KIO::UDSEntry::UDS_ACCESS, (attributes.mode & 07777)); + entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, attributes.mode & S_IFMT); // extract file type + + QString str; + + const uid_t uid = attributes.uid; + if (!m_usercache.contains(uid)) { + struct passwd* user = getpwuid(uid); + if (user) { + m_usercache.insert(uid, QString::fromLatin1(user->pw_name)); + str = user->pw_name; + } else { + str = QString::number(uid); + } + } else { + str = m_usercache.value(uid); + } + + entry.insert(KIO::UDSEntry::UDS_USER, str); + + const gid_t gid = attributes.gid; + if (!m_groupcache.contains(gid)) { + struct group* grp = getgrgid(gid); + if (grp) { + m_groupcache.insert(gid, QString::fromLatin1(grp->gr_name)); + str = grp->gr_name; + } else { + str = QString::number(gid); + } + } else { + str = m_groupcache.value(gid); + } + + entry.insert(KIO::UDSEntry::UDS_GROUP, str); +} + +void NFSProtocolV2::completeBadLinkUDSEntry(KIO::UDSEntry& entry, const fattr& attributes) +{ + entry.insert(KIO::UDSEntry::UDS_SIZE, 0LL); + entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, attributes.mtime.seconds); + entry.insert(KIO::UDSEntry::UDS_ACCESS_TIME, attributes.atime.seconds); + entry.insert(KIO::UDSEntry::UDS_CREATION_TIME, attributes.ctime.seconds); + entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFMT - 1); + entry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO); + entry.insert(KIO::UDSEntry::UDS_USER, attributes.uid); + entry.insert(KIO::UDSEntry::UDS_GROUP, attributes.gid); +} diff --git a/nfs/nfsv2.h b/nfs/nfsv2.h new file mode 100644 index 0000000..4c62611 --- /dev/null +++ b/nfs/nfsv2.h @@ -0,0 +1,103 @@ +/* This file is part of the KDE project + Copyright (C) 2000 Alexander Neundorf , + 2014 Mathias Tillman + + 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 KIO_NFSV2_H +#define KIO_NFSV2_H + +#include "kio_nfs.h" + +#define PORTMAP //this seems to be required to compile on Solaris +#include +#include +#include +#include + +class NFSProtocolV2 : public NFSProtocol +{ +public: + explicit NFSProtocolV2(NFSSlave* slave); + ~NFSProtocolV2() override; + + bool isCompatible(bool& connectionError) override; + bool isConnected() const override; + + void openConnection() override; + void closeConnection() override; + + void setHost(const QString& host) override; + + void put(const QUrl& url, int _mode, KIO::JobFlags _flags) override; + void get(const QUrl& url) override; + void listDir(const QUrl& url) override; + void symlink(const QString& target, const QUrl& dest, KIO::JobFlags) override; + void stat(const QUrl& url) override; + void mkdir(const QUrl& url, int permissions) override; + void del(const QUrl& url, bool isfile) override; + void chmod(const QUrl& url, int permissions) override; + void rename(const QUrl& src, const QUrl& dest, KIO::JobFlags flags) override; + +protected: + void copySame(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) override; + void copyFrom(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) override; + void copyTo(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) override; + + NFSFileHandle lookupFileHandle(const QString& path) override; + +private: + bool create(const QString& path, int mode, int& rpcStatus, diropres& result); + + bool getAttr(const QString& path, int& rpcStatus, attrstat& result); + + bool lookupHandle(const QString& path, int& rpcStatus, diropres& result); + + bool symLinkTarget(const QString& path, int& rpcStatus, readlinkres& result, char* dataBuffer); + + // Calls @remove, but with dummy rpcStatus and result arguments + bool remove(const QString& path); + bool remove(const QString& path, int& rpcStatus, nfsstat& result); + + // Calls @rename, but with dummy rpcStatus and result arguments + bool rename(const QString& src, const QString& dest); + bool rename(const QString& src, const QString& dest, int& rpcStatus, nfsstat& result); + + bool setAttr(const QString& path, const sattr& attributes, int& rpcStatus, nfsstat& result); + + bool symLink(const QString& target, const QString& dest, int& rpcStatus, nfsstat& result); + + // UDS helper functions + void completeUDSEntry(KIO::UDSEntry& entry, const fattr& attributes); + void completeBadLinkUDSEntry(KIO::UDSEntry& entry, const fattr& attributes); + + NFSSlave* m_slave; + + QString m_currentHost; + + CLIENT* m_mountClient; + int m_mountSock; + CLIENT* m_nfsClient; + int m_nfsSock; + + timeval clnt_timeout; + + QHash m_usercache; + QHash m_groupcache; +}; + +#endif diff --git a/nfs/nfsv3.cpp b/nfs/nfsv3.cpp new file mode 100644 index 0000000..6ab0c15 --- /dev/null +++ b/nfs/nfsv3.cpp @@ -0,0 +1,2195 @@ +/* This file is part of the KDE project + + Copyright(C) 2000 Alexander Neundorf , + 2014 Mathias Tillman + + 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 "nfsv3.h" + +#include + +#include + +// This is needed on Solaris so that rpc.h defines clnttcp_create etc. +#ifndef PORTMAP +#define PORTMAP +#endif +#include // for rpc calls + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +// This ioslave is for NFS version 3. +#define NFSPROG 100003UL +#define NFSVERS 3UL + +#define NFS3_MAXDATA 32768 +#define NFS3_MAXPATHLEN PATH_MAX + +NFSProtocolV3::NFSProtocolV3(NFSSlave* slave) + : NFSProtocol(slave), + m_slave(slave), + m_mountClient(nullptr), + m_mountSock(-1), + m_nfsClient(nullptr), + m_nfsSock(-1), + m_readBufferSize(0), + m_writeBufferSize(0), + m_readDirSize(0) +{ + qCDebug(LOG_KIO_NFS) << "NFS3::NFS3"; + + clnt_timeout.tv_sec = 20; + clnt_timeout.tv_usec = 0; +} + +NFSProtocolV3::~NFSProtocolV3() +{ + closeConnection(); +} + +bool NFSProtocolV3::isCompatible(bool& connectionError) +{ + qCDebug(LOG_KIO_NFS); + + int ret = -1; + + CLIENT* client = nullptr; + int sock = 0; + if (NFSProtocol::openConnection(m_currentHost, NFSPROG, NFSVERS, client, sock) == 0) { + timeval check_timeout; + check_timeout.tv_sec = 20; + check_timeout.tv_usec = 0; + + // Check if the NFS version is compatible + ret = clnt_call(client, NFSPROC3_NULL, + (xdrproc_t) xdr_void, nullptr, + (xdrproc_t) xdr_void, nullptr, + check_timeout); + + connectionError = false; + } else { + qCDebug(LOG_KIO_NFS) << "openConnection failed"; + connectionError = true; + } + + if (sock != -1) { + ::close(sock); + } + + if (client != nullptr) { + CLNT_DESTROY(client); + } + + qCDebug(LOG_KIO_NFS) << ret; + + return (ret == RPC_SUCCESS); +} + +bool NFSProtocolV3::isConnected() const +{ + return (m_nfsClient != nullptr); +} + +void NFSProtocolV3::closeConnection() +{ + qCDebug(LOG_KIO_NFS); + + // Unmount all exported dirs(if any) + if (m_mountClient != nullptr) { + clnt_call(m_mountClient, MOUNTPROC3_UMNTALL, + (xdrproc_t) xdr_void, nullptr, + (xdrproc_t) xdr_void, nullptr, + clnt_timeout); + } + + if (m_mountSock >= 0) { + ::close(m_mountSock); + m_mountSock = -1; + } + if (m_nfsSock >= 0) { + ::close(m_nfsSock); + m_nfsSock = -1; + } + + if (m_mountClient != nullptr) { + CLNT_DESTROY(m_mountClient); + m_mountClient = nullptr; + } + if (m_nfsClient != nullptr) { + CLNT_DESTROY(m_nfsClient); + m_nfsClient = nullptr; + } +} + +NFSFileHandle NFSProtocolV3::lookupFileHandle(const QString& path) +{ + int rpcStatus; + LOOKUP3res res; + if (lookupHandle(path, rpcStatus, res)) { + NFSFileHandle fh = res.LOOKUP3res_u.resok.object; + + // Is it a link? Get the link target. + if (res.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.type == NF3LNK) { + READLINK3args readLinkArgs; + memset(&readLinkArgs, 0, sizeof(readLinkArgs)); + fh.toFH(readLinkArgs.symlink); + + char dataBuffer[NFS3_MAXPATHLEN]; + + READLINK3res readLinkRes; + memset(&readLinkRes, 0, sizeof(readLinkRes)); + readLinkRes.READLINK3res_u.resok.data = dataBuffer; + + int rpcStatus = clnt_call(m_nfsClient, NFSPROC3_READLINK, + (xdrproc_t) xdr_READLINK3args, reinterpret_cast(&readLinkArgs), + (xdrproc_t) xdr_READLINK3res, reinterpret_cast(&readLinkRes), + clnt_timeout); + + if (rpcStatus == RPC_SUCCESS && readLinkRes.status == NFS3_OK) { + const QString linkDest = QString::fromLocal8Bit(readLinkRes.READLINK3res_u.resok.data); + QString linkPath; + if (QFileInfo(linkDest).isAbsolute()) { + linkPath = linkDest; + } else { + linkPath = QFileInfo(QFileInfo(path).path(), linkDest).absoluteFilePath(); + } + + LOOKUP3res linkRes; + if (lookupHandle(linkPath, rpcStatus, linkRes)) { + // It's a link, so return the target file handle, and add the link source to it. + NFSFileHandle linkFh = linkRes.LOOKUP3res_u.resok.object; + linkFh.setLinkSource(res.LOOKUP3res_u.resok.object); + + qCDebug(LOG_KIO_NFS) << "Found target -" << linkPath; + + return linkFh; + } + } + + // If we have reached this point the file is a link, but we failed to get the target. + fh.setBadLink(); + qCDebug(LOG_KIO_NFS) << path << "is an invalid link!!"; + } + + return fh; + } + + return NFSFileHandle(); +} + +/* Open connection connects to the mount daemon on the server side. + In order to do this it needs authentication and calls auth_unix_create(). + Then it asks the mount daemon for the exported shares. Then it tries + to mount all these shares. If this succeeded for at least one of them, + a client for the nfs daemon is created. + */ +void NFSProtocolV3::openConnection() +{ + qCDebug(LOG_KIO_NFS) << m_currentHost; + + // Destroy the old connection first + closeConnection(); + + int connErr; + if ((connErr = NFSProtocol::openConnection(m_currentHost, MOUNT_PROGRAM, MOUNT_V3, m_mountClient, m_mountSock)) != 0) { + closeConnection(); + m_slave->error(connErr, m_currentHost); + return; + } + + exports3 exportlist; + memset(&exportlist, 0, sizeof(exportlist)); + + int clnt_stat = clnt_call(m_mountClient, MOUNTPROC3_EXPORT, + (xdrproc_t) xdr_void, nullptr, + (xdrproc_t) xdr_exports3, reinterpret_cast(&exportlist), + clnt_timeout); + + if (!checkForError(clnt_stat, 0, m_currentHost.toLatin1())) { + closeConnection(); + return; + } + + int exportsCount = 0; + QStringList failList; + + mountres3 fhStatus; + for (; exportlist != nullptr; exportlist = exportlist->ex_next, exportsCount++) { + memset(&fhStatus, 0, sizeof(fhStatus)); + clnt_stat = clnt_call(m_mountClient, MOUNTPROC3_MNT, + (xdrproc_t) xdr_dirpath3, reinterpret_cast(&exportlist->ex_dir), + (xdrproc_t) xdr_mountres3, reinterpret_cast(&fhStatus), + clnt_timeout); + + if (fhStatus.fhs_status == 0) { + QString fname = QFileInfo(QDir("/"), exportlist->ex_dir).filePath(); + + // Check if the dir is already exported + if (NFSProtocol::isExportedDir(fname)) { + continue; + } + + addFileHandle(fname, static_cast(fhStatus.mountres3_u.mountinfo.fhandle)); + addExportedDir(fname); + } else { + failList.append(exportlist->ex_dir); + } + } + if (failList.size() > 0) { + m_slave->error(KIO::ERR_CANNOT_MOUNT, i18n("Failed to mount %1", failList.join(", "))); + + // All exports failed to mount, fail + if (failList.size() == exportsCount) { + closeConnection(); + return; + } + } + + if ((connErr = NFSProtocol::openConnection(m_currentHost, NFSPROG, NFSVERS, m_nfsClient, m_nfsSock)) != 0) { + closeConnection(); + m_slave->error(connErr, m_currentHost); + } + + m_slave->connected(); + + qCDebug(LOG_KIO_NFS) << "openConnection succeeded"; +} + +void NFSProtocolV3::listDir(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + // We should always be connected if it reaches this point, + // but better safe than sorry! + if (!isConnected()) { + return; + } + + if (url.isEmpty()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, url.path()); + return; + } + + const QString path(url.path()); + + // Is it part of an exported(virtual) dir? + if (isExportedDir(path)) { + qCDebug(LOG_KIO_NFS) << "Listing virtual dir" << path; + + QStringList virtualList; + for (QStringList::const_iterator it = getExportedDirs().constBegin(); it != getExportedDirs().constEnd(); ++it) { + // When an export is multiple levels deep(/mnt/nfs for example) we only + // want to display one level at a time. + QString name = (*it); + name = name.remove(0, path.length()); + if (name.startsWith(QDir::separator())) { + name = name.mid(1); + } + if (name.indexOf(QDir::separator()) != -1) { + name.truncate(name.indexOf(QDir::separator())); + } + + if (!virtualList.contains(name)) { + virtualList.append(name); + } + } + + for (QStringList::const_iterator it = virtualList.constBegin(); it != virtualList.constEnd(); ++it) { + qCDebug(LOG_KIO_NFS) << "Found " << (*it) << "in exported dir"; + + KIO::UDSEntry entry; + entry.insert(KIO::UDSEntry::UDS_NAME, (*it)); + createVirtualDirEntry(entry); + m_slave->listEntry(entry); + } + + m_slave->finished(); + return; + } + + const NFSFileHandle fh = getFileHandle(path); + + // There doesn't seem to be an invalid link error code in KIO, so this will have to do. + if (fh.isInvalid() || fh.isBadLink()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + // Get the preferred read dir size from the server + if (m_readDirSize == 0) { + initPreferredSizes(fh); + } + + READDIRPLUS3args listargs; + memset(&listargs, 0, sizeof(listargs)); + listargs.dircount = m_readDirSize; + listargs.maxcount = sizeof(entryplus3) * m_readDirSize; // Not really sure what this should be set to. + + fh.toFH(listargs.dir); + + READDIRPLUS3res listres; + memset(&listres, 0, sizeof(listres)); + + entryplus3* lastEntry = nullptr; + do { + memset(&listres, 0, sizeof(listres)); + + // In case that we didn't get all entries we need to set the cookie to the last one we actually received. + if (lastEntry != nullptr) { + listargs.cookie = lastEntry->cookie; + } + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC3_READDIRPLUS, + (xdrproc_t) xdr_READDIRPLUS3args, reinterpret_cast(&listargs), + (xdrproc_t) xdr_READDIRPLUS3res, reinterpret_cast(&listres), + clnt_timeout); + + // Not a supported call? Try the old READDIR method. + if (listres.status == NFS3ERR_NOTSUPP) { + listDirCompat(url); + return; + } + + // Do we have an error? There's not much more we can do but to abort at this point. + if (!checkForError(clnt_stat, listres.status, path)) { + return; + } + + for (entryplus3* dirEntry = listres.READDIRPLUS3res_u.resok.reply.entries; dirEntry != nullptr; dirEntry = dirEntry->nextentry) { + if (dirEntry->name == QString(".") || dirEntry->name == QString("..")) { + continue; + } + + const QString& filePath = QFileInfo(QDir(path), dirEntry->name).filePath(); + + KIO::UDSEntry entry; + entry.insert(KIO::UDSEntry::UDS_NAME, dirEntry->name); + + // Is it a symlink ? + if (dirEntry->name_attributes.post_op_attr_u.attributes.type == NF3LNK) { + int rpcStatus; + READLINK3res readLinkRes; + char nameBuf[NFS3_MAXPATHLEN]; + if (symLinkTarget(filePath, rpcStatus, readLinkRes, nameBuf)) { + QString linkDest = QString::fromLocal8Bit(readLinkRes.READLINK3res_u.resok.data); + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + + bool badLink = true; + NFSFileHandle linkFH; + if (isValidLink(path, linkDest)) { + QString linkPath; + if (QFileInfo(linkDest).isAbsolute()) { + linkPath = linkDest; + } else { + linkPath = QFileInfo(path, linkDest).absoluteFilePath(); + } + + int rpcStatus; + LOOKUP3res lookupRes; + if (lookupHandle(linkPath, rpcStatus, lookupRes)) { + GETATTR3res attrAndStat; + if (getAttr(linkPath, rpcStatus, attrAndStat)) { + badLink = false; + + linkFH = lookupRes.LOOKUP3res_u.resok.object; + linkFH.setLinkSource(dirEntry->name_handle.post_op_fh3_u.handle); + + completeUDSEntry(entry, attrAndStat.GETATTR3res_u.resok.obj_attributes); + } + } + } + + if (badLink) { + linkFH = dirEntry->name_handle.post_op_fh3_u.handle; + linkFH.setBadLink(); + + completeBadLinkUDSEntry(entry, dirEntry->name_attributes.post_op_attr_u.attributes); + } + + addFileHandle(filePath, linkFH); + } else { + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, i18n("Unknown target")); + completeBadLinkUDSEntry(entry, dirEntry->name_attributes.post_op_attr_u.attributes); + } + } else { + addFileHandle(filePath, static_cast(dirEntry->name_handle.post_op_fh3_u.handle)); + + completeUDSEntry(entry, dirEntry->name_attributes.post_op_attr_u.attributes); + } + + m_slave->listEntry(entry); + + lastEntry = dirEntry; + } + } while (listres.READDIRPLUS3res_u.resok.reply.entries != nullptr && !listres.READDIRPLUS3res_u.resok.reply.eof); + + m_slave->finished(); +} + +void NFSProtocolV3::listDirCompat(const QUrl& url) +{ + // We should always be connected if it reaches this point, + // but better safe than sorry! + if (!isConnected()) { + return; + } + + if (url.isEmpty()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, url.path()); + } + + const QString path(url.path()); + + // Is it part of an exported (virtual) dir? + if (NFSProtocol::isExportedDir(path)) { + QStringList virtualList; + for (QStringList::const_iterator it = getExportedDirs().constBegin(); it != getExportedDirs().constEnd(); ++it) { + // When an export is multiple levels deep(mnt/nfs for example) we only + // want to display one level at a time. + QString name = (*it); + name = name.remove(0, path.length()); + if (name.startsWith('/')) { + name = name.mid(1); + } + if (name.indexOf('/') != -1) { + name.truncate(name.indexOf('/')); + } + + if (!virtualList.contains(name)) { + virtualList.append(name); + } + } + + for (QStringList::const_iterator it = virtualList.constBegin(); it != virtualList.constEnd(); ++it) { + qCDebug(LOG_KIO_NFS) << "Found " << (*it) << "in exported dir"; + + KIO::UDSEntry entry; + entry.insert(KIO::UDSEntry::UDS_NAME, (*it)); + createVirtualDirEntry(entry); + m_slave->listEntry(entry); + } + + m_slave->finished(); + return; + } + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid() || fh.isBadLink()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + QStringList filesToList; + + READDIR3args listargs; + memset(&listargs, 0, sizeof(listargs)); + listargs.count = m_readDirSize; + fh.toFH(listargs.dir); + + READDIR3res listres; + entry3* lastEntry = nullptr; + do { + memset(&listres, 0, sizeof(listres)); + + // In case that we didn't get all entries we need to set the cookie to the last one we actually received + if (lastEntry != nullptr) { + listargs.cookie = lastEntry->cookie; + } + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC3_READDIR, + (xdrproc_t) xdr_READDIR3args, reinterpret_cast(&listargs), + (xdrproc_t) xdr_READDIR3res, reinterpret_cast(&listres), + clnt_timeout); + + if (!checkForError(clnt_stat, listres.status, path)) { + return; + } + + for (entry3* dirEntry = listres.READDIR3res_u.resok.reply.entries; dirEntry != nullptr; dirEntry = dirEntry->nextentry) { + if (dirEntry->name != QString(".") && dirEntry->name != QString("..")) { + filesToList.append(QFile::decodeName(dirEntry->name)); + } + + lastEntry = dirEntry; + } + } while (!listres.READDIR3res_u.resok.reply.eof); + + // Loop through all files, getting attributes and link path. + KIO::UDSEntry entry; + for (QStringList::const_iterator it = filesToList.constBegin(); it != filesToList.constEnd(); ++it) { + QString filePath = QFileInfo(QDir(path), (*it)).filePath(); + + int rpcStatus; + LOOKUP3res dirres; + if (!lookupHandle(filePath, rpcStatus, dirres)) { + qCDebug(LOG_KIO_NFS) << "Failed to lookup" << filePath << ", rpc:" << rpcStatus << ", nfs:" << dirres.status; + // Try the next file instead of aborting + continue; + } + + entry.clear(); + entry.insert(KIO::UDSEntry::UDS_NAME, (*it)); + + // Is it a symlink? + if (dirres.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.type == NF3LNK) { + int rpcStatus; + READLINK3res readLinkRes; + char nameBuf[NFS3_MAXPATHLEN]; + if (symLinkTarget(filePath, rpcStatus, readLinkRes, nameBuf)) { + const QString linkDest = QString::fromLocal8Bit(readLinkRes.READLINK3res_u.resok.data); + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + + bool badLink = true; + NFSFileHandle linkFH; + if (isValidLink(path, linkDest)) { + QString linkPath; + if (QFileInfo(linkDest).isAbsolute()) { + linkPath = linkDest; + } else { + linkPath = QFileInfo(path, linkDest).absoluteFilePath(); + } + + int rpcStatus; + LOOKUP3res lookupRes; + if (lookupHandle(linkPath, rpcStatus, lookupRes)) { + GETATTR3res attrAndStat; + if (getAttr(linkPath, rpcStatus, attrAndStat)) { + badLink = false; + + linkFH = lookupRes.LOOKUP3res_u.resok.object; + linkFH.setLinkSource(dirres.LOOKUP3res_u.resok.object); + + completeUDSEntry(entry, attrAndStat.GETATTR3res_u.resok.obj_attributes); + } + } + } + + if (badLink) { + linkFH = dirres.LOOKUP3res_u.resok.object; + linkFH.setBadLink(); + + completeBadLinkUDSEntry(entry, dirres.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes); + } + + addFileHandle(filePath, linkFH); + } else { + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, i18n("Unknown target")); + completeBadLinkUDSEntry(entry, dirres.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes); + } + } else { + addFileHandle(filePath, dirres.LOOKUP3res_u.resok.object); + + completeUDSEntry(entry, dirres.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes); + } + + m_slave->listEntry(entry); + } + + m_slave->finished(); +} + +void NFSProtocolV3::stat(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + + // We can't stat an exported dir, but we know it's a dir. + if (isExportedDir(path)) { + KIO::UDSEntry entry; + + entry.insert(KIO::UDSEntry::UDS_NAME, path); + createVirtualDirEntry(entry); + + m_slave->statEntry(entry); + m_slave->finished(); + return; + } + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid()) { + qCDebug(LOG_KIO_NFS) << "File handle is invalid"; + m_slave->error(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + int rpcStatus; + GETATTR3res attrAndStat; + if (!getAttr(path, rpcStatus, attrAndStat)) { + checkForError(rpcStatus, attrAndStat.status, path); + return; + } + + const QFileInfo fileInfo(path); + + KIO::UDSEntry entry; + entry.insert(KIO::UDSEntry::UDS_NAME, fileInfo.fileName()); + + // Is it a symlink? + if (attrAndStat.GETATTR3res_u.resok.obj_attributes.type == NF3LNK) { + qCDebug(LOG_KIO_NFS) << "It's a symlink"; + + //get the link dest + QString linkDest; + + int rpcStatus; + READLINK3res readLinkRes; + char nameBuf[NFS3_MAXPATHLEN]; + if (symLinkTarget(path, rpcStatus, readLinkRes, nameBuf)) { + linkDest = QString::fromLocal8Bit(readLinkRes.READLINK3res_u.resok.data); + } else { + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + completeBadLinkUDSEntry(entry, attrAndStat.GETATTR3res_u.resok.obj_attributes); + + m_slave->statEntry(entry); + m_slave->finished(); + return; + } + + qCDebug(LOG_KIO_NFS) << "link dest is" << linkDest; + + entry.insert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + + if (!isValidLink(fileInfo.path(), linkDest)) { + completeBadLinkUDSEntry(entry, attrAndStat.GETATTR3res_u.resok.obj_attributes); + } else { + QString linkPath; + if (QFileInfo(linkDest).isAbsolute()) { + linkPath = linkDest; + } else { + linkPath = QFileInfo(fileInfo.path(), linkDest).absoluteFilePath(); + } + + int rpcStatus; + GETATTR3res attrAndStat; + if (!getAttr(linkPath, rpcStatus, attrAndStat)) { + checkForError(rpcStatus, attrAndStat.status, linkPath); + return; + } + + completeUDSEntry(entry, attrAndStat.GETATTR3res_u.resok.obj_attributes); + } + } else { + completeUDSEntry(entry, attrAndStat.GETATTR3res_u.resok.obj_attributes); + } + + m_slave->statEntry(entry); + m_slave->finished(); +} + +void NFSProtocolV3::setHost(const QString& host) +{ + qCDebug(LOG_KIO_NFS) << host; + + if (host.isEmpty()) { + m_slave->error(KIO::ERR_UNKNOWN_HOST, QString()); + return; + } + + // No need to update if the host hasn't changed + if (host == m_currentHost) { + return; + } + + m_currentHost = host; + closeConnection(); +} + +void NFSProtocolV3::mkdir(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + + const QFileInfo fileInfo(path); + if (isExportedDir(fileInfo.path())) { + m_slave->error(KIO::ERR_ACCESS_DENIED, path); + return; + } + + const NFSFileHandle fh = getFileHandle(fileInfo.path()); + if (fh.isInvalid() || fh.isBadLink()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + MKDIR3args createArgs; + memset(&createArgs, 0, sizeof(createArgs)); + fh.toFH(createArgs.where.dir); + + QByteArray tmpName = QFile::encodeName(fileInfo.fileName()); + createArgs.where.name = tmpName.data(); + + createArgs.attributes.mode.set_it = true; + if (permissions == -1) { + createArgs.attributes.mode.set_mode3_u.mode = 0755; + } else { + createArgs.attributes.mode.set_mode3_u.mode = permissions; + } + + MKDIR3res dirres; + memset(&dirres, 0, sizeof(dirres)); + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC3_MKDIR, + (xdrproc_t) xdr_MKDIR3args, reinterpret_cast(&createArgs), + (xdrproc_t) xdr_MKDIR3res, reinterpret_cast(&dirres), + clnt_timeout); + + if (!checkForError(clnt_stat, dirres.status, path)) { + return; + } + + m_slave->finished(); +} + +void NFSProtocolV3::del(const QUrl& url, bool/* isfile*/) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + + if (isExportedDir(QFileInfo(path).path())) { + m_slave->error(KIO::ERR_ACCESS_DENIED, path); + return; + } + + int rpcStatus; + REMOVE3res res; + if (!remove(path, rpcStatus, res)) { + checkForError(rpcStatus, res.status, path); + return; + } + + m_slave->finished(); +} + +void NFSProtocolV3::chmod(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + if (isExportedDir(path)) { + m_slave->error(KIO::ERR_ACCESS_DENIED, path); + return; + } + + sattr3 attributes; + memset(&attributes, 0, sizeof(attributes)); + attributes.mode.set_it = true; + attributes.mode.set_mode3_u.mode = permissions; + + int rpcStatus; + SETATTR3res setAttrRes; + if (!setAttr(path, attributes, rpcStatus, setAttrRes)) { + checkForError(rpcStatus, setAttrRes.status, path); + return; + } + + m_slave->finished(); +} + +void NFSProtocolV3::get(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid() || fh.isBadLink()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + // Get the optimal read buffer size. + if (m_readBufferSize == 0) { + initPreferredSizes(fh); + } + + READ3args readArgs; + memset(&readArgs, 0, sizeof(readArgs)); + fh.toFH(readArgs.file); + readArgs.offset = 0; + readArgs.count = m_readBufferSize; + + READ3res readRes; + memset(&readRes, 0, sizeof(readRes)); + readRes.READ3res_u.resok.data.data_len = m_readBufferSize; + readRes.READ3res_u.resok.data.data_val = new char[m_readBufferSize]; + + // Most likely indicates out of memory + if (!readRes.READ3res_u.resok.data.data_val) { + m_slave->error(KIO::ERR_OUT_OF_MEMORY, path); + return; + } + + bool validRead = false; + bool hasError = false; + int read = 0; + QByteArray readBuffer; + do { + int clnt_stat = clnt_call(m_nfsClient, NFSPROC3_READ, + (xdrproc_t) xdr_READ3args, reinterpret_cast(&readArgs), + (xdrproc_t) xdr_READ3res, reinterpret_cast(&readRes), + clnt_timeout); + + // We are trying to read a directory, fail quietly + if (readRes.status == NFS3ERR_ISDIR) { + break; + } + + if (!checkForError(clnt_stat, readRes.status, path)) { + hasError = true; + break; + } + + read = readRes.READ3res_u.resok.count; + readBuffer.setRawData(readRes.READ3res_u.resok.data.data_val, read); + + if (readArgs.offset == 0) { + const QMimeDatabase db; + const QMimeType type = db.mimeTypeForFileNameAndData(url.fileName(), readBuffer); + m_slave->mimeType(type.name()); + + m_slave->totalSize(readRes.READ3res_u.resok.file_attributes.post_op_attr_u.attributes.size); + } + + readArgs.offset += read; + if (read > 0) { + validRead = true; + + m_slave->data(readBuffer); + m_slave->processedSize(readArgs.offset); + } + + } while (read > 0); + + if (readRes.READ3res_u.resok.data.data_val != nullptr) { + delete [] readRes.READ3res_u.resok.data.data_val; + } + + // Only send the read data to the slave if we have actually sent some. + if (validRead) { + m_slave->data(QByteArray()); + m_slave->processedSize(readArgs.offset); + } + + if (!hasError) { + m_slave->finished(); + } +} + +void NFSProtocolV3::put(const QUrl& url, int _mode, KIO::JobFlags flags) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString destPath(url.path()); + + if (isExportedDir(QFileInfo(destPath).path())) { + m_slave->error(KIO::ERR_WRITE_ACCESS_DENIED, destPath); + return; + } + + NFSFileHandle destFH = getFileHandle(destPath); + if (destFH.isBadLink()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, destPath); + return; + } + + // the file exists and we don't want to overwrite + if (!destFH.isInvalid() && ((flags & KIO::Overwrite) == 0)) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + // Get the optimal write buffer size + if (m_writeBufferSize == 0) { + initPreferredSizes(destFH); + } + + int rpcStatus; + CREATE3res createRes; + if (!create(destPath, _mode, rpcStatus, createRes)) { + checkForError(rpcStatus, createRes.status, destPath); + return; + } + + // We created the file successfully. + destFH = createRes.CREATE3res_u.resok.obj.post_op_fh3_u.handle; + + int result; + + WRITE3args writeArgs; + memset(&writeArgs, 0, sizeof(writeArgs)); + + destFH.toFH(writeArgs.file); + writeArgs.offset = 0; + writeArgs.stable = FILE_SYNC; + + WRITE3res writeRes; + memset(&writeRes, 0, sizeof(writeRes)); + + // Loop until we get 0 (end of data). + int bytesWritten = 0; + bool error = false; + do { + QByteArray buffer; + m_slave->dataReq(); + result = m_slave->readData(buffer); + + if (result > 0) { + char* data = buffer.data(); + uint32 bytesToWrite = buffer.size(); + int writeNow(0); + + do { + if (bytesToWrite > m_writeBufferSize) { + writeNow = m_writeBufferSize; + } else { + writeNow = bytesToWrite; + } + + writeArgs.data.data_val = data; + writeArgs.data.data_len = writeNow; + writeArgs.count = writeNow; + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC3_WRITE, + (xdrproc_t) xdr_WRITE3args, reinterpret_cast(&writeArgs), + (xdrproc_t) xdr_WRITE3res, reinterpret_cast(&writeRes), + clnt_timeout); + + if (!checkForError(clnt_stat, writeRes.status, destPath)) { + error = true; + break; + } + + writeNow = writeRes.WRITE3res_u.resok.count; + + bytesWritten += writeNow; + writeArgs.offset = bytesWritten; + + data = data + writeNow; + bytesToWrite -= writeNow; + } while (bytesToWrite > 0); + } + + if (error) { + break; + } + } while (result > 0); + + if (!error) { + m_slave->finished(); + } +} + +void NFSProtocolV3::rename(const QUrl& src, const QUrl& dest, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS) << src << dest; + + const QString srcPath(src.path()); + if (isExportedDir(srcPath)) { + m_slave->error(KIO::ERR_CANNOT_RENAME, srcPath); + return; + } + + const QString destPath(dest.path()); + if (isExportedDir(destPath)) { + m_slave->error(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + int rpcStatus; + RENAME3res res; + if (!rename(srcPath, destPath, rpcStatus, res)) { + checkForError(rpcStatus, res.status, destPath); + return; + } + + m_slave->finished(); +} + +void NFSProtocolV3::copySame(const QUrl& src, const QUrl& dest, int _mode, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS) << src << "to" << dest; + + const QString srcPath(src.path()); + + if (isExportedDir(QFileInfo(srcPath).path())) { + m_slave->error(KIO::ERR_ACCESS_DENIED, srcPath); + return; + } + + const NFSFileHandle srcFH = getFileHandle(srcPath); + if (srcFH.isInvalid()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath(dest.path()); + + if (isExportedDir(QFileInfo(destPath).path())) { + m_slave->error(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + // The file exists and we don't want to overwrite + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + // Is it a link? No need to copy the data then, just copy the link destination. + if (srcFH.isLink()) { + //get the link dest + int rpcStatus; + READLINK3res readLinkRes; + char nameBuf[NFS3_MAXPATHLEN]; + if (!symLinkTarget(srcPath, rpcStatus, readLinkRes, nameBuf)) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString linkPath = QString::fromLocal8Bit(readLinkRes.READLINK3res_u.resok.data); + + SYMLINK3res linkRes; + if (!symLink(linkPath, destPath, rpcStatus, linkRes)) { + checkForError(rpcStatus, linkRes.status, linkPath); + return; + } + + m_slave->finished(); + return; + } + + unsigned long resumeOffset = 0; + bool bResume = false; + const QString partFilePath = destPath + QLatin1String(".part"); + const NFSFileHandle partFH = getFileHandle(partFilePath); + const bool bPartExists = !partFH.isInvalid(); + const bool bMarkPartial = m_slave->configValue(QStringLiteral("MarkPartial"), true); + + if (bPartExists) { + int rpcStatus; + LOOKUP3res partRes; + if (lookupHandle(partFilePath, rpcStatus, partRes)) { + if (bMarkPartial && partRes.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.size > 0) { + if (partRes.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.type == NF3DIR) { + m_slave->error(KIO::ERR_IS_DIRECTORY, partFilePath); + return; + } + + bResume = m_slave->canResume(partRes.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.size); + if (bResume) { + resumeOffset = partRes.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.size; + } + } + } + + // Remove the part file if we are not resuming + if (!bResume) { + if (!remove(partFilePath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove part file, ignoring..."; + } + } + } + + // Create the file if we are not resuming a parted transfer, + // or if we are not using part files(bResume is false in that case) + NFSFileHandle destFH; + if (!bResume) { + QString createPath; + if (bMarkPartial) { + createPath = partFilePath; + } else { + createPath = destPath; + } + + int rpcStatus; + CREATE3res createRes; + if (!create(createPath, _mode, rpcStatus, createRes)) { + checkForError(rpcStatus, createRes.status, createPath); + return; + } + + destFH = createRes.CREATE3res_u.resok.obj.post_op_fh3_u.handle; + } else { + // Since we are resuming it's implied that we are using a part file, + // which should exist at this point. + destFH = getFileHandle(partFilePath); + + qCDebug(LOG_KIO_NFS) << "Resuming old transfer"; + } + + // Check what buffer size we should use, always use the smallest one. + const int bufferSize = (m_readBufferSize < m_writeBufferSize) ? m_readBufferSize : m_writeBufferSize; + + WRITE3args writeArgs; + memset(&writeArgs, 0, sizeof(writeArgs)); + + destFH.toFH(writeArgs.file); + writeArgs.offset = 0; + writeArgs.data.data_val = new char[bufferSize]; + writeArgs.stable = FILE_SYNC; + + READ3args readArgs; + memset(&readArgs, 0, sizeof(readArgs)); + + srcFH.toFH(readArgs.file); + readArgs.offset = 0; + readArgs.count = bufferSize; + + if (bResume) { + writeArgs.offset = resumeOffset; + readArgs.offset = resumeOffset; + } + + READ3res readRes; + readRes.READ3res_u.resok.data.data_val = writeArgs.data.data_val; + + WRITE3res writeRes; + memset(&writeRes, 0, sizeof(WRITE3res)); + + bool error = false; + int bytesRead = 0; + do { + int clnt_stat = clnt_call(m_nfsClient, NFSPROC3_READ, + (xdrproc_t) xdr_READ3args, reinterpret_cast(&readArgs), + (xdrproc_t) xdr_READ3res, reinterpret_cast(&readRes), + clnt_timeout); + + if (!checkForError(clnt_stat, readRes.status, srcPath)) { + error = true; + break; + } + + bytesRead = readRes.READ3res_u.resok.data.data_len; + + // We should only send out the total size and mimetype at the start of the transfer + if (readArgs.offset == 0 || (bResume && writeArgs.offset == resumeOffset)) { + QMimeDatabase db; + QMimeType type = db.mimeTypeForFileNameAndData(src.fileName(), QByteArray::fromRawData(writeArgs.data.data_val, bytesRead)); + m_slave->mimeType(type.name()); + + m_slave->totalSize(readRes.READ3res_u.resok.file_attributes.post_op_attr_u.attributes.size); + } + + if (bytesRead > 0) { + readArgs.offset += bytesRead; + + writeArgs.count = bytesRead; + writeArgs.data.data_len = bytesRead; + + clnt_stat = clnt_call(m_nfsClient, NFSPROC3_WRITE, + (xdrproc_t) xdr_WRITE3args, reinterpret_cast(&writeArgs), + (xdrproc_t) xdr_WRITE3res, reinterpret_cast(&writeRes), + clnt_timeout); + + if (!checkForError(clnt_stat, writeRes.status, destPath)) { + error = true; + break; + } + + writeArgs.offset += bytesRead; + + m_slave->processedSize(readArgs.offset); + } + } while (bytesRead > 0); + + delete [] writeArgs.data.data_val; + + if (error) { + if (bMarkPartial) { + // Remove the part file if it's smaller than the minimum keep size. + const unsigned int size = m_slave->configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + if (writeArgs.offset < size) { + if (!remove(partFilePath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove part file, ignoring..."; + } + } + } + } else { + // Rename partial file to its original name. + if (bMarkPartial) { + // Remove the destination file(if it exists) + if (!getFileHandle(destPath).isInvalid() && !remove(destPath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove destination file" << destPath << ", ignoring..."; + } + + if (!rename(partFilePath, destPath)) { + qCDebug(LOG_KIO_NFS) << "failed to rename" << partFilePath << "to" << destPath; + m_slave->error(KIO::ERR_CANNOT_RENAME_PARTIAL, partFilePath); + return; + } + } + + // Restore modification time + int rpcStatus; + GETATTR3res attrRes; + if (getAttr(srcPath, rpcStatus, attrRes)) { + sattr3 attributes; + memset(&attributes, 0, sizeof(attributes)); + attributes.mtime.set_it = SET_TO_CLIENT_TIME; + attributes.mtime.set_mtime_u.mtime.seconds = attrRes.GETATTR3res_u.resok.obj_attributes.mtime.seconds; + attributes.mtime.set_mtime_u.mtime.nseconds = attrRes.GETATTR3res_u.resok.obj_attributes.mtime.nseconds; + + SETATTR3res attrSetRes; + if (!setAttr(destPath, attributes, rpcStatus, attrSetRes)) { + qCDebug(LOG_KIO_NFS) << "Failed to restore mtime, ignoring..." << rpcStatus << attrSetRes.status; + } + } + + qCDebug(LOG_KIO_NFS) << "Copied" << writeArgs.offset << "bytes of data"; + + m_slave->processedSize(readArgs.offset); + m_slave->finished(); + } +} + +void NFSProtocolV3::copyFrom(const QUrl& src, const QUrl& dest, int _mode, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS) << src << "to" << dest; + + const QString srcPath(src.path()); + + const NFSFileHandle srcFH = getFileHandle(srcPath); + if (srcFH.isInvalid()) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath(dest.path()); + + // The file exists and we don't want to overwrite. + if (QFile::exists(destPath) && (_flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + // Is it a link? No need to copy the data then, just copy the link destination. + if (srcFH.isLink()) { + qCDebug(LOG_KIO_NFS) << "Is a link"; + + //get the link dest + int rpcStatus; + READLINK3res readLinkRes; + char nameBuf[NFS3_MAXPATHLEN]; + if (!symLinkTarget(srcPath, rpcStatus, readLinkRes, nameBuf)) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + QFile::link(QString::fromLocal8Bit(readLinkRes.READLINK3res_u.resok.data), destPath); + + m_slave->finished(); + return; + } + + if (m_readBufferSize == 0) { + initPreferredSizes(srcFH); + } + + unsigned int resumeOffset = 0; + bool bResume = false; + const QFileInfo partInfo(destPath + QLatin1String(".part")); + const bool bPartExists = partInfo.exists(); + const bool bMarkPartial = m_slave->configValue(QStringLiteral("MarkPartial"), true); + + if (bMarkPartial && bPartExists && partInfo.size() > 0) { + if (partInfo.isDir()) { + m_slave->error(KIO::ERR_IS_DIRECTORY, partInfo.absoluteFilePath()); + return; + } + + bResume = m_slave->canResume(partInfo.size()); + resumeOffset = partInfo.size(); + } + + if (bPartExists && !bResume) { + QFile::remove(partInfo.absoluteFilePath()); + } + + QFile::OpenMode openMode; + QString outFileName; + if (bResume) { + outFileName = partInfo.absoluteFilePath(); + openMode = QFile::WriteOnly | QFile::Append; + } else { + outFileName = (bMarkPartial ? partInfo.absoluteFilePath() : destPath); + openMode = QFile::WriteOnly | QFile::Truncate; + } + + QFile destFile(outFileName); + if (!bResume) { + QFile::Permissions perms; + if (_mode == -1) { + perms = QFile::ReadOwner | QFile::WriteOwner; + } else { + perms = KIO::convertPermissions(_mode | QFile::WriteOwner); + } + + destFile.setPermissions(perms); + } + + if (!destFile.open(openMode)) { + switch (destFile.error()) { + case QFile::OpenError: + if (bResume) { + m_slave->error(KIO::ERR_CANNOT_RESUME, destPath); + } else { + m_slave->error(KIO::ERR_CANNOT_OPEN_FOR_WRITING, destPath); + } + break; + case QFile::PermissionsError: + m_slave->error(KIO::ERR_WRITE_ACCESS_DENIED, destPath); + break; + default: + m_slave->error(KIO::ERR_CANNOT_OPEN_FOR_WRITING, destPath); + break; + } + return; + } + + READ3args readArgs; + srcFH.toFH(readArgs.file); + if (bResume) { + readArgs.offset = resumeOffset; + } else { + readArgs.offset = 0; + } + readArgs.count = m_readBufferSize; + + READ3res readRes; + memset(&readRes, 0, sizeof(readres)); + readRes.READ3res_u.resok.data.data_val = new char[m_readBufferSize]; + readRes.READ3res_u.resok.data.data_len = m_readBufferSize; + + bool error = false; + unsigned long bytesToRead = 0, bytesRead = 0; + do { + int clnt_stat = clnt_call(m_nfsClient, NFSPROC3_READ, + (xdrproc_t) xdr_READ3args, reinterpret_cast(&readArgs), + (xdrproc_t) xdr_READ3res, reinterpret_cast(&readRes), + clnt_timeout); + + if (!checkForError(clnt_stat, readRes.status, destPath)) { + error = true; + break; + } + + bytesRead = readRes.READ3res_u.resok.count; + + if (readArgs.offset == 0 || (bResume && readArgs.offset == resumeOffset)) { + bytesToRead = readRes.READ3res_u.resok.file_attributes.post_op_attr_u.attributes.size; + + m_slave->totalSize(bytesToRead); + + QMimeDatabase db; + QMimeType type = db.mimeTypeForFileNameAndData(src.fileName(), QByteArray::fromRawData(readRes.READ3res_u.resok.data.data_val, bytesRead)); + m_slave->mimeType(type.name()); + } + + if (bytesRead > 0) { + readArgs.offset += bytesRead; + + if (destFile.write(readRes.READ3res_u.resok.data.data_val, bytesRead) < 0) { + m_slave->error(KIO::ERR_CANNOT_WRITE, destPath); + + error = true; + break; + } + + m_slave->processedSize(readArgs.offset); + } + } while (readArgs.offset < bytesToRead); + + delete [] readRes.READ3res_u.resok.data.data_val; + + // Close the file so we can modify the modification time later. + destFile.close(); + + if (error) { + if (bMarkPartial) { + // Remove the part file if it's smaller than the minimum keep + const int size = m_slave->configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + if (partInfo.size() < size) { + QFile::remove(partInfo.absoluteFilePath()); + } + } + } else { + // Rename partial file to its original name. + if (bMarkPartial) { + const QString sPart = partInfo.absoluteFilePath(); + if (QFile::exists(destPath)) { + QFile::remove(destPath); + } + if (!QFile::rename(sPart, destPath)) { + qCDebug(LOG_KIO_NFS) << "failed to rename" << sPart << "to" << destPath; + m_slave->error(KIO::ERR_CANNOT_RENAME_PARTIAL, sPart); + return; + } + } + + // Restore the mtime on the file. + const QString mtimeStr = m_slave->metaData("modified"); + if (!mtimeStr.isEmpty()) { + QDateTime dt = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dt.isValid()) { + struct utimbuf utbuf; + utbuf.actime = QFileInfo(destPath).lastRead().toSecsSinceEpoch(); // access time, unchanged + utbuf.modtime = dt.toSecsSinceEpoch(); // modification time + utime(QFile::encodeName(destPath).constData(), &utbuf); + } + } + + qCDebug(LOG_KIO_NFS) << "Copied" << readArgs.offset << "bytes of data"; + + m_slave->processedSize(readArgs.offset); + m_slave->finished(); + } +} + +void NFSProtocolV3::copyTo(const QUrl& src, const QUrl& dest, int _mode, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS) << src << "to" << dest; + + // The source does not exist, how strange + const QString srcPath(src.path()); + if (!QFile::exists(srcPath)) { + m_slave->error(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath(dest.path()); + if (isExportedDir(QFileInfo(destPath).path())) { + m_slave->error(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + // The file exists and we don't want to overwrite. + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + // Is it a link? No need to copy the data then, just copy the link destination. + const QString symlinkTarget = QFile::symLinkTarget(srcPath); + if (!symlinkTarget.isEmpty()) { + int rpcStatus; + SYMLINK3res linkRes; + if (!symLink(symlinkTarget, destPath, rpcStatus, linkRes)) { + checkForError(rpcStatus, linkRes.status, symlinkTarget); + return; + } + + m_slave->finished(); + return; + } + + unsigned long resumeOffset = 0; + bool bResume = false; + const QString partFilePath = destPath + QLatin1String(".part"); + const NFSFileHandle partFH = getFileHandle(partFilePath); + const bool bPartExists = !partFH.isInvalid(); + const bool bMarkPartial = m_slave->configValue(QStringLiteral("MarkPartial"), true); + + if (bPartExists) { + int rpcStatus; + LOOKUP3res partRes; + if (lookupHandle(partFilePath, rpcStatus, partRes)) { + if (bMarkPartial && partRes.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.size > 0) { + if (partRes.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.type == NF3DIR) { + m_slave->error(KIO::ERR_IS_DIRECTORY, partFilePath); + return; + } + + bResume = m_slave->canResume(partRes.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.size); + if (bResume) { + resumeOffset = partRes.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.size; + } + } + } + + // Remove the part file if we are not resuming + if (!bResume) { + if (!remove(partFilePath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove part file, ignoring..."; + } + } + } + + // Open the source file + QFile srcFile(srcPath); + if (!srcFile.open(QIODevice::ReadOnly)) { + m_slave->error(KIO::ERR_CANNOT_OPEN_FOR_READING, srcPath); + return; + } + + // Create the file if we are not resuming a parted transfer, + // or if we are not using part files (bResume is false in that case) + NFSFileHandle destFH; + if (!bResume) { + QString createPath; + if (bMarkPartial) { + createPath = partFilePath; + } else { + createPath = destPath; + } + + int rpcStatus; + CREATE3res createRes; + if (!create(createPath, _mode, rpcStatus, createRes)) { + checkForError(rpcStatus, createRes.status, createPath); + return; + } + + destFH = createRes.CREATE3res_u.resok.obj.post_op_fh3_u.handle; + } else { + // Since we are resuming it's implied that we are using a part file, + // which should exist at this point. + destFH = getFileHandle(partFilePath); + + qCDebug(LOG_KIO_NFS) << "Resuming old transfer"; + } + + // Send the total size to the slave. + m_slave->totalSize(srcFile.size()); + + // Get the optimal write buffer size + if (m_writeBufferSize == 0) { + initPreferredSizes(destFH); + } + + // Set up write arguments. + WRITE3args writeArgs; + memset(&writeArgs, 0, sizeof(writeArgs)); + destFH.toFH(writeArgs.file); + writeArgs.data.data_val = new char[m_writeBufferSize]; + writeArgs.stable = FILE_SYNC; + if (bResume) { + writeArgs.offset = resumeOffset; + } else { + writeArgs.offset = 0; + } + + WRITE3res writeRes; + memset(&writeRes, 0 , sizeof(writeRes)); + + bool error = false; + int bytesRead = 0; + do { + memset(writeArgs.data.data_val, 0, m_writeBufferSize); + + bytesRead = srcFile.read(writeArgs.data.data_val, m_writeBufferSize); + if (bytesRead < 0) { + m_slave->error(KIO::ERR_CANNOT_READ, srcPath); + + error = true; + break; + } + + if (bytesRead > 0) { + writeArgs.count = bytesRead; + writeArgs.data.data_len = bytesRead; + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC3_WRITE, + (xdrproc_t) xdr_WRITE3args, reinterpret_cast(&writeArgs), + (xdrproc_t) xdr_WRITE3res, reinterpret_cast(&writeRes), + clnt_timeout); + + if (!checkForError(clnt_stat, writeRes.status, destPath)) { + error = true; + break; + } + + writeArgs.offset += bytesRead; + + m_slave->processedSize(writeArgs.offset); + } + } while (bytesRead > 0); + + delete [] writeArgs.data.data_val; + + if (error) { + if (bMarkPartial) { + // Remove the part file if it's smaller than the minimum keep size. + const unsigned int size = m_slave->configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + if (writeArgs.offset < size) { + if (!remove(partFilePath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove part file, ignoring..."; + } + } + } + } else { + // Rename partial file to its original name. + if (bMarkPartial) { + // Remove the destination file(if it exists) + if (!getFileHandle(destPath).isInvalid() && !remove(destPath)) { + qCDebug(LOG_KIO_NFS) << "Could not remove destination file" << destPath << ", ignoring..."; + } + + if (!rename(partFilePath, destPath)) { + qCDebug(LOG_KIO_NFS) << "failed to rename" << partFilePath << "to" << destPath; + m_slave->error(KIO::ERR_CANNOT_RENAME_PARTIAL, partFilePath); + return; + } + } + + // Restore the mtime on the file. + const QString mtimeStr = m_slave->metaData("modified"); + if (!mtimeStr.isEmpty()) { + QDateTime dt = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dt.isValid()) { + sattr3 attributes; + memset(&attributes, 0, sizeof(attributes)); + attributes.mtime.set_it = SET_TO_CLIENT_TIME; + attributes.mtime.set_mtime_u.mtime.seconds = dt.toSecsSinceEpoch(); + attributes.mtime.set_mtime_u.mtime.nseconds = attributes.mtime.set_mtime_u.mtime.seconds * 1000000000ULL; + + int rpcStatus; + SETATTR3res attrSetRes; + if (!setAttr(destPath, attributes, rpcStatus, attrSetRes)) { + qCDebug(LOG_KIO_NFS) << "Failed to restore mtime, ignoring..." << rpcStatus << attrSetRes.status; + } + } + } + + qCDebug(LOG_KIO_NFS) << "Copied" << writeArgs.offset << "bytes of data"; + + m_slave->processedSize(writeArgs.offset); + m_slave->finished(); + } +} + +void NFSProtocolV3::symlink(const QString& target, const QUrl& dest, KIO::JobFlags flags) +{ + const QString destPath(dest.path()); + + if (isExportedDir(QFileInfo(destPath).path())) { + m_slave->error(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + if (!getFileHandle(destPath).isInvalid() && (flags & KIO::Overwrite) == 0) { + m_slave->error(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + + int rpcStatus; + SYMLINK3res res; + if (!symLink(target, destPath, rpcStatus, res)) { + checkForError(rpcStatus, res.status, destPath); + return; + } + + m_slave->finished(); +} + +void NFSProtocolV3::initPreferredSizes(const NFSFileHandle& fh) +{ + FSINFO3args fsArgs; + memset(&fsArgs, 0, sizeof(fsArgs)); + fh.toFH(fsArgs.fsroot); + + FSINFO3res fsRes; + memset(&fsRes, 0, sizeof(fsRes)); + + int clnt_stat = clnt_call(m_nfsClient, NFSPROC3_FSINFO, + (xdrproc_t) xdr_FSINFO3args, reinterpret_cast(&fsArgs), + (xdrproc_t) xdr_FSINFO3res, reinterpret_cast(&fsRes), + clnt_timeout); + + if (clnt_stat == RPC_SUCCESS && fsRes.status == NFS3_OK) { + m_writeBufferSize = fsRes.FSINFO3res_u.resok.wtpref; + m_readBufferSize = fsRes.FSINFO3res_u.resok.rtpref; + m_readDirSize = fsRes.FSINFO3res_u.resok.dtpref; + } else { + m_writeBufferSize = NFS3_MAXDATA; + m_readBufferSize = NFS3_MAXDATA; + m_readDirSize = NFS3_MAXDATA; + } + + qCDebug(LOG_KIO_NFS) << "Preferred sizes - write" << m_writeBufferSize << ", read" << m_readBufferSize << ", read dir" << m_readDirSize; +} + + +bool NFSProtocolV3::create(const QString& path, int mode, int& rpcStatus, CREATE3res& result) +{ + qCDebug(LOG_KIO_NFS) << path; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + if (!isConnected()) { + result.status = NFS3ERR_ACCES; + return false; + } + + const QFileInfo fileInfo(path); + + const NFSFileHandle directoryFH = getFileHandle(fileInfo.path()); + if (directoryFH.isInvalid()) { + result.status = NFS3ERR_NOENT; + return false; + } + + QByteArray tmpName = QFile::encodeName(fileInfo.fileName()); + + CREATE3args args; + memset(&args, 0, sizeof(args)); + + directoryFH.toFH(args.where.dir); + args.where.name = tmpName.data(); + + args.how.createhow3_u.obj_attributes.mode.set_it = true; + args.how.createhow3_u.obj_attributes.uid.set_it = true; + args.how.createhow3_u.obj_attributes.gid.set_it = true; + args.how.createhow3_u.obj_attributes.size.set_it = true; + + if (mode == -1) { + args.how.createhow3_u.obj_attributes.mode.set_mode3_u.mode = 0644; + } else { + args.how.createhow3_u.obj_attributes.mode.set_mode3_u.mode = mode; + } + args.how.createhow3_u.obj_attributes.uid.set_uid3_u.uid = geteuid(); + args.how.createhow3_u.obj_attributes.gid.set_gid3_u.gid = getegid(); + args.how.createhow3_u.obj_attributes.size.set_size3_u.size = 0; + + rpcStatus = clnt_call(m_nfsClient, NFSPROC3_CREATE, + (xdrproc_t) xdr_CREATE3args, reinterpret_cast(&args), + (xdrproc_t) xdr_CREATE3res, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result.status == NFS3_OK); +} + +bool NFSProtocolV3::getAttr(const QString& path, int& rpcStatus, GETATTR3res& result) +{ + qCDebug(LOG_KIO_NFS) << path; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + if (!isConnected()) { + result.status = NFS3ERR_ACCES; + return false; + } + + const NFSFileHandle fileFH = getFileHandle(path); + if (fileFH.isInvalid()) { + result.status = NFS3ERR_NOENT; + return false; + } + + GETATTR3args args; + memset(&args, 0, sizeof(GETATTR3args)); + fileFH.toFH(args.object); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC3_GETATTR, + (xdrproc_t) xdr_GETATTR3args, reinterpret_cast(&args), + (xdrproc_t) xdr_GETATTR3res, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result.status == NFS3_OK); +} + +bool NFSProtocolV3::lookupHandle(const QString& path, int& rpcStatus, LOOKUP3res& result) +{ + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + if (!isConnected()) { + result.status = NFS3ERR_ACCES; + return false; + } + + const QFileInfo fileInfo(path); + + const NFSFileHandle parentFH = getFileHandle(fileInfo.path()); + if (parentFH.isInvalid()) { + result.status = NFS3ERR_NOENT; + return false; + } + + QByteArray tmpName = QFile::encodeName(fileInfo.fileName()); + + // do the rpc call + LOOKUP3args args; + memset(&args, 0, sizeof(args)); + parentFH.toFH(args.what.dir); + args.what.name = tmpName.data(); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC3_LOOKUP, + (xdrproc_t) xdr_LOOKUP3args, reinterpret_cast(&args), + (xdrproc_t) xdr_LOOKUP3res, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result.status == NFS3_OK); +} + +bool NFSProtocolV3::symLinkTarget(const QString& path, int& rpcStatus, READLINK3res& result, char* dataBuffer) +{ + qCDebug(LOG_KIO_NFS) << path; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid()) { + result.status = NFS3ERR_NOENT; + return false; + } + + READLINK3args readLinkArgs; + memset(&readLinkArgs, 0, sizeof(readLinkArgs)); + if (fh.isLink() && !fh.isBadLink()) { + fh.toFHLink(readLinkArgs.symlink); + } else { + fh.toFH(readLinkArgs.symlink); + } + + result.READLINK3res_u.resok.data = dataBuffer; + + rpcStatus = clnt_call(m_nfsClient, NFSPROC3_READLINK, + (xdrproc_t) xdr_READLINK3args, reinterpret_cast(&readLinkArgs), + (xdrproc_t) xdr_READLINK3res, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result.status == NFS3_OK); +} + +bool NFSProtocolV3::remove(const QString& path) +{ + int rpcStatus; + REMOVE3res result; + + return remove(path, rpcStatus, result); +} + +bool NFSProtocolV3::remove(const QString& path, int& rpcStatus, REMOVE3res& result) +{ + qCDebug(LOG_KIO_NFS) << path; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + if (!isConnected()) { + result.status = NFS3ERR_PERM; + return false; + } + + const QFileInfo fileInfo(path); + if (isExportedDir(fileInfo.path())) { + result.status = NFS3ERR_ACCES; + return false; + } + + const NFSFileHandle directoryFH = getFileHandle(fileInfo.path()); + if (directoryFH.isInvalid()) { + result.status = NFS3ERR_NOENT; + return false; + } + + int rpcLookupStatus; + LOOKUP3res lookupRes; + if (!lookupHandle(path, rpcLookupStatus, lookupRes)) { + result.status = NFS3ERR_NOENT; + return false; + } + + QByteArray tmpName = QFile::encodeName(fileInfo.fileName()); + + REMOVE3args args; + memset(&args, 0, sizeof(args)); + directoryFH.toFH(args.object.dir); + args.object.name = tmpName.data(); + + if (lookupRes.LOOKUP3res_u.resok.obj_attributes.post_op_attr_u.attributes.type != NF3DIR) { + rpcStatus = clnt_call(m_nfsClient, NFSPROC3_REMOVE, + (xdrproc_t) xdr_REMOVE3args, reinterpret_cast(&args), + (xdrproc_t) xdr_REMOVE3res, reinterpret_cast(&result), + clnt_timeout); + } else { + rpcStatus = clnt_call(m_nfsClient, NFSPROC3_RMDIR, + (xdrproc_t) xdr_RMDIR3args, reinterpret_cast(&args), + (xdrproc_t) xdr_RMDIR3res, reinterpret_cast(&result), + clnt_timeout); + } + + bool ret = (rpcStatus == RPC_SUCCESS && result.status == NFS3_OK); + if (ret) { + // Remove it from the cache as well + removeFileHandle(path); + } + + return ret; +} + +bool NFSProtocolV3::rename(const QString& src, const QString& dest) +{ + int rpcStatus; + RENAME3res result; + + return rename(src, dest, rpcStatus, result); +} + +bool NFSProtocolV3::rename(const QString& src, const QString& dest, int& rpcStatus, RENAME3res& result) +{ + qCDebug(LOG_KIO_NFS) << src << dest; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + const QFileInfo srcFileInfo(src); + if (isExportedDir(srcFileInfo.path())) { + result.status = NFS3ERR_ACCES; + return false; + } + + const NFSFileHandle srcDirectoryFH = getFileHandle(srcFileInfo.path()); + if (srcDirectoryFH.isInvalid()) { + result.status = NFS3ERR_NOENT; + return false; + } + + const QFileInfo destFileInfo(dest); + if (isExportedDir(destFileInfo.path())) { + result.status = NFS3ERR_ACCES; + return false; + } + + const NFSFileHandle destDirectoryFH = getFileHandle(destFileInfo.path()); + if (destDirectoryFH.isInvalid()) { + result.status = NFS3ERR_NOENT; + return false; + } + + RENAME3args args; + memset(&args, 0, sizeof(args)); + + QByteArray srcByteName = QFile::encodeName(srcFileInfo.fileName()); + srcDirectoryFH.toFH(args.from.dir); + args.from.name = srcByteName.data(); + + QByteArray destByteName = QFile::encodeName(destFileInfo.fileName()); + destDirectoryFH.toFH(args.to.dir); + args.to.name = destByteName.data(); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC3_RENAME, + (xdrproc_t) xdr_RENAME3args, reinterpret_cast(&args), + (xdrproc_t) xdr_RENAME3res, reinterpret_cast(&result), + clnt_timeout); + + bool ret = (rpcStatus == RPC_SUCCESS && result.status == NFS3_OK); + if (ret) { + // Can we actually find the new handle? + int lookupStatus; + LOOKUP3res lookupRes; + if (lookupHandle(dest, lookupStatus, lookupRes)) { + // Remove the old file, and add the new one + removeFileHandle(src); + addFileHandle(dest, lookupRes.LOOKUP3res_u.resok.object); + } + } + + return ret; +} + +bool NFSProtocolV3::setAttr(const QString& path, const sattr3& attributes, int& rpcStatus, SETATTR3res& result) +{ + qCDebug(LOG_KIO_NFS) << path; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid()) { + result.status = NFS3ERR_NOENT; + return false; + } + + SETATTR3args setAttrArgs; + memset(&setAttrArgs, 0, sizeof(setAttrArgs)); + fh.toFH(setAttrArgs.object); + memcpy(&setAttrArgs.new_attributes, &attributes, sizeof(attributes)); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC3_SETATTR, + (xdrproc_t) xdr_SETATTR3args, reinterpret_cast(&setAttrArgs), + (xdrproc_t) xdr_SETATTR3res, reinterpret_cast(&result), + clnt_timeout); + + return (rpcStatus == RPC_SUCCESS && result.status == NFS3_OK); +} + +bool NFSProtocolV3::symLink(const QString& target, const QString& dest, int& rpcStatus, SYMLINK3res& result) +{ + qCDebug(LOG_KIO_NFS) << target << dest; + + memset(&rpcStatus, 0, sizeof(int)); + memset(&result, 0, sizeof(result)); + + // Remove dest first, we don't really care about the return value at this point, + // the symlink call will fail if dest was not removed correctly. + remove(dest); + + const QFileInfo fileInfo(dest); + + const NFSFileHandle fh = getFileHandle(fileInfo.path()); + if (fh.isInvalid()) { + result.status = NFS3ERR_NOENT; + return false; + } + + QByteArray tmpStr = QFile::encodeName(fileInfo.fileName()); + QByteArray tmpStr2 = QFile::encodeName(target); + + SYMLINK3args symLinkArgs; + memset(&symLinkArgs, 0, sizeof(symLinkArgs)); + + fh.toFH(symLinkArgs.where.dir); + symLinkArgs.where.name = tmpStr.data(); + symLinkArgs.symlink.symlink_data = tmpStr2.data(); + + rpcStatus = clnt_call(m_nfsClient, NFSPROC3_SYMLINK, + (xdrproc_t) xdr_SYMLINK3args, reinterpret_cast(&symLinkArgs), + (xdrproc_t) xdr_SYMLINK3res, reinterpret_cast(&result), + clnt_timeout); + + // Add the new handle to the cache + NFSFileHandle destFH = getFileHandle(dest); + if (!destFH.isInvalid()) { + addFileHandle(dest, destFH); + } + + return (rpcStatus == RPC_SUCCESS && result.status == NFS3_OK); +} + + +void NFSProtocolV3::completeUDSEntry(KIO::UDSEntry& entry, const fattr3& attributes) +{ + entry.insert(KIO::UDSEntry::UDS_SIZE, attributes.size); + entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, attributes.mtime.seconds); + entry.insert(KIO::UDSEntry::UDS_ACCESS_TIME, attributes.atime.seconds); + entry.insert(KIO::UDSEntry::UDS_CREATION_TIME, attributes.ctime.seconds); + + // Some servers still send the file type information in the mode, even though + // the reference specifies NFSv3 shouldn't, so we need to work around that here. + // Not sure this is the best way to do it, but it works. + if (attributes.mode > 0777) { + entry.insert(KIO::UDSEntry::UDS_ACCESS, (attributes.mode & 07777)); + } else { + entry.insert(KIO::UDSEntry::UDS_ACCESS, attributes.mode); + } + + unsigned int type; + switch (attributes.type) { + case NF3DIR: + type = S_IFDIR; + break; + case NF3BLK: + type = S_IFBLK; + break; + case NF3CHR: + type = S_IFCHR; + break; + case NF3LNK: + type = S_IFLNK; + break; + case NF3SOCK: + type = S_IFSOCK; + break; + case NF3FIFO: + type = S_IFIFO; + break; + default: + type = S_IFREG; + break; + } + + entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, type); + + QString str; + + const uid_t uid = attributes.uid; + if (!m_usercache.contains(uid)) { + struct passwd* user = getpwuid(uid); + if (user) { + m_usercache.insert(uid, QString::fromLatin1(user->pw_name)); + str = user->pw_name; + } else { + str = QString::number(uid); + } + } else { + str = m_usercache.value(uid); + } + + entry.insert(KIO::UDSEntry::UDS_USER, str); + + const gid_t gid = attributes.gid; + if (!m_groupcache.contains(gid)) { + struct group* grp = getgrgid(gid); + if (grp) { + m_groupcache.insert(gid, QString::fromLatin1(grp->gr_name)); + str = grp->gr_name; + } else { + str = QString::number(gid); + } + } else { + str = m_groupcache.value(gid); + } + + entry.insert(KIO::UDSEntry::UDS_GROUP, str); +} + +void NFSProtocolV3::completeBadLinkUDSEntry(KIO::UDSEntry& entry, const fattr3& attributes) +{ + entry.insert(KIO::UDSEntry::UDS_SIZE, 0LL); + entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, attributes.mtime.seconds); + entry.insert(KIO::UDSEntry::UDS_ACCESS_TIME, attributes.atime.seconds); + entry.insert(KIO::UDSEntry::UDS_CREATION_TIME, attributes.ctime.seconds); + entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFMT - 1); + entry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO); + entry.insert(KIO::UDSEntry::UDS_USER, attributes.uid); + entry.insert(KIO::UDSEntry::UDS_GROUP, attributes.gid); +} diff --git a/nfs/nfsv3.h b/nfs/nfsv3.h new file mode 100644 index 0000000..7604bd6 --- /dev/null +++ b/nfs/nfsv3.h @@ -0,0 +1,114 @@ +/* This file is part of the KDE project + Copyright (C) 2000 Alexander Neundorf , + 2014 Mathias Tillman + + 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 KIO_NFSV3_H +#define KIO_NFSV3_H + +#include "kio_nfs.h" + +#define PORTMAP //this seems to be required to compile on Solaris +#include +#include +#include +#include + +class NFSProtocolV3 : public NFSProtocol +{ +public: + explicit NFSProtocolV3(NFSSlave* slave); + ~NFSProtocolV3() override; + + bool isCompatible(bool& connectionError) override; + bool isConnected() const override; + + void openConnection() override; + void closeConnection() override; + + void setHost(const QString& host) override; + + void put(const QUrl& url, int _mode, KIO::JobFlags _flags) override; + void get(const QUrl& url) override; + void listDir(const QUrl& url) override; + void symlink(const QString& target, const QUrl& dest, KIO::JobFlags) override; + void stat(const QUrl& url) override; + void mkdir(const QUrl& url, int permissions) override; + void del(const QUrl& url, bool isfile) override; + void chmod(const QUrl& url, int permissions) override; + void rename(const QUrl& src, const QUrl& dest, KIO::JobFlags flags) override; + +protected: + void copySame(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) override; + void copyFrom(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) override; + void copyTo(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) override; + + // For servers that don't support the READDIRPLUS command. + void listDirCompat(const QUrl& url); + + // Look up a file handle. + NFSFileHandle lookupFileHandle(const QString& path) override; + +private: + bool create(const QString& path, int mode, int& rpcStatus, CREATE3res& result); + + bool getAttr(const QString& path, int& rpcStatus, GETATTR3res& result); + + bool lookupHandle(const QString& path, int& rpcStatus, LOOKUP3res& result); + + bool symLinkTarget(const QString& path, int& rpcStatus, READLINK3res& result, char* dataBuffer); + + // Calls @remove, but with dummy rpcStatus and result arguments + bool remove(const QString& path); + bool remove(const QString& path, int& rpcStatus, REMOVE3res& result); + + // Calls @rename, but with dummy rpcStatus and result arguments + bool rename(const QString& src, const QString& dest); + bool rename(const QString& src, const QString& dest, int& rpcStatus, RENAME3res& result); + + bool setAttr(const QString& path, const sattr3& attributes, int& rpcStatus, SETATTR3res& result); + + bool symLink(const QString& target, const QString& dest, int& rpcStatus, SYMLINK3res& result); + + // Initialises the optimal read, write and read dir buffer sizes + void initPreferredSizes(const NFSFileHandle& fh); + + // UDS helper functions + void completeUDSEntry(KIO::UDSEntry& entry, const fattr3& attributes); + void completeBadLinkUDSEntry(KIO::UDSEntry& entry, const fattr3& attributes); + + NFSSlave* m_slave; + + QString m_currentHost; + CLIENT* m_mountClient; + int m_mountSock; + CLIENT* m_nfsClient; + int m_nfsSock; + + timeval clnt_timeout; + + QHash m_usercache; + QHash m_groupcache; + + // The optimal read and write buffer sizes and read dir size, cached values + uint32 m_readBufferSize; + uint32 m_writeBufferSize; + uint32 m_readDirSize; +}; + +#endif diff --git a/nfs/rpc_nfs2_prot.h b/nfs/rpc_nfs2_prot.h new file mode 100644 index 0000000..c87f2ce --- /dev/null +++ b/nfs/rpc_nfs2_prot.h @@ -0,0 +1,660 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#ifndef _RPC_NFS2_PROT_H_RPCGEN +#define _RPC_NFS2_PROT_H_RPCGEN + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user or with the express written consent of + * Sun Microsystems, Inc. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +/* + * Copyright (c) 1987, 1990 by Sun Microsystems, Inc. + */ + +/* from @(#)nfs_prot.x 1.3 91/03/11 TIRPC 1.0 */ +#ifndef _rpcsvc_nfs_prot_h +#define _rpcsvc_nfs_prot_h +#define NFS_PORT 2049 +#define NFS_MAXDATA 8192 +#define NFS_MAXPATHLEN 1024 +#define NFS_MAXNAMLEN 255 +#define NFS_FHSIZE 32 +#define NFS_COOKIESIZE 4 +#define NFS_FIFO_DEV -1 +#define NFSMODE_FMT 0170000 +#define NFSMODE_DIR 0040000 +#define NFSMODE_CHR 0020000 +#define NFSMODE_BLK 0060000 +#define NFSMODE_REG 0100000 +#define NFSMODE_LNK 0120000 +#define NFSMODE_SOCK 0140000 +#define NFSMODE_FIFO 0010000 + +enum nfsstat { + NFS_OK = 0, + NFSERR_PERM = 1, + NFSERR_NOENT = 2, + NFSERR_IO = 5, + NFSERR_NXIO = 6, + NFSERR_ACCES = 13, + NFSERR_EXIST = 17, + NFSERR_NODEV = 19, + NFSERR_NOTDIR = 20, + NFSERR_ISDIR = 21, + NFSERR_INVAL = 22, + NFSERR_FBIG = 27, + NFSERR_NOSPC = 28, + NFSERR_ROFS = 30, + NFSERR_NAMETOOLONG = 63, + NFSERR_NOTEMPTY = 66, + NFSERR_DQUOT = 69, + NFSERR_STALE = 70, + NFSERR_WFLUSH = 99, +}; +typedef enum nfsstat nfsstat; + +enum ftype { + NFNON = 0, + NFREG = 1, + NFDIR = 2, + NFBLK = 3, + NFCHR = 4, + NFLNK = 5, + NFSOCK = 6, + NFBAD = 7, + NFFIFO = 8, +}; +typedef enum ftype ftype; + +struct nfs_fh { + char data[NFS_FHSIZE]; +}; +typedef struct nfs_fh nfs_fh; + +struct nfstime { + u_int seconds; + u_int useconds; +}; +typedef struct nfstime nfstime; + +struct fattr { + ftype type; + u_int mode; + u_int nlink; + u_int uid; + u_int gid; + u_int size; + u_int blocksize; + u_int rdev; + u_int blocks; + u_int fsid; + u_int fileid; + nfstime atime; + nfstime mtime; + nfstime ctime; +}; +typedef struct fattr fattr; + +struct sattr { + u_int mode; + u_int uid; + u_int gid; + u_int size; + nfstime atime; + nfstime mtime; +}; +typedef struct sattr sattr; + +typedef char *filename; + +typedef char *nfspath; + +struct attrstat { + nfsstat status; + union { + fattr attributes; + } attrstat_u; +}; +typedef struct attrstat attrstat; + +struct sattrargs { + nfs_fh file; + sattr attributes; +}; +typedef struct sattrargs sattrargs; + +struct diropargs { + nfs_fh dir; + filename name; +}; +typedef struct diropargs diropargs; + +struct diropokres { + nfs_fh file; + fattr attributes; +}; +typedef struct diropokres diropokres; + +struct diropres { + nfsstat status; + union { + diropokres diropres; + } diropres_u; +}; +typedef struct diropres diropres; + +struct readlinkres { + nfsstat status; + union { + nfspath data; + } readlinkres_u; +}; +typedef struct readlinkres readlinkres; + +struct readargs { + nfs_fh file; + u_int offset; + u_int count; + u_int totalcount; +}; +typedef struct readargs readargs; + +struct readokres { + fattr attributes; + struct { + u_int data_len; + char *data_val; + } data; +}; +typedef struct readokres readokres; + +struct readres { + nfsstat status; + union { + readokres reply; + } readres_u; +}; +typedef struct readres readres; + +struct writeargs { + nfs_fh file; + u_int beginoffset; + u_int offset; + u_int totalcount; + struct { + u_int data_len; + char *data_val; + } data; +}; +typedef struct writeargs writeargs; + +struct createargs { + diropargs where; + sattr attributes; +}; +typedef struct createargs createargs; + +struct renameargs { + diropargs from; + diropargs to; +}; +typedef struct renameargs renameargs; + +struct linkargs { + nfs_fh from; + diropargs to; +}; +typedef struct linkargs linkargs; + +struct symlinkargs { + diropargs from; + nfspath to; + sattr attributes; +}; +typedef struct symlinkargs symlinkargs; + +typedef char nfscookie[NFS_COOKIESIZE]; + +struct readdirargs { + nfs_fh dir; + nfscookie cookie; + u_int count; +}; +typedef struct readdirargs readdirargs; + +struct entry { + u_int fileid; + filename name; + nfscookie cookie; + struct entry *nextentry; +}; +typedef struct entry entry; + +struct dirlist { + entry *entries; + bool_t eof; +}; +typedef struct dirlist dirlist; + +struct readdirres { + nfsstat status; + union { + dirlist reply; + } readdirres_u; +}; +typedef struct readdirres readdirres; + +struct statfsokres { + u_int tsize; + u_int bsize; + u_int blocks; + u_int bfree; + u_int bavail; +}; +typedef struct statfsokres statfsokres; + +struct statfsres { + nfsstat status; + union { + statfsokres reply; + } statfsres_u; +}; +typedef struct statfsres statfsres; +#define MNTPATHLEN 1024 +#define MNTNAMLEN 255 +#define FHSIZE 32 + +typedef char fhandle[FHSIZE]; + +struct fhstatus { + u_int fhs_status; + union { + fhandle fhs_fhandle; + } fhstatus_u; +}; +typedef struct fhstatus fhstatus; + +typedef char *dirpath; + +typedef char *name; + +typedef struct mountbody *mountlist; + +struct mountbody { + name ml_hostname; + dirpath ml_directory; + mountlist ml_next; +}; +typedef struct mountbody mountbody; + +typedef struct groupnode *groups; + +struct groupnode { + name gr_name; + groups gr_next; +}; +typedef struct groupnode groupnode; + +typedef struct exportnode *exports; + +struct exportnode { + dirpath ex_dir; + groups ex_groups; + exports ex_next; +}; +typedef struct exportnode exportnode; + +struct ppathcnf { + int pc_link_max; + short pc_max_canon; + short pc_max_input; + short pc_name_max; + short pc_path_max; + short pc_pipe_buf; + u_char pc_vdisable; + char pc_xxx; + short pc_mask[2]; +}; +typedef struct ppathcnf ppathcnf; +#endif /*!_rpcsvc_nfs_prot_h*/ + +#define NFS_PROGRAM 100003 +#define NFS_VERSION 2 + +#if defined(__STDC__) || defined(__cplusplus) +#define NFSPROC_NULL 0 +extern void * nfsproc_null_2(CLIENT *); +extern void * nfsproc_null_2_svc(struct svc_req *); +#define NFSPROC_GETATTR 1 +extern attrstat * nfsproc_getattr_2(nfs_fh , CLIENT *); +extern attrstat * nfsproc_getattr_2_svc(nfs_fh , struct svc_req *); +#define NFSPROC_SETATTR 2 +extern attrstat * nfsproc_setattr_2(sattrargs , CLIENT *); +extern attrstat * nfsproc_setattr_2_svc(sattrargs , struct svc_req *); +#define NFSPROC_ROOT 3 +extern void * nfsproc_root_2(CLIENT *); +extern void * nfsproc_root_2_svc(struct svc_req *); +#define NFSPROC_LOOKUP 4 +extern diropres * nfsproc_lookup_2(diropargs , CLIENT *); +extern diropres * nfsproc_lookup_2_svc(diropargs , struct svc_req *); +#define NFSPROC_READLINK 5 +extern readlinkres * nfsproc_readlink_2(nfs_fh , CLIENT *); +extern readlinkres * nfsproc_readlink_2_svc(nfs_fh , struct svc_req *); +#define NFSPROC_READ 6 +extern readres * nfsproc_read_2(readargs , CLIENT *); +extern readres * nfsproc_read_2_svc(readargs , struct svc_req *); +#define NFSPROC_WRITECACHE 7 +extern void * nfsproc_writecache_2(CLIENT *); +extern void * nfsproc_writecache_2_svc(struct svc_req *); +#define NFSPROC_WRITE 8 +extern attrstat * nfsproc_write_2(writeargs , CLIENT *); +extern attrstat * nfsproc_write_2_svc(writeargs , struct svc_req *); +#define NFSPROC_CREATE 9 +extern diropres * nfsproc_create_2(createargs , CLIENT *); +extern diropres * nfsproc_create_2_svc(createargs , struct svc_req *); +#define NFSPROC_REMOVE 10 +extern nfsstat * nfsproc_remove_2(diropargs , CLIENT *); +extern nfsstat * nfsproc_remove_2_svc(diropargs , struct svc_req *); +#define NFSPROC_RENAME 11 +extern nfsstat * nfsproc_rename_2(renameargs , CLIENT *); +extern nfsstat * nfsproc_rename_2_svc(renameargs , struct svc_req *); +#define NFSPROC_LINK 12 +extern nfsstat * nfsproc_link_2(linkargs , CLIENT *); +extern nfsstat * nfsproc_link_2_svc(linkargs , struct svc_req *); +#define NFSPROC_SYMLINK 13 +extern nfsstat * nfsproc_symlink_2(symlinkargs , CLIENT *); +extern nfsstat * nfsproc_symlink_2_svc(symlinkargs , struct svc_req *); +#define NFSPROC_MKDIR 14 +extern diropres * nfsproc_mkdir_2(createargs , CLIENT *); +extern diropres * nfsproc_mkdir_2_svc(createargs , struct svc_req *); +#define NFSPROC_RMDIR 15 +extern nfsstat * nfsproc_rmdir_2(diropargs , CLIENT *); +extern nfsstat * nfsproc_rmdir_2_svc(diropargs , struct svc_req *); +#define NFSPROC_READDIR 16 +extern readdirres * nfsproc_readdir_2(readdirargs , CLIENT *); +extern readdirres * nfsproc_readdir_2_svc(readdirargs , struct svc_req *); +#define NFSPROC_STATFS 17 +extern statfsres * nfsproc_statfs_2(nfs_fh , CLIENT *); +extern statfsres * nfsproc_statfs_2_svc(nfs_fh , struct svc_req *); +extern int nfs_program_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); + +#else /* K&R C */ +#define NFSPROC_NULL 0 +extern void * nfsproc_null_2(); +extern void * nfsproc_null_2_svc(); +#define NFSPROC_GETATTR 1 +extern attrstat * nfsproc_getattr_2(); +extern attrstat * nfsproc_getattr_2_svc(); +#define NFSPROC_SETATTR 2 +extern attrstat * nfsproc_setattr_2(); +extern attrstat * nfsproc_setattr_2_svc(); +#define NFSPROC_ROOT 3 +extern void * nfsproc_root_2(); +extern void * nfsproc_root_2_svc(); +#define NFSPROC_LOOKUP 4 +extern diropres * nfsproc_lookup_2(); +extern diropres * nfsproc_lookup_2_svc(); +#define NFSPROC_READLINK 5 +extern readlinkres * nfsproc_readlink_2(); +extern readlinkres * nfsproc_readlink_2_svc(); +#define NFSPROC_READ 6 +extern readres * nfsproc_read_2(); +extern readres * nfsproc_read_2_svc(); +#define NFSPROC_WRITECACHE 7 +extern void * nfsproc_writecache_2(); +extern void * nfsproc_writecache_2_svc(); +#define NFSPROC_WRITE 8 +extern attrstat * nfsproc_write_2(); +extern attrstat * nfsproc_write_2_svc(); +#define NFSPROC_CREATE 9 +extern diropres * nfsproc_create_2(); +extern diropres * nfsproc_create_2_svc(); +#define NFSPROC_REMOVE 10 +extern nfsstat * nfsproc_remove_2(); +extern nfsstat * nfsproc_remove_2_svc(); +#define NFSPROC_RENAME 11 +extern nfsstat * nfsproc_rename_2(); +extern nfsstat * nfsproc_rename_2_svc(); +#define NFSPROC_LINK 12 +extern nfsstat * nfsproc_link_2(); +extern nfsstat * nfsproc_link_2_svc(); +#define NFSPROC_SYMLINK 13 +extern nfsstat * nfsproc_symlink_2(); +extern nfsstat * nfsproc_symlink_2_svc(); +#define NFSPROC_MKDIR 14 +extern diropres * nfsproc_mkdir_2(); +extern diropres * nfsproc_mkdir_2_svc(); +#define NFSPROC_RMDIR 15 +extern nfsstat * nfsproc_rmdir_2(); +extern nfsstat * nfsproc_rmdir_2_svc(); +#define NFSPROC_READDIR 16 +extern readdirres * nfsproc_readdir_2(); +extern readdirres * nfsproc_readdir_2_svc(); +#define NFSPROC_STATFS 17 +extern statfsres * nfsproc_statfs_2(); +extern statfsres * nfsproc_statfs_2_svc(); +extern int nfs_program_2_freeresult (); +#endif /* K&R C */ + +#define MOUNTPROG 100005 +#define MOUNTVERS 1 + +#if defined(__STDC__) || defined(__cplusplus) +#define MOUNTPROC_NULL 0 +extern void * mountproc_null_1(CLIENT *); +extern void * mountproc_null_1_svc(struct svc_req *); +#define MOUNTPROC_MNT 1 +extern fhstatus * mountproc_mnt_1(dirpath , CLIENT *); +extern fhstatus * mountproc_mnt_1_svc(dirpath , struct svc_req *); +#define MOUNTPROC_DUMP 2 +extern mountlist * mountproc_dump_1(CLIENT *); +extern mountlist * mountproc_dump_1_svc(struct svc_req *); +#define MOUNTPROC_UMNT 3 +extern void * mountproc_umnt_1(dirpath , CLIENT *); +extern void * mountproc_umnt_1_svc(dirpath , struct svc_req *); +#define MOUNTPROC_UMNTALL 4 +extern void * mountproc_umntall_1(CLIENT *); +extern void * mountproc_umntall_1_svc(struct svc_req *); +#define MOUNTPROC_EXPORT 5 +extern exports * mountproc_export_1(CLIENT *); +extern exports * mountproc_export_1_svc(struct svc_req *); +#define MOUNTPROC_EXPORTALL 6 +extern exports * mountproc_exportall_1(CLIENT *); +extern exports * mountproc_exportall_1_svc(struct svc_req *); +extern int mountprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); + +#else /* K&R C */ +#define MOUNTPROC_NULL 0 +extern void * mountproc_null_1(); +extern void * mountproc_null_1_svc(); +#define MOUNTPROC_MNT 1 +extern fhstatus * mountproc_mnt_1(); +extern fhstatus * mountproc_mnt_1_svc(); +#define MOUNTPROC_DUMP 2 +extern mountlist * mountproc_dump_1(); +extern mountlist * mountproc_dump_1_svc(); +#define MOUNTPROC_UMNT 3 +extern void * mountproc_umnt_1(); +extern void * mountproc_umnt_1_svc(); +#define MOUNTPROC_UMNTALL 4 +extern void * mountproc_umntall_1(); +extern void * mountproc_umntall_1_svc(); +#define MOUNTPROC_EXPORT 5 +extern exports * mountproc_export_1(); +extern exports * mountproc_export_1_svc(); +#define MOUNTPROC_EXPORTALL 6 +extern exports * mountproc_exportall_1(); +extern exports * mountproc_exportall_1_svc(); +extern int mountprog_1_freeresult (); +#endif /* K&R C */ +#define MOUNTVERS_POSIX 2 + +#if defined(__STDC__) || defined(__cplusplus) +extern void * mountproc_null_2(CLIENT *); +extern void * mountproc_null_2_svc(struct svc_req *); +extern fhstatus * mountproc_mnt_2(dirpath , CLIENT *); +extern fhstatus * mountproc_mnt_2_svc(dirpath , struct svc_req *); +extern mountlist * mountproc_dump_2(CLIENT *); +extern mountlist * mountproc_dump_2_svc(struct svc_req *); +extern void * mountproc_umnt_2(dirpath , CLIENT *); +extern void * mountproc_umnt_2_svc(dirpath , struct svc_req *); +extern void * mountproc_umntall_2(CLIENT *); +extern void * mountproc_umntall_2_svc(struct svc_req *); +extern exports * mountproc_export_2(CLIENT *); +extern exports * mountproc_export_2_svc(struct svc_req *); +extern exports * mountproc_exportall_2(CLIENT *); +extern exports * mountproc_exportall_2_svc(struct svc_req *); +#define MOUNTPROC_PATHCONF 7 +extern ppathcnf * mountproc_pathconf_2(dirpath , CLIENT *); +extern ppathcnf * mountproc_pathconf_2_svc(dirpath , struct svc_req *); +extern int mountprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); + +#else /* K&R C */ +extern void * mountproc_null_2(); +extern void * mountproc_null_2_svc(); +extern fhstatus * mountproc_mnt_2(); +extern fhstatus * mountproc_mnt_2_svc(); +extern mountlist * mountproc_dump_2(); +extern mountlist * mountproc_dump_2_svc(); +extern void * mountproc_umnt_2(); +extern void * mountproc_umnt_2_svc(); +extern void * mountproc_umntall_2(); +extern void * mountproc_umntall_2_svc(); +extern exports * mountproc_export_2(); +extern exports * mountproc_export_2_svc(); +extern exports * mountproc_exportall_2(); +extern exports * mountproc_exportall_2_svc(); +#define MOUNTPROC_PATHCONF 7 +extern ppathcnf * mountproc_pathconf_2(); +extern ppathcnf * mountproc_pathconf_2_svc(); +extern int mountprog_2_freeresult (); +#endif /* K&R C */ + +/* the xdr functions */ + +#if defined(__STDC__) || defined(__cplusplus) +extern bool_t xdr_nfsstat (XDR *, nfsstat*); +extern bool_t xdr_ftype (XDR *, ftype*); +extern bool_t xdr_nfs_fh (XDR *, nfs_fh*); +extern bool_t xdr_nfstime (XDR *, nfstime*); +extern bool_t xdr_fattr (XDR *, fattr*); +extern bool_t xdr_sattr (XDR *, sattr*); +extern bool_t xdr_filename (XDR *, filename*); +extern bool_t xdr_nfspath (XDR *, nfspath*); +extern bool_t xdr_attrstat (XDR *, attrstat*); +extern bool_t xdr_sattrargs (XDR *, sattrargs*); +extern bool_t xdr_diropargs (XDR *, diropargs*); +extern bool_t xdr_diropokres (XDR *, diropokres*); +extern bool_t xdr_diropres (XDR *, diropres*); +extern bool_t xdr_readlinkres (XDR *, readlinkres*); +extern bool_t xdr_readargs (XDR *, readargs*); +extern bool_t xdr_readokres (XDR *, readokres*); +extern bool_t xdr_readres (XDR *, readres*); +extern bool_t xdr_writeargs (XDR *, writeargs*); +extern bool_t xdr_createargs (XDR *, createargs*); +extern bool_t xdr_renameargs (XDR *, renameargs*); +extern bool_t xdr_linkargs (XDR *, linkargs*); +extern bool_t xdr_symlinkargs (XDR *, symlinkargs*); +extern bool_t xdr_nfscookie (XDR *, nfscookie); +extern bool_t xdr_readdirargs (XDR *, readdirargs*); +extern bool_t xdr_entry (XDR *, entry*); +extern bool_t xdr_dirlist (XDR *, dirlist*); +extern bool_t xdr_readdirres (XDR *, readdirres*); +extern bool_t xdr_statfsokres (XDR *, statfsokres*); +extern bool_t xdr_statfsres (XDR *, statfsres*); +extern bool_t xdr_fhandle (XDR *, fhandle); +extern bool_t xdr_fhstatus (XDR *, fhstatus*); +extern bool_t xdr_dirpath (XDR *, dirpath*); +extern bool_t xdr_name (XDR *, name*); +extern bool_t xdr_mountlist (XDR *, mountlist*); +extern bool_t xdr_mountbody (XDR *, mountbody*); +extern bool_t xdr_groups (XDR *, groups*); +extern bool_t xdr_groupnode (XDR *, groupnode*); +extern bool_t xdr_exports (XDR *, exports*); +extern bool_t xdr_exportnode (XDR *, exportnode*); +extern bool_t xdr_ppathcnf (XDR *, ppathcnf*); + +#else /* K&R C */ +extern bool_t xdr_nfsstat (); +extern bool_t xdr_ftype (); +extern bool_t xdr_nfs_fh (); +extern bool_t xdr_nfstime (); +extern bool_t xdr_fattr (); +extern bool_t xdr_sattr (); +extern bool_t xdr_filename (); +extern bool_t xdr_nfspath (); +extern bool_t xdr_attrstat (); +extern bool_t xdr_sattrargs (); +extern bool_t xdr_diropargs (); +extern bool_t xdr_diropokres (); +extern bool_t xdr_diropres (); +extern bool_t xdr_readlinkres (); +extern bool_t xdr_readargs (); +extern bool_t xdr_readokres (); +extern bool_t xdr_readres (); +extern bool_t xdr_writeargs (); +extern bool_t xdr_createargs (); +extern bool_t xdr_renameargs (); +extern bool_t xdr_linkargs (); +extern bool_t xdr_symlinkargs (); +extern bool_t xdr_nfscookie (); +extern bool_t xdr_readdirargs (); +extern bool_t xdr_entry (); +extern bool_t xdr_dirlist (); +extern bool_t xdr_readdirres (); +extern bool_t xdr_statfsokres (); +extern bool_t xdr_statfsres (); +extern bool_t xdr_fhandle (); +extern bool_t xdr_fhstatus (); +extern bool_t xdr_dirpath (); +extern bool_t xdr_name (); +extern bool_t xdr_mountlist (); +extern bool_t xdr_mountbody (); +extern bool_t xdr_groups (); +extern bool_t xdr_groupnode (); +extern bool_t xdr_exports (); +extern bool_t xdr_exportnode (); +extern bool_t xdr_ppathcnf (); + +#endif /* K&R C */ + +#ifdef __cplusplus +} +#endif + +#endif /* !_RPC_NFS2_PROT_H_RPCGEN */ diff --git a/nfs/rpc_nfs2_prot.x b/nfs/rpc_nfs2_prot.x new file mode 100644 index 0000000..fddcd61 --- /dev/null +++ b/nfs/rpc_nfs2_prot.x @@ -0,0 +1,574 @@ +%/* +% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for +% * unrestricted use provided that this legend is included on all tape +% * media and as a part of the software program in whole or part. Users +% * may copy or modify Sun RPC without charge, but are not authorized +% * to license or distribute it to anyone else except as part of a product or +% * program developed by the user or with the express written consent of +% * Sun Microsystems, Inc. +% * +% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE +% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR +% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. +% * +% * Sun RPC is provided with no support and without any obligation on the +% * part of Sun Microsystems, Inc. to assist in its use, correction, +% * modification or enhancement. +% * +% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE +% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC +% * OR ANY PART THEREOF. +% * +% * In no event will Sun Microsystems, Inc. be liable for any lost revenue +% * or profits or other special, indirect and consequential damages, even if +% * Sun has been advised of the possibility of such damages. +% * +% * Sun Microsystems, Inc. +% * 2550 Garcia Avenue +% * Mountain View, California 94043 +% */ + +%/* +% * Copyright (c) 1987, 1990 by Sun Microsystems, Inc. +% */ +% +%/* from @(#)nfs_prot.x 1.3 91/03/11 TIRPC 1.0 */ + +#ifdef RPC_HDR +%#ifndef _rpcsvc_nfs_prot_h +%#define _rpcsvc_nfs_prot_h +#endif + +const NFS_PORT = 2049; +const NFS_MAXDATA = 8192; +const NFS_MAXPATHLEN = 1024; +const NFS_MAXNAMLEN = 255; +const NFS_FHSIZE = 32; +const NFS_COOKIESIZE = 4; +const NFS_FIFO_DEV = -1; /* size kludge for named pipes */ + +/* + * File types + */ +const NFSMODE_FMT = 0170000; /* type of file */ +const NFSMODE_DIR = 0040000; /* directory */ +const NFSMODE_CHR = 0020000; /* character special */ +const NFSMODE_BLK = 0060000; /* block special */ +const NFSMODE_REG = 0100000; /* regular */ +const NFSMODE_LNK = 0120000; /* symbolic link */ +const NFSMODE_SOCK = 0140000; /* socket */ +const NFSMODE_FIFO = 0010000; /* fifo */ + +/* + * Error status + */ +enum nfsstat { + NFS_OK= 0, /* no error */ + NFSERR_PERM=1, /* Not owner */ + NFSERR_NOENT=2, /* No such file or directory */ + NFSERR_IO=5, /* I/O error */ + NFSERR_NXIO=6, /* No such device or address */ + NFSERR_ACCES=13, /* Permission denied */ + NFSERR_EXIST=17, /* File exists */ + NFSERR_NODEV=19, /* No such device */ + NFSERR_NOTDIR=20, /* Not a directory*/ + NFSERR_ISDIR=21, /* Is a directory */ + NFSERR_INVAL=22, /* invalid argument */ + NFSERR_FBIG=27, /* File too large */ + NFSERR_NOSPC=28, /* No space left on device */ + NFSERR_ROFS=30, /* Read-only file system */ + NFSERR_NAMETOOLONG=63, /* File name too long */ + NFSERR_NOTEMPTY=66, /* Directory not empty */ + NFSERR_DQUOT=69, /* Disc quota exceeded */ + NFSERR_STALE=70, /* Stale NFS file handle */ + NFSERR_WFLUSH=99 /* write cache flushed */ +}; + +/* + * File types + */ +enum ftype { + NFNON = 0, /* non-file */ + NFREG = 1, /* regular file */ + NFDIR = 2, /* directory */ + NFBLK = 3, /* block special */ + NFCHR = 4, /* character special */ + NFLNK = 5, /* symbolic link */ + NFSOCK = 6, /* unix domain sockets */ + NFBAD = 7, /* unused */ + NFFIFO = 8 /* named pipe */ +}; + +/* + * File access handle + */ +struct nfs_fh { + opaque data[NFS_FHSIZE]; +}; + +/* + * Timeval + */ +struct nfstime { + unsigned seconds; + unsigned useconds; +}; + + +/* + * File attributes + */ +struct fattr { + ftype type; /* file type */ + unsigned mode; /* protection mode bits */ + unsigned nlink; /* # hard links */ + unsigned uid; /* owner user id */ + unsigned gid; /* owner group id */ + unsigned size; /* file size in bytes */ + unsigned blocksize; /* prefered block size */ + unsigned rdev; /* special device # */ + unsigned blocks; /* Kb of disk used by file */ + unsigned fsid; /* device # */ + unsigned fileid; /* inode # */ + nfstime atime; /* time of last access */ + nfstime mtime; /* time of last modification */ + nfstime ctime; /* time of last change */ +}; + +/* + * File attributes which can be set + */ +struct sattr { + unsigned mode; /* protection mode bits */ + unsigned uid; /* owner user id */ + unsigned gid; /* owner group id */ + unsigned size; /* file size in bytes */ + nfstime atime; /* time of last access */ + nfstime mtime; /* time of last modification */ +}; + + +typedef string filename; +typedef string nfspath; + +/* + * Reply status with file attributes + */ +union attrstat switch (nfsstat status) { +case NFS_OK: + fattr attributes; +default: + void; +}; + +struct sattrargs { + nfs_fh file; + sattr attributes; +}; + +/* + * Arguments for directory operations + */ +struct diropargs { + nfs_fh dir; /* directory file handle */ + filename name; /* name (up to NFS_MAXNAMLEN bytes) */ +}; + +struct diropokres { + nfs_fh file; + fattr attributes; +}; + +/* + * Results from directory operation + */ +union diropres switch (nfsstat status) { +case NFS_OK: + diropokres diropres; +default: + void; +}; + +union readlinkres switch (nfsstat status) { +case NFS_OK: + nfspath data; +default: + void; +}; + +/* + * Arguments to remote read + */ +struct readargs { + nfs_fh file; /* handle for file */ + unsigned offset; /* byte offset in file */ + unsigned count; /* immediate read count */ + unsigned totalcount; /* total read count (from this offset)*/ +}; + +/* + * Status OK portion of remote read reply + */ +struct readokres { + fattr attributes; /* attributes, need for pagin*/ + opaque data; +}; + +union readres switch (nfsstat status) { +case NFS_OK: + readokres reply; +default: + void; +}; + +/* + * Arguments to remote write + */ +struct writeargs { + nfs_fh file; /* handle for file */ + unsigned beginoffset; /* beginning byte offset in file */ + unsigned offset; /* current byte offset in file */ + unsigned totalcount; /* total write count (to this offset)*/ + opaque data; +}; + +struct createargs { + diropargs where; + sattr attributes; +}; + +struct renameargs { + diropargs from; + diropargs to; +}; + +struct linkargs { + nfs_fh from; + diropargs to; +}; + +struct symlinkargs { + diropargs from; + nfspath to; + sattr attributes; +}; + + +typedef opaque nfscookie[NFS_COOKIESIZE]; + +/* + * Arguments to readdir + */ +struct readdirargs { + nfs_fh dir; /* directory handle */ + nfscookie cookie; + unsigned count; /* number of directory bytes to read */ +}; + +struct entry { + unsigned fileid; + filename name; + nfscookie cookie; + entry *nextentry; +}; + +struct dirlist { + entry *entries; + bool eof; +}; + +union readdirres switch (nfsstat status) { +case NFS_OK: + dirlist reply; +default: + void; +}; + +struct statfsokres { + unsigned tsize; /* preferred transfer size in bytes */ + unsigned bsize; /* fundamental file system block size */ + unsigned blocks; /* total blocks in file system */ + unsigned bfree; /* free blocks in fs */ + unsigned bavail; /* free blocks avail to non-superuser */ +}; + +union statfsres switch (nfsstat status) { +case NFS_OK: + statfsokres reply; +default: + void; +}; + +/* + * Remote file service routines + */ +program NFS_PROGRAM { + version NFS_VERSION { + void + NFSPROC_NULL(void) = 0; + + attrstat + NFSPROC_GETATTR(nfs_fh) = 1; + + attrstat + NFSPROC_SETATTR(sattrargs) = 2; + + void + NFSPROC_ROOT(void) = 3; + + diropres + NFSPROC_LOOKUP(diropargs) = 4; + + readlinkres + NFSPROC_READLINK(nfs_fh) = 5; + + readres + NFSPROC_READ(readargs) = 6; + + void + NFSPROC_WRITECACHE(void) = 7; + + attrstat + NFSPROC_WRITE(writeargs) = 8; + + diropres + NFSPROC_CREATE(createargs) = 9; + + nfsstat + NFSPROC_REMOVE(diropargs) = 10; + + nfsstat + NFSPROC_RENAME(renameargs) = 11; + + nfsstat + NFSPROC_LINK(linkargs) = 12; + + nfsstat + NFSPROC_SYMLINK(symlinkargs) = 13; + + diropres + NFSPROC_MKDIR(createargs) = 14; + + nfsstat + NFSPROC_RMDIR(diropargs) = 15; + + readdirres + NFSPROC_READDIR(readdirargs) = 16; + + statfsres + NFSPROC_STATFS(nfs_fh) = 17; + } = 2; +} = 100003; + +/* Mount v2 */ + +const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */ +const MNTNAMLEN = 255; /* maximum bytes in a name argument */ +const FHSIZE = 32; /* size in bytes of a file handle */ + +/* + * The fhandle is the file handle that the server passes to the client. + * All file operations are done using the file handles to refer to a file + * or a directory. The file handle can contain whatever information the + * server needs to distinguish an individual file. + */ +typedef opaque fhandle[FHSIZE]; + +/* + * If a status of zero is returned, the call completed successfully, and + * a file handle for the directory follows. A non-zero status indicates + * some sort of error. The status corresponds with UNIX error numbers. + */ +union fhstatus switch (unsigned fhs_status) { +case 0: + fhandle fhs_fhandle; +default: + void; +}; + +/* + * The type dirpath is the pathname of a directory + */ +typedef string dirpath; + +/* + * The type name is used for arbitrary names (hostnames, groupnames) + */ +typedef string name; + +/* + * A list of who has what mounted + */ +typedef struct mountbody *mountlist; +struct mountbody { + name ml_hostname; + dirpath ml_directory; + mountlist ml_next; +}; + +/* + * A list of netgroups + */ +typedef struct groupnode *groups; +struct groupnode { + name gr_name; + groups gr_next; +}; + +/* + * A list of what is exported and to whom + */ +typedef struct exportnode *exports; +struct exportnode { + dirpath ex_dir; + groups ex_groups; + exports ex_next; +}; + +/* + * POSIX pathconf information + */ +struct ppathcnf { + int pc_link_max; /* max links allowed */ + short pc_max_canon; /* max line len for a tty */ + short pc_max_input; /* input a tty can eat all at once */ + short pc_name_max; /* max file name length (dir entry) */ + short pc_path_max; /* max path name length (/x/y/x/.. ) */ + short pc_pipe_buf; /* size of a pipe (bytes) */ + u_char pc_vdisable; /* safe char to turn off c_cc[i] */ + char pc_xxx; /* alignment padding; cc_t == char */ + short pc_mask[2]; /* validity and boolean bits */ +}; + +program MOUNTPROG { + /* + * Version one of the mount protocol communicates with version two + * of the NFS protocol. The only connecting point is the fhandle + * structure, which is the same for both protocols. + */ + version MOUNTVERS { + /* + * Does no work. It is made available in all RPC services + * to allow server reponse testing and timing + */ + void + MOUNTPROC_NULL(void) = 0; + + /* + * If fhs_status is 0, then fhs_fhandle contains the + * file handle for the directory. This file handle may + * be used in the NFS protocol. This procedure also adds + * a new entry to the mount list for this client mounting + * the directory. + * Unix authentication required. + */ + fhstatus + MOUNTPROC_MNT(dirpath) = 1; + + /* + * Returns the list of remotely mounted filesystems. The + * mountlist contains one entry for each hostname and + * directory pair. + */ + mountlist + MOUNTPROC_DUMP(void) = 2; + + /* + * Removes the mount list entry for the directory + * Unix authentication required. + */ + void + MOUNTPROC_UMNT(dirpath) = 3; + + /* + * Removes all of the mount list entries for this client + * Unix authentication required. + */ + void + MOUNTPROC_UMNTALL(void) = 4; + + /* + * Returns a list of all the exported filesystems, and which + * machines are allowed to import it. + */ + exports + MOUNTPROC_EXPORT(void) = 5; + + /* + * Identical to MOUNTPROC_EXPORT above + */ + exports + MOUNTPROC_EXPORTALL(void) = 6; + } = 1; + + /* + * Version two of the mount protocol communicates with version two + * of the NFS protocol. + * The only difference from version one is the addition of a POSIX + * pathconf call. + */ + version MOUNTVERS_POSIX { + /* + * Does no work. It is made available in all RPC services + * to allow server reponse testing and timing + */ + void + MOUNTPROC_NULL(void) = 0; + + /* + * If fhs_status is 0, then fhs_fhandle contains the + * file handle for the directory. This file handle may + * be used in the NFS protocol. This procedure also adds + * a new entry to the mount list for this client mounting + * the directory. + * Unix authentication required. + */ + fhstatus + MOUNTPROC_MNT(dirpath) = 1; + + /* + * Returns the list of remotely mounted filesystems. The + * mountlist contains one entry for each hostname and + * directory pair. + */ + mountlist + MOUNTPROC_DUMP(void) = 2; + + /* + * Removes the mount list entry for the directory + * Unix authentication required. + */ + void + MOUNTPROC_UMNT(dirpath) = 3; + + /* + * Removes all of the mount list entries for this client + * Unix authentication required. + */ + void + MOUNTPROC_UMNTALL(void) = 4; + + /* + * Returns a list of all the exported filesystems, and which + * machines are allowed to import it. + */ + exports + MOUNTPROC_EXPORT(void) = 5; + + /* + * Identical to MOUNTPROC_EXPORT above + */ + exports + MOUNTPROC_EXPORTALL(void) = 6; + + /* + * POSIX pathconf info (Sun hack) + */ + ppathcnf + MOUNTPROC_PATHCONF(dirpath) = 7; + } = 2; +} = 100005; + +#ifdef RPC_HDR +%#endif /*!_rpcsvc_nfs_prot_h*/ +#endif diff --git a/nfs/rpc_nfs2_prot_xdr.c b/nfs/rpc_nfs2_prot_xdr.c new file mode 100644 index 0000000..67bbdf1 --- /dev/null +++ b/nfs/rpc_nfs2_prot_xdr.c @@ -0,0 +1,936 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#include "rpc_nfs2_prot.h" +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user or with the express written consent of + * Sun Microsystems, Inc. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +/* + * Copyright (c) 1987, 1990 by Sun Microsystems, Inc. + */ + +/* from @(#)nfs_prot.x 1.3 91/03/11 TIRPC 1.0 */ + +bool_t +xdr_nfsstat (XDR *xdrs, nfsstat *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ftype (XDR *xdrs, ftype *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_nfs_fh (XDR *xdrs, nfs_fh *objp) +{ + register int32_t *buf; + + int i; + if (!xdr_opaque (xdrs, objp->data, NFS_FHSIZE)) + return FALSE; + return TRUE; +} + +bool_t +xdr_nfstime (XDR *xdrs, nfstime *objp) +{ + register int32_t *buf; + + if (!xdr_u_int (xdrs, &objp->seconds)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->useconds)) + return FALSE; + return TRUE; +} + +bool_t +xdr_fattr (XDR *xdrs, fattr *objp) +{ + register int32_t *buf; + + + if (xdrs->x_op == XDR_ENCODE) { + if (!xdr_ftype (xdrs, &objp->type)) + return FALSE; + buf = XDR_INLINE (xdrs, 10 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->nlink)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocksize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->rdev)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fsid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fileid)) + return FALSE; + + } else { + IXDR_PUT_U_LONG(buf, objp->mode); + IXDR_PUT_U_LONG(buf, objp->nlink); + IXDR_PUT_U_LONG(buf, objp->uid); + IXDR_PUT_U_LONG(buf, objp->gid); + IXDR_PUT_U_LONG(buf, objp->size); + IXDR_PUT_U_LONG(buf, objp->blocksize); + IXDR_PUT_U_LONG(buf, objp->rdev); + IXDR_PUT_U_LONG(buf, objp->blocks); + IXDR_PUT_U_LONG(buf, objp->fsid); + IXDR_PUT_U_LONG(buf, objp->fileid); + } + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->ctime)) + return FALSE; + return TRUE; + } else if (xdrs->x_op == XDR_DECODE) { + if (!xdr_ftype (xdrs, &objp->type)) + return FALSE; + buf = XDR_INLINE (xdrs, 10 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->nlink)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocksize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->rdev)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fsid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fileid)) + return FALSE; + + } else { + objp->mode = IXDR_GET_U_LONG(buf); + objp->nlink = IXDR_GET_U_LONG(buf); + objp->uid = IXDR_GET_U_LONG(buf); + objp->gid = IXDR_GET_U_LONG(buf); + objp->size = IXDR_GET_U_LONG(buf); + objp->blocksize = IXDR_GET_U_LONG(buf); + objp->rdev = IXDR_GET_U_LONG(buf); + objp->blocks = IXDR_GET_U_LONG(buf); + objp->fsid = IXDR_GET_U_LONG(buf); + objp->fileid = IXDR_GET_U_LONG(buf); + } + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->ctime)) + return FALSE; + return TRUE; + } + + if (!xdr_ftype (xdrs, &objp->type)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->nlink)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocksize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->rdev)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fsid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->fileid)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->ctime)) + return FALSE; + return TRUE; +} + +bool_t +xdr_sattr (XDR *xdrs, sattr *objp) +{ + register int32_t *buf; + + + if (xdrs->x_op == XDR_ENCODE) { + buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + + } else { + IXDR_PUT_U_LONG(buf, objp->mode); + IXDR_PUT_U_LONG(buf, objp->uid); + IXDR_PUT_U_LONG(buf, objp->gid); + IXDR_PUT_U_LONG(buf, objp->size); + } + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + return TRUE; + } else if (xdrs->x_op == XDR_DECODE) { + buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + + } else { + objp->mode = IXDR_GET_U_LONG(buf); + objp->uid = IXDR_GET_U_LONG(buf); + objp->gid = IXDR_GET_U_LONG(buf); + objp->size = IXDR_GET_U_LONG(buf); + } + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + return TRUE; + } + + if (!xdr_u_int (xdrs, &objp->mode)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->uid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->gid)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->size)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime (xdrs, &objp->mtime)) + return FALSE; + return TRUE; +} + +bool_t +xdr_filename (XDR *xdrs, filename *objp) +{ + register int32_t *buf; + + if (!xdr_string (xdrs, objp, NFS_MAXNAMLEN)) + return FALSE; + return TRUE; +} + +bool_t +xdr_nfspath (XDR *xdrs, nfspath *objp) +{ + register int32_t *buf; + + if (!xdr_string (xdrs, objp, NFS_MAXPATHLEN)) + return FALSE; + return TRUE; +} + +bool_t +xdr_attrstat (XDR *xdrs, attrstat *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS_OK: + if (!xdr_fattr (xdrs, &objp->attrstat_u.attributes)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_sattrargs (XDR *xdrs, sattrargs *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + if (!xdr_sattr (xdrs, &objp->attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_diropargs (XDR *xdrs, diropargs *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh (xdrs, &objp->dir)) + return FALSE; + if (!xdr_filename (xdrs, &objp->name)) + return FALSE; + return TRUE; +} + +bool_t +xdr_diropokres (XDR *xdrs, diropokres *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + if (!xdr_fattr (xdrs, &objp->attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_diropres (XDR *xdrs, diropres *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS_OK: + if (!xdr_diropokres (xdrs, &objp->diropres_u.diropres)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_readlinkres (XDR *xdrs, readlinkres *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS_OK: + if (!xdr_nfspath (xdrs, &objp->readlinkres_u.data)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_readargs (XDR *xdrs, readargs *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->offset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->count)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->totalcount)) + return FALSE; + return TRUE; +} + +bool_t +xdr_readokres (XDR *xdrs, readokres *objp) +{ + register int32_t *buf; + + if (!xdr_fattr (xdrs, &objp->attributes)) + return FALSE; + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS_MAXDATA)) + return FALSE; + return TRUE; +} + +bool_t +xdr_readres (XDR *xdrs, readres *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS_OK: + if (!xdr_readokres (xdrs, &objp->readres_u.reply)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_writeargs (XDR *xdrs, writeargs *objp) +{ + register int32_t *buf; + + + if (xdrs->x_op == XDR_ENCODE) { + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->beginoffset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->offset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->totalcount)) + return FALSE; + + } else { + IXDR_PUT_U_LONG(buf, objp->beginoffset); + IXDR_PUT_U_LONG(buf, objp->offset); + IXDR_PUT_U_LONG(buf, objp->totalcount); + } + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS_MAXDATA)) + return FALSE; + return TRUE; + } else if (xdrs->x_op == XDR_DECODE) { + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->beginoffset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->offset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->totalcount)) + return FALSE; + + } else { + objp->beginoffset = IXDR_GET_U_LONG(buf); + objp->offset = IXDR_GET_U_LONG(buf); + objp->totalcount = IXDR_GET_U_LONG(buf); + } + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS_MAXDATA)) + return FALSE; + return TRUE; + } + + if (!xdr_nfs_fh (xdrs, &objp->file)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->beginoffset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->offset)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->totalcount)) + return FALSE; + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS_MAXDATA)) + return FALSE; + return TRUE; +} + +bool_t +xdr_createargs (XDR *xdrs, createargs *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs (xdrs, &objp->where)) + return FALSE; + if (!xdr_sattr (xdrs, &objp->attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_renameargs (XDR *xdrs, renameargs *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs (xdrs, &objp->from)) + return FALSE; + if (!xdr_diropargs (xdrs, &objp->to)) + return FALSE; + return TRUE; +} + +bool_t +xdr_linkargs (XDR *xdrs, linkargs *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh (xdrs, &objp->from)) + return FALSE; + if (!xdr_diropargs (xdrs, &objp->to)) + return FALSE; + return TRUE; +} + +bool_t +xdr_symlinkargs (XDR *xdrs, symlinkargs *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs (xdrs, &objp->from)) + return FALSE; + if (!xdr_nfspath (xdrs, &objp->to)) + return FALSE; + if (!xdr_sattr (xdrs, &objp->attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_nfscookie (XDR *xdrs, nfscookie objp) +{ + register int32_t *buf; + + if (!xdr_opaque (xdrs, objp, NFS_COOKIESIZE)) + return FALSE; + return TRUE; +} + +bool_t +xdr_readdirargs (XDR *xdrs, readdirargs *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh (xdrs, &objp->dir)) + return FALSE; + if (!xdr_nfscookie (xdrs, objp->cookie)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->count)) + return FALSE; + return TRUE; +} + +bool_t +xdr_entry (XDR *xdrs, entry *objp) +{ + register int32_t *buf; + + if (!xdr_u_int (xdrs, &objp->fileid)) + return FALSE; + if (!xdr_filename (xdrs, &objp->name)) + return FALSE; + if (!xdr_nfscookie (xdrs, objp->cookie)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->nextentry, sizeof (entry), (xdrproc_t) xdr_entry)) + return FALSE; + return TRUE; +} + +bool_t +xdr_dirlist (XDR *xdrs, dirlist *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)&objp->entries, sizeof (entry), (xdrproc_t) xdr_entry)) + return FALSE; + if (!xdr_bool (xdrs, &objp->eof)) + return FALSE; + return TRUE; +} + +bool_t +xdr_readdirres (XDR *xdrs, readdirres *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS_OK: + if (!xdr_dirlist (xdrs, &objp->readdirres_u.reply)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_statfsokres (XDR *xdrs, statfsokres *objp) +{ + register int32_t *buf; + + + if (xdrs->x_op == XDR_ENCODE) { + buf = XDR_INLINE (xdrs, 5 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->tsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bfree)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bavail)) + return FALSE; + } else { + IXDR_PUT_U_LONG(buf, objp->tsize); + IXDR_PUT_U_LONG(buf, objp->bsize); + IXDR_PUT_U_LONG(buf, objp->blocks); + IXDR_PUT_U_LONG(buf, objp->bfree); + IXDR_PUT_U_LONG(buf, objp->bavail); + } + return TRUE; + } else if (xdrs->x_op == XDR_DECODE) { + buf = XDR_INLINE (xdrs, 5 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_u_int (xdrs, &objp->tsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bfree)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bavail)) + return FALSE; + } else { + objp->tsize = IXDR_GET_U_LONG(buf); + objp->bsize = IXDR_GET_U_LONG(buf); + objp->blocks = IXDR_GET_U_LONG(buf); + objp->bfree = IXDR_GET_U_LONG(buf); + objp->bavail = IXDR_GET_U_LONG(buf); + } + return TRUE; + } + + if (!xdr_u_int (xdrs, &objp->tsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bsize)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->blocks)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bfree)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->bavail)) + return FALSE; + return TRUE; +} + +bool_t +xdr_statfsres (XDR *xdrs, statfsres *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS_OK: + if (!xdr_statfsokres (xdrs, &objp->statfsres_u.reply)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_fhandle (XDR *xdrs, fhandle objp) +{ + register int32_t *buf; + + if (!xdr_opaque (xdrs, objp, FHSIZE)) + return FALSE; + return TRUE; +} + +bool_t +xdr_fhstatus (XDR *xdrs, fhstatus *objp) +{ + register int32_t *buf; + + if (!xdr_u_int (xdrs, &objp->fhs_status)) + return FALSE; + switch (objp->fhs_status) { + case 0: + if (!xdr_fhandle (xdrs, objp->fhstatus_u.fhs_fhandle)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_dirpath (XDR *xdrs, dirpath *objp) +{ + register int32_t *buf; + + if (!xdr_string (xdrs, objp, MNTPATHLEN)) + return FALSE; + return TRUE; +} + +bool_t +xdr_name (XDR *xdrs, name *objp) +{ + register int32_t *buf; + + if (!xdr_string (xdrs, objp, MNTNAMLEN)) + return FALSE; + return TRUE; +} + +bool_t +xdr_mountlist (XDR *xdrs, mountlist *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct mountbody), (xdrproc_t) xdr_mountbody)) + return FALSE; + return TRUE; +} + +bool_t +xdr_mountbody (XDR *xdrs, mountbody *objp) +{ + register int32_t *buf; + + if (!xdr_name (xdrs, &objp->ml_hostname)) + return FALSE; + if (!xdr_dirpath (xdrs, &objp->ml_directory)) + return FALSE; + if (!xdr_mountlist (xdrs, &objp->ml_next)) + return FALSE; + return TRUE; +} + +bool_t +xdr_groups (XDR *xdrs, groups *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct groupnode), (xdrproc_t) xdr_groupnode)) + return FALSE; + return TRUE; +} + +bool_t +xdr_groupnode (XDR *xdrs, groupnode *objp) +{ + register int32_t *buf; + + if (!xdr_name (xdrs, &objp->gr_name)) + return FALSE; + if (!xdr_groups (xdrs, &objp->gr_next)) + return FALSE; + return TRUE; +} + +bool_t +xdr_exports (XDR *xdrs, exports *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct exportnode), (xdrproc_t) xdr_exportnode)) + return FALSE; + return TRUE; +} + +bool_t +xdr_exportnode (XDR *xdrs, exportnode *objp) +{ + register int32_t *buf; + + if (!xdr_dirpath (xdrs, &objp->ex_dir)) + return FALSE; + if (!xdr_groups (xdrs, &objp->ex_groups)) + return FALSE; + if (!xdr_exports (xdrs, &objp->ex_next)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ppathcnf (XDR *xdrs, ppathcnf *objp) +{ + register int32_t *buf; + + int i; + + if (xdrs->x_op == XDR_ENCODE) { + buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_int (xdrs, &objp->pc_link_max)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_max_canon)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_max_input)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_name_max)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_path_max)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_pipe_buf)) + return FALSE; + + } else { + IXDR_PUT_LONG(buf, objp->pc_link_max); + IXDR_PUT_SHORT(buf, objp->pc_max_canon); + IXDR_PUT_SHORT(buf, objp->pc_max_input); + IXDR_PUT_SHORT(buf, objp->pc_name_max); + IXDR_PUT_SHORT(buf, objp->pc_path_max); + IXDR_PUT_SHORT(buf, objp->pc_pipe_buf); + } + if (!xdr_u_char (xdrs, &objp->pc_vdisable)) + return FALSE; + if (!xdr_char (xdrs, &objp->pc_xxx)) + return FALSE; + buf = XDR_INLINE (xdrs, ( 2 ) * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_vector (xdrs, (char *)objp->pc_mask, 2, + sizeof (short), (xdrproc_t) xdr_short)) + return FALSE; + } else { + { + register short *genp; + + for (i = 0, genp = objp->pc_mask; + i < 2; ++i) { + IXDR_PUT_SHORT(buf, *genp++); + } + } + } + return TRUE; + } else if (xdrs->x_op == XDR_DECODE) { + buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_int (xdrs, &objp->pc_link_max)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_max_canon)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_max_input)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_name_max)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_path_max)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_pipe_buf)) + return FALSE; + + } else { + objp->pc_link_max = IXDR_GET_LONG(buf); + objp->pc_max_canon = IXDR_GET_SHORT(buf); + objp->pc_max_input = IXDR_GET_SHORT(buf); + objp->pc_name_max = IXDR_GET_SHORT(buf); + objp->pc_path_max = IXDR_GET_SHORT(buf); + objp->pc_pipe_buf = IXDR_GET_SHORT(buf); + } + if (!xdr_u_char (xdrs, &objp->pc_vdisable)) + return FALSE; + if (!xdr_char (xdrs, &objp->pc_xxx)) + return FALSE; + buf = XDR_INLINE (xdrs, ( 2 ) * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_vector (xdrs, (char *)objp->pc_mask, 2, + sizeof (short), (xdrproc_t) xdr_short)) + return FALSE; + } else { + { + register short *genp; + + for (i = 0, genp = objp->pc_mask; + i < 2; ++i) { + *genp++ = IXDR_GET_SHORT(buf); + } + } + } + return TRUE; + } + + if (!xdr_int (xdrs, &objp->pc_link_max)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_max_canon)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_max_input)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_name_max)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_path_max)) + return FALSE; + if (!xdr_short (xdrs, &objp->pc_pipe_buf)) + return FALSE; + if (!xdr_u_char (xdrs, &objp->pc_vdisable)) + return FALSE; + if (!xdr_char (xdrs, &objp->pc_xxx)) + return FALSE; + if (!xdr_vector (xdrs, (char *)objp->pc_mask, 2, + sizeof (short), (xdrproc_t) xdr_short)) + return FALSE; + return TRUE; +} diff --git a/nfs/rpc_nfs3_prot.h b/nfs/rpc_nfs3_prot.h new file mode 100644 index 0000000..abd7d7a --- /dev/null +++ b/nfs/rpc_nfs3_prot.h @@ -0,0 +1,1482 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#ifndef _RPC_NFS3_PROT_H_RPCGEN +#define _RPC_NFS3_PROT_H_RPCGEN + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +#define PROGRAM 100003 +#define VERSION 3 +#define NFS3_FHSIZE 64 +#define NFS3_COOKIEVERFSIZE 8 +#define NFS3_CREATEVERFSIZE 8 +#define NFS3_WRITEVERFSIZE 8 +#if defined(HAVE_XDR_U_INT64_T) +#define xdr_uint64_t xdr_u_int64_t +#elif !defined(HAVE_XDR_UINT64_T) +#if defined(HAVE_XDR_U_HYPER) +#define xdr_uint64_t xdr_u_hyper +#define xdr_int64_t xdr_hyper +#elif defined(HAVE_XDR_U_LONGLONG_T) +#define xdr_uint64_t xdr_u_longlong_t +#define xdr_int64_t xdr_longlong_t +#endif +#endif + +typedef uint64_t uint64; + +typedef int64_t int64; + +typedef u_long uint32; + +typedef long int32; + +typedef char *filename3; + +typedef char *nfspath3; + +typedef uint64 fileid3; + +typedef uint64 cookie3; + +typedef char cookieverf3[NFS3_COOKIEVERFSIZE]; + +typedef char createverf3[NFS3_CREATEVERFSIZE]; + +typedef char writeverf3[NFS3_WRITEVERFSIZE]; + +typedef uint32 uid3; + +typedef uint32 gid3; + +typedef uint64 size3; + +typedef uint64 offset3; + +typedef uint32 mode3; + +typedef uint32 count3; + +enum nfsstat3 { + NFS3_OK = 0, + NFS3ERR_PERM = 1, + NFS3ERR_NOENT = 2, + NFS3ERR_IO = 5, + NFS3ERR_NXIO = 6, + NFS3ERR_ACCES = 13, + NFS3ERR_EXIST = 17, + NFS3ERR_XDEV = 18, + NFS3ERR_NODEV = 19, + NFS3ERR_NOTDIR = 20, + NFS3ERR_ISDIR = 21, + NFS3ERR_INVAL = 22, + NFS3ERR_FBIG = 27, + NFS3ERR_NOSPC = 28, + NFS3ERR_ROFS = 30, + NFS3ERR_MLINK = 31, + NFS3ERR_NAMETOOLONG = 63, + NFS3ERR_NOTEMPTY = 66, + NFS3ERR_DQUOT = 69, + NFS3ERR_STALE = 70, + NFS3ERR_REMOTE = 71, + NFS3ERR_BADHANDLE = 10001, + NFS3ERR_NOT_SYNC = 10002, + NFS3ERR_BAD_COOKIE = 10003, + NFS3ERR_NOTSUPP = 10004, + NFS3ERR_TOOSMALL = 10005, + NFS3ERR_SERVERFAULT = 10006, + NFS3ERR_BADTYPE = 10007, + NFS3ERR_JUKEBOX = 10008, +}; +typedef enum nfsstat3 nfsstat3; + +enum ftype3 { + NF3REG = 1, + NF3DIR = 2, + NF3BLK = 3, + NF3CHR = 4, + NF3LNK = 5, + NF3SOCK = 6, + NF3FIFO = 7, +}; +typedef enum ftype3 ftype3; + +struct specdata3 { + uint32 specdata1; + uint32 specdata2; +}; +typedef struct specdata3 specdata3; + +struct nfs_fh3 { + struct { + u_int data_len; + char *data_val; + } data; +}; +typedef struct nfs_fh3 nfs_fh3; + +struct nfstime3 { + uint32 seconds; + uint32 nseconds; +}; +typedef struct nfstime3 nfstime3; + +struct fattr3 { + ftype3 type; + mode3 mode; + uint32 nlink; + uid3 uid; + gid3 gid; + size3 size; + size3 used; + specdata3 rdev; + uint64 fsid; + fileid3 fileid; + nfstime3 atime; + nfstime3 mtime; + nfstime3 ctime; +}; +typedef struct fattr3 fattr3; + +struct post_op_attr { + bool_t attributes_follow; + union { + fattr3 attributes; + } post_op_attr_u; +}; +typedef struct post_op_attr post_op_attr; + +struct wcc_attr { + size3 size; + nfstime3 mtime; + nfstime3 ctime; +}; +typedef struct wcc_attr wcc_attr; + +struct pre_op_attr { + bool_t attributes_follow; + union { + wcc_attr attributes; + } pre_op_attr_u; +}; +typedef struct pre_op_attr pre_op_attr; + +struct wcc_data { + pre_op_attr before; + post_op_attr after; +}; +typedef struct wcc_data wcc_data; + +struct post_op_fh3 { + bool_t handle_follows; + union { + nfs_fh3 handle; + } post_op_fh3_u; +}; +typedef struct post_op_fh3 post_op_fh3; + +enum time_how { + DONT_CHANGE = 0, + SET_TO_SERVER_TIME = 1, + SET_TO_CLIENT_TIME = 2, +}; +typedef enum time_how time_how; + +struct set_mode3 { + bool_t set_it; + union { + mode3 mode; + } set_mode3_u; +}; +typedef struct set_mode3 set_mode3; + +struct set_uid3 { + bool_t set_it; + union { + uid3 uid; + } set_uid3_u; +}; +typedef struct set_uid3 set_uid3; + +struct set_gid3 { + bool_t set_it; + union { + gid3 gid; + } set_gid3_u; +}; +typedef struct set_gid3 set_gid3; + +struct set_size3 { + bool_t set_it; + union { + size3 size; + } set_size3_u; +}; +typedef struct set_size3 set_size3; + +struct set_atime { + time_how set_it; + union { + nfstime3 atime; + } set_atime_u; +}; +typedef struct set_atime set_atime; + +struct set_mtime { + time_how set_it; + union { + nfstime3 mtime; + } set_mtime_u; +}; +typedef struct set_mtime set_mtime; + +struct sattr3 { + set_mode3 mode; + set_uid3 uid; + set_gid3 gid; + set_size3 size; + set_atime atime; + set_mtime mtime; +}; +typedef struct sattr3 sattr3; + +struct diropargs3 { + nfs_fh3 dir; + filename3 name; +}; +typedef struct diropargs3 diropargs3; + +struct GETATTR3args { + nfs_fh3 object; +}; +typedef struct GETATTR3args GETATTR3args; + +struct GETATTR3resok { + fattr3 obj_attributes; +}; +typedef struct GETATTR3resok GETATTR3resok; + +struct GETATTR3res { + nfsstat3 status; + union { + GETATTR3resok resok; + } GETATTR3res_u; +}; +typedef struct GETATTR3res GETATTR3res; + +struct sattrguard3 { + bool_t check; + union { + nfstime3 obj_ctime; + } sattrguard3_u; +}; +typedef struct sattrguard3 sattrguard3; + +struct SETATTR3args { + nfs_fh3 object; + sattr3 new_attributes; + sattrguard3 guard; +}; +typedef struct SETATTR3args SETATTR3args; + +struct SETATTR3resok { + wcc_data obj_wcc; +}; +typedef struct SETATTR3resok SETATTR3resok; + +struct SETATTR3resfail { + wcc_data obj_wcc; +}; +typedef struct SETATTR3resfail SETATTR3resfail; + +struct SETATTR3res { + nfsstat3 status; + union { + SETATTR3resok resok; + SETATTR3resfail resfail; + } SETATTR3res_u; +}; +typedef struct SETATTR3res SETATTR3res; + +struct LOOKUP3args { + diropargs3 what; +}; +typedef struct LOOKUP3args LOOKUP3args; + +struct LOOKUP3resok { + nfs_fh3 object; + post_op_attr obj_attributes; + post_op_attr dir_attributes; +}; +typedef struct LOOKUP3resok LOOKUP3resok; + +struct LOOKUP3resfail { + post_op_attr dir_attributes; +}; +typedef struct LOOKUP3resfail LOOKUP3resfail; + +struct LOOKUP3res { + nfsstat3 status; + union { + LOOKUP3resok resok; + LOOKUP3resfail resfail; + } LOOKUP3res_u; +}; +typedef struct LOOKUP3res LOOKUP3res; +#define ACCESS3_READ 0x0001 +#define ACCESS3_LOOKUP 0x0002 +#define ACCESS3_MODIFY 0x0004 +#define ACCESS3_EXTEND 0x0008 +#define ACCESS3_DELETE 0x0010 +#define ACCESS3_EXECUTE 0x0020 + +struct ACCESS3args { + nfs_fh3 object; + uint32 access; +}; +typedef struct ACCESS3args ACCESS3args; + +struct ACCESS3resok { + post_op_attr obj_attributes; + uint32 access; +}; +typedef struct ACCESS3resok ACCESS3resok; + +struct ACCESS3resfail { + post_op_attr obj_attributes; +}; +typedef struct ACCESS3resfail ACCESS3resfail; + +struct ACCESS3res { + nfsstat3 status; + union { + ACCESS3resok resok; + ACCESS3resfail resfail; + } ACCESS3res_u; +}; +typedef struct ACCESS3res ACCESS3res; + +struct READLINK3args { + nfs_fh3 symlink; +}; +typedef struct READLINK3args READLINK3args; + +struct READLINK3resok { + post_op_attr symlink_attributes; + nfspath3 data; +}; +typedef struct READLINK3resok READLINK3resok; + +struct READLINK3resfail { + post_op_attr symlink_attributes; +}; +typedef struct READLINK3resfail READLINK3resfail; + +struct READLINK3res { + nfsstat3 status; + union { + READLINK3resok resok; + READLINK3resfail resfail; + } READLINK3res_u; +}; +typedef struct READLINK3res READLINK3res; + +struct READ3args { + nfs_fh3 file; + offset3 offset; + count3 count; +}; +typedef struct READ3args READ3args; + +struct READ3resok { + post_op_attr file_attributes; + count3 count; + bool_t eof; + struct { + u_int data_len; + char *data_val; + } data; +}; +typedef struct READ3resok READ3resok; + +struct READ3resfail { + post_op_attr file_attributes; +}; +typedef struct READ3resfail READ3resfail; + +struct READ3res { + nfsstat3 status; + union { + READ3resok resok; + READ3resfail resfail; + } READ3res_u; +}; +typedef struct READ3res READ3res; + +enum stable_how { + UNSTABLE = 0, + DATA_SYNC = 1, + FILE_SYNC = 2, +}; +typedef enum stable_how stable_how; + +struct WRITE3args { + nfs_fh3 file; + offset3 offset; + count3 count; + stable_how stable; + struct { + u_int data_len; + char *data_val; + } data; +}; +typedef struct WRITE3args WRITE3args; + +struct WRITE3resok { + wcc_data file_wcc; + count3 count; + stable_how committed; + writeverf3 verf; +}; +typedef struct WRITE3resok WRITE3resok; + +struct WRITE3resfail { + wcc_data file_wcc; +}; +typedef struct WRITE3resfail WRITE3resfail; + +struct WRITE3res { + nfsstat3 status; + union { + WRITE3resok resok; + WRITE3resfail resfail; + } WRITE3res_u; +}; +typedef struct WRITE3res WRITE3res; + +enum createmode3 { + UNCHECKED = 0, + GUARDED = 1, + EXCLUSIVE = 2, +}; +typedef enum createmode3 createmode3; + +struct createhow3 { + createmode3 mode; + union { + sattr3 obj_attributes; + createverf3 verf; + } createhow3_u; +}; +typedef struct createhow3 createhow3; + +struct CREATE3args { + diropargs3 where; + createhow3 how; +}; +typedef struct CREATE3args CREATE3args; + +struct CREATE3resok { + post_op_fh3 obj; + post_op_attr obj_attributes; + wcc_data dir_wcc; +}; +typedef struct CREATE3resok CREATE3resok; + +struct CREATE3resfail { + wcc_data dir_wcc; +}; +typedef struct CREATE3resfail CREATE3resfail; + +struct CREATE3res { + nfsstat3 status; + union { + CREATE3resok resok; + CREATE3resfail resfail; + } CREATE3res_u; +}; +typedef struct CREATE3res CREATE3res; + +struct MKDIR3args { + diropargs3 where; + sattr3 attributes; +}; +typedef struct MKDIR3args MKDIR3args; + +struct MKDIR3resok { + post_op_fh3 obj; + post_op_attr obj_attributes; + wcc_data dir_wcc; +}; +typedef struct MKDIR3resok MKDIR3resok; + +struct MKDIR3resfail { + wcc_data dir_wcc; +}; +typedef struct MKDIR3resfail MKDIR3resfail; + +struct MKDIR3res { + nfsstat3 status; + union { + MKDIR3resok resok; + MKDIR3resfail resfail; + } MKDIR3res_u; +}; +typedef struct MKDIR3res MKDIR3res; + +struct symlinkdata3 { + sattr3 symlink_attributes; + nfspath3 symlink_data; +}; +typedef struct symlinkdata3 symlinkdata3; + +struct SYMLINK3args { + diropargs3 where; + symlinkdata3 symlink; +}; +typedef struct SYMLINK3args SYMLINK3args; + +struct SYMLINK3resok { + post_op_fh3 obj; + post_op_attr obj_attributes; + wcc_data dir_wcc; +}; +typedef struct SYMLINK3resok SYMLINK3resok; + +struct SYMLINK3resfail { + wcc_data dir_wcc; +}; +typedef struct SYMLINK3resfail SYMLINK3resfail; + +struct SYMLINK3res { + nfsstat3 status; + union { + SYMLINK3resok resok; + SYMLINK3resfail resfail; + } SYMLINK3res_u; +}; +typedef struct SYMLINK3res SYMLINK3res; + +struct devicedata3 { + sattr3 dev_attributes; + specdata3 spec; +}; +typedef struct devicedata3 devicedata3; + +struct mknoddata3 { + ftype3 type; + union { + devicedata3 device; + sattr3 pipe_attributes; + } mknoddata3_u; +}; +typedef struct mknoddata3 mknoddata3; + +struct MKNOD3args { + diropargs3 where; + mknoddata3 what; +}; +typedef struct MKNOD3args MKNOD3args; + +struct MKNOD3resok { + post_op_fh3 obj; + post_op_attr obj_attributes; + wcc_data dir_wcc; +}; +typedef struct MKNOD3resok MKNOD3resok; + +struct MKNOD3resfail { + wcc_data dir_wcc; +}; +typedef struct MKNOD3resfail MKNOD3resfail; + +struct MKNOD3res { + nfsstat3 status; + union { + MKNOD3resok resok; + MKNOD3resfail resfail; + } MKNOD3res_u; +}; +typedef struct MKNOD3res MKNOD3res; + +struct REMOVE3args { + diropargs3 object; +}; +typedef struct REMOVE3args REMOVE3args; + +struct REMOVE3resok { + wcc_data dir_wcc; +}; +typedef struct REMOVE3resok REMOVE3resok; + +struct REMOVE3resfail { + wcc_data dir_wcc; +}; +typedef struct REMOVE3resfail REMOVE3resfail; + +struct REMOVE3res { + nfsstat3 status; + union { + REMOVE3resok resok; + REMOVE3resfail resfail; + } REMOVE3res_u; +}; +typedef struct REMOVE3res REMOVE3res; + +struct RMDIR3args { + diropargs3 object; +}; +typedef struct RMDIR3args RMDIR3args; + +struct RMDIR3resok { + wcc_data dir_wcc; +}; +typedef struct RMDIR3resok RMDIR3resok; + +struct RMDIR3resfail { + wcc_data dir_wcc; +}; +typedef struct RMDIR3resfail RMDIR3resfail; + +struct RMDIR3res { + nfsstat3 status; + union { + RMDIR3resok resok; + RMDIR3resfail resfail; + } RMDIR3res_u; +}; +typedef struct RMDIR3res RMDIR3res; + +struct RENAME3args { + diropargs3 from; + diropargs3 to; +}; +typedef struct RENAME3args RENAME3args; + +struct RENAME3resok { + wcc_data fromdir_wcc; + wcc_data todir_wcc; +}; +typedef struct RENAME3resok RENAME3resok; + +struct RENAME3resfail { + wcc_data fromdir_wcc; + wcc_data todir_wcc; +}; +typedef struct RENAME3resfail RENAME3resfail; + +struct RENAME3res { + nfsstat3 status; + union { + RENAME3resok resok; + RENAME3resfail resfail; + } RENAME3res_u; +}; +typedef struct RENAME3res RENAME3res; + +struct LINK3args { + nfs_fh3 file; + diropargs3 link; +}; +typedef struct LINK3args LINK3args; + +struct LINK3resok { + post_op_attr file_attributes; + wcc_data linkdir_wcc; +}; +typedef struct LINK3resok LINK3resok; + +struct LINK3resfail { + post_op_attr file_attributes; + wcc_data linkdir_wcc; +}; +typedef struct LINK3resfail LINK3resfail; + +struct LINK3res { + nfsstat3 status; + union { + LINK3resok resok; + LINK3resfail resfail; + } LINK3res_u; +}; +typedef struct LINK3res LINK3res; + +struct READDIR3args { + nfs_fh3 dir; + cookie3 cookie; + cookieverf3 cookieverf; + count3 count; +}; +typedef struct READDIR3args READDIR3args; + +struct entry3 { + fileid3 fileid; + filename3 name; + cookie3 cookie; + struct entry3 *nextentry; +}; +typedef struct entry3 entry3; + +struct dirlist3 { + entry3 *entries; + bool_t eof; +}; +typedef struct dirlist3 dirlist3; + +struct READDIR3resok { + post_op_attr dir_attributes; + cookieverf3 cookieverf; + dirlist3 reply; +}; +typedef struct READDIR3resok READDIR3resok; + +struct READDIR3resfail { + post_op_attr dir_attributes; +}; +typedef struct READDIR3resfail READDIR3resfail; + +struct READDIR3res { + nfsstat3 status; + union { + READDIR3resok resok; + READDIR3resfail resfail; + } READDIR3res_u; +}; +typedef struct READDIR3res READDIR3res; + +struct READDIRPLUS3args { + nfs_fh3 dir; + cookie3 cookie; + cookieverf3 cookieverf; + count3 dircount; + count3 maxcount; +}; +typedef struct READDIRPLUS3args READDIRPLUS3args; + +struct entryplus3 { + fileid3 fileid; + filename3 name; + cookie3 cookie; + post_op_attr name_attributes; + post_op_fh3 name_handle; + struct entryplus3 *nextentry; +}; +typedef struct entryplus3 entryplus3; + +struct dirlistplus3 { + entryplus3 *entries; + bool_t eof; +}; +typedef struct dirlistplus3 dirlistplus3; + +struct READDIRPLUS3resok { + post_op_attr dir_attributes; + cookieverf3 cookieverf; + dirlistplus3 reply; +}; +typedef struct READDIRPLUS3resok READDIRPLUS3resok; + +struct READDIRPLUS3resfail { + post_op_attr dir_attributes; +}; +typedef struct READDIRPLUS3resfail READDIRPLUS3resfail; + +struct READDIRPLUS3res { + nfsstat3 status; + union { + READDIRPLUS3resok resok; + READDIRPLUS3resfail resfail; + } READDIRPLUS3res_u; +}; +typedef struct READDIRPLUS3res READDIRPLUS3res; + +struct FSSTAT3args { + nfs_fh3 fsroot; +}; +typedef struct FSSTAT3args FSSTAT3args; + +struct FSSTAT3resok { + post_op_attr obj_attributes; + size3 tbytes; + size3 fbytes; + size3 abytes; + size3 tfiles; + size3 ffiles; + size3 afiles; + uint32 invarsec; +}; +typedef struct FSSTAT3resok FSSTAT3resok; + +struct FSSTAT3resfail { + post_op_attr obj_attributes; +}; +typedef struct FSSTAT3resfail FSSTAT3resfail; + +struct FSSTAT3res { + nfsstat3 status; + union { + FSSTAT3resok resok; + FSSTAT3resfail resfail; + } FSSTAT3res_u; +}; +typedef struct FSSTAT3res FSSTAT3res; +#define FSF3_LINK 0x0001 +#define FSF3_SYMLINK 0x0002 +#define FSF3_HOMOGENEOUS 0x0008 +#define FSF3_CANSETTIME 0x0010 + +struct FSINFO3args { + nfs_fh3 fsroot; +}; +typedef struct FSINFO3args FSINFO3args; + +struct FSINFO3resok { + post_op_attr obj_attributes; + uint32 rtmax; + uint32 rtpref; + uint32 rtmult; + uint32 wtmax; + uint32 wtpref; + uint32 wtmult; + uint32 dtpref; + size3 maxfilesize; + nfstime3 time_delta; + uint32 properties; +}; +typedef struct FSINFO3resok FSINFO3resok; + +struct FSINFO3resfail { + post_op_attr obj_attributes; +}; +typedef struct FSINFO3resfail FSINFO3resfail; + +struct FSINFO3res { + nfsstat3 status; + union { + FSINFO3resok resok; + FSINFO3resfail resfail; + } FSINFO3res_u; +}; +typedef struct FSINFO3res FSINFO3res; + +struct PATHCONF3args { + nfs_fh3 object; +}; +typedef struct PATHCONF3args PATHCONF3args; + +struct PATHCONF3resok { + post_op_attr obj_attributes; + uint32 linkmax; + uint32 name_max; + bool_t no_trunc; + bool_t chown_restricted; + bool_t case_insensitive; + bool_t case_preserving; +}; +typedef struct PATHCONF3resok PATHCONF3resok; + +struct PATHCONF3resfail { + post_op_attr obj_attributes; +}; +typedef struct PATHCONF3resfail PATHCONF3resfail; + +struct PATHCONF3res { + nfsstat3 status; + union { + PATHCONF3resok resok; + PATHCONF3resfail resfail; + } PATHCONF3res_u; +}; +typedef struct PATHCONF3res PATHCONF3res; + +struct COMMIT3args { + nfs_fh3 file; + offset3 offset; + count3 count; +}; +typedef struct COMMIT3args COMMIT3args; + +struct COMMIT3resok { + wcc_data file_wcc; + writeverf3 verf; +}; +typedef struct COMMIT3resok COMMIT3resok; + +struct COMMIT3resfail { + wcc_data file_wcc; +}; +typedef struct COMMIT3resfail COMMIT3resfail; + +struct COMMIT3res { + nfsstat3 status; + union { + COMMIT3resok resok; + COMMIT3resfail resfail; + } COMMIT3res_u; +}; +typedef struct COMMIT3res COMMIT3res; +#define MNTPATHLEN3 1024 +#define MNTNAMLEN3 255 +#define FHSIZE3 64 + +typedef struct { + u_int fhandle3_len; + char *fhandle3_val; +} fhandle3; + +typedef char *dirpath3; + +typedef char *name3; + +enum mountstat3 { + MNT3_OK = 0, + MNT3ERR_PERM = 1, + MNT3ERR_NOENT = 2, + MNT3ERR_IO = 5, + MNT3ERR_ACCES = 13, + MNT3ERR_NOTDIR = 20, + MNT3ERR_INVAL = 22, + MNT3ERR_NAMETOOLONG = 63, + MNT3ERR_NOTSUPP = 10004, + MNT3ERR_SERVERFAULT = 10006, +}; +typedef enum mountstat3 mountstat3; + +struct mountres3_ok { + fhandle3 fhandle; + struct { + u_int auth_flavors_len; + int *auth_flavors_val; + } auth_flavors; +}; +typedef struct mountres3_ok mountres3_ok; + +struct mountres3 { + mountstat3 fhs_status; + union { + mountres3_ok mountinfo; + } mountres3_u; +}; +typedef struct mountres3 mountres3; + +typedef struct mountbody3 *mountlist3; + +struct mountbody3 { + name3 ml_hostname; + dirpath3 ml_directory; + mountlist3 ml_next; +}; +typedef struct mountbody3 mountbody3; + +typedef struct groupnode3 *groups3; + +struct groupnode3 { + name3 gr_name; + groups3 gr_next; +}; +typedef struct groupnode3 groupnode3; + +typedef struct exportnode3 *exports3; + +struct exportnode3 { + dirpath3 ex_dir; + groups3 ex_groups; + exports3 ex_next; +}; +typedef struct exportnode3 exportnode3; + +#define NFS_PROGRAM 100003 +#define NFS_V3 3 + +#if defined(__STDC__) || defined(__cplusplus) +#define NFSPROC3_NULL 0 +extern void * nfsproc3_null_3(CLIENT *); +extern void * nfsproc3_null_3_svc(struct svc_req *); +#define NFSPROC3_GETATTR 1 +extern GETATTR3res * nfsproc3_getattr_3(GETATTR3args , CLIENT *); +extern GETATTR3res * nfsproc3_getattr_3_svc(GETATTR3args , struct svc_req *); +#define NFSPROC3_SETATTR 2 +extern SETATTR3res * nfsproc3_setattr_3(SETATTR3args , CLIENT *); +extern SETATTR3res * nfsproc3_setattr_3_svc(SETATTR3args , struct svc_req *); +#define NFSPROC3_LOOKUP 3 +extern LOOKUP3res * nfsproc3_lookup_3(LOOKUP3args , CLIENT *); +extern LOOKUP3res * nfsproc3_lookup_3_svc(LOOKUP3args , struct svc_req *); +#define NFSPROC3_ACCESS 4 +extern ACCESS3res * nfsproc3_access_3(ACCESS3args , CLIENT *); +extern ACCESS3res * nfsproc3_access_3_svc(ACCESS3args , struct svc_req *); +#define NFSPROC3_READLINK 5 +extern READLINK3res * nfsproc3_readlink_3(READLINK3args , CLIENT *); +extern READLINK3res * nfsproc3_readlink_3_svc(READLINK3args , struct svc_req *); +#define NFSPROC3_READ 6 +extern READ3res * nfsproc3_read_3(READ3args , CLIENT *); +extern READ3res * nfsproc3_read_3_svc(READ3args , struct svc_req *); +#define NFSPROC3_WRITE 7 +extern WRITE3res * nfsproc3_write_3(WRITE3args , CLIENT *); +extern WRITE3res * nfsproc3_write_3_svc(WRITE3args , struct svc_req *); +#define NFSPROC3_CREATE 8 +extern CREATE3res * nfsproc3_create_3(CREATE3args , CLIENT *); +extern CREATE3res * nfsproc3_create_3_svc(CREATE3args , struct svc_req *); +#define NFSPROC3_MKDIR 9 +extern MKDIR3res * nfsproc3_mkdir_3(MKDIR3args , CLIENT *); +extern MKDIR3res * nfsproc3_mkdir_3_svc(MKDIR3args , struct svc_req *); +#define NFSPROC3_SYMLINK 10 +extern SYMLINK3res * nfsproc3_symlink_3(SYMLINK3args , CLIENT *); +extern SYMLINK3res * nfsproc3_symlink_3_svc(SYMLINK3args , struct svc_req *); +#define NFSPROC3_MKNOD 11 +extern MKNOD3res * nfsproc3_mknod_3(MKNOD3args , CLIENT *); +extern MKNOD3res * nfsproc3_mknod_3_svc(MKNOD3args , struct svc_req *); +#define NFSPROC3_REMOVE 12 +extern REMOVE3res * nfsproc3_remove_3(REMOVE3args , CLIENT *); +extern REMOVE3res * nfsproc3_remove_3_svc(REMOVE3args , struct svc_req *); +#define NFSPROC3_RMDIR 13 +extern RMDIR3res * nfsproc3_rmdir_3(RMDIR3args , CLIENT *); +extern RMDIR3res * nfsproc3_rmdir_3_svc(RMDIR3args , struct svc_req *); +#define NFSPROC3_RENAME 14 +extern RENAME3res * nfsproc3_rename_3(RENAME3args , CLIENT *); +extern RENAME3res * nfsproc3_rename_3_svc(RENAME3args , struct svc_req *); +#define NFSPROC3_LINK 15 +extern LINK3res * nfsproc3_link_3(LINK3args , CLIENT *); +extern LINK3res * nfsproc3_link_3_svc(LINK3args , struct svc_req *); +#define NFSPROC3_READDIR 16 +extern READDIR3res * nfsproc3_readdir_3(READDIR3args , CLIENT *); +extern READDIR3res * nfsproc3_readdir_3_svc(READDIR3args , struct svc_req *); +#define NFSPROC3_READDIRPLUS 17 +extern READDIRPLUS3res * nfsproc3_readdirplus_3(READDIRPLUS3args , CLIENT *); +extern READDIRPLUS3res * nfsproc3_readdirplus_3_svc(READDIRPLUS3args , struct svc_req *); +#define NFSPROC3_FSSTAT 18 +extern FSSTAT3res * nfsproc3_fsstat_3(FSSTAT3args , CLIENT *); +extern FSSTAT3res * nfsproc3_fsstat_3_svc(FSSTAT3args , struct svc_req *); +#define NFSPROC3_FSINFO 19 +extern FSINFO3res * nfsproc3_fsinfo_3(FSINFO3args , CLIENT *); +extern FSINFO3res * nfsproc3_fsinfo_3_svc(FSINFO3args , struct svc_req *); +#define NFSPROC3_PATHCONF 20 +extern PATHCONF3res * nfsproc3_pathconf_3(PATHCONF3args , CLIENT *); +extern PATHCONF3res * nfsproc3_pathconf_3_svc(PATHCONF3args , struct svc_req *); +#define NFSPROC3_COMMIT 21 +extern COMMIT3res * nfsproc3_commit_3(COMMIT3args , CLIENT *); +extern COMMIT3res * nfsproc3_commit_3_svc(COMMIT3args , struct svc_req *); +extern int nfs_program_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t); + +#else /* K&R C */ +#define NFSPROC3_NULL 0 +extern void * nfsproc3_null_3(); +extern void * nfsproc3_null_3_svc(); +#define NFSPROC3_GETATTR 1 +extern GETATTR3res * nfsproc3_getattr_3(); +extern GETATTR3res * nfsproc3_getattr_3_svc(); +#define NFSPROC3_SETATTR 2 +extern SETATTR3res * nfsproc3_setattr_3(); +extern SETATTR3res * nfsproc3_setattr_3_svc(); +#define NFSPROC3_LOOKUP 3 +extern LOOKUP3res * nfsproc3_lookup_3(); +extern LOOKUP3res * nfsproc3_lookup_3_svc(); +#define NFSPROC3_ACCESS 4 +extern ACCESS3res * nfsproc3_access_3(); +extern ACCESS3res * nfsproc3_access_3_svc(); +#define NFSPROC3_READLINK 5 +extern READLINK3res * nfsproc3_readlink_3(); +extern READLINK3res * nfsproc3_readlink_3_svc(); +#define NFSPROC3_READ 6 +extern READ3res * nfsproc3_read_3(); +extern READ3res * nfsproc3_read_3_svc(); +#define NFSPROC3_WRITE 7 +extern WRITE3res * nfsproc3_write_3(); +extern WRITE3res * nfsproc3_write_3_svc(); +#define NFSPROC3_CREATE 8 +extern CREATE3res * nfsproc3_create_3(); +extern CREATE3res * nfsproc3_create_3_svc(); +#define NFSPROC3_MKDIR 9 +extern MKDIR3res * nfsproc3_mkdir_3(); +extern MKDIR3res * nfsproc3_mkdir_3_svc(); +#define NFSPROC3_SYMLINK 10 +extern SYMLINK3res * nfsproc3_symlink_3(); +extern SYMLINK3res * nfsproc3_symlink_3_svc(); +#define NFSPROC3_MKNOD 11 +extern MKNOD3res * nfsproc3_mknod_3(); +extern MKNOD3res * nfsproc3_mknod_3_svc(); +#define NFSPROC3_REMOVE 12 +extern REMOVE3res * nfsproc3_remove_3(); +extern REMOVE3res * nfsproc3_remove_3_svc(); +#define NFSPROC3_RMDIR 13 +extern RMDIR3res * nfsproc3_rmdir_3(); +extern RMDIR3res * nfsproc3_rmdir_3_svc(); +#define NFSPROC3_RENAME 14 +extern RENAME3res * nfsproc3_rename_3(); +extern RENAME3res * nfsproc3_rename_3_svc(); +#define NFSPROC3_LINK 15 +extern LINK3res * nfsproc3_link_3(); +extern LINK3res * nfsproc3_link_3_svc(); +#define NFSPROC3_READDIR 16 +extern READDIR3res * nfsproc3_readdir_3(); +extern READDIR3res * nfsproc3_readdir_3_svc(); +#define NFSPROC3_READDIRPLUS 17 +extern READDIRPLUS3res * nfsproc3_readdirplus_3(); +extern READDIRPLUS3res * nfsproc3_readdirplus_3_svc(); +#define NFSPROC3_FSSTAT 18 +extern FSSTAT3res * nfsproc3_fsstat_3(); +extern FSSTAT3res * nfsproc3_fsstat_3_svc(); +#define NFSPROC3_FSINFO 19 +extern FSINFO3res * nfsproc3_fsinfo_3(); +extern FSINFO3res * nfsproc3_fsinfo_3_svc(); +#define NFSPROC3_PATHCONF 20 +extern PATHCONF3res * nfsproc3_pathconf_3(); +extern PATHCONF3res * nfsproc3_pathconf_3_svc(); +#define NFSPROC3_COMMIT 21 +extern COMMIT3res * nfsproc3_commit_3(); +extern COMMIT3res * nfsproc3_commit_3_svc(); +extern int nfs_program_3_freeresult (); +#endif /* K&R C */ + +#define MOUNT_PROGRAM 100005 +#define MOUNT_V3 3 + +#if defined(__STDC__) || defined(__cplusplus) +#define MOUNTPROC3_NULL 0 +extern void * mountproc3_null_3(CLIENT *); +extern void * mountproc3_null_3_svc(struct svc_req *); +#define MOUNTPROC3_MNT 1 +extern mountres3 * mountproc3_mnt_3(dirpath3 , CLIENT *); +extern mountres3 * mountproc3_mnt_3_svc(dirpath3 , struct svc_req *); +#define MOUNTPROC3_DUMP 2 +extern mountlist3 * mountproc3_dump_3(CLIENT *); +extern mountlist3 * mountproc3_dump_3_svc(struct svc_req *); +#define MOUNTPROC3_UMNT 3 +extern void * mountproc3_umnt_3(dirpath3 , CLIENT *); +extern void * mountproc3_umnt_3_svc(dirpath3 , struct svc_req *); +#define MOUNTPROC3_UMNTALL 4 +extern void * mountproc3_umntall_3(CLIENT *); +extern void * mountproc3_umntall_3_svc(struct svc_req *); +#define MOUNTPROC3_EXPORT 5 +extern exports3 * mountproc3_export_3(CLIENT *); +extern exports3 * mountproc3_export_3_svc(struct svc_req *); +extern int mount_program_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t); + +#else /* K&R C */ +#define MOUNTPROC3_NULL 0 +extern void * mountproc3_null_3(); +extern void * mountproc3_null_3_svc(); +#define MOUNTPROC3_MNT 1 +extern mountres3 * mountproc3_mnt_3(); +extern mountres3 * mountproc3_mnt_3_svc(); +#define MOUNTPROC3_DUMP 2 +extern mountlist3 * mountproc3_dump_3(); +extern mountlist3 * mountproc3_dump_3_svc(); +#define MOUNTPROC3_UMNT 3 +extern void * mountproc3_umnt_3(); +extern void * mountproc3_umnt_3_svc(); +#define MOUNTPROC3_UMNTALL 4 +extern void * mountproc3_umntall_3(); +extern void * mountproc3_umntall_3_svc(); +#define MOUNTPROC3_EXPORT 5 +extern exports3 * mountproc3_export_3(); +extern exports3 * mountproc3_export_3_svc(); +extern int mount_program_3_freeresult (); +#endif /* K&R C */ + +/* the xdr functions */ + +#if defined(__STDC__) || defined(__cplusplus) +extern bool_t xdr_uint64 (XDR *, uint64*); +extern bool_t xdr_int64 (XDR *, int64*); +extern bool_t xdr_uint32 (XDR *, uint32*); +extern bool_t xdr_int32 (XDR *, int32*); +extern bool_t xdr_filename3 (XDR *, filename3*); +extern bool_t xdr_nfspath3 (XDR *, nfspath3*); +extern bool_t xdr_fileid3 (XDR *, fileid3*); +extern bool_t xdr_cookie3 (XDR *, cookie3*); +extern bool_t xdr_cookieverf3 (XDR *, cookieverf3); +extern bool_t xdr_createverf3 (XDR *, createverf3); +extern bool_t xdr_writeverf3 (XDR *, writeverf3); +extern bool_t xdr_uid3 (XDR *, uid3*); +extern bool_t xdr_gid3 (XDR *, gid3*); +extern bool_t xdr_size3 (XDR *, size3*); +extern bool_t xdr_offset3 (XDR *, offset3*); +extern bool_t xdr_mode3 (XDR *, mode3*); +extern bool_t xdr_count3 (XDR *, count3*); +extern bool_t xdr_nfsstat3 (XDR *, nfsstat3*); +extern bool_t xdr_ftype3 (XDR *, ftype3*); +extern bool_t xdr_specdata3 (XDR *, specdata3*); +extern bool_t xdr_nfs_fh3 (XDR *, nfs_fh3*); +extern bool_t xdr_nfstime3 (XDR *, nfstime3*); +extern bool_t xdr_fattr3 (XDR *, fattr3*); +extern bool_t xdr_post_op_attr (XDR *, post_op_attr*); +extern bool_t xdr_wcc_attr (XDR *, wcc_attr*); +extern bool_t xdr_pre_op_attr (XDR *, pre_op_attr*); +extern bool_t xdr_wcc_data (XDR *, wcc_data*); +extern bool_t xdr_post_op_fh3 (XDR *, post_op_fh3*); +extern bool_t xdr_time_how (XDR *, time_how*); +extern bool_t xdr_set_mode3 (XDR *, set_mode3*); +extern bool_t xdr_set_uid3 (XDR *, set_uid3*); +extern bool_t xdr_set_gid3 (XDR *, set_gid3*); +extern bool_t xdr_set_size3 (XDR *, set_size3*); +extern bool_t xdr_set_atime (XDR *, set_atime*); +extern bool_t xdr_set_mtime (XDR *, set_mtime*); +extern bool_t xdr_sattr3 (XDR *, sattr3*); +extern bool_t xdr_diropargs3 (XDR *, diropargs3*); +extern bool_t xdr_GETATTR3args (XDR *, GETATTR3args*); +extern bool_t xdr_GETATTR3resok (XDR *, GETATTR3resok*); +extern bool_t xdr_GETATTR3res (XDR *, GETATTR3res*); +extern bool_t xdr_sattrguard3 (XDR *, sattrguard3*); +extern bool_t xdr_SETATTR3args (XDR *, SETATTR3args*); +extern bool_t xdr_SETATTR3resok (XDR *, SETATTR3resok*); +extern bool_t xdr_SETATTR3resfail (XDR *, SETATTR3resfail*); +extern bool_t xdr_SETATTR3res (XDR *, SETATTR3res*); +extern bool_t xdr_LOOKUP3args (XDR *, LOOKUP3args*); +extern bool_t xdr_LOOKUP3resok (XDR *, LOOKUP3resok*); +extern bool_t xdr_LOOKUP3resfail (XDR *, LOOKUP3resfail*); +extern bool_t xdr_LOOKUP3res (XDR *, LOOKUP3res*); +extern bool_t xdr_ACCESS3args (XDR *, ACCESS3args*); +extern bool_t xdr_ACCESS3resok (XDR *, ACCESS3resok*); +extern bool_t xdr_ACCESS3resfail (XDR *, ACCESS3resfail*); +extern bool_t xdr_ACCESS3res (XDR *, ACCESS3res*); +extern bool_t xdr_READLINK3args (XDR *, READLINK3args*); +extern bool_t xdr_READLINK3resok (XDR *, READLINK3resok*); +extern bool_t xdr_READLINK3resfail (XDR *, READLINK3resfail*); +extern bool_t xdr_READLINK3res (XDR *, READLINK3res*); +extern bool_t xdr_READ3args (XDR *, READ3args*); +extern bool_t xdr_READ3resok (XDR *, READ3resok*); +extern bool_t xdr_READ3resfail (XDR *, READ3resfail*); +extern bool_t xdr_READ3res (XDR *, READ3res*); +extern bool_t xdr_stable_how (XDR *, stable_how*); +extern bool_t xdr_WRITE3args (XDR *, WRITE3args*); +extern bool_t xdr_WRITE3resok (XDR *, WRITE3resok*); +extern bool_t xdr_WRITE3resfail (XDR *, WRITE3resfail*); +extern bool_t xdr_WRITE3res (XDR *, WRITE3res*); +extern bool_t xdr_createmode3 (XDR *, createmode3*); +extern bool_t xdr_createhow3 (XDR *, createhow3*); +extern bool_t xdr_CREATE3args (XDR *, CREATE3args*); +extern bool_t xdr_CREATE3resok (XDR *, CREATE3resok*); +extern bool_t xdr_CREATE3resfail (XDR *, CREATE3resfail*); +extern bool_t xdr_CREATE3res (XDR *, CREATE3res*); +extern bool_t xdr_MKDIR3args (XDR *, MKDIR3args*); +extern bool_t xdr_MKDIR3resok (XDR *, MKDIR3resok*); +extern bool_t xdr_MKDIR3resfail (XDR *, MKDIR3resfail*); +extern bool_t xdr_MKDIR3res (XDR *, MKDIR3res*); +extern bool_t xdr_symlinkdata3 (XDR *, symlinkdata3*); +extern bool_t xdr_SYMLINK3args (XDR *, SYMLINK3args*); +extern bool_t xdr_SYMLINK3resok (XDR *, SYMLINK3resok*); +extern bool_t xdr_SYMLINK3resfail (XDR *, SYMLINK3resfail*); +extern bool_t xdr_SYMLINK3res (XDR *, SYMLINK3res*); +extern bool_t xdr_devicedata3 (XDR *, devicedata3*); +extern bool_t xdr_mknoddata3 (XDR *, mknoddata3*); +extern bool_t xdr_MKNOD3args (XDR *, MKNOD3args*); +extern bool_t xdr_MKNOD3resok (XDR *, MKNOD3resok*); +extern bool_t xdr_MKNOD3resfail (XDR *, MKNOD3resfail*); +extern bool_t xdr_MKNOD3res (XDR *, MKNOD3res*); +extern bool_t xdr_REMOVE3args (XDR *, REMOVE3args*); +extern bool_t xdr_REMOVE3resok (XDR *, REMOVE3resok*); +extern bool_t xdr_REMOVE3resfail (XDR *, REMOVE3resfail*); +extern bool_t xdr_REMOVE3res (XDR *, REMOVE3res*); +extern bool_t xdr_RMDIR3args (XDR *, RMDIR3args*); +extern bool_t xdr_RMDIR3resok (XDR *, RMDIR3resok*); +extern bool_t xdr_RMDIR3resfail (XDR *, RMDIR3resfail*); +extern bool_t xdr_RMDIR3res (XDR *, RMDIR3res*); +extern bool_t xdr_RENAME3args (XDR *, RENAME3args*); +extern bool_t xdr_RENAME3resok (XDR *, RENAME3resok*); +extern bool_t xdr_RENAME3resfail (XDR *, RENAME3resfail*); +extern bool_t xdr_RENAME3res (XDR *, RENAME3res*); +extern bool_t xdr_LINK3args (XDR *, LINK3args*); +extern bool_t xdr_LINK3resok (XDR *, LINK3resok*); +extern bool_t xdr_LINK3resfail (XDR *, LINK3resfail*); +extern bool_t xdr_LINK3res (XDR *, LINK3res*); +extern bool_t xdr_READDIR3args (XDR *, READDIR3args*); +extern bool_t xdr_entry3 (XDR *, entry3*); +extern bool_t xdr_dirlist3 (XDR *, dirlist3*); +extern bool_t xdr_READDIR3resok (XDR *, READDIR3resok*); +extern bool_t xdr_READDIR3resfail (XDR *, READDIR3resfail*); +extern bool_t xdr_READDIR3res (XDR *, READDIR3res*); +extern bool_t xdr_READDIRPLUS3args (XDR *, READDIRPLUS3args*); +extern bool_t xdr_entryplus3 (XDR *, entryplus3*); +extern bool_t xdr_dirlistplus3 (XDR *, dirlistplus3*); +extern bool_t xdr_READDIRPLUS3resok (XDR *, READDIRPLUS3resok*); +extern bool_t xdr_READDIRPLUS3resfail (XDR *, READDIRPLUS3resfail*); +extern bool_t xdr_READDIRPLUS3res (XDR *, READDIRPLUS3res*); +extern bool_t xdr_FSSTAT3args (XDR *, FSSTAT3args*); +extern bool_t xdr_FSSTAT3resok (XDR *, FSSTAT3resok*); +extern bool_t xdr_FSSTAT3resfail (XDR *, FSSTAT3resfail*); +extern bool_t xdr_FSSTAT3res (XDR *, FSSTAT3res*); +extern bool_t xdr_FSINFO3args (XDR *, FSINFO3args*); +extern bool_t xdr_FSINFO3resok (XDR *, FSINFO3resok*); +extern bool_t xdr_FSINFO3resfail (XDR *, FSINFO3resfail*); +extern bool_t xdr_FSINFO3res (XDR *, FSINFO3res*); +extern bool_t xdr_PATHCONF3args (XDR *, PATHCONF3args*); +extern bool_t xdr_PATHCONF3resok (XDR *, PATHCONF3resok*); +extern bool_t xdr_PATHCONF3resfail (XDR *, PATHCONF3resfail*); +extern bool_t xdr_PATHCONF3res (XDR *, PATHCONF3res*); +extern bool_t xdr_COMMIT3args (XDR *, COMMIT3args*); +extern bool_t xdr_COMMIT3resok (XDR *, COMMIT3resok*); +extern bool_t xdr_COMMIT3resfail (XDR *, COMMIT3resfail*); +extern bool_t xdr_COMMIT3res (XDR *, COMMIT3res*); +extern bool_t xdr_fhandle3 (XDR *, fhandle3*); +extern bool_t xdr_dirpath3 (XDR *, dirpath3*); +extern bool_t xdr_name3 (XDR *, name3*); +extern bool_t xdr_mountstat3 (XDR *, mountstat3*); +extern bool_t xdr_mountres3_ok (XDR *, mountres3_ok*); +extern bool_t xdr_mountres3 (XDR *, mountres3*); +extern bool_t xdr_mountlist3 (XDR *, mountlist3*); +extern bool_t xdr_mountbody3 (XDR *, mountbody3*); +extern bool_t xdr_groups3 (XDR *, groups3*); +extern bool_t xdr_groupnode3 (XDR *, groupnode3*); +extern bool_t xdr_exports3 (XDR *, exports3*); +extern bool_t xdr_exportnode3 (XDR *, exportnode3*); + +#else /* K&R C */ +extern bool_t xdr_uint64 (); +extern bool_t xdr_int64 (); +extern bool_t xdr_uint32 (); +extern bool_t xdr_int32 (); +extern bool_t xdr_filename3 (); +extern bool_t xdr_nfspath3 (); +extern bool_t xdr_fileid3 (); +extern bool_t xdr_cookie3 (); +extern bool_t xdr_cookieverf3 (); +extern bool_t xdr_createverf3 (); +extern bool_t xdr_writeverf3 (); +extern bool_t xdr_uid3 (); +extern bool_t xdr_gid3 (); +extern bool_t xdr_size3 (); +extern bool_t xdr_offset3 (); +extern bool_t xdr_mode3 (); +extern bool_t xdr_count3 (); +extern bool_t xdr_nfsstat3 (); +extern bool_t xdr_ftype3 (); +extern bool_t xdr_specdata3 (); +extern bool_t xdr_nfs_fh3 (); +extern bool_t xdr_nfstime3 (); +extern bool_t xdr_fattr3 (); +extern bool_t xdr_post_op_attr (); +extern bool_t xdr_wcc_attr (); +extern bool_t xdr_pre_op_attr (); +extern bool_t xdr_wcc_data (); +extern bool_t xdr_post_op_fh3 (); +extern bool_t xdr_time_how (); +extern bool_t xdr_set_mode3 (); +extern bool_t xdr_set_uid3 (); +extern bool_t xdr_set_gid3 (); +extern bool_t xdr_set_size3 (); +extern bool_t xdr_set_atime (); +extern bool_t xdr_set_mtime (); +extern bool_t xdr_sattr3 (); +extern bool_t xdr_diropargs3 (); +extern bool_t xdr_GETATTR3args (); +extern bool_t xdr_GETATTR3resok (); +extern bool_t xdr_GETATTR3res (); +extern bool_t xdr_sattrguard3 (); +extern bool_t xdr_SETATTR3args (); +extern bool_t xdr_SETATTR3resok (); +extern bool_t xdr_SETATTR3resfail (); +extern bool_t xdr_SETATTR3res (); +extern bool_t xdr_LOOKUP3args (); +extern bool_t xdr_LOOKUP3resok (); +extern bool_t xdr_LOOKUP3resfail (); +extern bool_t xdr_LOOKUP3res (); +extern bool_t xdr_ACCESS3args (); +extern bool_t xdr_ACCESS3resok (); +extern bool_t xdr_ACCESS3resfail (); +extern bool_t xdr_ACCESS3res (); +extern bool_t xdr_READLINK3args (); +extern bool_t xdr_READLINK3resok (); +extern bool_t xdr_READLINK3resfail (); +extern bool_t xdr_READLINK3res (); +extern bool_t xdr_READ3args (); +extern bool_t xdr_READ3resok (); +extern bool_t xdr_READ3resfail (); +extern bool_t xdr_READ3res (); +extern bool_t xdr_stable_how (); +extern bool_t xdr_WRITE3args (); +extern bool_t xdr_WRITE3resok (); +extern bool_t xdr_WRITE3resfail (); +extern bool_t xdr_WRITE3res (); +extern bool_t xdr_createmode3 (); +extern bool_t xdr_createhow3 (); +extern bool_t xdr_CREATE3args (); +extern bool_t xdr_CREATE3resok (); +extern bool_t xdr_CREATE3resfail (); +extern bool_t xdr_CREATE3res (); +extern bool_t xdr_MKDIR3args (); +extern bool_t xdr_MKDIR3resok (); +extern bool_t xdr_MKDIR3resfail (); +extern bool_t xdr_MKDIR3res (); +extern bool_t xdr_symlinkdata3 (); +extern bool_t xdr_SYMLINK3args (); +extern bool_t xdr_SYMLINK3resok (); +extern bool_t xdr_SYMLINK3resfail (); +extern bool_t xdr_SYMLINK3res (); +extern bool_t xdr_devicedata3 (); +extern bool_t xdr_mknoddata3 (); +extern bool_t xdr_MKNOD3args (); +extern bool_t xdr_MKNOD3resok (); +extern bool_t xdr_MKNOD3resfail (); +extern bool_t xdr_MKNOD3res (); +extern bool_t xdr_REMOVE3args (); +extern bool_t xdr_REMOVE3resok (); +extern bool_t xdr_REMOVE3resfail (); +extern bool_t xdr_REMOVE3res (); +extern bool_t xdr_RMDIR3args (); +extern bool_t xdr_RMDIR3resok (); +extern bool_t xdr_RMDIR3resfail (); +extern bool_t xdr_RMDIR3res (); +extern bool_t xdr_RENAME3args (); +extern bool_t xdr_RENAME3resok (); +extern bool_t xdr_RENAME3resfail (); +extern bool_t xdr_RENAME3res (); +extern bool_t xdr_LINK3args (); +extern bool_t xdr_LINK3resok (); +extern bool_t xdr_LINK3resfail (); +extern bool_t xdr_LINK3res (); +extern bool_t xdr_READDIR3args (); +extern bool_t xdr_entry3 (); +extern bool_t xdr_dirlist3 (); +extern bool_t xdr_READDIR3resok (); +extern bool_t xdr_READDIR3resfail (); +extern bool_t xdr_READDIR3res (); +extern bool_t xdr_READDIRPLUS3args (); +extern bool_t xdr_entryplus3 (); +extern bool_t xdr_dirlistplus3 (); +extern bool_t xdr_READDIRPLUS3resok (); +extern bool_t xdr_READDIRPLUS3resfail (); +extern bool_t xdr_READDIRPLUS3res (); +extern bool_t xdr_FSSTAT3args (); +extern bool_t xdr_FSSTAT3resok (); +extern bool_t xdr_FSSTAT3resfail (); +extern bool_t xdr_FSSTAT3res (); +extern bool_t xdr_FSINFO3args (); +extern bool_t xdr_FSINFO3resok (); +extern bool_t xdr_FSINFO3resfail (); +extern bool_t xdr_FSINFO3res (); +extern bool_t xdr_PATHCONF3args (); +extern bool_t xdr_PATHCONF3resok (); +extern bool_t xdr_PATHCONF3resfail (); +extern bool_t xdr_PATHCONF3res (); +extern bool_t xdr_COMMIT3args (); +extern bool_t xdr_COMMIT3resok (); +extern bool_t xdr_COMMIT3resfail (); +extern bool_t xdr_COMMIT3res (); +extern bool_t xdr_fhandle3 (); +extern bool_t xdr_dirpath3 (); +extern bool_t xdr_name3 (); +extern bool_t xdr_mountstat3 (); +extern bool_t xdr_mountres3_ok (); +extern bool_t xdr_mountres3 (); +extern bool_t xdr_mountlist3 (); +extern bool_t xdr_mountbody3 (); +extern bool_t xdr_groups3 (); +extern bool_t xdr_groupnode3 (); +extern bool_t xdr_exports3 (); +extern bool_t xdr_exportnode3 (); + +#endif /* K&R C */ + +#ifdef __cplusplus +} +#endif + +#endif /* !_RPC_NFS3_PROT_H_RPCGEN */ diff --git a/nfs/rpc_nfs3_prot.x b/nfs/rpc_nfs3_prot.x new file mode 100644 index 0000000..7d2112e --- /dev/null +++ b/nfs/rpc_nfs3_prot.x @@ -0,0 +1,920 @@ +/* + * To compile this file into the proper files: + * rpcgen -C -N nfs.x + * rpcgen -C -N -m nfs.x > programs.c + * rpcgen -C -N -s tcp nfs.x > run_example.c + * rpcgen -C -N -Ss nfs.x > server_template.c + * rm nfs_clnt.c nfs_svc.c + * mv nfs_xdr.c xdr.c + */ + +const PROGRAM = 100003; +const VERSION = 3; +const NFS3_FHSIZE = 64; +const NFS3_COOKIEVERFSIZE = 8; +const NFS3_CREATEVERFSIZE = 8; +const NFS3_WRITEVERFSIZE = 8; + +%#if defined(HAVE_XDR_U_INT64_T) +%#define xdr_uint64_t xdr_u_int64_t +%#elif !defined(HAVE_XDR_UINT64_T) +%#if defined(HAVE_XDR_U_HYPER) +%#define xdr_uint64_t xdr_u_hyper +%#define xdr_int64_t xdr_hyper +%#elif defined(HAVE_XDR_U_LONGLONG_T) +%#define xdr_uint64_t xdr_u_longlong_t +%#define xdr_int64_t xdr_longlong_t +%#endif +%#endif + +typedef uint64_t uint64; +typedef int64_t int64; +typedef unsigned long uint32; +typedef long int32; +typedef string filename3<>; +typedef string nfspath3<>; +typedef uint64 fileid3; +typedef uint64 cookie3; +typedef opaque cookieverf3[NFS3_COOKIEVERFSIZE]; +typedef opaque createverf3[NFS3_CREATEVERFSIZE]; +typedef opaque writeverf3[NFS3_WRITEVERFSIZE]; +typedef uint32 uid3; +typedef uint32 gid3; +typedef uint64 size3; +typedef uint64 offset3; +typedef uint32 mode3; +typedef uint32 count3; + +enum nfsstat3 { + NFS3_OK = 0, + NFS3ERR_PERM = 1, + NFS3ERR_NOENT = 2, + NFS3ERR_IO = 5, + NFS3ERR_NXIO = 6, + NFS3ERR_ACCES = 13, + NFS3ERR_EXIST = 17, + NFS3ERR_XDEV = 18, + NFS3ERR_NODEV = 19, + NFS3ERR_NOTDIR = 20, + NFS3ERR_ISDIR = 21, + NFS3ERR_INVAL = 22, + NFS3ERR_FBIG = 27, + NFS3ERR_NOSPC = 28, + NFS3ERR_ROFS = 30, + NFS3ERR_MLINK = 31, + NFS3ERR_NAMETOOLONG = 63, + NFS3ERR_NOTEMPTY = 66, + NFS3ERR_DQUOT = 69, + NFS3ERR_STALE = 70, + NFS3ERR_REMOTE = 71, + NFS3ERR_BADHANDLE = 10001, + + NFS3ERR_NOT_SYNC = 10002, + NFS3ERR_BAD_COOKIE = 10003, + NFS3ERR_NOTSUPP = 10004, + NFS3ERR_TOOSMALL = 10005, + NFS3ERR_SERVERFAULT = 10006, + NFS3ERR_BADTYPE = 10007, + NFS3ERR_JUKEBOX = 10008 +}; + +enum ftype3 { + NF3REG = 1, + NF3DIR = 2, + NF3BLK = 3, + NF3CHR = 4, + NF3LNK = 5, + NF3SOCK = 6, + NF3FIFO = 7 +}; + +struct specdata3 { + uint32 specdata1; + uint32 specdata2; +}; + +struct nfs_fh3 { + opaque data; +}; + +struct nfstime3 { + uint32 seconds; + uint32 nseconds; +}; + +struct fattr3 { + ftype3 type; + mode3 mode; + uint32 nlink; + uid3 uid; + gid3 gid; + size3 size; + size3 used; + specdata3 rdev; + uint64 fsid; + fileid3 fileid; + nfstime3 atime; + nfstime3 mtime; + nfstime3 ctime; +}; + +union post_op_attr switch (bool attributes_follow) { +case TRUE: + fattr3 attributes; +case FALSE: + void; +}; + +struct wcc_attr { + size3 size; + nfstime3 mtime; + nfstime3 ctime; +}; + +union pre_op_attr switch (bool attributes_follow) { +case TRUE: + wcc_attr attributes; +case FALSE: + void; +}; + +struct wcc_data { + pre_op_attr before; + post_op_attr after; +}; + +union post_op_fh3 switch (bool handle_follows) { +case TRUE: + nfs_fh3 handle; +case FALSE: + void; +}; + +enum time_how { + DONT_CHANGE = 0, + SET_TO_SERVER_TIME = 1, + SET_TO_CLIENT_TIME = 2 +}; + +union set_mode3 switch (bool set_it) { +case TRUE: + mode3 mode; +default: + void; +}; + +union set_uid3 switch (bool set_it) { +case TRUE: + uid3 uid; +default: + void; +}; + +union set_gid3 switch (bool set_it) { +case TRUE: + gid3 gid; +default: + void; +}; + +union set_size3 switch (bool set_it) { +case TRUE: + size3 size; +default: + void; +}; + +union set_atime switch (time_how set_it) { +case SET_TO_CLIENT_TIME: + nfstime3 atime; +default: + void; +}; + +union set_mtime switch (time_how set_it) { +case SET_TO_CLIENT_TIME: + nfstime3 mtime; +default: + void; +}; + +struct sattr3 { + set_mode3 mode; + set_uid3 uid; + set_gid3 gid; + set_size3 size; + set_atime atime; + set_mtime mtime; + +}; + +struct diropargs3 { + nfs_fh3 dir; + filename3 name; +}; + + +program NFS_PROGRAM { + version NFS_V3 { + + void + NFSPROC3_NULL(void) = 0; + + GETATTR3res + NFSPROC3_GETATTR(GETATTR3args) = 1; + + SETATTR3res + NFSPROC3_SETATTR(SETATTR3args) = 2; + + LOOKUP3res + NFSPROC3_LOOKUP(LOOKUP3args) = 3; + + ACCESS3res + NFSPROC3_ACCESS(ACCESS3args) = 4; + + READLINK3res + NFSPROC3_READLINK(READLINK3args) = 5; + + READ3res + NFSPROC3_READ(READ3args) = 6; + + WRITE3res + NFSPROC3_WRITE(WRITE3args) = 7; + + CREATE3res + NFSPROC3_CREATE(CREATE3args) = 8; + + MKDIR3res + NFSPROC3_MKDIR(MKDIR3args) = 9; + + SYMLINK3res + NFSPROC3_SYMLINK(SYMLINK3args) = 10; + + MKNOD3res + NFSPROC3_MKNOD(MKNOD3args) = 11; + + REMOVE3res + NFSPROC3_REMOVE(REMOVE3args) = 12; + + RMDIR3res + NFSPROC3_RMDIR(RMDIR3args) = 13; + + RENAME3res + NFSPROC3_RENAME(RENAME3args) = 14; + + LINK3res + NFSPROC3_LINK(LINK3args) = 15; + + READDIR3res + NFSPROC3_READDIR(READDIR3args) = 16; + + READDIRPLUS3res + NFSPROC3_READDIRPLUS(READDIRPLUS3args) = 17; + + FSSTAT3res + NFSPROC3_FSSTAT(FSSTAT3args) = 18; + + FSINFO3res + NFSPROC3_FSINFO(FSINFO3args) = 19; + + PATHCONF3res + NFSPROC3_PATHCONF(PATHCONF3args) = 20; + + COMMIT3res + NFSPROC3_COMMIT(COMMIT3args) = 21; + +} = 3; +} = 100003; + +struct GETATTR3args { + nfs_fh3 object; +}; + +struct GETATTR3resok { + fattr3 obj_attributes; +}; + +union GETATTR3res switch (nfsstat3 status) { +case NFS3_OK: + GETATTR3resok resok; +default: + void; +}; + +union sattrguard3 switch (bool check) { +case TRUE: + nfstime3 obj_ctime; +case FALSE: + void; +}; + +struct SETATTR3args { + nfs_fh3 object; + sattr3 new_attributes; + sattrguard3 guard; +}; + +struct SETATTR3resok { + wcc_data obj_wcc; +}; + +struct SETATTR3resfail { + wcc_data obj_wcc; +}; + +union SETATTR3res switch (nfsstat3 status) { +case NFS3_OK: + SETATTR3resok resok; +default: + SETATTR3resfail resfail; +}; + +struct LOOKUP3args { + diropargs3 what; +}; + +struct LOOKUP3resok { + nfs_fh3 object; + post_op_attr obj_attributes; + post_op_attr dir_attributes; +}; + +struct LOOKUP3resfail { + post_op_attr dir_attributes; +}; + +union LOOKUP3res switch (nfsstat3 status) { +case NFS3_OK: + LOOKUP3resok resok; +default: + LOOKUP3resfail resfail; +}; + + +const ACCESS3_READ = 0x0001; +const ACCESS3_LOOKUP = 0x0002; +const ACCESS3_MODIFY = 0x0004; +const ACCESS3_EXTEND = 0x0008; +const ACCESS3_DELETE = 0x0010; +const ACCESS3_EXECUTE = 0x0020; + +struct ACCESS3args { + nfs_fh3 object; + uint32 access; +}; + +struct ACCESS3resok { + post_op_attr obj_attributes; + uint32 access; +}; + +struct ACCESS3resfail { + post_op_attr obj_attributes; +}; + +union ACCESS3res switch (nfsstat3 status) { +case NFS3_OK: + ACCESS3resok resok; +default: + ACCESS3resfail resfail; +}; + +struct READLINK3args { + nfs_fh3 symlink; +}; + +struct READLINK3resok { + post_op_attr symlink_attributes; + nfspath3 data; +}; + +struct READLINK3resfail { + post_op_attr symlink_attributes; +}; + +union READLINK3res switch (nfsstat3 status) { +case NFS3_OK: + READLINK3resok resok; +default: + READLINK3resfail resfail; +}; + +struct READ3args { + nfs_fh3 file; + offset3 offset; + count3 count; +}; + +struct READ3resok { + post_op_attr file_attributes; + count3 count; + bool eof; + opaque data<>; +}; + +struct READ3resfail { + post_op_attr file_attributes; +}; + +union READ3res switch (nfsstat3 status) { +case NFS3_OK: + READ3resok resok; +default: + READ3resfail resfail; +}; + +enum stable_how { + UNSTABLE = 0, + DATA_SYNC = 1, + FILE_SYNC = 2 +}; + +struct WRITE3args { + nfs_fh3 file; + offset3 offset; + count3 count; + stable_how stable; + opaque data<>; +}; + +struct WRITE3resok { + wcc_data file_wcc; + count3 count; + stable_how committed; + writeverf3 verf; +}; + +struct WRITE3resfail { + wcc_data file_wcc; +}; + +union WRITE3res switch (nfsstat3 status) { +case NFS3_OK: + WRITE3resok resok; +default: + WRITE3resfail resfail; +}; + + +enum createmode3 { + UNCHECKED = 0, + GUARDED = 1, + EXCLUSIVE = 2 +}; + +union createhow3 switch (createmode3 mode) { +case UNCHECKED: +case GUARDED: + sattr3 obj_attributes; +case EXCLUSIVE: + createverf3 verf; +}; + +struct CREATE3args { + diropargs3 where; + createhow3 how; +}; + +struct CREATE3resok { + post_op_fh3 obj; + post_op_attr obj_attributes; + wcc_data dir_wcc; +}; + +struct CREATE3resfail { + wcc_data dir_wcc; +}; + +union CREATE3res switch (nfsstat3 status) { +case NFS3_OK: + CREATE3resok resok; +default: + CREATE3resfail resfail; +}; + + +struct MKDIR3args { + diropargs3 where; + sattr3 attributes; +}; + +struct MKDIR3resok { + post_op_fh3 obj; + post_op_attr obj_attributes; + wcc_data dir_wcc; +}; + +struct MKDIR3resfail { + wcc_data dir_wcc; +}; + +union MKDIR3res switch (nfsstat3 status) { +case NFS3_OK: + MKDIR3resok resok; +default: + MKDIR3resfail resfail; +}; + + +struct symlinkdata3 { + sattr3 symlink_attributes; + nfspath3 symlink_data; +}; + +struct SYMLINK3args { + diropargs3 where; + symlinkdata3 symlink; +}; + +struct SYMLINK3resok { + post_op_fh3 obj; + post_op_attr obj_attributes; + wcc_data dir_wcc; +}; + +struct SYMLINK3resfail { + wcc_data dir_wcc; +}; + +union SYMLINK3res switch (nfsstat3 status) { +case NFS3_OK: + SYMLINK3resok resok; +default: + SYMLINK3resfail resfail; +}; + + +struct devicedata3 { + sattr3 dev_attributes; + specdata3 spec; +}; + +union mknoddata3 switch (ftype3 type) { +case NF3CHR: +case NF3BLK: + devicedata3 device; +case NF3SOCK: +case NF3FIFO: + sattr3 pipe_attributes; +default: + void; +}; + +struct MKNOD3args { + diropargs3 where; + mknoddata3 what; +}; + +struct MKNOD3resok { + post_op_fh3 obj; + post_op_attr obj_attributes; + wcc_data dir_wcc; +}; + +struct MKNOD3resfail { + wcc_data dir_wcc; +}; + +union MKNOD3res switch (nfsstat3 status) { +case NFS3_OK: + MKNOD3resok resok; +default: + MKNOD3resfail resfail; +}; + +struct REMOVE3args { + diropargs3 object; +}; + +struct REMOVE3resok { + wcc_data dir_wcc; +}; + +struct REMOVE3resfail { + wcc_data dir_wcc; +}; + +union REMOVE3res switch (nfsstat3 status) { +case NFS3_OK: + REMOVE3resok resok; +default: + REMOVE3resfail resfail; +}; + + +struct RMDIR3args { + diropargs3 object; +}; + +struct RMDIR3resok { + wcc_data dir_wcc; +}; + +struct RMDIR3resfail { + wcc_data dir_wcc; +}; + +union RMDIR3res switch (nfsstat3 status) { +case NFS3_OK: + RMDIR3resok resok; +default: + RMDIR3resfail resfail; +}; + +struct RENAME3args { + diropargs3 from; + diropargs3 to; +}; + +struct RENAME3resok { + wcc_data fromdir_wcc; + wcc_data todir_wcc; +}; + +struct RENAME3resfail { + wcc_data fromdir_wcc; + wcc_data todir_wcc; +}; + +union RENAME3res switch (nfsstat3 status) { +case NFS3_OK: + RENAME3resok resok; +default: + RENAME3resfail resfail; +}; + +struct LINK3args { + nfs_fh3 file; + diropargs3 link; +}; + +struct LINK3resok { + post_op_attr file_attributes; + wcc_data linkdir_wcc; +}; + +struct LINK3resfail { + post_op_attr file_attributes; + wcc_data linkdir_wcc; +}; + +union LINK3res switch (nfsstat3 status) { +case NFS3_OK: + + LINK3resok resok; +default: + LINK3resfail resfail; +}; + +struct READDIR3args { + nfs_fh3 dir; + cookie3 cookie; + cookieverf3 cookieverf; + count3 count; +}; + +struct entry3 { + fileid3 fileid; + filename3 name; + cookie3 cookie; + entry3 *nextentry; +}; + +struct dirlist3 { + entry3 *entries; + bool eof; +}; + +struct READDIR3resok { + post_op_attr dir_attributes; + cookieverf3 cookieverf; + dirlist3 reply; +}; + +struct READDIR3resfail { + post_op_attr dir_attributes; +}; + +union READDIR3res switch (nfsstat3 status) { +case NFS3_OK: + READDIR3resok resok; +default: + READDIR3resfail resfail; +}; + +struct READDIRPLUS3args { + nfs_fh3 dir; + cookie3 cookie; + cookieverf3 cookieverf; + count3 dircount; + count3 maxcount; +}; + +struct entryplus3 { + fileid3 fileid; + filename3 name; + cookie3 cookie; + post_op_attr name_attributes; + post_op_fh3 name_handle; + entryplus3 *nextentry; +}; + +struct dirlistplus3 { + entryplus3 *entries; + bool eof; +}; + +struct READDIRPLUS3resok { + post_op_attr dir_attributes; + cookieverf3 cookieverf; + dirlistplus3 reply; +}; + +struct READDIRPLUS3resfail { + post_op_attr dir_attributes; +}; + +union READDIRPLUS3res switch (nfsstat3 status) { +case NFS3_OK: + READDIRPLUS3resok resok; +default: + READDIRPLUS3resfail resfail; +}; + +struct FSSTAT3args { + nfs_fh3 fsroot; +}; + +struct FSSTAT3resok { + post_op_attr obj_attributes; + size3 tbytes; + size3 fbytes; + size3 abytes; + size3 tfiles; + size3 ffiles; + size3 afiles; + uint32 invarsec; +}; + +struct FSSTAT3resfail { + post_op_attr obj_attributes; +}; + +union FSSTAT3res switch (nfsstat3 status) { +case NFS3_OK: + FSSTAT3resok resok; +default: + FSSTAT3resfail resfail; +}; + +const FSF3_LINK = 0x0001; +const FSF3_SYMLINK = 0x0002; +const FSF3_HOMOGENEOUS = 0x0008; +const FSF3_CANSETTIME = 0x0010; + +struct FSINFO3args { + nfs_fh3 fsroot; +}; + +struct FSINFO3resok { + post_op_attr obj_attributes; + uint32 rtmax; + uint32 rtpref; + uint32 rtmult; + uint32 wtmax; + uint32 wtpref; + uint32 wtmult; + uint32 dtpref; + + size3 maxfilesize; + nfstime3 time_delta; + uint32 properties; +}; + +struct FSINFO3resfail { + post_op_attr obj_attributes; +}; + +union FSINFO3res switch (nfsstat3 status) { +case NFS3_OK: + FSINFO3resok resok; +default: + FSINFO3resfail resfail; +}; + +struct PATHCONF3args { + nfs_fh3 object; +}; + +struct PATHCONF3resok { + post_op_attr obj_attributes; + uint32 linkmax; + uint32 name_max; + bool no_trunc; + bool chown_restricted; + bool case_insensitive; + bool case_preserving; +}; + +struct PATHCONF3resfail { + post_op_attr obj_attributes; +}; + +union PATHCONF3res switch (nfsstat3 status) { +case NFS3_OK: + PATHCONF3resok resok; +default: + PATHCONF3resfail resfail; +}; + +struct COMMIT3args { + nfs_fh3 file; + offset3 offset; + count3 count; +}; + +struct COMMIT3resok { + wcc_data file_wcc; + writeverf3 verf; +}; + +struct COMMIT3resfail { + wcc_data file_wcc; +}; + +union COMMIT3res switch (nfsstat3 status) { +case NFS3_OK: + COMMIT3resok resok; +default: + COMMIT3resfail resfail; +}; + + +const MNTPATHLEN3 = 1024; /* Maximum bytes in a path name */ +const MNTNAMLEN3 = 255; /* Maximum bytes in a name */ +const FHSIZE3 = 64; /* Maximum bytes in a V3 file handle */ + +typedef opaque fhandle3; +typedef string dirpath3; +typedef string name3; + +enum mountstat3 { + MNT3_OK = 0, /* no error */ + MNT3ERR_PERM = 1, /* Not owner */ + MNT3ERR_NOENT = 2, /* No such file or directory */ + MNT3ERR_IO = 5, /* I/O error */ + MNT3ERR_ACCES = 13, /* Permission denied */ + MNT3ERR_NOTDIR = 20, /* Not a directory */ + MNT3ERR_INVAL = 22, /* Invalid argument */ + MNT3ERR_NAMETOOLONG = 63, /* Filename too long */ + MNT3ERR_NOTSUPP = 10004, /* Operation not supported */ + MNT3ERR_SERVERFAULT = 10006 /* A failure on the server */ +}; + + +program MOUNT_PROGRAM { + version MOUNT_V3 { + void MOUNTPROC3_NULL(void) = 0; + mountres3 MOUNTPROC3_MNT(dirpath3) = 1; + mountlist3 MOUNTPROC3_DUMP(void) = 2; + void MOUNTPROC3_UMNT(dirpath3) = 3; + void MOUNTPROC3_UMNTALL(void) = 4; + exports3 MOUNTPROC3_EXPORT(void) = 5; + } = 3; +} = 100005; + +struct mountres3_ok { + fhandle3 fhandle; + int auth_flavors<>; +}; + +union mountres3 switch (mountstat3 fhs_status) { +case MNT3_OK: + mountres3_ok mountinfo; +default: + void; +}; + +typedef struct mountbody3 *mountlist3; + +struct mountbody3 { + name3 ml_hostname; + dirpath3 ml_directory; + mountlist3 ml_next; +}; + + +typedef struct groupnode3 *groups3; + +struct groupnode3 { + name3 gr_name; + groups3 gr_next; +}; + +typedef struct exportnode3 *exports3; + +struct exportnode3 { + dirpath3 ex_dir; + groups3 ex_groups; + exports3 ex_next; +}; diff --git a/nfs/rpc_nfs3_prot_xdr.c b/nfs/rpc_nfs3_prot_xdr.c new file mode 100644 index 0000000..8a7dbd3 --- /dev/null +++ b/nfs/rpc_nfs3_prot_xdr.c @@ -0,0 +1,2060 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#include "rpc_nfs3_prot.h" +#if defined(HAVE_XDR_U_INT64_T) +#define xdr_uint64_t xdr_u_int64_t +#elif !defined(HAVE_XDR_UINT64_T) +#if defined(HAVE_XDR_U_HYPER) +#define xdr_uint64_t xdr_u_hyper +#define xdr_int64_t xdr_hyper +#elif defined(HAVE_XDR_U_LONGLONG_T) +#define xdr_uint64_t xdr_u_longlong_t +#define xdr_int64_t xdr_longlong_t +#endif +#endif + +bool_t +xdr_uint64 (XDR *xdrs, uint64 *objp) +{ + register int32_t *buf; + + if (!xdr_uint64_t (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_int64 (XDR *xdrs, int64 *objp) +{ + register int32_t *buf; + + if (!xdr_int64_t (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_uint32 (XDR *xdrs, uint32 *objp) +{ + register int32_t *buf; + + if (!xdr_u_long (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_int32 (XDR *xdrs, int32 *objp) +{ + register int32_t *buf; + + if (!xdr_long (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_filename3 (XDR *xdrs, filename3 *objp) +{ + register int32_t *buf; + + if (!xdr_string (xdrs, objp, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_nfspath3 (XDR *xdrs, nfspath3 *objp) +{ + register int32_t *buf; + + if (!xdr_string (xdrs, objp, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_fileid3 (XDR *xdrs, fileid3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint64 (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_cookie3 (XDR *xdrs, cookie3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint64 (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_cookieverf3 (XDR *xdrs, cookieverf3 objp) +{ + register int32_t *buf; + + if (!xdr_opaque (xdrs, objp, NFS3_COOKIEVERFSIZE)) + return FALSE; + return TRUE; +} + +bool_t +xdr_createverf3 (XDR *xdrs, createverf3 objp) +{ + register int32_t *buf; + + if (!xdr_opaque (xdrs, objp, NFS3_CREATEVERFSIZE)) + return FALSE; + return TRUE; +} + +bool_t +xdr_writeverf3 (XDR *xdrs, writeverf3 objp) +{ + register int32_t *buf; + + if (!xdr_opaque (xdrs, objp, NFS3_WRITEVERFSIZE)) + return FALSE; + return TRUE; +} + +bool_t +xdr_uid3 (XDR *xdrs, uid3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint32 (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gid3 (XDR *xdrs, gid3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint32 (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_size3 (XDR *xdrs, size3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint64 (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_offset3 (XDR *xdrs, offset3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint64 (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_mode3 (XDR *xdrs, mode3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint32 (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_count3 (XDR *xdrs, count3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint32 (xdrs, objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_nfsstat3 (XDR *xdrs, nfsstat3 *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ftype3 (XDR *xdrs, ftype3 *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_specdata3 (XDR *xdrs, specdata3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint32 (xdrs, &objp->specdata1)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->specdata2)) + return FALSE; + return TRUE; +} + +bool_t +xdr_nfs_fh3 (XDR *xdrs, nfs_fh3 *objp) +{ + register int32_t *buf; + + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS3_FHSIZE)) + return FALSE; + return TRUE; +} + +bool_t +xdr_nfstime3 (XDR *xdrs, nfstime3 *objp) +{ + register int32_t *buf; + + if (!xdr_uint32 (xdrs, &objp->seconds)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->nseconds)) + return FALSE; + return TRUE; +} + +bool_t +xdr_fattr3 (XDR *xdrs, fattr3 *objp) +{ + register int32_t *buf; + + if (!xdr_ftype3 (xdrs, &objp->type)) + return FALSE; + if (!xdr_mode3 (xdrs, &objp->mode)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->nlink)) + return FALSE; + if (!xdr_uid3 (xdrs, &objp->uid)) + return FALSE; + if (!xdr_gid3 (xdrs, &objp->gid)) + return FALSE; + if (!xdr_size3 (xdrs, &objp->size)) + return FALSE; + if (!xdr_size3 (xdrs, &objp->used)) + return FALSE; + if (!xdr_specdata3 (xdrs, &objp->rdev)) + return FALSE; + if (!xdr_uint64 (xdrs, &objp->fsid)) + return FALSE; + if (!xdr_fileid3 (xdrs, &objp->fileid)) + return FALSE; + if (!xdr_nfstime3 (xdrs, &objp->atime)) + return FALSE; + if (!xdr_nfstime3 (xdrs, &objp->mtime)) + return FALSE; + if (!xdr_nfstime3 (xdrs, &objp->ctime)) + return FALSE; + return TRUE; +} + +bool_t +xdr_post_op_attr (XDR *xdrs, post_op_attr *objp) +{ + register int32_t *buf; + + if (!xdr_bool (xdrs, &objp->attributes_follow)) + return FALSE; + switch (objp->attributes_follow) { + case TRUE: + if (!xdr_fattr3 (xdrs, &objp->post_op_attr_u.attributes)) + return FALSE; + break; + case FALSE: + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_wcc_attr (XDR *xdrs, wcc_attr *objp) +{ + register int32_t *buf; + + if (!xdr_size3 (xdrs, &objp->size)) + return FALSE; + if (!xdr_nfstime3 (xdrs, &objp->mtime)) + return FALSE; + if (!xdr_nfstime3 (xdrs, &objp->ctime)) + return FALSE; + return TRUE; +} + +bool_t +xdr_pre_op_attr (XDR *xdrs, pre_op_attr *objp) +{ + register int32_t *buf; + + if (!xdr_bool (xdrs, &objp->attributes_follow)) + return FALSE; + switch (objp->attributes_follow) { + case TRUE: + if (!xdr_wcc_attr (xdrs, &objp->pre_op_attr_u.attributes)) + return FALSE; + break; + case FALSE: + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_wcc_data (XDR *xdrs, wcc_data *objp) +{ + register int32_t *buf; + + if (!xdr_pre_op_attr (xdrs, &objp->before)) + return FALSE; + if (!xdr_post_op_attr (xdrs, &objp->after)) + return FALSE; + return TRUE; +} + +bool_t +xdr_post_op_fh3 (XDR *xdrs, post_op_fh3 *objp) +{ + register int32_t *buf; + + if (!xdr_bool (xdrs, &objp->handle_follows)) + return FALSE; + switch (objp->handle_follows) { + case TRUE: + if (!xdr_nfs_fh3 (xdrs, &objp->post_op_fh3_u.handle)) + return FALSE; + break; + case FALSE: + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_time_how (XDR *xdrs, time_how *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_set_mode3 (XDR *xdrs, set_mode3 *objp) +{ + register int32_t *buf; + + if (!xdr_bool (xdrs, &objp->set_it)) + return FALSE; + switch (objp->set_it) { + case TRUE: + if (!xdr_mode3 (xdrs, &objp->set_mode3_u.mode)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_set_uid3 (XDR *xdrs, set_uid3 *objp) +{ + register int32_t *buf; + + if (!xdr_bool (xdrs, &objp->set_it)) + return FALSE; + switch (objp->set_it) { + case TRUE: + if (!xdr_uid3 (xdrs, &objp->set_uid3_u.uid)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_set_gid3 (XDR *xdrs, set_gid3 *objp) +{ + register int32_t *buf; + + if (!xdr_bool (xdrs, &objp->set_it)) + return FALSE; + switch (objp->set_it) { + case TRUE: + if (!xdr_gid3 (xdrs, &objp->set_gid3_u.gid)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_set_size3 (XDR *xdrs, set_size3 *objp) +{ + register int32_t *buf; + + if (!xdr_bool (xdrs, &objp->set_it)) + return FALSE; + switch (objp->set_it) { + case TRUE: + if (!xdr_size3 (xdrs, &objp->set_size3_u.size)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_set_atime (XDR *xdrs, set_atime *objp) +{ + register int32_t *buf; + + if (!xdr_time_how (xdrs, &objp->set_it)) + return FALSE; + switch (objp->set_it) { + case SET_TO_CLIENT_TIME: + if (!xdr_nfstime3 (xdrs, &objp->set_atime_u.atime)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_set_mtime (XDR *xdrs, set_mtime *objp) +{ + register int32_t *buf; + + if (!xdr_time_how (xdrs, &objp->set_it)) + return FALSE; + switch (objp->set_it) { + case SET_TO_CLIENT_TIME: + if (!xdr_nfstime3 (xdrs, &objp->set_mtime_u.mtime)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_sattr3 (XDR *xdrs, sattr3 *objp) +{ + register int32_t *buf; + + if (!xdr_set_mode3 (xdrs, &objp->mode)) + return FALSE; + if (!xdr_set_uid3 (xdrs, &objp->uid)) + return FALSE; + if (!xdr_set_gid3 (xdrs, &objp->gid)) + return FALSE; + if (!xdr_set_size3 (xdrs, &objp->size)) + return FALSE; + if (!xdr_set_atime (xdrs, &objp->atime)) + return FALSE; + if (!xdr_set_mtime (xdrs, &objp->mtime)) + return FALSE; + return TRUE; +} + +bool_t +xdr_diropargs3 (XDR *xdrs, diropargs3 *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->dir)) + return FALSE; + if (!xdr_filename3 (xdrs, &objp->name)) + return FALSE; + return TRUE; +} + +bool_t +xdr_GETATTR3args (XDR *xdrs, GETATTR3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->object)) + return FALSE; + return TRUE; +} + +bool_t +xdr_GETATTR3resok (XDR *xdrs, GETATTR3resok *objp) +{ + register int32_t *buf; + + if (!xdr_fattr3 (xdrs, &objp->obj_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_GETATTR3res (XDR *xdrs, GETATTR3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_GETATTR3resok (xdrs, &objp->GETATTR3res_u.resok)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_sattrguard3 (XDR *xdrs, sattrguard3 *objp) +{ + register int32_t *buf; + + if (!xdr_bool (xdrs, &objp->check)) + return FALSE; + switch (objp->check) { + case TRUE: + if (!xdr_nfstime3 (xdrs, &objp->sattrguard3_u.obj_ctime)) + return FALSE; + break; + case FALSE: + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_SETATTR3args (XDR *xdrs, SETATTR3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->object)) + return FALSE; + if (!xdr_sattr3 (xdrs, &objp->new_attributes)) + return FALSE; + if (!xdr_sattrguard3 (xdrs, &objp->guard)) + return FALSE; + return TRUE; +} + +bool_t +xdr_SETATTR3resok (XDR *xdrs, SETATTR3resok *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->obj_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_SETATTR3resfail (XDR *xdrs, SETATTR3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->obj_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_SETATTR3res (XDR *xdrs, SETATTR3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_SETATTR3resok (xdrs, &objp->SETATTR3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_SETATTR3resfail (xdrs, &objp->SETATTR3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_LOOKUP3args (XDR *xdrs, LOOKUP3args *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs3 (xdrs, &objp->what)) + return FALSE; + return TRUE; +} + +bool_t +xdr_LOOKUP3resok (XDR *xdrs, LOOKUP3resok *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->object)) + return FALSE; + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_post_op_attr (xdrs, &objp->dir_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_LOOKUP3resfail (XDR *xdrs, LOOKUP3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->dir_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_LOOKUP3res (XDR *xdrs, LOOKUP3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_LOOKUP3resok (xdrs, &objp->LOOKUP3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_LOOKUP3resfail (xdrs, &objp->LOOKUP3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_ACCESS3args (XDR *xdrs, ACCESS3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->object)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->access)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ACCESS3resok (XDR *xdrs, ACCESS3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->access)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ACCESS3resfail (XDR *xdrs, ACCESS3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ACCESS3res (XDR *xdrs, ACCESS3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_ACCESS3resok (xdrs, &objp->ACCESS3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_ACCESS3resfail (xdrs, &objp->ACCESS3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_READLINK3args (XDR *xdrs, READLINK3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->symlink)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READLINK3resok (XDR *xdrs, READLINK3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->symlink_attributes)) + return FALSE; + if (!xdr_nfspath3 (xdrs, &objp->data)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READLINK3resfail (XDR *xdrs, READLINK3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->symlink_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READLINK3res (XDR *xdrs, READLINK3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_READLINK3resok (xdrs, &objp->READLINK3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_READLINK3resfail (xdrs, &objp->READLINK3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_READ3args (XDR *xdrs, READ3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->file)) + return FALSE; + if (!xdr_offset3 (xdrs, &objp->offset)) + return FALSE; + if (!xdr_count3 (xdrs, &objp->count)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READ3resok (XDR *xdrs, READ3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->file_attributes)) + return FALSE; + if (!xdr_count3 (xdrs, &objp->count)) + return FALSE; + if (!xdr_bool (xdrs, &objp->eof)) + return FALSE; + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READ3resfail (XDR *xdrs, READ3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->file_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READ3res (XDR *xdrs, READ3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_READ3resok (xdrs, &objp->READ3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_READ3resfail (xdrs, &objp->READ3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_stable_how (XDR *xdrs, stable_how *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_WRITE3args (XDR *xdrs, WRITE3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->file)) + return FALSE; + if (!xdr_offset3 (xdrs, &objp->offset)) + return FALSE; + if (!xdr_count3 (xdrs, &objp->count)) + return FALSE; + if (!xdr_stable_how (xdrs, &objp->stable)) + return FALSE; + if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_WRITE3resok (XDR *xdrs, WRITE3resok *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->file_wcc)) + return FALSE; + if (!xdr_count3 (xdrs, &objp->count)) + return FALSE; + if (!xdr_stable_how (xdrs, &objp->committed)) + return FALSE; + if (!xdr_writeverf3 (xdrs, objp->verf)) + return FALSE; + return TRUE; +} + +bool_t +xdr_WRITE3resfail (XDR *xdrs, WRITE3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->file_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_WRITE3res (XDR *xdrs, WRITE3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_WRITE3resok (xdrs, &objp->WRITE3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_WRITE3resfail (xdrs, &objp->WRITE3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_createmode3 (XDR *xdrs, createmode3 *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_createhow3 (XDR *xdrs, createhow3 *objp) +{ + register int32_t *buf; + + if (!xdr_createmode3 (xdrs, &objp->mode)) + return FALSE; + switch (objp->mode) { + case UNCHECKED: + case GUARDED: + if (!xdr_sattr3 (xdrs, &objp->createhow3_u.obj_attributes)) + return FALSE; + break; + case EXCLUSIVE: + if (!xdr_createverf3 (xdrs, objp->createhow3_u.verf)) + return FALSE; + break; + default: + return FALSE; + } + return TRUE; +} + +bool_t +xdr_CREATE3args (XDR *xdrs, CREATE3args *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs3 (xdrs, &objp->where)) + return FALSE; + if (!xdr_createhow3 (xdrs, &objp->how)) + return FALSE; + return TRUE; +} + +bool_t +xdr_CREATE3resok (XDR *xdrs, CREATE3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_fh3 (xdrs, &objp->obj)) + return FALSE; + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_CREATE3resfail (XDR *xdrs, CREATE3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_CREATE3res (XDR *xdrs, CREATE3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_CREATE3resok (xdrs, &objp->CREATE3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_CREATE3resfail (xdrs, &objp->CREATE3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_MKDIR3args (XDR *xdrs, MKDIR3args *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs3 (xdrs, &objp->where)) + return FALSE; + if (!xdr_sattr3 (xdrs, &objp->attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_MKDIR3resok (XDR *xdrs, MKDIR3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_fh3 (xdrs, &objp->obj)) + return FALSE; + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_MKDIR3resfail (XDR *xdrs, MKDIR3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_MKDIR3res (XDR *xdrs, MKDIR3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_MKDIR3resok (xdrs, &objp->MKDIR3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_MKDIR3resfail (xdrs, &objp->MKDIR3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_symlinkdata3 (XDR *xdrs, symlinkdata3 *objp) +{ + register int32_t *buf; + + if (!xdr_sattr3 (xdrs, &objp->symlink_attributes)) + return FALSE; + if (!xdr_nfspath3 (xdrs, &objp->symlink_data)) + return FALSE; + return TRUE; +} + +bool_t +xdr_SYMLINK3args (XDR *xdrs, SYMLINK3args *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs3 (xdrs, &objp->where)) + return FALSE; + if (!xdr_symlinkdata3 (xdrs, &objp->symlink)) + return FALSE; + return TRUE; +} + +bool_t +xdr_SYMLINK3resok (XDR *xdrs, SYMLINK3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_fh3 (xdrs, &objp->obj)) + return FALSE; + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_SYMLINK3resfail (XDR *xdrs, SYMLINK3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_SYMLINK3res (XDR *xdrs, SYMLINK3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_SYMLINK3resok (xdrs, &objp->SYMLINK3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_SYMLINK3resfail (xdrs, &objp->SYMLINK3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_devicedata3 (XDR *xdrs, devicedata3 *objp) +{ + register int32_t *buf; + + if (!xdr_sattr3 (xdrs, &objp->dev_attributes)) + return FALSE; + if (!xdr_specdata3 (xdrs, &objp->spec)) + return FALSE; + return TRUE; +} + +bool_t +xdr_mknoddata3 (XDR *xdrs, mknoddata3 *objp) +{ + register int32_t *buf; + + if (!xdr_ftype3 (xdrs, &objp->type)) + return FALSE; + switch (objp->type) { + case NF3CHR: + case NF3BLK: + if (!xdr_devicedata3 (xdrs, &objp->mknoddata3_u.device)) + return FALSE; + break; + case NF3SOCK: + case NF3FIFO: + if (!xdr_sattr3 (xdrs, &objp->mknoddata3_u.pipe_attributes)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_MKNOD3args (XDR *xdrs, MKNOD3args *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs3 (xdrs, &objp->where)) + return FALSE; + if (!xdr_mknoddata3 (xdrs, &objp->what)) + return FALSE; + return TRUE; +} + +bool_t +xdr_MKNOD3resok (XDR *xdrs, MKNOD3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_fh3 (xdrs, &objp->obj)) + return FALSE; + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_MKNOD3resfail (XDR *xdrs, MKNOD3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_MKNOD3res (XDR *xdrs, MKNOD3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_MKNOD3resok (xdrs, &objp->MKNOD3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_MKNOD3resfail (xdrs, &objp->MKNOD3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_REMOVE3args (XDR *xdrs, REMOVE3args *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs3 (xdrs, &objp->object)) + return FALSE; + return TRUE; +} + +bool_t +xdr_REMOVE3resok (XDR *xdrs, REMOVE3resok *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_REMOVE3resfail (XDR *xdrs, REMOVE3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_REMOVE3res (XDR *xdrs, REMOVE3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_REMOVE3resok (xdrs, &objp->REMOVE3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_REMOVE3resfail (xdrs, &objp->REMOVE3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_RMDIR3args (XDR *xdrs, RMDIR3args *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs3 (xdrs, &objp->object)) + return FALSE; + return TRUE; +} + +bool_t +xdr_RMDIR3resok (XDR *xdrs, RMDIR3resok *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_RMDIR3resfail (XDR *xdrs, RMDIR3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->dir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_RMDIR3res (XDR *xdrs, RMDIR3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_RMDIR3resok (xdrs, &objp->RMDIR3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_RMDIR3resfail (xdrs, &objp->RMDIR3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_RENAME3args (XDR *xdrs, RENAME3args *objp) +{ + register int32_t *buf; + + if (!xdr_diropargs3 (xdrs, &objp->from)) + return FALSE; + if (!xdr_diropargs3 (xdrs, &objp->to)) + return FALSE; + return TRUE; +} + +bool_t +xdr_RENAME3resok (XDR *xdrs, RENAME3resok *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->fromdir_wcc)) + return FALSE; + if (!xdr_wcc_data (xdrs, &objp->todir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_RENAME3resfail (XDR *xdrs, RENAME3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->fromdir_wcc)) + return FALSE; + if (!xdr_wcc_data (xdrs, &objp->todir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_RENAME3res (XDR *xdrs, RENAME3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_RENAME3resok (xdrs, &objp->RENAME3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_RENAME3resfail (xdrs, &objp->RENAME3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_LINK3args (XDR *xdrs, LINK3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->file)) + return FALSE; + if (!xdr_diropargs3 (xdrs, &objp->link)) + return FALSE; + return TRUE; +} + +bool_t +xdr_LINK3resok (XDR *xdrs, LINK3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->file_attributes)) + return FALSE; + if (!xdr_wcc_data (xdrs, &objp->linkdir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_LINK3resfail (XDR *xdrs, LINK3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->file_attributes)) + return FALSE; + if (!xdr_wcc_data (xdrs, &objp->linkdir_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_LINK3res (XDR *xdrs, LINK3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_LINK3resok (xdrs, &objp->LINK3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_LINK3resfail (xdrs, &objp->LINK3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_READDIR3args (XDR *xdrs, READDIR3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->dir)) + return FALSE; + if (!xdr_cookie3 (xdrs, &objp->cookie)) + return FALSE; + if (!xdr_cookieverf3 (xdrs, objp->cookieverf)) + return FALSE; + if (!xdr_count3 (xdrs, &objp->count)) + return FALSE; + return TRUE; +} + +bool_t +xdr_entry3 (XDR *xdrs, entry3 *objp) +{ + register int32_t *buf; + + if (!xdr_fileid3 (xdrs, &objp->fileid)) + return FALSE; + if (!xdr_filename3 (xdrs, &objp->name)) + return FALSE; + if (!xdr_cookie3 (xdrs, &objp->cookie)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->nextentry, sizeof (entry3), (xdrproc_t) xdr_entry3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_dirlist3 (XDR *xdrs, dirlist3 *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)&objp->entries, sizeof (entry3), (xdrproc_t) xdr_entry3)) + return FALSE; + if (!xdr_bool (xdrs, &objp->eof)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READDIR3resok (XDR *xdrs, READDIR3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->dir_attributes)) + return FALSE; + if (!xdr_cookieverf3 (xdrs, objp->cookieverf)) + return FALSE; + if (!xdr_dirlist3 (xdrs, &objp->reply)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READDIR3resfail (XDR *xdrs, READDIR3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->dir_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READDIR3res (XDR *xdrs, READDIR3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_READDIR3resok (xdrs, &objp->READDIR3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_READDIR3resfail (xdrs, &objp->READDIR3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_READDIRPLUS3args (XDR *xdrs, READDIRPLUS3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->dir)) + return FALSE; + if (!xdr_cookie3 (xdrs, &objp->cookie)) + return FALSE; + if (!xdr_cookieverf3 (xdrs, objp->cookieverf)) + return FALSE; + if (!xdr_count3 (xdrs, &objp->dircount)) + return FALSE; + if (!xdr_count3 (xdrs, &objp->maxcount)) + return FALSE; + return TRUE; +} + +bool_t +xdr_entryplus3 (XDR *xdrs, entryplus3 *objp) +{ + register int32_t *buf; + + if (!xdr_fileid3 (xdrs, &objp->fileid)) + return FALSE; + if (!xdr_filename3 (xdrs, &objp->name)) + return FALSE; + if (!xdr_cookie3 (xdrs, &objp->cookie)) + return FALSE; + if (!xdr_post_op_attr (xdrs, &objp->name_attributes)) + return FALSE; + if (!xdr_post_op_fh3 (xdrs, &objp->name_handle)) + return FALSE; + if (!xdr_pointer (xdrs, (char **)&objp->nextentry, sizeof (entryplus3), (xdrproc_t) xdr_entryplus3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_dirlistplus3 (XDR *xdrs, dirlistplus3 *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)&objp->entries, sizeof (entryplus3), (xdrproc_t) xdr_entryplus3)) + return FALSE; + if (!xdr_bool (xdrs, &objp->eof)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READDIRPLUS3resok (XDR *xdrs, READDIRPLUS3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->dir_attributes)) + return FALSE; + if (!xdr_cookieverf3 (xdrs, objp->cookieverf)) + return FALSE; + if (!xdr_dirlistplus3 (xdrs, &objp->reply)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READDIRPLUS3resfail (XDR *xdrs, READDIRPLUS3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->dir_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_READDIRPLUS3res (XDR *xdrs, READDIRPLUS3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_READDIRPLUS3resok (xdrs, &objp->READDIRPLUS3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_READDIRPLUS3resfail (xdrs, &objp->READDIRPLUS3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_FSSTAT3args (XDR *xdrs, FSSTAT3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->fsroot)) + return FALSE; + return TRUE; +} + +bool_t +xdr_FSSTAT3resok (XDR *xdrs, FSSTAT3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_size3 (xdrs, &objp->tbytes)) + return FALSE; + if (!xdr_size3 (xdrs, &objp->fbytes)) + return FALSE; + if (!xdr_size3 (xdrs, &objp->abytes)) + return FALSE; + if (!xdr_size3 (xdrs, &objp->tfiles)) + return FALSE; + if (!xdr_size3 (xdrs, &objp->ffiles)) + return FALSE; + if (!xdr_size3 (xdrs, &objp->afiles)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->invarsec)) + return FALSE; + return TRUE; +} + +bool_t +xdr_FSSTAT3resfail (XDR *xdrs, FSSTAT3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_FSSTAT3res (XDR *xdrs, FSSTAT3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_FSSTAT3resok (xdrs, &objp->FSSTAT3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_FSSTAT3resfail (xdrs, &objp->FSSTAT3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_FSINFO3args (XDR *xdrs, FSINFO3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->fsroot)) + return FALSE; + return TRUE; +} + +bool_t +xdr_FSINFO3resok (XDR *xdrs, FSINFO3resok *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->rtmax)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->rtpref)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->rtmult)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->wtmax)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->wtpref)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->wtmult)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->dtpref)) + return FALSE; + if (!xdr_size3 (xdrs, &objp->maxfilesize)) + return FALSE; + if (!xdr_nfstime3 (xdrs, &objp->time_delta)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->properties)) + return FALSE; + return TRUE; +} + +bool_t +xdr_FSINFO3resfail (XDR *xdrs, FSINFO3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_FSINFO3res (XDR *xdrs, FSINFO3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_FSINFO3resok (xdrs, &objp->FSINFO3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_FSINFO3resfail (xdrs, &objp->FSINFO3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_PATHCONF3args (XDR *xdrs, PATHCONF3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->object)) + return FALSE; + return TRUE; +} + +bool_t +xdr_PATHCONF3resok (XDR *xdrs, PATHCONF3resok *objp) +{ + register int32_t *buf; + + + if (xdrs->x_op == XDR_ENCODE) { + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->linkmax)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->name_max)) + return FALSE; + buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_bool (xdrs, &objp->no_trunc)) + return FALSE; + if (!xdr_bool (xdrs, &objp->chown_restricted)) + return FALSE; + if (!xdr_bool (xdrs, &objp->case_insensitive)) + return FALSE; + if (!xdr_bool (xdrs, &objp->case_preserving)) + return FALSE; + } else { + IXDR_PUT_BOOL(buf, objp->no_trunc); + IXDR_PUT_BOOL(buf, objp->chown_restricted); + IXDR_PUT_BOOL(buf, objp->case_insensitive); + IXDR_PUT_BOOL(buf, objp->case_preserving); + } + return TRUE; + } else if (xdrs->x_op == XDR_DECODE) { + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->linkmax)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->name_max)) + return FALSE; + buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_bool (xdrs, &objp->no_trunc)) + return FALSE; + if (!xdr_bool (xdrs, &objp->chown_restricted)) + return FALSE; + if (!xdr_bool (xdrs, &objp->case_insensitive)) + return FALSE; + if (!xdr_bool (xdrs, &objp->case_preserving)) + return FALSE; + } else { + objp->no_trunc = IXDR_GET_BOOL(buf); + objp->chown_restricted = IXDR_GET_BOOL(buf); + objp->case_insensitive = IXDR_GET_BOOL(buf); + objp->case_preserving = IXDR_GET_BOOL(buf); + } + return TRUE; + } + + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->linkmax)) + return FALSE; + if (!xdr_uint32 (xdrs, &objp->name_max)) + return FALSE; + if (!xdr_bool (xdrs, &objp->no_trunc)) + return FALSE; + if (!xdr_bool (xdrs, &objp->chown_restricted)) + return FALSE; + if (!xdr_bool (xdrs, &objp->case_insensitive)) + return FALSE; + if (!xdr_bool (xdrs, &objp->case_preserving)) + return FALSE; + return TRUE; +} + +bool_t +xdr_PATHCONF3resfail (XDR *xdrs, PATHCONF3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_post_op_attr (xdrs, &objp->obj_attributes)) + return FALSE; + return TRUE; +} + +bool_t +xdr_PATHCONF3res (XDR *xdrs, PATHCONF3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_PATHCONF3resok (xdrs, &objp->PATHCONF3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_PATHCONF3resfail (xdrs, &objp->PATHCONF3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_COMMIT3args (XDR *xdrs, COMMIT3args *objp) +{ + register int32_t *buf; + + if (!xdr_nfs_fh3 (xdrs, &objp->file)) + return FALSE; + if (!xdr_offset3 (xdrs, &objp->offset)) + return FALSE; + if (!xdr_count3 (xdrs, &objp->count)) + return FALSE; + return TRUE; +} + +bool_t +xdr_COMMIT3resok (XDR *xdrs, COMMIT3resok *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->file_wcc)) + return FALSE; + if (!xdr_writeverf3 (xdrs, objp->verf)) + return FALSE; + return TRUE; +} + +bool_t +xdr_COMMIT3resfail (XDR *xdrs, COMMIT3resfail *objp) +{ + register int32_t *buf; + + if (!xdr_wcc_data (xdrs, &objp->file_wcc)) + return FALSE; + return TRUE; +} + +bool_t +xdr_COMMIT3res (XDR *xdrs, COMMIT3res *objp) +{ + register int32_t *buf; + + if (!xdr_nfsstat3 (xdrs, &objp->status)) + return FALSE; + switch (objp->status) { + case NFS3_OK: + if (!xdr_COMMIT3resok (xdrs, &objp->COMMIT3res_u.resok)) + return FALSE; + break; + default: + if (!xdr_COMMIT3resfail (xdrs, &objp->COMMIT3res_u.resfail)) + return FALSE; + break; + } + return TRUE; +} + +bool_t +xdr_fhandle3 (XDR *xdrs, fhandle3 *objp) +{ + register int32_t *buf; + + if (!xdr_bytes (xdrs, (char **)&objp->fhandle3_val, (u_int *) &objp->fhandle3_len, FHSIZE3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_dirpath3 (XDR *xdrs, dirpath3 *objp) +{ + register int32_t *buf; + + if (!xdr_string (xdrs, objp, MNTPATHLEN3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_name3 (XDR *xdrs, name3 *objp) +{ + register int32_t *buf; + + if (!xdr_string (xdrs, objp, MNTNAMLEN3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_mountstat3 (XDR *xdrs, mountstat3 *objp) +{ + register int32_t *buf; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_mountres3_ok (XDR *xdrs, mountres3_ok *objp) +{ + register int32_t *buf; + + if (!xdr_fhandle3 (xdrs, &objp->fhandle)) + return FALSE; + if (!xdr_array (xdrs, (char **)&objp->auth_flavors.auth_flavors_val, (u_int *) &objp->auth_flavors.auth_flavors_len, ~0, + sizeof (int), (xdrproc_t) xdr_int)) + return FALSE; + return TRUE; +} + +bool_t +xdr_mountres3 (XDR *xdrs, mountres3 *objp) +{ + register int32_t *buf; + + if (!xdr_mountstat3 (xdrs, &objp->fhs_status)) + return FALSE; + switch (objp->fhs_status) { + case MNT3_OK: + if (!xdr_mountres3_ok (xdrs, &objp->mountres3_u.mountinfo)) + return FALSE; + break; + default: + break; + } + return TRUE; +} + +bool_t +xdr_mountlist3 (XDR *xdrs, mountlist3 *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct mountbody3), (xdrproc_t) xdr_mountbody3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_mountbody3 (XDR *xdrs, mountbody3 *objp) +{ + register int32_t *buf; + + if (!xdr_name3 (xdrs, &objp->ml_hostname)) + return FALSE; + if (!xdr_dirpath3 (xdrs, &objp->ml_directory)) + return FALSE; + if (!xdr_mountlist3 (xdrs, &objp->ml_next)) + return FALSE; + return TRUE; +} + +bool_t +xdr_groups3 (XDR *xdrs, groups3 *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct groupnode3), (xdrproc_t) xdr_groupnode3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_groupnode3 (XDR *xdrs, groupnode3 *objp) +{ + register int32_t *buf; + + if (!xdr_name3 (xdrs, &objp->gr_name)) + return FALSE; + if (!xdr_groups3 (xdrs, &objp->gr_next)) + return FALSE; + return TRUE; +} + +bool_t +xdr_exports3 (XDR *xdrs, exports3 *objp) +{ + register int32_t *buf; + + if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct exportnode3), (xdrproc_t) xdr_exportnode3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_exportnode3 (XDR *xdrs, exportnode3 *objp) +{ + register int32_t *buf; + + if (!xdr_dirpath3 (xdrs, &objp->ex_dir)) + return FALSE; + if (!xdr_groups3 (xdrs, &objp->ex_groups)) + return FALSE; + if (!xdr_exports3 (xdrs, &objp->ex_next)) + return FALSE; + return TRUE; +} diff --git a/po/ar/kfileaudiopreview5.po b/po/ar/kfileaudiopreview5.po new file mode 100644 index 0000000..5c9c3ad --- /dev/null +++ b/po/ar/kfileaudiopreview5.po @@ -0,0 +1,43 @@ +# translation of kfileaudiopreview4.po to +# Copyright (C) 2004, 2007 Free Software Foundation, Inc. +# Ahmad M. Zawawi , 2004. +# Youssef Chahibi , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2007-10-14 15:48+0000\n" +"Last-Translator: Youssef Chahibi \n" +"Language-Team: \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&شغَل تلقائياَ" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "شغل" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "اوقف مؤقتا" + +#~ msgid "stop playback" +#~ msgstr "اوقف" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "تكرار: تعيد التشغيل من النهاية" + +#~ msgid "Media Player" +#~ msgstr "مشغَل الوسائط" diff --git a/po/ar/kio5_activities.po b/po/ar/kio5_activities.po new file mode 100644 index 0000000..73fd4b7 --- /dev/null +++ b/po/ar/kio5_activities.po @@ -0,0 +1,175 @@ +# Language translations for PACKAGE package. +# Copyright (C) 2013 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Safa Alfulaij , 2013, 2017. +# Automatically generated, 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2017-01-30 23:51+0300\n" +"Last-Translator: Safa Alfulaij \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "الأنشطة" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "يحمّل..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "مدير الأنشطة لا يعمل" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "اربط بالنّشاط الحاليّ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "افصل عن النّشاط الحاليّ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "اربط ب‍:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "افصل عن:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "النّشاط" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "النّشاط الحاليّ" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "صفا الفليج" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "safaalfulaij@hotmail.com" + +#, fuzzy +#~ msgid "Default" +#~ msgstr "الافتراضي" + +#, fuzzy +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "بدِّل إلى النشاط \"%1\"" + +#, fuzzy +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "النشاط" + +#, fuzzy +#~ msgid "Delete activity" +#~ msgstr "النشاط الحاليّ" + +#, fuzzy +#~ msgid "Create a new activity" +#~ msgstr "النشاط الحاليّ" + +#, fuzzy +#~ msgid "Activity settings" +#~ msgstr "النشاط" + +#, fuzzy +#~ msgid "Activity information" +#~ msgstr "النشاط" + +#~ msgid "Privacy" +#~ msgstr "الخصوصية" + +#~ msgid "Forget the last hour" +#~ msgstr "أنسَ الساعة الأخيرة" + +#~ msgid "Forget the last two hours" +#~ msgstr "أنسَ الساعتان الأخيرتان" + +#~ msgid "Forget a day" +#~ msgstr "أنسَ يوم" + +#~ msgid "Forget everything" +#~ msgstr "أنسَ كل شيء" + +#, fuzzy +#~ msgid "Create activity..." +#~ msgstr "النشاط الحاليّ" + +#, fuzzy +#~ msgid "Activity switching" +#~ msgstr "النشاط" + +#~ msgid "Remember opened documents:" +#~ msgstr "المستندات المفتوحة لتذكرها:" + +#, fuzzy +#~| msgid "For all applications" +#~ msgid "For a&ll applications" +#~ msgstr "لكل التطبيقات" + +#, fuzzy +#~| msgid "Do not remember" +#~ msgid "&Do not remember" +#~ msgstr "لا تتذكر" + +#, fuzzy +#~| msgid "Only for specific applications" +#~ msgid "O&nly for specific applications" +#~ msgstr "فقط لتطبيقات معيّنة" + +#~ msgid "Keep history" +#~ msgstr "أبقِ التأريخ" + +#~ msgid "Clear recent history" +#~ msgstr "أمح التأريخ الأخير" + +#, fuzzy +#~ msgid "Activity name" +#~ msgstr "النشاط" + +#~ msgid "Available Features" +#~ msgstr "المميزات الموجودة" + +#~ msgid "Plugins" +#~ msgstr "الملحقات" + +#~ msgid "Enable activities management" +#~ msgstr "مكّن إدارة الأنشطة" + +#, fuzzy +#~ msgid "Activity manager is not running properly." +#~ msgstr "مدير الأنشطة لا يعمل بشكل صحيح." + +#, fuzzy +#~ msgid "Activities..." +#~ msgstr "الأنشطة..." diff --git a/po/ar/kio5_archive.po b/po/ar/kio5_archive.po new file mode 100644 index 0000000..da62f26 --- /dev/null +++ b/po/ar/kio5_archive.po @@ -0,0 +1,37 @@ +# translation of kio_archive.po to +# محمد سعد Mohamed SAAD , 2006. +# Youssef Chahibi , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2007-10-14 15:35+0000\n" +"Last-Translator: Youssef Chahibi \n" +"Language-Team: \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"لم أتمكن من فتح الملف ، من المحتمل أن تكون الهيئة غير مدعومة.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"لم أتمكن من فتح ملف الأرشيف ، ربما لسبب أن الهيئة غير مدعومة.\n" +"%1" diff --git a/po/ar/kio5_bookmarks.po b/po/ar/kio5_bookmarks.po new file mode 100644 index 0000000..a29bf29 --- /dev/null +++ b/po/ar/kio5_bookmarks.po @@ -0,0 +1,81 @@ +# translation of kio_bookmarks.po to Arabic +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# majed , 2008. +# zayed , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-11-25 21:20+0400\n" +"Last-Translator: zayed \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "جذر" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "أماكن" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "طلب خاطئ: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "لا يوجد علامات لعرضها " + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"ملف CSS الخاص بـ kio_bookmarks غير موجود. ستظهر المخرجات بشكل سيء. \n" +"افحص تثبيتك." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "علاماتي" + +#~ msgid "My bookmarks" +#~ msgstr "علاماتي" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "المطور أولي" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "majed316,زايد السعيدي" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "GMajedlil@gmail.com,zayed.alsaidi@gmail.com" diff --git a/po/ar/kio5_fish.po b/po/ar/kio5_fish.po new file mode 100644 index 0000000..618f976 --- /dev/null +++ b/po/ar/kio5_fish.po @@ -0,0 +1,53 @@ +# translation of kio_fish.po to +# Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc. +# Ahmad M. Zawawi , 2004. +# محمد سعد Mohamed SAAD , 2006. +# Youssef Chahibi , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2007-10-14 15:36+0000\n" +"Last-Translator: Youssef Chahibi \n" +"Language-Team: \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "يتصل..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "يبدأ البروتوكول..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "ولوج محلي" + +#: fish.cpp:631 +#, fuzzy, kde-format +msgid "SSH Authentication" +msgstr "ترخيص SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "غير متصل." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "زايد السعيدي" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "zayed.alsaidi@gmail.com" diff --git a/po/ar/kio5_info.po b/po/ar/kio5_info.po new file mode 100644 index 0000000..2e5ffb7 --- /dev/null +++ b/po/ar/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Zayed Al-Saidi , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-07-09 09:07+0400\n" +"Last-Translator: Zayed Al-Saidi \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"عاجز عن إيجاد الملف %1 الضروري لتشغيل هذه الخدمة. الرجاء تأكد من تثبيت " +"البرنامج." diff --git a/po/ar/kio5_man.po b/po/ar/kio5_man.po new file mode 100644 index 0000000..6793cf8 --- /dev/null +++ b/po/ar/kio5_man.po @@ -0,0 +1,233 @@ +# translation of kio_man.po to Arabic +# translation of kio_man.po to +# Copyright (C) 2001,2002, 2004, 2006, 2007, 2008 Free Software Foundation, Inc. +# Mohammed Ibrahim Halabi , 2001. +# Sayed Jaffer Al-Mosawi , 2002. +# Isam Bayazidi , 2002. +# Ahmad M. Zawawi , 2004. +# محمد سعد Mohamed SAAD , 2006. +# AbdulAziz AlSharif , 2007. +# Youssef Chahibi , 2007. +# zayed , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-12-08 17:27+0400\n" +"Last-Translator: zayed \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"لا يوجد صفحة دليل تطابق %1 .

        تأكد من لم تخطأ في كتابة اسم " +"الدليل.
        تأكد من أنك كتبت اسم الدليل بحالة الحروف الصحيحة.
        إذا " +"بدى أن كل سليم ، فقد تريد أن تصحح مسار صفحات المساعدة إما بواسطة استخدام " +"متغير البيئة MANPATH أو باستخدام مطابقة بملف في دليل /etc ." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        خطأ مُظهر صفحات المساعدة للكيدي

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "هناك أكثر من صفحة مساعدة مطابقة الوصف." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"ملاحظة: إذا كنت تريد قراءة صفحة مساعدة بلغتك ، فعليك الانتباه إلى وجود " +"أخطاء أو مصطلحات قديمة. في حال وجود شك ، عليك مراجعة الاصدارة الانكليزية من " +"صفحات المساعدة." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "أوامر المستخدم" + +#: kio_man.cpp:751 +#, fuzzy, kde-format +msgid "User Commands (POSIX)" +msgstr "أوامر المستخدم" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "نداءات النظام" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "الوظائف الفرعية" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl وحدات" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "وظائف الشبكة" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "الأجهزة" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "هيئات الملفات" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "الألعاب" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "متنوع" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "إدارة النظام" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "النواة" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "الوثائق المحلية" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "جديد" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "فهرس دليل يونيكس" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "القسم %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "الفهرس للشعبة %1:%2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "فهرس دليل يونيكس" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "جاري توليد الفهرس" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"تعذر إيجاد برنامج sgml2roff على نظامك. من فضلك قم بتثبيته, عند الضرورة, و " +"مدّد مسار البحث عن طريق تعديل متغير بيئة PATH قبل بدء كيدي." + +#~ msgid "Open of %1 failed." +#~ msgstr "فشل فتح %1." + +#~ msgid "Man output" +#~ msgstr "Man خَرْج" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Mohamed SAAD محمد سعد, زايد السعيدي" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "metehyi@free.fr,zayed.alsaidi@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/ar/kio5_mtp.po b/po/ar/kio5_mtp.po new file mode 100644 index 0000000..f17f868 --- /dev/null +++ b/po/ar/kio5_mtp.po @@ -0,0 +1,34 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Safa Alfulaij , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2015-01-24 23:56+0300\n" +"Last-Translator: Safa Alfulaij \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "لا يمكن نسخ/نقل الملفّات في نفس الجهاز" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "لم يُعثر على تخازين. لربّما عليك إزالة قفل جهازك؟" diff --git a/po/ar/kio5_nfs.po b/po/ar/kio5_nfs.po new file mode 100644 index 0000000..aca944a --- /dev/null +++ b/po/ar/kio5_nfs.po @@ -0,0 +1,69 @@ +# translation of kio_nfs.po to +# Copyright (C) 2001,2002, 2006, 2007 Free Software Foundation, Inc. +# Majid Moggamel , 2001. +# Isam Bayazidi , 2002. +# محمد سعد Mohamed SAAD , 2006. +# Youssef Chahibi , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2007-10-14 15:36+0000\n" +"Last-Translator: Youssef Chahibi \n" +"Language-Team: \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "لا توجد مساحة متبقية على الجهاز" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "نظام الملفات صالح للقراءة فقط" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "اسم الملف طويل جداً" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "تجاوز الحصة المخصصة على القرص" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "حدث خطأ في RPC." diff --git a/po/ar/kio5_recentdocuments.po b/po/ar/kio5_recentdocuments.po new file mode 100644 index 0000000..026a1fd --- /dev/null +++ b/po/ar/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Safa Alfulaij , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-01-24 23:57+0300\n" +"Last-Translator: Safa Alfulaij \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Lokalize 1.5\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "المستندات الأخيرة" diff --git a/po/ar/kio5_sftp.po b/po/ar/kio5_sftp.po new file mode 100644 index 0000000..7481e84 --- /dev/null +++ b/po/ar/kio5_sftp.po @@ -0,0 +1,475 @@ +# translation of kio_sftp.po to Arabic +# translation of kio_sftp.po to +# Copyright (C) 2002, 2004, 2006, 2007, 2008 Free Software Foundation, Inc. +# Sayed Jaffer Al-Mosawi , 2002. +# Isam Bayazidi , 2002. +# Ahmad M. Zawawi , 2004. +# محمد سعد Mohamed SAAD , 2006. +# AbdulAziz AlSharif , 2007. +# Youssef Chahibi , 2007. +# zayed , 2008. +# Ahmed M. Araby , 2012. +# Abderrahim Kitouni , 2012. +# Abdalrahim Fakhouri , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2012-02-09 14:43+0200\n" +"Last-Translator: Abdalrahim Fakhouri \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: kio_sftp.cpp:224 +#, fuzzy, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "اسم المستخدم أو كلمة السر غير صحيحة" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "تعذّر تخصيص ردود النداء" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "تعذر ضبط إسهاب السّجِل." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "تعذر ضبط إسهاب السّجِل." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "تعذّر تخصيص ردود النداء" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "ولوج SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "استعمل حقل اسم المستخدم للإجابة على هذا السؤال." + +#: kio_sftp.cpp:396 +#, fuzzy, kde-format +msgid "Please enter your password." +msgstr "من فضلك أدخل اسم المستخدم و كلمة السر الخاصة بك." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, fuzzy, kde-format +msgid "Site:" +msgstr "الموقع:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "تعذر إنشاء جلسة SSH جديدة." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "تعذر ضبط زمن المٌهلَة." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "تعذر ضبط المنفذ." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "تعذر ضبط ضغط البيانات." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "تعذر ضبط المٌضيف." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "تعذر ضبط المنفذ." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "تعذر ضبط اسم المستخدم." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "تعذر تفسير ملف الإعدادات." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "جاري فتح اتصال SFTP مع المضيف %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "تعذر ضبط اسم المستخدم." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"مفتاح المٌضيف لهذا الخادم لم يٌعثَر عليه، لكن نوعا آخر من المفاتيح موجود.\n" +"ربما غيّر مٌخترِق مفتاح الخادم الافتراضي لإرباك عميلك وجعله يظن أن المفتاح غير " +"موجود.\n" +"من فضلك اتصل بمديرك للنظام.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"مفتاح المٌضيف للخادم %1 قد تغيّر.\n" +"هذا قد يعني إما أن هجمة احتيال علي أسماء النطاقات تحدث وإما أن عنوان " +"الإنترنت للمُضيف ومفتاح المضيف الخاص به تم تغييرهما في نفس الوقت.\n" +"بصمة المفتاح التي ارسلها المُضيف البعيد:\n" +" %2\n" +"من فضلك اتصل بمديرك للنظام.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "إنذار: لا يمكن التحقق من هوية المضيف." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"لا يمكن التحقق من هوية المٌضِيف %1 .\n" +"بصمة المفتاح: %2\n" +"هل انت واثق انك تريد إكمال الاتصال؟" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "فشل التوثيق." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "من فضلك أدخل اسم المستخدم و كلمة السر الخاصة بك." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "اسم المستخدم أو كلمة السر غير صحيحة" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "تعذر طلب نظام SFTP المساعد. تأكد أنّ SFTP مٌفعَّل علي المٌضِيف." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "تعذر بدء جلسة SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "تم الاتصال بنجاح ب‍ %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"مفتاح المٌضيف لهذا الخادم لم يٌعثَر عليه، لكن نوعا آخر من المفاتيح موجود.\n" +"ربما غيّر مٌخترِق مفتاح الخادم الافتراضي لإرباك عميلك وجعله يظن أن المفتاح غير " +"موجود.\n" +"من فضلك اتصل بمديرك للنظام.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"مفتاح المٌضيف للخادم %1 قد تغيّر.\n" +"هذا قد يعني إما أن هجمة احتيال علي أسماء النطاقات تحدث وإما أن عنوان " +"الإنترنت للمُضيف ومفتاح المضيف الخاص به تم تغييرهما في نفس الوقت.\n" +"بصمة المفتاح التي ارسلها المُضيف البعيد:\n" +" %2\n" +"من فضلك اتصل بمديرك للنظام.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"لا يمكن التحقق من هوية المٌضِيف %1 .\n" +"بصمة المفتاح: %2\n" +"هل انت واثق انك تريد إكمال الاتصال؟" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"تعذر تغيير صلاحيات\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "تعذر قراءة الرابط: %1" + +#~ msgid "No hostname specified." +#~ msgstr "لم يٌحدّد اسم مضيف." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "حصل خطأ داخلي. من فضلك أعد الطلب مرة ثانية." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "من فضلك أدخل اسم المستخدم و كلمة السر الخاصة بمفتاحك." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "إنذار: هوية المضيف قد تغيرت." + +#~ msgid "Connection failed." +#~ msgstr "فشل الاتصال." + +#~ msgid "Connection closed by remote host." +#~ msgstr "إغلق الاتصال من المضيف البعيد" + +#, fuzzy +#~| msgid "Unexpected SFTP error: %1" +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "خطأ SFTP غير متوقع: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP إصدار %1 " + +#~ msgid "Protocol error." +#~ msgstr "خطأ في البروتوكول." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "حصل خطأ داخلي. من فضلك حاول مرة ثانية" + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "خطأ مجهول صادف عملية نسخ الملف إلى '%1'. من فضلك حاول مرة ثانية." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "المضيف البعيد لا يدعم تغيير أسماء الملفات." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "المضيف البعيد لا يدعم إنشاء الوصلات الرمزية." + +#~ msgid "Connection closed" +#~ msgstr "تم إغلاق الاتصال." + +#~ msgid "End of file." +#~ msgstr "نهاية الملف" + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "فشل أمر SFTP لسبب مجهول." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "استلم خادم SFTP رسالة سيئة." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "لقد حاولت القيام بعملية غير مدعومة من خادم SFTP." + +#~ msgid "Error code: %1" +#~ msgstr "رمز الخطأ: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "لا يمكن تحديد نظام فرعي و أمر في نفس الوقت" + +#~ msgid "No options provided for ssh execution." +#~ msgstr "لا خيارات متوفرة لــ ssh التنفيذية" + +#~ msgid "Failed to execute ssh process." +#~ msgstr "فشل أثناء تنفيذ عملية ssh" + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "حدث خطأ أثناء التحدث إلى ssh" + +#~ msgid "Please supply a password." +#~ msgstr "من فضلك أدخل كلمة السر." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "من فضلك قم بتوفير كلمة السر لمفتاح SSH الخاص بك." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "التوثيق لـ %1 فشل" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "تعذر التحقق من هوية المضيف البعيد '%1' لأن مفتاح المضيف ليس موجوداً في ملف " +#~ "\"known hosts\"." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " بشكل يدوي, قم بإضافة مفتاح المضيف الى ملف \"known hosts\" أو اتصل بمدير " +#~ "النظام." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr " بشكل يدوي, أضف مفتاح المضيف إلى %1 أو اتصل بمدير النظام." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "تعذر التحقق من هوية المضيف البعيد '%1'. بصمة مفتاح المضيف هي:\n" +#~ "%2\n" +#~ "يجب عليك التحقق من البصمة مع مدير المضيف قبل الاتصال.\n" +#~ "\n" +#~ "هل تود قبول مفتاح المضيف و الاتصال على أي حال؟ " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "إنذار: هوية المضيف البعيد '%1' قد تغيرت!\n" +#~ "\n" +#~ "قد يكون هناك من يتجسس على اتصالك, أو ربما أن مدير المضيف قد غير المفتاح. " +#~ "على أي حال, يجب عليك التحقق من بصمة مفتاح المضيف مع مدير المضيف. بصمة " +#~ "المفتاح هي:\n" +#~ "%2\n" +#~ "أضف مفتاح المضيف الصحيح \"%3\" للتخلص من هذه الرسالة." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "إنذار: هوية المضيف البعيد '%1' قد تغيرت!\n" +#~ "\n" +#~ "قد يكون هناك من يتجسس على اتصالك, أو ربما أن مدير المضيف قد غير المفتاح. " +#~ "على أي حال, يجب عليك التحقق من بصمة مفتاح المضيف مع مدير المضيف. بصمة " +#~ "المفتاح هي:\n" +#~ "%2\n" +#~ "\n" +#~ "هل تود قبول مفتاح المضيف الجديد و الاتصال على أي حال؟" + +#~ msgid "Host key was rejected." +#~ msgstr "مفتاح المضيف تم رفضه." + +#~ msgid "Please enter a username and password" +#~ msgstr "من فضلك أدخل اسم المستخدم و كلمة السر." + +#~ msgid "File does not exist." +#~ msgstr "الملف غير موجود" + +#~ msgid "Access is denied." +#~ msgstr "النفاذ ممنوع" diff --git a/po/ar/kio5_smb.po b/po/ar/kio5_smb.po new file mode 100644 index 0000000..cf4ddc9 --- /dev/null +++ b/po/ar/kio5_smb.po @@ -0,0 +1,192 @@ +# translation of kio_smb.po to Arabic +# translation of kio_smb.po to +# Copyright (C) 2001,2002, 2004, 2006, 2007, 2009 Free Software Foundation, Inc. +# Majid Moggamel , 2001. +# Isam Bayazidi , 2002. +# Ahmad M. Zawawi , 2004. +# Munzir Taha , 2004. +# محمد سعد Mohamed SAAD , 2006. +# AbdulAziz AlSharif , 2007. +# Youssef Chahibi , 2007. +# zayed , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2009-01-13 18:36+0400\n" +"Last-Translator: zayed \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "من فضلك أدخل معلومات الاستيثاق لـ %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"من فضلك أدخل معلومات التوثيق لـ:\n" +"الخادم = %1\n" +"المشاركة =%2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"نوع ملف مجهول, ليس دليلاً أو ملف." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "تعذر إيجاد أي مجموعات عمل في شبكتك المحلية. ربما بسبب وجود جدار ناري." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "لا يوجد وسيط في الجهاز لـ %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "لا أستطيع الاتصال بالمضيف لـ %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "خطأ عند الاتصال بالخادم المسؤول عن %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "تعذر إيجاد المشاركة على الخادم المعطى" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "واصف الملف سيَء" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"الاسم المعطى لا يمكن تحليله لخادم وحيد. تأكد من أن شبكتك معدّة من غير تضارب " +"بين الأسماء المستخدمة من قبل ويندوز ويونيكس." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"برنامج libsmbclient قد أبلغ عن خطأ، لكنه لم يحدد المشكلة. هذا غالباً يعني " +"مشكلة كبيرة في شبكتك - ولكن يمكن أيضاً أن يعني مشكلة في نفس البرنامج.\n" +"إذا كنت تريد المساعدة، من فضلك أرفق مخرجات برنامج tcpdump لواجهة الشبكة عند " +"التصفح. من فضلك لاحظ أن بعض هذه المعلومات قد تكون سرية عندها ابعثها لمطوري " +"النظام بسرية.إذا طلبوها)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "حالة خطأ مجهولة في الحالة: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "فشل libsmbclient في إنشاء السياق" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"تأكد من أن حزمة السامبا مثبّتة بشكل صحيح على نظامك." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"فشلت عملية تركيب المشاركة \"%1\" من المضيف \"%2\" للمستخدم \"%3\".\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"فشلت عملية فصل نقطة الضم \"%1\".\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "فشل libsmbclient في ابتداء السياق" + +#~ msgid "File does not exist: %1" +#~ msgstr "الملف غير موجود: %1" diff --git a/po/ar/kio5_thumbnail.po b/po/ar/kio5_thumbnail.po new file mode 100644 index 0000000..02bc496 --- /dev/null +++ b/po/ar/kio5_thumbnail.po @@ -0,0 +1,88 @@ +# translation of kio_thumbnail.po to Arabic +# translation of kio_thumbnail.po to +# محمد سعد Mohamed SAAD , 2006. +# Youssef Chahibi , 2007. +# zayed , 2008. +# Abdalrahim Fakhouri , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-02-09 14:44+0200\n" +"Last-Translator: Abdalrahim Fakhouri \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Translate Toolkit 1.10.0\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "أدِر الصورة تلقائيًّا" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "لم تحدد نوع امتدادات بريد الإنترنت متعددة الأغراض." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "حجم غير موجود أو غير سليم محدّد." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "غير قادر على إنشاء مصغّرة للدليل" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "لا يوجد ملحق محدّد." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "غير قادر على تحميل منشئ المصغّرة %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "غير قادر على إنشاء مصغّرة لـِ %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "فشل في إنشاء مصغّرة." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "لم أتمكن من كتابة الصورة." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "فشل في الإرفاق إلى قسم الذاكرة المشتركة %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "الصورة كبيرة جداً لقسم الذاكرة المشتركة" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Mohamed SAAD محمد سعد, عبدالرحيم الفاخوري" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "metehyi@free.fr,abdilra7eem@yahoo.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/ast/kio5_fish.po b/po/ast/kio5_fish.po new file mode 100644 index 0000000..263b5a0 --- /dev/null +++ b/po/ast/kio5_fish.po @@ -0,0 +1,43 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# enolp , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2020-11-06 15:45+0100\n" +"Last-Translator: enolp \n" +"Language-Team: Asturian \n" +"Language: ast\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.3\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Coneutando…" + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Aniciando'l protocolu…" + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Aniciu de sesión llocal" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticación de SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Desconectóse." diff --git a/po/ast/kio5_mtp.po b/po/ast/kio5_mtp.po new file mode 100644 index 0000000..862777b --- /dev/null +++ b/po/ast/kio5_mtp.po @@ -0,0 +1,32 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# enolp , 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2020-02-27 01:23+0100\n" +"Last-Translator: enolp \n" +"Language-Team: Asturian \n" +"Language: ast\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.12.2\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Nun s'alcontró nengún mediu d'almacenamientu. Asegúrate de que'l preséu ta " +"desbloquiáu y tien el MTP activáu nos axustes de la conexón USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Nun puen copiase/movese ficheros nel propiu preséu" diff --git a/po/ast/kio5_recentdocuments.po b/po/ast/kio5_recentdocuments.po new file mode 100644 index 0000000..3a44f3d --- /dev/null +++ b/po/ast/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# enolp , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2019-10-21 23:31+0200\n" +"Last-Translator: enolp \n" +"Language-Team: Asturian\n" +"Language: ast\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.08.2\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documentos d'apocayá" diff --git a/po/bg/kfileaudiopreview5.po b/po/bg/kfileaudiopreview5.po new file mode 100644 index 0000000..d9b5259 --- /dev/null +++ b/po/bg/kfileaudiopreview5.po @@ -0,0 +1,42 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Yasen Pramatarov , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-06-15 09:57+0300\n" +"Last-Translator: Yasen Pramatarov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Автоматично изпълнение" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "изпълнение" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "на пауза" + +#~ msgid "stop playback" +#~ msgstr "спиране" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "повтаряне на изпълнението" + +#~ msgid "Media Player" +#~ msgstr "Плеър" diff --git a/po/bg/kio5_activities.po b/po/bg/kio5_activities.po new file mode 100644 index 0000000..7380421 --- /dev/null +++ b/po/bg/kio5_activities.po @@ -0,0 +1,86 @@ +# Copyright (C) 2011 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Dimitar Popov , 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2011-07-09 00:47+0200\n" +"Last-Translator: Dimitar Popov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "Управление на дейностите в KDE" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Димитър Попов" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "insane@fmi.uni-sofia.bg" + +#, fuzzy +#~| msgid "KDE Activity Management Service" +#~ msgid "Enable activities management" +#~ msgstr "Услуга за управление на дейностите в KDE" + +#, fuzzy +#~| msgid "(c) 2010 Ivan Cukic, Sebastian Trueg" +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2010 Ivan Cukic, Sebastian Trueg" diff --git a/po/bg/kio5_archive.po b/po/bg/kio5_archive.po new file mode 100644 index 0000000..e0834d7 --- /dev/null +++ b/po/bg/kio5_archive.po @@ -0,0 +1,37 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Yasen Pramatarov , 2017. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2017-05-05 13:08+0200\n" +"Last-Translator: Yasen Pramatarov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Грешка при отваряне на файла, вероятно заради неподдържан формат.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Архивът не може да бъде отворен, вероятно форматът на файла не се поддържа.\n" +"%1" diff --git a/po/bg/kio5_bookmarks.po b/po/bg/kio5_bookmarks.po new file mode 100644 index 0000000..f16f053 --- /dev/null +++ b/po/bg/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Zlatko Popov , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-12-10 16:33+0000\n" +"Last-Translator: Zlatko Popov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Места" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Неправилно запитване: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Още няма отметки." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS файлът не е открит. Резултатът ще изглежда зле.\n" +"Проверете инсталацията." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Моите отметки" + +#~ msgid "My bookmarks" +#~ msgstr "Моите отметки" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Първи разработчик" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Златко Попов" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "zlatkopopov@fsa-bg.org" diff --git a/po/bg/kio5_fish.po b/po/bg/kio5_fish.po new file mode 100644 index 0000000..a9de3d5 --- /dev/null +++ b/po/bg/kio5_fish.po @@ -0,0 +1,51 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Yasen Pramatarov , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-11-19 01:19+0200\n" +"Last-Translator: Yasen Pramatarov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Свързване..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Инициализиране на протокола..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Локално включване" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Автентикация в SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Разкачване." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Радостин Раднев" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "radnev@yahoo.com" diff --git a/po/bg/kio5_info.po b/po/bg/kio5_info.po new file mode 100644 index 0000000..5c2631e --- /dev/null +++ b/po/bg/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Yasen Pramatarov , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-06-03 12:34+0300\n" +"Last-Translator: Yasen Pramatarov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Не може да се открие файлът %1, който е необходим за изпълнение на услугата. " +"Проверете инсталацията си." diff --git a/po/bg/kio5_man.po b/po/bg/kio5_man.po new file mode 100644 index 0000000..47ca541 --- /dev/null +++ b/po/bg/kio5_man.po @@ -0,0 +1,227 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Zlatko Popov , 2006, 2007. +# Yasen Pramatarov , 2009, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-07-23 01:13+0300\n" +"Last-Translator: Yasen Pramatarov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Няма намерена страница man за %1.

        Моля, проверете дали не сте " +"написали грешно името на страницата, която искате
        .\n" +"Имайте предвид, че главните и малките букви се различават.
        Също така, " +"проверете дали променливата на средата MANPATH е зададена правилно в " +"директория /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Грешка при прегледа на man

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Има повече от едно съвпадение в страниците man." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Имайте предвид, че страниците man не се преведени или частично са преведени " +"на български език. Препоръчително е да ползвате оригинала на английски, " +"защото той винаги е актуален. " + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Файлове с хедъри" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Файлове с хедъри (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Потребителски команди" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Потребителски команди (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Системни сигнали" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Подпрограми" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Модули на Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Мрежови функции" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Устройства" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Файлови формати" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Игри" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Разни" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Системна администрация" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Ядро" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Локална документация" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Нови ръководства" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Индекс за ръководството за UNIX" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Раздел %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Индекс за раздел %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Индекс за ръководството за UNIX" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Създаване на индекс" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Програмата sgml2roff не може да бъде намерена. Моля, инсталирайте я, ако е " +"необходимо, и я добавете в променливата PATH преди да стартирате KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Отварянето на %1 е неуспешно." + +#~ msgid "Man output" +#~ msgstr "Изход на man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Радостин Раднев" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "radnev@yahoo.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/bg/kio5_nfs.po b/po/bg/kio5_nfs.po new file mode 100644 index 0000000..6de1270 --- /dev/null +++ b/po/bg/kio5_nfs.po @@ -0,0 +1,63 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Yasen Pramatarov , 2017. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2017-05-05 13:22+0200\n" +"Last-Translator: Yasen Pramatarov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Неподдържана версия на NFS" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC грешка %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Няма свободно място на устройството" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Файлова система само за четене" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Името на файла е твърде дълго" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Дисковата квота е превишена" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS грешка %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Грешка при монтиране на %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Непозната дестинация" diff --git a/po/bg/kio5_recentdocuments.po b/po/bg/kio5_recentdocuments.po new file mode 100644 index 0000000..ca42d94 --- /dev/null +++ b/po/bg/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Yasen Pramatarov , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-06-20 11:19+0300\n" +"Last-Translator: Yasen Pramatarov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Скорошни документи" diff --git a/po/bg/kio5_sftp.po b/po/bg/kio5_sftp.po new file mode 100644 index 0000000..15d1501 --- /dev/null +++ b/po/bg/kio5_sftp.po @@ -0,0 +1,431 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Zlatko Popov , 2006, 2008. +# Yasen Pramatarov , 2009, 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2013-07-23 09:43+0300\n" +"Last-Translator: Yasen Pramatarov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Неправилна парола" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Грешка при задаване ниво на подробност на журнала" + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Грешка при задаване ниво на подробност на журнала" + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log callback." +msgstr "Грешка при задаване ниво на подробност на журнала" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Вход в SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Въведете отговоря в полето за потребителско име." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Въведете парола." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "страна:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Грешка при създаване на нова сесия на SSH" + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Грешка при задаване на изчакване" + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Грешка при задаване на порт." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Грешка при задаване ниво на компресия." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Грешка при задаване на хост." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Грешка при задаване на порт." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Грешка при задаване на потребител." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Грешка при обработка на файла с настройки" + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Отваряне на връзка SFTP до хост %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Грешка при задаване на потребител." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Предупреждение: Идентичността на хоста не може да бъде проверена." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Автентичността на хост %1 не може да бъде проверена.\n" +"Отпечатъкът на ключа е: %2\n" +"Настина ли искате да се продължи свързването?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Идентификацията е неуспешна." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Идентификацията е неуспешна. Сървърът не изпрати начини за идентификация" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Въведете потребителско име и парола." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Неправилно потребителско име или парола" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Грешка при заявката към SFTP. Проверете дали SFTP е наличен на сървъра." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Грешка при инициализиране на сесия на SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Установена е връзка с %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Автентичността на хост %1 не може да бъде проверена.\n" +"Отпечатъкът на ключа е: %2\n" +"Настина ли искате да се продължи свързването?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Неуспешна смяна на правата за достъп за\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Грешка при четене на връзката: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Няма избран хост." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Вътрешна грешка. Моля, опитайте отново." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Моля, въведете потребителско име и ключова фраза за вход." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Предупреждение: Идентичността на хоста е променена." + +#~ msgid "Connection failed." +#~ msgstr "Връзката се разпадна." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Връзката е прекъсната от отдалечения хост." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "Неочаквана грешка на SFTP: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "Версия на SFTP %1" + +#~ msgid "Protocol error." +#~ msgstr "Грешка в протокола." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Вътрешна грешка. Моля, опитайте отново." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Неизвестна грешка по време на копиране на файл в %1. Моля, опитайте " +#~ "отново." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Отдалеченият хост на поддържа преименуване на файлове." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Отдалеченият хост на поддържа създаването на символни връзки." + +#~ msgid "Connection closed" +#~ msgstr "Връзката е затворена" + +#~ msgid "End of file." +#~ msgstr "Край на файла." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "Команда SFTP пропадна по неизвестна причина." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Сървърът SFTP получи невалидно съобщение." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "" +#~ "Вие направихте заявка за операция, която не се поддържа от сървъра SFTP." + +#~ msgid "Error code: %1" +#~ msgstr "Код на грешка: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Не може да се задава подсистема и команда едновременно." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Няма предоставени опции за изпълнение на ssh." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Изпълнението на ssh е неуспешно." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Появи се грешка по време на изпълнението на ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Моля, въведете парола." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Моля, въведете ключовата фраза за вашия частен ключ SSH." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Идентификацията на %1 е неуспешна" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Идентификацията на отдалечения хост \"%1\" не може да бъде проверена, " +#~ "понеже ключът на хоста не е във файл с известни хостове." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Ръчно добавете ключа на хоста към файла с известни хостове или се " +#~ "обърнете към системния администратор." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Ръчно добавете ключа на хоста към %1 или се обърнете към системния " +#~ "администратор." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Идентификацията на отдалеченият хост \"%1\" не може да бъде проверена. " +#~ "Ключът за идентификация на сървъра е:\n" +#~ "%2\n" +#~ "Трябва да проверите надеждността на ключа с администратора на сървъра " +#~ "преди да продължите.\n" +#~ "\n" +#~ "Искате ли ключът на сървъра да бъде приет и да се установи връзка, " +#~ "въпреки това?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "ПРЕДУПРЕЖДЕНИЕ: Идентификацията на отдалеченият хост \"%1\" е променена!\n" +#~ "\n" +#~ "Или някой се е намесил във връзката между вас и сървъра или " +#~ "администраторът на сървъра е променил ключа на сървъра. Във всички случаи " +#~ "проверете истинността на ключа с администратора на сървъра. Ключът за " +#~ "идентификация на сървъра е:\n" +#~ "%2\n" +#~ "Добавете валиден ключ за хоста \"%3\", за да не се показва това съобщение " +#~ "повече." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "ПРЕДУПРЕЖДЕНИЕ: Идентификацията на отдалеченият хост \"%1\" е променена!\n" +#~ "\n" +#~ "Или някой се е намесил във връзката между вас и сървъра или " +#~ "администратора на сървъра е променил ключа на сървъра. Във всички случаи " +#~ "проверете истинността на ключа с администратора на сървъра. Ключът за " +#~ "идентификация на сървъра е:\n" +#~ "%2\n" +#~ "Искате ли ключът на сървъра да бъде приет и да се установи връзка, " +#~ "въпреки това?" + +#~ msgid "Host key was rejected." +#~ msgstr "Ключът на хоста е отхвърлен." diff --git a/po/bg/kio5_smb.po b/po/bg/kio5_smb.po new file mode 100644 index 0000000..13381bc --- /dev/null +++ b/po/bg/kio5_smb.po @@ -0,0 +1,193 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Zlatko Popov , 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2007-04-04 23:12+0000\n" +"Last-Translator: Zlatko Popov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Моля, въведете информация за идентификация за %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Моля, въведете информация за идентификация за:\n" +"Сървър: %1\n" +"Споделен ресурс: %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Непознат тип файл. Не е нито директория, нито файл." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Няма намерени работни групи във вашата локална мрежа. Това може да се случи, " +"ако се намирате зад защитна стена." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Няма носител в устройството за %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Грешка при връзка с хост за %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Грешка при връзка със сървър, отговорен за %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Споделеният ресурс не бе намерен на указания сървър" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Невалиден файлов дескриптор" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Зададеното име не може да бъде определено към уникален сървър. Моля, " +"проверете дали няма дублиране имена на хостове в мрежата между Windows и " +"Linux." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"Библиотеката libsmbclient върна грешка, но проблемът не е уточнен. Това може " +"да означава, че има сериозен проблем в мрежата и мрежовата връзка. Проблемът " +"може и да е в библиотеката \"libsmbclient\".\n" +"Ако искате да ни помогнете, моля, изпратете \"tcpdump\" на мрежовия " +"интерфейс при опита за преглед. Имайте предвид, че в информацията за грешка " +"може да се съдържат лични данни, затова не го изпращайте, ако имате такива " +"съмнения." + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Непозната грешка: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Грешка при инициализиране на libsmbclient" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Уверете се, че пакетът samba е правилно инсталиран." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Грешка при монтиране на ресурса \"%1\" на хоста \"%2\" от потребителя " +"\"%3\".\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Грешка при демонтиране на ресурса \"%1\".\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "Грешка при инициализиране на libsmbclient" + +#~ msgid "File does not exist: %1" +#~ msgstr "Файлът не съществува: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "Грешка при инициализиране на libsmbclient" diff --git a/po/bg/kio5_thumbnail.po b/po/bg/kio5_thumbnail.po new file mode 100644 index 0000000..09eb381 --- /dev/null +++ b/po/bg/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Zlatko Popov , 2007. +# Yasen Pramatarov , 2009, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-07-11 17:49+0300\n" +"Last-Translator: Yasen Pramatarov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Автоматично завъртане на изображението" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Няма зададен тип MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Няма зададена или е зададена невалидна дължина." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Грешка при създаване умалено копие за директорията" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Няма зададена приставка." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Грешка при зареждането генератора на умалени копия за %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Грешка при генерирането умалено копие на %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Грешка при генерирането на умалено копие." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Грешка при записа на изображението." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Грешка при свързването към споделената памет %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Изображението е твърде голямо за споделената памет" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Радостин Раднев" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "radnev@yahoo.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/bs/kfileaudiopreview5.po b/po/bs/kfileaudiopreview5.po new file mode 100644 index 0000000..90129b1 --- /dev/null +++ b/po/bs/kfileaudiopreview5.po @@ -0,0 +1,36 @@ +# Bosnian translation for kde4libs +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the kde4libs package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kde4libs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-21 17:48+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-10-22 06:11+0000\n" +"X-Generator: Launchpad (build 17203)\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" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Sviraj &automatski" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "započni reprodukciju" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pauziraj reprodukciju" diff --git a/po/bs/kio5_activities.po b/po/bs/kio5_activities.po new file mode 100644 index 0000000..44bc636 --- /dev/null +++ b/po/bs/kio5_activities.po @@ -0,0 +1,195 @@ +# Bosnian translations for kde package. +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the same license as the kde package. +# Samir Ribic , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: kde 49i410\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-10-18 20:18+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian\n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-19 05:24+0000\n" +"X-Generator: Launchpad (build 16807)\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" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activities" +msgstr "Aktivnosti..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "Upravljač aktivnostima ne radi ispravno" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Poveći na trenutnu aktivnost" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Odspoji od trenutne aktivnosti" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Poveži na:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Odspoji od:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activity" +msgstr "Aktivnosti..." + +#: KioActivities.cpp:230 +#, fuzzy, kde-format +#| msgid "Link to the current activity" +msgid "Current activity" +msgstr "Poveći na trenutnu aktivnost" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Samir Ribić" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "samir.ribic@etf.unsa.ba" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Pređi na aktivnost \"%1\"" + +#, fuzzy +#~| msgid "Activities..." +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Aktivnosti..." + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Delete activity" +#~ msgstr "Poveći na trenutnu aktivnost" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create a new activity" +#~ msgstr "Poveći na trenutnu aktivnost" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity settings" +#~ msgstr "Aktivnosti..." + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity information" +#~ msgstr "Aktivnosti..." + +#~ msgid "Privacy" +#~ msgstr "Privatnost" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "zauvijek" + +#~ msgid "Forget the last hour" +#~ msgstr "Zaboravi zadnji sat" + +#~ msgid "Forget the last two hours" +#~ msgstr "Zaboravi zadnja dva sata" + +#~ msgid "Forget a day" +#~ msgstr "Zaboravi dan" + +#~ msgid "Forget everything" +#~ msgstr "Zaboravi sve" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "tokom " + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create activity..." +#~ msgstr "Poveći na trenutnu aktivnost" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity switching" +#~ msgstr "Aktivnosti..." + +#~ msgid "Remember opened documents:" +#~ msgstr "Zapamti otvorene dokumente:" + +#, fuzzy +#~| msgid "For all applications" +#~ msgid "For a&ll applications" +#~ msgstr "Za sve programe" + +#, fuzzy +#~| msgid "Do not remember" +#~ msgid "&Do not remember" +#~ msgstr "Nemoj zapamtiti" + +#, fuzzy +#~| msgid "Only for specific applications" +#~ msgid "O&nly for specific applications" +#~ msgstr "Samo za specifične programe" + +#~ msgid "Keep history" +#~ msgstr "Čuvaj historijat" + +#~ msgid "Clear recent history" +#~ msgstr "Očisti nedavni historijat" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Stavi na crnu listu programe koji nisu na ovoj listi" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity name" +#~ msgstr "Aktivnosti..." + +#~ msgid "Available Features" +#~ msgstr "Dostupne mogućnosti" + +#~ msgid "Plugins" +#~ msgstr "Dodaci" + +#~ msgid "Enable activities management" +#~ msgstr "Omogući upravljanje aktivnostima" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Upravljač aktivnostima ne radi ispravno" + +#~ msgid "Activities..." +#~ msgstr "Aktivnosti..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" diff --git a/po/bs/kio5_archive.po b/po/bs/kio5_archive.po new file mode 100644 index 0000000..70cdec1 --- /dev/null +++ b/po/bs/kio5_archive.po @@ -0,0 +1,40 @@ +# Bosnian translation for kdebase-runtime +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2012-09-03 14:38+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-10-21 06:47+0000\n" +"X-Generator: Launchpad (build 17203)\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Ne mogu otvoriti datoteku, vjerovatno zbog nepodržanog formata datoteka.\n" +" %1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Ne mogu otvoriti datoteku, vjerovatno zbog nepodržanog formata datoteka.\n" +"%1" diff --git a/po/bs/kio5_bookmarks.po b/po/bs/kio5_bookmarks.po new file mode 100644 index 0000000..42aa8d8 --- /dev/null +++ b/po/bs/kio5_bookmarks.po @@ -0,0 +1,74 @@ +# Bosnian translation for kdebase-runtime +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2015-02-04 16:01+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-02-05 06:30+0000\n" +"X-Generator: Launchpad (build 17331)\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Korijen" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Mjesta" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Pogrešan zahtjev: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Još uvijek nema obilježivača za prikaz." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"cSS datoteka nije nađena. Izlaz će biti ružan.\n" +"Provjerite instalaciju." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Moje zabilješke" + +#~ msgid "My bookmarks" +#~ msgstr "Moji obilježivači" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Prvobitni programer" diff --git a/po/bs/kio5_fish.po b/po/bs/kio5_fish.po new file mode 100644 index 0000000..451b084 --- /dev/null +++ b/po/bs/kio5_fish.po @@ -0,0 +1,46 @@ +# Bosnian translation for kdebase-runtime +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-01-14 19:19+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-10-21 06:47+0000\n" +"X-Generator: Launchpad (build 17203)\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" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Povezivanje..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Pokrećem protokol..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokalna prijava" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH autorizacija" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Nepovezan." diff --git a/po/bs/kio5_info.po b/po/bs/kio5_info.po new file mode 100644 index 0000000..f8fc1ee --- /dev/null +++ b/po/bs/kio5_info.po @@ -0,0 +1,32 @@ +# Bosnian translation for kdebase-runtime +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2012-09-03 13:52+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-10-21 06:47+0000\n" +"X-Generator: Launchpad (build 17203)\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" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Ne mogu da nađem datoteku %1, neophodnu za pokretanje ovog servisa. " +"Provjerite instalaciju softvera." diff --git a/po/bs/kio5_man.po b/po/bs/kio5_man.po new file mode 100644 index 0000000..7a52243 --- /dev/null +++ b/po/bs/kio5_man.po @@ -0,0 +1,233 @@ +# Translation of kio_man.po into Bosnian. +# Toplica Tanaskovic , 2003. +# Chusslove Illich , 2005, 2007, 2008, 2009. +# Dalibor Djuric , 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-01-08 09:01+0100\n" +"Last-Translator: Samir Ribic \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Launchpad (build 17341)\n" +"X-Launchpad-Export-Date: 2015-02-15 06:00+0000\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Nije nađena nijedna uputna stranica koja odgovara %1.

        Provjerite da " +"li ste ispravno unijeli ime stranice koju želite.
        Ne zaboravite da " +"morate paziti na razliku velikih i malih slova.
        Ako sve djeluje tačno, " +"možda morate zadati bolju putanju traženja uputnih stranica, ili u " +"promjenljivoj okruženja MANPATH ili u odgovarajućem datoteci " +"u fascikli /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Greška KDE‑ovog prikazivača uputnih stranica

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Više od jedne uputne stranice odgovara upitu." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Ako čitate uputnu stranicu na svom jeziku, imajte na umu da može imati neke " +"greške ili biti zastarjela. Ako posumnjate, pogledajte i englesku verziju." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Datoteke zaglavlja" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Datoteke zaglavlja (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Korisničke naredbe" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Korisničke naredbe (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Sistemski pozivi" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Podrutine" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl moduli" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Mrežne funkcije" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Uređaji" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formati datoteka" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Igre" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Razno" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administracija sistema" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Jezgro" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokalna dokumentacija" + +# >> @title Section of man pages, as the several above +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Indeks Unix uputa" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Odjeljak %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indeks za odjeljak %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Indeks Unix uputa" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Stvaram indeks" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Ne mogu da nađem naredbu sgml2roff. Instalirajte je " +"ukoliko je potrebno, i proširite putanju pretrage dopunjavanjem promjenljive " +"okruženja PATH (prije nego što se KDE pokrene)." + +#~ msgid "Open of %1 failed." +#~ msgstr "Otvaranje %1 nije uspjelo." + +#~ msgid "Man output" +#~ msgstr "Izlaz naredbe man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Samir Ribić" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "Samir.ribic@etf.unsa.ba" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/bs/kio5_mtp.po b/po/bs/kio5_mtp.po new file mode 100644 index 0000000..d3ab1d5 --- /dev/null +++ b/po/bs/kio5_mtp.po @@ -0,0 +1,33 @@ +# Bosnian translations for kde package. +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the same license as the kde package. +# Samir Ribic , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: kde 49i410\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2013-10-19 12:52+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian\n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-20 05:02+0000\n" +"X-Generator: Launchpad (build 16807)\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Ne mogu kopirati/pomjeriti datoteke na sam uređaj" diff --git a/po/bs/kio5_nfs.po b/po/bs/kio5_nfs.po new file mode 100644 index 0000000..c6d29d4 --- /dev/null +++ b/po/bs/kio5_nfs.po @@ -0,0 +1,69 @@ +# Bosnian translation for kdebase-runtime +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-09-03 14:38+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-10-21 06:47+0000\n" +"X-Generator: Launchpad (build 17203)\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Nema više slobodnog prostora na uređaju" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Datotečni sistem samo za čitanje" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Naziv datoteke je preveliki" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Kvota na disku je premašena" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "Pojavila se RPC greška." diff --git a/po/bs/kio5_recentdocuments.po b/po/bs/kio5_recentdocuments.po new file mode 100644 index 0000000..e52772a --- /dev/null +++ b/po/bs/kio5_recentdocuments.po @@ -0,0 +1,26 @@ +# Bosnian translation for bosnianuniversetranslation +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the bosnianuniversetranslation package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: bosnianuniversetranslation\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-10-05 22:16+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-10-21 06:47+0000\n" +"X-Generator: Launchpad (build 17203)\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" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Skorašnji dokumenti" diff --git a/po/bs/kio5_sftp.po b/po/bs/kio5_sftp.po new file mode 100644 index 0000000..fb6ba31 --- /dev/null +++ b/po/bs/kio5_sftp.po @@ -0,0 +1,309 @@ +# Translation of kio_sftp.po into Bosnian. +# Toplica Tanaskovic , 2003, 2004. +# Chusslove Illich , 2005, 2007, 2008, 2009, 2010. +# Dalibor Djuric , 2009, 2010. +# Dalibor Djuric , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2015-02-15 08:37+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-02-16 06:42+0000\n" +"X-Generator: Launchpad (build 17341)\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Neispravna ili nevažeća lozinka" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Ne mogu da rezervišem kontrapozive." + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Ne mogu da postavim opširnost beleženja." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Ne mogu postaviti dnevničke korisničke podatke." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Ne mogu postaviti dnevnički povratni poziv." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP prijavljivanje" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Na ovo pitanje odgovorite u polju za unos korisničkog imena." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Molim Vas unesite svoju lozinku." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Sajt:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Ne mogu da napravim novu SSH sesiju." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Ne mogu da postavim prekovreme." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Ne mogu da postavim port." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Ne mogu da postavim kompresiju." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Ne mogu da postavim domaćin." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Ne mogu da postavim port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Ne mogu da postavim korisničko ime." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Ne mogu da raščlanim postavni fajl." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not get server public key type name" +msgstr "Ne mogu kreirati hash iz javnog ključa servera" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Ne mogu kreirati hash iz javnog ključa servera" + +#: kio_sftp.cpp:762 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not create fingerprint for server public key" +msgstr "Ne mogu kreirati hash iz javnog ključa servera" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Ključ domaćina za ovaj server nije nađen, ali postoji drugi tip ključa.\n" +"Napadač bi mogao da promijeni podrazumijevani ključ servera tako da vaš " +"klijent pomisli da ključ ne postoji.\n" +"Obratite se sistem-administratoru.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Ključ domaćina za server %1 izmijenjen je.\n" +"Ovo znači da je ili došlo do DNS varke, ili su i IP adresa i ključ domaćina " +"istovremeno promijenjeni.\n" +"Udaljeni domaćin šalje ključ sa otiskom:\n" +"%2\n" +"Obratite se sistem-administratoru.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Upozorenje: Ne mogu da provjerim indentitet domaćina." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Autentičnost domaćina %1 ne može da se uspostavi.\n" +"Otisak ključa je: %2\n" +"Želite li zaista da nastavite s povezivanjem?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Autentifikacija nije uspjela." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Autentifikacija nije uspjela. Server nije poslao metode autentifikacije." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Unesite svoje korisničko ime i lozinku." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Pogrešno korisničko ime ili lozinka" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Ne mogu da zatražim SFTP podsistem. Postarajte se da je SFTP uključen na " +"serveru." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Ne mogu da pripremim SFTP sesiju." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Uspješno uspostavljena veza sa %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Ključ domaćina za ovaj server nije nađen, ali postoji drugi tip ključa.\n" +"Napadač bi mogao da promijeni podrazumijevani ključ servera tako da vaš " +"klijent pomisli da ključ ne postoji.\n" +"Obratite se sistem-administratoru.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Ključ domaćina za server %1 izmijenjen je.\n" +"Ovo znači da je ili došlo do DNS varke, ili su i IP adresa i ključ domaćina " +"istovremeno promijenjeni.\n" +"Udaljeni domaćin šalje ključ sa otiskom:\n" +"%2\n" +"Obratite se sistem-administratoru.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Autentičnost domaćina %1 ne može da se uspostavi.\n" +"Otisak ključa je: %2\n" +"Želite li zaista da nastavite s povezivanjem?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ne mogu da promijenim dozvole za\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Ne mogu da čitam vezu: %1" diff --git a/po/bs/kio5_smb.po b/po/bs/kio5_smb.po new file mode 100644 index 0000000..26f6e31 --- /dev/null +++ b/po/bs/kio5_smb.po @@ -0,0 +1,193 @@ +# Bosnian translation for kdebase-runtime +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2015-02-04 15:38+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-02-05 06:30+0000\n" +"X-Generator: Launchpad (build 17331)\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Molim unesite informacije za potvrdu identiteta za %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Molim unesite informacije za potvrdu identiteta za:\n" +"Server = %1\n" +"Share = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Nepoznat tip datoteke, niti direktorij niti datoteka." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Ne mogu da nađem nijednu radnu grupu u lokalnoj mreži. Ovo može biti usljed " +"uključenog zaštitnog zida." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Nema medija u uređaju %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Ne mogu se spojiti na računar za %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Greška prilikom spajanja na server odgovoran za %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Dijeljeni resursi nisu pronađeni na datom serveru" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "LOŠ deskriptor datoteke" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Dato ime se ne može razriješiti na jedinstven server. Molim provjerite da li " +"je vaša mreža podešena bez konflikta imena koja koriste Windows i UNIX " +"razrješavanje imena." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient je prijavio grešku, ali nije naveo u čemu je problem. Ovo možda " +"znači ozbiljan problem sa vašom mrežom - ali takođe bi mogao značiti problem " +"sa libsmbclient-om.\n" +"Ako želite da nam pomognete, molimo pošaljite nam tcpdump mrežnog interfejsa " +"dok pokušavate pretraživati (imajte na umu da on može sadržavati privatne " +"podatke, tako da ga nemojte slati ako niste sigurni u to - možete ga poslati " +"privatno ako ga programeri zatraže)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Nepoznata okolnost greške u stat: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "biblioteka SMB klijenta nije uspjela da napravi kontekst" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Provjerite da li je samba paket ispravno instaliran na vašem sistemu." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Korisnik „%3“ je pokušao da montira dijeljenje „%1“ sa domaćina „%2“, ali to " +"nije uspjelo.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Demontiranje tačke \"%1\" nije uspjelo.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "biblioteka SMB klijenta nije uspjela da pripremi kontekst" + +#~ msgid "File does not exist: %1" +#~ msgstr "Datoteka ne postoji: %1" diff --git a/po/bs/kio5_thumbnail.po b/po/bs/kio5_thumbnail.po new file mode 100644 index 0000000..bff6198 --- /dev/null +++ b/po/bs/kio5_thumbnail.po @@ -0,0 +1,79 @@ +# translation of kio_thumbnail.po to bosanski +# Bosnian translation for kdebase-runtime +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the kdebase-runtime package. +# +# FIRST AUTHOR , 2010. +# KDE 4 , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-10-18 20:26+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: bosanski \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-10-21 06:47+0000\n" +"X-Generator: Launchpad (build 17203)\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" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rotiraj sliku automatski" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Nije naveden MIME tip." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Nije navedena veličina ili je neispravna." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ne mogu da napravim sličicu za direktorij" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Dodatak nije naveden." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ne mogu pokrenuti ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ne mogu da napravim umanjeni prikaz za %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Neuspjeh stvaranja sličice." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Ne mogu zapisati sliku." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Ne mogu se pridružiti dijeljenom segmentu memorije %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Slika je prevelika za dijeljeni segment memorije" diff --git a/po/ca/docs/kioslave5/bookmarks/index.docbook b/po/ca/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..56a0ee3 --- /dev/null +++ b/po/ca/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,47 @@ + + + +]> + +
        +adreces d'interès + + +XavierVello xavier.vello@gmail.com +&traductor.Antoni.Bella; + + +31 d'agost de 2008 +0.2 + + + +Aquest KIO mostra les vostres adreces d'interès a una maca i funcional pàgina &HTML;. Hi accedireu escrivint bookmarks:/ a la barra de localització del &konqueror;. + +El contingut i aparença de la pàgina és configurable. Simplement apunteu el &konqueror; a bookmarks:/config per a llançar el diàleg de configuració principal. + +
        + diff --git a/po/ca/docs/kioslave5/bzip2/index.docbook b/po/ca/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..9a2d207 --- /dev/null +++ b/po/ca/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,50 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +&traductor.Antoni.Bella; + + + +El bzip2 és un programa de compressió. + +El kioslave «bzip2» no es pot emprar directament i s'intenta utilitzar com a un filtre. Per exemple, el kioslave «tar» pot filtrar un fitxer a través del kioslave «bzip2», per a poder mostrar els continguts d'un fitxer tar.bz2 directament en una finestra del &konqueror;. + +Si feu clic sobre un fitxer comprimit amb una extensió .bz2 en el &konqueror;, s'utilitzarà aquest kioslave per a descomprimir-lo i mostrar-lo com a un fitxer normal (sense comprimir). + +Si sou un desenvolupador i desitgeu emprar el filtre bzip2, podeu trobar la documentació sobre l'ús dels kioslaves a http://techbase.kde.org. + +Vegeu el manual: bzip2. + +El bzip és l'antecessor del bzip2. Actualment s'utilitza rares vegades, i ha estat substituït pel bzip2, el qual proporciona una compressió molt millor. + +
        diff --git a/po/ca/docs/kioslave5/fish/index.docbook b/po/ca/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..e5e6d99 --- /dev/null +++ b/po/ca/docs/kioslave5/fish/index.docbook @@ -0,0 +1,151 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +&traductor.Antoni.Bella; + + +27 d'octubre de 2010 +&kde; 4.5 + + + +Permet accedir a fitxers d'altres ordinadors utilitzant el protocol Secure SHell (SSH). L'ordinador remot necessitarà que s'estigui executant el dimoni SSH, però la resta del protocol utilitza eines de la línia d'ordres estàndard, tal com es comentarà a continuació. + +Utilitzeu el kioslave «fish» de la següent manera: fish://nom_màquina o fish://nom_usuari@nom_màquina. + +Caldrà que utilitzeu barres invertides dobles. + +Podeu ometre el nom_usuari (i el següent símbol @) si teniu el mateix nom d'usuari en ambdós ordinadors. + +Podeu afegir una contrasenya amb el format fish://nom_usuari:contrasenya@nom_màquina, però tampoc és necessari, ja que de no indicar-la us la demanarà. + +Si esteu executant el dimoni SSH en un port no estàndard, podeu especificar-lo utilitzant la sintaxi normal d'un &URL;, tal com s'indica a continuació: fish://nom_màquina:número_port. + +Fish hauria de funcionar en qualsevol ordinador remot basat en &UNIX; i que sigui més o menys compatible amb POSIX. Utilitza les ordres cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed i wc. Fish inicia /bin/sh en el seu intèrpret d'ordres i espera que sigui un intèrpret d'ordres Bourne (o compatible, com el bash). Si estan disponibles les ordres sed i file, així com un fitxer /etc/apache/magic amb les signatures dels tipus &MIME;, aquestes seran utilitzades per a intentar determinar els tipus &MIME;. + +Si està disponible Perl a la màquina remota, serà utilitzat en el seu lloc. Aleshores sols seran necessaris env i /bin/sh. L'ús de Perl disposa de l'avantatge addicional de ser més ràpid. + +Fish, fins i tot podria funcionar en màquines &Windows;, si s'instal·len eines com Cygwin. Totes les utilitats anteriorment mencionades hauran d'estar a la variable d'entorn PATH predeterminada del sistema i l'intèrpret d'ordres inicial haurà de ser capaç de processar l'ordre echo FISH:;/bin/sh correctament. + +
        diff --git a/po/ca/docs/kioslave5/gzip/index.docbook b/po/ca/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..f6e10ff --- /dev/null +++ b/po/ca/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,45 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +&traductor.Antoni.Bella; + + + +El gzip és un programa de compressió + +El kioslave «gzip» no es pot emprar directament, i s'intenta utilitzar com a un filtre. Per exemple, el kioslave «tar» pot filtrar un fitxer a través del kioslave «gzip», per a poder mostrar els continguts d'un fitxer tar.gz directament en una finestra del &konqueror;. + +Si feu clic sobre un fitxer comprimit amb una extensió gz en el &konqueror;, s'utilitzarà aquest kioslave per a descomprimir-lo i mostrar-lo com a un fitxer normal (sense comprimir). + +Si sou un desenvolupador i desitgeu emprar el filtre gzip, podeu trobar la documentació sobre l'ús dels kioslaves a http://techbase.kde.org. + +Vegeu el manual: gzip. + +
        diff --git a/po/ca/docs/kioslave5/info/index.docbook b/po/ca/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..0be8c98 --- /dev/null +++ b/po/ca/docs/kioslave5/info/index.docbook @@ -0,0 +1,58 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +&traductor.Antoni.Bella; + + + +«Info» és un tipus de documentació. Els documents estan en un format anomenat texinfo, el qual es pot llegir en la línia d'ordres amb el programa info. + +El kioslave «info» permet llegir les pàgines info instal·lades al vostre sistema, des del mateix &konqueror;. El podeu emprar fàcilment: + +info:gcc + +Això hauria de mostrar-vos el nivell superior de la documentació Info per al compilador &gcc;. + +Info és un substitut de &GNU; per a man, però no està estès fora del programari &GNU;. + +Podeu explorar amb facilitat la documentació info que teniu instal·lada des de l'aplicació &khelpcenter;, o podeu emprar el kioslave «info» directament des del &konqueror; i el mini-cli. + +
        diff --git a/po/ca/docs/kioslave5/man/index.docbook b/po/ca/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..7abf792 --- /dev/null +++ b/po/ca/docs/kioslave5/man/index.docbook @@ -0,0 +1,141 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +&traductor.Antoni.Bella; + + + +Emprant el kioslave «man» podreu llegir les pàgines man instal·lades al vostre sistema. És molt fàcil d'utilitzar: + + + +man: + +Veureu les seccions del manual, feu clic per a trobar la resta. + + + +man:/fopen + +Veureu la pàgina del manual de fopen. + + + +man:/fopen(3) + +Veureu la pàgina del manual de fopen a la secció 3. + + + +man:/(3) + +Veureu l'índex de la secció 3. + + + +man:/intro(3) + +Veureu la introducció de la secció 3. + + + + +Si hi ha més d'una pàgina de manual amb el nom que heu introduït, obtindreu una llista en què podreu triar la pàgina de manual que vulgueu veure. + +També hi ha una drecera: #fopen, que provoca el mateix efecte que l'anterior. + +Si no trobeu totes les vostres pàgines man, ajusteu les variables d'entorn MANPATH i MANSECT al fitxer de configuració /etc/manpath.config (o a un fitxer de nom similar depenent de la vostra distribució). + +Com amb qualsevol altre kioslave del &kde;, és possible introduir un &URL;, com ara man:/socket en qualsevol aplicació del &kde;. Intenteu-ho en el &kwrite; i veureu la pàgina man en el format &HTML;. + +Contacteu amb la llista de correu: kde-devel@kde.org + +
        diff --git a/po/ca/docs/kioslave5/network/index.docbook b/po/ca/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..9875e31 --- /dev/null +++ b/po/ca/docs/kioslave5/network/index.docbook @@ -0,0 +1,79 @@ + + + +]> + +
        + +network + + + + Friedrich W. H.Kossebau kossebau@kde.org + &traductor.Antoni.Bella; + + + 11 de desembre de 2016 + Aplicacions 16.12 + + + + +El kioslave «network» permet a l'usuari veure els dispositius connectats a la xarxa local i els serveis que s'executen. També és possible iniciar programes de serveis en els quals el tipus és conegut. + +Per a veure tots els dispositius trobats, introduïu network://. + +network://nom_màquina_del_dispositiu mostrarà una llista dels serveis trobats que s'executen en un dispositiu. + +Seleccionant un servei anireu a un &URL; que coincideixi amb aquest, quan sigui l'adequat, &pex;, ssh://nom_màquina_del_dispositiu:port/ per a un servei SSH. Cada tipus de servei conegut disposa d'un tipus &MIME; assignat, de manera que un usuari podrà assignar nous controladors pels &URL; resultants. Això es fa amb el mòdul de control Associacions de fitxer al &systemsettings;. Els tipus &MIME; dels serveis són en l'actualitat tots els inode/vnd.kde.service.*. + + + El kioslave «network» en l'actualitat sols troba i mostra els dispositius i serveis que mantenen activa la publicitat utilitzant el marc de treball de descobriment de serveis DNS-SD. + + +
        + diff --git a/po/ca/docs/kioslave5/nfs/index.docbook b/po/ca/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..9293c51 --- /dev/null +++ b/po/ca/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,47 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +&traductor.Antoni.Bella; + + +El protocol NFS de Sun proporciona accés remot transparent a sistemes de fitxers compartits a través de la xarxa. El protocol està dissenyat perquè sigui independent de la màquina, del sistema operatiu, de l'arquitectura de la xarxa i del protocol de transport. Aquesta independència s'aconsegueix mitjançat l'ús de crides als procediments remots (Remote Procedure Call - RPC) creades primitivament a sobre d'una representació externa de dades (eXternal Data Representation - XDR). + +El protocol implementat MOUNT fa les funcions específiques del sistema operatiu que permeten als clients associar arbres remots de carpetes a un punt del sistema de fitxers local. El procés de muntatge també permet al servidor gestionar els privilegis remots d'accés a un conjunt restringit de clients a través d'un control de l'exportació. + +El gestor de bloqueig proporciona el funcionament per al bloqueig de fitxers quan s'empra a l'entorn NFS. El protocol de gestió de bloqueig a la xarxa (Network Lock Manager - NLM) aïlla els aspectes inherents al bloqueig de fitxers en un protocol a part. + +Font: http://www.networksorcery.com/enp/protocol/nfs.htm + +Vegeu el manual: nfs. +
        diff --git a/po/ca/docs/kioslave5/recentdocuments/index.docbook b/po/ca/docs/kioslave5/recentdocuments/index.docbook new file mode 100644 index 0000000..65ccf38 --- /dev/null +++ b/po/ca/docs/kioslave5/recentdocuments/index.docbook @@ -0,0 +1,60 @@ + + + +]> + +
        +Documents recents + + + + + &Burkhard.Lueck;&Burkhard.Lueck.mail; +&traductor.Antoni.Bella; + + +1 de desembre de 2016 +Aplicacions 16.12 + + + +Un kioslave per a visualitzar els documents recents o els &URL; al diàleg de fitxers, al gestor de fitxers, al &krunner; i al menú d'aplicacions. + +Podeu utilitzar el kioslave de la següent manera: + +Escriviu recentdocuments:/ a la barra de localització del &dolphin;, &konqueror; i al diàleg de fitxers es llistaren els documents o &URL; oberts recentment. + +Podeu afegir una entrada a la barra lateral Llocs: feu clic dret a la barra lateral, escolliu Afegeix una entrada, introduïu recentdocuments:/ al camp Ubicació i deseu-lo. Estarà disponible en tots els diàlegs de fitxers a menys que marqueu només mostrar l'entrada en aquesta aplicació. + +Al mòdul Cerca del Plasma d'&systemsettings; s'activa el connector de cerca Documents recents per emprar aquest kioslave al &krunner;. + +Al Menú d'aplicacions afegiu un element de menú amb els documents recents a la part superior del menú, activant Mostra els documents recents a la pàgina de configuració. + +
        diff --git a/po/ca/docs/kioslave5/sftp/index.docbook b/po/ca/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..ac699e3 --- /dev/null +++ b/po/ca/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,35 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +&traductor.Antoni.Bella; + + +El SFTP és un protocol de transferència segura de fitxers. El sftp és un programa interactiu de transferència de fitxers, semblant al ftp, però que realitza totes les operacions a través d'un transport encriptat amb ssh. Podeu emprar moltes característiques de ssh, incloent-hi l'autenticació i la compressió de la clau pública. + +Vegeu el manual: sftp. + +
        diff --git a/po/ca/docs/kioslave5/smb/index.docbook b/po/ca/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..32c4710 --- /dev/null +++ b/po/ca/docs/kioslave5/smb/index.docbook @@ -0,0 +1,92 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; +&traductor.Antoni.Bella; + +11 de desembre de 2016 +Aplicacions 16.12 + +El kioslave «smb» permet habilitar la navegació pels recursos compartits d'una xarxa &Windows; (o Samba). + +Per a veure els grups de treball, introduïu smb:/. +smb://un_grup_de_treball mostrarà les màquines connectades amb aquest grup de treball. +Per a veure els recursos compartits d'una màquina, introduïu smb://la_màquina o smb:/un_grup_de_treball/la_màquina. +Per accedir directament a un recurs compartit, introduïu smb://la_màquina/el_recurs o smb:/un_grup_de_treball/la_màquina/el_recurs. + +El kioslave per a «smb» requereix que tingueu libsmbclient instal·lat. + +Podeu establir el nom d'usuari i contrasenya per omissió a &systemsettings;, a la categoria Xarxa a Connectivitat Comparticions de Windows. Això és especialment d'utilitat si sou membre d'un domini &Windows; NT. Allí també podeu establir el nom del vostre grup de treball, però en la majoria dels casos no és necessari. Si no s'ha definit un nom d'usuari i una contrasenya per omissió, el kioslave us els demanarà. + +
        + diff --git a/po/ca/docs/kioslave5/tar/index.docbook b/po/ca/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..49186b6 --- /dev/null +++ b/po/ca/docs/kioslave5/tar/index.docbook @@ -0,0 +1,27 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +&traductor.Antoni.Bella; + + +Un programa d'arxivat dissenyat per emmagatzemar i extraure fitxers des d'un fitxer arxiu conegut com a fitxer «tar». Es pot crear en una unitat de cinta, encara que, també és habitual escriure'l a un fitxer normal. + +Vegeu el manual: tar. + +
        diff --git a/po/ca/docs/kioslave5/thumbnail/index.docbook b/po/ca/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..4530998 --- /dev/null +++ b/po/ca/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,43 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +&traductor.Antoni.Bella; + +11 de desembre de 2016 +Aplicacions 16.12 + +El kioslave «thumbnail» és emprat pel &kde; per a la generació persistent i transparent a la xarxa de les miniatures. + +El kioslave «thumbnail» empra connectors per a generar miniatures reals. Podeu activar la visió d'aquestes miniatures des del submenú Visualitza Vista prèvia, disponible al &dolphin; o al &konqueror; en el mode gestor de fitxers. + +El kioslave «thumbnail» no el pot utilitzar directament un usuari, però si sou un desenvolupador, podeu utilitzar-lo des de les vostres pròpies aplicacions per a crear vistes prèvies dels fitxers. + +Per a més informació vegeu la documentació en el codi font. La trobareu a la carpeta thumbnail del codi font. + +
        diff --git a/po/ca/docs/kioslave5/xz/index.docbook b/po/ca/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..751ba44 --- /dev/null +++ b/po/ca/docs/kioslave5/xz/index.docbook @@ -0,0 +1,51 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +&traductor.Antoni.Bella; + + + +El Xz és un programa de compressió + +El kioslave «xz» no es pot emprar directament, i s'intenta utilitzar com a un filtre. Per exemple, el kioslave «tar» pot filtrar un fitxer a través del kioslave «xz» per a mostrar els continguts d'un fitxer tar.lzma o tar.xz directament en una finestra del &konqueror;. + +Si feu clic sobre un fitxer comprimit amb una extensió .lzma o tar.xz en el &konqueror;, s'utilitzarà aquest kioslave per a descomprimir-lo i mostrar-lo com a un fitxer normal (sense comprimir). + +Si sou un desenvolupador i desitgeu emprar el filtre xz, podeu trobar la documentació sobre l'ús dels kioslaves a http://techbase.kde.org. + +Vegeu el manual: xz. + +
        diff --git a/po/ca/kfileaudiopreview5.po b/po/ca/kfileaudiopreview5.po new file mode 100644 index 0000000..d92576e --- /dev/null +++ b/po/ca/kfileaudiopreview5.po @@ -0,0 +1,37 @@ +# Translation of kfileaudiopreview5.po to Catalan +# Copyright (C) 2003-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2003. +# Josep Ma. Ferrer , 2007, 2009, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-10-13 20:49+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Reprodueix &automàticament" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "inicia la reproducció" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "fa pausa a la reproducció" diff --git a/po/ca/kio5_activities.po b/po/ca/kio5_activities.po new file mode 100644 index 0000000..e86ecb1 --- /dev/null +++ b/po/ca/kio5_activities.po @@ -0,0 +1,71 @@ +# Translation of kio5_activities.po to Catalan +# Copyright (C) 2014-2019 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2014, 2015, 2019. +# Antoni Bella Pérez , 2014, 2015, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-09 11:33+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Activitats" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "S'està carregant..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "El gestor d'activitats no s'està executant" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Enllaça amb l'activitat actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Separa de l'activitat actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Enllaça amb:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Separa de:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Activitat" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Activitat actual" diff --git a/po/ca/kio5_archive.po b/po/ca/kio5_archive.po new file mode 100644 index 0000000..b585119 --- /dev/null +++ b/po/ca/kio5_archive.po @@ -0,0 +1,42 @@ +# Translation of kio5_archive.po to Catalan +# Copyright (C) 2005-2016 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Aleix Pol Gonzàlez , 2005. +# Josep Ma. Ferrer , 2013, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-06-05 15:09+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"No s'ha pogut obrir el fitxer, probablement perquè el format del fitxer no " +"està admès.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"L'arxiu no s'ha pogut obrir, potser perquè el format no està admès.\n" +"%1" diff --git a/po/ca/kio5_bookmarks.po b/po/ca/kio5_bookmarks.po new file mode 100644 index 0000000..60ddd96 --- /dev/null +++ b/po/ca/kio5_bookmarks.po @@ -0,0 +1,74 @@ +# Translation of kio5_bookmarks.po to Catalan +# Copyright (C) 2008-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2008, 2009, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-10-31 10:19+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Arrel" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Llocs" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "No s'ha pogut trobar la configuració de les adreces d'interès" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "No s'ha pogut trobar l'editor de les adreces d'interès" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Sol·licitud incorrecta: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Encara no hi ha adreces d'interès a mostrar." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"No s'ha trobat el fitxer CSS kio_bookmarks. La sortida semblarà lletja.\n" +"Comproveu la instal·lació." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Les meves adreces d'interès" + +#~ msgid "My bookmarks" +#~ msgstr "Les meves adreces d'interès" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Desenvolupador inicial" diff --git a/po/ca/kio5_fish.po b/po/ca/kio5_fish.po new file mode 100644 index 0000000..581e825 --- /dev/null +++ b/po/ca/kio5_fish.po @@ -0,0 +1,48 @@ +# Translation of kio5_fish.po to Catalan +# Copyright (C) 2003-2012 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. +# +# Antoni Bella Pérez , 2003. +# Sebastià Pla i Sanz , 2004. +# Josep Ma. Ferrer , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-10-14 19:09+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "S'està connectant..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "S'està inicialitzant el protocol..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Connexió local" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticació SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Desconnectat." diff --git a/po/ca/kio5_info.po b/po/ca/kio5_info.po new file mode 100644 index 0000000..a85aa12 --- /dev/null +++ b/po/ca/kio5_info.po @@ -0,0 +1,33 @@ +# Translation of kio5_info.po to Catalan +# Copyright (C) 2009-2016 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2009. +# Antoni Bella Pérez , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2016-09-08 20:34+0100\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"No s'ha pogut trobar el fitxer %1, el qual és necessari per a executar " +"aquest servei. Comproveu la instal·lació del programari." diff --git a/po/ca/kio5_man.po b/po/ca/kio5_man.po new file mode 100644 index 0000000..f873ab9 --- /dev/null +++ b/po/ca/kio5_man.po @@ -0,0 +1,224 @@ +# Translation of kio5_man.po to Catalan +# Copyright (C) 2000-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Sebastià Pla i Sanz , 2000, 2001, 2004, 2006. +# Antoni Bella Pérez , 2002, 2003, 2016, 2020. +# Albert Astals Cid , 2005. +# Josep Ma. Ferrer , 2007, 2008, 2009, 2012, 2013, 2015, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-13 10:23+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"No s'ha trobat cap pàgina «man» coincident amb %1.Comproveu que no hàgiu escrit malament el nom de la pàgina que voleu, " +"i tingueu en compte que els noms de les pàgines distingeixen entre " +"majúscules i minúscules.Si el nom és correcte, potser cal ampliar " +"el camí de cerca per a les pàgines «man», bé sigui amb la variable d'entorn " +"MANPATH o amb un fitxer de configuració al directori " +"/etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"S'ha trobat la pàgina «man» %1, però no s'ha pogut " +"llegir o analitzar." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"La pàgina «man» especificada referencia una altra pàgina %1,però no s'ha pogut trobar la pàgina referenciada " +"%2." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Error del visor de les pàgines de manual" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Hi ha més d'una pàgina «man» coincident:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiples pàgines de manual" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Nota: si llegiu una pàgina «man» en el vostre idioma, heu de saber que pot " +"contenir algunes errades o estar obsoleta. En cas de dubte, hauríeu de donar " +"un cop d'ull a la versió anglesa." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Fitxers de capçalera" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Fitxers de capçalera (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Ordres d'usuari" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Ordres d'usuari (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Crides del sistema" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subrutines" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Mòduls de Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Funcions de xarxa" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Dispositius" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formats de fitxer" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Jocs" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Miscel·lània" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administració del sistema" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Nucli" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentació local" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nou" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índex principal de pàgines de manual" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Secció %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índex per a la secció %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Índex de pàgines de manual" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "S'està generant l'índex" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"No s'ha pogut trobar el programa sgml2roff en el sistema. " +"Instal·leu-lo si fos necessari, assegureu-vos que es pot trobar usant la " +"variable d'entorn PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "L'obertura de %1 ha fallat." + +#~ msgid "Man output" +#~ msgstr "Sortida de man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sebastià Pla i Sanz,Antoni Bella" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sps@sastia.com,antonibella5@yahoo.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/ca/kio5_mtp.po b/po/ca/kio5_mtp.po new file mode 100644 index 0000000..68f8a30 --- /dev/null +++ b/po/ca/kio5_mtp.po @@ -0,0 +1,41 @@ +# Translation of kio5_mtp.po to Catalan +# Copyright (C) 2014-2019 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2014, 2016, 2018, 2019. +# Antoni Bella Pérez , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-16 13:36+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"No s'ha trobat cap suport d'emmagatzematge. Comproveu que el dispositiu " +"estigui desbloquejat i tingui activat el MTP als paràmetres de connexió USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "No es poden copiar/moure fitxers sobre el mateix dispositiu" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "No s'ha trobat cap emmagatzemament. Potser cal que desbloquegeu el " +#~ "dispositiu?" diff --git a/po/ca/kio5_network.po b/po/ca/kio5_network.po new file mode 100644 index 0000000..c398968 --- /dev/null +++ b/po/ca/kio5_network.po @@ -0,0 +1,26 @@ +# Translation of kio5_network.po to Catalan +# Copyright (C) 2019 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-23 09:46+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Generator: Lokalize 2.0\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Xarxa" diff --git a/po/ca/kio5_nfs.po b/po/ca/kio5_nfs.po new file mode 100644 index 0000000..1a6423f --- /dev/null +++ b/po/ca/kio5_nfs.po @@ -0,0 +1,70 @@ +# Translation of kio5_nfs.po to Catalan +# Copyright (C) 2002-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2014, 2016, 2020. +# Josep Ma. Ferrer , 2014, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-07-20 23:01+0200\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Versió no admesa de l'NFS" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Error de l'RPC: %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "No queda espai al dispositiu" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Sistema de només lectura" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Nom de fitxer massa llarg" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Quota de disc excedida" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Error NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Ha fallat en muntar %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Objectiu desconegut" + +#~ msgid "An RPC error occurred." +#~ msgstr "S'ha produït un error RPC." diff --git a/po/ca/kio5_recentdocuments.po b/po/ca/kio5_recentdocuments.po new file mode 100644 index 0000000..1fd0828 --- /dev/null +++ b/po/ca/kio5_recentdocuments.po @@ -0,0 +1,26 @@ +# Translation of kio5_recentdocuments.po to Catalan +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-04-28 23:47+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documents recents" diff --git a/po/ca/kio5_sftp.po b/po/ca/kio5_sftp.po new file mode 100644 index 0000000..7b5e2e2 --- /dev/null +++ b/po/ca/kio5_sftp.po @@ -0,0 +1,293 @@ +# Translation of kio5_sftp.po to Catalan +# Copyright (C) 2002-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2003, 2014, 2016, 2020. +# Sebastià Pla i Sanz , 2004. +# Albert Astals Cid , 2005. +# Josep Ma. Ferrer , 2008, 2009, 2010, 2012, 2013, 2014, 2015, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2020-08-05 17:02+0200\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frase de pas incorrecta o no vàlida" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "No s'han pogut assignar les crides de retorn" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "No s'ha pogut establir el nivell de detall del registre." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "No s'ha pogut establir la dada d'usuari del registre." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "No s'ha pogut establir la crida de retorn del registre." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Accés SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Utilitzeu el camp d'entrada del nom d'usuari per a contestar aquesta qüestió." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Si us plau, introduïu la vostra contrasenya." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Lloc:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "No s'ha pogut crear cap sessió SSH nova." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "No s'ha pogut establir cap temps d'espera." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "No s'ha pogut desactivar l'algorisme de Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "No s'ha pogut establir cap compressió." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "No s'ha pogut establir el servidor." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "No s'ha pogut establir cap port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "No s'ha pogut establir cap nom d'usuari." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "No s'ha pogut analitzar el fitxer de configuració." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "S'està obrint la connexió SFTP amb el servidor %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "No s'ha pogut obtenir el nom de tipus de la clau pública del servidor" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "No s'ha pogut crear el resum de la clau pública del servidor" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "No s'ha pogut crear l'empremta digital de la clau pública del servidor" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"No s'ha trobat la clau %1 de l'ordinador per a aquest servidor, però " +"existeix un altre tipus de clau.\n" +"Un atacant podria canviar la clau del servidor per defecte per a confondre " +"al client fent-lo creure que la clau no existeix.\n" +"Si us plau, contacteu amb l'administrador del sistema.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"La clau de l'ordinador per al servidor %1 ha canviat.\n" +"Això podria significar que hi ha un falsejament de DNS («DNS SPOOFING») o " +"que l'adreça IP del servidor i la seva clau de servidor han canviat al " +"mateix temps.\n" +"L'empremta digital per a la clau %2 enviada pel servidor remot és:\n" +" SHA256:%3\n" +"Si us plau, contacteu amb l'administrador del sistema.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Avís: No es pot verificar la identitat del servidor." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"No es pot establir l'autenticitat de l'ordinador %1.\n" +"L'empremta digital de la clau %2 és: %3\n" +"Esteu segur que voleu continuar la connexió?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Ha fallat en l'autenticació." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Ha fallat en l'autenticació. El servidor no ha enviat cap mètode " +"d'autenticació." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Si us plau, introduïu el vostre nom d'usuari i contrasenya." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"No s'ha pogut sol·licitar el subsistema SFTP. Comproveu que l'SFTP estigui " +"actiu en el servidor." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "No s'ha pogut inicialitzar la sessió SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "S'ha connectat correctament amb %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"No s'ha trobat la clau de l'ordinador per a aquest servidor, però existeix " +"un altre tipus de clau.\n" +"Un atacant podria canviar la clau del servidor per defecte per a confondre " +"al client fent-lo creure que la clau no existeix.\n" +"Si us plau, contacteu amb l'administrador del sistema.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"La clau de l'ordinador per al servidor %1 ha canviat.\n" +"Això podria significar que hi ha un falsejament de DNS («DNS SPOOFING») o " +"que l'adreça IP del servidor i la seva clau de servidor han canviat al " +"mateix temps.\n" +"L'empremta digital per a la clau enviada pel servidor remot és:\n" +" %2\n" +"Si us plau, contacteu amb l'administrador del sistema.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"No es pot establir l'autenticitat de l'ordinador %1.\n" +"L'empremta digital de la clau és: %2\n" +"Esteu segur que voleu continuar la connexió?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Context SFTP no vàlid" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"No s'han pogut canviar els permisos per a\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "No s'ha pogut llegir l'enllaç: %1" diff --git a/po/ca/kio5_smb.po b/po/ca/kio5_smb.po new file mode 100644 index 0000000..65e7017 --- /dev/null +++ b/po/ca/kio5_smb.po @@ -0,0 +1,207 @@ +# Translation of kio5_smb.po to Catalan +# Copyright (C) 2002-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2003, 2014, 2016, 2017, 2020. +# Sebastià Pla i Sanz , 2004, 2006. +# Albert Astals Cid , 2005. +# Josep Ma. Ferrer , 2006, 2007, 2008, 2009, 2010, 2015, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-10 14:09+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Hi ha diverses opcions per autenticar-se en recursos SMB.nom d'usuari: En autenticar-se a una " +"xarxa domèstica és suficient el nom d'usuari al servidornom_usuari@domini.com: Els noms de " +"connexió empresarials moderns estan formats com adreces de correu " +"electrònicDOMINI\\nom_usuari: Per " +"les xarxes empresarials antigues o grups de treballs es pot necessitar posar " +"el prefix del nom de domini NetBIOS (pre-Windows 2000)anònim: Es poden intentar connexions " +"anònimes usant un nom d'usuari i contrasenya buida. En funció de la " +"configuració del servidor es poden requerir noms d'usuari no buits" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "" +"Si us plau, introduïu la informació d'autenticació per a %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Si us plau, introduïu la informació d'autenticació per a:\n" +"Servidor = %1\n" +"Recurs = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tipus de fitxer desconegut, no és un fitxer o directori." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"No s'ha pogut trobar cap grup de treball a la vostra xarxa local. Això pot " +"ser degut a un tallafoc." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "No hi ha cap suport al dispositiu per a %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "No s'ha pogut connectar amb la màquina per a %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Hi ha hagut un error en connectar amb el servidor responsable per a %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "No s'ha pogut trobar cap recurs compartit en el servidor indicat" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descriptor de fitxer dolent" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"El nom proporcionat no s'ha pogut associar amb un únic servidor. Assegureu-" +"vos que la vostra xarxa està configurada sense conflictes de nom entre els " +"noms usats per a Windows i per a la resolució de noms d'Unix." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: No s'ha pogut accedir al servidor" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"El libsmbclient ha informat d'un error, però no ha especificat de quin " +"problema es tracta. Això podria indicar un problema seriós amb la vostra " +"xarxa -però també podria indicar un problema amb libsmbclient-.\n" +"Si voleu ajudar-nos, si us plau, faciliteu un tcpdump de la interfície de " +"xarxa mentre que intenteu navegar (cal tenir present que podria contenir " +"dades privades, per tant no l'envieu si no n'esteu segur sobre això -podeu " +"enviar-lo privadament als desenvolupadors si us el demanen-)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condició desconeguda d'error: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "S'ha produït un error en intentar accedir a %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Ha fallat la creació del context amb libsmbclient" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Assegureu-vos que el paquet samba està adequadament instal·lat en el vostre " +"sistema." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Ha fallat el muntatge del recurs «%1» des de la màquina «%2» per a l'usuari " +"«%3».\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ha fallat el desmuntatge del punt de muntatge «%1».\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Dispositiu desconegut @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "Ha fallat la inicialització del context amb libsmbclient" + +#~ msgid "File does not exist: %1" +#~ msgstr "El fitxer no existeix: %1" diff --git a/po/ca/kio5_thumbnail.po b/po/ca/kio5_thumbnail.po new file mode 100644 index 0000000..746bfbc --- /dev/null +++ b/po/ca/kio5_thumbnail.po @@ -0,0 +1,79 @@ +# Translation of kio5_thumbnail.po to Catalan +# Copyright (C) 2005-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Aleix Pol Gonzàlez , 2005. +# Josep Ma. Ferrer , 2007, 2009, 2011. +# Antoni Bella Pérez , 2016, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2020-07-20 23:04+0200\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Gira automàticament la imatge" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "No s'ha especificat cap tipus MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Mida no especificada o no vàlida." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "No s'ha pogut crear la miniatura per al directori" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "No s'ha especificat cap connector." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "No s'ha pogut carregar ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "No s'ha pogut crear la miniatura per a %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "No s'ha pogut crear una vista en miniatura." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "No s'ha pogut escriure la imatge." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "No s'ha pogut annexar al segment de la memòria compartida %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "La imatge és massa gran per al segment de la memòria compartida" diff --git a/po/ca@valencia/kfileaudiopreview5.po b/po/ca@valencia/kfileaudiopreview5.po new file mode 100644 index 0000000..4cfd953 --- /dev/null +++ b/po/ca@valencia/kfileaudiopreview5.po @@ -0,0 +1,37 @@ +# Translation of kfileaudiopreview5.po to Catalan (Valencian) +# Copyright (C) 2003-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2003. +# Josep Ma. Ferrer , 2007, 2009, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-10-13 20:49+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Reprodueix &automàticament" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "inicia la reproducció" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "fa pausa a la reproducció" diff --git a/po/ca@valencia/kio5_activities.po b/po/ca@valencia/kio5_activities.po new file mode 100644 index 0000000..ece05d4 --- /dev/null +++ b/po/ca@valencia/kio5_activities.po @@ -0,0 +1,71 @@ +# Translation of kio5_activities.po to Catalan (Valencian) +# Copyright (C) 2014-2019 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2014, 2015, 2019. +# Antoni Bella Pérez , 2014, 2015, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-09 11:33+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Activitats" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "S'està carregant..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "El gestor d'activitats no s'està executant" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Enllaça amb l'activitat actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Separa de l'activitat actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Enllaça amb:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Separa de:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Activitat" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Activitat actual" diff --git a/po/ca@valencia/kio5_archive.po b/po/ca@valencia/kio5_archive.po new file mode 100644 index 0000000..796163d --- /dev/null +++ b/po/ca@valencia/kio5_archive.po @@ -0,0 +1,42 @@ +# Translation of kio5_archive.po to Catalan (Valencian) +# Copyright (C) 2005-2016 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Aleix Pol Gonzàlez , 2005. +# Josep Ma. Ferrer , 2013, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-06-05 15:09+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"No s'ha pogut obrir el fitxer, probablement perquè el format del fitxer no " +"està admés.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"L'arxiu no s'ha pogut obrir, potser perquè el format no està admés.\n" +"%1" diff --git a/po/ca@valencia/kio5_bookmarks.po b/po/ca@valencia/kio5_bookmarks.po new file mode 100644 index 0000000..d820ac2 --- /dev/null +++ b/po/ca@valencia/kio5_bookmarks.po @@ -0,0 +1,74 @@ +# Translation of kio5_bookmarks.po to Catalan (Valencian) +# Copyright (C) 2008-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2008, 2009, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-10-31 10:19+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Arrel" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Llocs" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "No s'ha pogut trobar la configuració de les adreces d'interés" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "No s'ha pogut trobar l'editor de les adreces d'interés" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Sol·licitud incorrecta: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Encara no hi ha adreces d'interés a mostrar." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"No s'ha trobat el fitxer CSS kio_bookmarks. L'eixida semblarà lletja.\n" +"Comproveu la instal·lació." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Les meues adreces d'interés" + +#~ msgid "My bookmarks" +#~ msgstr "Les meves adreces d'interès" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Desenvolupador inicial" diff --git a/po/ca@valencia/kio5_fish.po b/po/ca@valencia/kio5_fish.po new file mode 100644 index 0000000..fb39174 --- /dev/null +++ b/po/ca@valencia/kio5_fish.po @@ -0,0 +1,48 @@ +# Translation of kio5_fish.po to Catalan (Valencian) +# Copyright (C) 2003-2012 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. +# +# Antoni Bella Pérez , 2003. +# Sebastià Pla i Sanz , 2004. +# Josep Ma. Ferrer , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-10-14 19:09+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "S'està connectant..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "S'està inicialitzant el protocol..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Connexió local" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticació SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Desconnectat." diff --git a/po/ca@valencia/kio5_info.po b/po/ca@valencia/kio5_info.po new file mode 100644 index 0000000..2b4ca55 --- /dev/null +++ b/po/ca@valencia/kio5_info.po @@ -0,0 +1,33 @@ +# Translation of kio5_info.po to Catalan (Valencian) +# Copyright (C) 2009-2016 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2009. +# Antoni Bella Pérez , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2016-09-08 20:34+0100\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"No s'ha pogut trobar el fitxer %1, el qual és necessari per a executar " +"aquest servei. Comproveu la instal·lació del programari." diff --git a/po/ca@valencia/kio5_man.po b/po/ca@valencia/kio5_man.po new file mode 100644 index 0000000..2f343df --- /dev/null +++ b/po/ca@valencia/kio5_man.po @@ -0,0 +1,224 @@ +# Translation of kio5_man.po to Catalan (Valencian) +# Copyright (C) 2000-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Sebastià Pla i Sanz , 2000, 2001, 2004, 2006. +# Antoni Bella Pérez , 2002, 2003, 2016, 2020. +# Albert Astals Cid , 2005. +# Josep Ma. Ferrer , 2007, 2008, 2009, 2012, 2013, 2015, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-13 10:23+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"No s'ha trobat cap pàgina «man» coincident amb %1.Comproveu que no hàgeu escrit malament el nom de la pàgina que voleu, " +"i tingueu en compte que els noms de les pàgines distingeixen entre " +"majúscules i minúscules.Si el nom és correcte, potser cal ampliar " +"el camí de cerca per a les pàgines «man», bé siga amb la variable d'entorn " +"MANPATH o amb un fitxer de configuració al directori " +"/etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"S'ha trobat la pàgina «man» %1, però no s'ha pogut " +"llegir o analitzar." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"La pàgina «man» especificada referencia una altra pàgina %1,però no s'ha pogut trobar la pàgina referenciada " +"%2." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Error del visor de les pàgines de manual" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Hi ha més d'una pàgina «man» coincident:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiples pàgines de manual" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Nota: si llegiu una pàgina «man» en el vostre idioma, heu de saber que pot " +"contindre algunes errades o estar obsoleta. En cas de dubte, hauríeu de " +"donar un cop d'ull a la versió anglesa." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Fitxers de capçalera" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Fitxers de capçalera (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Ordres d'usuari" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Ordres d'usuari (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Crides del sistema" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subrutines" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Mòduls de Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Funcions de xarxa" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Dispositius" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formats de fitxer" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Jocs" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Miscel·lània" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administració del sistema" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Nucli" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentació local" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nou" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índex principal de pàgines de manual" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Secció %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índex per a la secció %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Índex de pàgines de manual" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "S'està generant l'índex" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"No s'ha pogut trobar el programa sgml2roff en el sistema. " +"Instal·leu-lo si fos necessari, assegureu-vos que es pot trobar usant la " +"variable d'entorn PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "L'obertura de %1 ha fallat." + +#~ msgid "Man output" +#~ msgstr "Sortida de man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sebastià Pla i Sanz,Antoni Bella" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sps@sastia.com,antonibella5@yahoo.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/ca@valencia/kio5_mtp.po b/po/ca@valencia/kio5_mtp.po new file mode 100644 index 0000000..4566195 --- /dev/null +++ b/po/ca@valencia/kio5_mtp.po @@ -0,0 +1,41 @@ +# Translation of kio5_mtp.po to Catalan (Valencian) +# Copyright (C) 2014-2019 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2014, 2016, 2018, 2019. +# Antoni Bella Pérez , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-16 13:36+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"No s'ha trobat cap suport d'emmagatzematge. Comproveu que el dispositiu " +"estiga desbloquejat i tinga activat el MTP als paràmetres de connexió USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "No es poden copiar/moure fitxers sobre el mateix dispositiu" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "No s'ha trobat cap emmagatzemament. Potser cal que desbloquegeu el " +#~ "dispositiu?" diff --git a/po/ca@valencia/kio5_network.po b/po/ca@valencia/kio5_network.po new file mode 100644 index 0000000..cc7f528 --- /dev/null +++ b/po/ca@valencia/kio5_network.po @@ -0,0 +1,26 @@ +# Translation of kio5_network.po to Catalan (Valencian) +# Copyright (C) 2019 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-23 09:46+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Generator: Lokalize 2.0\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Xarxa" diff --git a/po/ca@valencia/kio5_nfs.po b/po/ca@valencia/kio5_nfs.po new file mode 100644 index 0000000..d214a90 --- /dev/null +++ b/po/ca@valencia/kio5_nfs.po @@ -0,0 +1,70 @@ +# Translation of kio5_nfs.po to Catalan (Valencian) +# Copyright (C) 2002-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2014, 2016, 2020. +# Josep Ma. Ferrer , 2014, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-07-20 23:01+0200\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Versió no admesa de l'NFS" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Error de l'RPC: %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "No queda espai al dispositiu" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Sistema de només lectura" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Nom de fitxer massa llarg" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Quota de disc excedida" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Error NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Ha fallat en muntar %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Objectiu desconegut" + +#~ msgid "An RPC error occurred." +#~ msgstr "S'ha produït un error RPC." diff --git a/po/ca@valencia/kio5_recentdocuments.po b/po/ca@valencia/kio5_recentdocuments.po new file mode 100644 index 0000000..fe4cc06 --- /dev/null +++ b/po/ca@valencia/kio5_recentdocuments.po @@ -0,0 +1,26 @@ +# Translation of kio5_recentdocuments.po to Catalan (Valencian) +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep Ma. Ferrer , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-04-28 23:47+0200\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documents recents" diff --git a/po/ca@valencia/kio5_sftp.po b/po/ca@valencia/kio5_sftp.po new file mode 100644 index 0000000..5909973 --- /dev/null +++ b/po/ca@valencia/kio5_sftp.po @@ -0,0 +1,293 @@ +# Translation of kio5_sftp.po to Catalan (Valencian) +# Copyright (C) 2002-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2003, 2014, 2016, 2020. +# Sebastià Pla i Sanz , 2004. +# Albert Astals Cid , 2005. +# Josep Ma. Ferrer , 2008, 2009, 2010, 2012, 2013, 2014, 2015, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2020-08-05 17:02+0200\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frase de pas incorrecta o no vàlida" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "No s'han pogut assignar les crides de retorn" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "No s'ha pogut establir el nivell de detall del registre." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "No s'ha pogut establir la dada d'usuari del registre." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "No s'ha pogut establir la crida de retorn del registre." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Accés SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Utilitzeu el camp d'entrada del nom d'usuari per a contestar aquesta qüestió." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Per favor, introduïu la vostra contrasenya." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Lloc:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "No s'ha pogut crear cap sessió SSH nova." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "No s'ha pogut establir cap temps d'espera." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "No s'ha pogut desactivar l'algorisme de Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "No s'ha pogut establir cap compressió." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "No s'ha pogut establir el servidor." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "No s'ha pogut establir cap port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "No s'ha pogut establir cap nom d'usuari." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "No s'ha pogut analitzar el fitxer de configuració." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "S'està obrint la connexió SFTP amb el servidor %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "No s'ha pogut obtindre el nom de tipus de la clau pública del servidor" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "No s'ha pogut crear el resum de la clau pública del servidor" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "No s'ha pogut crear l'empremta digital de la clau pública del servidor" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"No s'ha trobat la clau %1 de l'ordinador per a aquest servidor, però " +"existeix un altre tipus de clau.\n" +"Un atacant podria canviar la clau del servidor per defecte per a confondre " +"al client fent-lo creure que la clau no existeix.\n" +"Per favor, contacteu amb l'administrador del sistema.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"La clau de l'ordinador per al servidor %1 ha canviat.\n" +"Això podria significar que hi ha un falsejament de DNS («DNS SPOOFING») o " +"que l'adreça IP del servidor i la seua clau de servidor han canviat al " +"mateix temps.\n" +"L'empremta digital per a la clau %2 enviada pel servidor remot és:\n" +" SHA256:%3\n" +"Per favor, contacteu amb l'administrador del sistema.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Avís: No es pot verificar la identitat del servidor." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"No es pot establir l'autenticitat de l'ordinador %1.\n" +"L'empremta digital de la clau %2 és: %3\n" +"Esteu segur que voleu continuar la connexió?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Ha fallat en l'autenticació." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Ha fallat en l'autenticació. El servidor no ha enviat cap mètode " +"d'autenticació." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Per favor, introduïu el vostre nom d'usuari i contrasenya." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"No s'ha pogut sol·licitar el subsistema SFTP. Comproveu que l'SFTP estiga " +"actiu en el servidor." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "No s'ha pogut inicialitzar la sessió SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "S'ha connectat correctament amb %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"No s'ha trobat la clau de l'ordinador per a aquest servidor, però existeix " +"un altre tipus de clau.\n" +"Un atacant podria canviar la clau del servidor per defecte per a confondre " +"al client fent-lo creure que la clau no existeix.\n" +"Per favor, contacteu amb l'administrador del sistema.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"La clau de l'ordinador per al servidor %1 ha canviat.\n" +"Això podria significar que hi ha un falsejament de DNS («DNS SPOOFING») o " +"que l'adreça IP del servidor i la seua clau de servidor han canviat al " +"mateix temps.\n" +"L'empremta digital per a la clau enviada pel servidor remot és:\n" +" %2\n" +"Per favor, contacteu amb l'administrador del sistema.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"No es pot establir l'autenticitat de l'ordinador %1.\n" +"L'empremta digital de la clau és: %2\n" +"Esteu segur que voleu continuar la connexió?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Context SFTP no vàlid" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"No s'han pogut canviar els permisos per a\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "No s'ha pogut llegir l'enllaç: %1" diff --git a/po/ca@valencia/kio5_smb.po b/po/ca@valencia/kio5_smb.po new file mode 100644 index 0000000..ce36ea5 --- /dev/null +++ b/po/ca@valencia/kio5_smb.po @@ -0,0 +1,201 @@ +# Translation of kio5_smb.po to Catalan (Valencian) +# Copyright (C) 2002-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2003, 2014, 2016, 2017, 2020. +# Sebastià Pla i Sanz , 2004, 2006. +# Albert Astals Cid , 2005. +# Josep Ma. Ferrer , 2006, 2007, 2008, 2009, 2010, 2015, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-10 14:09+0100\n" +"Last-Translator: Josep Ma. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Hi ha diverses opcions per autenticar-se en recursos SMB.nom d'usuari: En autenticar-se a una " +"xarxa domèstica és suficient el nom d'usuari al servidornom_usuari@domini.com: Els noms de " +"connexió empresarials moderns estan formats com adreces de correu " +"electrònicDOMINI\\nom_usuari: Per " +"les xarxes empresarials antigues o grups de treballs es pot necessitar posar " +"el prefix del nom de domini NetBIOS (pre-Windows 2000)anònim: Es poden intentar connexions " +"anònimes usant un nom d'usuari i contrasenya buida. En funció de la " +"configuració del servidor es poden requerir noms d'usuari no buits" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "" +"Per favor, introduïu la informació d'autenticació per a %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Per favor, introduïu la informació d'autenticació per a:\n" +"Servidor = %1\n" +"Recurs = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tipus de fitxer desconegut, no és un fitxer o directori." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"No s'ha pogut trobar cap grup de treball a la vostra xarxa local. Això pot " +"ser degut a un tallafoc." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "No hi ha cap suport al dispositiu per a %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "No s'ha pogut connectar amb la màquina per a %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Hi ha hagut un error en connectar amb el servidor responsable per a %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "No s'ha pogut trobar cap recurs compartit en el servidor indicat" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descriptor de fitxer dolent" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"El nom proporcionat no s'ha pogut associar amb un únic servidor. Assegureu-" +"vos que la vostra xarxa està configurada sense conflictes de nom entre els " +"noms usats per a Windows i per a la resolució de noms de Unix." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: No s'ha pogut accedir al servidor" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"El libsmbclient ha informat d'un error, però no ha especificat de quin " +"problema es tracta. Això podria indicar un problema seriós amb la vostra " +"xarxa -però també podria indicar un problema amb libsmbclient-.\n" +"Si voleu ajudar-nos, per favor, faciliteu un tcpdump de la interfície de " +"xarxa mentre que intenteu navegar (cal tindre present que podria contindre " +"dades privades, per tant no l'envieu si no n'esteu segur sobre això -podeu " +"enviar-lo privadament als desenvolupadors si vos el demanen-)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condició desconeguda d'error: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "S'ha produït un error en intentar accedir a %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Ha fallat la creació del context amb libsmbclient" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Assegureu-vos que el paquet samba està adequadament instal·lat en el vostre " +"sistema." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Ha fallat el muntatge del recurs «%1» des de la màquina «%2» per a l'usuari " +"«%3».\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ha fallat el desmuntatge del punt de muntatge «%1».\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Dispositiu desconegut @ %1" diff --git a/po/ca@valencia/kio5_thumbnail.po b/po/ca@valencia/kio5_thumbnail.po new file mode 100644 index 0000000..6763714 --- /dev/null +++ b/po/ca@valencia/kio5_thumbnail.po @@ -0,0 +1,79 @@ +# Translation of kio5_thumbnail.po to Catalan (Valencian) +# Copyright (C) 2005-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Aleix Pol Gonzàlez , 2005. +# Josep Ma. Ferrer , 2007, 2009, 2011. +# Antoni Bella Pérez , 2016, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2020-07-20 23:04+0200\n" +"Last-Translator: Antoni Bella Pérez \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Gira automàticament la imatge" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "No s'ha especificat cap tipus MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Mida no especificada o no vàlida." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "No s'ha pogut crear la miniatura per al directori" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "No s'ha especificat cap connector." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "No s'ha pogut carregar ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "No s'ha pogut crear la miniatura per a %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "No s'ha pogut crear una vista en miniatura." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "No s'ha pogut escriure la imatge." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "No s'ha pogut annexar al segment de la memòria compartida %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "La imatge és massa gran per al segment de la memòria compartida" diff --git a/po/cs/kfileaudiopreview5.po b/po/cs/kfileaudiopreview5.po new file mode 100644 index 0000000..7c1f8aa --- /dev/null +++ b/po/cs/kfileaudiopreview5.po @@ -0,0 +1,32 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-05-21 15:18+0200\n" +"Last-Translator: Vít Pelčák \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Přehrát &automaticky" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "začít přehrávání" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pozastavit přehrávání" diff --git a/po/cs/kio5_activities.po b/po/cs/kio5_activities.po new file mode 100644 index 0000000..9c8f7a4 --- /dev/null +++ b/po/cs/kio5_activities.po @@ -0,0 +1,67 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Vit Pelcak , 2012, 2013, 2014, 2015, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-03-14 16:45+0100\n" +"Last-Translator: Vít Pelčák \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktivity" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Probíhá načítání..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Správce aktivit neběží." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Připojit k současné aktivitě" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Odpojit od aktuální aktivity" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Odkaz na:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Odpojit od:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktivita" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Aktuální aktivita" diff --git a/po/cs/kio5_archive.po b/po/cs/kio5_archive.po new file mode 100644 index 0000000..8d77a64 --- /dev/null +++ b/po/cs/kio5_archive.po @@ -0,0 +1,38 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-08-18 14:40+0200\n" +"Last-Translator: Lukáš Tinkl \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Nelze otevřít soubor, pravděpodobně kvůli nepodporovanému formátu:\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Soubor s archivem nelze otevřít, pravděpodobně kvůli nepodporovanému " +"formátu:\n" +"%1" diff --git a/po/cs/kio5_bookmarks.po b/po/cs/kio5_bookmarks.po new file mode 100644 index 0000000..f7d1107 --- /dev/null +++ b/po/cs/kio5_bookmarks.po @@ -0,0 +1,62 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2009-01-06 13:47+0100\n" +"Last-Translator: Lukáš Tinkl \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Kořen" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Místa" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Neplatný požadavek: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Neexistují ještě žádné záložky k zobrazení." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"CSS soubor kio_bookmarks nebyl nalezen. Výstup nebude vypadat hezky.\n" +"Zkontrolujte svou instalaci." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Moje záložky" diff --git a/po/cs/kio5_fish.po b/po/cs/kio5_fish.po new file mode 100644 index 0000000..c99f532 --- /dev/null +++ b/po/cs/kio5_fish.po @@ -0,0 +1,43 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2010, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-08-20 09:53+0200\n" +"Last-Translator: Vit Pelcak \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Připojuji se..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Zahajuji protokol..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Místní přihlášení" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH ověření" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Odpojeno." diff --git a/po/cs/kio5_info.po b/po/cs/kio5_info.po new file mode 100644 index 0000000..d9e2b46 --- /dev/null +++ b/po/cs/kio5_info.po @@ -0,0 +1,28 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-06-12 11:32+0200\n" +"Last-Translator: Vít Pelčák \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Nepovedlo se najít soubor %1, který je potřeba pro běh tohoto zařízení. " +"Prosím, zkontrolujte nainstalovaný software." diff --git a/po/cs/kio5_man.po b/po/cs/kio5_man.po new file mode 100644 index 0000000..0c5a789 --- /dev/null +++ b/po/cs/kio5_man.po @@ -0,0 +1,194 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Tomáš Chvátal , 2012. +# Vit Pelcak , 2013, 2014, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-17 16:44+0200\n" +"Last-Translator: Vit Pelcak \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 20.08.1\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Manuálová stránka %1 byla nalezena, ale nelze ji " +"přečíst nebo zpracovat." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Zadaná manuálová stránka odkazuje na jinou stránku %1," +" ale odkazovaná stránka %2 nebyla nalezena." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Chyba prohlížeče manuálových stránek" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Nalezena více než jedna odpovídající manuálová stránka:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Vícero manuálových stránek" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Poznámka: Lokalizované verze manuálových stránek mohou obsahovat chyby nebo " +"mohou být zastaralé. Pokud máte jakékoliv pochybnosti, otevřete si anglickou " +"verzi." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Hlavičkové soubory" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Hlavičkové soubory (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Uživatelské příkazy" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Uživatelské příkazy (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Systémová volání" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Funkce" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Moduly Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Síťové funkce" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Zařízení" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Datové formáty" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Hry" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Různé" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administrace systému" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Jádro" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Místní dokumentace" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nové" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Hlavní index manuálových stránek" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sekce %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index sekce %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Index manuálových stránek" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Vytvářím rejstřík" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Nebyl nalezen program sgml2roff. Prosím, nainstalujte jej " +"pokud je potřeba a ujistěte se, že jej lze nají v proměnné prostředí " +"PATH." diff --git a/po/cs/kio5_mtp.po b/po/cs/kio5_mtp.po new file mode 100644 index 0000000..7301a00 --- /dev/null +++ b/po/cs/kio5_mtp.po @@ -0,0 +1,30 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Vit Pelcak , 2012, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2015-03-20 14:00+0100\n" +"Last-Translator: Vít Pelčák \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Nelze kopírovat/přesunovat soubory na samotném zařízení" diff --git a/po/cs/kio5_network.po b/po/cs/kio5_network.po new file mode 100644 index 0000000..6cfbfcd --- /dev/null +++ b/po/cs/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# Vit Pelcak , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-01-17 16:58+0100\n" +"Last-Translator: Vit Pelcak \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 19.12.1\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Síť" diff --git a/po/cs/kio5_nfs.po b/po/cs/kio5_nfs.po new file mode 100644 index 0000000..c8a69d9 --- /dev/null +++ b/po/cs/kio5_nfs.po @@ -0,0 +1,63 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-22 16:05+0200\n" +"Last-Translator: Vít Pelčák \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Nepodporovaná verze NFS" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Chyba RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Na zařízení již není volné místo." + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Souborový systém pouze pro čtení." + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Název souboru je příliš dlouhý" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disková kvóta překročena" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Chyba NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Připojení %1 selhalo" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Neznámý cíl" diff --git a/po/cs/kio5_recentdocuments.po b/po/cs/kio5_recentdocuments.po new file mode 100644 index 0000000..abac982 --- /dev/null +++ b/po/cs/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Vit Pelcak , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-13 15:56+0100\n" +"Last-Translator: Vit Pelcak \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Nedávné dokumenty" diff --git a/po/cs/kio5_sftp.po b/po/cs/kio5_sftp.po new file mode 100644 index 0000000..c8b67ca --- /dev/null +++ b/po/cs/kio5_sftp.po @@ -0,0 +1,266 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2010, 2011, 2012, 2013, 2014, 2018, 2020. +# Lukáš Tinkl , 2011. +# Tomáš Chvátal , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2020-06-09 14:26+0200\n" +"Last-Translator: Vit Pelcak \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 20.04.1\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Nesprávné nebo neplatné heslo" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nelze rezervovat zpětná volání." + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nelze nastavit podrobnost." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Nelze nastavit uživatelská data záznamu." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Nelze nastavit zpětné volání záznamu." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Přihlášení SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Použijte vstupní pole 'Uživatelské jméno' pro zodpovězení otázky." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Prosím, zadejte své heslo." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Server:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nelze vytvořit nové SSH sezení." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nelze nastavit časový limit." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagleův algoritmus nelze vypnout." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Nelze nastavit kompresi." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Nelze nastavit hostitele." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Nelze nastavit port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Nelze nastavit uživatelské jméno." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nelze zpracovat konfigurační soubor." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Otevírá se SFTP spojení s hostitelem %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Nelze vytvořit hash veřejného klíče serveru" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Varování: nelze ověřit identitu hostitele." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Ověření selhalo." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "Ověření selhalo. Server neposlal žádnou ověřovací metodu" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Prosím, zadejte své uživatelské jméno a heslo." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Neplatné uživatelské jméno nebo heslo" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Nelze vyžádat SFTP podsystém. Ujistěte se, že je na serveru povoleno SFTP." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nelze inicializovat sezení SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Úspěšně spojeno s '%1'" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Nebyl nalezen klíč hosta pro tento server, ale jiný typ klíče existuje.\n" +"Útočník mohl změnit výchozí klíč serveru pro zmatení klienta, aby si myslel " +"že klíč neexistuje.\n" +"Prosím kontaktujte správce systému.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Klíč hosta pro server %1 se změnil.\n" +"Toto může znamenat, že probíhá DNS SPOOFING, nebo že IP adresa počítače a " +"jeho klíč se změnili zároveň.\n" +"Otisk klíče odeslaný vzdáleným počítačem:\n" +" %2\n" +"Prosím kontaktujte správce systému.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Věrohodnost serveru %1 nemůže být ověřena.\n" +"Otisk klíče je: %2\n" +"Opravdu si přejete pokračovat ve spojení?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Neplatný kontext sftp" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Není možné změnit přístupová práva\n" +"k %1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Nelze přečíst odkaz: %1" diff --git a/po/cs/kio5_smb.po b/po/cs/kio5_smb.po new file mode 100644 index 0000000..8628ef0 --- /dev/null +++ b/po/cs/kio5_smb.po @@ -0,0 +1,182 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2011, 2013, 2014, 2017, 2020. +# Tomáš Chvátal , 2012, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-05-25 21:56+0200\n" +"Last-Translator: Vit Pelcak \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 20.04.0\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Prosím zadejte přihlašovací informace pro %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Prosím, zadejte přihlašovací informace pro:\n" +"Server = %1\n" +"Sdílený zdroj = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Neznámý typ souboru; není to ani adresář ani soubor." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Nelze najít žádné pracovní skupiny ve vaší lokální síti. Toto může být " +"způsobeno aktivovaným firewallem." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "V zařízení %1 není médium" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nelze se připojit k hostiteli %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Chyba při připojování se k serveru %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Na daném serveru nelze najít sdílený prostředek." + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Špatný popisovač souboru" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Zadané jméno nelze převést na unikátní název serveru. Ujistěte se, že je " +"vaše síť správně nastavená a že nedochází ke konfliktům mezi názvy počítačů " +"ve Windows a v Unixu." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Hostitel není dostupný" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"Knihovna libsmbclient nahlásila chybu, ale neudala důvod problému. To může " +"znamenat, že vaše síť má vážné problémy; ale také může být problém přímo v " +"této knihovně.\n" +"Pokud si přejete nám pomoci, prosím spusťte tcpdump svého síťového rozhraní " +"během procházení sítě. Uvědomte si prosím, že může obsahovat soukromá data, " +"takže neposílejte nic, s čím si nejste jisti. Můžete tyto informace poslat " +"soukromě vývojářům KDE, pokud si je vyžádají." + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Neznámý chybový stav: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Nastala chyba při pokusu o přístup k %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Nelze vytvořit kontext" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Ujistěte se, že máte správně nainstalován balíček 'samba'." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Připojení prostředku \"%1\" ze serveru \"%2\" uživatelem \"%3\" selhalo.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Odpojení bodu \"%1\" selhalo.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Neznámé zařízení @ %1" diff --git a/po/cs/kio5_thumbnail.po b/po/cs/kio5_thumbnail.po new file mode 100644 index 0000000..60f0b0d --- /dev/null +++ b/po/cs/kio5_thumbnail.po @@ -0,0 +1,74 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2010, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-06-13 12:50+0200\n" +"Last-Translator: Vít Pelčák \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.2\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rotovat obrázek automaticky" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Žádný MIME typ nebyl zadán." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Velikost nebyla zadána nebo je chybná." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nelze vytvořit náhled adresáře" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nebyl zadán žádný modul." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nelze zavést ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nelze vytvořit náhled %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Chyba při vytváření náhledu." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Nelze zapsat obrázek." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Selhání při přidání segmentu sdílené paměti %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Obrázek je pro segment sdílené paměti příliš velký" diff --git a/po/da/kfileaudiopreview5.po b/po/da/kfileaudiopreview5.po new file mode 100644 index 0000000..d57e88b --- /dev/null +++ b/po/da/kfileaudiopreview5.po @@ -0,0 +1,43 @@ +# Danish translation of kfileaudiopreview +# Copyright (C). +# +# Erik Kjær Pedersen , 2003. +# Martin Schlander , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-05-07 13:53+0200\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Spil &automatisk" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "start afspilning" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "sæt afspilning på pause" + +#~ msgid "stop playback" +#~ msgstr "stop afspilning" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "løkke: genstarter afspilning ved afslutningen" + +#~ msgid "Media Player" +#~ msgstr "Mediespiller" diff --git a/po/da/kio5_activities.po b/po/da/kio5_activities.po new file mode 100644 index 0000000..a3a5f6f --- /dev/null +++ b/po/da/kio5_activities.po @@ -0,0 +1,247 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Martin Schlander , 2012, 2013, 2014, 2015, 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-01-25 22:47+0100\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktiviteter" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Indlæser..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktivitetshåndteringen kører ikke" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Kobl til den aktuelle aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Afkobl fra den aktuelle aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Kobl til:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Afkobl fra:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktivitet" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Aktuel aktivitet" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Martin Schlander" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mschlander@opensuse.org" + +#~ msgid "Default" +#~ msgstr "Standard" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Skift til aktiviteten \"%1\"" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Aktivitet" + +#~ msgid "Delete activity" +#~ msgstr "Slet aktivitet" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Vil du virkelig slette \"%1\"?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Fejl ved indlæsning af QML-filer. Tjek din installation.\n" +#~ "%1 mangler" + +#~ msgid "Create a new activity" +#~ msgstr "Opret ny aktivitet" + +#~ msgid "Activity settings" +#~ msgstr "Aktivitetsindstillinger" + +#~ msgid "General" +#~ msgstr "Generelt" + +#~ msgid "Other" +#~ msgstr "Andet" + +#~ msgid "Create" +#~ msgstr "Opret" + +#~ msgid "Apply" +#~ msgstr "Anvend" + +#~ msgid "Cancel" +#~ msgstr "Annullér" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Genvej til at skifte til denne aktivitet:" + +#~ msgid "Activity information" +#~ msgstr "Information om aktivitet" + +#~ msgid "Name" +#~ msgstr "Navn" + +#~ msgid "Description" +#~ msgstr "Beskrivelse" + +#~ msgid "Wallpaper" +#~ msgstr "Baggrundsbillede" + +#~ msgid "Change..." +#~ msgstr "Skift..." + +#~ msgid "Icon" +#~ msgstr "Ikon" + +#~ msgid "Switching" +#~ msgstr "Skift" + +#~ msgid "Privacy" +#~ msgstr "Privatliv" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "evigt" + +#~ msgid "Forget the last hour" +#~ msgstr "Glem den seneste time" + +#~ msgid "Forget the last two hours" +#~ msgstr "Glem de to seneste timer" + +#~ msgid "Forget a day" +#~ msgstr "Glem et døgn" + +#~ msgid "Forget everything" +#~ msgstr "Glem alt" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " måned" +#~ msgstr[1] " måneder" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "i " + +#~ msgid "Create activity..." +#~ msgstr "Opret aktivitet..." + +#~ msgid "Activity switching" +#~ msgstr "Skift af aktivitet" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Gå igennem aktiviteter" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Gå igennem aktiviteter (baglæns)" + +#~ msgid "Form" +#~ msgstr "Formular" + +#~ msgid "Remember opened documents:" +#~ msgstr "Husk åbne dokumenter:" + +#~ msgid "For a&ll applications" +#~ msgstr "For a&lle programmer" + +#~ msgid "&Do not remember" +#~ msgstr "Husk &ikke" + +#~ msgid "O&nly for specific applications" +#~ msgstr "Ku&n for visse programmer" + +#~ msgid "Keep history" +#~ msgstr "Behold historik" + +#~ msgid "Clear recent history" +#~ msgstr "Ryd nylig historik" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Sortlist alle programmer som ikke er på listen" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Husk det aktuelle virtuelle skrivebord for hver aktivitet (kræver " +#~ "genstart)" + +#~ msgid "Shortcuts" +#~ msgstr "Genveje" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Privat - overvåg ikke brug af denne aktivitet" + +#~ msgid "Delete" +#~ msgstr "Slet" + +#~ msgid "Activity name" +#~ msgstr "Aktivitetsnavn" + +#~ msgid "Available Features" +#~ msgstr "Tilgængelige funktioner" + +#~ msgid "Plugins" +#~ msgstr "Plugins" + +#~ msgid "Enable activities management" +#~ msgstr "Aktivér aktivitetshåndtering" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Aktivitetshåndteringen kører ikke korrekt." + +#~ msgid "Activities..." +#~ msgstr "Aktiviteter..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" diff --git a/po/da/kio5_archive.po b/po/da/kio5_archive.po new file mode 100644 index 0000000..66e6c70 --- /dev/null +++ b/po/da/kio5_archive.po @@ -0,0 +1,36 @@ +# Danish translation of kio_tar +# Erik Kjær Pedersen , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-06-25 08:57+0200\n" +"Last-Translator: Erik Kjær Pedersen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Kunne ikke åbne filen, formodentlig fordi filformatet ikke er understøttet.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Arkivfilen kunne ikke åbnes, måske fordi formatet ikke er understøttet.\n" +"%1" diff --git a/po/da/kio5_bookmarks.po b/po/da/kio5_bookmarks.po new file mode 100644 index 0000000..4e2ee61 --- /dev/null +++ b/po/da/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Martin Schlander , 2008, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-17 19:44+0100\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Rod-mappen" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Steder" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Kunne ikke finde konfiguration til bogmærker" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Kunne ikke finde bogmærke-editor" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Fejlagtig anmodning: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Der er ingen bogmærker at vise endnu." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS-fil ikke fundet. Outputtet vil ikke være kønt.\n" +"Tjek din installation." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mine bogmærker" + +#~ msgid "My bookmarks" +#~ msgstr "Mine bogmærker" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Oprindelig udvikler" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Martin Schlander" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mschlander@opensuse.org" diff --git a/po/da/kio5_fish.po b/po/da/kio5_fish.po new file mode 100644 index 0000000..4e066a3 --- /dev/null +++ b/po/da/kio5_fish.po @@ -0,0 +1,52 @@ +# Danish translation of kio_fish +# Copyright (C). +# +# Erik Kjær Pedersen , 2003, 2004. +# Martin Schlander , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-11-17 14:54+0100\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Forbinder..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Initierer protokol..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokal login" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-autentificering" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Ikke forbundet." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Martin Schlander" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mschlander@opensuse.org" diff --git a/po/da/kio5_info.po b/po/da/kio5_info.po new file mode 100644 index 0000000..6b5ffb7 --- /dev/null +++ b/po/da/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Martin Schlander , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-05-06 11:32+0200\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Kan ikke finde filen %1, som er nødvendig for at køre denne tjeneste. " +"Kontrollér venligst din softwareinstallation." diff --git a/po/da/kio5_man.po b/po/da/kio5_man.po new file mode 100644 index 0000000..4f44d5a --- /dev/null +++ b/po/da/kio5_man.po @@ -0,0 +1,220 @@ +# translation of kio_man.po to dansk +# Danish translation of kio_man +# Copyright (C). +# +# Erik Kjær Pedersen , 2000, 2002, 2003, 2005. +# Erik K. Pedersen , 2005. +# Keld Simonsen , 2008. +# Martin Schlander , 2008, 2012, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-10-27 19:15+0100\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Der kunne ikke findes en man-side der matcher %1.Tjek at du ikke har skrevet navnet forkert på den side du ønsker, og " +"bemærk at navnene er versalfølsomme.Hvis navnet er korrekt, så " +"skal du måske udvide søgestien for man-sider. Enten ved brug af " +"miljøvariablen MANPATH eller en konfigurationsfil i mappen " +"/etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Man-siden %1 blev fundet, men den kunne ikke læses " +"eller fortolkes." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Den angivne man-side henviser til en anden side %1,men den side der blev henvist til %2 kunne ikke findes." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Fejl i man-side-fremviser" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Der er mere end én manual-side som passer:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Flere manual-sider" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Bemærk at hvis du læser en manualside på dit sprog, skal du være klar over " +"at den kan indeholde fejl eller være forældet. Hvis du er i tvivl, bør du " +"også kigge i den engelske version. " + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Header-filer" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Header-filer (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Brugerkommandoer" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Brugerkommandoer (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Systemkald" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subrutiner" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-moduler" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Netværksfunktioner" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Enheder" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Filformater" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Spil" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Forskelligt" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Systemadministration" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kerne" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokal dokumentation" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Ny" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Indeks for hovedmanual-siden" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Afsnit %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Indeks for sektion %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Indeks for manual-side" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Genererer indeks" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Kunne ikke find programmet sgml2roff på dit system. " +"Installér det venligst, om nødvendigt, og sørg for at det kan findes ved " +"brug af miljøvariablen PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "Åbning af %1 mislykkedes." + +#~ msgid "Man output" +#~ msgstr "Man-uddata" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Erik Kjær Pedersen" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "erik@binghamton.edu" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/da/kio5_mtp.po b/po/da/kio5_mtp.po new file mode 100644 index 0000000..59ece98 --- /dev/null +++ b/po/da/kio5_mtp.po @@ -0,0 +1,34 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Martin Schlander , 2015, 2016, 2017. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2017-03-04 15:01+0100\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Ingen lagermedier fundet. Sørg for at din enhed er låst op og har MTP " +"aktiveret i dens indstillinger for USB-forbindelse." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Kan ikke kopiere/flytte filer på selve enheden" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "Ingen lagerenheder fundet. Måske skal du låse din enhed op?" diff --git a/po/da/kio5_network.po b/po/da/kio5_network.po new file mode 100644 index 0000000..b5faa0d --- /dev/null +++ b/po/da/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Martin Schlander , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-04-08 19:17+0200\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 18.12.3\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Netværk" diff --git a/po/da/kio5_nfs.po b/po/da/kio5_nfs.po new file mode 100644 index 0000000..6127ba8 --- /dev/null +++ b/po/da/kio5_nfs.po @@ -0,0 +1,67 @@ +# Danish translation of kio_nfs +# Copyright (C). +# +# Erik Kjær Pedersen , 2001, 2004. +# Martin Schlander , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-08 21:31+0200\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Ikke understøttet NFS-version" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC-fejl %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Ikke mere plads på enheden" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Filsystem kun læsbart" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Filnavn for langt" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disk-kvote overskredet" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS-fejl %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Kunne ikke montere %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Ukendt mål" + +#~ msgid "An RPC error occurred." +#~ msgstr "Der opstod en RPC-fejl." diff --git a/po/da/kio5_recentdocuments.po b/po/da/kio5_recentdocuments.po new file mode 100644 index 0000000..4b57340 --- /dev/null +++ b/po/da/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Martin Schlander , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-06-05 13:41+0200\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Nylige dokumenter" diff --git a/po/da/kio5_sftp.po b/po/da/kio5_sftp.po new file mode 100644 index 0000000..b6e3683 --- /dev/null +++ b/po/da/kio5_sftp.po @@ -0,0 +1,444 @@ +# Danish translation of kio_sftp +# Copyright (C) +# Erik Kjær Pedersen , 2001, 2002, 2003, 2004. +# Martin Schlander , 2008, 2009, 2010, 2012, 2013, 2014, 2015. +# scootergrisen, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2019-03-02 13:37+0200\n" +"Last-Translator: scootergrisen\n" +"Language-Team: Danish\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Project-Style: kde\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Forkert eller ugyldig adgangsfrase" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Kunne ikke allokere tilbagekald" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Kunne ikke sætte detaljeringsgrad for log." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Kunne ikke sætte log-brugerdata." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Kunne ikke sætte log-tilbagekald." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-login" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Anvend input-feltet brugernavn til at besvare dette spørgsmål." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Angiv din adgangskode." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Sted:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Kunne ikke oprette en ny SSH-session." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Kunne ikke sætte en timeout." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Kunne ikke deaktivere Nagle's algoritme." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Kunne ikke sætte komprimering." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Kunne ikke sætte vært." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Kunne ikke sætte port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Kunne ikke sætte brugernavn." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Kunne ikke fortolke konfigurationsfilen." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Åbner SFTP-forbindelse til værten %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Kunne ikke hente typenavnet ud fra serverens offentlige nøgle" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Kunne ikke oprette hash ud fra serverens offentlige nøgle" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Kunne ikke oprette fingeraftryk ud fra serverens offentlige nøgle" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"En %1 værtsnøglen for denne server blev ikke fundet, men en anden type af " +"nøgle findes.\n" +"En angriber kan måske ændre standard server-nøglen for at forvirre din " +"klient til at tro at nøglen ikke findes.\n" +"Kontakt din systemadministrator.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Værtsnøglen for serveren %1 er blevet ændret.\n" +"Dette kan enten betyde at DNS SPOOFING finder sted eller at IP-adressen for " +"denne vært og dens værtsnøgle er blevet ændret på samme tid.\n" +"Fingeraftrykket for %2 nøglen sendt fra den eksterne vært er:\n" +" SHA256:%3\n" +"Kontakt din systemadministrator.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Advarsel: Kan ikke verificere værtens identitet." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Autentiteten af værten %1 kan ikke fastslås.\n" +"%2 nøglens fingeraftryk er: %3\n" +"Er du sikker på, at du vil fortsætte med at forbinde?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Godkendelse mislykkedes." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Godkendelse mislykkedes. Serveren sendte ikke nogen autentificeringsmetoder" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Indtast venligst brugernavn og adgangskode." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Forkert brugernavn eller adgangskode" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Kan ikke forespørge SFTP-undersystemet. Sørg for at SFTP er aktiveret på " +"serveren." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Kunne ikke initialisere SFTP-sessionen." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Det lykkedes at forbinde til %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Værts nøglen for denne server blev ikke fundet, men en anden type af nøgle " +"findes.\n" +" En angriber kan måske ændre standard server-nøglen for at forvirre din " +"klient til at tro at nøglen ikke findes.\n" +"Kontakt din systemadministrator.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Værtsnøglen for serveren %1 er blevet ændret.\n" +"Dette kan enten betyde at DNS SPOOFING finder sted eller at IP-adressen for " +"denne vært og dens værtsnøgle er blevet ændret på samme tid.\n" +"Fingeraftrykket for nøglen sendt fra den eksterne vært er:\n" +" %2\n" +"Kontakt din systemadministrator.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Autentiteten af værten %1 kan ikke fastslås.\n" +"Nøglens fingeraftryk er: %2\n" +"Er du sikker på, at du vil fortsætte med at forbinde?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ugyldigt sftp-kontekst" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Kunne ikke ændre rettigheder for\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Kunne ikke læse link: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Intet værtsnavn angivet." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Der opstod en intern fejl. Prøv venligst forespørgslen igen." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Indtast venligst dit brugernavn og nøgle-løsen." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Advarsel: Værtens identitet ændret." + +#~ msgid "Connection failed." +#~ msgstr "Forbindelse mislykkedes." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Forbindelse lukket af ekstern vært." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "uventet SFTP-fejl: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP version %1" + +#~ msgid "Protocol error." +#~ msgstr "Protokolfejl." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Der opstod en intern fejl. Prøv venligst igen." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Ukendt fejl opstod under kopiering af filen til '%1'. Prøv venligst igen." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Den eksterne vært understøtter ikke omdøbning af filer." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Den eksterne vært understøtter ikke oprettelse af symbolske link." + +#~ msgid "Connection closed" +#~ msgstr "Forbindelse lukket" + +#~ msgid "End of file." +#~ msgstr "End of file." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP-kommando mislykkedes af en ukendt grund." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "SFTP-serveren modtog en dårlig besked." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Du forsøgte en operation der ikke er understøttet af SFTP-serveren." + +#~ msgid "Error code: %1" +#~ msgstr "Fejl-kode: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Kan ikke angive et undersystem og kommando samtidigt." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Ingen valg gjort for ssh-udførsel." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Mislykkedes at køre ssh-proces." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Der opstod en fejl mens der blev talt til ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Angiv venligst en adgangskode" + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Angiv venligst løsen for din SSH-privatnøgle." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Godkendelse til %1 mislykkedes" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Identiteten af den eksterne vært '%1' kunne ikke verificeres da værtens " +#~ "nøgle ikke er i \"known hosts\"-filen." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ "Tilføj værtens nøgle manuelt til \"known hosts\"-filen eller kontakt din " +#~ "administrator." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Tilføj værtens nøgle manuelt til %1 eller kontakt din administrator." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Identiteten af den eksterne vært '%1' kunne ikke verificeres. Værtens " +#~ "nøglefingeraftryk er:\n" +#~ "%2\n" +#~ "Du bør verificere fingeraftrykket med værtens administrator før du " +#~ "forbinder.\n" +#~ "\n" +#~ "Vil du acceptere værtens nøgle og forbinde alligevel? " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "ADVARSEL: Identiteten af den eksterne vært '%1' er ændret!\n" +#~ "\n" +#~ "Nogen lytter muligvis med på din forbindelse, eller måske har " +#~ "administratoren blot ændret værtens nøgle. Under alle omstændigheder bør " +#~ "du verificere værtens nøgle-fingeraftryk med værtens administrator. Nøgle-" +#~ "fingeraftrykket er:\n" +#~ "%2\n" +#~ "Tilføj den rigtige værtsnøgle til \"%3\" for at slippe af med denne " +#~ "besked." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "ADVARSEL: Identiteten af den eksterne vært '%1' er ændret!\n" +#~ "\n" +#~ "Nogen lytter muligvis med på din forbindelse, eller måske har " +#~ "administratoren blot ændret værtens nøgle. Under alle omstændigheder bør " +#~ "du verificere værtens nøgle-fingeraftryk med værtens administrator. Nøgle-" +#~ "fingeraftrykket er:\n" +#~ "%2\n" +#~ "\n" +#~ "Vil du acceptere værtens nye nøgle og forbinde alligevel?" + +#~ msgid "Host key was rejected." +#~ msgstr "Værtsnøgle blev afslået" diff --git a/po/da/kio5_smb.po b/po/da/kio5_smb.po new file mode 100644 index 0000000..5eb5a40 --- /dev/null +++ b/po/da/kio5_smb.po @@ -0,0 +1,191 @@ +# Danish translation of kio_smb +# Copyright (C) +# Erik Kjær Pedersen , 2001, 2003, 2004, 2005. +# scootergrisen, 2017. +# Martin Schlander , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-07-21 17:43+0200\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.04.2\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Indtast venligst godkendelsesinformation for %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Indtest venligst godkendelsesinformation for:\n" +"Server = %1\n" +"Share = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Ukendt filtype, hverken mappe eller fil." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Kunne ingen arbejdsgrupper finde på dit lokale netværk. Dette kan skyldes en " +"aktiveret firewall." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Intet medie i enheden for %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Kunne ikke forbinde til værten for %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Fejl ved forbindelse til serveren ansvarlig for %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Share kunne ikke findes på givne server" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Dårlig filbeskriver" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Det givne navn kunne ikke resolveres til en entydig server. Sørg for at dit " +"netværk er sat op uden navnekonflikter mellem navne brugt af Windows og af " +"Unix navneresolution." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Værten kan ikke nås" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient rapporterede en fejl, men angav ikke hvad problemet er. Dette " +"kunne indikere et alvorligt problem med dit netværk - men det kunne også " +"være et problem med libsmbclient.\n" +"Hvis du vil hjælpe os, så giv et tcpdump af netværkets grænseflade mens du " +"prøver at søge på nettet (du skal være klar over at den kunne indeholde " +"private data, så send den ikke ind hvis du er usikker på det - du kan sende " +"det privat udviklerne hvis de beder om det)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Ukendt fejltilstand: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Fejl ved forsøg på at tilgå %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "mislykkedes at initialisere libsmbclient" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Sørg for at samba-pakken er installeret rigtigt på dit system." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Montering af share \"%1\" fra vært \"%2\" af brugeren \"%3\" mislykkedes.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Afmontering af monteringspunktet \"%1\" mislykkedes.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Ukendt enhed @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "mislykkedes at initialisere libsmbclient" + +#~ msgid "File does not exist: %1" +#~ msgstr "Fil eksisterer ikke: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "mislykkedes at initialisere libsmbclient" diff --git a/po/da/kio5_thumbnail.po b/po/da/kio5_thumbnail.po new file mode 100644 index 0000000..e70a291 --- /dev/null +++ b/po/da/kio5_thumbnail.po @@ -0,0 +1,87 @@ +# translation of kio_thumbnail.po to dansk +# Danish translation of kio_thumbnail +# +# Erik Kjær Pedersen , 2005. +# Keld Simonsen , 2008. +# Martin Schlander , 2009, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-05-17 23:19+0200\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rotér billedet automatisk" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Ingen MIME-type angivet." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Ingen eller ugyldig størrelse angivet." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kan ikke oprette miniature for mappen" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Intet plugin angivet." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Kan ikke indlæse miniaturebilledopretteren %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Kan ikke oprette miniature for %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Mislykkedes at oprette miniaturebillede." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Kunne ikke skrive billede." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Mislykkedes at knytte til delt hukommelsessegment %1." + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Billedet er for stort for det delte hukommelsessegment" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Keld Simonsen" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "keld@dkuug.dk" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/de/docs/kioslave5/bookmarks/index.docbook b/po/de/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..ca51265 --- /dev/null +++ b/po/de/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +Lesezeichen + + +XavierVello xavier.vello@gmail.com +BurkhardLück
        lueck@hube-lueck.de
        Übersetzung
        +
        + +2008-08-31 +0.2 + +
        + +Dieses Ein-/Ausgabemodul zeigt Ihre Lesezeichen als &HTML;-Seite an. Geben Sie bookmarks:/ in die Adressleiste von &konqueror; ein, um die Seite mit den Lesezeichen zu öffnen. + +Der Inhalt und das Layout dieser Seite kann angepasst werden. Den Einrichtungsdialog öffnen Sie mit der Eingabe von bookmarks:/config in &konqueror;. + +
        + diff --git a/po/de/docs/kioslave5/bzip2/index.docbook b/po/de/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..b624561 --- /dev/null +++ b/po/de/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,64 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        +
        + +bzip ist ein Kompressionsprogramm. + +Das bzip2-Modul ist nicht direkt nutzbar, es wurde hauptsächlich zur Verwendung als Filter gedacht. Zum Beispiel kann das tar-Modul eine Datei durch das bzip2-Modul filtern, um den Inhalt einer .tar.bz2-Datei direkt in einem &konqueror;-Fenster darzustellen. + +Wenn Sie im &konqueror; auf eine Datei mit der Erweiterung .bz2 klicken, wird dieses Modul benutzt, um sie zu entpacken und als normale (unkomprimierte) Datei darzustellen. + +Wenn Sie ein Entwickler sind und den bzip2-Filter nutzen möchten, können Sie die Dokumentation zur Nutzung der Ein-/Ausgabemodule hier finden: http://techbase.kde.org + +Schauen Sie auch in das Handbuch: bzip2. + +bzip ist der Vorläufer von bzip2. Es wird heute nur noch selten genutzt, da es von bzip2 ersetzt wurde, das eine weit bessere Kompression bietet. + +
        diff --git a/po/de/docs/kioslave5/fish/index.docbook b/po/de/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..6f1501b --- /dev/null +++ b/po/de/docs/kioslave5/fish/index.docbook @@ -0,0 +1,163 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        + +2010-10-27 +&kde; 4.5 + +
        + +Ermöglicht den Zugriff auf die Dateien eines entfernten Rechners über das Secure SHell-Protokoll (SSH). Der entfernte Rechner muss dafür nur einen SSH-Dienst ausführen, der Rest dieses Protokolls verwendet nur Standard-Befehle. + +Verwenden Sie das Ein-/Ausgabemodul fish wie folgt: fish://rechnername oder fish://benutzername@rechnername. + +Sie müssen zwei rechtsgerichtete Schrägstriche verwenden. + +Sie können benutzername (und das folgende @) weglassen, wenn Sie auf beiden Rechnern denselben Benutzer verwenden. + +Sie können ein Passwort in dieser Form angeben: fish://benutzername:passwort@rechnername, aber normalerweise ist das nicht notwendig, weil Sie automatisch nach dem Passwort gefragt werden, wenn Sie keines angeben. + +Wenn der SSH-Dienst auf dem entfernten Rechner nicht auf dem Standard-Port läuft, können Sie ihn mit der üblichen Adress-Syntax angeben: fish://rechnername:portnummer. + +Fish sollte mit annähernd jedem POSIX-kompatiblen und &UNIX;-basierten Netzwerkrechner arbeiten können. Es verwendet die Shell-Befehle cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed, und wc. Fish startet /bin/sh als Shell und erwartet, dass dies eine Bourne-Shell (oder kompatibel dazu wie bash) ist. Falls sed und file sowie die Datei /etc/apache/magic verfügbar sind, werden diese verwendet, um den &MIME;-Typ zu erkennen. + +Ist auf dem Netzwerk-Rechner Perl verfügbar, wird stattdessen dieses verwendet. Dann werden nur die Befehle env und /bin/sh benötigt. Die Verwendung von Perl hat zudem dem Vorteil, dass es schneller ist. + +Fish kann sogar auf &Windows;-Rechnern laufen, wenn Werkzeuge wie Cygwin installiert sind. Alle oben angegebenen Hilfsprogramme müssen auf dem System über die Umgebungsvariable PATH erreichbar sein. Die ausführende Shell muss außerdem den Befehl echo FISH:;/bin/sh korrekt ausführen können. + +
        diff --git a/po/de/docs/kioslave5/gzip/index.docbook b/po/de/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..0cc7b15 --- /dev/null +++ b/po/de/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        +
        + +gzip ist ein Kompressionsprogramm + +Das gzip-Modul ist nicht direkt nutzbar, es ist hauptsächlich zur Verwendung als Filter gedacht. Zum Beispiel kann das tar-Modul eine Datei durch das gzip-Modul filtern, um den Inhalt einer .tar.gz-Datei direkt in einem &konqueror;-Fenster darzustellen. + +Wenn Sie im &konqueror; auf eine Datei mit der Erweiterung .gz klicken, wird dieses Modul benutzt, um sie zu entpacken und als normale (unkomprimierte) Datei darzustellen. + +Wenn Sie ein Entwickler sind und den gzip-Filter nutzen möchten, können Sie die Dokumentation zur Nutzung der Ein-/Ausgabemodule hier finden: http://techbase.kde.org + +Schauen Sie auch in das Handbuch: gzip. + +
        diff --git a/po/de/docs/kioslave5/info/index.docbook b/po/de/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..5d08ff2 --- /dev/null +++ b/po/de/docs/kioslave5/info/index.docbook @@ -0,0 +1,76 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        +
        + +Info ist eine Dokumentationsart. Die Dokumente haben ein Format namens texinfo und können in der Befehlszeile mit dem Programm info gelesen werden. + +Das info-Modul ermöglicht Ihnen, die auf Ihrem System installierten Info-Dokumente direkt im &konqueror; zu lesen. Sie können es ganz einfach nutzen: + +info:gcc + +Dies würde Ihnen die Hauptseite der Info-Dokumentation zum Compiler &gcc; anzeigen. + +Info ist ein GNU-Ersatz für man, wird aber außerhalb der GNU-Software seltener genutzt. + +Sie können die installierten Info-Dokumente ganz einfach im &khelpcenter; anschauen, oder Sie nutzen das Info-Modul direkt im &konqueror; oder der Mini-Eingabezeile. + +
        diff --git a/po/de/docs/kioslave5/man/index.docbook b/po/de/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..70143bd --- /dev/null +++ b/po/de/docs/kioslave5/man/index.docbook @@ -0,0 +1,161 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        +
        + +Das man-Modul erlaubt Ihnen, die Programm-Handbücher (man pages) zu lesen, die in Ihrem System installiert sind. Es ist einfach zu benutzen: + + + +man: + +Gibt einen Überblick über die Abschnitte in den Handbüchern. Es sind Verweise auf die Verzeichnisse. + + + +man:/fopen + +Zeigt die Handbuchseite für fopen an. + + + +man:/fopen(3) + +Zeigt die Handbuchseite für fopen in Abschnitt 3 an. + + + +man:/(3) + +Dies zeigt den Index von Abschnitt 3 an. + + + +man:/intro(3) + +Dies zeigt die Einführung von Abschnitt 3 an. + + + + +Wenn mehr als eine Handbuchseite mit dem gleichen Namen existiert, erhalten Sie eine Liste aus der Sie die gewünschte Handbuchseite auswählen können. + +Es geht auch kürzer: #fopen zeigt ebenfalls das Handbuch für fopen an. + +Wenn nicht alle Handbücher gefunden werden, passen Sie die Konfigurationsdatei /etc/manpath.config an oder bearbeiten Sie die Umgebungsvariablen MANPATH und MANSECT. + +Wie bei allen anderen Ein-/Ausgabemodulen von &kde; können Sie auch hier in jeder &kde;-Anwendung eine &URL; wie man:/socket eingeben. Versuchen Sie es ⪚ in &kwrite; und Sie werden die Handbuchseite im HTML-Format sehen können. + +Kontakt: kde-devel@kde.org + +
        diff --git a/po/de/docs/kioslave5/network/index.docbook b/po/de/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..434cd6c --- /dev/null +++ b/po/de/docs/kioslave5/network/index.docbook @@ -0,0 +1,101 @@ + + + +]> + +
        + +Netzwerk + + + + Friedrich W. H.Kossebau kossebau@kde.org + JohannesObermayr
        johannesobermayr@gmx.de
        Übersetzung
        +
        + + 2016-12-11 + Anwendungen 16.12 + +
        + + +Das Ein-/Ausgabemodul „Netzwerk“ ermöglicht es, mit dem lokalen Netzwerk verbundene Geräte und alle darauf ausgeführten Dienste zu durchsuchen. Außerdem können Programme für Dienste gestartet werden, deren Art bekannt ist. + +Um alle gefundenen Geräte anzuzeigen, geben Sie network:// ein. + +network://rechnername_des_geräts zeigt alle laufenden Dienste auf einem Gerät an. + +Die Auswahl eines Dienstes leitet zu einer übereinstimmenden Adresse weiter (soweit verfügbar). Beispielsweise sei hier ssh://Gerätename:Port/ für einen SSH-Dienst genannt. Jeder Dienst hat seinen entsprechenden MIME-Typ und der Benutzer kann somit neue Steuerungsprogramme für die Adressen festlegen. Dies wird in den &systemsettings; unter ErweitertDateizuordnungeninode vorgenommen. Die MIME-Typen der Dienste werden derzeit alle mit vnd.kde.service.* bezeichnet. + + + Das Ein-/Ausgabemodule „Netzwerk“ findet derzeit nur Geräte und Dienste, die sich selbst mittels dem DNS Service Discovery-Grundgerüst veröffentlichen (und zeigen auch nur diese an). + + +
        + diff --git a/po/de/docs/kioslave5/nfs/index.docbook b/po/de/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..905167a --- /dev/null +++ b/po/de/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,69 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        +
        +Das NFS-Protokoll von Sun bietet einen transparenten Zugriff auf gemeinsam genutzte Dateisysteme in Netzwerken. Das NFS-Protokoll soll dabei unabhängig von Rechnerarchitektur, Betriebssystem, Netzwerk-Architektur und Transport-Protokoll sein. Diese Unabhängigkeit wird durch die Verwendung von Remote Procedure Call (RPC) gewährleistet, das auf eXternal Data Representation (XDR) aufbaut. + +Das dazu gehörende MOUNT-Protokoll übernimmt dabei die Betriebssystem-spezifischen Funktionen, die es Rechnern ermöglichen, Ordnerbäume von Netzwerkrechnern in das lokale Dateisystem einzubinden. Der Mount-Prozess erlaubt es dem Server mit dem Export-Protokoll auch, nur einer bestimmten Gruppe von Netzwerkrechnern Zugriffsrechte zu gewähren. + +Der Lock-Manager bietet Unterstützung für das Sperren von Dateien in der NFS-Umgebung. Das Network Lock Manager-Protokoll (NLM) isoliert dabei das Sperren der Dateien in ein separates Protokoll. + +Quelle: http://www.networksorcery.com/enp/protocol/nfs.htm + +Schauen Sie auch in das Handbuch: nfs. +
        diff --git a/po/de/docs/kioslave5/recentdocuments/index.docbook b/po/de/docs/kioslave5/recentdocuments/index.docbook new file mode 100644 index 0000000..7441461 --- /dev/null +++ b/po/de/docs/kioslave5/recentdocuments/index.docbook @@ -0,0 +1,74 @@ + + + +]> + +
        +Zuletzt geöffnete Dokumente + + + + + &Burkhard.Lueck;&Burkhard.Lueck.mail; +BurkhardLück
        lueck@hube-lueck.de
        Übersetzung
        +
        + +2016-12-01 +Anwendungen 16.12 + +
        + +Ein Ein-/Ausgabemodul zur Anzeige zuletzt geöffneter Dokumente oder &URL;s im Dateidialog, in der Dateiverwaltung, in &krunner; und im Anwendungsmenü. + +Nutzen Sie das Ein-/Ausgabemodul folgendermaßen: + +Geben Sie recentdocuments:/ in der Adressleiste von &dolphin;, &konqueror; oder dem Dateidialog ein, um die zuletzt geöffneten Dokumente oder &URL;s anzuzeigen. + +Sie können einen Eintrag zur Seitenleiste Orte hinzufügen: Klicken Sie mit der rechten Maustaste auf die Seitenleiste, wählen Sie Eintrag hinzufügen und geben Sie recentdocuments:/ im Feld Ort ein und speichern Sie diese Einstellung. Dann sind die zuletzt geöffneten Dokumente in allen Dateidialogen verfügbar, wenn Sie diese Einstellung nicht auf diese Anwendung beschränkt haben. + +Im &systemsettings;-Modul Plasma-Suche aktivieren Sie das Suchmodul Zuletzt geöffnete Dokumente, um diese Ein-/Ausgabemodul in &krunner; zu benutzen. + +Fügen Sie im Anwendungsmenü ganz oben einen Eintrag für zuletzt geöffnete Dokumente hinzu, indem Sie Zuletzt geöffnete Dokumente anzeigen auf der Einstellungsseite aktivieren. + +
        diff --git a/po/de/docs/kioslave5/sftp/index.docbook b/po/de/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..3dcd9b8 --- /dev/null +++ b/po/de/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        +
        +SFTP ist ein geschütztes Dateiübertragungsprotokoll. Das Programm sftp ist ein interaktives Dateiübertragungs-Programm ähnlich zu ftp, stellt aber seine Dienste über einen verschlüsselten ssh-Übertragungsweg zur Verfügung. Es verwendet einige der Funktionen von ssh, wie ⪚ Authentifizierung über öffentliche Schlüssel und Datenkompression. + +Siehe auch die Handbuchseite sftp. + +
        diff --git a/po/de/docs/kioslave5/smb/index.docbook b/po/de/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..a5a3b6c --- /dev/null +++ b/po/de/docs/kioslave5/smb/index.docbook @@ -0,0 +1,106 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        +2016-12-11 +Anwendungen 16.12 +
        +Das smb-Modul ermöglicht es Ihnen, auf Freigaben in &Windows;- (oder Samba-) Netzwerken zuzugreifen. + +Um die Arbeitsgruppen anzuzeigen, geben Sie smb:/ ein. +smb://arbeitsgruppe listet alle Rechner in der Arbeitsgruppe auf. +Um die Freigaben eines Rechners sehen zu können, geben Sie entweder smb://rechnername oder smb://arbeitsgruppe/rechnername ein. +Um direkt auf die Freigaben eines Rechners zuzugreifen, geben Sie smb://rechnername/freigabe oder smb://arbeitsgruppe/rechnername/freigabe ein. + +Das Ein-/Ausgabemodul für smb benötigt die Bibliothek libsmbclient. + +Sie können Ihren Benutzernamen und das Passwort in den &systemsettings; in der Kategorie Netzwerk auf der Seite VerbindungenWindows-Freigaben festlegen. Dies ist besonders nützlich, falls Sie Mitglied einer &Windows; NT-Domäne sind. Dort können Sie auch den Namen der Arbeitsgruppe festlegen, dies ist jedoch in den meisten Fällen nicht notwendig. Das Ein-/Ausgabemodul fragt Sie nach Benutzernamen und Passwort, falls keine Voreinstellungen festgelegt sind. + +
        + diff --git a/po/de/docs/kioslave5/tar/index.docbook b/po/de/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..6a621f4 --- /dev/null +++ b/po/de/docs/kioslave5/tar/index.docbook @@ -0,0 +1,47 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        +
        +Ein Archivierungsprogramm, das entworfen wurde, um Dateien in einer tarfile genannten Archivdatei speichern und von dort auch wieder entpacken zu können. Ein tarfile kann sich auf ⪚ einem Bandlaufwerk befinden, es ist aber sehr gebräuchlich, solch ein tarfile auch als normale Datei auf der Festplatte zu speichern. + +Schauen Sie auch in das Handbuch: tar. + +
        diff --git a/po/de/docs/kioslave5/thumbnail/index.docbook b/po/de/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..4ffb306 --- /dev/null +++ b/po/de/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +MarcoWegner
        mail@marcowegner.de
        Übersetzer
        +
        +2016-12-11 +Anwendungen 16.12 +
        +Das Ein-/Ausgabemodul für Vorschaubilder wird von &kde; für die netzwerktransparente und dauerhafte Erstellung einer Dateivorschau verwendet. + +Das Ein-/Ausgabemodul verwendet Module zur Erzeugung der Dateivorschau. Um die Ansicht dieser Dateivorschau zu aktivieren, wählen Sie in &dolphin; oder im Ansichtsprofil Dateiverwaltung von &konqueror; den Menüpunkt Ansicht Vorschau. + +Das Ein-/Ausgabemodul für Vorschaubilder ist für den Benutzer nicht besonders nützlich, aber wenn Sie ein Entwickler sind, können Sie es in Ihren eigenen Anwendungen verwenden, um eine Dateivorschau zu erzeugen. + +Lesen Sie auch die Dokumentation in den Quelltexten. Diese finden Sie im Quelltextordner thumbnail + +
        diff --git a/po/de/docs/kioslave5/xz/index.docbook b/po/de/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..1ff7e83 --- /dev/null +++ b/po/de/docs/kioslave5/xz/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +BurkhardLück
        lueck@hube-lueck.de
        Übersetzung
        +
        +
        + +Xz ist ein Kompressionsprogramm + +Das xz-Modul ist nicht direkt nutzbar, es ist hauptsächlich zur Verwendung als Filter gedacht. Zum Beispiel kann das tar-Modul eine Datei durch das xz-Modul filtern, um den Inhalt einer .tar.xz-Datei direkt in einem &konqueror;-Fenster darzustellen. + +Wenn Sie im &konqueror; auf eine komrimierte Datei mit der Erweiterung .lzma oder tar.xz klicken, wird dieses Modul benutzt, um sie zu entpacken und als normale (unkomprimierte) Datei darzustellen. + +Wenn Sie ein Entwickler sind und den xz-Filter nutzen möchten, können Sie die Dokumentation zur Nutzung der Ein-/Ausgabemodule hier finden: http://techbase.kde.org + +Schauen Sie auch in das Handbuch: xz. + +
        diff --git a/po/de/kfileaudiopreview5.po b/po/de/kfileaudiopreview5.po new file mode 100644 index 0000000..355393c --- /dev/null +++ b/po/de/kfileaudiopreview5.po @@ -0,0 +1,41 @@ +# Thomas Diehl , 2003. +# Thomas Reitelbach , 2008. +# Frederik Schwarzer , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-04-30 12:49+0200\n" +"Last-Translator: Frederik Schwarzer \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Automatische Wiedergabe" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "Wiedergabe starten" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "Wiedergabe pausieren" + +#~ msgid "stop playback" +#~ msgstr "Wiedergabe anhalten" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "Wiederholen: startet die Wiedergabe am Ende neu" + +#~ msgid "Media Player" +#~ msgstr "Medienwiedergabe" diff --git a/po/de/kio5_activities.po b/po/de/kio5_activities.po new file mode 100644 index 0000000..2388dea --- /dev/null +++ b/po/de/kio5_activities.po @@ -0,0 +1,82 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Frederik Schwarzer , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-03-11 10:46+0100\n" +"Last-Translator: Frederik Schwarzer \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktivitäten" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Wird geladen ..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Die Aktivitätenverwaltung läuft nicht" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Mit der aktuellen Aktivität verknüpfen" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Von der aktuellen Aktivität lösen" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Verknüpfen mit:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Lösen von:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktivität" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Aktuelle Aktivität" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Frederik Schwarzer" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "schwarzer@kde.org" + +#~ msgid "Default" +#~ msgstr "Standard" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Zu Aktivität „%1“ wechseln" diff --git a/po/de/kio5_archive.po b/po/de/kio5_archive.po new file mode 100644 index 0000000..027f2d3 --- /dev/null +++ b/po/de/kio5_archive.po @@ -0,0 +1,36 @@ +# Thomas Reitelbach , 2005. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-08-04 13:41+0000\n" +"Last-Translator: Thomas Reitelbach \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Die Datei lässt sich nicht öffnen. Möglicherweise wird das Dateiformat nicht " +"unterstützt.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Die Archiv-Datei lässt sich nicht öffnen. Möglicherweise wird das " +"Dateiformat nicht unterstützt.\n" +"%1" diff --git a/po/de/kio5_bookmarks.po b/po/de/kio5_bookmarks.po new file mode 100644 index 0000000..8766893 --- /dev/null +++ b/po/de/kio5_bookmarks.po @@ -0,0 +1,77 @@ +# Thomas Reitelbach , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-12-02 00:14+0100\n" +"Last-Translator: Thomas Reitelbach \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Basisordner" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Orte" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Fehlerhafte Anfrage: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Es sind noch keine Lesezeichen vorhanden, die angezeigt werden können." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Die CSS-Datei für kio_bookmarks ist nicht aufzufinden. Die Ausgabe wird " +"seltsam aussehen.\n" +"Bitte überprüfen Sie die korrekte Installation." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Meine Lesezeichen" + +#~ msgid "My bookmarks" +#~ msgstr "Meine Lesezeichen" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Ursprünglicher Entwickler" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Thomas Reitelbach" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "tr@erdfunkstelle.de" diff --git a/po/de/kio5_fish.po b/po/de/kio5_fish.po new file mode 100644 index 0000000..b5f4c2d --- /dev/null +++ b/po/de/kio5_fish.po @@ -0,0 +1,50 @@ +# Thomas Diehl , 2003, 2004. +# Thomas Reitelbach , 2005, 2006, 2009. +# Burkhard Lück , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-09-02 17:09+0200\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Verbindung wird aufgebaut ..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokoll wird initialisiert ..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokale Anmeldung" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-Authentifizierung" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Verbindung getrennt" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Thomas Reitelbach" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "tr@erdfunkstelle.de" diff --git a/po/de/kio5_info.po b/po/de/kio5_info.po new file mode 100644 index 0000000..c01ea99 --- /dev/null +++ b/po/de/kio5_info.po @@ -0,0 +1,26 @@ +# Burkhard Lück , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-04-23 08:18+0200\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Die Datei %1 für die Ausführung dieses Dienstes wurde nicht gefunden. Bitte " +"überprüfen Sie Ihre Softwareinstallation." diff --git a/po/de/kio5_man.po b/po/de/kio5_man.po new file mode 100644 index 0000000..d751ed8 --- /dev/null +++ b/po/de/kio5_man.po @@ -0,0 +1,219 @@ +# Thomas Diehl , 2002, 2003. +# Thomas Reitelbach , 2005, 2006, 2007, 2008. +# Frederik Schwarzer , 2010, 2011. +# Burkhard Lück , 2012, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-30 15:45+0200\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Es wurde keine passende Handbuch-Seite für %1 gefunden." +"Bitte prüfen Sie, dass Sie den Namen des gesuchten Handbuchs " +"richtig geschrieben haben. Achten Sie bitte auch auf Groß- und " +"Kleinschreibung.Falls Sie keinen Tippfehler finden können, müssen " +"Sie möglicherweise einen besseren Suchpfad zu den Handbüchern einstellen. " +"Dies können Sie entweder über die Umgebungsvariable $MANPATH " +"oder mit einer Konfigurationsdatei im Ordner /etc " +"erledigen." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Die Handbuchseite %1 wurde gefunden, aber sie kann " +"nicht gelesen oder verarbeitet werden." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Die angegebene Handbuch-Seite enthält eine Referenz zu einer anderen Seite " +"%1, aber diese Seite %2 wurde " +"nicht gefunden." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Fehler des Handbuch-Betrachters" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Es gibt mehr als eine Handbuchseite dazu:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Mehrere Handbuchseiten" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Beachten Sie: Wenn Sie ein Handbuch in Ihrer Sprache lesen, könnte es unter " +"Umständen Fehler enthalten oder veraltet sein. Falls Sie unsicher sind, " +"sollten Sie sich das englische Original ansehen." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Header-Dateien" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Header-Dateien (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Benutzer-Befehle" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Benutzer-Befehle (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Systemaufrufe" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Unter-Routinen" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-Module" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Netzwerk-Funktionen" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Geräte" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Dateiformate" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Spiele" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Verschiedenes" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Systemverwaltung" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokale Dokumentation" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Neu" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Hauptindex für Handbücher" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Abschnitt %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index für Abschnitt %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Index für Handbücher" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Index wird erstellt" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Das Programm sgml2roff wurde auf Ihrem System nicht " +"gefunden. Bitte installieren Sie es gegebenenfalls und erweitern Sie den " +"Suchpfad erweitern durch Ändern der Umgebungsvariablen PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "Öffnen von %1 fehlgeschlagen" + +#~ msgid "Man output" +#~ msgstr "Handbuch-Ergebnis" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Thomas Diehl" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "thd@kde.org" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/de/kio5_mtp.po b/po/de/kio5_mtp.po new file mode 100644 index 0000000..bc179af --- /dev/null +++ b/po/de/kio5_mtp.po @@ -0,0 +1,36 @@ +# Burkhard Lück , 2014, 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-04-11 07:31+0100\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Es wurden keine Speichermedien gefunden. Überprüfen Sie, ob Ihr Gerät " +"entsperrt ist und ob MTP in den USB-Verbindungseinstellungen eingeschaltet " +"ist." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "" +"Kopieren/Verschieben von Dateien auf dem Gerät selbst ist nicht möglich" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Es wurde kein Speicher gefunden. Möglicherweise müssen Sie Ihr Gerät " +#~ "entsperren?" diff --git a/po/de/kio5_network.po b/po/de/kio5_network.po new file mode 100644 index 0000000..e144971 --- /dev/null +++ b/po/de/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Burkhard Lück , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-01-08 08:36+0100\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 18.12.3\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Netzwerk" diff --git a/po/de/kio5_nfs.po b/po/de/kio5_nfs.po new file mode 100644 index 0000000..389d92d --- /dev/null +++ b/po/de/kio5_nfs.po @@ -0,0 +1,66 @@ +# Thomas Diehl , 2002, 2004. +# Thomas Reitelbach , 2006. +# Burkhard Lück , 2012, 2014, 2017. +# Frederik Schwarzer , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2017-02-27 17:25+0100\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Nicht unterstützte NFS-Version" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC-Fehler %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Kein Speicherplatz mehr vorhanden" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Nur lesbares Dateisystem" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Dateiname zu lang" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Speicherplatzkontingent überschritten" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS-Fehler %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Das Einhängen von %1 ist fehlgeschlagen" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Unbekanntes Ziel" + +#~ msgid "An RPC error occurred." +#~ msgstr "Es ist ein RPC-Fehler aufgetreten." diff --git a/po/de/kio5_recentdocuments.po b/po/de/kio5_recentdocuments.po new file mode 100644 index 0000000..2dcd0f5 --- /dev/null +++ b/po/de/kio5_recentdocuments.po @@ -0,0 +1,20 @@ +# Frederik Schwarzer , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-05-14 13:43+0200\n" +"Last-Translator: Frederik Schwarzer \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Zuletzt geöffnete Dokumente" diff --git a/po/de/kio5_sftp.po b/po/de/kio5_sftp.po new file mode 100644 index 0000000..7e7f4fe --- /dev/null +++ b/po/de/kio5_sftp.po @@ -0,0 +1,482 @@ +# Thomas Diehl , 2002, 2003, 2004. +# Stephan Johach , 2005. +# Thomas Reitelbach , 2006, 2007, 2008, 2009. +# Burkhard Lück , 2009, 2012, 2013, 2014, 2018. +# Panagiotis Papadopoulos , 2010. +# Frederik Schwarzer , 2010, 2012, 2013. +# Johannes Obermayr , 2010. +# Rolf Eike Beer , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-11-15 06:04+0100\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Falsche oder ungültige Passphrase" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Die Rückrufe können nicht zugeordnet werden." + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" +"Die Ausführlichkeitsstufe der Protokollierung kann nicht festgelegt werden." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Die Protokollierung der Benutzerdaten kann nicht festgelegt werden." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Die Protokollierung der Rückrufe kann nicht festgelegt werden." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-Anmeldung" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Benutzen Sie das Eingabefeld für den Benutzernamen, um die Anfrage zu " +"beantworten." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Bitte geben Sie Ihr Passwort ein." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Seite:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Es kann keine neue SSH-Sitzung gestartet werden." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Die Zeitüberschreitung kann nicht festgelegt werden." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Der Nagle-Algorithmus kann nicht abgeschaltet werden." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Die Komprimierung kann nicht festgelegt werden." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Der Rechner kann nicht festgelegt werden." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Der Port kann nicht festgelegt werden." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Der Benutzername kann nicht festgelegt werden." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Die Einrichtungsdatei kann nicht analysiert werden." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "SFTP-Verbindung zu Rechner %1:%2 wird aufgebaut" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" +"Der Typname des öffentlichen Schlüssels des Servers kann nicht geholt werden" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Der Hash-Wert vom Server-Schlüssel kann nicht generiert werden" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" +"Der Fingerprint für den öffentlichen Schlüssel des Servers kann nicht " +"generiert werden" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Der Host-Schlüssel %1 für diesen Rechner wurde nicht gefunden, es existiert " +"aber ein anderer Schlüsseltyp.\n" +"Möglicherweise versucht ein Angreifer, den Server-Schlüssel zu tauschen um " +"Ihrem Client vorzutäuschen, dass der Schlüssel nicht existiert.\n" +"Sie sollten den Systemverwalter darüber informieren.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Der Host-Schlüssel für den Server %1 hat sich geändert.\n" +"Dies kann darauf hindeuten, dass ein DNS-SPOOFING durchgeführt wird oder " +"dass die IP-Adresse und der Host-Schlüssel sich zur gleichen Zeit geändert " +"haben.\n" +"Der Fingerabdruck für den vom entfernten Rechner gesendeten Schlüssel " +"%2lautet:\n" +" SHA256:%3\n" +"Bitte kontaktieren Sie den Systemverwalter.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Warnung: Die Identität des Rechners lässt sich nicht feststellen." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Die Authentizität des Rechners %1 kann nicht hergestellt werden.\n" +"Der Fingerabdruck %2 lautet: %3\n" +"Sind Sie sicher, dass Sie den Verbindungsversuch fortsetzen möchten?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Authentifizierung fehlgeschlagen" + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Authentifizierung fehlgeschlagen. Der Server hat keine Methoden zur " +"Authentifizierung vorgeschlagen" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Bitte geben Sie Ihren Benutzernamen und Ihr Passwort an." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Benutzername oder Passwort ungültig" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Das SFTP-Subsystem kann nicht angefordert werden. Bitte stellen Sie sicher, " +"das SFTP auf dem Zielserver aktiviert ist." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Die SFTP-Sitzung lässt sich nicht starten." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Verbindung mit %1 erfolgreich aufgebaut" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Der Host-Schlüssel für diesen Rechner kann nicht gefunden werden, es " +"existiert aber ein anderer Schlüsseltyp.\n" +"Möglicherweise versucht ein Angreifer, den Server-Schlüssel zu tauschen um " +"Ihrem Client vorzutäuschen, dass der Schlüssel nicht existiert.\n" +"Sie sollten den Systemverwalter darüber informieren.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Der Host-Schlüssel für den Server %1 hat sich geändert.\n" +"Dies kann darauf hindeuten, dass ein DNS-SPOOFING durchgeführt wird oder " +"dass die IP-Adresse und der Host-Schlüssel sich zur gleichen Zeit geändert " +"haben.\n" +"Der Fingerabdruck für den vom entfernten Rechner gesendeten Schlüssel " +"lautet:\n" +" %2\n" +"Bitte kontaktieren Sie den Systemverwalter.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Die Authentizität des Rechners %1 kann nicht hergestellt werden.\n" +"Der Fingerabdruck ist: %2\n" +"Sind Sie sicher, dass Sie den Verbindungsversuch fortsetzen möchten?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ungültiger Sftp-Kontext" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Berechtigungen lassen sich nicht ändern für\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Die Verknüpfung kann nicht gelesen werden: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Es wurde kein Rechnername angegeben." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "" +#~ "Es ist ein interner Fehler aufgetreten. Bitte starten Sie die Anfrage neu." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "" +#~ "Bitte geben Sie Ihren Benutzernamen und Ihr Passwort für den Schlüssel an." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Warnung: Die Identität des Rechners hat sich geändert." + +#~ msgid "Connection failed." +#~ msgstr "Verbindung fehlgeschlagen" + +#~ msgid "Connection closed by remote host." +#~ msgstr "Verbindung von Gegenstelle abgebrochen" + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "unerwarteter SFTP-Fehler: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP-Version %1" + +#~ msgid "Protocol error." +#~ msgstr "Protokollfehler" + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "" +#~ "Es ist ein interner Fehler aufgetreten. Bitte versuchen Sie es erneut." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Unbekannter Fehler beim Kopieren der Datei nach „%1“. Bitte versuchen Sie " +#~ "es erneut." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Der Fremdrechner erlaubt kein Umbenennen von Dateien." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Der Fremdrechner erlaubt kein Erstellen symbolischer Verknüpfungen." + +#~ msgid "Connection closed" +#~ msgstr "Verbindung beendet" + +#~ msgid "End of file." +#~ msgstr "Ende der Datei." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP-Befehl kann nicht ausgeführt werden (Grund unbekannt)." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Der SFTP-Server erhielt eine ungültige Nachricht." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "" +#~ "Sie haben versucht, eine Anweisung auszuführen, die vom SFTP-Server nicht " +#~ "unterstützt wird." + +#~ msgid "Error code: %1" +#~ msgstr "Fehlerbezeichnung: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "" +#~ "Es kann nicht gleichzeitig ein Subsystem und ein Befehl angegeben werden." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Für die Ausführung von SSH wurden keine Optionen angegeben." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Fehler beim Ausführen von SSH." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Fehler bei der Kommunikation mit SSH" + +#~ msgid "Please supply a password." +#~ msgstr "Bitte geben Sie ein Passwort an." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Bitte geben Sie das Passwort zu Ihrem privaten SSH-Schlüssel an." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Authentifizierung für %1 fehlgeschlagen" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Die Identität des Rechners „%1“ kann nicht bestätigt werden, weil die " +#~ "Kennung des Rechners nicht in der Datei vertrauenswürdiger Schlüssel " +#~ "vorkommt." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Fügen Sie die Kennung von Hand zu der Datei vertrauenswürdiger Schlüssel " +#~ "hinzu oder kontaktieren Sie den Systemverwalter." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Fügen Sie den Identitätsschlüssel von Hand zu %1 hinzu oder kontaktieren " +#~ "Sie den Systemverwalter." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Die Identität des Rechners %1 ließ sich nicht bestätigen. Der " +#~ "Identitätsschlüssel des Rechners lautet:\n" +#~ "%2\n" +#~ "Sie sollten sich diesen Identitätsschlüssel vom Systemverwalter des " +#~ "Rechners, mit dem Sie die Verbindung herstellen möchten, bestätigen " +#~ "lassen.\n" +#~ "\n" +#~ "Möchten Sie den Identitätsschlüssel akzeptieren und die Verbindung " +#~ "aufbauen? " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "WARNUNG: Der Identitätsschlüssel des Rechners „%1“ hat sich geändert!\n" +#~ "\n" +#~ "Eventuell versucht jemand, Ihre Verbindung abzuhören. Es könnte aber auch " +#~ "sein, dass der Administrator des anderen Rechners den Schlüssel " +#~ "absichtlich geändert hat. Sie sollten sich auf jeden Fall diesen neuen " +#~ "Identitätsschlüssel vom Systemverwalter des anderen Rechners bestätigen " +#~ "lassen. Der neue Schlüssel lautet:\n" +#~ "%2\n" +#~ "Fügen Sie diesen neuen Schlüssel zu „%3“ hinzu, um diese Warnung " +#~ "auszuschalten." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "WARNUNG: Der Identitätsschlüssel des Rechners „%1“ hat sich geändert!\n" +#~ "\n" +#~ "Eventuell versucht jemand, Ihre Verbindung abzuhören. Es könnte aber auch " +#~ "sein, dass der Administrator des anderen Rechners den Schlüssel " +#~ "absichtlich geändert hat. Sie sollten sich auf jeden Fall diesen neuen " +#~ "Identitätsschlüssel vom Systemverwalter des Rechners, mit dem Sie die " +#~ "Verbindung herstellen möchten, bestätigen lassen. Der neue Schlüssel " +#~ "lautet:\n" +#~ "%2\n" +#~ "\n" +#~ "Möchten Sie den neuen Schlüssel akzeptieren und trotzdem eine Verbindung " +#~ "herstellen?" + +#~ msgid "Host key was rejected." +#~ msgstr "Identitätsschlüssel wurde abgelehnt." + +#~ msgid "Please enter a username and password" +#~ msgstr "Bitte geben Sie Benutzername und Passwort ein." + +#~ msgid "File does not exist." +#~ msgstr "Die Datei existiert nicht." + +#~ msgid "Access is denied." +#~ msgstr "Zugriff verweigert." diff --git a/po/de/kio5_smb.po b/po/de/kio5_smb.po new file mode 100644 index 0000000..ebdad68 --- /dev/null +++ b/po/de/kio5_smb.po @@ -0,0 +1,193 @@ +# Thomas Diehl , 2002, 2003, 2004. +# Stephan Johach , 2005. +# Thomas Reitelbach , 2005, 2006. +# Burkhard Lück , 2017, 2020. +# Frederik Schwarzer , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-09-09 10:49+0200\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Bitte geben Sie Authentifizierungsdaten ein für %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Bitte geben Sie Authentifizierungsdaten ein für:\n" +"Server = %1\n" +"Ressource (Freigabe) = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Unbekanntes Element, weder Ordner noch Datei." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Es ist keine Arbeitsgruppe im lokalen Netzwerk auffindbar. Dies könnte durch " +"eine aktivierte Firewall verursacht werden." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Kein Medium im Gerät für %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Keine Verbindung zum Rechner für %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Fehler bei Verbindung zum Server, der für %1 zuständig ist" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Ressource (Freigabe) auf dem angegebenen Server nicht auffindbar" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Unbrauchbarer Datei-Deskriptor" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Der angegebene Name kann keinem Server eindeutig zugeordnet werden. Bitte " +"vergewissern Sie sich, dass es in Ihrer Netzwerk-Einrichtung keine Konflikte " +"bei der Zuordnung von Namen zwischen Unix- und Windows-Systemen gibt." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Rechne nicht erreichbar" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient meldet einen Fehler ohne klare Zuordnung. Es könnte ein " +"Netzwerkproblem vorliegen oder auch eines mit dem Client-Programm selbst.\n" +"Wenn Sie uns bei der Fehleranalyse helfen möchten, erstellen Sie bitte einen " +"tcpdump der Netzwerk-Schnittstelle, während Sie eine Verbindung aufzunehmen " +"versuchen. (Beachten Sie jedoch, dass die Daten private Informationen " +"enthalten könnten. Sie sollten sie also nicht öffentlich machen, sondern nur " +"auf Anfrage an die Entwickler schicken.)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Unbekannte Fehlersituation: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Beim Zugriff auf %1 ist ein Fehler aufgetreten%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Kontext ließ sich nicht mit libsmbclient erstellen." + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Vergewissern Sie sich, dass das Paket „Samba“ korrekt auf Ihrem System " +"installiert ist." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Das Einhängen der Benutzerressource „%1“ auf Rechner „%2“ durch Benutzer " +"„%3“ istfehlgeschlagen.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Lösen der Verbindung zu Einhängepunkt „%1“ fehlgeschlagen.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Unbekanntes Gerät @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "Initialisierung des Kontext von libsmbclient fehlgeschlagen" + +#~ msgid "File does not exist: %1" +#~ msgstr "Die Datei existiert nicht: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "Initialisierung von libsmbclient fehlgeschlagen" diff --git a/po/de/kio5_thumbnail.po b/po/de/kio5_thumbnail.po new file mode 100644 index 0000000..6b4fb87 --- /dev/null +++ b/po/de/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# Thomas Reitelbach , 2005, 2006, 2007. +# Burkhard Lück , 2009. +# Frederik Schwarzer , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-04-24 13:01+0200\n" +"Last-Translator: Frederik Schwarzer \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Das Bild automatisch drehen" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Kein MIME-Typ angegeben" + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Keine oder ungültige Größe angegeben" + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Für den Ordner kann kein Miniaturbild erzeugt werden." + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Kein Modul angegeben" + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 lässt sich nicht laden" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Für %1 kann kein Miniaturbild erzeugt werden." + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Erzeugen eines Miniaturbildes fehlgeschlagen" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Das Bild lässt sich nicht schreiben." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Keine Anbindung an gemeinsames Speichersegment %1 möglich." + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Das Bild ist zu groß für das gemeinsame Speichersegment." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Thomas Reitelbach" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "tr@erdfunkstelle.de" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/el/kfileaudiopreview5.po b/po/el/kfileaudiopreview5.po new file mode 100644 index 0000000..e338b3e --- /dev/null +++ b/po/el/kfileaudiopreview5.po @@ -0,0 +1,43 @@ +# translation of kfileaudiopreview4.po to Greek +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +# +# Stergios Dramis , 2003-2004. +# Toussis Manolis , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-04-23 23:11+0300\n" +"Last-Translator: Toussis Manolis \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Αυτόματη αναπαραγωγή" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "έναρξη αναπαραγωγής" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "παύση αναπαραγωγής" + +#~ msgid "stop playback" +#~ msgstr "σταμάτημα αναπαραγωγής" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "επανάληψη: επανέναρξη αναπαραγωγής στο τέλος" + +#~ msgid "Media Player" +#~ msgstr "Αναπαραγωγέας μέσων" diff --git a/po/el/kio5_activities.po b/po/el/kio5_activities.po new file mode 100644 index 0000000..4fe3b9f --- /dev/null +++ b/po/el/kio5_activities.po @@ -0,0 +1,234 @@ +# kactivitymanagerd_fileitem_linking_plugin.po translation el +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stelios , 2012. +# Antonis Geralis , 2013, 2014. +# Dimitris Kardarakos , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kactivitymanagerd_fileitem_linking_plugin\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-11-05 11:15+0200\n" +"Last-Translator: Dimitris Kardarakos \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Δραστηριότητες" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Φόρτωση..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Ο διαχειριστής δραστηριοτήτων δεν εκτελείται" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Σύνδεση στην τρέχουσα δραστηριότητα" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Αποσύνδεση από την τρέχουσα δραστηριότητα" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Σύνδεση σε:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Αποσύνδεση από:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Δραστηριότητα" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Τρέχουσα δραστηριότητα" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Stelios" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sstavra@gmail.com" + +#~ msgid "Default" +#~ msgstr "Προκαθορισμένη" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Εναλλαγή στη δραστηριότητα \"%1\"" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Δραστηριότητα" + +#~ msgid "Delete activity" +#~ msgstr "Διαγραφή δραστηριότητας" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Επιθυμείτε σίγουρα τη διαγραφή του '%1';" + +#~ msgid "Create a new activity" +#~ msgstr "Δημιουργία νέας δραστηριότητας" + +#~ msgid "Activity settings" +#~ msgstr "Ρυθμίσεις δραστηριοτήτων" + +#~ msgid "General" +#~ msgstr "Γενικά" + +#~ msgid "Create" +#~ msgstr "Δημιουργία" + +#~ msgid "Apply" +#~ msgstr "Εφαρμογή" + +#~ msgid "Cancel" +#~ msgstr "Ακύρωση" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Συντόμευση για μετάβαση σε αυτή τη δραστηριότητα" + +#~ msgid "Activity information" +#~ msgstr "Πληροφορίες δραστηριοτήτων" + +#~ msgid "Name" +#~ msgstr "Όνομα" + +#~ msgid "Description" +#~ msgstr "Περιγραφή" + +#~ msgid "Wallpaper" +#~ msgstr "Ταπετσαρία" + +#~ msgid "Change..." +#~ msgstr "Αλλαγή..." + +#~ msgid "Icon" +#~ msgstr "Εικονίδιο" + +#~ msgid "Switching" +#~ msgstr "Εναλλαγή" + +#~ msgid "Privacy" +#~ msgstr "Ιδιωτικό απόρρητο" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "για πάντα" + +#~ msgid "Forget the last hour" +#~ msgstr "Να ξεχαστεί η τελευταία ώρα" + +#~ msgid "Forget the last two hours" +#~ msgstr "Να ξεχαστούν οι δύο τελευταίες ώρες" + +#~ msgid "Forget a day" +#~ msgstr "Να ξεχαστεί η ημέρα" + +#~ msgid "Forget everything" +#~ msgstr "Να ξεχαστούν όλα" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " μήνας" +#~ msgstr[1] "μήνες" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "για " + +#~ msgid "Create activity..." +#~ msgstr "Δημιουργία δραστηριότητας..." + +#~ msgid "Activity switching" +#~ msgstr "Εναλλαγή δραστηριοτήτων" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Διάσχιση δραστηριοτήτων " + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Διάσχιση δραστηριοτήτων (αντίστροφα)" + +#~ msgid "Remember opened documents:" +#~ msgstr "Απομνημόνευση ανοιχτών εγγράφων:" + +#~ msgid "For a&ll applications" +#~ msgstr "Για όλες τις ε&φαρμογές" + +#~ msgid "&Do not remember" +#~ msgstr "Να μη γίνει απο&μνημόνευση" + +#~ msgid "O&nly for specific applications" +#~ msgstr "Μόνο για ο&ρισμένες εφαρμογές" + +#~ msgid "Keep history" +#~ msgstr "Διατήρηση ιστορικού" + +#~ msgid "Clear recent history" +#~ msgstr "Καθαρισμός πρόσφατου ιστορικού" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "" +#~ "Να μπουν σε μαύρη λίστα όλες οι εφαρμογές που δεν είναι σε αυτήν τη λίστα" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Απομνημόνευση της τρέχουσας εικονικής επιφάνειας εργασίας για κάθε " +#~ "δραστηριότητα (απαιτείται επανεκκίνηση)" + +#~ msgid "Shortcuts" +#~ msgstr "Συντομεύσεις" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity name" +#~ msgstr "Δραστηριότητες..." + +#~ msgid "Available Features" +#~ msgstr "Διαθέσιμες λειτουργίες" + +#~ msgid "Plugins" +#~ msgstr "Πρόσθετα" + +#~ msgid "Enable activities management" +#~ msgstr "Ενεργοποίηση διαχείρισης δραστηριοτήτων" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Ο διαχειριστής δραστηριοτήτων δεν εκτελείται κανονικά." + +#~ msgid "Activities..." +#~ msgstr "Δραστηριότητες..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" diff --git a/po/el/kio5_archive.po b/po/el/kio5_archive.po new file mode 100644 index 0000000..37e4e51 --- /dev/null +++ b/po/el/kio5_archive.po @@ -0,0 +1,38 @@ +# translation of kio_tar.po to Greek +# Spiros Georgaras , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-08-19 15:21+0300\n" +"Last-Translator: Spiros Georgaras \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Αδύνατο το άνοιγμα του αρχείου, πιθανότατα λόγω μη υποστηριζόμενου τύπου " +"αρχείου.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Η αρχειοθήκη δεν ήταν δυνατόν να ανοιχτεί, ίσως επειδή ο τύπος αρχείου δεν " +"υποστηρίζεται.\n" +"%1" diff --git a/po/el/kio5_bookmarks.po b/po/el/kio5_bookmarks.po new file mode 100644 index 0000000..fd65422 --- /dev/null +++ b/po/el/kio5_bookmarks.po @@ -0,0 +1,163 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Toussis Manolis , 2008. +# Stelios , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-01 08:05+0200\n" +"Last-Translator: Stelios \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Ριζικός κατάλογος" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Τοποθεσίες" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Αδυναμία εύρεσης της διαμόρφωσης των σελιδοδεικτών" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Αδυναμία εύρεσης του επεξεργαστή των σελιδοδεικτών" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Εσφαλμένη αίτηση: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Δεν υπάρχουν σελιδοδείκτες για εμφάνιση." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Το αρχείο kio_bookmarks CSS δε βρέθηκε. Η έξοδος θα είναι άσχημη αισθητικά.\n" +"Ελέγξτε την εγκατάστασή σας." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Οι σελιδοδείκτες μου" + +#~ msgid "My bookmarks" +#~ msgstr "Οι σελιδοδείκτες μου" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Αρχικός προγραμματιστής" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Τούσης Μανώλης" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "manolis@koppermind.homelinux.org" + +#~ msgid "Configuration" +#~ msgstr "Ρυθμίσεις" + +#~ msgid "Edit bookmarks" +#~ msgstr "Επεξεργασία σελιδοδεικτών" + +#~ msgid "Help" +#~ msgstr "Βοήθεια" + +#~ msgid "Bookmarks" +#~ msgstr "Σελιδοδείκτες" + +#~ msgid "" +#~ "If this option is unchecked, bookmarks at the root of the hierarchy (not " +#~ "in a folder) are not displayed.\n" +#~ "If checked, they are gathered in a \"root\" folder." +#~ msgstr "" +#~ "Αν αυτή η επιλογή είναι ανενεργή, οι σελιδοδείκτες του ριζικού καταλόγου " +#~ "της ιεραρχίας (εκτός φακέλου)0 δεν εμφανίζονται.\n" +#~ "Αν ενεργοποιηθεί, θα συγκεντρώνονται σε έναν φάκελο \"ριζικός κατάλογος\"." + +#~ msgid "&Show bookmarks without folder" +#~ msgstr "&Εμφάνιση σελιδοδεικτών χωρίς φάκελο" + +#~ msgid "" +#~ "Sub-folders are show within their parent by default. If you activate this " +#~ "option, sub-folders are displayed on their own.\n" +#~ "It looks less nice but it may help if you have a very big folder you want " +#~ "to spread in two columns." +#~ msgstr "" +#~ "Οι υποφάκελοι προκαθορισμένα εμφανίζονται μέσα στον γονικό τους φάκελο. " +#~ "Αν ενεργοποιήσετε αυτήν την επιλογή, οι υποφάκελοι εμφανίζονται " +#~ "αυτόνομοι.\n" +#~ "Φαίνεται λιγότερο όμορφο, αλλά μπορεί να βοηθήσει αν έχετε έναν μεγάλο " +#~ "φάκελο και επιθυμείτε την ανάπτυξή του σε δύο στήλες." + +#~ msgid "&Flatten bookmarks tree" +#~ msgstr "&Ισοπέδωση δέντρου σελιδοδεικτών" + +#~ msgid "" +#~ "Show a box with KDE places (Home, Network, ...). Useful if you use " +#~ "konqueror as a file manager." +#~ msgstr "" +#~ "Εμφάνιση ενός πλαισίου με τις τοποθεσίες του KDE (Προσωπικός φάκελος, " +#~ "Δίκτυο, ...). Χρήσιμο αν χρησιμοποιείτε τον konqueror και ως διαχειριστή " +#~ "αρχείου." + +#~ msgid "Show system &places" +#~ msgstr "Εμφάνιση &τοποθεσιών συστήματος" + +#~ msgid "General settings" +#~ msgstr "Γενικές ρυθμίσεις" + +#~ msgid "" +#~ "Folders are automatically distributed in several columns. The optimal " +#~ "number of columns depends on the width of the konqueror window and the " +#~ "number of bookmarks you have." +#~ msgstr "" +#~ "Οι φάκελοι αυτόματα κατανέμονται σε πολλές στήλες. Ο βέλτιστος αριθμός " +#~ "των στηλών εξαρτάται από το πλάτος παραθύρου του konqueror και τον αριθμό " +#~ "των σελιδοδεικτών που έχετε." + +#~ msgid "Number of columns to show" +#~ msgstr "Αριθμός στηλών για εμφάνιση" + +#~ msgid "Disable it on slow system to disable background images." +#~ msgstr "" +#~ "Απενεργοποιήστε το σε αργά συστήματα για την απενεργοποίηση εικόνων " +#~ "φόντου." + +#~ msgid "Show folder &backgrounds" +#~ msgstr "Εμφάνιση φόντου &φακέλων" + +#~ msgid "" +#~ "

        My Bookmarks

        This module lets you configure the bookmarks home " +#~ "page.

        The bookmarks home page is accessible at bookmarks:/.

        " +#~ msgstr "" +#~ "

        Οι σελιδοδείκτες μου

        Αυτό το άρθρωμα σας επιτρέπει τη ρύθμιση " +#~ "της αρχικής σελίδας των σελιδοδεικτών.

        Η αρχική σελίδα των " +#~ "σελιδοδεικτών είναι διαθέσιμη στο bookmarks:/." +#~ "

        " diff --git a/po/el/kio5_fish.po b/po/el/kio5_fish.po new file mode 100644 index 0000000..2d05c12 --- /dev/null +++ b/po/el/kio5_fish.po @@ -0,0 +1,56 @@ +# translation of kio_fish.po to +# translation of kio_fish.po to Greek +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# Stergios Dramis , 2003. +# Spiros Georgaras , 2005. +# Toussis Manolis , 2009. +# Dimitrios Glentadakis , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-09-08 09:19+0200\n" +"Last-Translator: Dimitrios Glentadakis \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Σύνδεση..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Αρχικοποίηση πρωτοκόλλου..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Τοπική σύνδεση" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Ταυτοποίηση SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Αποσυνδεδεμένο." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Τούσης Μανώλης" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "manolis@koppermind.homelinux.org" diff --git a/po/el/kio5_info.po b/po/el/kio5_info.po new file mode 100644 index 0000000..a877c7a --- /dev/null +++ b/po/el/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Toussis Manolis , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-04-24 09:53+0300\n" +"Last-Translator: Toussis Manolis \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Αδυναμία εντοπισμού του αρχείου %1 το οποίο είναι απαραίτητο για την " +"εκτέλεση αυτής της υπηρεσίας. Παρακαλώ ελέγξτε την εγκατάστασή σας." diff --git a/po/el/kio5_man.po b/po/el/kio5_man.po new file mode 100644 index 0000000..71879b4 --- /dev/null +++ b/po/el/kio5_man.po @@ -0,0 +1,223 @@ +# translation of kio_man.po to greek +# Copyright (C) 2000,2003, 2005, 2007, 2008 Free Software Foundation, Inc. +# +# Dimitris Kamenopoulos , 2000-2002. +# Stergios Dramis , 2003. +# Spiros Georgaras , 2005, 2007. +# Toussis Manolis , 2007, 2008. +# Spiros Georgaras , 2008. +# Dimitrios Glentadakis , 2012. +# Stelios , 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-14 13:57+0300\n" +"Last-Translator: Stelios \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Δε βρέθηκε σελίδα man που να ταιριάζει με το %1.Ελέγξτε ότι δεν έχετε γράψει λάθος το όνομα της σελίδας και σημειώστε " +"ότι οι σελίδες εγχειριδίου κάνουν διάκριση μεταξύ πεζών και κεφαλαίων " +"χαρακτήρων.Αν το όνομα είναι σωστό, τότε ίσως θα πρέπει να " +"επεκτείνετε τη διαδρομή αναζήτησης για τις σελίδες εγχειριδίου μέσω της " +"μεταβλητής περιβάλλοντος MANPATH ή ένα αρχείο διαμόρφωσης " +"στον κατάλογο /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Η σελίδα εγχειριδίου %1 βρέθηκε, αλλά δεν ήταν δυνατό " +"να αναγνωσθεί ή να αναλυθεί." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Η δοσμένη σελίδα εγχειριδίου αναφέρεται σε άλλη σελίδα %1,αλλά η αναφερόμενη σελίδα %2 δε βρέθηκε." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Σφάλμα του προβολέα σελίδων εγχειριδίου" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Ταιριάζουν πάνω από μία σελίδες εγχειριδίου:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Πολλές σελίδες εγχειριδίου" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Σημείωση: αν διαβάζετε μία σελίδα man στη γλώσσα σας, πρέπει να έχετε υπόψη " +"σας ότι ίσως περιέχει σφάλματα ή είναι ξεπερασμένη. Ίσως θα πρέπει να ρίξετε " +"μια ματιά και στην Αγγλική έκδοσή της." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Header αρχεία" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Header αρχεία (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Εντολές χρήστη" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Εντολές χρήστη (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Κλήσεις συστήματος" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Υπορουτίνες" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Αρθρώματα perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Λειτουργίες δικτύου" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Συσκευές" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Μορφές αρχείων" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Παιχνίδια" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Διάφορα" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Διαχείριση συστήματος" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Πυρήνας" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Τοπική τεκμηρίωση" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Νέα" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Ευρετήριο κύριας σελίδας εγχειριδίου" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Τμήμα %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Ευρετήριο για την ενότητα %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Ευρετήριο σελίδας εγχειριδίου" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Δημιουργία ευρετηρίου" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Αδύνατο να βρεθεί το πρόγραμμα sgml2roff στο σύστημά σας. " +"Eγκαταστήστε το αν είναι απαραίτητο, και βεβαιωθείτε ότι μπορεί να βρεθεί με " +"χρήση της μεταβλητής περιβάλλοντος PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "Το άνοιγμα του %1 απέτυχε." + +#~ msgid "Man output" +#~ msgstr "Έξοδος man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Τούσης Μανώλης" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "manolis@koppermind.homelinux.org" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/el/kio5_mtp.po b/po/el/kio5_mtp.po new file mode 100644 index 0000000..129c1cd --- /dev/null +++ b/po/el/kio5_mtp.po @@ -0,0 +1,37 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Dimitris Kardarakos , 2015. +# Stelios , 2017, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-08-21 12:16+0300\n" +"Last-Translator: Stelios \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 18.12.3\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Δεν βρέθηκαν αποθηκευτικά μέσα. Βεβαιωθείτε ότι η συσκευή σας είναι " +"ξεκλείδωτη και ότι έχει ενεργό MTP στις ρυθμίσεις της USB σύνδεσης." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Αδυναμία αντιγραφής/μετακίνησης αρχείων στην ίδια τη συσκευή" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Δε βρέθηκαν Αποθηκεύσεις. Μήπως χρειάζεται να ξεκλειδώσετε τη συσκευή σας;" diff --git a/po/el/kio5_network.po b/po/el/kio5_network.po new file mode 100644 index 0000000..fb552db --- /dev/null +++ b/po/el/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Stelios , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-11 14:07+0300\n" +"Last-Translator: Stelios \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.04.2\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Δίκτυο" diff --git a/po/el/kio5_nfs.po b/po/el/kio5_nfs.po new file mode 100644 index 0000000..b39e710 --- /dev/null +++ b/po/el/kio5_nfs.po @@ -0,0 +1,69 @@ +# translation of kio_nfs.po to Greek +# Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc. +# +# Dimitris Kamenopoulos , 2001. +# Stergios Dramis , 2003-2004. +# Toussis Manolis , 2005. +# Dimitris Kardarakos , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-21 21:20+0300\n" +"Last-Translator: Dimitris Kardarakos \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Μη υποστηριζόμενη έκδοση NFS" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Σφάλμα RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Δεν υπάρχει ελεύθερος χώρος στη συσκευή" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Σύστημα αρχείων μόνο για ανάγνωση" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Πολύ μεγάλο όνομα αρχείου" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Το μερίδιο δίσκου έχει ξεπεραστεί" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Σφάλμα NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Αποτυχία προσάρτησης του %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Άγνωστος προορισμός" + +#~ msgid "An RPC error occurred." +#~ msgstr "Προέκυψε ένα σφάλμα RPC." diff --git a/po/el/kio5_recentdocuments.po b/po/el/kio5_recentdocuments.po new file mode 100644 index 0000000..1927da5 --- /dev/null +++ b/po/el/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# kio_recentdocuments.po translation [el] +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stelios , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-16 17:52+0200\n" +"Last-Translator: Stelios \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Πρόσφατα έγγραφα" diff --git a/po/el/kio5_sftp.po b/po/el/kio5_sftp.po new file mode 100644 index 0000000..eb6a8eb --- /dev/null +++ b/po/el/kio5_sftp.po @@ -0,0 +1,471 @@ +# translation of kio_sftp.po to greek +# Copyright (C) 2003, 2005, 2007 Free Software Foundation, Inc. +# +# Stergios Dramis , 2002-2003. +# Spiros Georgaras , 2005, 2007. +# Toussis Manolis , 2007, 2009. +# Stelios , 2012, 2013, 2019. +# Dimitrios Glentadakis , 2012. +# Antonis Geralis , 2014. +# Dimitris Kardarakos , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2019-08-21 12:28+0300\n" +"Last-Translator: Stelios \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 18.12.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Εσφαλμένο όνομα χρήστη ή συνθηματικό" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Αδυναμία καταχώρησης επανακλήσεων" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Αδυναμία ρύθμισης λεπτομερειών καταγραφής." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Αδυναμία ρύθμισης καταγραφής πληροφοριών χρήστη." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Αδυναμία ρύθμισης καταγραφής επανακλήσεων." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP είσοδος" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Χρησιμοποιήστε το πεδίο ονόματος χρήστη για να απαντήσετε στην ερώτηση αυτή." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Παρακαλώ δώστε τον κωδικό πρόσβασής σας." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Τοποθεσία:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Αδυναμία δημιουργίας νέας SSH συνεδρίας." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Αδυναμία ρύθμισης λήξης χρονικού περιθωρίου." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Αδυναμία απενεργοποίησης του αλγορίθμου του Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Αδυναμία ρύθμισης συμπίεσης." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Αδυναμία ρύθμισης κόμβου." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Αδυναμία ρύθμισης θύρας." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Αδυναμία ρύθμισης ονόματος χρήστη." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Αδυναμία συντακτικής ανάλυσης του αρχείου διαμόρφωσης." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Άνοιγμα σύνδεσης SFTP με τον κόμβο %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" +"Αδυναμία ανάκτησης του ονόματος του τύπου δημόσιου κλειδιού του εξυπηρετητή" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" +"Αδυναμία δημιουργίας αποτυπώματος από το δημόσιο κλειδί του εξυπηρετητή" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" +"Αδυναμία δημιουργίας αποτυπώματος για το δημόσιο κλειδί του εξυπηρετητή" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Δεν βρέθηκε ένα %1 κλειδί υπολογιστή για τον εξυπηρετητή αυτόν, αλλά υπάρχει " +"άλλος τύπος κλειδιού.\n" +"Ένας εισβολέας μπορεί να αλλάξει το προκαθορισμένο κλειδί του εξυπηρετητή " +"για να θεωρήσει ο υπολογιστής σας ότι το κλειδί δεν υπάρχει.\n" +"Επικοινωνήστε με τον διαχειριστή του συστήματός σας.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Το κλειδί υπολογιστή για τον εξυπηρετητή %1 έχει αλλάξει.\n" +"Αυτό μπορεί να σημαίνει ότι DNS SPOOFING είναι σε εξέλιξη ή ότι η διεύθυνση " +"IP του υπολογιστή και το κλειδί του υπολογιστή έχουν αλλάξει ταυτόχρονα.\n" +"Το αποτύπωμα για το %2 κλειδί που έστειλε ο απομακρυσμένος υπολογιστής " +"είναι:\n" +" SHA256:%3\n" +"Επικοινωνήστε με τον διαχειριστή του συστήματός σας.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "" +"Προειδοποίηση: Δεν είναι δυνατή η επαλήθευση της ταυτότητας του κόμβου." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Η αυθεντικότητα του υπολογιστή %1 δεν μπορεί να διαπιστωθεί.\n" +"Το αποτύπωμα του %2 κλειδιού είναι: %3\n" +"Είστε βέβαιοι ότι θέλετε να συνεχίσετε τη διαδικασία σύνδεσης;" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Η ταυτοποίηση απέτυχε." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Η ταυτοποίηση απέτυχε. Ο εξυπηρετητής δεν έστειλε καμία μέθοδο ταυτοποίησης" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Παρακαλώ δώστε το όνομα χρήστη και τον κωδικό πρόσβασής σας." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Εσφαλμένο όνομα χρήστη ή κωδικός πρόσβασης" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Αδυναμία αίτησης για το υποσύστημα SFTP. Βεβαιωθείτε ότι το SFTP είναι " +"ενεργό στον εξυπηρετητή." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Αδυναμία αρχικοποίησης της SFTP συνεδρίας." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Επιτυχής σύνδεση στο %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"το κλειδί του υπολογιστή για τον εξυπηρετητή αυτόν δεν βρέθηκε, αλλά υπάρχει " +"άλλος τύπος κλειδιού.\n" +"Ένας εισβολέας μπορεί να αλλάξει το προκαθορισμένο κλειδί του εξυπηρετητή " +"για να θεωρήσει ο υπολογιστής σας ότι το κλειδί δεν υπάρχει.\n" +"Επικοινωνήστε με τη διαχείριση του συστήματός σας.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Το κλειδί του υπολογιστή για τον εξυπηρετητή %1 έχει αλλάξει.\n" +"Αυτό μπορεί να σημαίνει ότι DNS SPOOFING είναι σε εξέλιξη ή ότι η διεύθυνση " +"IP του υπολογιστή και το κλειδί του υπολογιστή έχουν αλλάξει ταυτόχρονα.\n" +"Το αποτύπωμα για το κλειδί που έστειλε ο απομακρυσμένος υπολογιστής είναι:\n" +" %2\n" +"Επικοινωνήστε με τη διαχείριση του συστήματός σας.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Η αυθεντικότητα του υπολογιστή %1 δεν μπορεί να διαπιστωθεί.\n" +"Το αποτύπωμα του κλειδιού είναι: %2\n" +"Είστε βέβαιοι ότι θέλετε να συνεχίσετε τη διαδικασία σύνδεσης;" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Μη έγκυρο sftp πλαίσιο" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Αδυναμία αλλαγής δικαιωμάτων για\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Αδυναμία ανάγνωσης του συνδέσμου: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Δεν καθορίσθηκε όνομα κόμβου." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Σημειώθηκε ένα εσωτερικό σφάλμα. Παρακαλώ επαναλάβετε την αίτηση." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Παρακαλώ δώστε το όνομα χρήστη και τη φράση πρόσβασης σας." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Προειδοποίηση: Η ταυτότητα του κόμβου άλλαξε." + +#~ msgid "Connection failed." +#~ msgstr "Η σύνδεση απέτυχε." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Η σύνδεση έκλεισε από τον απομακρυσμένο κόμβο." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "Μη αναμενόμενο σφάλμα SFTP: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP έκδοση %1" + +#~ msgid "Protocol error." +#~ msgstr "Σφάλμα πρωτοκόλλου." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Σημειώθηκε ένα εσωτερικό σφάλμα. Παρακαλώ ξαναδοκιμάστε." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Σημειώθηκε ένα άγνωστο σφάλμα κατά την αντιγραφή του αρχείου '%1'. " +#~ "Παρακαλώ ξαναδοκιμάστε." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Ο απομακρυσμένος κόμβος δεν υποστηρίζει μετονομασία αρχείων." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "" +#~ "Ο απομακρυσμένος κόμβος δεν υποστηρίζει δημιουργία συμβολικών δεσμών." + +#~ msgid "Connection closed" +#~ msgstr "Η σύνδεση έκλεισε" + +#~ msgid "End of file." +#~ msgstr "Τέλος αρχείου." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "Η εντολή SFTP απέτυχε για άγνωστο λόγο." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Ο εξυπηρετητής SFTP έλαβε ένα προβληματικό μήνυμα." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "" +#~ "Επιχειρήσατε μια ενέργεια που δεν υποστηρίζεται από τον εξυπηρετητή SFTP." + +#~ msgid "Error code: %1" +#~ msgstr "Κωδικός σφάλματος: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "" +#~ "Δεν είναι δυνατό να οριστεί ένα υποσύστημα και μια εντολή την ίδια στιγμή." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Δε δόθηκαν επιλογές για την εκτέλεση του ssh." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Αποτυχία εκτέλεσης της διεργασίας ssh." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Σφάλμα κατά την επικοινωνία με το ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Παρακαλώ δώστε έναν κωδικό πρόσβασης." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Παρακαλώ δώστε τη φράση πρόσβασης για το ιδιωτικό SSH κλειδί σας." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Η ταυτοποίηση στο %1 απέτυχε" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Η ταυτότητα του απομακρυσμένου κόμβου '%1' δεν ήταν δυνατό να επαληθευτεί " +#~ "γιατί το κλειδί του κόμβου δε βρίσκεται στο αρχείο \"γνωστοί κόμβοι\"." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ "Χειρωνακτικά, προσθέστε το κλειδί του κόμβου στο αρχείο \"γνωστοί κόμβοι" +#~ "\" ή επικοινωνήστε με το διαχειριστή του συστήματός σας." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ "Χειρωνακτικά, προσθέστε το κλειδί του κόμβου στο %1 ή επικοινωνήστε με το " +#~ "διαχειριστή του συστήματός σας." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Η ταυτότητα του απομακρυσμένου κόμβου '%1' δεν ήταν δυνατό να " +#~ "επαληθευτεί. Το αποτύπωμα του κλειδιού του κόμβου είναι:\n" +#~ "%2\n" +#~ "Θα πρέπει να επαληθεύσετε το αποτύπωμα με το διαχειριστή του κόμβου πριν " +#~ "συνδεθείτε.\n" +#~ "\n" +#~ "Θέλετε να αποδεχθείτε το κλειδί του κόμβου και να συνδεθείτε όπως και να " +#~ "έχει;" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η ταυτότητα του απομακρυσμένου κόμβου '%1' έχει αλλάξει!\n" +#~ "\n" +#~ "Κάποιος μπορεί να παρακολουθεί τη σύνδεσή σας ή ο διαχειριστής του " +#~ "συστήματος σας μόλις έχει αλλάξει το κλειδί του κόμβου. Όπως και να έχει, " +#~ "θα πρέπει να επαληθεύσετε το αποτύπωμα του κλειδιού του κόμβου με το " +#~ "διαχειριστή του συστήματος σας. Το αποτύπωμα του κλειδιού είναι:\n" +#~ "%2\n" +#~ "Προσθέστε το σωστό κλειδί κόμβου στο \"%3\" για να απαλλαγείτε από αυτό " +#~ "το μήνυμα." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η ταυτότητα του απομακρυσμένου κόμβου '%1' έχει αλλάξει!\n" +#~ "\n" +#~ "Κάποιος μπορεί να παρακολουθεί τη σύνδεσή σας ή ο διαχειριστής του " +#~ "συστήματος σας μόλις έχει αλλάξει το κλειδί του κόμβου. Όπως και να έχει, " +#~ "θα πρέπει να επαληθεύσετε το αποτύπωμα του κλειδιού του κόμβου με το " +#~ "διαχειριστή του συστήματος σας πριν συνδεθείτε. Το αποτύπωμα του κλειδιού " +#~ "είναι:\n" +#~ "%2\n" +#~ "Θέλετε να αποδεχθείτε το νέο κλειδί του κόμβου και να συνδεθείτε όπως και " +#~ "να έχει;" + +#~ msgid "Host key was rejected." +#~ msgstr "Το κλειδί του κόμβου απορρίφθηκε." + +#~ msgid "Please enter a username and password" +#~ msgstr "Παρακαλώ δώστε ένα όνομα χρήστη και έναν κωδικό πρόσβασης" + +#~ msgid "File does not exist." +#~ msgstr "Το αρχείο δεν υπάρχει." + +#~ msgid "Access is denied." +#~ msgstr "Άρνηση πρόσβασης." diff --git a/po/el/kio5_smb.po b/po/el/kio5_smb.po new file mode 100644 index 0000000..aa4db9a --- /dev/null +++ b/po/el/kio5_smb.po @@ -0,0 +1,211 @@ +# translation of kio_smb.po to greek +# translation of kio_smb.po to +# Copyright (C) 2003, 2005, 2007 Free Software Foundation, Inc. +# +# Dimitris Kamenopoulos , 2002. +# Stergios Dramis , 2003. +# Spiros Georgaras , 2005. +# Toussis Manolis , 2005. +# Toussis Manolis , 2005, 2007. +# Spiros Georgaras , 2007. +# Stelios , 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-05 08:23+0200\n" +"Last-Translator: Stelios \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Υπάρχουν διάφορες επιλογές για ταυτοποίηση σε κοινούς πόρους SMB.username: Για ταυτοποίηση σε ένα " +"οικιακό δίκτυο το όνομα χρήστη στον εξυπηρετητή επαρκείusername@domain.com: Τα μοντέρνα " +"εταιρικά ονόματα σύνδεσης σχηματίζονται ως διευθύνσεις ηλ. αλληλογραφίαςDOMAIN\\username: Για αρχαία εταιρικά " +"δίκτυα ή ομάδες εργασίας ίσως απαιτηθεί πρόθεμα στο όνομα τομέα NetBIOS (προ-" +"Windows 2000)anonymous: Ανώνυμες " +"συνδέσεις επιχειρούνται με κενό όνομα χρήστη και κωδικό πρόσβασης. Ανάλογα " +"με τη διαμόρφωση του εξυπηρετητή ίσως απαιτηθούν μη κενά ονόματα χρήστη" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Παρακαλώ δώστε πληροφορίες ταυτοποίησης για %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Παρακαλώ δώστε πληροφορίες ταυτοποίησης για:\n" +"Εξυπηρετητή = %1\n" +"Κοινόχρηστος πόρος = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Άγνωστος τύπος αρχείου, ούτε κατάλογος ούτε αρχείο." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Αδύνατο να βρεθεί κάποια ομάδα εργασίας στο τοπικό σας δίκτυο. Αυτό μπορεί " +"να οφείλεται σε ένα ενεργοποιημένο firewall." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Δεν υπάρχει μέσο στη συσκευή για το %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Αδύνατη η σύνδεση με το διακομιστή για το %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "" +"Σφάλμα κατά τη σύνδεση με τον εξυπηρετητή που είναι υπεύθυνος για το %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Ο κοινόχρηστος πόρος δεν ήταν δυνατό να βρεθεί στο δοθέν εξυπηρετητή" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Εσφαλμενος περιγραφέας αρχείου" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Το δοσμένο όνομα δεν μπορεί να αντιστοιχηθεί σε έναν μοναδικό εξυπηρετητή. " +"Βεβαιωθείτε ότι το δίκτυο είναι εγκατεστημένο χωρίς κάποια σύγκρουση " +"ονομάτων μεταξύ των ονομάτων που χρησιμοποιούνται από τα Windows και από την " +"επίλυση ονομάτων του UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Ο υπολογιστής δεν είναι προσβάσιμος" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"To libsmbclient ανέφερε ένα σφάλμα, αλλά δε διευκρίνισε ποιό είναι το " +"πρόβλημα. Αυτό μπορεί να σημαίνει κάποιο σοβαρό πρόβλημα με το δίκτυο σας - " +"αλλά επίσης μπορεί να σημαίνει και κάποιο πρόβλημα με το libsmbclient. \n" +"Αν θέλετε να μας βοηθήσετε, παρακαλώ προμηθεύστε μας με ένα tcpdump του " +"δικτύου ενώ ταυτόχρονα περιηγείστε στο δίκτυο ( προσοχή γιατί μπορεί να " +"περιέχει προσωπικά δεδομένα, έτσι μην το αποστέλλετε αν δεν είστε σίγουροι " +"γι αυτό - μπορείτε να το στείλετε ιδιωτικά στους δημιουργούς αν το ζητήσουν)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Άγνωστη κατάσταση σφάλματος [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Παρουσιάστηκε σφάλμα κατά την πρόσβαση στο %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Το libsmbclient απέτυχε να δημιουργήσει περιεχόμενο" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Σιγουρευτείτε ότι το πακέτο samba είναι εγκατεστημένο σωστά στο σύστημά σας." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Η προσάρτηση του κοινόχρηστου πόρου \"%1\" στον κόμβο \"%2\" από το χρήστη " +"\"%3\" απέτυχε.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Η αποπροσάρτηση του σημείου προσάρτησης \"%1\" απέτυχε.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Άγνωστη συσκευή @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "η libsmbclient απέτυχε να αρχικοποιήσει περιεχόμενο" + +#~ msgid "File does not exist: %1" +#~ msgstr "Το αρχείο δεν υπάρχει: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "η libsmbclient απέτυχε να αρχικοποιηθεί" diff --git a/po/el/kio5_thumbnail.po b/po/el/kio5_thumbnail.po new file mode 100644 index 0000000..2f59f7c --- /dev/null +++ b/po/el/kio5_thumbnail.po @@ -0,0 +1,87 @@ +# translation of kio_thumbnail.po to Greek +# +# Spiros Georgaras , 2005, 2007. +# Spiros Georgaras , 2007. +# Toussis Manolis , 2009. +# Dimitrios Glentadakis , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-09-16 18:30+0200\n" +"Last-Translator: Dimitrios Glentadakis \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Περιστροφή της εικόνας αυτόματα" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Δεν καθορίστηκε τύπος MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Δεν καθορίστηκε μέγεθος ή δεν είναι έγκυρο." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Αδύνατη η δημιουργία εικόνας επισκόπησης καταλόγου" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Δεν καθορίστηκε πρόσθετο." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Αδύνατη ν φόρτωση του ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Αδύνατη η δημιουργία εικόνα επισκόπησης για το %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Η δημιουργία εικόνας επισκόπησης απέτυχε." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Αδύνατη η εγγραφή της εικόνας." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Η σύνδεση με το τμήμα κοινόχρηστης μνήμης %1 απέτυχε" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Η εικόνα είναι πολύ μεγάλη για το τμήμα κοινόχρηστης μνήμης" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Σπύρος Γεωργαράς" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sngeorgaras@otenet.gr" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/en_GB/kfileaudiopreview5.po b/po/en_GB/kfileaudiopreview5.po new file mode 100644 index 0000000..c7eb501 --- /dev/null +++ b/po/en_GB/kfileaudiopreview5.po @@ -0,0 +1,42 @@ +# translation of kfileaudiopreview4.po to British English +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Malcolm Hunter , 2003. +# Andrew Coles , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-04-11 21:26+0100\n" +"Last-Translator: Andrew Coles \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Play &automatically" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "start playback" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pause playback" + +#~ msgid "stop playback" +#~ msgstr "stop playback" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "loop: restarts playback at end" + +#~ msgid "Media Player" +#~ msgstr "Media Player" diff --git a/po/en_GB/kio5_activities.po b/po/en_GB/kio5_activities.po new file mode 100644 index 0000000..5072d6c --- /dev/null +++ b/po/en_GB/kio5_activities.po @@ -0,0 +1,250 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Andrew Coles , 2010. +# Steve Allewell , 2014, 2015, 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-01-10 13:39+0000\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Activities" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Loading..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "The Activity Manager is not running" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Link to the current activity" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Unlink from the current activity" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Link to:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Unlink from:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Activity" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Current activity" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Steve Allewell" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "steve.allewell@gmail.com" + +#~ msgid "Default" +#~ msgstr "Default" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Switch to activity \"%1\"" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Activity" + +#~ msgid "Delete activity" +#~ msgstr "Delete activity" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Are you sure you want to delete '%1'?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" + +#~ msgid "Create a new activity" +#~ msgstr "Create a new activity" + +#~ msgid "Activity settings" +#~ msgstr "Activity settings" + +#~ msgid "General" +#~ msgstr "General" + +#~ msgid "Other" +#~ msgstr "Other" + +#~ msgid "Create" +#~ msgstr "Create" + +#~ msgid "Apply" +#~ msgstr "Apply" + +#~ msgid "Cancel" +#~ msgstr "Cancel" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Shortcut for switching to this activity:" + +#~ msgid "Activity information" +#~ msgstr "Activity information" + +#~ msgid "Name" +#~ msgstr "Name" + +#~ msgid "Description" +#~ msgstr "Description" + +#~ msgid "Wallpaper" +#~ msgstr "Wallpaper" + +#~ msgid "Change..." +#~ msgstr "Change..." + +#~ msgid "Icon" +#~ msgstr "Icon" + +#~ msgid "Switching" +#~ msgstr "Switching" + +#~ msgid "Privacy" +#~ msgstr "Privacy" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "forever" + +#~ msgid "Forget the last hour" +#~ msgstr "Forget the last hour" + +#~ msgid "Forget the last two hours" +#~ msgstr "Forget the last two hours" + +#~ msgid "Forget a day" +#~ msgstr "Forget a day" + +#~ msgid "Forget everything" +#~ msgstr "Forget everything" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " month" +#~ msgstr[1] " months" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "for " + +#~ msgid "Create activity..." +#~ msgstr "Create activity..." + +#~ msgid "Activity switching" +#~ msgstr "Activity switching" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Walk through activities" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Walk through activities (Reverse)" + +#~ msgid "Form" +#~ msgstr "Form" + +#~ msgid "Remember opened documents:" +#~ msgstr "Remember opened documents:" + +#~ msgid "For a&ll applications" +#~ msgstr "For a&ll applications" + +#~ msgid "&Do not remember" +#~ msgstr "&Do not remember" + +#~ msgid "O&nly for specific applications" +#~ msgstr "O&nly for specific applications" + +#~ msgid "Keep history" +#~ msgstr "Keep history" + +#~ msgid "Clear recent history" +#~ msgstr "Clear recent history" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Blacklist all applications not on this list" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Remember the current virtual desktop for each activity (needs restart)" + +#~ msgid "Shortcuts" +#~ msgstr "Shortcuts" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Private - do not track usage for this activity" + +#~ msgid "Delete" +#~ msgstr "Delete" + +#~ msgid "Activity name" +#~ msgstr "Activity name" + +#~ msgid "Available Features" +#~ msgstr "Available Features" + +#~ msgid "Plugins" +#~ msgstr "Plugins" + +#~ msgid "Enable activities management" +#~ msgstr "Enable activities management" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Activity manager is not running properly." + +#~ msgid "Activities..." +#~ msgstr "Activities..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" + +#~ msgid "KDE Activity Manager" +#~ msgstr "KDE Activity Manager" diff --git a/po/en_GB/kio5_archive.po b/po/en_GB/kio5_archive.po new file mode 100644 index 0000000..4e9c86b --- /dev/null +++ b/po/en_GB/kio5_archive.po @@ -0,0 +1,36 @@ +# translation of kio_tar.po to British English +# Malcolm Hunter , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-11-04 00:44+0000\n" +"Last-Translator: Malcolm Hunter \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" diff --git a/po/en_GB/kio5_bookmarks.po b/po/en_GB/kio5_bookmarks.po new file mode 100644 index 0000000..2f668f1 --- /dev/null +++ b/po/en_GB/kio5_bookmarks.po @@ -0,0 +1,80 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Andrew Coles , 2009. +# Steve Allewell , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-06 13:27+0000\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.2\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Places" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Could not find bookmarks configuration" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Could not find bookmarks editor" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Wrong request: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "There are no bookmarks to display yet." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "My Bookmarks" + +#~ msgid "My bookmarks" +#~ msgstr "My bookmarks" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Initial developer" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andrew Coles" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "andrew_coles@yahoo.co.uk" diff --git a/po/en_GB/kio5_fish.po b/po/en_GB/kio5_fish.po new file mode 100644 index 0000000..210a539 --- /dev/null +++ b/po/en_GB/kio5_fish.po @@ -0,0 +1,52 @@ +# translation of kio_fish.po to British English +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +# +# Malcolm Hunter , 2003, 2004. +# Andrew Coles , 2009. +# Steve Allewell , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2014-06-28 18:37+0100\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Connecting..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Initiating protocol..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Local Login" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH Authentication" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Disconnected." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andrew Coles" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "andrew_coles@yahoo.co.uk" diff --git a/po/en_GB/kio5_info.po b/po/en_GB/kio5_info.po new file mode 100644 index 0000000..ccb7662 --- /dev/null +++ b/po/en_GB/kio5_info.po @@ -0,0 +1,28 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Andrew Coles , 2009. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-03-27 17:15+0000\n" +"Last-Translator: Andrew Coles \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." diff --git a/po/en_GB/kio5_man.po b/po/en_GB/kio5_man.po new file mode 100644 index 0000000..650ec33 --- /dev/null +++ b/po/en_GB/kio5_man.po @@ -0,0 +1,218 @@ +# translation of kio_man.po to British English +# Copyright (C) 2003, 2005, 2008 Free Software Foundation, Inc. +# +# Malcolm Hunter , 2003, 2008. +# Andrew Coles , 2005, 2009. +# Steve Allewell , 2014, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-20 20:11+0100\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.1\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"The man page %1 was found, but it could not be read or " +"parsed." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"The specified man page references another page %1,but the referenced page %2 could not be found." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Manual Page Viewer Error" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "There is more than one matching man page:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Multiple Manual Pages" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Header files" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Header files (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "User Commands" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "User Commands (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "System Calls" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subroutines" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl Modules" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Network Functions" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Devices" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "File Formats" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Games" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Miscellaneous" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "System Administration" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Local Documentation" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "New" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Main Manual Page Index" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Section %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index for section %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Manual Page Index" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Generating Index" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "Open of %1 failed." + +#~ msgid "Man output" +#~ msgstr "Man output" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Malcolm Hunter, Steve Allewell" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "malcolm.hunter@gmx.co.uk, steve.allewell@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/en_GB/kio5_mtp.po b/po/en_GB/kio5_mtp.po new file mode 100644 index 0000000..2041278 --- /dev/null +++ b/po/en_GB/kio5_mtp.po @@ -0,0 +1,35 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Steve Allewell , 2014, 2016, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-03-24 20:00+0000\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.07.70\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Cannot copy/move files on the device itself" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "No Storages found. Maybe you need to unlock your device?" diff --git a/po/en_GB/kio5_network.po b/po/en_GB/kio5_network.po new file mode 100644 index 0000000..1d9e3bd --- /dev/null +++ b/po/en_GB/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Steve Allewell , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-23 15:48+0000\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.07.70\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Network" diff --git a/po/en_GB/kio5_nfs.po b/po/en_GB/kio5_nfs.po new file mode 100644 index 0000000..7664125 --- /dev/null +++ b/po/en_GB/kio5_nfs.po @@ -0,0 +1,67 @@ +# translation of kio_nfs.po to British English +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# Andrew Coles , 2004. +# Steve Allewell , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-25 11:46+0100\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Unsupported NFS version" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC error %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "No space left on device" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Read only file system" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "File name too long" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disk quota exceeded" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS error %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Failed to mount %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Unknown target" + +#~ msgid "An RPC error occurred." +#~ msgstr "An RPC error occurred." diff --git a/po/en_GB/kio5_recentdocuments.po b/po/en_GB/kio5_recentdocuments.po new file mode 100644 index 0000000..df157ea --- /dev/null +++ b/po/en_GB/kio5_recentdocuments.po @@ -0,0 +1,30 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jonathan Marten , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-11-19 15:49+0000\n" +"Last-Translator: Jonathan Marten \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Recent Documents" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Jonathan Marten" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jjm@keehaul.me.uk" diff --git a/po/en_GB/kio5_sftp.po b/po/en_GB/kio5_sftp.po new file mode 100644 index 0000000..913110c --- /dev/null +++ b/po/en_GB/kio5_sftp.po @@ -0,0 +1,446 @@ +# translation of kio_sftp.po to British English +# Copyright (C) 2003, 2004, 2008 Free Software Foundation, Inc. +# +# Malcolm Hunter , 2003, 2004, 2008. +# Andrew Coles , 2004, 2009, 2010. +# Steve Allewell , 2014, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-12-02 12:47+0000\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Incorrect or invalid passphrase" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Could not allocate callbacks" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Could not set log verbosity." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Could not set log userdata." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Could not set log callback." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP Login" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Use the username input field to answer this question." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Please enter your password." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Site:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Could not create a new SSH session." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Could not set a timeout." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Could not disable Nagle's Algorithm." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Could not set compression." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Could not set host." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Could not set port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Could not set username." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Could not parse the config file." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Opening SFTP connection to host %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Could not get server public key type name" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Could not create hash from server public key" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Could not create fingerprint for server public key" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Warning: Cannot verify host's identity." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Authentication failed." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Authentication failed. The server didn't send any authentication methods" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Please enter your username and password." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Incorrect username or password" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Could not initialise the SFTP session." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Successfully connected to %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Invalid sftp context" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Could not change permissions for\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Could not read link: %1" + +#~ msgid "No hostname specified." +#~ msgstr "No hostname specified." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "An internal error occurred. Please retry the request again." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Please enter your username and key passphrase." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Warning: Host's identity changed." + +#~ msgid "Connection failed." +#~ msgstr "Connection failed." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Connection closed by remote host." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "unexpected SFTP error: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP version %1" + +#~ msgid "Protocol error." +#~ msgstr "Protocol error." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "An internal error occurred. Please try again." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "The remote host does not support renaming files." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "The remote host does not support creating symbolic links." + +#~ msgid "Connection closed" +#~ msgstr "Connection closed" + +#~ msgid "End of file." +#~ msgstr "End of file." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP command failed for an unknown reason." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "The SFTP server received a bad message." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "You attempted an operation unsupported by the SFTP server." + +#~ msgid "Error code: %1" +#~ msgstr "Error code: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Cannot specify a subsystem and command at the same time." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "No options provided for ssh execution." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Failed to execute ssh process." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Error encountered while talking to ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Please supply a password." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Please supply the passphrase for your SSH private key." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Authentication to %1 failed" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr " Manually, add the host's key to %1 or contact your administrator." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" + +#~ msgid "Host key was rejected." +#~ msgstr "Host key was rejected." + +#~ msgid "Please enter a username and password" +#~ msgstr "Please enter a username and password" diff --git a/po/en_GB/kio5_smb.po b/po/en_GB/kio5_smb.po new file mode 100644 index 0000000..d6049b1 --- /dev/null +++ b/po/en_GB/kio5_smb.po @@ -0,0 +1,202 @@ +# translation of kio_smb.po to British English +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# Malcolm Hunter , 2003, 2004, 2005. +# Andrew Coles , 2004. +# Steve Allewell , 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-06 13:27+0000\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.2\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Please enter authentication information for %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Unknown file type, neither directory or file." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "No media in device for %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Could not connect to host for %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Error while connecting to server responsible for %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Share could not be found on given server" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Bad file descriptor" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Host unreachable" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Unknown error condition: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Error occurred while trying to access %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient failed to create context" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Make sure that the samba package is installed properly on your system." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Unknown Device @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient failed to initialise context" + +#~ msgid "File does not exist: %1" +#~ msgstr "File does not exist: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "libsmbclient failed to initialise" diff --git a/po/en_GB/kio5_thumbnail.po b/po/en_GB/kio5_thumbnail.po new file mode 100644 index 0000000..393610a --- /dev/null +++ b/po/en_GB/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# translation of kio_thumbnail.po to British English +# +# Andrew Coles , 2005, 2009. +# Malcolm Hunter , 2008. +# Steve Allewell , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2014-06-28 18:30+0100\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rotate the image automatically" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "No MIME Type specified." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "No or invalid size specified." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Cannot create thumbnail for directory" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "No plugin specified." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Cannot load ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Cannot create thumbnail for %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Failed to create a thumbnail." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Could not write image." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Failed to attach to shared memory segment %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Image is too big for the shared memory segment" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andrew Coles" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "andrew_coles@yahoo.co.uk" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/eo/kfileaudiopreview5.po b/po/eo/kfileaudiopreview5.po new file mode 100644 index 0000000..178ee1c --- /dev/null +++ b/po/eo/kfileaudiopreview5.po @@ -0,0 +1,37 @@ +# translation of kfileaudiopreview4.po to Esperanto +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Heiko Evermann , 2003. +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-05-23 10:55+0200\n" +"Last-Translator: Michael Moroni \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Aŭtomate ludi" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "startigi reproduktadon" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "paŭzigi reproduktadon" + +#~ msgid "Media Player" +#~ msgstr "Medioludilo" diff --git a/po/eo/kio5_archive.po b/po/eo/kio5_archive.po new file mode 100644 index 0000000..a1185c0 --- /dev/null +++ b/po/eo/kio5_archive.po @@ -0,0 +1,37 @@ +# +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2012-05-28 16:13+0200\n" +"Last-Translator: Michael Moroni \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Esperanto\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.4\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"La dosiero ne malfermeblas, eble pro nesubtenata dosieraranĝo.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"La arkivdosiero ne malfermeblas, eble ĉar la dosieraranĝo ne estas " +"subtenata.\n" +"%1" diff --git a/po/eo/kio5_bookmarks.po b/po/eo/kio5_bookmarks.po new file mode 100644 index 0000000..2a65401 --- /dev/null +++ b/po/eo/kio5_bookmarks.po @@ -0,0 +1,80 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2012-05-28 16:21+0200\n" +"Last-Translator: Michael Moroni \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Esperanto\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.4\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Radiko" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Lokoj" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Malbona peto: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Ne estas ankoraŭ montrendaj legosignoj." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"CSS-dosiero kio_bookmarks ne troveblas. Eligo malbele aspektas.\n" +"Bonvole kontrolu vian instaladon." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Miaj legosignoj" + +#~ msgid "My bookmarks" +#~ msgstr "Miaj legosignoj" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier VELLO" + +#~ msgid "Initial developer" +#~ msgstr "Komenca programisto" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Axel Rousseau, Michael Moroni" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "axel@esperanto-jeunes.org, michael.moroni@mailoo.org" diff --git a/po/eo/kio5_fish.po b/po/eo/kio5_fish.po new file mode 100644 index 0000000..364f117 --- /dev/null +++ b/po/eo/kio5_fish.po @@ -0,0 +1,51 @@ +# +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-05-24 10:36+0200\n" +"Last-Translator: Michael Moroni \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Esperanto\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Konektanta..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Pravalorizanta protokolon..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Loka ensaluto" + +#: fish.cpp:631 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH-rajtigado" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Malkonektita." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Axel Rousseau" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "axel@esperanto-jeunes.org" diff --git a/po/eo/kio5_info.po b/po/eo/kio5_info.po new file mode 100644 index 0000000..7ee20dc --- /dev/null +++ b/po/eo/kio5_info.po @@ -0,0 +1,30 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2012-05-28 16:12+0200\n" +"Last-Translator: Michael Moroni \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Esperanto\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.4\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"La dosiero %1, kiu necesas por ruli ĉi tiun servon, ne troveblas. Bonvole " +"kontrolu la instaladon de viaj programaroj." diff --git a/po/eo/kio5_man.po b/po/eo/kio5_man.po new file mode 100644 index 0000000..22f8469 --- /dev/null +++ b/po/eo/kio5_man.po @@ -0,0 +1,229 @@ +# translation of kio_man.po to Esperanto +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# Matthias Peick , 2004. +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2012-05-28 20:07+0200\n" +"Last-Translator: Michael Moroni \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Neniu man-paĝo kongruanta kun %1.

        Kontrolu, ke vi ne mistajpis la " +"nomon de la paĝo, kiun vi deziras.
        Kontrolu, ke vi tajpis la nomon " +"uzante la korektan usklecon de karaktroj.
        Se ĉio ŝajnas korekta, do " +"eble vi devas plibonigi la serĉvojon de paĝoj de manlibro, aŭ uzante la " +"ĉirkaŭaĵa variablon MANPATH aŭ uzante kongruan dosieron en la dosierujo /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Eraro de rigardilo de manlibro por KDE

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Estas pli ol unu kongrua paĝo de manlibro." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Notu: se vi legas paĝon de manlibro en via lingvo, atentu, ke ĝi povas " +"enhavi kelkajn erarojn aŭ esti malaktuala. Se vi dubas, bonvole rigardu la " +"anglan version." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Uzantkomandoj" + +#: kio_man.cpp:751 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Uzantkomandoj" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Sistemaj vokoj" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Proceduroj" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Moduloj de Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Retfunkcioj" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Aparatoj" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Dosieraranĝoj" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Ludoj" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversaĵoj" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Sistema administrado" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kerno" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Loka dokumentaro" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nova" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Manlibra indekso de UNIKSO" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sekcio %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indekso por sekcio %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Manlibra indekso de UNIKSO" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Kreanta indekson" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"La programaro sgml2roff ne troveblas en via sistemo. Bonvole instalu ĝin, se " +"necese, kaj etendu la serĉvojon per alĝustiganta la ĉirkaŭaĵan variablon " +"PATH antaŭ sartiganta KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Malfermado de %1 fiaskis." + +#~ msgid "Man output" +#~ msgstr "Eligo de manlibro" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Matthias Peick, Michael Moroni" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "matthias@peick.de, michael.moroni@mailoo.org" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/eo/kio5_nfs.po b/po/eo/kio5_nfs.po new file mode 100644 index 0000000..e6b92ca --- /dev/null +++ b/po/eo/kio5_nfs.po @@ -0,0 +1,65 @@ +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-05-23 13:59+0200\n" +"Last-Translator: Michael Moroni \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Neniu spaco restis en la aparato" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Nurlega dosiersistemo" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Tro longa dosiernomo" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Diskkvoto superiĝis" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC-eraro okazis." diff --git a/po/eo/kio5_sftp.po b/po/eo/kio5_sftp.po new file mode 100644 index 0000000..10c353f --- /dev/null +++ b/po/eo/kio5_sftp.po @@ -0,0 +1,423 @@ +# translation of kio_sftp.po to esperanto +# Copyright (C) 2007 Free Software Foundation, Inc. +# Wolfram Diestel , 2002. +# Pierre-Marie Pédrot , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2007-11-25 12:30+0100\n" +"Last-Translator: Pierre-Marie Pédrot \n" +"Language-Team: esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Nevalida salutnomo aŭ pasvorto" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set log userdata." +msgstr "Ne eblis legi la SFTP paketon" + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set log callback." +msgstr "Ne eblis legi la SFTP paketon" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP ensaluto" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" + +#: kio_sftp.cpp:396 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "Bonvolu tajpi vian salutnomon kaj pasvorton." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "retejo:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "" + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set a timeout." +msgstr "Ne eblis legi la SFTP paketon" + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not disable Nagle's Algorithm." +msgstr "Ne eblis legi la SFTP paketon" + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "" + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:634 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set port." +msgstr "Ne eblis legi la SFTP paketon" + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Malfermante SFTP konekton al la gastiganto %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Averto: Ne eblas kontroli la gastigantan identecon." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "La aŭtentigo fiaskis." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Bonvolu tajpi vian salutnomon kaj pasvorton." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nevalida salutnomo aŭ pasvorto" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "" + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Sukcesis konekti al %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ne eblis ŝanĝi la permesojn por\n" +"%1" + +#: kio_sftp.cpp:2252 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not read link: %1" +msgstr "Ne eblis legi la SFTP paketon" + +#, fuzzy +#~| msgid "No hostname specified" +#~ msgid "No hostname specified." +#~ msgstr "Neniu gastiga nomo specifita" + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Interna eraro okazis. Bonvolu reprovi la peton denove." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Bonvolu tajpi vian salutnomon kaj ŝlosilan pasfrazon." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Averto: La gastiganta identeco ŝanĝiĝis!" + +#~ msgid "Connection failed." +#~ msgstr "La konekto fiaskis." + +#~ msgid "Connection closed by remote host." +#~ msgstr "La konekto malfermitis de la defora gastiganto." + +#, fuzzy +#~| msgid "Unexpected SFTP error: %1" +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "Neatendita SFTP eraro: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP versio %1" + +#~ msgid "Protocol error." +#~ msgstr "Protokola eraro:" + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Interna eraro okazis. Bonvolu reprovi." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Nekonata eraro okazis kopiante la dosieron al '%1'. Bonvolu reprovi." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "La fora gastiganto ne permesas alinomi dosierojn." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "La fora gastiganto ne permesas krei simbolajn ligojn." + +#~ msgid "Connection closed" +#~ msgstr "Konekto fermiĝis" + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "La SFTP komando fiaskis pro nekonata kaŭzo." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "La SFTP servilo ricevis malbonan mesaĝon." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Vi elprovis operacion kiun ne permesas la SFTP servilo." + +#~ msgid "Error code: %1" +#~ msgstr "Erara kodo: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Ne eblas specifi subsistemon kaj komandon samtempe." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Neniu opcio donita por la ssh rulado." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "La rulado de la ssh procezo fiaskis." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Eraro okazis parolante al ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Bonvolu doni pasvorton" + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Bonvolu doni la pasfrazon de via SSH privata ŝlosilo." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Aŭtentigo al %1 fiaskis" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "La identeco de la defora gastiganto '%1' ne kontroleblis pro la " +#~ "gastiganta ŝlosilo ne estas en la \"konataj gastigantoj\" dosiero." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Mane aldonu la gastigantan ŝlosilon al la \"konataj gastigantoj\" " +#~ "dosiero aŭ kontakti vian sistemestron." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Mane aldonu la gastigantan ŝlosilon al %1 aŭ kontakti vian sistemestron." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "La identeco de la defora gastiganto '%1' ne kontroleblis. La ŝlosila " +#~ "fingropremo estas:\n" +#~ "%2\n" +#~ "Vi devus kontroli la gastigantan ŝlosilan fingropremon kun la gastiganta " +#~ "sistemestro antaŭ ol konektiĝi.\n" +#~ "\n" +#~ "Ĉu vi volas akcepti la gastigantan ŝlosilon kaj konektiĝi malgraŭe?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "Averto: La identeco de la defora gastiganto '%1' ŝanĝiĝis!\n" +#~ "\n" +#~ "Iu eble aŭskultas sur via konekto, aŭ simple la sistemestro ŝanĝis la " +#~ "gastigantan ŝlosilon. Dumaniere, vi devus kontroli la gastigantan " +#~ "ŝlosilan fingropremon kun la gastiganta sistemestro. La ŝlosila " +#~ "fingropremo estas:\n" +#~ "%2\n" +#~ "\n" +#~ "Aldonu la korektan gastigantan ŝlosilon al \"%3\" por forigi tiun mesaĝon." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "Averto: La identeco de la defora gastiganto '%1' ŝanĝiĝis!\n" +#~ "\n" +#~ "Iu eble aŭskultas sur via konekto, aŭ simple la sistemestro ŝanĝis la " +#~ "gastigantan ŝlosilon. Dumaniere, vi devus kontroli la gastigantan " +#~ "ŝlosilan fingropremon kun la gastiganta sistemestro antaŭ ol konektiĝi. " +#~ "La ŝlosila fingropremo estas:\n" +#~ "%2\n" +#~ "\n" +#~ "Ĉu vi volas akcepti la novan gastigantan ŝlosilon kaj konektiĝi malgraŭe?" + +#~ msgid "Host key was rejected." +#~ msgstr "La gastiganta ŝlosilo malakceptiĝis." + +#~ msgid "Please enter a username and password" +#~ msgstr "Bonvolu tajpi salutnomon kaj pasvorton" diff --git a/po/eo/kio5_smb.po b/po/eo/kio5_smb.po new file mode 100644 index 0000000..69e4f0e --- /dev/null +++ b/po/eo/kio5_smb.po @@ -0,0 +1,193 @@ +# translation of kio_smb.po to Esperanto +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# Matthias Peick , 2004. +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2012-06-05 14:57+0200\n" +"Last-Translator: Michael Moroni \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Bonvole enigu informojn por aŭtentigo de %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Bonvole enigu informojn por aŭtentigo de:\n" +"Servilo = %1\n" +"Kunhavigo = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Nekonata dosieraranĝo, nek dosierujo nek dosiero." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Neniu laborgrupo en via loka reto troveblas. Tio povus esti kaŭzata de " +"enŝaltita fajroŝirmilo" + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Neniu aŭdvidaĵo en aparato por %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Ne povis konekti al servilo for %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Eraro dum konektado al respondeca servilo por %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Kunhavigo ne troveblas en donita servilo" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "MALBONA priskribanto de dosiero" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"La donita nomo ne solveblas al sola servilo. Certigu, ke via reto estas " +"agordita sen iu konflikto inter nomoj uzataj de nom-solvado de Vindozo kaj " +"de UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient liveris eraron sed ĝi ne specifis, kiu problemo estas. Tio " +"povas indiki gravan problemon kun via reto - sed ĝi ankaŭ povas indiki " +"gravan problemon kun libsmbclient.\n" +"Se vi volas helpi nin, faru tcpdump de la reta interfaco, dum vi provas " +"retumi (Notu, ke ĝi povas enhavi privatajn datumojn, do ne afiŝu ĝin, se vi " +"ne certas pri tio - vi povas sendi ĝin private al la porgramistoj, se ili " +"demadas pri tio)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Nekonata erarkondiĉo en stat: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient fiaskis dum kreado de kunteksto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Certigu, ke la pakaĵo samba estas korekte instalita en via sistemo." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Muntado de kunhavigo \"%1\" el gastiganto \"%2\" de uzanto \"%3\" fiaskis.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Malmuntado de surmetingo \"%1\" fiaskis.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient fiaskis dum pravalorizado de kunteksto" + +#~ msgid "File does not exist: %1" +#~ msgstr "Dosiero ne ekzistas: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "libsmbclient ne povis pravaloriziĝi" diff --git a/po/eo/kio5_thumbnail.po b/po/eo/kio5_thumbnail.po new file mode 100644 index 0000000..b58041d --- /dev/null +++ b/po/eo/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# translation of kio_thumbnail.po to esperanto +# +# Stéphane Fillod , 2007. +# Pierre-Marie Pédrot , 2007. +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-05-28 16:26+0200\n" +"Last-Translator: Michael Moroni \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Aŭtomate rotacii la bildon" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Neniu MIME-tipo specifita." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Neniu aŭ nevalida grando specifita." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Miniaturo por dosierujo ne kreeblas" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Neniu kromprogramo specifita." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 ne ŝargeblas" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Miniaturo por %1 ne kreeblas" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Kreado de miniaturo fiaskis." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "La bildo ne skribeblas." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Alkroĉado al kunhavigita memoro-segmento %1 fiaskis" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "La bildo estas tro granda por la kunhavigita memoro-segmento" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Stéphane Fillod, Michael Moroni" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "f8cfe@free.fr, michael.moroni@mailoo.org" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/es/docs/kioslave5/bookmarks/index.docbook b/po/es/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..912f762 --- /dev/null +++ b/po/es/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        +marcadores + + +XavierVello xavier.vello@gmail.com +EloyCuadra
        ecuadra@eloihr.net
        Traductor
        +
        + +31-08-2008 +0.2 + +
        + +Este KIO muestra sus favoritos en una bonita y funcional página &HTML;. Puede acceder a él escribiendo bookmarks:/ en la barra de direcciones de &konqueror;. + +El contenido y disposición de esta página es configurable. Para lanzar el diálogo de configuración, haga que &konqueror; apunte a bookmarks:/config. + +
        + diff --git a/po/es/docs/kioslave5/bzip2/index.docbook b/po/es/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..9723fa4 --- /dev/null +++ b/po/es/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,64 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        +
        + +bzip2 es un programa de compresión. + +El kioslave bzip2 no se puede utilizar directamente y se utiliza como filtro. Por ejemplo, el kioslave tar puede filtrar un archivo a través del kioslave de bzip2 para poder mostrar los contenidos de un archivo tar.bz2 directamente en una ventana de &konqueror;. + +Si pulsa en un archivo comprimido con extensión bz2 en &konqueror;, este kioslave se utilizará para descomprimirlo y mostrarlo como archivo normal (sin comprimir). + +Si usted es un desarrollador y desea utilizar el filtro bzip2, puede encontrar documentación sobre el uso de kioslaves en http://techbase.kde.org. + +Vea el manual: bzip2. + +bzip es el antecesor de bzip2. En la actualidad no se suele usar y ha sido reemplazado por bzip2, que ofrece una mejor compresión. + +
        diff --git a/po/es/docs/kioslave5/fish/index.docbook b/po/es/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..3cd5422 --- /dev/null +++ b/po/es/docs/kioslave5/fish/index.docbook @@ -0,0 +1,165 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        + +2010-10-27 +&kde; 4.5 + +
        + +Le permite acceder a archivos de otros ordenadores utilizando el protocolo Secure SHell (SSH). El ordenador remoto debe estar ejecutando el demonio SSH, pero el resto del protocolo utiliza herramientas estándar de la línea de órdenes, tal y como se comentará a continuación. + +Utilice este kioslave de la siguiente manera: fish://nombreservidor o fish://nombreusuario@nombreservidor. + +Necesitará utilizar dobles barras. + +Puede omitir el nombre del usuario (y el siguiente símbolo @) si tiene el mismo nombre de usuario en ambos ordenadores. + +Podrá dar también su contraseña así: fish://nombreusuario:contraseña@nombreservidor aunque no es necesario porque el sistema se la preguntará si no lo hace. + +Si está ejecutando el demonio SSH en un puerto no estándar, puede especificar este puerto utilizando la sintaxis normal de &URL;: fish://nombreservidor:númeropuerto. + +Fish debería funcionar en cualquier ordenador remoto basado en &UNIX; y que sea más o menos compatible con POSIX. Utiliza las órdenes cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed, y wc. Fish inicia /bin/sh como intérprete de órdenes y presupone que este sea un intérprete Bourne (o compatible, como bash). Si las órdenes sed y file están disponibles, así como un archivo /etc/apache/magic con las firmas de tipos &MIME;, se utilizarán para intentar determinar los tipos &MIME;. + +Si Perl está disponible en la máquina remota, será utilizado en su lugar. Entonces solo serán necesarios env y /bin/sh. El uso de Perl tiene la ventaja adicional de ser más rápido. + +Fish podría funcionar incluso en máquinas &Windows;, si se instalan herramientas como Cygwin. Todas las utilidades antes mencionadas deben estar en la ruta predeterminada del sistema (PATH), y el intérprete de órdenes inicial debe ser capaz de procesar la orden echo FISH:;/bin/sh correctamente. + +
        diff --git a/po/es/docs/kioslave5/gzip/index.docbook b/po/es/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..18dddd9 --- /dev/null +++ b/po/es/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        +
        + +gzip es un programa de compresión. + +El kioslave gzip no se puede utilizar directamente y se utiliza como filtro. Por ejemplo, el kioslave tar puede filtrar una archivo a través del kioslave de gzip para poder mostrar los contenidos de un archivo tar.gz directamente en una ventana de &konqueror;. + +Si pulsa en un archivo comprimido con extensión gz en &konqueror;, este kioslave se utilizará para descomprimirlo y mostrarlo como archivo normal (sin comprimir). + +Si es usted desarrollador y desea utilizar el filtro gzip, puede encontrar documentación sobre el uso de kioslaves en http://techbase.kde.org + +Consulte el manual: gzip. + +
        diff --git a/po/es/docs/kioslave5/info/index.docbook b/po/es/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..0afc340 --- /dev/null +++ b/po/es/docs/kioslave5/info/index.docbook @@ -0,0 +1,72 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        +
        + +Info es un tipo de documentación. Los documentos están en un formato denominado texinfo, que se puede leer en la línea de órdenes con el programa info. + +El ioslave Info le permite leer las páginas de info instaladas en su sistema, desde dentro de &konqueror;. Lo puede utilizar fácilmente: + +info:gcc + +Esto debería mostrarle el nivel superior de la documentación Info sobre el compilador &gcc;. + +Info es un reemplazo &GNU; de man, pero no está extendido fuera del software &GNU;. + +Usted puede explorar fácilmente la documentación info que ha instalado desde la aplicación &khelpcenter; o puede utilizar el ioslave info directamente desde &konqueror; y desde el mini-cliente. + +
        diff --git a/po/es/docs/kioslave5/man/index.docbook b/po/es/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..2e694a7 --- /dev/null +++ b/po/es/docs/kioslave5/man/index.docbook @@ -0,0 +1,155 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        +
        + +Utilizando el ioslave man usted puede leer las páginas man instaladas en su sistema. Es fácil de usar: + + + +man: + +Vea las secciones del manual, pulse para buscar el resto. + + + +man:/fopen + +Vea la página de manual de fopen. + + + +man:/fopen(3) + +Vea la página de manual de fopen en la sección 3. + + + +man:/(3) + +Vea el índice de la sección 3. + + + +man:/intro(3) + +Vea la introducción de la sección 3. + + + + +Si existe más de una página de manual con el nombre que ha introducido, obtendrá una lista en la que podrá escoger la página de manual que desea ver. + +También hay una acceso rápido: #fopen, que produce el mismo efecto. + +Si no encuentra todas sus páginas de manual, ajuste el archivo de configuración /etc/manpath.config (o un archivo con un nombre similar, dependiendo de su distribución) o ajuste las variables de entorno MANPATH y MANSECT. + +Como con cualquier otro ioslave de &kde; es posible introducir un &URL;, como man:/socket en cualquier aplicación de &kde;. Inténtelo en &kwrite; y verá la página de manual en formato &HTML;. + +Contacte con la lista de correo: kde-devel@kde.org. + +
        diff --git a/po/es/docs/kioslave5/network/index.docbook b/po/es/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..3c0df28 --- /dev/null +++ b/po/es/docs/kioslave5/network/index.docbook @@ -0,0 +1,93 @@ + + + +]> + +
        + +network + + + + Friedrich W. H.Kossebau kossebau@kde.org + Cristina YenyxeGonzález García
        the.blue.valkyrie@gmail.com
        Traductor
        +
        + + 2016-12-11 + Aplicaciones 16.12 + +
        + + +El ioslave network permite al usuario explorar los dispositivos conectados a la red local y los servicios que se estén ejecutando en ellos. También se pueden iniciar programas para servicios de tipo conocido. + +Para ver todos los dispositivos encontrados, introduzca network://. + +network://nombre_de_host_de_dispositivo listará los servicios que se estén ejecutando en un dispositivo. + +Al seleccionar un servicio se le dirigirá al URL que coincida con él, suponiendo que haya uno adecuado, como ssh://nombre_de_dispositivo:puerto/ para un servicio SSH. Cada tipo de servicio conocido tiene un tipo mime asignado, para que el usuario pueda asignar nuevos manejadores de URL. Lo puede hacer mediante el módulo de control Asociaciones de archivos en &systemsettings;. Los tipos mime de los servicios se llaman todos inode/vnd.kde.service.*. + + + El kioslave network solo busca y muestra dispositivos y servicios que se estén anunciando activamente mediante el framework de descubrimiento de servicios DNS-SD. + + +
        + diff --git a/po/es/docs/kioslave5/nfs/index.docbook b/po/es/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..820f509 --- /dev/null +++ b/po/es/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        +
        +El protocolo NFS de Sun proporciona acceso remoto transparente a sistemas de archivos compartidos a través de la red. El protocolo está diseñado para que sea independiente de la máquina, del sistema operativo, de la arquitectura de red y del protocolo de transporte. Esta independencia se consigue a través del uso de llamadas de procedimientos remotos, Remote Procedure Call (RPC) creadas encima de una eXternal Data Representation (XDR). + +El protocolo soportado MOUNT realiza funciones específicas del sistema operativo que permiten a los clientes asociar árboles de directorios remotos a un punto del sistema local. El proceso de montaje también permite al servidor gestionar los privilegios de acceso remoto a un conjunto restringido de clientes a través de un control de exportación. + +El administrador de bloqueo proporciona soporte para bloqueo de archivos cuando se utiliza en el entorno NFS. El protocolo de administración de red local, Network Lock Manager (NLM), aisla los aspectos inherentes al bloqueo de archivos en un protocolo separado. + +Fuente: http://www.networksorcery.com/enp/protocol/nfs.htm. + +Consulte el manual: nfs. +
        diff --git a/po/es/docs/kioslave5/recentdocuments/index.docbook b/po/es/docs/kioslave5/recentdocuments/index.docbook new file mode 100644 index 0000000..3f75ee4 --- /dev/null +++ b/po/es/docs/kioslave5/recentdocuments/index.docbook @@ -0,0 +1,74 @@ + + + +]> + +
        +Documentos recientes + + + + + &Burkhard.Lueck;&Burkhard.Lueck.mail; +EloyCuadra
        ecuadra@eloihr.net
        Traductor
        +
        + +2016-12-01 +Aplicaciones 16.12 + +
        + +Un kioslave para mostrar los documentos o &URL; recientes en el diálogo de archivos, en el gestor de archivos, en &krunner; y en el menú de aplicaciones. + +Puede usar el kioslave de este modo: + +Escriba recentdocuments:/ en la barra de ubicación de &dolphin;, &konqueror; y del diálogo de archivos para listar los documentos o &URL; que haya abierto recientemente. + +Puede añadir una entrada en la barra lateral de «Lugares»: haga clic con el botón derecho del ratón sobre la barra lateral y seleccione Añadir entrada, introduzca recentdocuments:/ en el campo Ubicación y guárdelo. A partir de ese momento debería estar disponible en todos los diálogos de archivos a menos que haya elegido mostrar dicha entrada solo en la aplicación actual. + +En el módulo Búsqueda de Plasma de las &systemsettings;, active el complemento de búsqueda Documentos recientes para usar este kioslave en &krunner;. + +En el Menú de aplicaciones, añada un elemento de menú con los documentos recientes en la parte superior del menú activando Mostrar documentos recientes en la página de preferencias. + +
        diff --git a/po/es/docs/kioslave5/sftp/index.docbook b/po/es/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..135d577 --- /dev/null +++ b/po/es/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        +
        +SFTP es un protocolo de transferencia segura de archivos. sftp es un programa interactivo de transferencia de archivos, similar a ftp, pero que realiza todas las operaciones a través de un transporte cifrado ssh. Puede utilizar muchas propiedades de ssh, incluyendo autenticación de clave pública y compresión. + +Consulte el manual de: sftp. + +
        diff --git a/po/es/docs/kioslave5/smb/index.docbook b/po/es/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..1cea157 --- /dev/null +++ b/po/es/docs/kioslave5/smb/index.docbook @@ -0,0 +1,106 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        +2016-12-11 +Aplicaciones 16.12 +
        +El ioslave smb le permite navegar por recursos compartidos de una red &Windows; (o de Samba). + +Para ver los grupos de trabajo, introduzca smb:/. +smb:/grupo_de_trabajo mostrará los sistemas conectados pertenecientes a ese grupo de trabajo. +Para ver los recursos compartidos de una máquina, introduzca smb://la_máquina o smb:/un_grupo_de_trabajo/la_máquina. +Para acceder directamente a un recurso compartido, introduzca smb://la_máquina/el_recurso o smb:/un_grupo_de_trabajo/la_máquina/el_recurso. + +Este ioslave necesita tener instalado libsmbclient. + +Puede configurar su nombre de usuario y contraseña predeterminados desde &systemsettings; en la categoría Red en Conectividad Recursos compartidos de Windows. Esto es especialmente útil si forma parte de un dominio de &Windows; NT. También puede definir el nombre de su grupo de trabajo, aunque en la mayoría de casos no es necesario. El kioslave le pedirá un nombre y una contraseña si no están configurados unos por defecto. + +
        + diff --git a/po/es/docs/kioslave5/tar/index.docbook b/po/es/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..047bcd8 --- /dev/null +++ b/po/es/docs/kioslave5/tar/index.docbook @@ -0,0 +1,41 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        +
        +Un programa de archivado diseñado para almacenar y extraer archivos desde un archivo conocido como archivo tar. Se puede crear un archivo tar en una cinta, sin embargo también es habitual escribirlo como un archivo normal en el disco. + +Consulte el manual: tar. + +
        diff --git a/po/es/docs/kioslave5/thumbnail/index.docbook b/po/es/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..37a8d43 --- /dev/null +++ b/po/es/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; + Marcos Fouces Lago
        mfouces@yahoo.es
        Traductor
        +
        +2016-12-11 +Aplicaciones 16.12 +
        +El kioslave thumbnail es utilizado por &kde; para la generación persistente y transparente a la red de miniaturas. + +El kioslave thumbnail utiliza extensiones para generar las miniaturas actuales. Puede activar la visión de estas miniaturas desde el submenú Ver Previsualizar, disponible en &dolphin; o en &konqueror; en modo administrador de archivos. + +EL kioslave thumbnail no es utilizable directamente por un usuario, pero si usted es un desarrollador, puede utilizarlo desde dentro de sus propias aplicaciones para crear previsualizaciones de archivos. + +Consulte la documentación en las fuentes para obtener más información. La encontrará en la carpeta de origen thumbnail. + +
        diff --git a/po/es/docs/kioslave5/xz/index.docbook b/po/es/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..08cf961 --- /dev/null +++ b/po/es/docs/kioslave5/xz/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +Cristina YenyxeGonzález García
        the.blue.valkyrie@gmail.com
        Traductor
        +
        +
        + +Xz es un programa de compresión + +El kioslave xz no se puede usar directamente sino que está indicado como filtro. Por ejemplo, el kioslave tar puede filtrar un archivo a través del kioslave xz para mostrar los contenidos de un archivo tar.lzma o tar.xz directamente en una ventana de &konqueror;. + +Si hace clic en un archivo comprimido con extensión .lzma o xz en &konqueror;, el kioslave se usará para descomprimirlo y mostrarlo como un archivo normal (sin comprimir). + +Si es usted desarrollador y desea usar el filtro xz, puede encontrar documentación sobre el uso de kioslaves en http://techbase.kde.org + +Consulte el manual: xz. + +
        diff --git a/po/es/kfileaudiopreview5.po b/po/es/kfileaudiopreview5.po new file mode 100644 index 0000000..a5eec05 --- /dev/null +++ b/po/es/kfileaudiopreview5.po @@ -0,0 +1,35 @@ +# Spanish translations for kfileaudiopreview5.po package. +# Copyright (C) 2014 This_file_is_part_of_KDE +# This file is distributed under the same license as the kde package. +# +# Automatically generated, 2014. +# Eloy Cuadra , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-05-22 22:23+0200\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Reproducir &automáticamente" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "iniciar la reproducción" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pausar la reproducción" diff --git a/po/es/kio5_activities.po b/po/es/kio5_activities.po new file mode 100644 index 0000000..eb952b5 --- /dev/null +++ b/po/es/kio5_activities.po @@ -0,0 +1,85 @@ +# Spanish translations for kactivities5.po package. +# Copyright (C) 2016 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Automatically generated, 2016. +# Eloy Cuadra , 2016. +# Rocio Gallego , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kactivities5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-03-09 11:32+0100\n" +"Last-Translator: Rocio Gallego \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Actividades" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Cargando..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "El administrador de actividades no se está ejecutando" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Enlace a la actividad actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Deshacer el enlace desde la actividad actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Enlazar a:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Deshacer el enlace desde:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Actividad" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Actividad actual" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Eloy Cuadra" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "ecuadra@eloihr.net" + +#~ msgid "Default" +#~ msgstr "Por omisión" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Cambiar a la actividad «%1»" diff --git a/po/es/kio5_archive.po b/po/es/kio5_archive.po new file mode 100644 index 0000000..7601ace --- /dev/null +++ b/po/es/kio5_archive.po @@ -0,0 +1,39 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Eloy Cuadra , 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-04-11 08:02+0200\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"No se ha podido abrir el archivo, probablemente porque se usa un formato de " +"archivo no implementado.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"No se ha podido abrir el archivo comprimido, probablemente porque su formato " +"no está implementado.\n" +"%1" diff --git a/po/es/kio5_bookmarks.po b/po/es/kio5_bookmarks.po new file mode 100644 index 0000000..43c9d53 --- /dev/null +++ b/po/es/kio5_bookmarks.po @@ -0,0 +1,72 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Eloy Cuadra , 2014, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-10-31 20:17+0100\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.2\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Raíz" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Lugares" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "No se ha podido encontrar la configuración de los marcadores" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "No se ha podido encontrar el editor de marcadores" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Solicitud incorrecta: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Aún no hay marcadores para mostrar." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"No se encuentra el archivo CSS kio_bookmarks. La salida no se mostrará de " +"forma muy agradable a la vista.\n" +"Compruebe su instalación." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mis marcadores" + +#~ msgid "My bookmarks" +#~ msgstr "Mis marcadores" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Desarrollador inicial" diff --git a/po/es/kio5_fish.po b/po/es/kio5_fish.po new file mode 100644 index 0000000..21a5372 --- /dev/null +++ b/po/es/kio5_fish.po @@ -0,0 +1,43 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Eloy Cuadra , 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2014-04-11 08:04+0200\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Conectando..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Iniciando protocolo..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Inicio de sesión local" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticación SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Desconectado." diff --git a/po/es/kio5_info.po b/po/es/kio5_info.po new file mode 100644 index 0000000..5fdc436 --- /dev/null +++ b/po/es/kio5_info.po @@ -0,0 +1,30 @@ +# translation of kio_info.po to Spanish +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Eloy Cuadra , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-06-09 17:48+0200\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"No ha sido posible localizar el archivo %1, necesario para ejecutar este " +"servicio. Compruebe su instalación de software." diff --git a/po/es/kio5_man.po b/po/es/kio5_man.po new file mode 100644 index 0000000..41ec775 --- /dev/null +++ b/po/es/kio5_man.po @@ -0,0 +1,218 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Eloy Cuadra , 2014, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-13 12:18+0200\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.1\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"No se ha podido encontrar ninguna página man que coincida con %1.Compruebe que no ha escrito mal el nombre de la página, " +"teniendo en cuenta el uso de mayúsculas y minúsculas en los nombres de las " +"páginas man.Si el nombre es correcto, es posible que necesite " +"extender la ruta de búsqueda para páginas man; use para ello la variable de " +"entorno MANPATH o un archivo de configuración en el " +"directorio /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Se ha encontrado la página man %1, pero no se puede " +"leer o analizar." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"La página man indicada hace referencia a otra página %1," +"pero no se ha podido encontrar la página %2 a la " +"que hace referencia." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Error del visor de páginas de manual" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Hay más de una página man coincidente:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiples páginas de manual" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Nota: tenga en cuenta que si lee una página man en su idioma cabe la " +"posibilidad de que contenga errores o de que sea obsoleta. En caso de duda, " +"debería consultar la versión en inglés." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Archivos de cabecera" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Archivos de cabecera (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Órdenes del usuario" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Órdenes de usuario (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Llamadas del sistema" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subrutinas" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Módulos Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Funciones de la red" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formatos de archivos" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Juegos" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Varios" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administración del sistema" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentación local" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nuevo" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índice de la página de manual principal" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sección %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índice de la sección %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Índice de la página de manual" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Creando índice" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"No se ha podido encontrar el programa sgml2roff en su " +"sistema. Instálelo si es necesario y asegúrese de que se puede encontrar " +"usando la variable de entorno PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "La apertura de %1 ha fallado." + +#~ msgid "Man output" +#~ msgstr "Salida de man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Eloy Cuadra" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "ecuadra@eloihr.net" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/es/kio5_mtp.po b/po/es/kio5_mtp.po new file mode 100644 index 0000000..aec6a9a --- /dev/null +++ b/po/es/kio5_mtp.po @@ -0,0 +1,40 @@ +# Spanish translations for kio_mtp.po package. +# Copyright (C) 2014 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Automatically generated, 2014. +# Eloy Cuadra , 2014, 2016, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-20 18:18+0100\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 18.12.2\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"No se han encontrado medios de almacenamiento. Asegúrese de que el " +"dispositivo está desbloqueado y de que tiene activado MTP en sus " +"preferencias de conexión USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "No es posible copiar ni mover archivos al mismo dispositivo" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "No se han encontrado dispositivos de almacenamiento. ¿Es posible que " +#~ "necesite desbloquear el dispositivo?" diff --git a/po/es/kio5_network.po b/po/es/kio5_network.po new file mode 100644 index 0000000..d752aa7 --- /dev/null +++ b/po/es/kio5_network.po @@ -0,0 +1,25 @@ +# Spanish translations for kio5_network.po package. +# Copyright (C) 2019 This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Automatically generated, 2019. +# Eloy Cuadra , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio5_network\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-23 21:23+0100\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.08.3\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Red" diff --git a/po/es/kio5_nfs.po b/po/es/kio5_nfs.po new file mode 100644 index 0000000..c222ba0 --- /dev/null +++ b/po/es/kio5_nfs.po @@ -0,0 +1,71 @@ +# translation of kio_nfs.po to Spanish +# Translation to spanish +# Copyright (C) 2001-2002. +# +# Pablo de Vicente , 2001-2002. +# Pablo de Vicente , 2004. +# Jaime Robles , 2008. +# Eloy Cuadra , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-20 12:22+0200\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"First-Translator: Pablo de Vicente \n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: versión de NFS no permitida" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Error de RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "No queda espacio en el dispositivo" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Sistema de solo lectura" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Nombre de archivo demasiado largo" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Cuota de disco excedida" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Error de NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "El montaje de %1 ha fallado" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Destino desconocido" + +#~ msgid "An RPC error occurred." +#~ msgstr "Ocurrió un error RPC." diff --git a/po/es/kio5_recentdocuments.po b/po/es/kio5_recentdocuments.po new file mode 100644 index 0000000..9868783 --- /dev/null +++ b/po/es/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Eloy Cuadra , 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-04-11 08:07+0200\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documentos recientes" diff --git a/po/es/kio5_sftp.po b/po/es/kio5_sftp.po new file mode 100644 index 0000000..6d68d93 --- /dev/null +++ b/po/es/kio5_sftp.po @@ -0,0 +1,288 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Eloy Cuadra , 2014, 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-11-15 17:53+0100\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Contraseña larga incorrecta o no válida" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "No ha sido posible asignar retrollamadas" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "No se ha podido fijar la verbosidad del registro." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "No se han podido establecer los datos de usuario del registro." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "No ha sido posible asignar el callback del registro." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Inicio de sesión SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Utilice el campo de entrada del nombre de usuario para responder a esta " +"pregunta." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Por favor, introduzca su contraseña." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Sitio:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "No se ha podido crear una nueva sesión SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "No se ha podido fijar un tiempo de espera." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "No se ha podido desactivar el algoritmo de Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "No se ha podido fijar la compresión." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "No se ha podido establecer el servidor." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "No se ha podido establecer el puerto." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "No se ha podido establecer el nombre de usuario." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "No se ha podido analizar sintácticamente el archivo de configuración." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Abriendo una conexión SFTP a la máquina %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "No se puede obtener el nombre del tipo de clave pública del servidor" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "No se puede crear el hash de la clave pública del servidor" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "No se puede crear la huella digital de la clave pública del servidor" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"No se ha encontrado una clave de máquina %1 para este servidor, aunque " +"existe otro tipo de clave.\n" +"Un atacante ha podido cambiar la clave por omisión del servidor para engañar " +"a su programa cliente haciéndole creer que la clave no existe.\n" +"Por favor, contacte con el administrador del sistema.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"La clave de máquina para el servidor %1 ha cambiado.\n" +"Esto se puede deber a que está ocurriendo una usurpación de DNS o a que la " +"dirección IP del servidor y su clave de máquina han cambiado el mismo " +"tiempo.\n" +"La huella digital de la clave %2 enviada por la máquina remota es:\n" +" SHA256:%3\n" +"Por favor, contacte con el administrador del sistema.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Advertencia: no se puede verificar la identidad de la máquina." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"No se puede establecer la autenticidad de la máquina %1.\n" +"La huella digital de la clave %2 es: %3\n" +"¿Está seguro de que desea continuar la conexión?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "La autenticación ha fallado." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"La autenticación ha fallado. El servidor no ha enviado ningún método de " +"autenticación." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Por favor, introduzca su nombre de usuario y su contraseña." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Usuario o contraseña incorrectos" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"No ha sido posible solicitar el subsistema SFTP. Asegúrese de que SFTP está " +"activado en el servidor." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "No se puede inicializar la sesión SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Se ha conectado a %1 con éxito" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"No se ha encontrado la clave de máquina para este servidor, aunque existe " +"otro tipo de clave.\n" +"Un atacante ha podido cambiar la clave por omisión del servidor para engañar " +"a su programa cliente haciéndole creer que la clave no existe.\n" +"Por favor, contacte con el administrador del sistema.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"La clave de máquina para el servidor %1 ha cambiado.\n" +"Esto se puede deber a que está ocurriendo una usurpación de DNS o a que la " +"dirección IP del servidor y su clave de máquina han cambiado el mismo " +"tiempo.\n" +"La huella digital de la clave enviada por la máquina remota es:\n" +" %2\n" +"Por favor, contacte con el administrador del sistema.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"No se puede establecer la autenticidad de la máquina %1.\n" +"La huella digital de la clave es: %2\n" +"¿Está seguro de que desea continuar la conexión?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexto sftp no válido" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"No se pueden cambiar los permisos de\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "No se puede leer el enlace: %1" diff --git a/po/es/kio5_smb.po b/po/es/kio5_smb.po new file mode 100644 index 0000000..dcb8221 --- /dev/null +++ b/po/es/kio5_smb.po @@ -0,0 +1,212 @@ +# translation of kio_smb.po to Spanish +# Translation of kio_smb to Spanish +# Translation to spanish +# Copyright (C) 2001-2002. +# +# Pablo de Vicente , 2001-2002. +# Jaime Robles , 2003, 2008. +# Miguel Revilla Rodríguez , 2003, 2004. +# Pablo de Vicente , 2004. +# Santiago Fernandez Sancho , 2005. +# Enrique Matias Sanchez (aka Quique) , 2007. +# Javier Vinal , 2011. +# Eloy Cuadra , 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-04 17:15+0100\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"First-Translator: Pablo de Vicente \n" +"X-Generator: Lokalize 20.08.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Existen diversas opciones para autenticarse en recursos compartidos " +"SMB.usuario: para autenticarse " +"dentro de una red doméstica es suficiente usar el nombre del usuario en el " +"servidor.usuario@dominio.com: los " +"nombres de inicio de sesión de redes corporativas modernas se forman al " +"estilo de las direcciones de correo electrónico.DOMINIO\\usuario: en las redes " +"corporativas antiguas o en los grupos de trabajo debe usar como prefijo el " +"nombre del dominio de NetBIOS (antes de Windows 2000).anónimo: los inicios de sesión " +"anónimos se pueden probar usando un nombre de usuario y una contraseña " +"vacíos. Según la configuración del servidor, se puede solicitar un nombre de " +"usuario no vacío." + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "" +"Por favor, introduzca información de autenticación para %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Por favor introduzca información de autenticación para:\n" +"Servidor = %1\n" +"Recurso compartido = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tipo de archivo desconocido, ni directorio o archivo." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"No se ha podido encontrar ningún grupo de trabajo en su red local. Esto " +"puede ser debido a la existencia de un cortafuegos." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "No hay medio en el dispositivo para %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "No se puede conectar con el servidor para %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Error al conectar con el servidor responsable para %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "No se pudo encontrar el recurso compartido en el servidor dado" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descriptor de archivo erróneo" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"El nombre introducido no corresponde a un servidor único. Asegúrese de que " +"su red está configurada sin conflictos de nombres entre las máquinas con " +"Windows y UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: servidor no accesible" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient ha informado de un error, pero no ha especificado el problema. " +"Esto podría indicar un problema grave en la red, pero también puede " +"significar un problema con libsmbclient.\n" +"Si quiere ayudarnos, por favor envíenos un tcpdump de la interfaz de red " +"mientras intenta realizar la exploración (tenga en cuenta que podría " +"contener información privada, así que no lo haga público si no está seguro, " +"puede enviárselo de forma privada a los desarrolladores si se lo piden)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condición de error desconocida: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Ha ocurrido un error al intentar acceder a %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient falló al crear el contexto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Asegúrese de que el paquete samba está instalado correctamente en su sistema." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Falló el montaje del recurso compartido «%1» desde el servidor «%2» por el " +"usuario «%3».\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Falló el desmontaje del punto de montaje «%1».\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Dispositivo desconocido @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient falló al inicializar el contexto" + +#~ msgid "File does not exist: %1" +#~ msgstr "El archivo no existe: %1" diff --git a/po/es/kio5_thumbnail.po b/po/es/kio5_thumbnail.po new file mode 100644 index 0000000..54a6742 --- /dev/null +++ b/po/es/kio5_thumbnail.po @@ -0,0 +1,89 @@ +# translation of kio_thumbnail.po to Spanish +# Translation of kio_thumbnail to Spanish +# +# Jaime Robles , 2005. +# Enrique Matias Sanchez (aka Quique) , 2007. +# Jaime Robles , 2008, 2009. +# Cristina Yenyxe González García , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-03-20 14:00+0100\n" +"Last-Translator: Cristina Yenyxe González García \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rotar la imagen automáticamente" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "No se especificó tipo MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "No se especificó tamaño o no es válido." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "No se pudo crear miniatura del directorio" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "No se especificó ningún complemento." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "No se puede cargar ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "No se pudo crear miniatura de %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Fallo al crear la miniatura." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "No se pudo escribir la imagen." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Fallo al adjuntar segmento de memoria compartida %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "La imagen es demasiado grande para el segmento de memoria compartida" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Jaime Robles,Cristina Yenyxe González García" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jaime@kde.org,the.blue.valkyrie@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/et/docs/kioslave5/bookmarks/index.docbook b/po/et/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..fffa2c2 --- /dev/null +++ b/po/et/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        +järjehoidjad + + +XavierVello xavier.vello@gmail.com +MarekLaane
        bald@smail.ee
        Tõlge eesti keelde
        +
        + +2008-08-31 +0.2 + +
        + +See KIO moodul näitab sinu järjehoidjaid kena ja funktsionaalse &HTML;-leheküljena. Selle saab avada, kui kirjutada &konqueror;i asukoharibale bookmarks:/. + +Lehekülje sisu ja paigutus on seadistatavad. Seadistamiseks ava &konqueror;is lihtsalt bookmarks:/config. + +
        + diff --git a/po/et/docs/kioslave5/bzip2/index.docbook b/po/et/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..13eee39 --- /dev/null +++ b/po/et/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,64 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +MarekLaane
        bald@smail.ee
        Tõlge eesti keelde
        +
        +
        + +bzip2 on tihendusprogramm. + +Bzip2 KIO-moodulit ei saa kasutada vahetult, see on mõeldud toimima filtrina. Nii võib näiteks KIO-moodul tar filtreerida faili läbi mooduli bzip2, et näidata &konqueror;i aknas laiendiga .tar.bz2 faili sisu. + +Kui klõpsad &konqueror;is failil, mis on tihendatud .bz2 abil, kasutatakse seda moodulit faili lahtipakkimiseks ja esitamiseks tavalise (pakkimata) failina. + +Kui oled arendaja ja soovid kasutada bzip2 filtrit, leiad dokumentatsiooni kio moodulite kasutamise kohta internetis aadressil http://techbase.kde.org + +Vaata manuaali: bxip2. + +bzip on bzip2 eellane. Tänapäeval kasutatakse seda harva, selle asemele on astunud palju paremat tihendust pakkuv bzip2. + +
        diff --git a/po/et/docs/kioslave5/fish/index.docbook b/po/et/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..e0eeb54 --- /dev/null +++ b/po/et/docs/kioslave5/fish/index.docbook @@ -0,0 +1,165 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +MarekLaane
        bald@starman.ee
        Tõlge eesti keelde
        +
        + +2010-10-27 +&kde; 4.5 + +
        + +Võimaldab ligipääsu teise arvuti failidele turvalise shelli (Secure SHell ehk SSH) protokolli abil. Võrguarvutis peab töötama SSH deemon, kuid ülejäänus kasutab protokoll standardseid käsureatööriistu. + +Fishi KIO-mooduli kasutamine on järgmine: fish://masinanimi või fish://kasutajanimi@masinanimi. + +Kasutada tuleb kaht kaldkriipsu. + +Kui sinu kasutajanimi on mõlemas arvutis sama, võib osa kasutajanimi (ja sellele järgneva @-märgi) ära jätta. + +Lisada võib parooli kujul fish://kasutajanimi:parool@masinanimi, kuid see ei ole hädavajalik, sest kui sa seda ei anna, küsitakse seda vajaduse korral sinu käest nagunii. + +Kui sul töötab SSH deemon mittestandardses pordis, siis saad pordi määrata tavalist &URL;-i süntaksit kasutades: fish://masinanimi:pordinumber. + +Fish peaks toimima igal POSIX-iga ühilduval &UNIX;-põhisel kaugarvutil. See kasutab shellikäske cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed ja wc. Fish käivitab shelli käsuga /bin/sh ja eeldab, et see on Bourne'i shell (või mõni ühilduv, näiteks bash). Kui saadaval on käsud sed ja file ning fail /etc/apache/magic &MIME; tüüpide signatuuridega, võib neid kasutada &MIME; tüübi tuvastamiseks. + +Kui võrgumasinas on saadaval Perl, kasutatakse hoopis seda. Siis läheb vaja ainult käske env ja /bin/sh. Perli kasutamine on kasulik ka kiiruse suurenemise tõttu. + +Fish võib töötada isegi &Windows; masinas, kui sellesse on paigaldatud selline abivahend, nagu Cygwin. Kõik mainitud vahendid peavad asuma süsteemi otsinguteel (PATH) ning käivitatav shell peab suutma töödelda korrektselt käsku echo FISH:;/bin/sh. + +
        diff --git a/po/et/docs/kioslave5/gzip/index.docbook b/po/et/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..188bd77 --- /dev/null +++ b/po/et/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +MarekLaane
        bald@smail.ee
        Tõlge eesti keelde
        +
        +
        + +gzip on tihendusrakendus + +KIO moodulit gzip ei saa vahetult kasutada, see on mõeldud toimima filtrina. Näiteks võib KIO moodul tar filtreerida faili läbi mooduli gzip, et näidata &konqueror;i aknas laiendiga tar.gz faili sisu. + +Kui klõpsad &konqueror;is failil laiendiga gz, kasutatakse seda moodulit faili lahtipakkimiseks ja näitamiseks tavalise (tihendamata) failina. + +Kui oled arendaja ja soovid kasutada gzip filtrit, leiad dokumentatsiooni KIO moodulite kasutamise kohta ionternetis aadressil http://techbase.kde.org + +Vaata manuaali: . + +
        diff --git a/po/et/docs/kioslave5/info/index.docbook b/po/et/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..9d2f566 --- /dev/null +++ b/po/et/docs/kioslave5/info/index.docbook @@ -0,0 +1,72 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +MarekLaane
        bald@starman.ee
        Tõlge eesti keelde
        +
        +
        + +Info on dokumentatsioonitüüp. Dokumendid on texinfo nime kandvas failivormingus ning neid saab lugeda käsureal programmiga info. + +IO-moodul info võimaldab lugeda süsteemi paigaldatud infolehekülgi &konqueror;is. Selle kasutamine on äärmiselt lihtne: + +info:gcc + +See näitab sulle infodokumentatsiooni ülemtaseme lehekülge kompilaatori &gcc; kohta. + +Info on &GNU; asendus manuaalile ehk man, kuid see pole eriti levinud väljapool &GNU; tarkvara. + +Paigaldatud infodokumentatsiooni saab hõlpsasti sirvida &khelpcenter;es, aga IO-moodulit võib vahetult kasutada ka nii &konqueror;is kui mini-käsureal. + +
        diff --git a/po/et/docs/kioslave5/man/index.docbook b/po/et/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..43034ab --- /dev/null +++ b/po/et/docs/kioslave5/man/index.docbook @@ -0,0 +1,155 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +MarekLaane
        bald@starman.ee
        Tõlge eesti keelde
        +
        +
        + +IO-mooduli man kasutamine võimaldab lugeda süsteemi paigaldatud man-lehekülgi. Seda on hõlpus kasutada: + + + +man: + +Näitab manuaali osasid, ülejäänu nägemiseks klõpsa. + + + +man:/fopen + +Näitab käsu fopen man-lehekülge. + + + +man:/fopen(3) + +Näitab käsu fopen man-lehekülge 3. sektsioonis. + + + +man:/(3) + +Näitab 3. sektsiooni indeksit. + + + +man:/intro(3) + +Näitab 3. sektsiooni sissejuhatust. + + + + +Kui sisestatud nimega on enam kui üks manuaalilehekülg, näed nimekirja, kust saad valida vajaliku man-lehekülje. + +Sama tulemuse annab kiirkorraldus #fopen. + +Kui sa ei leia kõiki man-lehekülgi, korrigeeri konfiguratsioonifaili /etc/manpath.config (või sarnase nimega faili - sõltuvalt sinu distributsioonist) või keskkonnamuutujaid MANPATH ja MANSECT. + +Nagu muude &kde; IO-moodulite, nii ka man puhul on võimalik sisestada &URL;, näiteks man:/socket suvalises &kde; rakenduses. Proovi seda &kwrite;'is ning sa näed man-lehekülge &HTML;-vormingus. + +Võta ühendust meililistiga kde-devel@kde.org + +
        diff --git a/po/et/docs/kioslave5/network/index.docbook b/po/et/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..a8bc536 --- /dev/null +++ b/po/et/docs/kioslave5/network/index.docbook @@ -0,0 +1,93 @@ + + + +]> + +
        + +võrk + + + + Friedrich W. H.Kossebau kossebau@kde.org + MarekLaane
        bald@smail.ee
        Tõlge eesti keelde
        +
        + + 2009-04-28 + 0.1 + +
        + + +Võrgu KIO moodul võimaldab kasutajal sirvida kohtvõrku ühendatud seadmeid ning nendel töötavaid teenuseid. Samuti saab käivitada rakendusi teenuste puhul, mille tüüp on teada. + +Kõigi leitud seadmete nägemiseks sisesta network. + +network:/seadme_masinanimi näitab seadmes töötavaid teenuseid. + +Teenuse valimine suunab edasi teenusele vastavale URL-ile, kui see on võimalik, nt. ssh:/seadme_masinanimi:port SSH teenuse puhul. Iga teadaoleva teenusetüübiga on seotud MIME tüüp, mistõttu kasutaja võib saadud URL-iga siduda uusi käitlejaid. Seda saab teha juhtimismoodulis Failiseosed, mille leiab Süsteemi seadistustest. Teenuste MIME tüübid kannavad praegu kõik nime inode/vnd.kde.service.*. + + + Võrgu KIO moodul leiab ja näitab praegu ainult neid seadmeid ja teenuseid, mis annavad endast ise teada DNS SD teenuste tuvastamise raamistiku vahendusel. + + +
        + diff --git a/po/et/docs/kioslave5/nfs/index.docbook b/po/et/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..27a0a35 --- /dev/null +++ b/po/et/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +MarekLaane
        bald@online.ee
        Tõlge eesti keelde
        +
        +
        +Suni protokoll NFS võimaldab läbipaistvat kaugligipääsu üle võrgu välja jagatud failisüsteemidele. NFS protokoll on loodud sõltumatuks masinast, operatsioonisüsteemist, võrguarhitektuurist ja edastusprotokollist. Selle sõltumatuse tagavad kaugprotseduuri väljakutse (RPC, inglise keeles Remote Procedure Call) primitiivid koostöös välisandmete esitusega (XDR, inglise keeles eXternal Data Representation). + +Protokoll MOUNT teostab operatsioonisüsteemipõhiseid funktsioone, mis võimaldavad kliendil ühendada kaugkataloogi oma kohaliku failisüsteemiga. Ühendamisprotsess võimaldab ka serveril jagada kaugligipääsu õigust piiratud hulgale klientidele väljajagamiskontrolli abil. + +Lukustushaldur toetab faili lukustamist, kui seda kasutatakse NFS keskkonnas. Võrgulukustushalduri (NFM, inglise keeles Network Lock Manager) protokoll eraldab faililukustuse olekuaspektid eraldi protokolliks. + +Allikas: http://www.networksorcery.com/enp/protocol/nfs.htm + +Vaata manuaalist: nfs. +
        diff --git a/po/et/docs/kioslave5/sftp/index.docbook b/po/et/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..6795c92 --- /dev/null +++ b/po/et/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +MarekLaane
        bald@online.ee
        Tõlge eesti keelde
        +
        +
        +SFTP on turvaline failiedastusprotokoll. sftp on interaktiivne failiedastusrakendus, sarnaneb ftp-ga, kuid sooritab kõik operatsioonid krüptitud ssh-transpordi abil. Ta võib kasutada paljusid ssh võimalusi, sealhulgas avaliku võtme autentimist ja tihendamist. + +Vaata manuaalist: sftp. + +
        diff --git a/po/et/docs/kioslave5/smb/index.docbook b/po/et/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..2afa688 --- /dev/null +++ b/po/et/docs/kioslave5/smb/index.docbook @@ -0,0 +1,109 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; +MarekLaane
        bald@online.ee
        Tõlge eesti keelde
        +
        +
        +Smb IO-moodul võimaldab sirvida &Windows; (või Samba) võrgu jagatud ressursse. + +Töögruppide nägemiseks sisesta smb:/. +smb://töögrupp näitab selle töögrupi masinaid. +Masina jagatud ressursside nägemiseks sisesta smb://masin või smb:/töögruppmasin. +Jagatud ressursside vahetuks kasutamiseks sisesta smb://masin/ressurss või smb:/töögruppmasin/ressurss + +Smb IO-mooduli kasutamiseks on nõutav libsmbclient. + +Oma vaikimisi pruugitava kasutajanime ja parooli saad määrata Süsteemi seadistustes kategoorias Võrk ja ühendus (JagamineWindowsi ressursid). See tuleb eriti kasuks siis, kui kuulud &Windows; NT domeeni. Seal saab määrata ka töögrupi nime, kuid see ei ole enamasti nõutav. KIO-moodul pärib sinu kasutajanime ja parooli, kui nende vaikeväärtusi ei ole määratud. + +IO moodul on testitud ja arendatud peamiselt Samba 2.0.7 peal, kuid see peaks toimima ka Samba muude versioonidega. + +Autor: Alexander Neundorf neundorf@kde.org +
        + diff --git a/po/et/docs/kioslave5/tar/index.docbook b/po/et/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..719bd67 --- /dev/null +++ b/po/et/docs/kioslave5/tar/index.docbook @@ -0,0 +1,41 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +MarekLaane
        bald@online.ee
        Tõlge eesti keelde
        +
        +
        +Arhiveerimisrakendus, mis on ette nähtud salvestama faile ja ekstraktima neid arhiivist, mis kannab nimetust tarfile. Tarfile võib olla loodud lindiseadmel, kuid päris tavaline on kirjutada tarfile ka normaalse failina. + +Vaata manuaalist: tar. + +
        diff --git a/po/et/docs/kioslave5/thumbnail/index.docbook b/po/et/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..1c9e5ef --- /dev/null +++ b/po/et/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +MarekLaane
        bald@smail.ee
        Tõlge eesti keelde
        +
        +
        +&kde; kasutab KIO moodulit thumbnail pisipiltide võrgus läbipaistvaks ja püsivaks genereerimiseks. + +KIO moodul thumbnail kasutab pluginaid tegelike pisipiltide loomiseks. Pisipiltide nägemise saab sisse lülitada &konqueror;i failihaldurirežiimis menüüst VaadeEelvaatlus. + +KIO moodulit thumbnail ei saa vahetult kasutada, aga kui oled arendaja, võid kasutada seda oma rakendustes failide eelvaatluse loomiseks. + +Vaata lähemat infot lähtetekstiga kaasas käivast dokumentatsioonist. Selle leiab failist $KDEDIR/include/kio/thumbcreator.h või lähtetekstikataloogist kdebase/runtime/kioslave/thumbnail + +
        diff --git a/po/et/docs/kioslave5/xz/index.docbook b/po/et/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..f48fb4b --- /dev/null +++ b/po/et/docs/kioslave5/xz/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +Marek Laane
        bald@smail.ee
        Tõlge eesti keelde
        +
        +
        + +Xz on tihendamisprogramm + +Xz KIO moodulit ei saa otse kasutada, see on mõeldud filtriks. Nii võib näiteks tar KIO moodul filtreerida faili läbi xz KIO mooduli, et näidata otse &konqueror;i aknas tar.lzma või tar.xz faili sisu. + +Kui klõpsad &konqueror;is failile, mis on tihendatud .lzma või tar.xz abil, kasutatakse seda KIO moodulit failid lahtipakkimiseks ning tavalise (tihendamata) failina kuvamiseks. + +Kui oled arendaja ning soovid kasutada xz filtrit, leiad dokumentatsiooni KIO moodulite kasutamise kohta aadressil http://techbase.kde.org. + +Vaata manuaali: xz. + +
        diff --git a/po/et/kfileaudiopreview5.po b/po/et/kfileaudiopreview5.po new file mode 100644 index 0000000..054f707 --- /dev/null +++ b/po/et/kfileaudiopreview5.po @@ -0,0 +1,43 @@ +# translation of kfileaudiopreview4.po to Estonian +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Marek Laane , 2003. +# Marek Laane , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-04-13 21:46+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Automaatne mängimine" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "taasesituse alustamine" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "taasesituse peatamine" + +#~ msgid "stop playback" +#~ msgstr "taasesituse katkestamine" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "taasesituse kordamine lõppu jõudes" + +#~ msgid "Media Player" +#~ msgstr "Meediafailide mängija" diff --git a/po/et/kio5_activities.po b/po/et/kio5_activities.po new file mode 100644 index 0000000..7ba8430 --- /dev/null +++ b/po/et/kio5_activities.po @@ -0,0 +1,188 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marek Laane , 2012, 2014, 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-07-27 19:59+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Tegevused" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Laadimine..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Tegevuste haldur ei tööta." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Lingi aktiivse tegevusega" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Eemalda link aktiivse tegevusega" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Linkimine:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Lingi eemaldamine:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Tegevus" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Aktiivne tegevus" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Marek Laane" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "bald@smail.ee" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Lülitu tegevusele \"%1\"" + +#, fuzzy +#~| msgid "Activities..." +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Tegevused ..." + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Delete activity" +#~ msgstr "Lingi aktiivse tegevusega" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create a new activity" +#~ msgstr "Lingi aktiivse tegevusega" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity settings" +#~ msgstr "Tegevused ..." + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity information" +#~ msgstr "Tegevused ..." + +#~ msgid "Privacy" +#~ msgstr "Privaatsus" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "igavesti" + +#~ msgid "Forget the last hour" +#~ msgstr "Unusta viimane tund" + +#~ msgid "Forget the last two hours" +#~ msgstr "Unusta viimased kaks tundi" + +#~ msgid "Forget a day" +#~ msgstr "Unusta päev" + +#~ msgid "Forget everything" +#~ msgstr "Unusta kõik" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "kuni " + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create activity..." +#~ msgstr "Lingi aktiivse tegevusega" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity switching" +#~ msgstr "Tegevused ..." + +#~ msgid "Remember opened documents:" +#~ msgstr "Avatud dokumendid jäetakse meelde:" + +#, fuzzy +#~| msgid "For all applications" +#~ msgid "For a&ll applications" +#~ msgstr "Kõigis rakendustes" + +#, fuzzy +#~| msgid "Do not remember" +#~ msgid "&Do not remember" +#~ msgstr "Ei jäeta meelde" + +#, fuzzy +#~| msgid "Only for specific applications" +#~ msgid "O&nly for specific applications" +#~ msgstr "Ainult määratud rakendustes" + +#~ msgid "Keep history" +#~ msgstr "Ajalugu säilitatakse" + +#~ msgid "Clear recent history" +#~ msgstr "Puhasta viimase aja ajalugu" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Kõik loendis puuduvad rakendused pannakse musta nimekirja" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity name" +#~ msgstr "Tegevused ..." + +#~ msgid "Available Features" +#~ msgstr "Saadaolevad võimalused" + +#~ msgid "Plugins" +#~ msgstr "Pluginad" + +#~ msgid "Enable activities management" +#~ msgstr "Tegevuste haldamise lubamine" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Tegevuste haldur ei tööta korralikult." + +#~ msgid "Activities..." +#~ msgstr "Tegevused ..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012: Ivan Cukic" diff --git a/po/et/kio5_archive.po b/po/et/kio5_archive.po new file mode 100644 index 0000000..66991f0 --- /dev/null +++ b/po/et/kio5_archive.po @@ -0,0 +1,36 @@ +# translation of kio_tar.po to Estonian +# Marek Laane , 2005,2008. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-06-25 01:11+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Faili avamine nurjus, arvatavasti on tegu toetamata failivorminguga.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Arhiivifaili avamine nurjus, arvatavasti on vorming toetamata.\n" +"%1" diff --git a/po/et/kio5_bookmarks.po b/po/et/kio5_bookmarks.po new file mode 100644 index 0000000..1d0a77b --- /dev/null +++ b/po/et/kio5_bookmarks.po @@ -0,0 +1,159 @@ +# translation of kio_bookmarks.po to Estonian +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marek Laane , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-11-25 23:08+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Juurkataloog" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Asukohad" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Vale päring: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Pole ühtegi järjehoidjat näidata." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS-faili ei leitud. Väljund tuleb inetu.\n" +"Kontrolli oma paigaldust." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Minu järjehoidjad" + +#~ msgid "My bookmarks" +#~ msgstr "Minu järjehoidjad" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Algne arendaja" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Marek Laane" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "bald@smail.ee" + +#~ msgid "Configuration" +#~ msgstr "Seadistamine" + +#~ msgid "Edit bookmarks" +#~ msgstr "Muuda järjehoidjaid" + +#~ msgid "Help" +#~ msgstr "Abi" + +#~ msgid "Bookmarks" +#~ msgstr "Järjehoidjad" + +#~ msgid "" +#~ "If this option is unchecked, bookmarks at the root of the hierarchy (not " +#~ "in a folder) are not displayed.\n" +#~ "If checked, they are gathered in a \"root\" folder." +#~ msgstr "" +#~ "Kui see on märkimata, ei näidata hierarhia juurkataloogis asuvaid " +#~ "järjehoidjaid.\n" +#~ "Kui see on märgitud, koondatakse need kataloogi \"Juurkataloog\"." + +#~ msgid "&Show bookmarks without folder" +#~ msgstr "&Kataloogita järjehoidjate näitamine" + +#~ msgid "" +#~ "Sub-folders are show within their parent by default. If you activate this " +#~ "option, sub-folders are displayed on their own.\n" +#~ "It looks less nice but it may help if you have a very big folder you want " +#~ "to spread in two columns." +#~ msgstr "" +#~ "Vaikimisi näidatakse alamkatalooge eellase all. Selle valiku " +#~ "sisselülitamisel näidatakse alamkatalooge omaette.\n" +#~ "See ei ole nii kena, aga võib olla abiks, kui sul on väga suur kataloog, " +#~ "mida soovid näha kahes veerus." + +#~ msgid "&Flatten bookmarks tree" +#~ msgstr "Ü&htlane järjehoidjapuu" + +#~ msgid "" +#~ "Show a box with KDE places (Home, Network, ...). Useful if you use " +#~ "konqueror as a file manager." +#~ msgstr "" +#~ "KDE asukohtadega (Kodu, Võrk...) kasti näitamine. See on kasulik, kui " +#~ "kasutad failihaldurina Konquerori." + +#~ msgid "Show system &places" +#~ msgstr "Süsteemi asukohta&de näitamine" + +#~ msgid "General settings" +#~ msgstr "Üldised seadistused" + +#~ msgid "" +#~ "Folders are automatically distributed in several columns. The optimal " +#~ "number of columns depends on the width of the konqueror window and the " +#~ "number of bookmarks you have." +#~ msgstr "" +#~ "Kataloogid jaotatakse automaatselt mitmesse veergu. Veergude optimaalne " +#~ "arv sõltub Konquerori akna laiusest ja sinu järjehoidjate arvust." + +#~ msgid "Number of columns to show" +#~ msgstr "Näidatavate veergude arv" + +#~ msgid "Disable it on slow system to disable background images." +#~ msgstr "" +#~ "Aeglases süsteemis on mõttekas see taustapiltide keelamiseks välja " +#~ "lülitada." + +#~ msgid "Show folder &backgrounds" +#~ msgstr "Katal&oogide tausta näitamine" + +#~ msgid "" +#~ "

        My Bookmarks

        This module lets you configure the bookmarks home " +#~ "page.

        The bookmarks home page is accessible at bookmarks:/.

        " +#~ msgstr "" +#~ "

        Minu järjehoidjad

        See moodul võimaldab seadistada " +#~ "järjehoidjate kodulehekülge.

        Järjehoidjate kodulehekülje saab avada " +#~ "asukohas bookmarks:/.

        " diff --git a/po/et/kio5_fish.po b/po/et/kio5_fish.po new file mode 100644 index 0000000..2b253f1 --- /dev/null +++ b/po/et/kio5_fish.po @@ -0,0 +1,52 @@ +# translation of kio_fish.po to Estonian +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Marek Laane , 2003. +# Marek Laane , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-10-10 09:07+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Ühendamine..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokolli initsialiseerimine..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Kohalik sisselogimine" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH autentimine" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Ühendus katkestatud." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Marek Laane" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "bald@smail.ee" diff --git a/po/et/kio5_info.po b/po/et/kio5_info.po new file mode 100644 index 0000000..71a82e0 --- /dev/null +++ b/po/et/kio5_info.po @@ -0,0 +1,30 @@ +# translation of kio_info.po to Estonian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marek Laane , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-04-06 15:53+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Selle teenuse käivitamiseks vajalikku faili %1 ei leitud. Palun kontrolli " +"oma tarkvara paigaldust." diff --git a/po/et/kio5_man.po b/po/et/kio5_man.po new file mode 100644 index 0000000..e1196d7 --- /dev/null +++ b/po/et/kio5_man.po @@ -0,0 +1,218 @@ +# translation of kio_man.po to Estonian +# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +# +# Hasso Tepper , 2002. +# Marek Laane , 2003-2005,2007-2008, 2012, 2019. +# Mihkel Tõnnov , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-10-07 12:17+0200\n" +"Last-Translator: Mihkel Tõnnov \n" +"Language-Team: Estonian <>\n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Man-lehekülge nimega %1 ei leitud.Kontrolli, " +"ega sa ei ole lehekülje nime valesti kirjutanud, ja arvesta, et vahet " +"tehakse ka suurtel ja väikestel tähtedel.Kui nimi on õige, tuleb " +"võib-olla manuaalilehekülgede otsinguteed täiendada, kasutades kas " +"keskkonnamuutujat MANPATH või seadistusfaili kataloogis " +"/etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Manuaalilehekülg %1 küll leiti, kuid selle lugemine või " +"parsimine nurjus." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Määratud manuaalilehekülg viitas teisele leheküljele %1," +"kuid viidatud lehekülge %2 ei leitud." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Manuaalinäitaja viga" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Kriteeriumile vastavaid man-lehekülgi on rohkem kui üks:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Mitu man-lehekülge" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Märkus: kui loed man-lehekülge oma emakeeles, võib see sisaldada vigu või " +"olla vananenud. Kui sul tekib mingeid kahtlusi, tasub kontrollida " +"ingliskeelset versiooni." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Päisefailid" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Päisefailid (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Kasutaja käsud" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Kasutaja käsud (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Süsteemsed väljakutsed" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Alamfunktsioonid" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perli moodulid" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Võrgufunktsioonid" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Seadmed" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Failide vormingud" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Mängud" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Muud" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Süsteemi haldamine" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Kohalik dokumentatsioon" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Uus" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Manuaalilehekülgede pearegister" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sektsioon %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Sektsiooni %1 register: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Manuaalilehekülgede register" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Registri genereerimine" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Programmi sgml2roff ei leitud sinu süsteemist. Paigalda " +"see, kui vaja, ning vaata, et see oleks leitav mõnest asukohast, millele " +"viitab keskkonnamuutuja PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 avamine nurjus." + +#~ msgid "Man output" +#~ msgstr "Manuaaliväljund" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Hasso Tepper, Marek Laane" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "hasso@linux.ee, bald@starman.ee" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/et/kio5_mtp.po b/po/et/kio5_mtp.po new file mode 100644 index 0000000..d9b24a9 --- /dev/null +++ b/po/et/kio5_mtp.po @@ -0,0 +1,37 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marek Laane , 2016, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-11-09 13:44+0200\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.08.1\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Ühtegi salvestit ei leitud. Kontrolli, kas sinu seadmelt on lukustus " +"eemaldatud ja USB-ühenduse seadistustes on MTP lubatud." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Faile ei saa kopeerida/liigutada seadmele endale" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Ühtegi salvestusseadet ei leotud. Võib-olla tuleb seadme lukustus " +#~ "eemaldada?" diff --git a/po/et/kio5_network.po b/po/et/kio5_network.po new file mode 100644 index 0000000..190f0ab --- /dev/null +++ b/po/et/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Marek Laane , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-24 19:38+0200\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.08.1\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Võrk" diff --git a/po/et/kio5_nfs.po b/po/et/kio5_nfs.po new file mode 100644 index 0000000..91dd7dc --- /dev/null +++ b/po/et/kio5_nfs.po @@ -0,0 +1,65 @@ +# Copyright (C) 2016 Free Software Foundation, Inc. +# +# Marek Laane , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2016-01-13 16:58+0200\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Toetamata NFS-i versioon" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC tõrge %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Seadmel pole enam vaba ruumi" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Failisüsteem on ainult lugemiseks" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Failinimi on liiga pikk" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Ketta piirang ületatud" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS-i tõrge %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "%1 ühendamine nurjus" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Tundmatu sihtmärk" + +#~ msgid "An RPC error occurred." +#~ msgstr "Ilmnes RPC viga." diff --git a/po/et/kio5_recentdocuments.po b/po/et/kio5_recentdocuments.po new file mode 100644 index 0000000..1d4e616 --- /dev/null +++ b/po/et/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marek Laane , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-05-14 19:34+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Viimati kasutatud dokumendid" diff --git a/po/et/kio5_sftp.po b/po/et/kio5_sftp.po new file mode 100644 index 0000000..154d54e --- /dev/null +++ b/po/et/kio5_sftp.po @@ -0,0 +1,453 @@ +# translation of kio_sftp.po to Estonian +# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +# +# Hasso Tepper , 2002. +# Marek Laane , 2003-2004,2008, 2009, 2010, 2012, 2016, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2019-11-09 14:14+0200\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.08.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Vale või vigane paroolifraas" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Tagasiside eraldamine nurjus" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Logi teaberohkuse määramine nurjus." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Kasutajaandmete logimine nurjus." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Tagasiside logimine nurjus" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP kasutajanimi" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Kasuta sellele küsimusele vastamiseks kasutajanime sisestamise välja." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Palun sisesta parool." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Sait:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Uus SSH seansi loomine nurjus." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Aegumise määramine nurjus" + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagle'i algoritmi keelamine nurjus." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Tihenduse määramine nurjus." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Masina määramine nurjus." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Pordi määramine nurjus." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Kasutajanime määramine nurjus." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Seadistustefaili parsimine nurjus." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "SFTP ühenduse avamine masinasse %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Serveri avaliku võtme tüübi nime hankimine nurjus" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Räsi loomine serveri avaliku võtme põhjal nurjus" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Sõrmejälje loomine serveri avaliku võtmele nurjus" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Serveri %1 masinavõtit ei leitud, kuid on olemas teist laadi võti.\n" +"Ründaja võib muuta serveri vaikevõtit, et panna klient arvama, nagu poleks " +"võtit olemaski.\n" +"Palun võta ühendust oma süsteemiadministraatoriga.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Serveri %1 masinavõti on muutunud.\n" +"See tähendab, et toimub nimeserveri petmine või siis on korraga muutunud nii " +"masina IP-aadress kui ka tema masinavõti.\n" +"Masina saadetud %2 võtme sõrmejälg on järgmine:\n" +" SHA256:%3\n" +"Palun võta ühendust oma süsteemiadministraatoriga.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Hoiatus: masina identiteeti pole võimalik kontrollida." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Masina %1 autentsust pole võimalik määrata.\n" +"%2 võtme sõrmejälg on järgmine: %3\n" +"Kas kindlasti jätkata ühenduse loomisega?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Autentimine nurjus." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "Autentimine nurjus. Server ei saatnud ühtegi autentimisviisi" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Palun sisesta kasutajanimi ja parool." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Vale kasutajanimi või parool" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP alamsüsteemi päring nurjus. Kontrolli, kas SFTP on serveris ikka " +"lubatud." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP seansi initsialiseerimine nurjus." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Ühendus edukalt loodud masinasse %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Serveri masinavõtit ei leitud, kuid on olemas teist laadi võti.\n" +"Ründaja võib muuta serveri vaikevõtit, et panna klient arvama, nagu poleks " +"võtit olemaski.\n" +"Palun võta ühendust oma süsteemiadministraatoriga.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Serveri %1 masinavõti on muutunud.\n" +"See tähendab, et toimub nimeserveri petmine või siis on korraga muutunud nii " +"masina IP-aadress kui ka tema masinavõti.\n" +"Masina saadetud võtme sõrmejälg on järgmine:\n" +" %2\n" +"Palun võta ühendust oma süsteemiadministraatoriga.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Masina %1 autentsust pole võimalik määrata.\n" +"Võtme sõrmejälg on järgmine: %2\n" +"Kas kindlasti jätkata ühenduse loomisega?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Vigane sftp kontekst" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"%1\n" +"õiguste muutmine nurjus" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Lingi lugemine nurjus: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Masinanime pole määratud." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Tekkis sisemine viga. Palun korda päringut." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Palun sisesta kasutajanimi ja paroolifraas." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Hoiatus: masina identiteet on muutunud." + +#~ msgid "Connection failed." +#~ msgstr "Ühenduse loomine nurjus." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Ühendus suleti kaugmasina poolt." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "ootamatu SFTP viga: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP versioon %1" + +#~ msgid "Protocol error." +#~ msgstr "Protokolli viga." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Tekkis sisemine viga. Palun proovi uuesti." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Tekkis tundmatu viga faili kopeerimisel asukohta '%1'. Palun proovi " +#~ "uuesti." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Kaugmasin ei toeta failide ümbernimetamist." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Kaugmasin ei toeta nimeviitade loomist." + +#~ msgid "Connection closed" +#~ msgstr "Ühendus suletud" + +#~ msgid "End of file." +#~ msgstr "Faili lõpp." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP käsu täitmine nurjus teadmata põhjusel." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "SFTP server sai vigase teate." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Sa üritasid teha midagi niisugust, mida SFTP server ei toeta." + +#~ msgid "Error code: %1" +#~ msgstr "Veakood: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Alamsüsteemi ja käsku pole võimalik korraga määrata." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Ssh käivitamiseks pole argumente antud." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Ssh protsessi käivitamine nurjus." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Viga ssh-ga suhtlemisel." + +#~ msgid "Please supply a password." +#~ msgstr "Palun sisesta parool." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Palun sisesta oma SSH salajase võtme paroolifraas." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Autentimine masinas %1 nurjus" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Masina '%1' identiteeti pole võimalik kontrollida, kuna masina võtit pole " +#~ "\"tuntud masinate\" failis." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Lisa käsitsi masina võti \"tuntud masinate\" faili või võta ühendust " +#~ "võrguadministraatoriga." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Lisa käsitsi masina võti faili %1 või võta ühendust " +#~ "võrguadministraatoriga." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Masina \"%1\" identiteeti pole võimalik kontrollida. Masina võtme " +#~ "sõrmejälg on:\n" +#~ "%2\n" +#~ "Enne ühenduse loomist peaksid sa koos masina administraatoriga " +#~ "kontrollima sõrmejälje õigsust.\n" +#~ "\n" +#~ "Soovid sa masina võtme aktsepteerida ning luua ühenduse vaatamata kõigele?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "HOIATUS: Masina '%1' identiteet on muutunud!\n" +#~ "\n" +#~ "Keegi võib sinu ühendust pealt kuulata või on administraator lihtsalt " +#~ "masina võtit vahetanud. Igal juhul peaksid sa enne ühenduse loomist " +#~ "masina administraatoriga kontrollima masina võtme sõrmejälge. Võtme " +#~ "sõrmejälg on:\n" +#~ "%2\n" +#~ "\n" +#~ "Kui sa ei soovi seda teadet enam näha, lisa masina õige võti faili \"%3\"." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "HOIATUS: Masina '%1' identiteet on muutunud!\n" +#~ "\n" +#~ "Keegi võib sinu ühendust pealt kuulata või on administraator lihtsalt " +#~ "masina võtit vahetanud. Igal juhul peaksid sa enne ühenduse loomist " +#~ "masina administraatoriga kontrollima masina võtme sõrmejälge. Võtme " +#~ "sõrmejälg on:\n" +#~ "%2\n" +#~ "\n" +#~ "Soovid sa aktsepteerida masina uue võtme ning luua ühenduse vaatamata " +#~ "kõigele?" + +#~ msgid "Host key was rejected." +#~ msgstr "Masina võti lükati tagasi." + +#~ msgid "Please enter a username and password" +#~ msgstr "Palun sisesta kasutajanimi ja parool" + +#~ msgid "File does not exist." +#~ msgstr "Faili ei ole olemas." + +#~ msgid "Access is denied." +#~ msgstr "Juurdepääs keelati." diff --git a/po/et/kio5_smb.po b/po/et/kio5_smb.po new file mode 100644 index 0000000..63fdc17 --- /dev/null +++ b/po/et/kio5_smb.po @@ -0,0 +1,191 @@ +# translation of kio_smb.po to Estonian +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Marek Laane , 2003-2006,2008, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-04-28 10:42+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.12.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Palun sisesta %1 autentimisinfo" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Sisesta palun autentimisinfo:\n" +"Server = %1\n" +"Jagatud resurss = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tundmatu failitüüp, ei ole kataloog ega fail." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Kohtvõrgus ei leitud ühtegi töögruppi. Selle põhjuseks võib olla töötav " +"tulemüür." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 jaoks puudub seadmes andmekandja" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 jaoks ei õnnestunud masinaga ühenduda" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Viga %1 eest vastutava serveriga ühendumisel" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Antud serveris ei leitud jagatud ressurssi" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Halb failideskriptor" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Antud nime pole võimalik lahendada unikaalseks serveriks. Kontrolli, et võrk " +"on seadistatud nii, et poleks konflikte Windowsi kasutatavate nimede ja UNIX-" +"i nimelahenduse vahel." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: masin pole kättesaadav" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient andis teada veast, kuid ei täpsustanud, milles asi. See võib " +"osutada mingile tõsisele probleemile sinu võrgus, aga samahästi võib see " +"olla ka libsmbclient'i viga.\n" +"Kui soovid meid aidata, saada meile palun võrguliidese tcpdump lehitsemise " +"ajal (arvesta, et selles võib olla privaatseid andmeid, nii et ära seda " +"postiloendisse saada, kui pelgad turvalisuse pärast, vaid saada see otse " +"arendajale, kui sinu käest seda palutakse)." + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Tundmatu vea tingimus:[%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Tekkis tõrge, kui üritati juurdepääsu ressursile %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient ei suutnud luua konteksti" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Kontrolli, et samba pakett on korralikult paigaldatud." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Kasutaja \"%3\" katse ühendada jagatud ressursi \"%1\" masinast \"%2\" " +"nurjus.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ühenduspunkti \"%1\" lahutamine nurjus.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Tundmatu seade @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient ei suutnud initsialiseerida konteksti" + +#~ msgid "File does not exist: %1" +#~ msgstr "Faili ei ole olemas: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "libsmbclient'i initsialiseerimine nurjus" diff --git a/po/et/kio5_thumbnail.po b/po/et/kio5_thumbnail.po new file mode 100644 index 0000000..ece77b0 --- /dev/null +++ b/po/et/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# translation of kio_thumbnail.po to Estonian +# +# Marek Laane , 2005,2007-2008. +# Marek Laane , 2009, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-02-28 15:14+0200\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Pildi automaatne pööramine" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "MIME tüüpi pole määratud." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Suurus on määramata või vigane." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kataloogi pisipildi loomine nurjus" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Pluginat pole määratud." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Pisipildilooja %1 laadimine nurjus" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 pisipildi loomine nurjus" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Pisipildi loomine nurjus." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Pildi kirjutamine nurjus." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Lisamine jagatud mälu segmendile %1 nurjus" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Pilt on jagatud mälu segmendile liiga suur" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Marek Laane" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "bald@starman.ee" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/eu/kfileaudiopreview5.po b/po/eu/kfileaudiopreview5.po new file mode 100644 index 0000000..bef91d8 --- /dev/null +++ b/po/eu/kfileaudiopreview5.po @@ -0,0 +1,46 @@ +# translation of kfileaudiopreview4.po to Basque +# Copyright (C) 2003, 2005, 2009 Free Software Foundation, Inc. +# +# Marcos , 2003. +# Mikel Goñi Larrea , 2003, 2005. +# Iñaki Larrañaga Murgoitio , 2009. +# marcos , 2009. +# Iñigo Salvador Azurmendi , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-08-03 14:53+0200\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&automatikoki jotzea" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "hasi jotzen" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "eten jotzen" + +#~ msgid "stop playback" +#~ msgstr "gelditu jotzen" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "Begizta: berhasi jotzen bukatzen denean" + +#~ msgid "Media Player" +#~ msgstr "Multimedia erreproduzitzailea" diff --git a/po/eu/kio5_activities.po b/po/eu/kio5_activities.po new file mode 100644 index 0000000..9f45af8 --- /dev/null +++ b/po/eu/kio5_activities.po @@ -0,0 +1,178 @@ +# Translation of kio5_activities.po to Euskara/Basque (eu). +# Copyright (C) 2010-2019, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuaren arduraduna . +# +# Translators: +# Iñigo Salvador Azurmendi , 2010, 2012, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-07-14 22:24+0200\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.04.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Jarduerak" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Zamatzen..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Jarduera kudeatzailea ez dago martxan" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Uneko jarduerara esteka" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Kendu esteka uneko jardueratik" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Estekatu hona:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Kendu esteka hemendik:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Jarduera" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Uneko jarduera" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Iñigo Salvador Azurmendi" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "xalba@euskalnet.net" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Aldatu jarduera honetara: \"%1\"" + +#, fuzzy +#~| msgid "Unlock Activity" +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Jarduera giltzapetik askatu" + +#, fuzzy +#~| msgid "Delete Activity" +#~ msgid "Delete activity" +#~ msgstr "Ezabatu jarduera" + +#, fuzzy +#~| msgid "Unprotect Activity" +#~ msgid "Create a new activity" +#~ msgstr "Jarduerari babesa kendu" + +#, fuzzy +#~| msgid "Activity Password" +#~ msgid "Activity settings" +#~ msgstr "Jardueraren pasahitza" + +#, fuzzy +#~| msgid "Activity Password" +#~ msgid "Activity information" +#~ msgstr "Jardueraren pasahitza" + +#, fuzzy +#~| msgid "Unprotect Activity" +#~ msgid "Create activity..." +#~ msgstr "Jarduerari babesa kendu" + +#, fuzzy +#~| msgid "Activity Password" +#~ msgid "Activity switching" +#~ msgstr "Jardueraren pasahitza" + +#, fuzzy +#~| msgid "Unlock Activity" +#~ msgid "Activity name" +#~ msgstr "Jarduera giltzapetik askatu" + +#, fuzzy +#~| msgid "KDE Activity Management Service" +#~ msgid "Enable activities management" +#~ msgstr "KDE jarduera kudeatzeko zerbitzu" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Jarduera kudeatzailea ez dabil behar bezala." + +#, fuzzy +#~| msgid "(c) 2010, 2011, 2012 Ivan Cukic" +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2010, 2011, 2012 Ivan Cukic" + +#~ msgid "KDE Activity Manager" +#~ msgstr "KDE jarduera kudeatzailea" + +#~ msgid "Enter the password to use for encryption" +#~ msgstr "Sartu zifratzeko erabiliko den pasahitza" + +#~ msgid "Error" +#~ msgstr "Akatsa" + +#~ msgid "Error setting up the activity encryption" +#~ msgstr "Akatsa jardueraren zifraketa ezartzerakoan" + +#~ msgid "" +#~ "You are cancelling the protection of this activity. Its content will " +#~ "become public again and be accessed without a password." +#~ msgstr "" +#~ "Jarduera honen babesa indargabetzen ari zara. Bere edukia publiko " +#~ "bilakatuko da berriz eta pasahitzik gabe atzitu ahal izango da." + +#~ msgid "" +#~ "Error unlocking the activity.\n" +#~ "You've probably entered a wrong password." +#~ msgstr "" +#~ "Akatsa jarduera giltzapetik askatzerakoan.\n" +#~ "Segur aski pasahitz okerra sartu duzu." + +#~ msgid "Enter the password to unlock the activity" +#~ msgstr "Sartu jarduera giltzapetik askatzeko pasahitza" + +#~ msgid "Confirmation" +#~ msgstr "Baieztapena" + +#~ msgid "" +#~ "If you delete a private activity, all the documents and files that belong " +#~ "to it will also be deleted." +#~ msgstr "" +#~ "Jarduera pribatu bat ezabatzen baduzu, berari dagozkion dokumentu eta " +#~ "fitxategi guztiak ere ezabatuko dira." + +#~ msgid "Enter the password to delete this protected activity." +#~ msgstr "Sartu babestutako jarduera hau ezabatzeko pasahitza." diff --git a/po/eu/kio5_archive.po b/po/eu/kio5_archive.po new file mode 100644 index 0000000..5f8a13a --- /dev/null +++ b/po/eu/kio5_archive.po @@ -0,0 +1,41 @@ +# Translation of kio_archive.po to Euskara/Basque (eu). +# Copyright (C) 2005-2014, Free Software Foundation, Inc. +# This file is distributed under the same license as the kde-runtime package. +# +# Marcos , 2005. +# Hizkuntza Politikarako Sailburuordetza , 2013. +# Iñigo Salvador Azurmendi , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-02-15 22:07+0100\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Ezin da ireki fitxategia; seguru asko, fitxategi-formaturen bat onartzen ez " +"delako.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Ezin da ireki artxibo-fitxategia; beharbada, formatua onartzen ez delako.\n" +"%1" diff --git a/po/eu/kio5_bookmarks.po b/po/eu/kio5_bookmarks.po new file mode 100644 index 0000000..5e92aea --- /dev/null +++ b/po/eu/kio5_bookmarks.po @@ -0,0 +1,86 @@ +# Translation for kio5_bookmarks.po to Euskara/Basque (eu). +# Copyright (C) 2008-2014, Free Software Foundation, Inc. +# Copyright (C) 2015-2020, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuko arduraduna . +# +# Translators: +# Asier Urio Larrea , 2008. +# Hizkuntza Politikarako Sailburuordetza , 2013. +# Iñigo Salvador Azurmendi , 2014, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-15 17:26+0100\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Erroa" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Tokiak" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Ezin izan da laster-marken konfigurazioa aurkitu" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Ezin izan da laster-marken editorea aurkitu" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Eskaera okerra: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Oraindik ez dago laster-markarik bistaratzeko." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Ez da aurkitu kio_bookmarks-erako CSS fitxategia. Irteera ez da ondo " +"ikusiko.\n" +"Egiaztatu instalazioa." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Nire laster-markak" + +#~ msgid "My bookmarks" +#~ msgstr "Nire laster-markak" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Hasierako garatzailea" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Asier Urio Larrea,Hizkuntza Politikarako Sailburuordetza" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "asieriko@gmail.com,hizpol@ej-gv.es" diff --git a/po/eu/kio5_fish.po b/po/eu/kio5_fish.po new file mode 100644 index 0000000..786e022 --- /dev/null +++ b/po/eu/kio5_fish.po @@ -0,0 +1,46 @@ +# Translation of kio_fish.po to Euskara/Basque (eu). +# Copyright (C) 2003, 2006 Free Software Foundation, Inc. +# This file is distributed under the same license as the kde-runtime package. +# +# marcos , 2003, 2006. +# Iñigo Salvador Azurmendi , 2013, 2014. +# Hizkuntza Politikarako Sailburuordetza , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2014-02-16 08:32+0100\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Konektatzen..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokoloa hasten..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Saio-hasiera lokala" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH autentifikazioa" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Deskonektatuta." diff --git a/po/eu/kio5_info.po b/po/eu/kio5_info.po new file mode 100644 index 0000000..b734a80 --- /dev/null +++ b/po/eu/kio5_info.po @@ -0,0 +1,32 @@ +# Translation of kio_info.po to Euskara/Basque (eu). +# Copyright (C) 2009-2014, Free Software Foundation, Inc. +# This file is distributed under the same license as the kde-runtime package. +# +# marcos , 2009. +# Hizkuntza Politikarako Sailburuordetza , 2013. +# Iñigo Salvador Azurmendi , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2014-02-15 21:55+0100\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Ezin da aurkitu %1 fitxategia, eta beharrezkoa da zerbitzu hau exekutatzeko. " +"Begiratu software-instalazioa." diff --git a/po/eu/kio5_man.po b/po/eu/kio5_man.po new file mode 100644 index 0000000..5ed0a74 --- /dev/null +++ b/po/eu/kio5_man.po @@ -0,0 +1,223 @@ +# Translation for kio5_man.po to Euskara/Basque (eu). +# Copyright (C) 2002-2014, Free Software Foundation, Inc. +# Copyright (C) 2015-2020, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuko arduraduna . +# +# Translators: +# marcos , 2002, 2003, 2006, 2007, 2008. +# Iñigo Salvador Azurmendi , 2013, 2019, 2020. +# Hizkuntza Politikarako Sailburuordetza , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-11-15 17:48+0100\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Ez da aurkitu %1(e)rekin bat datorren man orririk.Egiaztatu izena ongi idatzi duzun, eta kontuan izan man orrietan " +"maius./minus. bereizten direla.Izena zuzen badago, orduan, " +"baliteke man orrien bilaketa bide-izenak hedatu behar izatea, " +"MANPATH ingurune-aldagaia edo /etc " +"direktorioko konfiguratzeko fitxategia erabiliz." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"%1 man orria aurkitu da, baina ezin izan da irakurri " +"edo aztertu." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Zehaztutako eskuliburu orriak, %1, beste orri bati " +"aipamen egiten dio,baina aipatutako orria, %2, " +"ezin izan da aurkitu." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Eskuliburu-orri ikustailearen errorea" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Bat datorren man orri bat baino gehiago dago:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Eskuliburu-orri anizkoitzak" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Oharra: Man orri bat zure hizkuntzan behar baduzu, ohar zaitez zaharkitua " +"egon daitekeela edo erroreak izan ditzakeela. Zalantzak izanez gero, " +"ingelesezko bertsioari begiradatxoa bota beharko zenioke." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Goiburuen fitxategiak" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Goiburuen fitxategiak (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Erabiltzailearen komandoak" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Erabiltzailearen komandoak (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Sistemaren deiak" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Azpirutinak" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl moduluak" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Sareko funtzioak" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Gailuak" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Fitxategi formatuak" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Jokoak" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Bestelakoa" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Sistemaren kudeaketa" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Nukleoa" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Dokumentazio lokala" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Berria" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Eskuliburu-orrien indize nagusia" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "%1 atala" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "%1 atalaren Indizea: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Eskuliburu-orrien indizea" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Indizea sortzen" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Ezin izan da sgml2roff programa zure sisteman aurkitu. " +"Instalatu behar izanez gero, eta ziurtatu PATH ingurune-" +"aldagaia erabiliz aurkitu daitekeela." + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 irekitzeak huts egin du." + +#~ msgid "Man output" +#~ msgstr "Man irteera" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Marcos Goyenetxe,Iñigo Salvador Azurmendi" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "marcos@euskalgnu.org,xalba@euskalnet.net" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/eu/kio5_mtp.po b/po/eu/kio5_mtp.po new file mode 100644 index 0000000..98dc639 --- /dev/null +++ b/po/eu/kio5_mtp.po @@ -0,0 +1,36 @@ +# Translation of kio5_mtp.po to Euskara/Basque (eu). +# Copyright (C) 2018-2019, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuaren arduraduna . +# +# Translators: +# Gontzal M. Pujana , 2018. +# Iñigo Salvador Azurmendi , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-07-14 22:35+0200\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.04.3\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Ez da biltegiratze euskarririk aurkitu. Ziurtatu zure gailua giltzatzeke " +"dagoela eta MTP gaitua daukala bere USB konexioko ezarpenetan." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Ezin da gailuan bertan fitxategirik kopiatu/mugitu" diff --git a/po/eu/kio5_network.po b/po/eu/kio5_network.po new file mode 100644 index 0000000..27cc7dd --- /dev/null +++ b/po/eu/kio5_network.po @@ -0,0 +1,26 @@ +# Translation of kio5_network.po to Euskara/Basque (eu). +# Copyright (C) 2019, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuaren arduraduna . +# +# Translators: +# Iñigo Salvador Azurmendi , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-23 09:34+0100\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.08.3\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Sarea" diff --git a/po/eu/kio5_nfs.po b/po/eu/kio5_nfs.po new file mode 100644 index 0000000..edfe074 --- /dev/null +++ b/po/eu/kio5_nfs.po @@ -0,0 +1,73 @@ +# Translation of kio_nfs.po to Euskara/Basque (eu). +# Copyright (C) 2003-2014, Free Software Foundation, Inc. +# Copyright (C) 2015-2019, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuaren arduraduna . +# +# Translators: +# Marcos , 2003, 2006. +# Hizkuntza Politikarako Sailburuordetza , 2013. +# Iñigo Salvador Azurmendi , 2014, 2019. +# Gontzal M. Pujana , 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2019-07-14 22:47+0200\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.04.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: NFS bertsio hau ez da onartzen" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC errorea %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Ez da lekurik geratzen gailuan" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Irakurtzeko soilik den fitxategi-sistema" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Fitxategi-izen luzeegia" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disko-kuota gainditu da" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS errorea %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "%1 muntatzea huts egin du" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Jomuga ezezaguna" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC errore bat gertatu da." diff --git a/po/eu/kio5_recentdocuments.po b/po/eu/kio5_recentdocuments.po new file mode 100644 index 0000000..7cd3fb2 --- /dev/null +++ b/po/eu/kio5_recentdocuments.po @@ -0,0 +1,24 @@ +# Translation of kio_recentdocuments.po to Euskara/Basque (eu). +# Copyright (C) 2013, Free Software Foundation, Inc. +# This file is distributed under the same license as the kdebase package. +# +# Iñigo Salvador Azurmendi , 2013, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-08-03 14:55+0200\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 20.04.3\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Azkenaldiko dokumentuak" diff --git a/po/eu/kio5_sftp.po b/po/eu/kio5_sftp.po new file mode 100644 index 0000000..0f67d70 --- /dev/null +++ b/po/eu/kio5_sftp.po @@ -0,0 +1,297 @@ +# Translation of kio_sftp.po to Euskara/Basque (eu). +# Copyright (C) 2003-2014, Free Software Foundation, Inc. +# Copyright (C) 2015-2019, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuaren arduraduna . +# +# Translators: +# Marcos , 2003, 2005, 2006, 2008, 2009. +# Juan Irigoien , 2004. +# Iñigo Salvador Azurmendi , 2011, 2013, 2014, 2019. +# Hizkuntza Politikarako Sailburuordetza , 2013. +# Gontzal M. Pujana , 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2019-07-14 23:13+0200\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.04.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Pasaesaldi okerra edo baliogabea" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Ezin izan dira esleitu atzeradeiak" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Ezin izan da ezarri egunkariaren xehetasun-maila." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Ezin izan dira ezarri egunkariko erabiltzaile-datuak." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Ezin izan dira ezarri egunkariko atzeradeiak" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTPko saio-hasiera" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Erabili erabiltzaile-izenaren sarrera-eremua galdera horri erantzuteko." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Idatzi zure pasahitza." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Gunea:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Ezin izan da sortu SSH saio berri bat." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Ezin izan da ezarri denbora-muga bat." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Ezin izan da ezgaitu Nagle-ren algoritmoa." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Ezin izan da ezarri konprimatzea." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Ezin izan da ezarri ostalaria." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Ezin izan da ezarri ataka." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Ezin izan da ezarri erabiltzaile-izena." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "" +"Ezin izan da gainditu konfiguratzeko fitxategiaren azterketa sintaktikoa." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "SFTP konexioa irekitzen %1 ostalarira:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Ezin izan da lortu zerbitzariaren gako publiko motaren izena" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Ezin izan da hash sortu zerbitzari publikoaren gakotik" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Ezin izan da hatz-marka sortu zerbitzariaren gako publikorako" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Zerbitzari honetarako ez da aurkitu %1 ostalari gakorik, baino badago beste " +"gako mota bat.\n" +"Erasotzaile batek zerbitzariaren gako lehenetsia alda lezake zure bezeroa " +"nahasteko, gakorik ez dagoela sinestaraziz.\n" +"Jar zaitez zure sistema-administratzailearekin harremanean.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"%1 zerbitzarirako ostalari-gakoa aldatu egin da.\n" +"Horrek esan nahi du DNS SPOOFING iruzurra gertatzen ari dela edo " +"ostalariaren IP helbidea eta ostalari-gakoa aldi berean aldatu direla.\n" +"Urruneko ostalariak bidalitako %2 gakorako hatz-marka hau da:\n" +" SHA256%3\n" +"Jarri zaitez zure sistema-administratzailearekin harremanean.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Kontuz: ezin da egiaztatu ostalariaren identitatea." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"%1 ostalariaren egiazkotasuna ezin da egiaztatu.\n" +"%2 gakoaren hatz-marka hau da: %3\n" +"Ziur zaude konexioarekin jarraitu nahi duzula?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Autentifikazioak huts egin du." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Autentifikazioak huts egin du. Zerbitzariak ez du inolako autentifikazio " +"metodorik bidali" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Idatzi erabiltzaile-izena eta pasahitza." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Okerreko erabiltzaile-izena edo pasahitza" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Ezin izan da konektatu SFTP azpisistemarekin. Ziurtatu SFTP gaituta dagoela " +"zerbitzarian." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP saioa ezin izan da hasieratu." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Ondo konektatu da honekin: %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Zerbitzari honetarako ostalari-gakorik ez da aurkitu, baina badago beste " +"gako mota bat.\n" +"Baliteke erasotzaile batek zerbitzari-gakoa aldatu izana, bezeroari " +"sinestarazteko gakorik ez dagoela.\n" +"Jarri harremanetan sistema-administratzailearekin.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"%1 zerbitzarirako ostalari-gakoa aldatu egin da.\n" +"Horrek esan nahi du DNSn iruzur egin dela edo ostalarirako eta ostalari-" +"gakorako IP helbidea aldi berean aldatu direla.\n" +"Urruneko ostalariak bidalitako gakorako hatz-marka hau da:\n" +" %2\n" +"Jarri harremanetan sistema-administratzailearekin.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Ezin da berretsi %1 ostalariaren autentikotasuna.\n" +"Gakoaren hatz-marka hau da: %2\n" +"Ziur zaude konexioarekin jarraitu nahi duzula?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "sftp testuinguru baliogabea" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ezin izan dira aldatu honetarako baimenak:\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Ezin izan da irakurri esteka hau: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Ez da ostalari-izenik zehaztu." diff --git a/po/eu/kio5_smb.po b/po/eu/kio5_smb.po new file mode 100644 index 0000000..7bde073 --- /dev/null +++ b/po/eu/kio5_smb.po @@ -0,0 +1,208 @@ +# Translation for kio5_smb.po to Euskara/Basque (eu). +# Copyright (C) 2002-2014, Free Software Foundation, Inc. +# Copyright (C) 2015-2020, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuko arduraduna . +# +# Translators: +# Marcos , 2002, 2006, 2010. +# Juan Irigoien , 2004, 2005. +# Hizkuntza Politikarako Sailburuordetza , 2013. +# Iñigo Salvador Azurmendi , 2014, 2019, 2020. +# Gontzal M. Pujana , 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-15 18:03+0100\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"SMB partekatzeetan autentifikatzeko hainbat aukera dago.erabiltzaile-izena: etxeko sare batean " +"autentifikatzeko, zerbitzariko erabiltzaile-izena nahikoa daerabiltzaile-izena@domeinua.com: " +"Korporazioetako saio-hasteko egungo izenak e-posten antzera osatuta daudeDOMEINUA\\erabiltzaile-izena: " +"Korporazioetako sare edo lantalde zaharretarako agian aurrizki gisa NetBIOS " +"domeinu-izena ipini beharko duzu (Windows 2000 aurrekoak)anonimoa: Saio-hasiera anonimoak " +"egiten saia daiteke erabiltzaile-izen eta pasahitzak hutsik utzita. " +"Zerbitzariko konfigurazioen arabera beharrezkoak izan daitezke hutsik ez " +"dauden erabiltzaile-izenak." + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Sartu honentzako autentifikazio-informazioa: %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Sartu honentzako autentifikazio-informazioa:\n" +"Zerbitzaria = %1\n" +"Baliabide partekatua = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Fitxategi mota ezezaguna, direktorioa nahiz fitxategia." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Ezin da lantalderik aurkitu zure sare lokalean. Suhesi bat gaitu delako izan " +"liteke." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Gailuan ez dago euskarririk honentzat: %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Ezin izan da konektatu ostalariarekin honentzat: %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Errorea gertatu da %1 eragin duen zerbitzariarekin konektatzean" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Baliabide partekatua ezin izan da aurkitu zerbitzari horretan" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Fitxategi-deskriptore akastuna" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Emandako izena ezin izan zaio zerbitzari bakar bati lotu. Ziurtatu zure " +"sareak ez duela gatazkarik Windows-ek eta UNIXek erabiltzen dituzten izenen " +"artean." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Ostalari eskuraezina" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient-ek errore baten berri eman du, baina ez du zehaztu zein den " +"arazoa. Sareko arazo larri bat izan liteke, baina baita libsmbclient-ekiko " +"arazo bat ere.\n" +"Lagundu nahi badiguzu, bidali sare-interfazearen tcpdump bat, nabigatzen " +"saiatzen ari zaren bitartean (kontuan izan datu pribatuak izan ditzakeela, " +"eta, beraz, ez argitaratu, ziur ez bazaude; modu pribatuan bidal diezaiekezu " +"garatzaileei, halakorik eskatzen badizute)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Errore-baldintza ezezaguna: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Error bat gertatu da %1 atzitzean%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient-ek huts egin du testuingurua sortzean" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Ziurtatu samba paketea behar bezala instalatuta dagoela zure sisteman." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Huts egin du \"%3\" erabiltzaileak \"%1\" baliabide partekatua \"%2\" " +"ostalaritik muntatzean.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Huts egin du \"%1\" muntatze-puntua desmuntatzean.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Gailu ezezaguna @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient-ek huts egin du testuingurua hasieratzean" + +#~ msgid "File does not exist: %1" +#~ msgstr "Fitxategia ez dago: %1" diff --git a/po/eu/kio5_thumbnail.po b/po/eu/kio5_thumbnail.po new file mode 100644 index 0000000..01295ed --- /dev/null +++ b/po/eu/kio5_thumbnail.po @@ -0,0 +1,90 @@ +# Translation of kio_thumbnail.po to Euskara/Basque (eu). +# Copyright (C) 2006-2014, Free Software Foundation, Inc. +# This file is distributed under the same license as the kde-runtime package. +# +# Marcos , 2006, 2007. +# Iñigo Salvador Azurmendi , 2011, 2014. +# Hizkuntza Politikarako Sailburuordetza , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2014-02-18 00:36+0100\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Biratu irudia automatikoki" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Ez da MIME motarik zehaztu." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Tamainarik ez da zehaztu, edo baliogabea da." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ezin da sortu direktoriorako koadro txikirik." + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Ez da pluginik adierazi." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ezin da kargatu ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ezin da koadro txikirik sortu honentzat: %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Huts egin du koadro txiki bat sortzean." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Ezin izan da idatzi irudia." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Huts egin du %1 memoria partekatuko segmentuari eranstean" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Irudia handiegia da memoria partekatuko segmentuarentzat" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "" +#~ "Marcos Goyeneche,Iñigo Salvador Azurmendi,Hizkuntza Politikarako " +#~ "Sailburuordetza" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "marcos@euskalgnu.org,xalba@euskalnet.net,hizpol@ej-gv.es" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/fa/kfileaudiopreview5.po b/po/fa/kfileaudiopreview5.po new file mode 100644 index 0000000..7eeb228 --- /dev/null +++ b/po/fa/kfileaudiopreview5.po @@ -0,0 +1,42 @@ +# translation of kfileaudiopreview4.po to Persian +# Nazanin Kazemi , 2006. +# Nasim Daniarzadeh , 2006. +# Mohamad Reza Mirdamadi , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2010-10-23 19:57+0330\n" +"Last-Translator: Mohamad Reza Mirdamadi \n" +"Language-Team: Farsi (Persian) \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "پخش &خودکار" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "شروع پخش" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "مکث پخش" + +#~ msgid "stop playback" +#~ msgstr "توقف پخش" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "حلقه: پخش را از ابتدا دوباره آغاز میکند" + +#~ msgid "Media Player" +#~ msgstr "پخش‌کننده رسانه" diff --git a/po/fa/kio5_archive.po b/po/fa/kio5_archive.po new file mode 100644 index 0000000..52d4900 --- /dev/null +++ b/po/fa/kio5_archive.po @@ -0,0 +1,39 @@ +# translation of kio_tar.po to Persian +# Nazanin Kazemi , 2006. +# MaryamSadat Razavi , 2006. +# Tahereh Dadkhahfar , 2006. +# Nasim Daniarzadeh , 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2006-12-10 11:27+0330\n" +"Last-Translator: Nasim Daniarzadeh \n" +"Language-Team: Persian \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"احتمالاً به علت قالب پرونده پشتیبانی‌نشده، نتوانست پرونده را باز کند.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"پرونده بایگانی را نمی‌توان باز کرد، شاید به خاطر این که قالب پشتیبانی‌نشده " +"است.\n" +"%1" diff --git a/po/fa/kio5_bookmarks.po b/po/fa/kio5_bookmarks.po new file mode 100644 index 0000000..284ad00 --- /dev/null +++ b/po/fa/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Mohamad Reza Mirdamadi , 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2011-11-01 22:33+0330\n" +"Last-Translator: Mohammad Reza Mirdamadi \n" +"Language-Team: Farsi (Persian) <>\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "ریشه" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "مکان‌ها" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "درخواست نادرست: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "هنوز هیچ چوب‌الفی برای نمایش موجود نیست." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"پرونده‌ی CSS برای kio_bookmarks پیدا نشد. خروجی زشت به نظر خواهد رسید.\n" +"نصب خود را بررسی کنید." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "چوب الفها‌ی من" + +#~ msgid "My bookmarks" +#~ msgstr "چوب الفها‌ی من" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "توسعه‌دهنده اولیه" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "محمدرضا میردامادی" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mohi@linuxshop.ir" diff --git a/po/fa/kio5_fish.po b/po/fa/kio5_fish.po new file mode 100644 index 0000000..5320ecf --- /dev/null +++ b/po/fa/kio5_fish.po @@ -0,0 +1,44 @@ +# translation of kio_fish.po to Persian +# Nazanin Kazemi , 2006. +# MaryamSadat Razavi , 2006. +# Nasim Daniarzadeh , 2006. +# Mohammad Reza Mirdamadi , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-01-10 22:39+0330\n" +"Last-Translator: Mohammad Reza Mirdamadi \n" +"Language-Team: Farsi (Persian) \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "اتصال..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "آغاز قرارداد..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "ورود محلی" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "احراز هویت ssh" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "قطع ارتباط." diff --git a/po/fa/kio5_info.po b/po/fa/kio5_info.po new file mode 100644 index 0000000..aa7eaa1 --- /dev/null +++ b/po/fa/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Mohamad Reza Mirdamadi , 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2011-10-03 00:17+0330\n" +"Last-Translator: Mohamad Reza Mirdamadi \n" +"Language-Team: Farsi (Persian) <>\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"پرونده %1 که برای راه‌اندازی این خدمت لازم است را نتوانست پیدا کند. لطفا نصب " +"نرم‌افزار خود را بررسی کنید." diff --git a/po/fa/kio5_man.po b/po/fa/kio5_man.po new file mode 100644 index 0000000..45872dd --- /dev/null +++ b/po/fa/kio5_man.po @@ -0,0 +1,245 @@ +# translation of kio_man.po to Persian +# Nazanin Kazemi , 2006, 2007. +# MaryamSadat Razavi , 2006. +# Tahereh Dadkhahfar , 2006. +# Nasim Daniarzadeh , 2006. +# Mohamad Reza Mirdamadi , 2011, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-01-10 23:09+0330\n" +"Last-Translator: Mohammad Reza Mirdamadi \n" +"Language-Team: Farsi (Persian) \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"صفحه راهنمای مطابق با %1 یافت نشد.

        بررسی کنید که نام صفحه مورد " +"نظر، غلط املایی نداشته باشد.
        دقت کنید که باید مراقب نویسه‌های حروف بزرگ " +"و کوچک باشید!
        اگر همه چیز صحیح به نظر می‌رسد، لازم است که مسیر جستجوی " +"بهتر برای صفحات راهنما تنظیم شود، با متغیر محیطی MANPATH یا یک پرونده مطابق " +"در فهرست راهنمای /etc باشد." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        خطای مشاهده‌گر راهنمای KDE

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "بیش از یک مورد مطابق با صفحه راهنما وجود دارد." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"نکته: اگر صفحه راهنما را به زبان خود می‌خوانید، آگاه باشید که می‌تواند شامل " +"برخی اشتباهات بوده یا منسوخ شده باشد. اگر شک دارید، باید به نسخه انگلیسی " +"نگاهی بیندازید." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "پرونده‌های سرآیند" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "پرونده‌های سرآیند (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "فرمانهای کاربر" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "فرمانهای کاربر (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "فراخوانیهای سیستم" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "زیرروالها" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "پیمانه‌های پرل" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "توابع شبکه" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "دستگاهها" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "قالب پرونده‌ها" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "بازیها" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "متفرقه" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "سرپرست سیستم" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "هسته" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "مستندات محلی" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "جدید" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "نمایه راهنمای یونیکس" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "بخش‌ %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "نمایه برای بخش %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "نمایه راهنمای یونیکس" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "ایجاد نمایه" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"نمی‌توان برنامه sgml2roff را در سیستم شما یافت. لطفاً، در صورت لزوم آن را نصب " +"کرده، و مسیر جستجو را با تنظیم متغیر محیطی PATH قبل از آغاز KDE توسعه دهید." + +#~ msgid "Open of %1 failed." +#~ msgstr "خرابی در باز کردن %1." + +#~ msgid "Man output" +#~ msgstr "خروجی راهنما" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "محمدرضا میردامادی , نازنین کاظمی" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mohi@linuxshop.ir , kazemi@itland.ir" + +#~ msgid "KMan" +#~ msgstr "KMan" + +#~ msgid "" +#~ "No man page matching to %1 found.

        Check that you have not " +#~ "mistyped the name of the page that you want.
        Be careful that you " +#~ "must take care about upper case and lower case characters!
        If " +#~ "everything looks correct, then perhaps you need to set a better search " +#~ "path for man pages, be it by the environment variable MANPATH or a " +#~ "matching file in the directory /etc ." +#~ msgstr "" +#~ "صفحه راهنمای مطابق با %1 یافت نشد.

        بررسی کنید که نام صفحه مورد " +#~ "نظر، غلط املایی نداشته باشد.
        دقت کنید که باید مراقب نویسه‌های حروف " +#~ "بزرگ و کوچک باشید!
        اگر همه چیز صحیح به نظر می‌رسد، لازم است که مسیر " +#~ "جستجوی بهتر برای صفحات راهنما تنظیم شود، با متغیر محیطی MANPATH یا یک " +#~ "پرونده مطابق در فهرست راهنمای /etc باشد." + +#~ msgid "

        KDE Man Viewer Error

        " +#~ msgstr "

        خطای مشاهده‌گر راهنمای KDE

        " diff --git a/po/fa/kio5_nfs.po b/po/fa/kio5_nfs.po new file mode 100644 index 0000000..675c2cd --- /dev/null +++ b/po/fa/kio5_nfs.po @@ -0,0 +1,66 @@ +# translation of kio_nfs.po to Persian +# Nazanin Kazemi , 2006. +# maryamSadat Razavi , 2006. +# Nasim Daniarzadeh , 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2006-12-10 11:05+0330\n" +"Last-Translator: Nasim Daniarzadeh \n" +"Language-Team: Persian \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "روی دستگاه، فضایی باقی نمانده است" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "سیستم پرونده فقط خواندنی" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "نام پرونده بسیار طولانی" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "فراتر از سهمیه دیسک" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "یک خطای RPC رخ داد." diff --git a/po/fa/kio5_recentdocuments.po b/po/fa/kio5_recentdocuments.po new file mode 100644 index 0000000..d01c5dd --- /dev/null +++ b/po/fa/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Mohammad Reza Mirdamadi , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-01-10 22:34+0330\n" +"Last-Translator: Mohammad Reza Mirdamadi \n" +"Language-Team: Farsi (Persian) \n" +"Language: fa\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" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "اسناد اخیر" diff --git a/po/fa/kio5_sftp.po b/po/fa/kio5_sftp.po new file mode 100644 index 0000000..60d0236 --- /dev/null +++ b/po/fa/kio5_sftp.po @@ -0,0 +1,419 @@ +# translation of kio_sftp.po to Persian +# Nazanin Kazemi , 2006, 2007. +# MaryamSadat Razavi , 2006. +# Tahereh Dadkhahfar , 2006. +# Nasim Daniarzadeh , 2006. +# Mohammad Reza Mirdamadi , 2011, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2013-01-10 23:10+0330\n" +"Last-Translator: Mohammad Reza Mirdamadi \n" +"Language-Team: Farsi (Persian) \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_sftp.cpp:224 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "نام کاربر یا اسم رمز نادرست" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "نتوانست callbackها را اختصاص دهد" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "نتوانست طول واقعه نگاری را تنظیم کند." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "نتوانست طول واقعه نگاری را تنظیم کند." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "نتوانست callbackها را اختصاص دهد" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "ورود SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "از جای خالی نام کاربری برای پاسخ به این سوال استفاده کنید." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "لطفاً نام کاربر و اسم رمز خود را وارد کنید." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "پایگاه:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "نتوانست نشست SSH جدیدی ایجاد کند." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "نتوانست timeout را تنظیم کند." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "نتوانست درگاه را تنظیم کند." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "نتوانست فشرده‌سازی را تنظیم کند." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "نتوانست میزبان را تنظیم کند." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "نتوانست درگاه را تنظیم کند." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "نتوانست نام کاربری را تنظیم کند." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "نتوانست پرونده‌ی تنظیمات را تجزیه و تحلیل کند." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "باز کردن اتصال SFTP به میزبان %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "نتوانست نام کاربری را تنظیم کند." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "اخطار: هویت میزبان را نمی‌توان وارسی کرد." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "خرابی در احراز هویت." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "لطفاً، نام کاربر و اسم رمز خود را وارد کنید." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "نام کاربر یا اسم رمز نادرست" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "نتوانست نشست SFTP جدیدی را شروع کند." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "با موفقیت به %1 متصل شد" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"نتوانست مجوزها را برای\n" +"%1 تغییر دهد" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "نتوانست این پیوند را بخواند: %1" + +#, fuzzy +#~| msgid "Opening SFTP connection to host %1:%2" +#~ msgid "Opening SFTP connection to host %1:%2" +#~ msgstr "باز کردن اتصال SFTP به میزبان %1:%2" + +#~ msgid "No hostname specified." +#~ msgstr "هیچ نام میزبانی مشخص نشده است." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "یک خطای درونی رخ داد. لطفاً، درخواست را دوباره امتحان کنید." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "لطفاً، نام کاربر و عبارت عبور کلیدی خود را وارد کنید." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "اخطار: هویت میزبان تغییر کرد." + +#~ msgid "Connection failed." +#~ msgstr "خرابی در اتصال." + +#~ msgid "Connection closed by remote host." +#~ msgstr "اتصال توسط میزبان دور بسته شد." + +#, fuzzy +#~| msgid "Unexpected SFTP error: %1" +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "خطای SFTP غیرمنتظره: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "نسخه SFTP %1" + +#~ msgid "Protocol error." +#~ msgstr "خطای قرارداد." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "یک خطای درونی رخ داد. لطفاً، دوباره سعی کنید." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "هنگام رونوشت پرونده به »%1«، خطایی ناشناخته رخ داد. لطفاً، دوباره سعی کنید." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "میزبان دور، پرونده‌های تغییر نام را پشتیبانی نمی‌کند." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "میزبان دور، ایجاد پیوندهای نمادی را پشتیبانی نمی‌کند." + +#~ msgid "Connection closed" +#~ msgstr "اتصال بسته شد" + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "خرابی در فرمان SFTP، به دلیلی ناشناخته." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "کارساز SFTP پیام بدی دریافت کرد." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "اقدام به عملی کردید که توسط کارساز SFTP پشتیبانی نشده است." + +#~ msgid "Error code: %1" +#~ msgstr "کد خطا: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "هم زمان، نمی‌توان یک زیرسیستم و فرمان مشخص کرد." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "برای اجرای ssh، گزینه‌ای فراهم نشده است." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "خرابی در اجرای فرآیند ssh." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "هنگام صحبت با ssh با خطا مواجه شد." + +#~ msgid "Please supply a password." +#~ msgstr "لطفاً، یک اسم رمز فراهم کنید." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "لطفاً، برای کلید خصوصی SSH خود، عبارت عبور را فراهم کنید." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "خرابی در احراز هویت %1" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "هویت میزبان دور »%1« را نتوانست وارسی کند، زیرا کلید میزبان در پرونده " +#~ "»میزبانهای شناخته‌شده« نیست." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " کلید میزبان را به طور دستی به پرونده »میزبانهای شناخته‌شده « اضافه کنید، " +#~ "یا با سرپرست خود تماس بگیرید." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " کلید میزبان را به طور دستی به %1 اضافه کنید، یا با سرپرست خود تماس " +#~ "بگیرید." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "هویت میزبان دور »%1« را نمی‌توان وارسی کرد. اثر انگشت کلید میزبان عبارت " +#~ "است از:\n" +#~ "%2\n" +#~ "باید قبل از اتصال، اثر انگشت را توسط سرپرست میزبان وارسی کنید.\n" +#~ "\n" +#~ "می‌خواهید کلید میزبان را پذیرفته و در هر صورت ادامه دهید؟" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "اخطار: هویت میزبان دور »%1« تغییر یافته است!\n" +#~ "\n" +#~ "کسی اتصال شما را شنیده، یا ممکن است سرپرست کلید میزبان را تغییر داده " +#~ "باشد. به هرحال، باید اثر انگشت کلید میزبان را توسط سرپرست وارسی کنید. اثر " +#~ "انگشت کلید عبارت است از:\n" +#~ "%2\n" +#~ "کلید میزبان صحیح را به »%3« برای خلاصی از این پیام، اضافه کنید." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "اخطار: هویت میزبان دور »%1« تغییر یافته است! \n" +#~ "\n" +#~ "کسی اتصال شما را شنیده، یا شاید سرپرست کلید میزبان را تغییر داده است. به " +#~ "هر حال، باید قبل از اتصال، اثر انگشت کلید میزبان را توسط سرپرست وارسی " +#~ "کنید. اثر انگشت کلید عبارت است از:\n" +#~ "%2\n" +#~ "\n" +#~ "می‌خواهید کلید میزبان جدید را پذیرفته و در هر صورت ادامه دهید؟" + +#~ msgid "Host key was rejected." +#~ msgstr "کلید میزبان رد شد." + +#~ msgid "Please enter a username and password" +#~ msgstr "لطفاً، یک نام کاربر و اسم رمز وارد کنید" diff --git a/po/fa/kio5_smb.po b/po/fa/kio5_smb.po new file mode 100644 index 0000000..5f5036d --- /dev/null +++ b/po/fa/kio5_smb.po @@ -0,0 +1,193 @@ +# translation of kio_smb.po to Persian +# Nazanin Kazemi , 2006, 2007. +# Tahereh Dadkhahfar , 2006. +# MaryamSadat Razavi , 2006. +# Nasim Daniarzadeh , 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2007-02-04 11:26+0330\n" +"Last-Translator: Nazanin Kazemi \n" +"Language-Team: Persian \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "لطفاً اطلاعات احراز هویت را برای %1وارد کنید" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"لطفاً، اطلاعات احراز هویت را برای:\n" +"کارساز = %1\n" +"مشترک = %2 وارد کنید" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"نوع پرونده ناشناخته، نه فهرست راهنما و نه پرونده." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"قادر به یافتن گروههای کاری در شبکه محلی شما نیست. احتمالاً این ناشی از یک " +"باروی فعال شده است." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "بدون رسانه برای دستگاه %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "نتوانست به میزبان %1 متصل شود" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "خطا هنگام اتصال به کارساز پاسخگوی %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "مشترک را نمی‌توان در کارساز داده شده یافت" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "توصیفگر پرونده BAD" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"نام داده‌شده را نمی‌توان به یک کارساز تک تفکیک کرد. مطمئن شوید شبکه شما بدون " +"هیچ ناسازگاری نام، بین نامهای استفاده‌شده توسط دقت نام یونیکس و ویندوز، برپا " +"می‌شود." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient خطایی را گزارش کرد، ولی مشخص نکرد مشکل چیست. این احتمالاً مسئله " +"کارساز با شبکه شما را نشان می‌دهد - اما ممکن است مسئله مربوط به libsmbclient " +"را هم نشان دهد.\n" +"اگر می‌خواهید به ما کمک کنید، لطفاً هنگامی که در حال مرور هستید، یک tcpdump از " +"واسط شبکه تهیه کنید )آگاه باشید که این ممکن است شامل داده‌های خصوصی باشد، " +"بنابراین اگر مطمئن نیستید آن را پست نکنید - می‌توانید آن را به طور خصوصی به " +"توسعه‌دهندگان، در صورتی که آن را درخواست کنند بفرستید( " + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "شرایط خطای ناشناخته در وضعیت: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient برای ایجاد متن خراب شد" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"مطمئن شوید که بسته samba روی سیستم شما نصب شده باشد." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"خرابی در سوار کردن مشترک »%1« از میزبان »%2« توسط کاربر »%3«.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"خرابی در پیاده کردن نقطه سوار »%1«.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient برای مقداردهی اولیه متن خراب شد" + +#~ msgid "File does not exist: %1" +#~ msgstr "پرونده موجود نیست: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "libsmbclient برای مقداردهی اولیه خراب شد" diff --git a/po/fa/kio5_thumbnail.po b/po/fa/kio5_thumbnail.po new file mode 100644 index 0000000..14da635 --- /dev/null +++ b/po/fa/kio5_thumbnail.po @@ -0,0 +1,87 @@ +# translation of kio_thumbnail.po to Persian +# Nazanin Kazemi , 2006, 2007. +# MaryamSadat Razavi , 2006. +# Tahereh Dadkhahfar , 2006. +# Nasim Daniarzadeh , 2006. +# Mohamad Reza Mirdamadi , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-10-03 00:19+0330\n" +"Last-Translator: Mohamad Reza Mirdamadi \n" +"Language-Team: Farsi (Persian) <>\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "تصویر را به صورت خودکار بچرخان" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "نوع مایمی مشخص نشده است." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "اندازه مشخص نشده یا معتبر نیست." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "ریزنقش را برای پوشه نمیتوان ایجاد کرد" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "وصله‌ای مشخص نشد." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 را نمی‌توان بارگذاری کرد." + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "ریزنقش را برای %1 نمی‌توان ایجاد کرد." + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "خرابی در ایجاد یک ریزنقش." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "نتوانست تصویر را بنویسد." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "خرابی در پیوست قطعه حافظه مشترک %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "تصویر برای قطعه حافظه مشترک بسیار بزرگ است" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "محمدرضا میردامادی , نازنین کاظمی" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mohi@linuxshop.ir , kazemi@itland.ir" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/fi/kfileaudiopreview5.po b/po/fi/kfileaudiopreview5.po new file mode 100644 index 0000000..d3414d1 --- /dev/null +++ b/po/fi/kfileaudiopreview5.po @@ -0,0 +1,44 @@ +# translation of kfileaudiopreview4.po to Finnish +# Copyright (C) 2010 Free Software Foundation, Inc. +# Kim Enkovaara , 2010. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2010-02-02 21:37+0200\n" +"Last-Translator: Kim Enkovaara \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:24:23+0000\n" +"X-Generator: MediaWiki 1.21alpha (963ddae); Translate 2012-11-08\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Soita automaattisesti" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "aloita soitto" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "keskeytä soitto" + +#~ msgid "stop playback" +#~ msgstr "lopeta soitto" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "silmukka: aloittaa soiton uudelleen" + +#~ msgid "Media Player" +#~ msgstr "Mediasoitin" diff --git a/po/fi/kio5_activities.po b/po/fi/kio5_activities.po new file mode 100644 index 0000000..215d381 --- /dev/null +++ b/po/fi/kio5_activities.po @@ -0,0 +1,254 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Lasse Liehu , 2012, 2014, 2015. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-12-27 17:19+0200\n" +"Last-Translator: Lasse Liehu \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 2.0\n" +"X-POT-Import-Date: 2012-12-01 22:24:16+0000\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktiviteetit" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Ladataan…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktiviteettienhallinta ei ole käynnissä" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Liitä nykyiseen aktiviteettiin" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Poista nykyisestä aktiviteetista" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Liitä aktiviteettiin:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Poista aktiviteetistä:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktiviteetti" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Nykyinen aktiviteetti" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Lasse Liehu" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "lasse.liehu@gmail.com" + +#~ msgid "Default" +#~ msgstr "Oletus" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Vaihda aktiviteettiin %1" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Aktiviteetti" + +#~ msgid "Delete activity" +#~ msgstr "Poista aktiviteetti" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Haluatko varmasti poistaa aktiviteetin ”%1”?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Virhe ladattaessa QML-tiedostoja. Tarkista asennuksesi.\n" +#~ "%1 puuttuu" + +#~ msgid "Create a new activity" +#~ msgstr "Luo uusi aktiviteetti" + +#~ msgid "Activity settings" +#~ msgstr "Aktiviteetin asetukset" + +#~ msgid "General" +#~ msgstr "Yleistä" + +#~ msgid "Other" +#~ msgstr "Muuta" + +#~ msgid "Create" +#~ msgstr "Luo" + +#~ msgid "Apply" +#~ msgstr "Käytä" + +#~ msgid "Cancel" +#~ msgstr "Peru" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Pikanäppäin tähän aktiviteettiin vaihtamiseen:" + +#~ msgid "Activity information" +#~ msgstr "Aktiviteetin tiedot" + +#~ msgid "Name" +#~ msgstr "Nimi" + +#~ msgid "Description" +#~ msgstr "Kuvaus" + +#~ msgid "Wallpaper" +#~ msgstr "Tausta" + +#~ msgid "Change..." +#~ msgstr "Vaihda…" + +#~ msgid "Icon" +#~ msgstr "Kuvake" + +#~ msgid "Switching" +#~ msgstr "Vaihto" + +#~ msgid "Privacy" +#~ msgstr "Yksityisyys" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "ikuisesti" + +#~ msgid "Forget the last hour" +#~ msgstr "Unohda viime tunti" + +#~ msgid "Forget the last two hours" +#~ msgstr "Unohda viime kaksi tuntia" + +#~ msgid "Forget a day" +#~ msgstr "Unohda viime päivä" + +#~ msgid "Forget everything" +#~ msgstr "Unohda kaikki" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " kuukausi" +#~ msgstr[1] " kuukautta" + +# Suomennettu yhdeksi välilyönniksi, koska etuliitettä ei tarvita. Esimerkiksi ”Säilytä historia 5 kuukautta” +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr " " + +#~ msgid "Create activity..." +#~ msgstr "Luo aktiviteetti…" + +#~ msgid "Activity switching" +#~ msgstr "Aktiviteettien vaihto" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Selaa aktiviteetteja" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Selaa aktiviteetteja (käänteisessä järjestyksessä)" + +#~ msgid "Form" +#~ msgstr "Lomake" + +#~ msgid "Remember opened documents:" +#~ msgstr "Muista avatut tiedostot:" + +#~ msgid "For a&ll applications" +#~ msgstr "&Kaikkien sovellusten tiedostot" + +#~ msgid "&Do not remember" +#~ msgstr "&Älä muista tiedostoja" + +#~ msgid "O&nly for specific applications" +#~ msgstr "&Vain valittujen sovellusten tiedostot" + +#~ msgid "Keep history" +#~ msgstr "Säilytä historiaa" + +#~ msgid "Clear recent history" +#~ msgstr "Tyhjennä viimeaikainen historia" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Estä kaikki tässä mainitsemattomat sovellukset" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Muista nykyinen virtuaalityöpöytä kullekin aktiviteetille (tarvitsee " +#~ "uudelleenkäynnistyksen)" + +#~ msgid "Shortcuts" +#~ msgstr "Pikanäppäimet" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Yksityinen – älä seuraa tämän aktiviteetin käyttöä" + +#~ msgid "Delete" +#~ msgstr "Poista" + +#~ msgid "Activity name" +#~ msgstr "Aktiviteetin nimi" + +#~ msgid "Available Features" +#~ msgstr "Käytettävissä olevat ominaisuudet" + +#~ msgid "Plugins" +#~ msgstr "Liitännäiset" + +#~ msgid "Enable activities management" +#~ msgstr "Käytä aktiviteettienhallintaa" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Aktiviteettienhallinta ei ole toiminnassa." + +#~ msgid "Activities..." +#~ msgstr "Aktiviteetit…" + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "© 2012 Ivan Cukic" + +#~ msgctxt "Header title for resource data model" +#~ msgid "Resource" +#~ msgstr "Resurssi" diff --git a/po/fi/kio5_archive.po b/po/fi/kio5_archive.po new file mode 100644 index 0000000..a6786b5 --- /dev/null +++ b/po/fi/kio5_archive.po @@ -0,0 +1,38 @@ +# translation of kio_tar.po to finnish +# Ilpo Kantonen , 2005. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-10-17 16:32+0300\n" +"Last-Translator: Ilpo Kantonen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:13+0000\n" +"X-Generator: MediaWiki 1.21alpha (963ddae); Translate 2012-11-08\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Ei voitu avata tiedostoa, ehkä tukemattoman tiedostotyypin takia.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Pakettitiedostoa ei voitu avata, ehkä tukemattoman muodon takia.\n" +"%1" diff --git a/po/fi/kio5_bookmarks.po b/po/fi/kio5_bookmarks.po new file mode 100644 index 0000000..5d88a73 --- /dev/null +++ b/po/fi/kio5_bookmarks.po @@ -0,0 +1,81 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Teemu Rytilahti , 2008. +# Tommi Nieminen , 2010. +# Lasse Liehu , 2014. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2010-01-13 18:58+0200\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:13+0000\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Juuri" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Sijainnit" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Virheellinen pyyntö : %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Kirjanmerkkejä ei ole saatavilla." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "CSS-tiedostoa ei löytynyt. Tarkista asennus." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Kirjanmerkit" + +#~ msgid "My bookmarks" +#~ msgstr "Kirjanmerkit" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Alkuperäinen kehittäjä" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Teemu Rytilahti" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "teemu.rytilahti@d5k.net" diff --git a/po/fi/kio5_fish.po b/po/fi/kio5_fish.po new file mode 100644 index 0000000..a0a5762 --- /dev/null +++ b/po/fi/kio5_fish.po @@ -0,0 +1,57 @@ +# Translation of kio_fish.po into Finnish +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +# Mikko Ikola , 2003. +# Teemu Rytilahti , 2003. +# Tapio Kautto , 2004. +# Tommi Nieminen , 2010, 2012. +# Lasse Liehu , 2013. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-12-22 13:56+0200\n" +"Last-Translator: Lasse Liehu \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:13+0000\n" +"X-Generator: Lokalize 1.5\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Yhdistetään…" + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Alustetaan yhteyskäytäntöä…" + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Paikallinen kirjautuminen" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-tunnistautuminen" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Yhteys katkaistiin." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Tommi Nieminen" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "translator@legisign.org" diff --git a/po/fi/kio5_info.po b/po/fi/kio5_info.po new file mode 100644 index 0000000..af31d10 --- /dev/null +++ b/po/fi/kio5_info.po @@ -0,0 +1,31 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Tommi Nieminen , 2009. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-12-29 17:49+0200\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:13+0000\n" +"X-Generator: MediaWiki 1.21alpha (963ddae); Translate 2012-11-08\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Palvelun ajamiseen vaadittavaa tiedostoa %1 ei löytynyt. Tarkista " +"ohjelmiston asennus." diff --git a/po/fi/kio5_man.po b/po/fi/kio5_man.po new file mode 100644 index 0000000..aa431ee --- /dev/null +++ b/po/fi/kio5_man.po @@ -0,0 +1,238 @@ +# translation of kio_man.po to Finnish +# KDE Finnish translation sprint participants: +# Author: Lliehu +# Kim Enkovaara , 2002, 2003, 2006. +# Teemu Rytilahti , 2003, 2008. +# Ilpo Kantonen , 2005. +# Teemu Rytilahti , 2008. +# Lasse Liehu , 2011, 2012, 2013. +# Tommi Nieminen , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-07-29 16:41+0200\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:13+0000\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Man-sivua %1 ei löydy.

        Tarkista, ettet ole kirjoittanut väärin " +"haluamasi sivun nimeä.
        Ole tarkka pien- ja suuraakkosten kanssa.
        Jos kaikki näyttää olevan oikein, sinun tulee ehkä asettaa parempi " +"etsintäpolku manuaalisivuille. Se on joko ympäristömuuttujassa MANPATH tai " +"täsmäävässä tiedostossa kansiossa /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "The specified man page referenced another page '%1',
        but the " +#| "referenced page '%2' could not be found." +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Pyydetty man-sivu viittaan toiseen sivuun ”%1”
        mutta viitattua sivua " +"”%2” ei löydy." + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Tapahtui virhe näyttäessä man-sivua

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Löytyi useita sopivia man-sivuja." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Huom! Jos luet man-sivua omalla kielelläsi, huomaa, että se voi sisältää " +"virheitä tai olla vanhentunut. Jos olet epävarma, vilkaise englanninkielistä " +"sivua." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Otsikkotiedostot" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Otsikkotiedostot (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Käyttäjän komennot" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Käyttäjän komennot (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Järjestelmäkutsut" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Aliohjelmat" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-moduulit" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Verkkofunktiot" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Laitteet" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Tiedostomuodot" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Pelit" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Sekalaiset" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Järjestelmän ylläpito" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Ydin" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Paikallinen dokumentaatio" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Uusi" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX-manuaalihakemisto" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Osio %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Sisällysluettelo osiolle %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX-manuaalihakemisto" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Luodaan hakemistoa" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Ohjelmaa sgml2roff ei löytynyt järjestelmästäsi. Asenna se, jos se on " +"tarpeen, ja lisää se hakupolkuun laajentamalla PATH ympäristömuuttujaa, " +"ennen KDE:n käynnistystä." + +#~ msgid "Open of %1 failed." +#~ msgstr "Osoitteen %1 avaaminen epäonnistui." + +#~ msgid "Man output" +#~ msgstr "Man-tuloste" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Kim Enkovaara, Ilpo Kantonen, Tommi Nieminen" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kim.enkovaara@iki.fi, ilpo@iki.fi, translator@legisign.org" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/fi/kio5_mtp.po b/po/fi/kio5_mtp.po new file mode 100644 index 0000000..c126e69 --- /dev/null +++ b/po/fi/kio5_mtp.po @@ -0,0 +1,39 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Tommi Nieminen , 2012, 2016, 2018, 2019. +# Lasse Liehu , 2014. +# +# KDE Finnish translation sprint participants: +# Author: Lliehu +msgid "" +msgstr "" +"Project-Id-Version: kio_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-05-16 23:16+0200\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 2.0\n" +"X-POT-Import-Date: 2012-12-01 22:26:31+0000\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Tallennusvälineitä ei löytynyt. Varmista, ettei laitetta ole lukittu ja että " +"MTP on käytössä sen USB-yhteysasetuksissa." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Tiedostoja ei voi kopioida/siirtää laitteeseen itseensä" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "Asemia ei löytynyt. Sinun tarvitsee ehkä avata laitteen lukitus." diff --git a/po/fi/kio5_network.po b/po/fi/kio5_network.po new file mode 100644 index 0000000..558e7c6 --- /dev/null +++ b/po/fi/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# Tommi Nieminen , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-01-02 19:34+0200\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 18.12.3\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Verkko" diff --git a/po/fi/kio5_nfs.po b/po/fi/kio5_nfs.po new file mode 100644 index 0000000..a766bf4 --- /dev/null +++ b/po/fi/kio5_nfs.po @@ -0,0 +1,70 @@ +# translation of kio_nfs.po to +# translation of kio_nfs.po to Finnish +# Copyright (C) 2004 Free Software Foundation, Inc. +# Tapio Kautto , 2004. +# Lasse Liehu , 2014. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-18 02:39+0300\n" +"Last-Translator: Lasse Liehu \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:13+0000\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: NFS-versiota ei tueta" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC-virhe %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Kiintolevytila on täynnä." + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Tiedostojärjestelmää voidaan vain lukea." + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Liian pitkä tiedostonimi" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Sallittu levytila on täynnä." + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS-virhe %1 – %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Kansioiden %1 liittäminen epäonnistui" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Tuntematon kohde" + +#~ msgid "An RPC error occurred." +#~ msgstr "Tapahtui RPC-virhe." diff --git a/po/fi/kio5_recentdocuments.po b/po/fi/kio5_recentdocuments.po new file mode 100644 index 0000000..4a7e851 --- /dev/null +++ b/po/fi/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# KDE Finnish translation sprint participants: +# Author: Artnay +# Lasse Liehu , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-03-31 04:30+0300\n" +"Last-Translator: Lasse Liehu \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-POT-Import-Date: 2012-12-01 22:22:13+0000\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Viimeisimmät tiedostot" diff --git a/po/fi/kio5_sftp.po b/po/fi/kio5_sftp.po new file mode 100644 index 0000000..689f564 --- /dev/null +++ b/po/fi/kio5_sftp.po @@ -0,0 +1,460 @@ +# Finnish messages for kio_sftp. +# Copyright © 2002, 2003, 2004, 2005, 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the kdebase package. +# Kim Enkovaara , 2002, 2003. +# Teemu Rytilahti , 2003, 2008. +# Tapio Kautto , 2004. +# Ilpo Kantonen , 2005. +# Teemu Rytilahti , 2008. +# Tommi Nieminen , 2010, 2011, 2018. +# Jorma Karvonen , 2011. +# Lasse Liehu , 2012, 2013, 2014. +# Copyright © 2011 This_file_is_part_of_KDE +# +# KDE Finnish translation sprint participants: +# Author: Artnay +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-11-28 19:01+0200\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:14+0000\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Virheellinen salasana" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Ei voitu varata callback-funktioita" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Lokin tarkkuutta ei voitu asettaa." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Lokin userdata-arvoa ei voitu asettaa." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Lokin callback-funktiota ei voitu asettaa." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-kirjautuminen" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Vastaa kysymykseen käyttäjätunnuskentän arvolla." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Anna salasanasi." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Palvelin:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "SSH-istuntoa ei voitu luoda." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Aikakatkaisua ei voitu asettaa." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Naglen algoritmia ei voitu poistaa käytöstä." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Pakkausta ei voitu asettaa." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Palvelinta ei voitu asettaa." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Porttia ei voitu asettaa." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Käyttäjätunnusta ei voitu asettaa." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Asetustiedostoa ei voitu jäsentää." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Avataan SFTP-yhteyttä palvelimeen %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Palvelimen julkisen avaimen tyyppinimeä ei saatu" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Tiivistettä ei voitu luoda palvelimen julkisesta avaimesta" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Palvelimen julkisen avaimen sormenjäljen luominen epäonnistui" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Palvelimen %1-palvelinavainta ei löytynyt, mutta muun tyyppinen avain " +"löytyi.\n" +"Hyökkääjä voi muuttaa palvelimen oletusavainta saadakseen asiakasohjelman " +"luulemaan, ettei avainta ole.\n" +"Ota yhteyttä järjestelmän ylläpitäjään.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Palvelimen %1 palvelinavain on muuttunut.\n" +"Tämä voi merkitä DNS-spoofing-yritystä tai että palvelimen IP-osoite ja " +"palvelinavain ovat muuttuneet yhtä aikaa.\n" +"Etäpalvelimen lähettämän %2-avaimen sormenjälki on:\n" +" SHA256:%3\n" +"Ota yhteys järjestelmän ylläpitäjään.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Varoitus: Ei voitu varmistaa palvelimen identiteettiä." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Palvelimen %1 oikeellisuutta ei voitu vahvistaa.\n" +"%2-avaimen sormenjälki on: %3\n" +"Haluatko varmasti jatkaa yhteydenottoa?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Tunnistus epäonnistui." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Tunnistus epäonnistui. Palvelin ei lähettänyt yhtään tunnistautumistapaa" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Anna käyttäjätunnuksesi ja salasanasi." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Virheellinen käyttäjätunnus tai salasana" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP-alijärjestelmään ei saatu yhteyttä. Varmista, että SFTP on käytössä " +"palvelimessa." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP-istuntoa ei voitu alustaa." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Onnistunut yhteys palvelimelle %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Palvelimen palvelinavainta ei löytynyt, mutta muun tyyppinen avain löytyi.\n" +"Hyökkääjä voi muuttaa palvelimen oletusavainta saadakseen asiakasohjelman " +"luulemaan, ettei avainta ole.\n" +"Ota yhteyttä järjestelmän ylläpitäjään.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Palvelimen %1 palvelinavain on muuttunut.\n" +"Tämä voi joko tarkoittaa DNS-spoofing-yritystä tai että palvelimen IP-osoite " +"ja palvelinavain ovat muuttuneet yhtä aikaa.\n" +"Etäpalvelimen lähettämän avaimen sormenjälki on:\n" +" %2\n" +"Ota yhteys järjestelmän ylläpitöhööb.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Palvelimen %1 oikeellisuutta ei voitu vahvistaa.\n" +"Avaimen sormenjälki on: %2\n" +"Haluatko varmasti jatkaa yhteydenottoa?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Virheellinen sftp-konteksti" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ei voitu muuttaa oikeuksia kohteelle\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Linkkiä ei voitu lukea: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Palvelimen nimeä ei annettu." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Tapahtui sisäinen virhe. Tee palvelupyyntö uudelleen." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Anna käyttäjätunnuksesi ja avaimen salasana." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Varoitus: Palvelimen identiteetti on muuttunut!" + +#~ msgid "Connection failed." +#~ msgstr "Yhteys epäonnistui." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Etäpalvelin sulki yhteyden." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "odottamaton SFTP-virhe: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP versio %1" + +#~ msgid "Protocol error." +#~ msgstr "Protokollavirhe." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Tapahtui sisäinen virhe. Yritä uudelleen." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Tapahtui tuntematon virhe kopioinnissa tiedostoon '%1'. Yritä uudelleen." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Etäpalvelin ei tue tiedostojen uudelleennimeämistä." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Etäpalvelin ei tue symboolisten linkkien tekemistä." + +#~ msgid "Connection closed" +#~ msgstr "Yhteys suljettiin" + +#~ msgid "End of file." +#~ msgstr "Tiedoston loppu." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP komento epäonnistui tuntemattoman syyn johdosta" + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "SFTP palvelin vastaanotti huonon viestin." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "SFTP palvelin ei tue yrittämääsi toimenpidettä." + +#~ msgid "Error code: %1" +#~ msgstr "Virhekoodi: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Ei voitu määritellä alijärjestelmää ja komentoa samalla." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "ssh:n suorittamiseen ei annettu optioita." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "ssh prosessin suorittaminen epäonnistui." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "ssh prosessille keskustelussa tapahtui virhe." + +#~ msgid "Please supply a password." +#~ msgstr "Anna salasana." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Anna salasana yksityiselle SSH avaimellesi." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Tunnistus palvelimelle %1 epäonnistui" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Etäpalvelimen '%1' identiteettiä ei voitu tarkistaa, koska sen avain ei " +#~ "ole \"known hosts\"-tiedostossa." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Käsin, lisää palvelimen avain \"known hosts\"-tiedostoon tai ota " +#~ "yhteyttä ylläpitoon." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Käsin, lisää palvelimen avain tiedostoon %1 tai ota yhteyttä ylläpitoon." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Palvelimen '%1' identiteettiä ei voitu varmistaa. Palvelimen " +#~ "tunnistetiedot ovat seuraavat:\n" +#~ "%2\n" +#~ "Sinun tulee varmistaa tunnistetiedot palvelimen ylläpidolta ennen " +#~ "yhteydenottoa.\n" +#~ "\n" +#~ "Haluatko hyväksyä palvelimen tunnistetiedot ja avata yhteyden? " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "VAROITUS: Palvelimen '%1' tunnistetiedot ovat muuttuneet!\n" +#~ "\n" +#~ "Joku voi salakuunnella yhteyttäsi, tai ylläpito on vaihtanut palvelimen " +#~ "avaimia. Molemmissa tapauksissa sinun tulee varmistaa palvelimen " +#~ "tunnistetiedot palvelimen ylläpitäjältä. Avaimen tunnistetiedot ovat:\n" +#~ "%2\n" +#~ "Lisää oikeat tunnistetiedot tiedostoon \"%3\" ohittaaksesi tämän viestin." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "VAROITUS: Palvelimen '%1' tunnistetiedot ovat muuttuneet!\n" +#~ "\n" +#~ "Joku voi salakuunnella yhteyttäsi, tai ylläpito on vaihtanut palvelimen " +#~ "avaimia. Molemmissa tapauksissa sinun tulee varmistaa palvelimen " +#~ "tunnistetiedot palvelimen ylläpitäjältä ennen yhteyttä. Avaimen " +#~ "tunnistetiedot ovat:\n" +#~ "%2\n" +#~ "Haluatko hyväksyä uudet tunnistetiedot ja avata yhteyden?" + +#~ msgid "Host key was rejected." +#~ msgstr "Palvelimen avain hylättiin." + +#~ msgid "Please enter a username and password" +#~ msgstr "Anna käyttäjätunnus ja salasana" + +#~ msgid "File does not exist." +#~ msgstr "Tiedostoa ei ole olemassa." + +#~ msgid "Access is denied." +#~ msgstr "Pääsy estetty." diff --git a/po/fi/kio5_smb.po b/po/fi/kio5_smb.po new file mode 100644 index 0000000..ecc2e63 --- /dev/null +++ b/po/fi/kio5_smb.po @@ -0,0 +1,194 @@ +# translation of kio_smb.po to finnish +# translation of kio_smb.po to +# translation of kio_smb.po to Finnish +# Copyright (C). +# Teemu Rytilahti , 2003. +# Tapio Kautto , 2004. +# Ilpo Kantonen , 2005. +# Tommi Nieminen , 2017, 2020. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-06-18 19:12+0300\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:14+0000\n" +"X-Generator: Lokalize 20.04.2\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Kirjoita palvelimen %1 tunnistustiedot" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Kirjoita tunnistustiedot:\n" +"Palvelin = %1\n" +"Resurssi = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tuntematon tiedostotyyppi, joko hakemisto tai tiedosto." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Lähiverkostasi ei löytynyt työryhmiä. Tämä voi johtua palomuurin asetuksista." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Laitteessa %1 ei ole mediaa" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 -palvelimelle ei voitu yhdistää" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Palvelimeen, joka on vastuussa tehtävästä %1, ei voitu yhdistää" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Jakoa ei löytynyt annetulta palvelimelta" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Virheellinen tiedostokuvaaja" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Annettua tunnusta ei voitu määrittää tietylle palvelimelle. Varmista, ettei " +"verkon määrittelyssä ole päällekkäisiä nimiä Windows- ja UNIX-nimissä." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: palvelin ei tavoitettavissa" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"SMB-kirjasto ilmoitti virheestä, mutta ei kertonut tarkempia tietoja. " +"Verkossasi saattaa olla ongelma, tai kyseessä on SMB-kirjaston virhe.\n" +"Jos haluat auttaa meitä, lähetä verkkolaitteen tcpdump-tuloste kun yrität " +"selata verkkoa. (Huomaa, että tcpdump-tuloste saattaa sisältää " +"henkilökohtaisia tietoja. Voit lähettää tiedot suoraan sovelluskehittäjälle, " +"jos niitä tarvitaan)." + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Tuntematon virhetila: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Sattui virhe yritettäessä käyttää kohdetta: %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Kirjaston libsmbclient asiayhteyden luonti epäonnistui" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Varmista, että samba-paketti on asennettuna oikein." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Jaon \"%1\" palvelimella \"%2\" ja käyttäjätunnuksella \"%3\" epäonnistui.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Liitospisteen \"%1\" irrottaminen epäonnistui.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Tuntematon laite @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "Kirjaston libsmbclient asiayhteyden alustaminen epäonnistui" + +#~ msgid "File does not exist: %1" +#~ msgstr "Tiedostoa %1 ei ole olemassa." + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "Kirjaston libsmbclient alustaminen epäonnistui" diff --git a/po/fi/kio5_thumbnail.po b/po/fi/kio5_thumbnail.po new file mode 100644 index 0000000..794986f --- /dev/null +++ b/po/fi/kio5_thumbnail.po @@ -0,0 +1,91 @@ +# translation of kio_thumbnail.po to Finnish +# +# Ilpo Kantonen , 2005. +# Teemu Rytilahti , 2008. +# Tommi Nieminen , 2010. +# Lasse Liehu , 2011. +# KDE Finnish translation sprint participants: +# Author: Artnay +# Author: Lliehu +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-01-20 20:02:32+0000\n" +"Last-Translator: Lasse Liehu \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:14+0000\n" +"X-Generator: MediaWiki 1.21alpha (963ddae); Translate 2012-11-08\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Kierrä kuva automaattisesti" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "MIME-tyyppiä ei ole määritelty." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Kokoa ei ole määritelty tai se on määritelty virheellisesti." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kansiolle ei voitu luoda pienoiskuvaa" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Liitännäistä ei ole määritelty." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ei voitu ladata ThumbCreatoria-liitännäistä %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ei voida luoda pienoiskuvaa kohteelle %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Pienoiskuvakkeen luonti epäonnistui." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Ei voida tallentaa kuvaa." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Jaetun muistin segmenttiä %1 ei voitu liittää" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Kuva on liian iso jaetun muistin segmentille" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Ilpo Kantonen" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "ilpo@iki.fi" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/fr/docs/kioslave5/bookmarks/index.docbook b/po/fr/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..58a1072 --- /dev/null +++ b/po/fr/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,47 @@ + + + +]> + +
        +signets + + +XavierVello xavier.vello@gmail.com +&traducteurLudovicGrossard; + + +31/08/2008 +0.2 + + + +Ce module d'entrée / sortie (KIO) affiche vos signets comme une page &HTML; à la fois agréable et fonctionnelle. Vous pouvez y accéder en saisissant bookmarks:/ dans la barre d'emplacement de &konqueror;. + +Le contenu et la mise en page de la page est configurable. Saisissez simplement bookmarks:/config pour lancer la boîte de dialogue de configuration. + +
        + diff --git a/po/fr/docs/kioslave5/bzip2/index.docbook b/po/fr/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..7500195 --- /dev/null +++ b/po/fr/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,50 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +&traducteurEquipeKDE; + + + +bzip2 est un programme de compression. + +Le module d'entrée-sortie bzip2 n'est pas directement utilisable, et est conçu pour être utilisé comme filtre. Par exemple, le module d'entrée-sortie tar peut filtrer un fichier avec le module d'entrée-sortie bzip2, de façon à afficher le contenu d'un fichier tar.bz2 directement dans une fenêtre &konqueror;. + +Si vous cliquez sur un fichier compressé avec l'extension bz2 dans &konqueror;, ce module d'entrée / sortie est utilisé pour le décompresser et l'afficher comme un fichier normal (non compressé). + +Si vous êtes développeur, et voulez utiliser le filtre bzip2, vous pouvez trouver de la documentation sur l'utilisation des modules d'entrée-sortie à http://techbase.kde.org + +Voir le manuel de bzip2. + +bzip est l'ancêtre de bzip2. Il est rarement utilisé aujourd'hui, étant remplacé par bzip2 qui offre une bien meilleure compression. + +
        diff --git a/po/fr/docs/kioslave5/fish/index.docbook b/po/fr/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..1182f94 --- /dev/null +++ b/po/fr/docs/kioslave5/fish/index.docbook @@ -0,0 +1,149 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +&traducteurEquipeKDE; + + +27/10/2010 +&kde; 4.5 + + + +Vous permet d'accéder à des fichiers présents sur d'autres ordinateurs en utilisant un protocole de shell sécurisé (SSH). Un démon SSH doit fonctionner sur l'ordinateur distant, mais le reste du protocole utilise des outils en ligne de commande standards, comme vous pouvez le voir ci-dessous. + +Utiliser le protocole « fish » comme ceci : fish://nommachine ou fish://utilisateur@nommachine. + +Vous devez utiliser le double slash. + +Vous pouvez ommettre le nom d'utilisateur (et le symbole suivant @) si le nom de l'utilisateur est le même sur les deux ordinateurs. + +Vous pouvez ajouter un mot de passe en utilisant le format suivant : fish://utilisateur:motdepasse@nommachine, mais cela n'est pas obligatoire, puisqu'il vous sera tout de même demandé si vous ne l'insérez pas. + +Si vous exécutez le démon SSH sur un port non standard, vous pouvez spécifier ce port en utilisant une syntaxe d'&URL; normale comme ceci : fish://nommachine:numéro_de_port. + +Fish devrait fonctionner avec à peu près tout ordinateur distant POSIX compatible &UNIX;. Il utilise les commandes de la console cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed, et wc. Fish démarre /bin/sh dans une console et s'attend à ce que ce soit un Bourne shell (ou compatible, comme bash). Si les commandes sed et file sont disponibles, ainsi qu'un fichier /etc/apache/magic avec les signatures de types &MIME;, celles-ci seront utilisées pour deviner les types &MIME;. + +Si Perl est disponible sur la machine distante, il sera utilisé à la place. Ainsi, seuls env et /bin/sh sont requis. L'utilisation de Perl a également l'avantage d'être plus rapide. + +Fish devrait même fonctionner avec les machines &Windows;, si des outils comme Cygwin sont installés. Tous les utilitaires ci-dessus doivent se trouver dans le chemin (PATH) du système, et la console initiale doit être capable de traiter correctement la commande echo FISH:;/bin/sh. + +
        diff --git a/po/fr/docs/kioslave5/gzip/index.docbook b/po/fr/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..475ab06 --- /dev/null +++ b/po/fr/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,45 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +&traducteurEquipeKDE; + + + +gzip est un programme de compression + +Le module d'entrée-sortie gzip n'est pas directement utilisable, et est conçu pour être utilisé comme filtre. Par exemple, le module d'entrée-sortie tar peut filtrer un fichier avec le module d'entrée-sortie gzip, de façon à afficher le contenu d'un fichier tar.gz directement dans une fenêtre &konqueror;. + +Si vous cliquez sur un fichier compressé avec l'extension gz dans &konqueror;, ce module d'entrée-sortie est utilisé pour le décompresser et l'afficher comme un fichier normal (non compressé). + +Si vous êtes développeur, et voulez utiliser le filtre gzip, vous pouvez trouver de la documentation sur l'utilisation des modules d'entrée-sortie à http://techbase.kde.org + +Voir le manuel de gzip. + +
        diff --git a/po/fr/docs/kioslave5/info/index.docbook b/po/fr/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..7712b51 --- /dev/null +++ b/po/fr/docs/kioslave5/info/index.docbook @@ -0,0 +1,58 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +&traducteurEquipeKDE; + + + +Info est un type de documentation. Les documents sont dans un format de fichiers appelé texinfo, et peuvent être lus en ligne de commande avec le programme info. + +Le module d'entrée-sortie info vous permet de lire les pages info installées sur votre système depuis &konqueror;. Il est très simple d'emploi : + +info:gcc + +Ceci vous affiche normalement la première page de la documentation du compilateur &gcc;. + +Info est un remplacement &GNU; de la commande man, mais n'est pas trop utilisé en dehors des logiciels &GNU;. + +Vous pouvez facilement naviguer dans les pages de documentation Info installées depuis le ¢reAide;, ou bien vous pouvez utiliser le module d'entrée-sortie directement depuis à la fois &konqueror;. et la boîte de dialogue « Exécuter une commande » (NdT : obtenue par la combinaison de touches &Alt;+F2). + +
        diff --git a/po/fr/docs/kioslave5/man/index.docbook b/po/fr/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..23197a7 --- /dev/null +++ b/po/fr/docs/kioslave5/man/index.docbook @@ -0,0 +1,141 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +&traducteurEquipeKDE; + + + +L'utilisation du module d'entrée-sortie man vous permet de consulter les pages man installées sur votre système. Son utilisation est simple : + + + +man: + +Affiche les différentes sections du manuel, cliquez pour accéder au reste. + + + +man:/fopen + +Affiche la page man de fopen + + + +man:/fopen(3) + +Affiche la page man de fopen de la section 3 + + + +man:/(3) + +Voir l'index de la section 3 + + + +man:/intro(3) + +Voir l'introduction de la section 3 + + + + +S'il y a plus d'une page de man du nom que vous avez donné, vous obtiendrez une liste où vous pouvez choisir la page que vous voulez voir. + +Il y a aussi le raccourci #fopen, qui a le même effet que précédemment. + +Si vous ne trouvez pas toutes vos pages man, ajustez le fichier de configuration /etc/manpath.config (ou un fichier semblable, selon votre distribution), ou ajustez les variables d'environnement MANPATH et MANSECT. + +Comme avec tous les autres modules d'entrée-sortie de &kde;, il est possible de saisir une &URL; comme man:/socket dans toute application &kde;. Essayez dans &kwrite;, et vous verrez la page de man au format &HTML;. + +Liste de discussion pour tout contact : kde-devel@kde.org + +
        diff --git a/po/fr/docs/kioslave5/network/index.docbook b/po/fr/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..8bcf78c --- /dev/null +++ b/po/fr/docs/kioslave5/network/index.docbook @@ -0,0 +1,79 @@ + + + +]> + +
        + +Réseau + + + + Friedrich W. H.Kossebau kossebau@kde.org + &traducteurAlviseCavallari; + + + 11-12-2016 + Applications 16.12 + + + + +Le module d'entrées / sorties de réseau permet à l'utilisateur de parcourir les périphériques reliés au réseau local, et les services en cours d'exécution sur ceux-ci. En outre, il est possible de démarrer des programmes pour les services dont le type est connu. + +Pour afficher tous les périphériques détectés, veuillez saisir network:/. + +La commande network://nom_d_hote_périphérique permet d'afficher tous les services en cours d'exécution sur un périphérique. + +La sélection d'un service vous réorientera vers une URL correspondant à ce service, s'il en existe une adapté, par exemple, ssh:/nom-du-périphérique:port/ pour un service SSH. Chaque service de type connu possède un type « MIME » associé. Ainsi, un utilisateur peut lui assigner de nouveaux gestionnaires pour les URL résultantes. Cela peut être effectué depuis le module de configuration Associations de Fichiers dans le module &systemsettings;. Les types « MIME » des services sont actuellement tous nommés inode/vnd.kde.service.*. + + + Le module d'entrées / sorties réseau ne trouve et n'affiche pour l'instant que les périphériques et services qui se présentent eux-mêmes au biais de l'infrastructure de découverte de service DNS-SD. + + +
        + diff --git a/po/fr/docs/kioslave5/nfs/index.docbook b/po/fr/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..33d097b --- /dev/null +++ b/po/fr/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +&traducteurEquipeKDE; + + +Le protocole NFS de Sun fournit un accès distant transparent à des systèmes de fichiers partagés sur le réseau. Le protocole NFS est conçu pour être indépendant de la machine, du système d'exploitation, de l'architecture du réseau et du protocole. Cette indépendance est atteinte grâce à l'utilisation de primitives RPC (Remote Procedure Call) construites sur une représentation externe des données (eXternal Data Representation ou XDR). + +Le protocole gérant le montage exécute les fonctions spécifiques au système d'exploitation qui permettent aux clients d'attacher des arborescences de dossiers dans leur système de fichiers local. Le processus de montage permet également au serveur d'accorder des droits d'accès distants à un nombre restreint de clients via le contrôle d'exportation. + +Le gestionnaire de verrouillage fournit la gestion du verrouillage de fichiers lorsqu'ils sont utilisés dans un environnement NFS. Le protocole du gestionnaire de verrouillage réseau (NLM) isole ce qui fait intervenir des états lors du verrouillage de fichier dans un protocole à part. + +Source : http://www.networksorcery.com/enp/protocol/nfs.htm + +Consultez le manuel de nfs. +
        diff --git a/po/fr/docs/kioslave5/sftp/index.docbook b/po/fr/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..2cfb8d0 --- /dev/null +++ b/po/fr/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,35 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +&traducteurEquipeKDE; + + +SFTP signifie Secure file transfer et est un protocole de transfert de fichiers sécurisé. sftp est un programme interactif de transfert de fichiers similaire à ftp, mais il réalise toutes les opérations par un transport chiffré par ssh. Il peut utiliser plusieurs caractéristiques de ssh, comme l'authentification par clé publique ou la compression. + +Voir le manuel : sftp. + +
        diff --git a/po/fr/docs/kioslave5/tar/index.docbook b/po/fr/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..25588c8 --- /dev/null +++ b/po/fr/docs/kioslave5/tar/index.docbook @@ -0,0 +1,27 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +&traducteurEquipeKDE; + + +Un programme d'archivage conçu pour stocker des fichiers dans des fichiers d'archive connus sous le nom de fichiers tar, et pour extraire les fichiers desdits fichiers archive. Un fichier tar peut être stocké sur une bande magnétique, mais il est toutefois courant d'écrire les fichiers tar comme des fichiers normaux. + +Consultez le manuel : tar. + +
        diff --git a/po/fr/docs/kioslave5/thumbnail/index.docbook b/po/fr/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..f031589 --- /dev/null +++ b/po/fr/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,43 @@ + + + +]> + +
        +vignettes + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +&traducteurEquipeKDE; + +11-12-2016 +Applications 16.12 + +Le module d'entrées-sorties de vignettes est utilisé par &kde; au niveau de la transparence réseau et de la génération persistante des vignettes. + +Le module « kioslave » utilise des modules externes pour générer les vignettes courantes. Vous pouvez activer l'affichage de ces vignettes depuis le sous-menu Affichage Aperçu, accessible dans &dolphin; ou &konqueror; en mode gestionnaire de fichiers. + +Ce module n'est pas directement utile à l'utilisateur, mais si vous êtes développeur, vous pouvez l'utiliser dans votre application pour créer des vignettes de fichiers. + +Veuillez consulter la documentation dans les sources pour plus d'informations. Vous les trouverez dans la vignette du dossier source aperçu. + +
        diff --git a/po/fr/docs/kioslave5/xz/index.docbook b/po/fr/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..e3f44c4 --- /dev/null +++ b/po/fr/docs/kioslave5/xz/index.docbook @@ -0,0 +1,51 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +&traducteurLudovicGrossard; + + + +Xz est un programme de compression + +Le module d'entrée / sortie xz n'est pas utilisable directement, mais est conçu pour être utilisé comme un filtre. Par exemple, le module d'entrée /  sortie tar peut filtrer un fichier à travers le module xz afin d'afficher le contenu d'un fichier tar.lzma ou tar.xz directement dans la fenêtre de &konqueror;. + +Si vous cliquez sur un fichier compressé avec .lzma ou tar.xz dans &konqueror;, ce module sera utilisé pour le décompresser et l'afficher comme s'il s'agissait d'un fichier normal (non compressé). + +Si vous êtes développeur et souhaitez utilsier le filtre xz, vous pouvez trouver de la documentation sur l'utilisation des modules d'entrée / sortie à http://techbase.kde.org + +Consultez le manuel de xz. + +
        diff --git a/po/fr/kfileaudiopreview5.po b/po/fr/kfileaudiopreview5.po new file mode 100644 index 0000000..e2067c5 --- /dev/null +++ b/po/fr/kfileaudiopreview5.po @@ -0,0 +1,46 @@ +# translation of kfileaudiopreview4.po to Français +# translation of kfileaudiopreview4.po to +# Copyright (C) 2003, 2008 Free Software Foundation, Inc. +# +# Matthieu Robin , 2003. +# Sébastien Renard , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2008-02-25 20:14+0100\n" +"Last-Translator: Sébastien Renard \n" +"Language-Team: Français \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" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Jouer &automatiquement" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "démarrer la lecture" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "mettre en pause" + +#~ msgid "stop playback" +#~ msgstr "arrêter la lecture" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "boucle : redémarre la lecture en fin" + +#~ msgid "Media Player" +#~ msgstr "Lecteur de média" diff --git a/po/fr/kio5_activities.po b/po/fr/kio5_activities.po new file mode 100644 index 0000000..f719715 --- /dev/null +++ b/po/fr/kio5_activities.po @@ -0,0 +1,257 @@ +# translation of kcm_activities.po to Français +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Joëlle Cornavin , 2012, 2013. +# xavier , 2013, 2014. +# Maxime Corteel , 2015. +# Thomas Vergnaud , 2015, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: kcm_activities\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-01-23 11:53+0100\n" +"Last-Translator: Thomas Vergnaud \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 2.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Activités" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Chargement…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Le gestionnaire d'activités n'est pas en cours d'exécution" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Lier à l'activité en cours" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Se détacher de l'activité en cours" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Lier à:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Se déconnecter de;" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Activité" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Activité en cours" + +#, fuzzy +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Joëlle Cornavin, Thomas Vergnaud" + +#, fuzzy +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jcorn@free.fr, thomas.vergnaud@gmx.fr" + +#, fuzzy +#~ msgid "Default" +#~ msgstr "Défaut" + +#, fuzzy +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Passer à l'activité « %1 »" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Activité" + +#~ msgid "Delete activity" +#~ msgstr "Supprimer l'activité" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Souhaitez-vous vraiment supprimer « %1 » ?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Erreur pendant le chargement des fichiers QML. Vérifiez votre " +#~ "installation.\n" +#~ "Il manque %1" + +#~ msgid "Create a new activity" +#~ msgstr "Créer une nouvelle activité" + +#~ msgid "Activity settings" +#~ msgstr "Configuration de l'activité" + +#~ msgid "General" +#~ msgstr "Général" + +#~ msgid "Other" +#~ msgstr "Autre" + +#~ msgid "Create" +#~ msgstr "Créer" + +#~ msgid "Apply" +#~ msgstr "Appliquer" + +#~ msgid "Cancel" +#~ msgstr "Annuler" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Raccourcis pour basculer vers cette activité :" + +#~ msgid "Activity information" +#~ msgstr "Informations sur l'activité" + +#~ msgid "Name" +#~ msgstr "Nom" + +#~ msgid "Description" +#~ msgstr "Description" + +#~ msgid "Wallpaper" +#~ msgstr "Papier peint" + +#~ msgid "Change..." +#~ msgstr "Changer…" + +#~ msgid "Icon" +#~ msgstr "Icône" + +#~ msgid "Switching" +#~ msgstr "Basculement" + +#~ msgid "Privacy" +#~ msgstr "Respect de la vie privée" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "indéfiniment" + +#~ msgid "Forget the last hour" +#~ msgstr "Oublier la dernière heure" + +#~ msgid "Forget the last two hours" +#~ msgstr "Oublier les deux dernières heures" + +#~ msgid "Forget a day" +#~ msgstr "Oublier un jour" + +#~ msgid "Forget everything" +#~ msgstr "Oublier tout" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " mois" +#~ msgstr[1] " mois" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "pendant" + +#~ msgid "Create activity..." +#~ msgstr "Créer une activité…" + +#~ msgid "Activity switching" +#~ msgstr "Basculement d'activité" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Parcourir les activités" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Parcourir les activités (en sens inverse)" + +#~ msgid "Form" +#~ msgstr "Forme" + +#~ msgid "Remember opened documents:" +#~ msgstr "Mémoriser les documents ouverts :" + +#~ msgid "For a&ll applications" +#~ msgstr "Pour toutes les applications" + +#~ msgid "&Do not remember" +#~ msgstr "Ne pas mémoriser" + +#~ msgid "O&nly for specific applications" +#~ msgstr "Uniquement pour des applications spécifiques" + +#~ msgid "Keep history" +#~ msgstr "Conserver l'historique" + +#~ msgid "Clear recent history" +#~ msgstr "Effacer l'historique récent" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "" +#~ "Mettre en liste noire toutes les applications ne figurant pas sur cette " +#~ "liste" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Mémoriser le bureau virtuel actuel pour chaque activité (nécessite un " +#~ "redémarrage)" + +#~ msgid "Shortcuts" +#~ msgstr "Raccourcis" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity name" +#~ msgstr "Activités" + +#~ msgid "Available Features" +#~ msgstr "Fonctionnalités disponibles" + +#~ msgid "Plugins" +#~ msgstr "Modules externes" + +#~ msgid "Enable activities management" +#~ msgstr "Activer la gestion des activités" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Le gestionnaire d'activités ne tourne pas correctement." + +#~ msgid "Activities..." +#~ msgstr "Activités..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" diff --git a/po/fr/kio5_archive.po b/po/fr/kio5_archive.po new file mode 100644 index 0000000..6ef2882 --- /dev/null +++ b/po/fr/kio5_archive.po @@ -0,0 +1,43 @@ +# translation of kio_archive.po to +# translation of kio_tar.po to +# +# Nicolas Ternisien , 2005. +# aminesay , 2007. +# xavier , 2011, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-04-09 14:03+0200\n" +"Last-Translator: xavier \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Impossible d'ouvrir le fichier, probablement à cause d'un format non géré.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Le fichier d'archive n'a pu être ouvert, peut-être à cause d'un format non " +"géré.\n" +"%1" diff --git a/po/fr/kio5_bookmarks.po b/po/fr/kio5_bookmarks.po new file mode 100644 index 0000000..d764e91 --- /dev/null +++ b/po/fr/kio5_bookmarks.po @@ -0,0 +1,88 @@ +# translation of kio_bookmarks.po to Francais +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Stanislas Zeller , 2008. +# Mickael Sibelle , 2008. +# xavier , 2013. +# Vincent Pinon , 2016. +# Xavier Besnard , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-10-31 18:46+0100\n" +"Last-Translator: Xavier Besnard \n" +"Language-Team: FR\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 20.08.2\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Racine" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Emplacements" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Impossible de trouver la configuration des favoris" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Impossible de trouver l'éditeur de favoris" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Requête incorrecte : %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Il n'y a aucun signet à afficher pour le moment." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Impossible de trouver le fichier CSS « kio_bookmarks ». L'affichage ne sera " +"pas optimal.\n" +"Veuillez vérifier votre configuration." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mes signets" + +#~ msgid "My bookmarks" +#~ msgstr "Mes signets" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Développeur originel" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Stanislas Zeller" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "uncensored.assault@gmail.com" diff --git a/po/fr/kio5_fish.po b/po/fr/kio5_fish.po new file mode 100644 index 0000000..86e3702 --- /dev/null +++ b/po/fr/kio5_fish.po @@ -0,0 +1,57 @@ +# traduction de kio_fish.po en Français +# translation of kio_fish.po to +# Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc. +# Matthieu Robin , 2003, 2004. +# aminesay , 2007. +# xavier , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-04-09 14:17+0200\n" +"Last-Translator: xavier \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Connexion en cours..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Initialisation du protocole..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Connexion locale" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Authentification SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Déconnecté." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Nicolas Ternisien" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "nicolas.ternisien@gmail.com" diff --git a/po/fr/kio5_info.po b/po/fr/kio5_info.po new file mode 100644 index 0000000..b3766ab --- /dev/null +++ b/po/fr/kio5_info.po @@ -0,0 +1,32 @@ +# translation of kio_info.po to Francais +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Mickael Sibelle , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-04-08 03:15+0200\n" +"Last-Translator: Mickael Sibelle \n" +"Language-Team: Francais \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" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Impossible de trouver le fichier %1 nécessaire à l'exécution de ce service. " +"Veuillez vérifier votre installation logicielle." diff --git a/po/fr/kio5_man.po b/po/fr/kio5_man.po new file mode 100644 index 0000000..df57794 --- /dev/null +++ b/po/fr/kio5_man.po @@ -0,0 +1,231 @@ +# translation of kio_man.po to Français +# translation of kio_man.po to +# Copyright (C) 2002,2003, 2005, 2007, 2008 Free Software Foundation, Inc. +# Matthieu Robin , 2002, 2003, 2005. +# Gilles CAULIER , 2003. +# aminesay , 2007. +# Sébastien Renard , 2008. +# Amine Say , 2008. +# xavier , 2013. +# Simon Depiets , 2019. +# Xavier Besnard , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-18 12:40+0200\n" +"Last-Translator: Xavier Besnard \n" +"Language-Team: FR\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 20.08.1\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Aucune page de manuel n'a été trouvée pour %1. Veuillez vérifier que vous avez bien saisi le nom de la page que vous " +"voulez. Faites attention car les noms de pages de manuel sont sensibles à la " +"casse. Si le nom est correct, alors, vous devriez peut-être " +"étendre l'emplacement de recherche pour les pages de manuels, soit en " +"utilisant la variable d'environnement MANPATH, soit en " +"utilisant un fichier de correspondance dans le dossier /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"La page de manuel %1 a été trouvée mais ne peut être " +"lue ou parcourue." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"La page de manuel spécifiée référence une autre page %1," +" mais cette page référencée %2 est introuvable." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Erreur de l'afficheur de pages de manuel" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Il y a plus d'une page qui corresponde :" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Multiples pages de manuel" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Remarque : si vous lisez une page de manuel dans votre langue, soyez " +"conscient qu'elle peut contenir des erreurs ou être obsolète. En cas de " +"doute, vous devriez consulter la version anglaise." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Fichiers d'en-tête" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Fichiers d'en-tête (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Commandes utilisateur" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Commandes utilisateur (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Appels système" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Sous-programmes" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Modules Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Fonctionnalités réseau" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Périphériques" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formats de fichiers" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Jeux" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Divers" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administration système" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Noyau" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentation locale" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nouveau" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Index principal de pages de manuel" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Section %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index pour la section « %1 » : %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Index de pages de manuel" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Génération de l'index" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Impossible de trouver le programme sgml2roff sur votre " +"système. Veuillez l'installer, si nécessaire, et vous assurer qu'il est " +"accessible grâce à la variable d'environnement « PATH »." + +#~ msgid "Open of %1 failed." +#~ msgstr "Impossible d'ouvrir « %1 »." + +#~ msgid "Man output" +#~ msgstr "Sortie de « Man »" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Matthieu Robin, Gilles Caulier, Amine Say, Simon Depiets" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "" +#~ "kde@macolu.org, caulier.gilles@free.fr, aminesay@yahoo.fr, sdepiets@gmail." +#~ "com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/fr/kio5_mtp.po b/po/fr/kio5_mtp.po new file mode 100644 index 0000000..6a70966 --- /dev/null +++ b/po/fr/kio5_mtp.po @@ -0,0 +1,46 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Joëlle Cornavin , 2013. +# xavier , 2013. +# Yoann Laissus , 2015. +# Vincent Pinon , 2016. +# Simon Depiets , 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-03-06 07:59+0800\n" +"Last-Translator: Simon Depiets \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 19.03.70\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Aucun périphérique de stockage trouvé. Vérifiez que votre périphérique est " +"déverrouillé et qu'il prend en charge MTP dans ses paramètres de connexion " +"USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "" +"Impossible de copier / déplacer des fichiers sur le périphérique lui-même" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Aucun stockage trouvé. Peut-être avez-vous besoin de déverrouiller votre " +#~ "périphérique ?" diff --git a/po/fr/kio5_network.po b/po/fr/kio5_network.po new file mode 100644 index 0000000..f6a4d1f --- /dev/null +++ b/po/fr/kio5_network.po @@ -0,0 +1,20 @@ +# Simon Depiets , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-10 19:20+0800\n" +"Last-Translator: Simon Depiets \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 19.07.70\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Réseau" diff --git a/po/fr/kio5_nfs.po b/po/fr/kio5_nfs.po new file mode 100644 index 0000000..aa29091 --- /dev/null +++ b/po/fr/kio5_nfs.po @@ -0,0 +1,73 @@ +# translation of kio_nfs.po to Français +# translation of kio_nfs.po to Française +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +# Gilles CAULIER , 2003. +# Matthieu Robin , 2004. +# xavier , 2013. +# Vincent Pinon , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2016-11-23 14:57+0100\n" +"Last-Translator: Vincent Pinon \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 2.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Version NFS non prise en charge" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Erreur RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Aucun espace libre disponible sur le périphérique." + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Système de fichiers en lecture seule." + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Nom de fichier trop long" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Le quota sur le disque est dépassé." + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Erreur NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Impossible de monter %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Cible inconnue" + +#~ msgid "An RPC error occurred." +#~ msgstr "Un problème avec les RPC est survenu." diff --git a/po/fr/kio5_recentdocuments.po b/po/fr/kio5_recentdocuments.po new file mode 100644 index 0000000..4a1aa7f --- /dev/null +++ b/po/fr/kio5_recentdocuments.po @@ -0,0 +1,26 @@ +# translation of kio_recentdocuments.po to Français +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Joëlle Cornavin , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-07-09 22:15+0200\n" +"Last-Translator: Joëlle Cornavin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documents récents" diff --git a/po/fr/kio5_sftp.po b/po/fr/kio5_sftp.po new file mode 100644 index 0000000..4f4c645 --- /dev/null +++ b/po/fr/kio5_sftp.po @@ -0,0 +1,484 @@ +# translation of kio_sftp.po to French +# translation of kio_sftp.po to +# traduction de kio_sftp.po en Français +# Copyright (C) 2003, 2004, 2007, 2008 Free Software Foundation, Inc. +# Gilles CAULIER , 2003. +# Matthieu Robin , 2003, 2004. +# Robert Jacolin , 2003. +# Matthieu Robin , 2004. +# Delafond , 2004. +# aminesay , 2007. +# Sébastien Renard , 2008. +# Amine Say , 2008. +# Guillaume Pujol , 2010. +# Sébastien Renard , 2012. +# xavier , 2013. +# Vincent PINON , 2013. +# Vincent Pinon , 2014. +# Simon Depiets , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-12-05 15:04+0800\n" +"Last-Translator: Simon Depiets \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 2.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Mot de passe non valable ou incorrect" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Impossible d'allouer les retours d'appels" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Impossible de définir le niveau de verbosité du journal." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Impossible d'activer les messages sur les données d'utilisateur." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Impossible d'activer les messages sur les retours d'appels" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Compte sFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Utilisez le champ « nom d'utilisateur » pour répondre à cette question." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Veuillez saisir votre mot de passe." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Site :" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Impossible de créer une nouvelle session SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Impossible de définir un délai maximum." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Impossible de désactiver l'algorithme de Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Impossible de définir la compression." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Impossible de définir l'hôte." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Impossible de définir le port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Impossible de définir le nom d'utilisateur." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Impossible de lire le fichier de configuration." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Ouverture de la connexion sFTP vers l'hôte %1 : %2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Impossible d'obtenir le nom du type de clef publique du serveur" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" +"Impossible de créer la valeur de hachage depuis la clé publique du serveur" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Impossible de créer l'empreinte de la clé publique du serveur" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Impossible de trouver une clé hôte %1 pour ce serveur mais un autre type de " +"clé existe.\n" +"Un attaquant pourrait changer la clé par défaut du serveur pour faire croire " +"au client que la clé n'existe pas.\n" +"Veuillez contacter votre administrateur système.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"La clé hôte du serveur %1 a été modifiée.\n" +"Cela peut signifier qu'une l'usurpation DNS est en cours ou que l'adresse IP " +"et la clé de l'hôte ont changées simultanément.\n" +"L'empreinte de la clé %2 envoyée par le serveur distant est :\n" +" SHA256:%3\n" +"Veuillez contacter votre administrateur système.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Avertissement : impossible de vérifier l'identité de l'hôte." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Impossible de vérifier l'authenticité de l'hôte %1.\n" +"L'empreinte de la clé %2 est : %3\n" +"Voulez-vous vraiment continuer la connexion ?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Échec de l'authentification." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Échec de l'authentification. Le serveur n'a pu fournir aucune méthode " +"d'authentification." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Veuillez saisir votre nom d'utilisateur et votre mot de passe." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nom d'utilisateur ou mot de passe incorrect" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Impossible de communiquer avec le sous-système SFTP. Veuillez vous assurer " +"que SFTP est activé sur le serveur." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Impossible d'initialiser la session SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Connexion à « %1 » réussie" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Impossible de trouver la clé hôte pour ce serveur mais un autre type de clé " +"existe.\n" +"Un attaquant pourrait changer la clé par défaut du serveur pour faire croire " +"au client que la clé n'existe pas.\n" +"Veuillez contacter votre administrateur système.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"La clé hôte du serveur %1 a été modifiée.\n" +"Cela peut signifier qu'une l'usurpation DNS est en cours ou que l'adresse IP " +"et la clé de l'hôte ont changées simultanément.\n" +"L'empreinte de la clé envoyée par le serveur distant est :\n" +"%2\n" +"Veuillez contacter votre administrateur système.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Impossible de vérifier l'authenticité de l'hôte %1.\n" +"L'empreinte de la clé est : %2\n" +"Voulez-vous vraiment continuer la connexion ?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexte sftp non valable" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Impossible de modifier les permissions de\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Impossible de lire le lien : %1" + +#~ msgid "No hostname specified." +#~ msgstr "Aucun nom d'hôte spécifié." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Une erreur interne s'est produite. Veuillez réessayer la requête." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Veuillez saisir votre nom d'utilisateur et votre phrase clé." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Avertissement : l'identité de l'hôte a changé." + +#~ msgid "Connection failed." +#~ msgstr "Échec de connexion." + +#~ msgid "Connection closed by remote host." +#~ msgstr "La connexion a été rompue par l'hôte distant." + +#, fuzzy +#~| msgid "Unexpected SFTP error: %1" +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "Erreur sFTP inattendue : %1" + +#~ msgid "SFTP version %1" +#~ msgstr "sFTP version %1" + +#~ msgid "Protocol error." +#~ msgstr "Erreur de protocole." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Une erreur interne s'est produite. Veuillez réessayer." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Une erreur inconnue est survenue lors de la copie du fichier vers « %1 ». " +#~ "Veuillez réessayer." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "L'hôte distant ne prend pas en charge le renommage des fichiers." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "" +#~ "L'hôte distant ne prend pas en charge la création de liens symboliques." + +#~ msgid "Connection closed" +#~ msgstr "Connexion fermée" + +#~ msgid "End of file." +#~ msgstr "Fin de fichier." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "La commande sFTP a échoué pour une raison inconnue." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Le serveur sFTP a reçu un message incorrect." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Vous avez effectué une opération non gérée par le serveur sFTP." + +#~ msgid "Error code: %1" +#~ msgstr "Code d'erreur : %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "" +#~ "Impossible de spécifier le sous-système et la commande simultanément." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "" +#~ "Les options pour l'exécution du programme « ssh » n'ont pas été fournies." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "L'exécution du processus « ssh » a échoué." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "" +#~ "Une erreur est survenue pendant le dialogue avec le programme « ssh »." + +#~ msgid "Please supply a password." +#~ msgstr "Veuillez saisir un mot de passe." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Veuillez saisir une phrase pour votre clé privée SSH." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "L'authentification à « %1 » a échoué" + +# unreviewed-context +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "L'identité du hôte distant « %1 » n'a pas pu être vérifiée car sa clé " +#~ "n'est pas dans le fichier des « hôtes connus »." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ "Ajoutez manuellement la clé de l'hôte dans le fichier des « hôtes " +#~ "connus » ou contactez votre administrateur." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ "Ajoutez manuellement la clé de l'hôte dans « %1 » ou contactez votre " +#~ "administrateur." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Impossible de vérifier l'identité de l'hôte distant « %1 ». L'empreinte " +#~ "digitale de la clé de l'hôte est : \n" +#~ "%2\n" +#~ "Il est fortement recommandé de vérifier l'empreinte digitale avec " +#~ "l'administrateur de l'hôte avant de vous connecter.\n" +#~ "\n" +#~ "Voulez-vous accepter la clé de l'hôte et vous connecter tout de même ? " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "AVERTISSEMENT : l'identité de l'hôte distant « %1 » a changé ! \n" +#~ "\n" +#~ "Quelqu'un peut écouter votre connexion, ou l'administrateur a pu changer " +#~ "la clé de l'hôte. Dans tous les cas, il est fortement recommandé de " +#~ "vérifier l'empreinte digitale de la clé de l'hôte avec son administrateur " +#~ "avant de vous connecter. L'empreinte digitale de la clé est : \n" +#~ "%2\n" +#~ "Ajoutez la clé correcte de l'hôte à « %3 » pour ne plus voir ce message." + +# unreviewed-context +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "AVERTISSEMENT : l'identité de l'hôte distant « %1 » a changé ! \n" +#~ "\n" +#~ "Quelqu'un peut écouter votre communication, ou l'administrateur a pu " +#~ "changer la clé de l'hôte. Dans tous les cas, il est fortement recommandé " +#~ "de vérifier l'empreinte digitale de la clé de l'hôte avec son " +#~ "administrateur avant de vous connecter. L'empreinte digitale de la clé " +#~ "est :\n" +#~ "%2\n" +#~ "\n" +#~ "Voulez-vous accepter la nouvelle clé de l'hôte et vous connecter tout de " +#~ "même ?" + +#~ msgid "Host key was rejected." +#~ msgstr "La clé de l'hôte a été rejetée." + +#~ msgid "Please enter a username and password" +#~ msgstr "Veuillez saisir votre nom d'utilisateur et votre mot de passe" + +#~ msgid "File does not exist." +#~ msgstr "Le fichier n'existe pas." + +#~ msgid "Access is denied." +#~ msgstr "L'accès est interdit." diff --git a/po/fr/kio5_smb.po b/po/fr/kio5_smb.po new file mode 100644 index 0000000..06a7fdb --- /dev/null +++ b/po/fr/kio5_smb.po @@ -0,0 +1,226 @@ +# traduction de kio_smb.po en Français +# translation of kio_smb.po to Français +# translation of kio_smb.po to +# translation of kio_smb.po to +# translation of kio_smb.po to +# translation of kio_smb.po to +# translation of kio_smb.po to +# translation of kio_smb.po to +# translation of kio_smb.po to +# Copyright (C) 2002,2003, 2004, 2005, 2008 Free Software Foundation, Inc. +# Matthieu Robin , 2002,2003, 2004. +# Gilles CAULIER , 2003. +# Matthieu Robin , 2004, 2005. +# Matthieu Robin , 2005. +# Sébastien Renard , 2008. +# xavier , 2013. +# Vincent Pinon , 2017. +# Simon Depiets , 2020. +# Xavier Besnard , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-05 09:36+0100\n" +"Last-Translator: Xavier Besnard \n" +"Language-Team: FR\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 20.08.2\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +" Il y a de nombreuses options pour l'authentification des partages " +"« SMB ».nom_utilisateur : lorsque " +"l'authentification sur un réseau personnel sur le serveur est suffisant,nom_utilisateur@domaine.com: les noms " +"actuels de connexions sur réseaux d'entreprises ont la forme d'une adresse " +"de courriel,DOMAINE\\nom_utilisateur : pour les réseaux d'entreprises ou les groupes de travail plus " +"anciens, vous pourriez avoir besoin d'avoir un préfixe avec le nom de " +"domaine « NetBIOS » (Avant Windows 2000),anonyme : les connexions anonymes peuvent être tentées en utilisant un " +"nom d'utilisateur et un mot de passe vide. Selon la configuration du " +"serveur, les noms d'utilisateurs non vides pourraient être demandés." + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "" +"Veuillez saisir les informations d'authentification pour %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Veuillez saisir les informations d'authentification pour :\n" +"Serveur : %1\n" +"Partage : %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1 :\n" +"Type de fichier inconnu. Ce n'est ni un dossier ni un fichier." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Aucun groupe de travail n'a été trouvé dans votre réseau local. Ceci peut " +"être dû à la présence d'un pare-feu activé." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Aucun média dans le périphérique « %1 »." + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Impossible de se connecter à l'hôte « %1 »" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Erreur lors de la connexion au serveur en charge de « %1 »" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Le partage n'a pas pu être trouvé sur le serveur indiqué" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Mauvais descripteur de fichier" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Le nom fourni n'a pas pu être résolu en un serveur unique. Veuillez vérifier " +"que votre réseau ne contient pas de conflit de noms entre ceux utilisés par " +"Windows et Unix." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1 : Hôte injoignable" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"La bibliothèque « libsmbclient » a signalé une erreur mais n'a pas précisé " +"le problème rencontré. Cela peut indiquer un problème grave dans votre " +"réseau mais peut également indiquer un problème avec la bibliothèque " +"« libsmbclient ».\n" +"Si vous voulez nous aider, veuillez fournir un « tcpdump » de l'interface " +"réseau pendant que vous essayez de naviguer (sachez qu'il peut contenir des " +"données privées, donc ne le postez pas si vous avez un doute ; vous pouvez " +"l'envoyer en privé aux développeurs s'ils le demandent)." + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condition d'erreur inconnue : [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Une erreur s'est produite en tentant d'accéder à %1 %2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "La bibliothèque « libsmbclient » n'a pas pu créer le contexte." + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Veuillez vérifier que le paquet « samba » est correctement installé sur " +"votre système." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Échec du montage du partage « %1 » sur l'hôte « %2 » par l'utilisateur " +"« %3 ».\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Échec du démontage de « %1 ».\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Périphérique inconnu @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "" +#~ "La bibliothèque « libsmbclient » n'a pas pu initialiser le contexte." + +#~ msgid "File does not exist: %1" +#~ msgstr "Le fichier n'existe pas : %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "impossible d'initialiser la bibliothèque « libsmbclient »" diff --git a/po/fr/kio5_thumbnail.po b/po/fr/kio5_thumbnail.po new file mode 100644 index 0000000..085fe69 --- /dev/null +++ b/po/fr/kio5_thumbnail.po @@ -0,0 +1,89 @@ +# translation of kio_thumbnail.po to Français +# translation of kio_thumbnail.po to +# +# Nicolas Ternisien , 2005, 2007. +# xavier , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-04-09 17:12+0200\n" +"Last-Translator: xavier \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Faire pivoter l'image automatiquement" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Aucun type MIME spécifié." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Taille spécifiée inconnue ou non valable." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Impossible de créer la miniature du dossier" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Aucun module externe spécifié." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Impossible de charger ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Impossible de créer la miniature pour %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Impossible de créer une miniature." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Impossible d'écrire l'image." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Impossible de s'attacher au segment de mémoire partagée %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "L'image est trop grande pour ce segment de mémoire partagée" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Nicolas Ternisien" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "nicolas.ternisien@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/ga/kfileaudiopreview5.po b/po/ga/kfileaudiopreview5.po new file mode 100644 index 0000000..060a84a --- /dev/null +++ b/po/ga/kfileaudiopreview5.po @@ -0,0 +1,43 @@ +# Translation of kfileaudiopreview4.po to Irish. +# Copyright (C) 2004 Free Software Foundation, Inc. +# Séamus Ó Ciardhuáin , 2004. +# Kevin Scannell , 2009 +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2004-12-03 14:52-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.6\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Seinn go h&uathoibríoch" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "tosaigh athsheinm" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "cuir athsheinm ar shos" + +#~ msgid "stop playback" +#~ msgstr "stop an athsheinm" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "lúb: atosaíonn sé athsheinm ag an deireadh" + +#~ msgid "Media Player" +#~ msgstr "Seinnteoir Meán" diff --git a/po/ga/kio5_activities.po b/po/ga/kio5_activities.po new file mode 100644 index 0000000..4b116b0 --- /dev/null +++ b/po/ga/kio5_activities.po @@ -0,0 +1,152 @@ +# Irish translation of kactivitymanagerd_fileitem_linking_plugin +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the same license as the kactivitymanagerd_fileitem_linking_plugin package. +# Kevin Scannell , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kactivitymanagerd_fileitem_linking_plugin\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2012-11-29 14:59-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activities" +msgstr "Gníomhartha" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "Tá ainghléas ar an mbainisteoir gníomhaíochta." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Nasc leis an ngníomhaíocht reatha" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Dínasc ón ghníomhaíocht reatha" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Nasc le:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Dínasc ó:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activity" +msgstr "Gníomhartha" + +#: KioActivities.cpp:230 +#, fuzzy, kde-format +#| msgid "Link to the current activity" +msgid "Current activity" +msgstr "Nasc leis an ngníomhaíocht reatha" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Kevin Scannell" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kscanne@gmail.com" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Athraigh go gníomhaíocht \"%1\"" + +#, fuzzy +#~| msgid "Activities" +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Gníomhartha" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Delete activity" +#~ msgstr "Nasc leis an ngníomhaíocht reatha" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create a new activity" +#~ msgstr "Nasc leis an ngníomhaíocht reatha" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity settings" +#~ msgstr "Gníomhartha" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity information" +#~ msgstr "Gníomhartha" + +#~ msgid "Privacy" +#~ msgstr "Príobháideacht" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "go brách" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "ar feadh " + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create activity..." +#~ msgstr "Nasc leis an ngníomhaíocht reatha" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity switching" +#~ msgstr "Gníomhartha" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity name" +#~ msgstr "Gníomhartha" + +#~ msgid "Available Features" +#~ msgstr "Gnéithe Le Fáil" + +#~ msgid "Plugins" +#~ msgstr "Breiseáin" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Tá ainghléas ar an mbainisteoir gníomhaíochta." + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activities..." +#~ msgstr "Gníomhartha" + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "© 2012 Ivan Cukic" diff --git a/po/ga/kio5_archive.po b/po/ga/kio5_archive.po new file mode 100644 index 0000000..8c33e0e --- /dev/null +++ b/po/ga/kio5_archive.po @@ -0,0 +1,39 @@ +# Irish translation of kio_archive +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_archive package. +# Kevin Scannell , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kdebase/kio_archive.po\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2007-09-21 19:23-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Níorbh fhéidir an comhad a oscailt, is dócha de bhrí nach dtacaítear le " +"formáid an chomhaid.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Níorbh fhéidir an cnuaschomhad a oscailt, b'fhéidir de bhrí nach dtacaítear " +"le formáid an chomhaid.\n" +"%1" diff --git a/po/ga/kio5_bookmarks.po b/po/ga/kio5_bookmarks.po new file mode 100644 index 0000000..c61219a --- /dev/null +++ b/po/ga/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# Irish translation of kio_bookmarks +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_bookmarks package. +# Kevin Scannell , 2009. +msgid "" +msgstr "" +"Project-Id-Version: playground-ioslaves/kio_bookmarks.po\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-08-05 08:52-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Fréamh" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Áiteanna" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Iarratas mícheart: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Níl aon leabharmharcanna le taispeáint fós." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Comhad CSS kio_bookmarks gan aimsiú. Beidh cuma ghránna ar an aschur.\n" +"Déan seiceáil ar do chóras." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mo Chuid Leabharmharcanna" + +#~ msgid "My bookmarks" +#~ msgstr "Mo chuid leabharmharcanna" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Bunfhorbróir" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Kevin Scannell" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kscanne@gmail.com" diff --git a/po/ga/kio5_fish.po b/po/ga/kio5_fish.po new file mode 100644 index 0000000..0d90667 --- /dev/null +++ b/po/ga/kio5_fish.po @@ -0,0 +1,51 @@ +# Irish translation of kio_fish +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_fish package. +# Kevin Scannell , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kdebase/kio_fish.po\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2004-12-03 14:52-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Ag ceangal..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Prótacal á thúsú..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Logáil Isteach Logánta" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Fíordheimhniú SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Dícheangailte." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Kevin Scannell" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kscanne@gmail.com" diff --git a/po/ga/kio5_info.po b/po/ga/kio5_info.po new file mode 100644 index 0000000..01fbf3b --- /dev/null +++ b/po/ga/kio5_info.po @@ -0,0 +1,29 @@ +# Irish translation of kio_info +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_info package. +# Kevin Scannell , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-03-25 09:41-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Ní féidir comhad %1 a aimsiú atá riachtanach leis an tseirbhís seo a rith. " +"Déan seiceáil ar do chóras." diff --git a/po/ga/kio5_man.po b/po/ga/kio5_man.po new file mode 100644 index 0000000..c8dc3af --- /dev/null +++ b/po/ga/kio5_man.po @@ -0,0 +1,229 @@ +# translation of kio_man.po to Irish +# Copyright (C) 2002 Free Software Foundation, Inc. +# Séamus Ó Ciardhuáin , 2002 +# Kevin Scannell , 2009 +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2004-12-03 14:52-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0beta1\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Níor aimsíodh aon leathanach 'man' comhoiriúnach do %1.

        Bí cinnte " +"nach ndearna tú botún clóscríofa nuair a d'iontráil tú ainm an leathanaigh " +"atá uait.
        Bí cúramach toisc gur cásíogair iad na leathanaigh 'man'.
        Más dóigh leat go bhfuil gach rud ceart go leor, seans go bhfuil conair " +"níos fearr do leathanaigh 'man' de dhíth ort, tríd an athróg thimpeallachta " +"MANPATH nó comhad comhoiriúnach i gcomhadlann /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Earráid: Amharcán Leathanach 'man' KDE

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Tá níos mó ná leathanach amháin comhoiriúnach." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Nóta: má léann tú leathanach 'man' as Gaeilge, tabhair faoi deara gur féidir " +"go bhfuil botúin ann, nó go bhfuil sé as dáta. Mura bhfuil tú cinnte, féach " +"ar an leathanach Béarla." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Comhaid cheanntáisc" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Comhaid cheanntáisc (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Orduithe Úsáideora" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Orduithe Úsáideora (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Glaonna ar an chóras" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Foghnáthaimh" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Modúil Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Feidhmeanna Líonra" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Gléasanna" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formáidí Comhaid" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Cluichí" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Rudaí éagsúla" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Riarachán Córais" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Eithne" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Doiciméadú Logánta" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nua" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Innéacs Lámhleabhair UNIX" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Rannán %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Innéacs ar Rannán %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Innéacs Lámhleabhair UNIX" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Innéacs á Ghiniúint" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Níorbh fhéidir an ríomhchlár sgml2roff a aimsiú ar do chóras. Suiteáil é, " +"más gá, agus leathnaigh an chonair chuardaigh tríd an athróg PATH a " +"mhionathrú sula dtosaíonn KDE arís." + +#~ msgid "Open of %1 failed." +#~ msgstr "Theip ar oscailt %1." + +#~ msgid "Man output" +#~ msgstr "Aschur 'man'" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Séamus Ó Ciardhuáin,Kevin Scannell" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "seoc@iolfree.ie,kscanne@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/ga/kio5_nfs.po b/po/ga/kio5_nfs.po new file mode 100644 index 0000000..cace510 --- /dev/null +++ b/po/ga/kio5_nfs.po @@ -0,0 +1,67 @@ +# translation of kio_nfs.po to Irish +# Copyright (C) 2002 Free Software Foundation, Inc. +# Séamus Ó Ciardhuáin , 2002 +# Kevin Scannell , 2009 +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2004-12-03 14:52-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0beta1\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Níl aon spás fágtha ar an ghléas" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Córas comhaid inléite amháin" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Ainm comhaid rófhada" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Sáraíodh an cuóta diosca" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "Tharla earráid RPC." diff --git a/po/ga/kio5_recentdocuments.po b/po/ga/kio5_recentdocuments.po new file mode 100644 index 0000000..8056a9a --- /dev/null +++ b/po/ga/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Irish translation of kio_recentdocuments +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_recentdocuments package. +# Kevin Scannell , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-05-14 16:25-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Cáipéisí is Déanaí" diff --git a/po/ga/kio5_sftp.po b/po/ga/kio5_sftp.po new file mode 100644 index 0000000..c80c37b --- /dev/null +++ b/po/ga/kio5_sftp.po @@ -0,0 +1,476 @@ +# translation of kio_sftp.po to Irish +# Copyright (C) 2002 Free Software Foundation, Inc. +# Séamus Ó Ciardhuáin , 2002 +# Kevin Scannell , 2009 +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2004-12-03 14:52-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0beta1\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frása faire mícheart nó neamhbhailí" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Níorbh fhéidir aisghlaonna a dháileadh." + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Níorbh fhéidir foclaíocht an logchomhaid a shocrú." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Níorbh fhéidir foclaíocht an logchomhaid a shocrú." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Níorbh fhéidir aisghlaonna a dháileadh." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Logáil Isteach SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Úsáid an réimse 'ainm úsáideora' chun an cheist seo a fhreagairt." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Tabhair uait d'fhocal faire." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Suíomh:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Níorbh fhéidir seisiún nua SSH a chruthú." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Níorbh fhéidir teorainn ama a shocrú." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Níorbh fhéidir an port a shocrú." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Níorbh fhéidir an comhbhrú a shocrú." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Níorbh fhéidir óstríomhaire a shocrú." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Níorbh fhéidir an port a shocrú." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Níorbh fhéidir ainm úsáideora a shocrú." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Níorbh fhéidir an comhad cumraíochta a pharsáil." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Ceangal SFTP á dhéanamh leis an óstríomhaire %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Níorbh fhéidir ainm úsáideora a shocrú." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Níor aimsíodh eochair an fhreastalaí seo, ach tá eochair de chineál eile " +"ann.\n" +"B'fhéidir le hionsaitheoir eochair réamhshocraithe an fhreastalaí a athrú " +"chun mearbhall a chur ar do chliant, sa chaoi go gceapann an cliant nach " +"bhfuil an eochair ann.\n" +"Téigh i dteagmháil le riarthóir do chórais.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Athraíodh eochair an óstríomhaire le haghaidh fhreastalaí %1.\n" +"Seans go bhfuil CLEAS DNS ar siúl, nó gur athraíodh seoladh IP an " +"óstríomhaire agus a eochair ag an am céanna.\n" +"Seo é méarlorg na heochrach a sheol an t-óstríomhare cianda:\n" +" %2\n" +"Téigh i dteagmháil le riarthóir do chórais.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Rabhadh: Ní féidir aitheantas an óstríomhaire a fhíorú." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Ní féidir aitheantas óstríomhaire %1 a dheimhniú.\n" +"Seo é méarlorg na heochrach: %2\n" +"An bhfuil tú cinnte gur mhaith leat ceangal mar sin féin?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Theip ar fhíordheimhniú." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Tabhair uait ainm úsáideora agus focal faire le do thoil." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Ainm úsáideora mícheart nó focal faire" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Ní féidir teacht ar an bhfo-chóras SFTP. Bí cinnte go bhfuil SFTP cumasaithe " +"ar an bhfreastalaí." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Níorbh fhéidir an seisiún SFTP a thúsú." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "D'éirigh le ceangal le %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Níor aimsíodh eochair an fhreastalaí seo, ach tá eochair de chineál eile " +"ann.\n" +"B'fhéidir le hionsaitheoir eochair réamhshocraithe an fhreastalaí a athrú " +"chun mearbhall a chur ar do chliant, sa chaoi go gceapann an cliant nach " +"bhfuil an eochair ann.\n" +"Téigh i dteagmháil le riarthóir do chórais.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Athraíodh eochair an óstríomhaire le haghaidh fhreastalaí %1.\n" +"Seans go bhfuil CLEAS DNS ar siúl, nó gur athraíodh seoladh IP an " +"óstríomhaire agus a eochair ag an am céanna.\n" +"Seo é méarlorg na heochrach a sheol an t-óstríomhare cianda:\n" +" %2\n" +"Téigh i dteagmháil le riarthóir do chórais.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Ní féidir aitheantas óstríomhaire %1 a dheimhniú.\n" +"Seo é méarlorg na heochrach: %2\n" +"An bhfuil tú cinnte gur mhaith leat ceangal mar sin féin?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Níorbh fhéidir ceadanna a athrú le haghaidh\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Níorbh fhéidir an nasc a léamh: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Níor sonraíodh ainm óstríomhaire." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Tharla earráid inmheánach. Bain triail eile as an iarratas." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "" +#~ "Tabhair uait ainm úsáideora agus frása faire d'eochrach le do thoil." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Rabhadh: Athraíodh aitheantas an óstríomhaire." + +#~ msgid "Connection failed." +#~ msgstr "Theip ar cheangal." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Ceangal dúnta ag an gcianóstach." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "earráid SFTP gan choinne: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP, leagan %1" + +#~ msgid "Protocol error." +#~ msgstr "Earráid phrótacail." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Tharla earráid inmheánach. Déan iarracht eile le do thoil." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Tharla earráid anaithnid agus an comhad á chóipeáil go '%1'. Bain triail " +#~ "eile as, le do thoil." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Ní thacaíonn an cianóstach le hathainmniú comhad." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Ní féidir leis an óstríomhaire cianda naisc shiombalacha a chruthú." + +#~ msgid "Connection closed" +#~ msgstr "Ceangal dúnta" + +#~ msgid "End of file." +#~ msgstr "Comhadchríoch." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "Theip ar an ordú SFTP; ní fios cén fáth." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Fuair an freastalaí SFTP droch-theachtaireacht." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "" +#~ "Bhain tú triail as oibríocht nach dtacaíonn an freastalaí SFTP leis." + +#~ msgid "Error code: %1" +#~ msgstr "Cód earráide: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Ní féidir fochóras agus ordú ag an am céanna." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Níor soláthraíodh roghanna do rith ssh." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Theip ar rith próiseas ssh." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Tharla earráid le linn comhrá le ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Tabhair uait focal faire, le do thoil." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Tabhair uait frása faire d'eochrach SSH, le do thoil." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Theip ar fhíordheimhniú %1" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Níorbh fhéidir aitheantas an chianóstaigh '%1' a fhíorú toisc nach bhfuil " +#~ "eochair an óstríomhaire sa chomhad \"known hosts\"." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ "Cuir eochair an óstríomhaire sa chomhad \"known hosts\" de láimh, nó " +#~ "téigh i dteagmháil le riarthóir do chórais." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Cuir eochair an óstríomhaire le %1 de láimh nó téigh i dteagmháil le " +#~ "riarthóir do chórais." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Níorbh fhéidir aitheantas an chianóstaigh '%1' a fhíorú. Seo é méarlorg " +#~ "eochair an óstríomhaire:\n" +#~ "%2\n" +#~ "Ba chóir duit an méarlorg a fhíorú le riarthóir an óstríomhaire roimh " +#~ "cheangal.\n" +#~ "\n" +#~ "An bhfuil fonn ort eochair an óstríomhaire a ghlacadh agus ceangal a " +#~ "bhunú mar sin féin? " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "RABHADH: Athraíodh aitheantas an chianóstaigh '%1'!\n" +#~ "\n" +#~ "Seans go bhfuil duine éigin ag déanamh cúléisteachta ar do cheangal, nó " +#~ "gur athraigh an riarthóir eochair an óstríomhaire. I gceachtar cás, ba " +#~ "chóir duit méarlorg eochair an óstríomhaire a fhíorú le riarthóir an " +#~ "óstríomhaire. Seo é an méarlorg:\n" +#~ "%2\n" +#~ "Cuir an eochair cheart le \"%3\" chun an teachtaireacht seo a dhíbirt." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "RABHADH: Athraíodh aitheantas an chianóstaigh '%1'!\n" +#~ "\n" +#~ "Seans go bhfuil duine éigin ag déanamh cúléisteachta ar do cheangal, nó " +#~ "gur athraigh an riarthóir eochair an óstríomhaire. I gceachtar cás, ba " +#~ "chóir duit méarlorg eochair an óstríomhaire a fhíorú le riarthóir an " +#~ "óstríomhaire. Seo é an méarlorg:\n" +#~ "%2\n" +#~ "An bhfuil fonn ort an eochair nua a ghlacadh agus ceangal a bhunú mar sin " +#~ "féin?" + +#~ msgid "Host key was rejected." +#~ msgstr "Diúltaíodh eochair an óstríomhaire." + +#~ msgid "Please enter a username and password" +#~ msgstr "Tabhair uait ainm úsáideora agus focal faire le do thoil" diff --git a/po/ga/kio5_smb.po b/po/ga/kio5_smb.po new file mode 100644 index 0000000..bde2e39 --- /dev/null +++ b/po/ga/kio5_smb.po @@ -0,0 +1,191 @@ +# translation of kio_smb.po to Irish +# Copyright (C) 2002 Free Software Foundation, Inc. +# Séamus Ó Ciardhuáin , 2002 +# Kevin Scannell , 2009 +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2004-12-03 14:52-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0beta1\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Iontráil faisnéis fhíordheimhnithe do %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Iontráil faisnéis fhíordheimhnithe do:\n" +"Freastalaí = %1\n" +"Comhroinn = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Cineál anaithnid comhaid, ní comhadlann ná comhad é." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Ní féidir aon ghrúpaí oibre a aimsiú ar do líonra logánta. Seans go bhfuil " +"balla dóiteáin in úsáid." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Níl meáin sa ghléas le haghaidh %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Níorbh fhéidir dul i dteagmháil leis an óstríomhaire do %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Earráid agus ceangal á bhunú leis an bhfreastalaí atá freagrach as %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Níorbh fhéidir comhroinn a aimsiú ar an bhfreastalaí sonraithe" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Drochthuairisceoir comhaid" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Níorbh fhéidir an t-ainm a thiontú go dtí seoladh de fhreastalaí uathúil. Bí " +"cinnte nach bhfuil na hainmneacha Windows agus UNIX ar do líonra ag teacht " +"salach ar a chéile." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"Chuir libsmbclient earráid amach, ach níor shonraigh sé an fhadhb. Seans go " +"bhfuil fadhb thubaisteach le do líonra - ach ag an am céanna seans nach " +"bhfuil ach fadhb le libsmbclient.\n" +"Más mian leat cabhrú linn, soláthair dúinn tcpdump den chomhéadan líonra le " +"linn brabhsála (ach tabhair faoi deara gur dócha go mbeidh sonraí " +"príobháideacha ann, agus dá bhrí sin ná postáil é mura bhfuil tú cinnte - " +"seol é chuig na forbróirí go príobháideach má iarrann siad é)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Stádas anaithnid earráide i stat: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Theip ar libsmbclient comhthéacs a chruthú" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Féach an bhfuil an pacáiste samba suiteáilte i gceart ar do chóras." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Theip ar úsáideoir \"%3\" comhroinn \"%1\" a fheistiú ó óstríomhaire " +"\"%2\".\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Theip ar phointe feistithe \"%1\" a dhífheistiú.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "Theip ar libsmbclient comhthéacs a thúsú" + +#~ msgid "File does not exist: %1" +#~ msgstr "Níl an comhad ann: %1" diff --git a/po/ga/kio5_thumbnail.po b/po/ga/kio5_thumbnail.po new file mode 100644 index 0000000..bb6baba --- /dev/null +++ b/po/ga/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# Irish translation of kio_thumbnail +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_thumbnail package. +# Kevin Scannell , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kdebase/kio_thumbnail.po\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2005-05-20 15:03-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rothlaigh an íomhá go huathoibríoch" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Níor sonraíodh cineál MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Níor sonraíodh méid, nó sonraíodh méid neamhbhailí." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ní féidir mionsamhail a chruthú le haghaidh na comhadlainne" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Níor sonraíodh breiseán." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ní féidir ThumbCreator %1 a luchtú" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ní féidir mionsamhail a chruthú le haghaidh %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Theip ar chruthú na mionsamhla." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Níorbh fhéidir an íomhá a scríobh." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Theip ar cheangal le deighleán comhchuimhne %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Tá an íomhá rómhór don deighleán comhchuimhne" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Kevin Scannell" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kscanne@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/gl/docs/kioslave5/bookmarks/index.docbook b/po/gl/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..99d4f68 --- /dev/null +++ b/po/gl/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        +Marcadores + + +XavierVello xavier.vello@gmail.com +MarceVillarino
        mvillarino@kde-espana.es
        Proxecto Trasno
        +
        + +2008-08-31 +0.2 + +
        + +Este KIO mostra os marcadores nunha páxina &HTML;. Pode acceder a ela escribindo bookmarks:/ na barra de enderezo de &konqueror;. + +O contido e a disposición da páxina pode configurarse. Simplemente en &konqueror; escriba bookmarks:/config para iniciar o diálogo de configuración. + +
        + diff --git a/po/gl/docs/kioslave5/bzip2/index.docbook b/po/gl/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..6b266a7 --- /dev/null +++ b/po/gl/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,64 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +MarceVillarino
        mvillarino@users.sourceforge.net
        Tradución do proxecto Trasno
        +
        +
        + +bzip2 é un programa de compresión. + +O kioslave bzip2 non é utilizábel directamente, o seu propósito é empregarse como un filtro. Por exemplo, o kioslave tar pode filtrar un ficheiro mediante o kioslave bzip2, para poder mostrar os contidos dun ficheiro tab.bz2 nunha xanela de &konqueror;. + +Se preme &konqueror; nun ficheiro comprimido mediante .bz2 empregaráse este kioslave para descomprimilo e mostralo como un ficheiro normal (non comprimido). + +Se vde. é un desenvolvedor, e desexa empregar o filtro bzip2, pode atopar documentación sobre a utilización de kioslaves en http://techbase.kde.org + +Consulte o manual: bzip2. + +bzip é o antecedente de bzip2. Na actualizade úsase moi raras veces, substituído por bzip2, que ten moita mellor compresión. + +
        diff --git a/po/gl/docs/kioslave5/fish/index.docbook b/po/gl/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..117accd --- /dev/null +++ b/po/gl/docs/kioslave5/fish/index.docbook @@ -0,0 +1,165 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +MarceVillarino
        mvillarino@users.sourceforge.net
        Tradutor do proxecto Trasno
        +
        + +2010-10-27 +&kde; 4.5 + +
        + +Permítelle acceder aos ficheiros que haxa noutro computador mediante o protocolo Secure SHell (SSH). O computador remoto precisa ter o servizo de SSH en execución, pero o resto do protocolo emprega ferramentas estándar da liña de ordes como se explica a continuación. + +Pode utilizar o kioslave fish así: fish://servidor ou fish://nome_de_usuario@servidor. + +Debe empregar dúas barras. + +Pode omitir o usuario (e a @ que o segue) se ten o mesmo nome de usuario nos dous computadores. + +Pode engadir un contrasinal co seguinte formato: fish://nome_de_usuario:contrasinal@servidor pero non é preciso xa que se lle perguntará se non o indicou. + +Se está a executar o servizo de SSH nun porto non estándar, pode especificar cal é empregando a sintaxe normal dos &URL; deste xeito: fish://servidor:porto. + +Fish debe traballar con calquera computador remoto baseado en &UNIX; e que sexa máis ou menos compatíbel con POSIX. Emprega as ordes de intérprete de ordes cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed e wc. Fish inicia /bin/sh como intérprete de ordes e agarda que sexa un intérprete de ordes Bourne (ou compatíbel, como bash). Se as ordes sed e file están dispoñíbeis, así como o ficheiro /etc/apache/magic con sinaturas de tipos &MIME;, empregaranse para adiviñar os tipos &MIME;. + +Se está dispoñíbel Perl na máquina remota, pode usarse no canto. Entón só precisa env e /bin/sh. Empregar Perl ten a vantaxe adicional de que é máis rápido. + +Fish pode mesmo traballar con máquinas &Windows;, se teñen instaladas ferramentas como Cygwin. Todas as ferramentas indicadas en riba deben estar na PATH do sistema, e o intérprete de ordes inicial debe ser capaz de procesar a orde echo FISH:;/bin/sh correctamente. + +
        diff --git a/po/gl/docs/kioslave5/gzip/index.docbook b/po/gl/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..9010f77 --- /dev/null +++ b/po/gl/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +MarceVillarino
        mvillarino@users.sourceforge.net
        Tradutor do proxecto Trasno
        +
        +
        + +gzip é un programa de compresión + +O kioslave gzip non é utilizábel directamente, sendo o seu propósito o empregarse como un filtro. Por exemplo o kioslave tar pode filtrar un ficheiros através do kioslave gzip, para poder mostrar os contidos dun arquivo tar.gz directamente na xanela de &konqueror;. + +Se preme desde &konqueror; nun ficheiro comprimido con extenxión gz, este kioslave empregarase para descomprimilo e mostralo como un ficheiro normal (non comprimido). + +Se vde. é un desenvolvedor e desexa empregar o filtro gzip, ha atopar máis documentación sobre o uso dos kioslaves en http://techbase.kde.org + +Consulte o manual: gzip. + +
        diff --git a/po/gl/docs/kioslave5/info/index.docbook b/po/gl/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..66ce3da --- /dev/null +++ b/po/gl/docs/kioslave5/info/index.docbook @@ -0,0 +1,72 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +MarceVillarino
        mvillarino@users.sourceforge.net
        Tradutor do proxecto Trasno
        +
        +
        + +Info é un tipo de documentación. Os documentos están nun formato de ficheiro chamado textinfo, e poden lerse na liña de ordes mediante o programa info. + +O ioslave Info permítelle ler desde &konqueror; as páxinas de información instaladas no sistema. Utilizalo é moi fácil: + +info:gcc + +Isto mostraralle o nodo superior da documentación Info do compilador &gcc;. + +Info é o substituto de &GNU; de man, pero non é empregado habitualmente fora do software &GNU;. + +Pode navegar dun xeito sinxelo pola documentación de Info que teña instalada mediante o aplicativo &khelpcenter;, ou pode empregar o ioslave info directamente tanto desde &konqueror; como desde o mini-cli. + +
        diff --git a/po/gl/docs/kioslave5/man/index.docbook b/po/gl/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..dbfc88f --- /dev/null +++ b/po/gl/docs/kioslave5/man/index.docbook @@ -0,0 +1,155 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +MarceVillarino
        mvillarino@users.sourceforge.net
        Tradutor do proxecto Trasno
        +
        +
        + +Mediante o ioslave man pode ler as páxinas de manual que teña instaladas no sistema. É doado de empregar: + + + +man: + +Consulta as seccións do manual, prema para atopar o resto. + + + +man:/fopen + +Consulta a páxina de manual de fopen. + + + +man:/fopen(3) + +Consulta a páxina de manual de fopen na sección 3. + + + +man:/(3) + +Consulta o índice da sección 3. + + + +man:/intro(3) + +Consulta a introdución da sección 3. + + + + +Se hai máis dunha páxina para o nome que inserise, obterá unha lista onde poderá escoller a páxina de manual que quere ver. + +Tamén hai un atallo: #fopen, que ten o mesmo efecto antes descrito. + +Se non atopa todas as páxinas man, axuste o ficheiro de configuración /etc/manpath.config (ou un ficheiro ou nome similar en función da distribución) ou axuste as variábeis de ambiente MANPATH e MANSELECT. + +Igual que con calquera outro ioslave de &kde;, é posíbel inserir un &URL;, como man:/socket en calquera aplicativo de &kde;. Próbeo en &kwrite; e verá a páxina do manual en formato &HTML;. + +Lista de correo para contactar: kde-devel@kde.org + +
        diff --git a/po/gl/docs/kioslave5/nfs/index.docbook b/po/gl/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..6787970 --- /dev/null +++ b/po/gl/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +MarceVillarino
        mvillarino@users.sourceforge.net
        Tradutor do proxecto Trasno
        +
        +
        +O protocolo NFS de Sun fornece de acceso remoto transparente a sistemas de ficheiros compartidos pola rede. O protocolo NFS está deseñado para ser independente da máquina, sistema operativo, arquitectura de rede e protocolo de transporte. Esta independencia acádase mediante a utilizacion de primitivas de Chamadas a Procedementos Remotos (RPC) construidas sobr unha Representación de Datos eXterna (XDR). + +O protocolo de apoio MOUNT realiza as funcións específicas do sistema operativo que permite que os clientes conecten coas árbores de cartafoles remotos nun punto do sistema de ficheiros local. O proceso de montaxe tamén permite que o servidor garante privilexios de acceso a un conxunto limitado de clientes mediante control da exportación. + +O Xestor de Bloqueos fornece a funcionalidade de bloquear ficheiros cando se emprega no ambiente NFS. O protocolo do Xestor de Bloqueo da Rede (NLM) illa os aspectos do bloqueo de ficheiros que implican a existencia dun estado nun protocolo á parte. + +Fonte: http://www.networksorcery.com/enp/protocol/nfs.htm + +Consulte o manual: nfs. +
        diff --git a/po/gl/docs/kioslave5/sftp/index.docbook b/po/gl/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..b11cf79 --- /dev/null +++ b/po/gl/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +MarceVillarino
        mvillarino@users.sourceforge.net
        Tradutor do proxecto Trasno
        +
        +
        +SFTP é un protocolo de transferencia segura de ficheiros. sftp é un programa de transferencia interactiva de ficheiros, similar a ftp, pero realiza todas as operacións sobre un transporte ssh cifrado. Pode utilizar moitas das funcionalidades de ssh, incluíndo a autenticación mediante chave pública e compresión. + +Consulte o manual: sftp. + +
        diff --git a/po/gl/docs/kioslave5/tar/index.docbook b/po/gl/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..9a7d301 --- /dev/null +++ b/po/gl/docs/kioslave5/tar/index.docbook @@ -0,0 +1,41 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +MarceVillarino
        mvillarino@users.sourceforge.net
        Tradutor do proxecto Trasno
        +
        +
        +Un programa de arquivo deseñado para gardar e extrair ficheiron dun arquivo coñecido por ficheiro tar. Un ficheiro tar pode gardarse nunha unidade de cinta, porén, tamén é frecuente escribilo a ficheiros normais. + +Consulte o manual: tar. + +
        diff --git a/po/gl/docs/kioslave5/xz/index.docbook b/po/gl/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..c772ec7 --- /dev/null +++ b/po/gl/docs/kioslave5/xz/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +MarceVillarino
        mvillarino@kde-espana.es
        Proxecto Trasno
        +
        +
        + +Xz é un programa de compresión + +O kioslave xz non é utilizábel directamente, senón que se deseñou para usarse como un filtro. Por exemplo, o kioslave tar pode filtrar un ficheiro a través deste kioslave para mostrar o contido dun ficheiro tar.lzma ou tar.xz directamente nunha xanela de &konqueror;. + +Se en &konqueror; preme nun ficheiro comprimido con .lzma ou tar.xz úsase este kioslave para descomprimilo e mostralo como un ficheiro normal (sen comprimir). + +Se vde. é un desenvolvedor e desexa empregar o filtro xz, ha atopar máis documentación sobre o uso dos kioslaves en http://techbase.kde.org + +Consulte o manual: xz. + +
        diff --git a/po/gl/kfileaudiopreview5.po b/po/gl/kfileaudiopreview5.po new file mode 100644 index 0000000..0d75302 --- /dev/null +++ b/po/gl/kfileaudiopreview5.po @@ -0,0 +1,34 @@ +# translation of kfileaudiopreview4.po to galician +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# mvillarino , 2007. +# marce villarino , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-04-27 21:36+0200\n" +"Last-Translator: marce villarino \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Reproducir &automaticamente" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "comezar a reprodución" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pausar a reprodución" diff --git a/po/gl/kio5_activities.po b/po/gl/kio5_activities.po new file mode 100644 index 0000000..6ac34e1 --- /dev/null +++ b/po/gl/kio5_activities.po @@ -0,0 +1,252 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marce Villarino , 2012, 2013, 2014. +# Adrián Chaves Fernández , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-12-30 19:25+0100\n" +"Last-Translator: Adrián Chaves Fernández (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Actividades" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Cargando…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "O xestor de actividades non se está a executar." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Ligar á actividade actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Desligar da actividade actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Ligar a:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Desligar de:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Actividade" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Actividade actual" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Marce Villarino" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mvillarino@kde-espana.es" + +#~ msgid "Default" +#~ msgstr "Predeterminado" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Cambiar para a actividade «%1»" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Actividade" + +#~ msgid "Delete activity" +#~ msgstr "Eliminar a actividade" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Está seguro de que quere eliminar «%1»?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Produciuse un erro ao cargar os ficheiro de QML. Revise a instalación.\n" +#~ "Falta %1" + +#~ msgid "Create a new activity" +#~ msgstr "Crear unha actividade" + +#~ msgid "Activity settings" +#~ msgstr "Configuración da actividade" + +#~ msgid "General" +#~ msgstr "Xeral" + +#~ msgid "Other" +#~ msgstr "Outros" + +#~ msgid "Create" +#~ msgstr "Crear" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Atallo para cambiar a esta actividade:" + +#~ msgid "Activity information" +#~ msgstr "Información da actividade" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Description" +#~ msgstr "Descrición" + +#~ msgid "Wallpaper" +#~ msgstr "Fondo de escritorio" + +#~ msgid "Change..." +#~ msgstr "Cambiar..." + +#~ msgid "Icon" +#~ msgstr "Icona" + +#~ msgid "Switching" +#~ msgstr "Cambio" + +#~ msgid "Privacy" +#~ msgstr "Intimidade" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "para sempre" + +#~ msgid "Forget the last hour" +#~ msgstr "Esquecer a última hora" + +#~ msgid "Forget the last two hours" +#~ msgstr "Esquecer as últimas dúas horas" + +#~ msgid "Forget a day" +#~ msgstr "Esquecer un día" + +#~ msgid "Forget everything" +#~ msgstr "Esquecer todo" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " mes" +#~ msgstr[1] " meses" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "durante " + +#~ msgid "Create activity..." +#~ msgstr "Crear unha actividade..." + +#~ msgid "Activity switching" +#~ msgstr "Cambio de actividade" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Navegar polas actividades" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Navegar polas actividades (ao revés)" + +#~ msgid "Form" +#~ msgstr "Formulario" + +#~ msgid "Remember opened documents:" +#~ msgstr "Lembrar os documentos abertos:" + +#~ msgid "For a&ll applications" +#~ msgstr "En &calquera programa" + +#~ msgid "&Do not remember" +#~ msgstr "&Non lembrar" + +#~ msgid "O&nly for specific applications" +#~ msgstr "&Só para programas específicos" + +#~ msgid "Keep history" +#~ msgstr "Manter o historial" + +#~ msgid "Clear recent history" +#~ msgstr "Limpar o historial recente" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Pór na lista negra todos os programas que non estean nesta lista" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Lembrar o escritorio virtual actual para cada actividade (require " +#~ "reiniciar)." + +#~ msgid "Shortcuts" +#~ msgstr "Atallos de teclado" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Privada. Non facer seguimento do uso desta actividade." + +#~ msgid "Delete" +#~ msgstr "Eliminar" + +#~ msgid "Activity name" +#~ msgstr "Nome da actividade" + +#~ msgid "Available Features" +#~ msgstr "Funcionalidades dispoñíbeis" + +#~ msgid "Plugins" +#~ msgstr "Complementos" + +#~ msgid "Enable activities management" +#~ msgstr "Activar a xestión das actividades" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "O xestor da actividade non se está a executar correctamente." + +#~ msgid "Activities..." +#~ msgstr "Actividades…" + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" + +#~ msgctxt "Header title for resource data model" +#~ msgid "Resource" +#~ msgstr "Recurso" diff --git a/po/gl/kio5_archive.po b/po/gl/kio5_archive.po new file mode 100644 index 0000000..561104a --- /dev/null +++ b/po/gl/kio5_archive.po @@ -0,0 +1,41 @@ +# translation of kio_archive.po to galician +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# mvillarino , 2007. +# marce villarino , 2009. +# Adrián Chaves (Gallaecio) , 2017. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2017-09-28 21:53+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Non se puido abrir o ficheiro, debido posibelmente a un formato de ficheiro " +"non permitido.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Non se puido abrir o ficheiro de arquivo, debido posibelmente a que o " +"formato non estea permitido.\n" +"%1" diff --git a/po/gl/kio5_bookmarks.po b/po/gl/kio5_bookmarks.po new file mode 100644 index 0000000..db59835 --- /dev/null +++ b/po/gl/kio5_bookmarks.po @@ -0,0 +1,81 @@ +# translation of kio_bookmarks.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 , 2008, 2009. +# marce villarino , 2009. +# Marce Villarino , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2012-01-10 15:45+0100\n" +"Last-Translator: Marce Villarino \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Raíz" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Lugares" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Pedido incorrecto: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Aínda non hai ningún marcador que mostrar." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Non se atopou o ficheiro CSS de kio_bookmarks. A saída terá un aspecto feo.\n" +"Comprobe a instalación." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Os meus marcadores" + +#~ msgid "My bookmarks" +#~ msgstr "Os meus marcadores" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Primeiro desenvolvente" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Marce Villarino" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mvillarino@users.sourceforge.net" diff --git a/po/gl/kio5_fish.po b/po/gl/kio5_fish.po new file mode 100644 index 0000000..4ac11a2 --- /dev/null +++ b/po/gl/kio5_fish.po @@ -0,0 +1,47 @@ +# translation of kio_fish.po to Galician +# translation of kio_fish.po to galician +# Copyright (C) 2004, 2006 Free Software Foundation, Inc. +# +# Littleagle Thoronaug , 2004. +# Xabi G. Feal , 2006. +# marce villarino , 2009. +# Marce Villarino , 2012. +# Adrián Chaves (Gallaecio) , 2017. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2017-09-09 12:33+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Estase a conectar…" + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Estase a iniciar o protocolo…" + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Acceso local" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticación SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Desconectado." diff --git a/po/gl/kio5_info.po b/po/gl/kio5_info.po new file mode 100644 index 0000000..df2cf70 --- /dev/null +++ b/po/gl/kio5_info.po @@ -0,0 +1,32 @@ +# translation of kio_info.po to galician +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marce Villarino , 2009. +# marce villarino , 2009. +# Marce Villarino , 2011. +# Marce Villarino , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2012-01-10 15:42+0100\n" +"Last-Translator: Marce Villarino \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Non se pode atopar o ficheiro %1 preciso para executar este servizo. " +"Comprobe a instalación." diff --git a/po/gl/kio5_man.po b/po/gl/kio5_man.po new file mode 100644 index 0000000..08f61ce --- /dev/null +++ b/po/gl/kio5_man.po @@ -0,0 +1,247 @@ +# translation of kio_man.po to galician +# Galician translation of kio_man. +# Copyright (C) 2000 Jesús Bravo Álvarez. +# Jesús Bravo Álvarez , 2000. +# Xabi García , 2004. +# Xabi G. Feal , 2006. +# mvillarino , 2007, 2008, 2009. +# marce villarino , 2009. +# Marce Villarino , 2009, 2011. +# Marce Villarino , 2012. +# Adrián Chaves Fernández (Gallaecio) , 2017. +# Adrián Chaves (Gallaecio) , 2017, 2019. +# +# Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas +# colaborar connosco, podes atopar máis información en http://trasno.gpul.org +# +# First Version: 2000-09-30 11:13+0200 +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-07-28 11:17+0200\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.04.1\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Non se atopou ningunha páxina de manual de %1.

        Comprobe que non " +"escribiu mal o nome da páxina.
        Comprobe que escribiu o nome coas " +"maiúsculas e minúsculas correctamente.
        Se todo semella correcto, entón " +"poida que precise mellorar a ruta de busca mellor para as páxinas de manual, " +"sexa mediante a variábel de contorno MANPATH ou mediante un ficheiro no " +"directorio /etc que corresponda." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "The specified man page referenced another page '%1',
        but the " +#| "referenced page '%2' could not be found." +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"A páxina de manual indicada facía referencia a outra páxina, «%1»,
        pero " +"non puido atoparse a páxina «%2» á que se facía referencia." + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Erro do Visor de páxinas de manual de KDE

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Hai máis dunha páxina man coincidente." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Nota: se le unha páxina de manual no seu idioma, sexa consciente de que pode " +"conter algúns erros ou estar obsoleta. No caso de dúbida, debería botar unha " +"ollada á versión en inglés." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Ficheiros de cabeceira" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Ficheiros de cabeceira (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Ordes de usuario" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Ordes de usuario (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Chamadas ao sistema" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Sub-rutinas" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Módulos de Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Funcións de rede" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formatos de ficheiro" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Xogos" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversos" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administración do sistema" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentación local" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Índice do manual de Unix" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sección %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Índice da sección %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Índice do manual de Unix" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Estase a xerar o índice" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Non se puido atopar o programa sgml2roff no sistema. Por favor, instáleo, se " +"é preciso, e corrixa a ruta da busca axustando a variábel de contorno PATH " +"antes de iniciar KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Fallou a apertura de %1." + +#~ msgid "Man output" +#~ msgstr "Saída de man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Jesús Bravo, Xabi García, Marce Villarino" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jba@pobox.com, xabigf@gmx.net, mvillarino@users.sourceforge.net" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/gl/kio5_mtp.po b/po/gl/kio5_mtp.po new file mode 100644 index 0000000..90ea087 --- /dev/null +++ b/po/gl/kio5_mtp.po @@ -0,0 +1,38 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Adrián Chaves Fernández , 2015, 2017. +# Adrián Chaves (Gallaecio) , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-16 10:30+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Non se atoparon dispositivos de almacenamento. Asegúrese de que o " +"dispositivo está desbloqueado e de que ten MTP activado na configuración da " +"súa conexión por USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Non se pode copiar nin mover os ficheiros no dispositivo en si." + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Non se atopou ningún sistema de almacenamento. Pode ser que necesite " +#~ "desbloquear o dispositivo." diff --git a/po/gl/kio5_network.po b/po/gl/kio5_network.po new file mode 100644 index 0000000..746de1f --- /dev/null +++ b/po/gl/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# Adrián Chaves (Gallaecio) , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-03-07 17:52+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.08.3\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Rede" diff --git a/po/gl/kio5_nfs.po b/po/gl/kio5_nfs.po new file mode 100644 index 0000000..9539857 --- /dev/null +++ b/po/gl/kio5_nfs.po @@ -0,0 +1,70 @@ +# translation of kio_nfs.po to galician +# Copyright (C) 2002, 2003, 2006, 2007 Free Software Foundation, Inc. +# +# Javier Jardón , 2002, 2003. +# Xabi G. Feal , 2006. +# mvillarino , 2007. +# marce villarino , 2009. +# Adrián Chaves Fernández , 2015. +# Adrián Chaves (Gallaecio) , 2017. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2017-09-28 21:53+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Esta versión de NFS non é compatíbel." + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Erro %1 de RPC" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Non queda espazo no dispositivo" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Sistema de ficheiros de só lectura" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "O nome do ficheiro é longo de máis" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Excedeuse a cota do disco" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Erro %1 de NFS: %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Non se puido montar %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Destino descoñecido" + +#~ msgid "An RPC error occurred." +#~ msgstr "Aconteceu un erro RPC." diff --git a/po/gl/kio5_recentdocuments.po b/po/gl/kio5_recentdocuments.po new file mode 100644 index 0000000..bbbc271 --- /dev/null +++ b/po/gl/kio5_recentdocuments.po @@ -0,0 +1,22 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marce Villarino , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-28 23:42+0200\n" +"Last-Translator: Marce Villarino \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documentos recentes" diff --git a/po/gl/kio5_sftp.po b/po/gl/kio5_sftp.po new file mode 100644 index 0000000..3f94750 --- /dev/null +++ b/po/gl/kio5_sftp.po @@ -0,0 +1,292 @@ +# translation of kio_sftp.po to galician +# Copyright (C) 2002, 2003, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# +# Javier Jardón , 2002, 2003. +# Xabi G. Feal , 2006. +# mvillarino , 2007, 2008, 2009. +# marce villarino , 2009. +# Marce Villarino , 2009. +# Marce Villarino , 2012, 2013, 2014. +# Adrián Chaves Fernández , 2015. +# Adrián Chaves (Gallaecio) , 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2019-03-15 23:03+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "A frase de paso ou é incorrecta ou incorrecta" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Non se puido asignar memoria ás chamadas" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Non se puido estabelecer o nivel de detalle do rexistro." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Non se puido estabelecer o rexistro dos datos do usuario." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Non se puido estabelecer a resposta do rexistro." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Acceso por SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Empregue o campo de entrada do nome de usuario para responder esta pregunta." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Insira o seu contrasinal." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Sitio:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Non se puido crear unha sesión de SSH nova." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Non se puido definir o tempo de espera." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Non se puido desactivar o algoritmo de Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Non se puido definir a compresión." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Non se puido estabelecer o servidor." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Non se puido estabelecer o porto." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Non se puido estabelecer o nome de usuario." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Non se puido procesar o ficheiro de configuración." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Estase a abrir unha conexión SFTP co servidor %1:%2." + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Non se puido obter o nome do tipo de chave pública do servidor" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Non se puido crear o hash da chave pública do servidor" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Non se puido crear a pegada dixital para a chave pública do servidor" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Non se atopou unha chave %1 para este servidor pero existe outro tipo de " +"chave.\n" +"Un atacante podería cambiar a chave predeterminada do servidor para " +"confundir o seu cliente e facerlle pensa que a chave non existe.\n" +"Contacte co administrador do sistema.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Cambiouse a chave do servidor %1.\n" +"Isto pode significar ou que se está producindo DNS SPOOFING ou que se " +"cambiaron o enderezo IP do servidor e a súa chave á vez.\n" +"A pegada dixital da chave %2 enviada polo servidor remoto é:\n" +" SHA256:%3\n" +"Contacte co administrador do sistema.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Aviso: Non se pode verificar a identidade do servidor." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Non se pode estabelecer a autenticidade do servidor %1.\n" +"A pegada dixital da chave %2 é: %3\n" +"Seguro que quere continuar a conectar?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Fallou a autenticación." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Fallou a autenticación. O servidor non enviou ningún método de autenticación." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Insira o seu nome de usuario e o contrasinal." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "O nome de usuario ou o contrasinal é incorrecto" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Non se pode pedir o subsistema SFTP. Asegúrese de que SFTP está activado no " +"servidor." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Non se puido inicializar a sesión SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Conectou con %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Non se atopou a chave para este servidor pero existe outro tipo de chave.\n" +"Un atacante podería cambiar a chave predeterminada do servidor para " +"confundir o seu cliente e facerlle pensa que a chave non existe.\n" +"Contacte co administrador do sistema.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Cambiouse a chave do servidor %1.\n" +"Isto pode significar ou que se está producindo DNS SPOOFING ou que se " +"cambiaron o enderezo IP do servidor e a súa chave á vez.\n" +"A pegada dixital da chave enviada polo servidor remoto é:\n" +" %2\n" +"Contacte co administrador do sistema.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Non se pode estabelecer a autenticidade do servidor %1.\n" +"A pegada dixital da chave é: %2\n" +"Seguro que quere continuar a conectar?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexto de SFTP incorrecto" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Non se puideron cambiar os permisos de\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Non se puido ler a ligazón: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Non se especificou ningún servidor." diff --git a/po/gl/kio5_smb.po b/po/gl/kio5_smb.po new file mode 100644 index 0000000..683e394 --- /dev/null +++ b/po/gl/kio5_smb.po @@ -0,0 +1,194 @@ +# translation of kio_smb.po to galician +# Copyright (C) 2002, 2003, 2006, 2007, 2009 Free Software Foundation, Inc. +# Javier Jardón , 2002, 2003. +# Xabi G. Feal , 2006. +# mvillarino , 2007, 2009. +# marce villarino , 2009. +# Marce Villarino , 2012. +# Adrián Chaves , 2017, 2018, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-03-07 17:53+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.08.3\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "" +"Por favor, insira a información de autenticación para %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Por favor, insira a información de autenticación para:\n" +"Servidor = %1\n" +"Recurso compartido = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tipo de ficheiro descoñecido, nin directorio nin ficheiro." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Non se pode atopar ningún grupo de traballo na rede local. Isto pode deberse " +"a unha devasa activada." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Non hai ningún medio no dispositivo para %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Non se puido conectar co servidor para %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Erro ao conectarse ao servidor responsábel para %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Non se puido atopar o recurso compartido no servidor dado" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descritor de ficheiro incorrecto" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Non se puido resolver o nome fornecido a un único servidor. Verifique que a " +"rede está configurada sen conflitos de nomes entre os empregados pola " +"resolución de nomes de Windows e de UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: non se pode alcanzar o servidor" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient devolveu un erro, pero non indicou cal. Isto pode indicar un " +"problema grave na rede pero tamén pode indicar un problema con " +"libsmbclient.\n" +"Se nos quere axudar, forneza un tcpdump da interface de rede cando intente " +"navegar (atención: esta información pode conter datos confidenciais, por iso " +"non a envíe se non ten a certeza de que non os conteña. Pode enviala de " +"forma privada aos desenvolvedores se eles lla piden)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condición de erro descoñecida ao obter o estado: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Produciuse un erro ao intentar acceder a %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient non puido crear o contexto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Asegúrese de que o paquete samba está axeitadamente instalado no sistema." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Fallou a montaxe da compartición «%1» do servidor «%2» polo usuario «%3».\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Fallou a desmontaxe do punto «%1».\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Dispositivo descoñecido @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient non puido inicializar o contexto" + +#~ msgid "File does not exist: %1" +#~ msgstr "O ficheiro non existe: %1" diff --git a/po/gl/kio5_thumbnail.po b/po/gl/kio5_thumbnail.po new file mode 100644 index 0000000..0b53747 --- /dev/null +++ b/po/gl/kio5_thumbnail.po @@ -0,0 +1,90 @@ +# translation of kio_thumbnail.po to galician +# +# Xabier Villar , 2005. +# Xabi G. Feal , 2006. +# mvillarino , 2007. +# marce villarino , 2009. +# Marce Villarino , 2011. +# Marce Villarino , 2011, 2012. +# Adrián Chaves (Gallaecio) , 2017. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2017-11-01 14:38+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rotar automaticamente a imaxe" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Non se especificou un tipo MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Tamaño sen especificar ou incorrecto." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Non se pode crear a miniatura do directorio" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Non se especificou un complemento." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Non se pode cargar ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Non se pode crear a miniatura de %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Non se puido crear unha miniatura." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Non se puido escribir a imaxe." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Non se puido conectar ao segmento de memoria compartida %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "A imaxe é demasiado grande para o segmento de memoria compartida" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Xabier Villar, Xabi G. Feal, Marce Villarino" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "" +#~ "xabier.villar@gmail.com, xabigf@gmx.net, mvillarino@users.sourceforge.net" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/he/kfileaudiopreview5.po b/po/he/kfileaudiopreview5.po new file mode 100644 index 0000000..e14eb2a --- /dev/null +++ b/po/he/kfileaudiopreview5.po @@ -0,0 +1,38 @@ +# Translation of kfileaudiopreview4.po to Hebrew +# translation of kfileaudiopreview4.po to Hebrew +# translation of kfileaudiopreview4.po to hebrew +# Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc. +# +# Diego Iastrubni , 2003. +# Diego Iastrubni , 2004, 2012. +# Meni Livne , 2007. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "נגן באופן או&טומטי" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "התחל השמעה" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "השהה השמעה" diff --git a/po/he/kio5_activities.po b/po/he/kio5_activities.po new file mode 100644 index 0000000..a7c497a --- /dev/null +++ b/po/he/kio5_activities.po @@ -0,0 +1,68 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Diego Iastrubni , 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_activities\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Zanata 3.9.6\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, fuzzy, kde-format +msgid "Activities" +msgstr "בטל נעילת הפעילות" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +msgid "The Activity Manager is not running" +msgstr "מנהל פעילויות לא פועל כהלכה." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, fuzzy, kde-format +msgid "Link to the current activity" +msgstr "בטל את הגנת הפעילות" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, fuzzy, kde-format +msgid "Unlink from the current activity" +msgstr "בטל את הגנת הפעילות" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, fuzzy, kde-format +msgid "Activity" +msgstr "בטל נעילת הפעילות" + +#: KioActivities.cpp:230 +#, fuzzy, kde-format +msgid "Current activity" +msgstr "בטל את הגנת הפעילות" diff --git a/po/he/kio5_archive.po b/po/he/kio5_archive.po new file mode 100644 index 0000000..b3f80b8 --- /dev/null +++ b/po/he/kio5_archive.po @@ -0,0 +1,38 @@ +# translation of kio_tar.po to hebrew +# +# Israel Berger , 2005. +# Diego Iastrubni , 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"לא יכול לפתוח את הקובץ. כנראה בגלל פורמט קובץ שאינו נתמך.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"קובץ הארכיב לא יכול להיפתח. כנראה בגלל שהפורמט לא נתמך.\n" +"%1" diff --git a/po/he/kio5_bookmarks.po b/po/he/kio5_bookmarks.po new file mode 100644 index 0000000..026482a --- /dev/null +++ b/po/he/kio5_bookmarks.po @@ -0,0 +1,63 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Diego Iastrubni , 2008, 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "שורש" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "מקומות" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "בקשה לא תקינה: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "אין עוד סימניות לתצוגה" + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"גיליון הסגנון (CSS) של kio_bookmarks לא נמצא. הפלט לא יראה במיטבו.\n" +"אנא בדוק את ההתקנה שלך." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "הסימניות שלי" diff --git a/po/he/kio5_fish.po b/po/he/kio5_fish.po new file mode 100644 index 0000000..df0e4bc --- /dev/null +++ b/po/he/kio5_fish.po @@ -0,0 +1,53 @@ +# Translation of kio_fish.po to Hebrew +# KDE Hebrew Localization Project +# +# In addition to the copyright owners of the program +# which this translation accompanies, this translation is +# Copyright (C) 2003 Meni Livne +# +# This translation is subject to the same Open Source +# license as the program which it accompanies. +# +# tahmar1900 , 2006. +# Meni Livne , 2007. +# Diego Iastrubni , 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "מתחבר..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "מאתחל את הפרוטוקול..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "כניסה מקומית" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "אימות SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "מנותק." diff --git a/po/he/kio5_info.po b/po/he/kio5_info.po new file mode 100644 index 0000000..ff12b2a --- /dev/null +++ b/po/he/kio5_info.po @@ -0,0 +1,30 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Diego Iastrubni , 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"אין אפשרות למצוא את הקובץ %1 שנחוץ כדי להריץ את השירות הזה. אנא בדוק את " +"ההתקנה שלך." diff --git a/po/he/kio5_man.po b/po/he/kio5_man.po new file mode 100644 index 0000000..f8f27a4 --- /dev/null +++ b/po/he/kio5_man.po @@ -0,0 +1,234 @@ +# Translation of kio_man.po to Hebrew +# KDE Hebrew Localization Project +# +# In addition to the copyright owners of the program +# which this translation accompanies, this translation is +# Copyright (C) 2000-2002 Meni Livne +# +# This translation is subject to the same Open Source +# license as the program which it accompanies. +# +# tahmar1900 , 2006. +# Meni Livne , 2007. +# Diego Iastrubni , 2008, 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"לא נמצא דף הוראות המתאים ל־ %1.

        בדוק ששם הדף שביקשת אינו שגוי." +"
        שים לב להבדל בין אותיות רגילות לרישיות.
        אם הכל נראה תקין, כנראה " +"שיש 
להגדיר נתיב חיפוש טוב יותר לדפי ההוראות, בין אם על ידי שינוי משתנה הסביבה " +"MANPATH או הקובץ המתאים בתיקייה ‎‎/etc‏.
        " + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        שגיאה של מציג דפי ההוראות של KDE

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "יותר מדף הוראות אחד מתאים." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"הערה: אם אתה קורא דף הוראות בשפה שלך, היה מודע לכך שהוא עלול להכיל טעויות או " +"להיות מיושן. במקרה של ספק, עדיף לבדוק את הגירסה האנגלית." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "קבצי כותרת" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "קבצי כותרת (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "פקודות משתמש" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "פקודות משתמש (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "קריאות מערכת" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "תת־שגרות" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "מודולים של Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "פונקציות רשת" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "התקנים" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "תבניות קבצים" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "משחקים" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "שונות" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "ניהול המערכת" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "גרעין" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "תיעוד מקומי" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "חדש" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "אינדקס דפי ההוראות של Unix" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "פרק %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "תוכן העניינים לפרק %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "אינדקס דפי ההוראות של Unix" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "יוצר אינדקס" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"אין אפשרות למצוא את התוכנית sgml2roff במערכת שלך. אם יש צורך, התקן אותה " +"והרחב את נתיב החיפוש על ידי התאמת מישתנה הסביבה PATH לפני הפעלת KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "פתיחת %1 נכשלה." + +#~ msgid "Man output" +#~ msgstr "פלט הפקודה Man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "צוות התרגום של KDE ישראל" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kde-l10n-he@kde.org" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/he/kio5_nfs.po b/po/he/kio5_nfs.po new file mode 100644 index 0000000..08765fb --- /dev/null +++ b/po/he/kio5_nfs.po @@ -0,0 +1,72 @@ +# translation of kio_nfs.po to Hebrew +# KDE Hebrew Localization Project +# Translation of kio_nfs.po into Hebrew +# +# In addition to the copyright owners of the program +# which this translation accompanies, this translation is +# Copyright (C) 2001-2002 Meni Livne +# +# This translation is subject to the same Open Source +# license as the program which it accompanies. +# +# Diego Iastrubni , 2004, 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "לא נשאר מקום על ההתקן." + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "מערכת קבצים לקריאה בלבד" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "שם הקובץ ארוך מדיי" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "חריגה ממכסת הדיסק" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" diff --git a/po/he/kio5_recentdocuments.po b/po/he/kio5_recentdocuments.po new file mode 100644 index 0000000..ac1ad20 --- /dev/null +++ b/po/he/kio5_recentdocuments.po @@ -0,0 +1,24 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Diego Iastrubni , 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Zanata 3.9.6\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "מסמכים שהיו בשימוש לאחרונה" diff --git a/po/he/kio5_sftp.po b/po/he/kio5_sftp.po new file mode 100644 index 0000000..d1e1d13 --- /dev/null +++ b/po/he/kio5_sftp.po @@ -0,0 +1,310 @@ +# translation of kio_sftp.po to Hebrew +# KDE Hebrew Localization Project +# Translation of kio_sftp.po into Hebrew +# +# In addition to the copyright owners of the program +# which this translation accompanies, this translation is +# Copyright (C) 2001-2002 Meni Livne +# +# This translation is subject to the same Open Source +# license as the program which it accompanies. +# +# Diego Iastrubni , 2004. +# tahmar1900 , 2006. +# Diego Iastrubni , 2008, 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2017-05-24 08:47-0400\n" +"Last-Translator: Elkana Bardugo \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "שם ססמה שגויה או לא תקינה" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "אין אפשרות להקצות callbacks" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "אין אפשרות לקבוע את דרגת הרישום." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "" + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +msgid "Could not set log callback." +msgstr "אין אפשרות להקצות callbacks" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "כניסה למערכת SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "השתמש בשם השדה המשתמש בכדי לענות על השאלה הזאת." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "הזן את הססמה שלך." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "אתר:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "אין אפשרות לפתוח הפעלה של SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "אין אפשרות להקצות זמן תפוגה." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "אין אפשרות לקבוע את מספר היציאה." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "אין אפשרות לקבוע את הכיווץ." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "אין אפשרות לקבוע את המארח." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "אין אפשרות לקבוע את מספר היציאה." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "אין אפשרות לקבוע את שם המשתמש." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "אין אפשרות לפענח את קובץ התצורה" + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "פותח חיבור SFTP אל המארח %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "אין אפשרות לקבוע את שם המשתמש." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"מפתח המארח של השרת הזה לא נמצא, אבל סוג אחר של מפתח נמצא. \n" +"תוקף יכול לשנות את מפתח ברירת המחדל בכדי לשכנע את הלקוח שלך שהמפתח שלך לא " +"קיים.\n" +"אנא צור קשר עם מנהל הרשת.\n" +"%1 " + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"מפתח המארח של %1 שונתה.\n" +"ייתכן ואתה קורבן של DNS SPOOFING או כתובת ה־IP של השרת והמפתח שונו באותו " +"הזמן.\n" +"הטביעה שנשלחה מהשרת היא:\n" +"%2.\n" +"אנא צור קשר עם מנהל המערכת.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "אזהרה: אין אפשרות לוודא את זהות המארח." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"אין אפשרות לאמת את הזהות של המארח %1.\n" +"טביעת האצבע של המפתח היא: %2 \n" +"האם אתה בטוח שאתה רוצה להמשיך להתחבר?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "האימות נכשל." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "האימות נכשל. השרת לא שלח שום שיטה לאימות" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "הזן את שם המשתמש והססמה שלך." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "שם משתמש או ססמה שגויים" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "אין אפשרות לבקש את תת מערכת ה־SFTP. אנא וודא ש־SFTP מופעל בשרת." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "אין אפשרות להפעיל את הפעלת ה־SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "ההתחברות אל %1 הצליחה" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"מפתח המארח של השרת הזה לא נמצא, אבל סוג אחר של מפתח נמצא. \n" +"תוקף יכול לשנות את מפתח ברירת המחדל בכדי לשכנע את הלקוח שלך שהמפתח שלך לא " +"קיים.\n" +"אנא צור קשר עם מנהל הרשת.\n" +"%1 " + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"מפתח המארח של %1 שונתה.\n" +"ייתכן ואתה קורבן של DNS SPOOFING או כתובת ה־IP של השרת והמפתח שונו באותו " +"הזמן.\n" +"הטביעה שנשלחה מהשרת היא:\n" +"%2.\n" +"אנא צור קשר עם מנהל המערכת.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"אין אפשרות לאמת את הזהות של המארח %1.\n" +"טביעת האצבע של המפתח היא: %2 \n" +"האם אתה בטוח שאתה רוצה להמשיך להתחבר?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"אין אפשרות לשנות הגדרות עבור\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "אין אפשרות לקרוא את הקישור: %1" diff --git a/po/he/kio5_smb.po b/po/he/kio5_smb.po new file mode 100644 index 0000000..bc5e81a --- /dev/null +++ b/po/he/kio5_smb.po @@ -0,0 +1,198 @@ +# translation of kio_smb.po to hebrew +# KDE Hebrew Localization Project +# Translation of kio_smb.po into Hebrew +# +# In addition to the copyright owners of the program +# which this translation accompanies, this translation is +# Copyright (C) 2001-2002 Meni Livne +# +# This translation is subject to the same Open Source +# license as the program which it accompanies. +# +# Dror Levin , 2003. +# Shlomi Loubaton , 2003. +# Diego Iastrubni , 2005, 2008. +# tahmar1900 , 2006. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "הזן מידע אימות עבור %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"הזן מידע אימות עבור:\n" +"שרת = %1\n" +"שיתוף = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"סוג קובץ לא ידוע, אינו קובץ או תיקייה." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"לא ניתן למצוא קבוצות עבודה ברשת המקומית שלך. דבר זה יכול להיגרם בגלל חומת־אש " +"פתוחה." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "אין מדיה בכונן בשביל %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "אין אפשרות להתחבר לשרת עבור %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "שגיאה במהלך התחברות לשרת האחראי ל־%1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "אין אפשרות למצוא את השיתוף בשרת הנתון" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "מתאר קובץ פגום" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"אין אפשרות לפענח את השם הנתון לשרת מסויים. אנא בדוק שהרשת שלך מוגדרת ללא " +"התנגשויות שמות בשימוש על ידי מערכות Windows ו־UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"הספרייה libsmbclient דיווחה על שגיאה, אך לא ציין מה היא. דבר זה עלול להעיד " +"על בעיה חמורה עם הרשת שלך - אך עלול גם להעיד על בעיה עם libsmbclient.\n" +" אם ברצונך לעזור לנו, בבקשה צרף tcpdump של ממשק הרשת שלך בזמן שאתה מנסה " +"לעיין (שים לה כי זה עלול להכיל מידע אישי, לכן אל תשלח את זה אם אינך בטוח " +"לגבי זה - אתה יכול לשלוח את זה בפרטיות למפתח אם הוא \tמבקש ממך)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "מצב שגיאה לא ידוע ב־stat: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "הספרייה libsmbclient נכשלה ביצירת הקשר" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"וודא כי החבילה samba מותקנת כראוי במערכת שלך." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"עגינה של השיתוף \"%1\" מהשרת \"%2\" על ידי המשתמש \"%3\" נכשלה. \n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"הפסקת עגינה של נקודת העגינה \"%1\" נכשלה. \n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "הספרייה libsmbclient נחכשלה באיתחול הקשר" + +#~ msgid "File does not exist: %1" +#~ msgstr "קובץ לא קיים: %1" diff --git a/po/he/kio5_thumbnail.po b/po/he/kio5_thumbnail.po new file mode 100644 index 0000000..1f19571 --- /dev/null +++ b/po/he/kio5_thumbnail.po @@ -0,0 +1,75 @@ +# translation of kio_thumbnail.po to hebrew +# +# tahmar1900 , 2006. +# Diego Iastrubni , 2008, 2012. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kio5_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2017-05-16 07:03-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "סובב את התמונה באופן אוטומטי" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "לא התקבל סוג MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "גודל שגוי או לא קיים צוין." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "אין אפשרות ליצור ספרייה עבור הדוגמיות" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "לא צוין תוסף." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "אין אפשרות לטעון יוצר־דוגמיות %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "אין אפשרות ליצור דוגמית עבור %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "שגיאה ביצירת דוגמית." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "אין אפשרות לכתוב תמונה." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "נכשל צירוף למקטע זיכרון משותף %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "תמונה גדולה מדי עבור מקטע הזיכרון המשותף" diff --git a/po/hi/kfileaudiopreview5.po b/po/hi/kfileaudiopreview5.po new file mode 100644 index 0000000..8b719f7 --- /dev/null +++ b/po/hi/kfileaudiopreview5.po @@ -0,0 +1,37 @@ +# translation of kfileaudiopreview4.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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2007-11-15 17:58+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "स्वचलित बजाएँ (&a)" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "" + +#~ msgid "Media Player" +#~ msgstr "मीडिया-प्लेयर" diff --git a/po/hi/kio5_activities.po b/po/hi/kio5_activities.po new file mode 100644 index 0000000..ec6224b --- /dev/null +++ b/po/hi/kio5_activities.po @@ -0,0 +1,87 @@ +# translation of kactivitymanagerd.po to Hindi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kactivitymanagerd\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2010-12-09 00:24+0530\n" +"Last-Translator: G Karunakar\n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "केडीई क्रियाएँ प्रबंधक" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "जी करूणाकर" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "karunakar@indlinux.org" + +#, fuzzy +#~| msgid "KDE Activity Management Service" +#~ msgid "Enable activities management" +#~ msgstr "केडीई क्रियाएँ प्रबंधन सेवा" + +#, fuzzy +#~| msgid "(c) 2010 Ivan Cukic, Sebastian Trueg" +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2010 Ivan Cukic, Sebastian Trueg" diff --git a/po/hi/kio5_archive.po b/po/hi/kio5_archive.po new file mode 100644 index 0000000..a6ffdbc --- /dev/null +++ b/po/hi/kio5_archive.po @@ -0,0 +1,38 @@ +# translation of kio_archive.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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2007-10-28 15:14+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"फ़ाइल को खोल नहीं सकता. संभवतः फ़ाइल असमर्थित फ़ाइल फ़ॉर्मेट में है.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"अभिलेख फ़ाइल खोला नहीं जा सका, संभवतः फ़ॉर्मेट असमर्थित है.\n" +"%1" diff --git a/po/hi/kio5_bookmarks.po b/po/hi/kio5_bookmarks.po new file mode 100644 index 0000000..5c34c7e --- /dev/null +++ b/po/hi/kio5_bookmarks.po @@ -0,0 +1,80 @@ +# translation of kio_bookmarks.po to Hindi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2010-12-09 01:48+0530\n" +"Last-Translator: G Karunakar\n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "रूट" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "स्थान" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "गलत अनुरोध : %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "दिखाने को कोई पसंदीदा नहीं हैं." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS फाइल नहीं मिला. आउटपुट गंदा दिखेगा.\n" +"संस्थापना जाँचे." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "मेरे पसंदीदा" + +#~ msgid "My bookmarks" +#~ msgstr "मेरे पसंदीदा" + +#~ msgid "Xavier Vello" +#~ msgstr "ज़ेवियर वेलो" + +#~ msgid "Initial developer" +#~ msgstr "मूल डेवलपर" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "जी करूणाकर" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "karunakar@indlinux.org" diff --git a/po/hi/kio5_fish.po b/po/hi/kio5_fish.po new file mode 100644 index 0000000..4ff2be0 --- /dev/null +++ b/po/hi/kio5_fish.po @@ -0,0 +1,45 @@ +# translation of kio_fish.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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2007-10-28 15:56+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "जुड़ रहा है..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "प्रोटोकॉल प्रारंभ किया जा रहा है..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "स्थानीय लॉगइन" + +#: fish.cpp:631 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "एसएसएच अनुमोदन" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "डिस्कनेक्टेड" diff --git a/po/hi/kio5_info.po b/po/hi/kio5_info.po new file mode 100644 index 0000000..3fa63d2 --- /dev/null +++ b/po/hi/kio5_info.po @@ -0,0 +1,29 @@ +# translation of kio_info.po to Hindi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2010-12-09 01:50+0530\n" +"Last-Translator: G Karunakar\n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"सेवा चलाने के लिए जरूरी फ़ाईल %1 नहीं मिला. कृपया सॉफ्टवेयर संस्थापना जाँचें." diff --git a/po/hi/kio5_man.po b/po/hi/kio5_man.po new file mode 100644 index 0000000..5bb7979 --- /dev/null +++ b/po/hi/kio5_man.po @@ -0,0 +1,216 @@ +# translation of kio_man.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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2007-10-28 16:00+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        केडीई मेनुअल प्रदर्शक त्रुटि

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "वहाँ मेन पृष्ठ के एक से अघिक संभव जोड़े हैं." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"टीप: यदि आप मेन पृष्ठों को अपनी भाषा में पढ़ रहे हों तो यह ध्यान रखें कि इसमें कुछ त्रुटियाँ " +"हो सकती हैं या फिर ये पुराने हो सकते हैं. संशय की स्थिति में इसके अंग्रेज़ी संस्करण को देखें." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "उपयोक्ता कमांड" + +#: kio_man.cpp:751 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "उपयोक्ता कमांड" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "सिस्टम काल्स" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "सबरूटीन्स" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "पर्ल मॉड्यूल्स" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "नियंत्रक फंक्शन्स" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "औज़ार" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "फ़ाइल फार्मेट्स" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "खेल" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "विविध" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "तंत्र प्रशासन" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "कर्नेल" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "स्थानीय दस्तावेज़ीकरण" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "नया" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "यूनिक्स मेनुअल निर्देशिका" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "खण्ड %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "खण्ड %1 के लिए अनुक्रमणिका: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "यूनिक्स मेनुअल निर्देशिका" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "निर्देशिका बनाया जा रहा है" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"आपके तंत्र पर sgml2roff प्रोग्राम नहीं मिला. कृपया इसे संस्थापित करें या यदि आवश्यकता " +"हो, केडीई प्रारंभ करने से पहले इसके खोज पथ को बढ़ा सकते हैं एनवायरनमेंट वेरिएबल पथ को " +"समंजित कर." + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 खोलने में असफल." + +#~ msgid "Man output" +#~ msgstr "मेन आउटपुट" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "रविशंकर श्रीवास्तव, जी. करूणाकर" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "raviratlami@aol.in," + +#~ msgid "KMan" +#~ msgstr "के-मेन" diff --git a/po/hi/kio5_nfs.po b/po/hi/kio5_nfs.po new file mode 100644 index 0000000..30dae74 --- /dev/null +++ b/po/hi/kio5_nfs.po @@ -0,0 +1,67 @@ +# translation of kio_nfs.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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2007-10-28 16:06+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "उपकरण में कोई जगह नहीं बची" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "सिर्फ पढ़ने के लिए फ़ाइल सिस्टम" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "फ़ाइलनाम अत्यधिक लम्बा है" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "डिस्क नियतांश सीमा से बाहर हो चुका है" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "एक आरपीसी त्रुटि हुई." diff --git a/po/hi/kio5_recentdocuments.po b/po/hi/kio5_recentdocuments.po new file mode 100644 index 0000000..42eaefe --- /dev/null +++ b/po/hi/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# G Karunakar , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-07-04 00:44+0530\n" +"Last-Translator: G Karunakar \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "हालिया दस्तावेज़" diff --git a/po/hi/kio5_sftp.po b/po/hi/kio5_sftp.po new file mode 100644 index 0000000..2f5ac50 --- /dev/null +++ b/po/hi/kio5_sftp.po @@ -0,0 +1,308 @@ +# translation of kio_sftp.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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2012-07-05 15:20+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_sftp.cpp:224 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "गलत उपयोक्ता-नाम या पासवर्ड " + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "कालबैक आवंटित नहीं किया जा सकता." + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "लॉग वर्बोसिटी सेट नहीं कर सका।" + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "लॉग वर्बोसिटी सेट नहीं कर सका।" + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "कालबैक आवंटित नहीं किया जा सकता." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "एसएफटीपी लॉगइन" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "इस सवाल का जवाब देने के लिए उपयोगकर्ता नाम इनपुट क्षेत्र का उपयोग करें।" + +#: kio_sftp.cpp:396 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "कृपया अपना उपयोक्ता-नाम तथा पासवर्ड भरें." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "साइटः" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "नया एसएसएच सत्र तैयार नहीं कर सका." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "समयअवधि नही सेट पर पाए" + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "पोर्ट नहीं सेट कर पाए." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "सपीडन नहीं सेट कर पाए" + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "होस्ट नहीं सेट कर पाए" + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "पोर्ट नहीं सेट कर पाए." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "उपयोक्तानाम रहीं सेट कर पाए." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "कॉन्फ़िग फ़ाइल को पार्स नहीं कर सकता।" + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "होस्ट %1:%2 से एसएफटीपी कनेक्शन खोला जा रहा है" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "उपयोक्तानाम रहीं सेट कर पाए." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"इस सर्वर के लिए होस्ट कुंजी नहीं मिला, लेकिन एक भिन्न प्रकार की कुंजी मौजूद है. \n" +"कोई हमलावर डिफ़ॉल्ट सर्वर कुंजी को बदल सकता है आपके क्लाएंट को भ्रमित करने के लिए कि कुंजी " +"मौजूद नहीं है. \n" +"कृपया अपने तंत्र प्रशासक से संपर्क करें.\n" +" %1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"सर्वर %1 के लिए होस्ट कुंजी बदल गया है.\n" +"इसका यह भी अर्थ हो सकता है कि डीएनएस SPOOFING हो रहा है या IP पता मेजबान और अपने " +"मेजबान कुंजी के लिए एक ही समय में बदल गया है. \n" +"दूरस्थ होस्ट द्वारा भेजे गए कुंजी के लिए फिंगरप्रिंट है: \n" +" %2\n" +"कृपया अपने तंत्र प्रशासक से संपर्क करें.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "चेतावनीः होस्ट का परिचय सत्यापित नहीं कर सका." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"होस्ट %1 की प्रामाणिकता स्थापित नहीं हो सकी.\n" +"कुंजी फिंगरप्रिंट है: %2\n" +"क्या आप निश्चित रूप से कनेक्ट करना जारी रखना चाहते हैं?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "प्रमाणीकरण असफल" + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "कृपया अपना उपयोक्ता-नाम तथा पासवर्ड भरें." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "गलत उपयोक्ता-नाम या पासवर्ड " + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP उपतंत्र अनुरोध करने में असमर्थ। सुनिश्चित करें कि SFTP सर्वर पर सक्षम किया गया है।" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "एसएफटीपी सत्र प्रारंभ नहीं कर सका।" + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 से सफलता पूर्वक जुड़ा" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"इस सर्वर के लिए होस्ट कुंजी नहीं मिला, लेकिन एक भिन्न प्रकार की कुंजी मौजूद है. \n" +"कोई हमलावर डिफ़ॉल्ट सर्वर कुंजी को बदल सकता है आपके क्लाएंट को भ्रमित करने के लिए कि कुंजी " +"मौजूद नहीं है. \n" +"कृपया अपने तंत्र प्रशासक से संपर्क करें.\n" +" %1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"सर्वर %1 के लिए होस्ट कुंजी बदल गया है.\n" +"इसका यह भी अर्थ हो सकता है कि डीएनएस SPOOFING हो रहा है या IP पता मेजबान और अपने " +"मेजबान कुंजी के लिए एक ही समय में बदल गया है. \n" +"दूरस्थ होस्ट द्वारा भेजे गए कुंजी के लिए फिंगरप्रिंट है: \n" +" %2\n" +"कृपया अपने तंत्र प्रशासक से संपर्क करें.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"होस्ट %1 की प्रामाणिकता स्थापित नहीं हो सकी.\n" +"कुंजी फिंगरप्रिंट है: %2\n" +"क्या आप निश्चित रूप से कनेक्ट करना जारी रखना चाहते हैं?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "%1 के लिए अनुमति नहीं बदल पाए" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "लिंक: %1 पढ़ नहीं सका" + +#~ msgid "No hostname specified." +#~ msgstr "कोई होस्टनाम उल्लेखित नहीं है." diff --git a/po/hi/kio5_smb.po b/po/hi/kio5_smb.po new file mode 100644 index 0000000..4d170da --- /dev/null +++ b/po/hi/kio5_smb.po @@ -0,0 +1,183 @@ +# translation of kio_smb.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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2007-10-28 16:20+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "कृपया %1 के लिए प्रमाणीकरण जानकारी भरें " + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"कृपया प्रमाणीकरण जानकारी भरें:\n" +"सर्वर = %1\n" +"साझेदारी = %2 के लिए" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"अज्ञात फ़ाइल क़िस्म, न तो डिरेक्ट्री न फ़ाइल." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"आपके स्थानीय नेटवर्क में कोई वर्कग्रुप ढूंढने में अक्षम. ऐसा किसी सक्षम किए गए फ़ायरवाल के " +"कारण हो सकता है." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 के लिए उपकरण में कोई मीडिया नहीं " + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 के लिए होस्ट से कनेक्ट नहीं हो पाया" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 के लिए जवाबदेह सर्वर से जुड़ने में त्रुटि" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "दिए गए सर्वर पर साझेदारी नहीं मिला" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "खराब फ़ाइल डिस्क्रिप्टर" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "स्टेट: %1 पर अज्ञात त्रुटि कंडीशन" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "संदर्भ बनाने में लिबएसएमबीक्लाएंट असफल" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"कृपया सुनिश्चित हों कि आपके तंत्र पर साम्बा पैकेज उचित प्रकार संस्थापित है." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"साझा \"%1\" को होस्ट \"%2\" से उपयोक्ता \"%3\" द्वारा माउन्ट किया जाना असफल.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"माउन्ट पाइन्ट \"%1\" को अनमाउन्ट करने में असफल.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "संदर्भ चालू करने में लिबएसएमबीक्लाएंट असफल" + +#~ msgid "File does not exist: %1" +#~ msgstr "फ़ाइलः %1 अस्तित्व में नहीं है" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "लिबएसएमबीक्लाएंट प्रारंभ होने में असफल" diff --git a/po/hi/kio5_thumbnail.po b/po/hi/kio5_thumbnail.po new file mode 100644 index 0000000..31a28a5 --- /dev/null +++ b/po/hi/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# translation of kio_thumbnail.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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2007-10-28 16:24+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "छवि को सवतः घुमाएँ" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "कोई माइम क़िस्म निर्दिष्ट नहीं है." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "आकार या तो अवैध है या नहीं दिया गया है." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "डॉरेक्ट्री के लिए लघुछवि बनाया नहीं जा सका" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "कोई प्लगइन उल्लेखित नहीं है." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "थम्बक्रिएटर %1 को लोड नहीं कर सका" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 के लिए लघुछवि बनाया नहीं जा सकता" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "लघुछवि बनाने में असफल" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "चित्र को लिखा नहीं जा सका." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "साझा मेमोरी खण्ड %1 में जुड़ने में असफल" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "साझा मेमोरी खण्ड के लिए यह चित्र बहुत बड़ा है" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "रविशंकर श्रीवास्तव, जी. करूणाकर" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "raviratlami@aol.in," + +#~ msgid "kio_thumbmail" +#~ msgstr "केआईओ_थम्बनेल" diff --git a/po/hr/kfileaudiopreview5.po b/po/hr/kfileaudiopreview5.po new file mode 100644 index 0000000..d3a0581 --- /dev/null +++ b/po/hr/kfileaudiopreview5.po @@ -0,0 +1,45 @@ +# Translation of kfileaudiopreview4 to Croatian +# +# Andrej Dundović , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-06-21 10:23+0200\n" +"Last-Translator: Andrej Dundović \n" +"Language-Team: Croatian \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 0.3\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Automatski pokreni" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "Pokreni reprodukciju" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "Pauziraj reprodukciju" + +#~ msgid "stop playback" +#~ msgstr "Zaustavi reprodukciju" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "petlja: ponovno pokreni reprodukciju na završetku" + +#~ msgid "Media Player" +#~ msgstr "Multimedijski svirač" diff --git a/po/hr/kio5_activities.po b/po/hr/kio5_activities.po new file mode 100644 index 0000000..edc49d7 --- /dev/null +++ b/po/hr/kio5_activities.po @@ -0,0 +1,89 @@ +# Translation of kactivitymanagerd to Croatian +# +# Marko Dimjasevic , 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2011-03-04 18:03+0100\n" +"Last-Translator: Marko Dimjasevic \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=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-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "KDE-ov upravitelj aktivnosti" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Marko Dimjasevic" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "marko@dimjasevic.net" + +#, fuzzy +#~| msgid "KDE Activity Management Service" +#~ msgid "Enable activities management" +#~ msgstr "KDE-ova usluga upravljanja aktivnostima" + +#, fuzzy +#~| msgid "(c) 2010 Ivan Cukic, Sebastian Trueg" +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "© 2010 Ivan Cukic, Sebastian Trueg" diff --git a/po/hr/kio5_archive.po b/po/hr/kio5_archive.po new file mode 100644 index 0000000..150f40e --- /dev/null +++ b/po/hr/kio5_archive.po @@ -0,0 +1,39 @@ +# Translation of kio_archive to Croatian +# +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2009-08-17 13:27+0200\n" +"Last-Translator: \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=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-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Ne mogu otvoriti datoteku, vjerojatno zbog nepodržanog formata datoteke.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Datoteka arhive ne može se otvoriti, vjerojatno zbog nepodržanog formata.\n" +"%1" diff --git a/po/hr/kio5_bookmarks.po b/po/hr/kio5_bookmarks.po new file mode 100644 index 0000000..f2198dc --- /dev/null +++ b/po/hr/kio5_bookmarks.po @@ -0,0 +1,82 @@ +# Translation of kio_bookmarks to Croatian +# +# DoDo , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2009-08-28 20:55+0200\n" +"Last-Translator: DoDo \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Korijen" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Mjesta" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Pogrešan zahtjev: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Još nema knjiških oznaka za prikazati." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS datoteka nije pronađena. Izlaz ne izgleda dobro.\n" +"Provjerite vašu instalaciju." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Moje knjiške oznake" + +#~ msgid "My bookmarks" +#~ msgstr "Moje knjiške oznake" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Inicijalni developer" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Žarko Pintar" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "zarko.pintar@gmail.com" diff --git a/po/hr/kio5_fish.po b/po/hr/kio5_fish.po new file mode 100644 index 0000000..0e04e2d --- /dev/null +++ b/po/hr/kio5_fish.po @@ -0,0 +1,55 @@ +# Translation of kio_fish to Croatian +# +# Andrej Dundović , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2009-06-21 07:25+0200\n" +"Last-Translator: Andrej Dundović \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=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-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Povezivanje …" + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicijalizacija protokola …" + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokalna prijava" + +#: fish.cpp:631 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH autorizacija" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Veza je prekinuta." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andrej Dundovic" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "adundovi@gmail.com" diff --git a/po/hr/kio5_info.po b/po/hr/kio5_info.po new file mode 100644 index 0000000..b4c2af2 --- /dev/null +++ b/po/hr/kio5_info.po @@ -0,0 +1,32 @@ +# Translation of kio_info to Croatian +# +# Andrej Dundović , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2010-01-13 22:54+0100\n" +"Last-Translator: Andrej Dundović \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%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" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Nije moguće locirati datoteku %1 koja je potrebna za pokretanje ove usluge. " +"Molim vas da provjerite vašu softversku instalaciju." diff --git a/po/hr/kio5_man.po b/po/hr/kio5_man.po new file mode 100644 index 0000000..90438c4 --- /dev/null +++ b/po/hr/kio5_man.po @@ -0,0 +1,233 @@ +# Translation of kio_man to Croatian +# +# Translators: Denis Lackovic ,Vlatko Kosturjak , +# Marko Dimjašević , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_man 0\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2011-07-18 11:47+0200\n" +"Last-Translator: Marko Dimjašević \n" +"Language-Team: Croatian \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.2\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Nije pronađena man stranica koja se slaže s %1.

        Provjerite da " +"niste krivo unjeli naziv man stranice koju želite.
        Provjerite da li ste " +"unijeli ime stranice koristeći ispravna velika i mala slova.
        Ako sve " +"izgleda korektno, onda trebate popraviti putanju traganja man stranica; ili " +"koristiti okolišnu varijablu MANPATH ili koristiti datoteku slaganja u /etc " +"direktoriju." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        KDE Man Viewer Error

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Postoji više od jedne odgovarajuće man stranice." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Bilješka: Ako čitate man stranicu u vašem jeziku, pripazite jer može " +"sadržavati neke greške ili je zastarjela. U slučaju dvoumljenja, trebate " +"pogledati u Englesku verziju" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Korisničke naredbe" + +#: kio_man.cpp:751 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Korisničke naredbe" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Sustavski pozivi" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Podrutine" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl moduli" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Mrežne funkcije" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Uređaji" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formati datoteka" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Igre" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Preostalo" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administriranje sustava" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Jezgra" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokalna dokumentacija" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Novi" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Indeks UNIX priručnika" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Poglavlje %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indeks poglavlja %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Indeks UNIX priručnika" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Pravim kazalo" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Ne mogu pronaći sgml2roff program na vašem sustavu. Molimo ga instalirajte," +"ukoliko je potrebno, i proširite vašu pretragu prilagođavajući PATH " +"varijablu okružja prije pokretanja KDE-a." + +#~ msgid "Open of %1 failed." +#~ msgstr "Neuspjelo otvaranje %1." + +#~ msgid "Man output" +#~ msgstr "Ispis Man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Denis Lackovic, Vlatko Kosturjak" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "lokalizacija@linux.hr, lokalizacija@linux.hr" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/hr/kio5_nfs.po b/po/hr/kio5_nfs.po new file mode 100644 index 0000000..65a29c6 --- /dev/null +++ b/po/hr/kio5_nfs.po @@ -0,0 +1,69 @@ +# Translation of kio_nfs to Croatian +# +# Andrej Dundović , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-07-01 08:59+0200\n" +"Last-Translator: Andrej Dundović \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=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-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Na uređaju nema više slobodnog prostora" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Datotečni sustav koji je samo za čitanje" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Naziv datoteke je predug" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Kvota diska je nadmašena" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "Došlo je do RPC pogreške." diff --git a/po/hr/kio5_sftp.po b/po/hr/kio5_sftp.po new file mode 100644 index 0000000..7bf9108 --- /dev/null +++ b/po/hr/kio5_sftp.po @@ -0,0 +1,474 @@ +# Translation of kio_sftp to Croatian +# +# Translators: Denis Lackovic ,Diana Ćorluka ,Jerko Škifić ,Mato Kutlić ,sime essert ,Vlatko Kosturjak , +# DoDo , 2009. +# Andrej Dundovic , 2009, 2010. +# Andrej Dundović , 2010. +# Marko Dimjašević , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp 0\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2011-03-14 20:15+0100\n" +"Last-Translator: Marko Dimjašević \n" +"Language-Team: Croatian \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.2\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_sftp.cpp:224 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Neispravno korisničko ime ili lozinka" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nije moguće rezervirati povratne pozive" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nije moguće postaviti opširnost dnevnika." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Nije moguće postaviti opširnost dnevnika." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Nije moguće rezervirati povratne pozive" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP prijavljivanje" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Koristite polje za unos korisničkog imena za odgovor na ovo pitanje." + +#: kio_sftp.cpp:396 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "Molim unesite vaše korisničko ime i šifru." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "računalo:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nije moguće stvoriti novu SSH sesiju." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nije moguće postaviti vremensko ograničenje." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Nije moguće postaviti port." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Nije moguće postaviti sabijanje." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Nije moguće postaviti poslužitelj." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Nije moguće postaviti port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "uNije moguće postaviti korisničko ime." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nije moguće obraditi konfiguracijsku datoteku." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Otvaram SFTP vezu prema računalu %1.%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "uNije moguće postaviti korisničko ime." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Ključ hosta za ovaj poslužitelj nije pronađen, ali postoji druga vrsta " +"ključa.\n" +"Moguće je da je napadač promijenio uobičajeni ključ poslužitelja da bi " +"zbunio vašeg klijenta tako da on misli da ključ ne postoji.\n" +"Molim da kontaktirate vešeg sistemskog administratora.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Ključ računala za poslužitelj %1 je promijenjen.\n" +"To može značiti da se događa DNS SPOOFING ili su se u isto vrijeme " +"promijenile IP adresa računala i njegov ključ.\n" +"Otisak ključa kojeg je poslalo udaljeno računalo je:\n" +" %2\n" +"Molim kontaktirajte administratora sustava.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Upozorenje: Ne mogu provjeriti indentitet računala!" + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Ovjeravanje hosta %1 ne može biti uspostavljeno.\n" +"Otisak ključa je: %2\n" +"Jeste li sigurni da želite nastaviti spajanje?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Neuspjelo spajanje." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Molim unesite vaše korisničko ime i šifru." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Nije moguće zahtjevati SFTP podsustav. Provjerite da li je SFTP omogućen na " +"poslužitelju." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Ne mogu pokrenuti SFTP sjednicu." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Uspješno uspostavljena veza sa %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Ključ hosta za ovaj poslužitelj nije pronađen, ali postoji druga vrsta " +"ključa.\n" +"Moguće je da je napadač promijenio uobičajeni ključ poslužitelja da bi " +"zbunio vašeg klijenta tako da on misli da ključ ne postoji.\n" +"Molim da kontaktirate vešeg sistemskog administratora.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Ključ računala za poslužitelj %1 je promijenjen.\n" +"To može značiti da se događa DNS SPOOFING ili su se u isto vrijeme " +"promijenile IP adresa računala i njegov ključ.\n" +"Otisak ključa kojeg je poslalo udaljeno računalo je:\n" +" %2\n" +"Molim kontaktirajte administratora sustava.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Ovjeravanje hosta %1 ne može biti uspostavljeno.\n" +"Otisak ključa je: %2\n" +"Jeste li sigurni da želite nastaviti spajanje?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nije moguće promijeniti dopuštenja za\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Nije moguće pročitati link: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Ime poslužitelja nije navedeno." + +#, fuzzy +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Unesite vaše korisničko ime i lozinku ključa." + +#, fuzzy +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Upozorenje: Identitet računala je promjenjen!" + +#~ msgid "Connection failed." +#~ msgstr "Neuspjelo spajanje." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Veza je prekinuta od strane udaljenog računala." + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP inačica %1" + +#~ msgid "Protocol error." +#~ msgstr "Greška u protokolu." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Udaljeno računalo ne podržava promijenu imena datoteka." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Udaljeno računalo ne podržava pravljenje simboličkih veza." + +#~ msgid "Connection closed" +#~ msgstr "Veza je zatvorena" + +#~ msgid "Could not read SFTP packet" +#~ msgstr "Ne mogu pročitati SFTP paket" + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP naredba nije uspijela iz nepoznatog razloga." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "SFTP poslužitelj je primio neispravnu poruku." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Pokušali ste operaciju koju SFTP poslužitelj ne podržava." + +#, fuzzy +#~ msgid "Error code: %1" +#~ msgstr "Kod greške:" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Ne mogu odrediti podsistem i naredbu u isto vrijeme." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Nije data nijedna opcija za izvršavanje ssh-a." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Nisam uspio izvršiti ssh proces." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Greška je pronađena prilikom razgovara sa ssh-om." + +#~ msgid "Please supply a password." +#~ msgstr "Unesite lozinku." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Navedite lozinku za vaš privatni SSH ključ." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Provjera autentičnosti za %1 nije uspjela" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Identitet udaljenog računala '%1' nije moguće provjeriti zato jer se " +#~ "ključ računala ne nalazi u datoteci \"poznatih računala\"." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ "Ručno dodajte ključ domaćina na \"known hosts\" ili kontaktirajte svog " +#~ "administratora" + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ "Ručno dodajte ključ domaćina na %1 ili kontaktirajte svog administratora" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Identitet udaljenog računala '%1' nije moguće potvrditi. Otisak ključa " +#~ "računala je:\n" +#~ "%2\n" +#~ "Trebali bi potvrditi otisak sa administratorom računala prije " +#~ "povezivanja.\n" +#~ "\n" +#~ "Želite li prihvatiti ključ računala i povezate se u svakom slučaju?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "UPOZORENjE: Identitet udaljenog računala '%1' je promjenjen!\n" +#~ "\n" +#~ "Moguće je da neko prisluškuje vašu vezu, ili je administrator upravo " +#~ "promijenio ključ računala. U svakom slučaju, trebalo bi potvrditi otisak " +#~ "prsta ključa računala sa administratorom računala prije povezivanja. " +#~ "Otisak ključa je:\n" +#~ "%2\n" +#~ "Dodajte ispravan ključ računala u '%3' kako biste se oslobodili ove " +#~ "poruke." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "UPOZORENjE: Identitet udaljenog računala '%1' je promjenjen!\n" +#~ "\n" +#~ "Moguće je da neko prisluškuje vašu vezu, ili je administrator upravo " +#~ "promijenio ključ računala. U svakom slučaju, trebalo bi potvrditi otisak " +#~ "prsta ključa računala sa administratorom računala prije povezivanja. " +#~ "Otisak ključa je:\n" +#~ "%2\n" +#~ "\n" +#~ "Želite li prihvatiti novi ključ računala i povezati se u svakom slučaju?" + +#~ msgid "Host key was rejected." +#~ msgstr "Ključ računala je odbačen." + +#, fuzzy +#~ msgid "Please enter a username and password" +#~ msgstr "Molim unesite korisničko ime i šifru" + +#~ msgid "Could not allocate memory for SFTP packet." +#~ msgstr "Ne mogu alocirati memoriju za SFTP paket." + +#~ msgid "SFTP slave unexpectedly killed" +#~ msgstr "SFTP sluga je neočekivano ubijen" diff --git a/po/hr/kio5_smb.po b/po/hr/kio5_smb.po new file mode 100644 index 0000000..fc3a4c8 --- /dev/null +++ b/po/hr/kio5_smb.po @@ -0,0 +1,198 @@ +# Translation of kio_smb to Croatian +# +# Translators: Denis Lackovic ,Mato Kutlić ,Nikola Planinac <>,sime essert ,Vlatko Kosturjak , +# Andrej Dundović , 2009. +# DoDo , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb 0\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2009-08-27 22:17+0200\n" +"Last-Translator: DoDo \n" +"Language-Team: Croatian \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" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Unesite informacije za autentifikaciju za %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Unesite informacije za autentifikaciju za:\n" +"Poslužitelj = %1\n" +"Dijeljenje = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Nepoznati tip datoteke, niti direktorija, niti datoteke." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Nisam mogao pronaći nijednu radnu grupu u vašoj lokalnoj mreži. Ovo može " +"biti uzrokovano uključenim vatrozidom." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Nema medija u uređaju za %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nije se moguće spojiti na host za %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Greška pri spajanju na poslužitelj odgovoran za %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Dijeljeni resursi nisu pronađeni na datom poslužitelju" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Neispravan opis datoteke" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Dano ime ne može biti razriješeno u jedinstveni poslužitelj. Pobrinite se da " +"je Vaša mreža postavljena bez konflikata među imenima korištenima od Windows " +"i UNIX razrješavanja imena." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient je prijavio grešku, ali nije naznačio u čemu je problem. Ovo " +"može značiti ozbiljan problem sa vašom mrežom, ali isto tako može značiti i " +"da je problem u libsmbclient-u.\n" +"Ako nam želite pomoći, molimo vas dan pošaljete tcpdump vašeg mrežnog " +"sučelja dok ste pokušavali pregledavati (budite svjesni da sadržaj može " +"sadržavati vaše privatne podatke pa nemojte slati ukoliko niste sigurni da " +"li ih ne sadrži – možete ga privatno poslati razvojnom timu)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Nepoznato stanje greške u stat-u: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Biblioteka libsmbclient nije uspješno inicijalizirana." + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Provjerite dali je samba paket ispravno postavljen na vašem sustavu." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Montiranje dijeljenja \"%1\" od domaćina \"%2\" od korisnika \"%3\" " +"neuspjelo.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Demontiranje montažne točke \"%1\" neuspjelo.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "Biblioteka libsmbclient nije uspješno inicijalizirana." + +#~ msgid "File does not exist: %1" +#~ msgstr "Datoteka ne postoji: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "Biblioteka libsmbclient nije uspješno inicijalizirana." diff --git a/po/hr/kio5_thumbnail.po b/po/hr/kio5_thumbnail.po new file mode 100644 index 0000000..03e805e --- /dev/null +++ b/po/hr/kio5_thumbnail.po @@ -0,0 +1,88 @@ +# Translation of kio_thumbnail to Croatian +# +# Marko Dimjasevic , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-03-04 19:17+0100\n" +"Last-Translator: Marko Dimjasevic \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=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-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Automatski zakreći sliku" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Nije određen MIME tip." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Nema ili je navedena kriva veličina." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ne mogu stvoriti sličicu za direktorij" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nije naveden priključak." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ne mogu učitati ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ne mogu stvoriti sličicu za %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Neuspjelo stvaranje sličice." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Ne mogu zapisati sliku." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Neuspjelo pridavanje dijeljenog memorijskog segmenta %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Slika je prevelika za dijeljeni memorijski segment" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Žarko Pintar" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "zarko.pintar@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/hu/kfileaudiopreview5.po b/po/hu/kfileaudiopreview5.po new file mode 100644 index 0000000..67240c4 --- /dev/null +++ b/po/hu/kfileaudiopreview5.po @@ -0,0 +1,32 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# Tamas Szanto , 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.3\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-06-23 11:11+0100\n" +"Last-Translator: Tamas Szanto \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Automatikus lejátszás" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "lejátszás" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "szünet" diff --git a/po/hu/kio5_activities.po b/po/hu/kio5_activities.po new file mode 100644 index 0000000..63cef8f --- /dev/null +++ b/po/hu/kio5_activities.po @@ -0,0 +1,191 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Balázs Úr , 2012, 2013. +# Kristóf Kiszel , 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-09-02 10:09+0200\n" +"Last-Translator: Kristóf Kiszel \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktivitások" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Betöltés…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Az aktivitáskezelő nem fut" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Összekapcsolás a jelenlegi aktivitással" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Szétbontás a jelenlegi aktivitásból" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Összekapcsolás ezzel:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Szétbontás innen:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktivitás" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Jelenlegi aktivitás" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Kiszel Kristóf,Úr Balázs" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "ulysses@kubuntu.org,urbalazs@gmail.com" + +#~ msgid "Default" +#~ msgstr "Alapértelmezés" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Váltás a(z) „%1” aktivitásra" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Aktivitás" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Delete activity" +#~ msgstr "Jelenlegi aktivitás" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create a new activity" +#~ msgstr "Jelenlegi aktivitás" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity settings" +#~ msgstr "Aktivitás" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity information" +#~ msgstr "Aktivitás" + +#~ msgid "Privacy" +#~ msgstr "Adatvédelem" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "örökké" + +#~ msgid "Forget the last hour" +#~ msgstr "Az elmúlt óra elfelejtése" + +#~ msgid "Forget the last two hours" +#~ msgstr "Az elmúlt két óra elfelejtése" + +#~ msgid "Forget a day" +#~ msgstr "Egy nap elfelejtése" + +#~ msgid "Forget everything" +#~ msgstr "Minden elfelejtése" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " hónap" +#~ msgstr[1] " hónap" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "ehhez" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create activity..." +#~ msgstr "Jelenlegi aktivitás" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity switching" +#~ msgstr "Aktivitás" + +#~ msgid "Remember opened documents:" +#~ msgstr "Emlékezzen a megnyitott dokumentumokra:" + +#~ msgid "For a&ll applications" +#~ msgstr "Minden a&lkalmazásnál" + +#~ msgid "&Do not remember" +#~ msgstr "N&e jegyezze meg" + +#~ msgid "O&nly for specific applications" +#~ msgstr "Csak a megadott alkalmazások&nál" + +#~ msgid "Keep history" +#~ msgstr "Előzmények megtartása" + +#~ msgid "Clear recent history" +#~ msgstr "Előzmények törlése" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "" +#~ "Minden alkalmazás feketelistára tétele, amelyek nincsenek ezen a listán" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity name" +#~ msgstr "Aktivitás" + +#~ msgid "Available Features" +#~ msgstr "Elérhető szolgáltatások" + +#~ msgid "Plugins" +#~ msgstr "Bővítmények" + +#~ msgid "Enable activities management" +#~ msgstr "Aktivitások kezelésének engedélyezése" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Az aktivitáskezelő hibás beállításokkal fut." + +#~ msgid "Activities..." +#~ msgstr "Aktivitások…" + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "© Ivan Cukic, 2012." diff --git a/po/hu/kio5_archive.po b/po/hu/kio5_archive.po new file mode 100644 index 0000000..72ad16e --- /dev/null +++ b/po/hu/kio5_archive.po @@ -0,0 +1,35 @@ +# Tamas Szanto , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.0\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2007-12-19 11:11+0100\n" +"Last-Translator: Tamas Szanto \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Nem sikerült megnyitni a fájlt, valószínűleg nem támogatott a fájlformátum.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Nem sikerült megnyitni az archívumot, valószínűleg nem támogatott a " +"fájlformátum.\n" +"%1" diff --git a/po/hu/kio5_bookmarks.po b/po/hu/kio5_bookmarks.po new file mode 100644 index 0000000..f3e2653 --- /dev/null +++ b/po/hu/kio5_bookmarks.po @@ -0,0 +1,78 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Tamas Szanto , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.2\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2009-03-28 11:11+0100\n" +"Last-Translator: Tamas Szanto \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Gyökér" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Helyek" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Hibás kérés: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Nincs megjeleníthető könyvjelző." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"A kio_bookmarks CSS-fájl nem található, ezért a kimenet nem lesz szép.\n" +"Ellenőrizze, jó-e a telepítés." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Saját könyvjelzők" + +#~ msgid "My bookmarks" +#~ msgstr "Saját könyvjelzők" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Kezdeti fejlesztő" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Szántó Tamás" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "tszanto@interware.hu" diff --git a/po/hu/kio5_fish.po b/po/hu/kio5_fish.po new file mode 100644 index 0000000..6e5202a --- /dev/null +++ b/po/hu/kio5_fish.po @@ -0,0 +1,43 @@ +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# Tamas Szanto , 2003. +# Balázs Úr , 2012. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.0\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-08-23 10:36+0200\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Csatlakozás..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "A protokoll inicializálása..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Helyi bejelentkezés" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH hitelesítés" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "A kapcsolat megszakadt." diff --git a/po/hu/kio5_info.po b/po/hu/kio5_info.po new file mode 100644 index 0000000..297ed6a --- /dev/null +++ b/po/hu/kio5_info.po @@ -0,0 +1,28 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Tamas Szanto , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.2\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-04-02 11:11+0100\n" +"Last-Translator: Tamas Szanto \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Nem található ez a fájl: %1. Erre a fájlra szüksége van a szolgáltatás " +"működéséhez, ellenőrizze a beállításokat." diff --git a/po/hu/kio5_man.po b/po/hu/kio5_man.po new file mode 100644 index 0000000..d04f2f6 --- /dev/null +++ b/po/hu/kio5_man.po @@ -0,0 +1,227 @@ +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# Tamas Szanto , 2000. +# Balázs Úr , 2012. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.2\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2012-08-18 17:41+0200\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.4\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Nem található man oldal ehhez: %1.

        Ellenőrizze, helyesen írta-e " +"be az oldal nevét.
        A kis- és nagybetűk használatára ügyelni kell!
        Ha minden megfelelőnek tűnik, akkor vagy a man oldalak keresési útvonala " +"nem megfelelő (ezt a MANPATH változóban vagy az /etc könyvtár egy fájljában " +"lehet megadni)." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        KDE man-nézegető hiba

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Több oldal is eleget tesz a feltételnek." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Megjegyzés: ha egy man oldal fordítását olvassa, előfordulhat, hogy az " +"hibákat tartalmaz vagy már elavult. Ilyen esetben inkább az angol nyelvű " +"verziót használja." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Fejlécfájlok" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Fejlécfájlok (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Felhasználói parancsok" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Felhasználói parancsok (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Rendszerhívások" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Eljárások" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl modulok" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Hálózati függvények" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Eszközök" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Fájlformátumok" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Játékok" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Egyéb" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Rendszeradminisztráció" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Helyi dokumentáció" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Új" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Man oldalak" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "%1. szakasz" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "A(z) %1. szakasz tartalomjegyzéke: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Man oldalak" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Tartalomjegyzék létrehozása" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Nem érhető el az sgml2roff program. Ha nincs feltelepítve, végezze el a " +"telepítést, majd még a KDE indítása előtt adja hozzá a program könyvtárát a " +"PATH környezeti változóhoz." + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 megnyitása nem sikerült." + +#~ msgid "Man output" +#~ msgstr "Man kimenet" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Szántó Tamás" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "tszanto@interware.hu" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/hu/kio5_nfs.po b/po/hu/kio5_nfs.po new file mode 100644 index 0000000..61a2788 --- /dev/null +++ b/po/hu/kio5_nfs.po @@ -0,0 +1,66 @@ +# Copyright (C) 2015 Free Software Foundation, Inc. +# +# Tamas Szanto , 2001. +# Kristóf Kiszel , 2015. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.0\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-04-15 09:41+0200\n" +"Last-Translator: Kristóf Kiszel \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Nem támogatott NFS verzió" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC hiba: %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Nem maradt szabad hely az eszközön" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Csak olvasható fájlrendszer" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Túl hosszú fájlnév" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Túllépte a lemezkvótában engedélyezett mennyiséget" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS hiba: %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Nem sikerült csatolni ezt: %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Ismeretlen cél" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC-hiba történt." diff --git a/po/hu/kio5_recentdocuments.po b/po/hu/kio5_recentdocuments.po new file mode 100644 index 0000000..60afe90 --- /dev/null +++ b/po/hu/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Kristóf Kiszel , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-05-27 12:42+0200\n" +"Last-Translator: Kristóf Kiszel \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Nemrég használt dokumentumok" diff --git a/po/hu/kio5_sftp.po b/po/hu/kio5_sftp.po new file mode 100644 index 0000000..bd0317d --- /dev/null +++ b/po/hu/kio5_sftp.po @@ -0,0 +1,465 @@ +# +# Tamas Szanto , 2001. +# Kristóf Kiszel , 2010, 2011, 2015. +# Balázs Úr , 2012, 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.2\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2015-03-26 12:35+0100\n" +"Last-Translator: Kristóf Kiszel \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Hibás vagy érvénytelen jelszó" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nem sikerült lefoglalni a visszahívásokat" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nem sikerült beállítani a napló részletességét." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Nem sikerült beállítani a napló felhasználói adatait." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Nem sikerült beállítani a napló visszahívást." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-s bejelentkezés" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "HAsználja a felhasználónév beviteli mezőt a kérdés megválaszolására." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Adja meg jelszavát." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Oldal:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nem sikerült új SSH-munkamenetet létrehozni." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nem sikerült beállítani az időtúllépést." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Nem sikerült beállítani a portot." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Nem sikerült beállítani a tömörítést." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Nem sikerült beállítani a gépnevet." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Nem sikerült beállítani a portot." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Nem sikerült beállítani a felhasználónevet." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nem sikerült feldolgoni a beállítófájlt." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "SFTP-kapcsolat létrehozása ezzel a géppel: %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not get server public key type name" +msgstr "Nem sikerült hasítókódot létrehozni a kiszolgáló nyilvános kulcsából" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Nem sikerült hasítókódot létrehozni a kiszolgáló nyilvános kulcsából" + +#: kio_sftp.cpp:762 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not create fingerprint for server public key" +msgstr "Nem sikerült hasítókódot létrehozni a kiszolgáló nyilvános kulcsából" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"A kiszolgáló kulcsa nem található, de egy másik típusú kulcs létezik.\n" +"Egy támadó megváltoztatjatha a kiszolgáló alapértelmezett kulcsát, így az Ön " +"kliense azt hiheti hogy a kulcs nem létezik.Lépjen kapcsolatba a " +"rendszergazdával.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"A(z) %1 kiszolgáló kulcsa megváltozott.\n" +"Ez jelentheti azt is, hogy DNS SPOOFING történt, vagy hogy a kiszolgáló IP-" +"címe és kulcsa egyszerre változott meg.\n" +"A távoli gép által küldött kulcs ujjlenyomata:\n" +" %2\n" +"Lépjen kapcsolatba a rendszergazdával.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Figyelem: a kiszolgálót nem lehet azonosítani!" + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Nem sikerült hitelesíteni a(z) %1 gépet.\n" +"A kulcs ujjlenyomata: %2\n" +"Biztosan folytatni szeretné a kapcsolódást?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Az azonosítás nem sikerült." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Az azonosítás nem sikerült. A kiszolgáló nem küldött semmilyen azonosítási " +"módot" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Adja meg a felhasználónevét és a jelszavát." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "A megadott felhasználónév vagy jelszó hibás" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Nem sikerült kérni az SFTP alrendszert. Ellenőrizze hogy az SFTP " +"engedélyezve van-e a kiszolgálón." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nem sikerült inicializálni az SFTP-munkamenetet." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Sikerült csatlakozni - %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"A kiszolgáló kulcsa nem található, de egy másik típusú kulcs létezik.\n" +"Egy támadó megváltoztatjatha a kiszolgáló alapértelmezett kulcsát, így az Ön " +"kliense azt hiheti hogy a kulcs nem létezik.Lépjen kapcsolatba a " +"rendszergazdával.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"A(z) %1 kiszolgáló kulcsa megváltozott.\n" +"Ez jelentheti azt is, hogy DNS SPOOFING történt, vagy hogy a kiszolgáló IP-" +"címe és kulcsa egyszerre változott meg.\n" +"A távoli gép által küldött kulcs ujjlenyomata:\n" +" %2\n" +"Lépjen kapcsolatba a rendszergazdával.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Nem sikerült hitelesíteni a(z) %1 gépet.\n" +"A kulcs ujjlenyomata: %2\n" +"Biztosan folytatni szeretné a kapcsolódást?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nem sikerült megváltoztatni a jogosultságokat itt:\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Nem sikerült olvasni a hivatkozást: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Nincs megadva gépnév." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Belső hiba történt. Próbálja még egyszer végrehajtani a kérést." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Adja meg a felhasználónevét és a kulcshoz tartozó jelszót." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Figyelem: a kiszolgáló kulcsa megváltozott." + +#~ msgid "Connection failed." +#~ msgstr "A csatlakozás nem sikerült." + +#~ msgid "Connection closed by remote host." +#~ msgstr "A távoli gép felbontotta a kapcsolatot." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "SFTP-hiba: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP verzió: %1" + +#~ msgid "Protocol error." +#~ msgstr "Protokollhiba." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Belső hiba történt, próbálja meg újra." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Ismeretlen hiba történt másolás közben (ide: '%1'), próbálja meg újra." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "A kiszolgáló nem támogatja fájlok átnevezését." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "A kiszolgáló nem támogatja szimbolikus linkek létrehozását." + +#~ msgid "Connection closed" +#~ msgstr "A kapcsolat bezárult." + +#~ msgid "End of file." +#~ msgstr "Fájl vége." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "Egy SFTP parancs végrehajtása ismeretlen okok miatt nem sikerült." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Az SFTP-kiszolgáló hibás üzenetet kapott." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Olyan műveletet kért, melyet az SFTP-kiszolgáló nem támogat." + +#~ msgid "Error code: %1" +#~ msgstr "Hibakód: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Nem lehet egyszerre alrendszert és parancsot is megadni." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Az ssh végrehajtási paraméterei hiányoznak." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Az ssh program végrehajtása nem sikerült." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Hiba történt az ssh-val való kommunikáció során." + +#~ msgid "Please supply a password." +#~ msgstr "Meg kell adni a jelszót." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Meg kell adni az SSH privát kulcshoz tartozó jelszót." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Nem sikerült az azonosítás - %1" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "A(z) '%1' nevű kiszolgáló azonosítása nem sikerült, mert a gép kulcsa nem " +#~ "szerepel az \"ismert gépek\" fájljában." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " A kiszolgáló kulcsát kézzel hozzá kell adni az \"ismert gépek\" " +#~ "fájljához (kérdezze meg a rendszergazdát, ha nem tudja, hogyan kell)." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Adja hozzá a gép kulcsát a(z) %1 fájlhoz vagy kérjen segítséget a " +#~ "rendszergazdától." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "A(z) '%1' nevű kiszolgáló azonosítása nem sikerült. A gép kulcsához " +#~ "tartozó ujjlenyomat:\n" +#~ "%2\n" +#~ "Mielőtt megpróbálna csatlakozni, ellenőrizze le az ujjlenyomatot a " +#~ "kiszolgáló rendszergazdájával.\n" +#~ "\n" +#~ "Vagy inkább elfogadja a kulcsot és végrehajtja a csatlakozást? " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "Figyelem: a(z) '%1' nevű kiszolgáló jellemzői megváltoztak!\n" +#~ "\n" +#~ "Ezt okozhatja a kiszolgáló kulcsának megváltozása, de az is, hogy " +#~ "illetéktelen személy próbál hozzáférni az adatokhoz. Mindenképpen " +#~ "ellenőrizze le a kulcs ujjlenyomatát a kiszolgáló rendszergazdájával. Az " +#~ "ujjlenyomat értéke:\n" +#~ "%2\n" +#~ "Ez az üzenet akkor fog eltűnni, ha a(z) \"%3\" fájlhoz hozzáadta a " +#~ "kiszolgáló érvényes kulcsát." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "Figyelem: a(z) '%1' kiszolgáló jellemzői megváltoztak!\n" +#~ "\n" +#~ "Ezt okozhatja a kiszolgáló kulcsának megváltozása, de az is, hogy " +#~ "illetéktelen személy próbál hozzáférni az adatokhoz. Mindenképpen " +#~ "ellenőrizze le a kulcs ujjlenyomatát a kiszolgáló rendszergazdájával. Az " +#~ "ujjlenyomat értéke:\n" +#~ "%2\n" +#~ "\n" +#~ "Vagy inkább elfogadja ezt a kulcsot és végrehajtja a csatlakozást?" + +#~ msgid "Host key was rejected." +#~ msgstr "A kiszolgáló kulcsa nem megfelelő" diff --git a/po/hu/kio5_smb.po b/po/hu/kio5_smb.po new file mode 100644 index 0000000..6e91356 --- /dev/null +++ b/po/hu/kio5_smb.po @@ -0,0 +1,196 @@ +# Tamas Szanto , 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.1\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2008-06-03 11:11+0100\n" +"Last-Translator: Tamas Szanto \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Adja meg a bejelentkezési adatokat a következőhöz: %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Adja meg a bejelentkezési adatokat a következőhöz:\n" +"Kiszolgáló = %1\n" +"Megosztás = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"a fájltípus ismeretlen, se nem könyvtár, se nem fájl." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Nem található egy munkacsoport sem a helyi hálózaton. Lehet, hogy egy tűzfal " +"miatt nem sikerült az elérés." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Nincs adathordozó az eszközben ehhez: %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nem sikerült csatlakozni a géphez ehhez: %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "" +"Hiba történt a kiszolgálóhoz való csatlakozás közben (a kiszolgáló szerepe: " +"%1)" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "A kért megosztás nem létezik a megadott kiszolgálón" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Hibás fájlazonosító" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"A megadott név nem bontható fel egyértelműen. Ellenőrizze, hogy nincs-e " +"valamilyen ütközés a hálózaton használt Windows-os és UNIX-os névfelbontás " +"között." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"A libsmbclient hibát jelzett, de pontos megjelölés nélkül. Ezt valószínűleg " +"valamilyen hálózati hiba okozta, esetleg a libsmbclient valamilyen saját " +"belső hibája.\n" +"Ha segíteni szeretne a hiba okának kiderítésében, próbáljon tcpdump-os " +"listát készíteni a kártya adatforgalmáról a hálózat böngészése közben. A " +"listába személyes adatok is becsúszhatnak, ezért csak ellenőrzés után tegye " +"azt publikussá. Esetleg küldje el a fejlesztők privát e-mail címére, ha ők " +"ezt kérik." + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Ismeretlen stat hiba: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "" +"A libsmbclient programkönyvtár nem tudta létrehozni a szükséges kontextust" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Ellenőrizze, hogy a Samba megfelelő módon van-e telepítve." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"A(z) \"%1\" megosztás csatlakoztatása (gép: \"%2\", felhasználónév: \"%3\") " +"nem sikerült.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"A(z) \"%1\" csatlakoztatási pont leválasztása nem sikerült.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "" +#~ "A libsmbclient programkönyvtár nem tudta inicializálni a szükséges " +#~ "kontextust" + +#~ msgid "File does not exist: %1" +#~ msgstr "%1 nevű fájl nem létezik" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "A libsmbclient programkönyvtár inicializálása nem sikerült" diff --git a/po/hu/kio5_thumbnail.po b/po/hu/kio5_thumbnail.po new file mode 100644 index 0000000..19b6dac --- /dev/null +++ b/po/hu/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# +# Tamas Szanto , 2005. +# Kristóf Kiszel , 2010, 2011. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.0\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-07-28 22:30+0200\n" +"Last-Translator: Kristóf Kiszel \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.2\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "A kép automatikus forgatása" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Nincs megadva MIME-típus." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Nincs megadva vagy érvénytelen a méret." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nem sikerült gyorsnézetet létrehozni a könyvtárhoz" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nincs megadva bővítmény." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nem sikerült betölteni: ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nem sikerült gyorsnézetet létrehozni: %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Nem sikerült gyorsnézetet létrehozni." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Nem sikerült kiírni a képet." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Nem sikerült kapcsolódni egy osztott memóriablokkhoz: %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "A kép túl nagy a megosztott memóriablokkhoz" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Kiszel Kristóf" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "ulysses@kubuntu.org" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/ia/kfileaudiopreview5.po b/po/ia/kfileaudiopreview5.po new file mode 100644 index 0000000..44c84dc --- /dev/null +++ b/po/ia/kfileaudiopreview5.po @@ -0,0 +1,42 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2010-11-29 15:07+0100\n" +"Last-Translator: g.sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Reproduce &automaticamente" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "Starta reproduction sonor" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "Pausa reproduction sonor" + +#~ msgid "stop playback" +#~ msgstr "Stoppar Reproduction sonor" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "cyclic : il re-initia reproduction a le fin" + +#~ msgid "Media Player" +#~ msgstr "Reproductor de Media" diff --git a/po/ia/kio5_activities.po b/po/ia/kio5_activities.po new file mode 100644 index 0000000..e091fef --- /dev/null +++ b/po/ia/kio5_activities.po @@ -0,0 +1,203 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Giovanni Sora , 2012, 2013, 2014, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-12-26 21:52+0100\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Activitates" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Cargante..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Gerente de activitate non es executante" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Liga al activitate currente" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Leva ligamine ex le activitate currente" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Liga a :" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Leva ligamine ex:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Activitate" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Activitate currente" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Giovanni Sora" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "g.sora@tiscali.it" + +#~ msgid "Default" +#~ msgstr "Predefinite" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Commuta a activitate \"%1\"" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Activitate" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Delete activity" +#~ msgstr "Activitate currente" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create a new activity" +#~ msgstr "Activitate currente" + +#, fuzzy +#~| msgctxt "Header title for activity data model" +#~| msgid "Activity" +#~ msgid "Activity settings" +#~ msgstr "Activitate" + +#, fuzzy +#~| msgctxt "Header title for activity data model" +#~| msgid "Activity" +#~ msgid "Activity information" +#~ msgstr "Activitate" + +#~ msgid "Privacy" +#~ msgstr "Intimitate" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "pro sempre" + +#~ msgid "Forget the last hour" +#~ msgstr "Oblida le ultime hora" + +#~ msgid "Forget the last two hours" +#~ msgstr "Oblida le ultime duo horas" + +#~ msgid "Forget a day" +#~ msgstr "Oblida un die" + +#~ msgid "Forget everything" +#~ msgstr "Oblida toto" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " mense" +#~ msgstr[1] " menses" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "pro " + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create activity..." +#~ msgstr "Activitate currente" + +#, fuzzy +#~| msgctxt "Header title for activity data model" +#~| msgid "Activity" +#~ msgid "Activity switching" +#~ msgstr "Activitate" + +#~ msgid "Remember opened documents:" +#~ msgstr "Memora documentos aperite:" + +#, fuzzy +#~| msgid "For all applications" +#~ msgid "For a&ll applications" +#~ msgstr "Pro omne applicationes" + +#, fuzzy +#~| msgid "Do not remember" +#~ msgid "&Do not remember" +#~ msgstr "Non memora" + +#, fuzzy +#~| msgid "Only for specific applications" +#~ msgid "O&nly for specific applications" +#~ msgstr "Solmente pro applicationes specificate" + +#~ msgid "Keep history" +#~ msgstr "Mantene historia" + +#~ msgid "Clear recent history" +#~ msgstr "Netta historis recente" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Mitte in lista negre omne appliocationes que non es in iste lista" + +#, fuzzy +#~| msgctxt "Header title for activity data model" +#~| msgid "Activity" +#~ msgid "Activity name" +#~ msgstr "Activitate" + +#~ msgid "Available Features" +#~ msgstr "Characteristicas disponibile" + +#~ msgid "Plugins" +#~ msgstr "Plugins" + +#~ msgid "Enable activities management" +#~ msgstr "Habilita gestion de activitates" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Gerente de activitate non es executante correctemente." + +#~ msgid "Activities..." +#~ msgstr "Activitates..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" + +#~ msgctxt "Header title for resource data model" +#~ msgid "Resource" +#~ msgstr "Ressource" diff --git a/po/ia/kio5_archive.po b/po/ia/kio5_archive.po new file mode 100644 index 0000000..970eac5 --- /dev/null +++ b/po/ia/kio5_archive.po @@ -0,0 +1,39 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2010-05-25 12:32+0200\n" +"Last-Translator: g.sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Il non pote aperir le file, probabilemente il es causate per un formato de " +"file non supportate\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Le file de archivo non pote esser aperite, fortias proque le formato non es " +"supportate.\n" +"%1" diff --git a/po/ia/kio5_bookmarks.po b/po/ia/kio5_bookmarks.po new file mode 100644 index 0000000..d9ca163 --- /dev/null +++ b/po/ia/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-23 23:07+0100\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Radice" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Placias" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Non pote trovar config de marcatores de libro" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Non poteva trovar redactor de marcatores de libro" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Requesta errate: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Il non ha ancora marcatores de libro de monstrar" + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS file non trovate. Le resultato semblara horribile.\n" +"Tu verifica tu installation." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mi marcatores de libro" + +#~ msgid "My bookmarks" +#~ msgstr "Mi marcatores de libro" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Developpator Initial" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Giovanni Sora" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "g.sora@tiscali.it" diff --git a/po/ia/kio5_fish.po b/po/ia/kio5_fish.po new file mode 100644 index 0000000..9ea91f6 --- /dev/null +++ b/po/ia/kio5_fish.po @@ -0,0 +1,51 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010, 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-08-23 17:11+0200\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Il connecte..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Il initialisa le protocollo..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Accesso de identification &local" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Authorization SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Il disconnecteva" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Giovanni Sora" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "g.sora@tiscali.it" diff --git a/po/ia/kio5_info.po b/po/ia/kio5_info.po new file mode 100644 index 0000000..bd5d4ee --- /dev/null +++ b/po/ia/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2010-05-24 17:19+0200\n" +"Last-Translator: g.sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Il non pote localisar file %1 que es necessari pro executar iste servicio. " +"Pro favor tu verifica tu installation de software." diff --git a/po/ia/kio5_man.po b/po/ia/kio5_man.po new file mode 100644 index 0000000..6c39cef --- /dev/null +++ b/po/ia/kio5_man.po @@ -0,0 +1,224 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010, 2012, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-16 23:10+0100\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Necun pagina de man coincidente con %1 trovate.

        Tu verifica que " +"tu non ha mal typate le nomine de pagina que tu vole.
        Tu verifica que " +"tu ha typate le nomine con le correcte characteres majuscule e minuscule." +"
        Si omne il sembla correcte, tunc tu pote necessitar de meliorar le " +"percurso de cerca pro paginas de man; o usar le variabile de ambiente " +"MANPATH o usar un file coincidente in le /etc directory." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Error de Visor de KDE Man

        " + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "On ha plus que un pagina coincidente de man:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Nota: si tu lege un pagina de man in tu linguage, tu debe considerar que il " +"pote continer alcun errores o esser obsolete. In caso de dubita, tu deberea " +"guardar a le version Anglese." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Files de capite" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Files de capite (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Commandos de usator" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Commandos de usator (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Appellos de Systema (System Calls)" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subroutines" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Modulos de Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Functiones de rete" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formatos de File" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Jocos" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Miscellanea" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administration de Systema" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentation Local" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nove " + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Indice de pagina de manual principal" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Section %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Indice pro Ssction %1:%2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Indice de pagina de manual" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Generar Indice" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Il non pote trovar le programma sgml2roff sur tu systema. Pro favor tu " +"installa lo, si necessari, e tu extende le percurso de cerca per adaptar le " +"variabile de ambiente PATH prime de initiar KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Il falleva a aperir %1 ." + +#~ msgid "Man output" +#~ msgstr "Resultato de Man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Giovanni Sora" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "g.sora@tiscali.it" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/ia/kio5_mtp.po b/po/ia/kio5_mtp.po new file mode 100644 index 0000000..65e93c4 --- /dev/null +++ b/po/ia/kio5_mtp.po @@ -0,0 +1,37 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# giovanni , 2016, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2020-09-16 23:10+0100\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"On non trovava alcun media de immagazinage. Tu assecura te que tu " +"dispositivos non es blocate e que illo ha MTP activate in su preferentias de " +"connexion USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Non pote copiar/mover files sur le dispositivo mesme" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Il nonha alcun immagazinage. Forsan tu necessita disblocar tu dispositivo?" diff --git a/po/ia/kio5_network.po b/po/ia/kio5_network.po new file mode 100644 index 0000000..13d2e28 --- /dev/null +++ b/po/ia/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Giovanni Sora , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-16 23:04+0100\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Rete" diff --git a/po/ia/kio5_nfs.po b/po/ia/kio5_nfs.po new file mode 100644 index 0000000..1f11ba2 --- /dev/null +++ b/po/ia/kio5_nfs.po @@ -0,0 +1,66 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-09-16 23:16+0100\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: version de NFS non supportate" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC error %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Necun spatio lassate sur le dispositivo" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Systema de file de sol lectura" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Nomine de file troppo longe" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Il excedeva le quota de disco" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS error %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Il falleva a montar %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Objectivo incognite" + +#~ msgid "An RPC error occurred." +#~ msgstr "Il occurreva un error de RPC." diff --git a/po/ia/kio5_recentdocuments.po b/po/ia/kio5_recentdocuments.po new file mode 100644 index 0000000..fcdff93 --- /dev/null +++ b/po/ia/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Giovanni Sora , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-22 17:21+0100\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documentos recente" diff --git a/po/ia/kio5_sftp.po b/po/ia/kio5_sftp.po new file mode 100644 index 0000000..3805fbd --- /dev/null +++ b/po/ia/kio5_sftp.po @@ -0,0 +1,289 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010, 2011, 2012, 2013, 2014, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2020-09-16 23:12+0100\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Phrase de contrasigno incorrecte o invalide" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Il non pote trovar spatio pro callbacks" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Il non pote fixar verbositate de registro." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Il non pote fixar registro de datops de usator (log userdata)." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Il non pote fixar registro de callback (log callback)." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Accesso de Identification de SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Usa le campo de ingresso de nomine de usator pro responder a iste question." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Pro favor tu inserta tu contrasigno." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Sito:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Il non pote crear un nove session de SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Il non pote fixar un tempore de expiration." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Il non pote deactivar Algorithmo de Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Il non pote fixar compression." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Il non pote fixar hospite." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Il non pote fixar porto." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Il non pote fixar nomine de usator." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Il non pote analysar le file de config." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Aperir connexion de SFTP pro host %1: %2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Non pote obtener nomine de typo de clave public del servitor" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Non pote crear hash ex le clave public del servitor" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Non pote crear impression digital per le clave public del servitor" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Le clave de hospite %1 pro iste servitor non esseva trovate, sed altere typo " +"de clave existe.\n" +"Un attaccante poterea cambiar le clave de servitor predefinite pro confunder " +"tu cliente facente creder que le clave non existe.\n" +"Pro favor tu continge tu administrator de systema.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Le clave de hospite pro le servitor %1 ha cambiate.\n" +"Isto poterea significar que un DNS SPOOFING es occurrente o que le adresse " +"de IP pro le hospite ha cambiate a le mesme tempore.\n" +"Le signatura de impression digital (fingerprint) pro le clave %2 inviate per " +"le remote hospite es:\n" +"SHA256:%3\n" +"Pro favor tu continge tu administrator de systema.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Aviso: Il non pote verificar identitate del hospite." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Le authenticitate del hospite %1 non pote esser stabilite.\n" +"Le signatura (fingerprint) de clave %2 es:%3\n" +"Tu es secur que tu vole continuar a connecter te?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Il falleva authentication." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Authentication falleva. Le servitor non inviala ulle methodos de " +"authentication" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Pro favor tu inserta tu nomine de usator e contrasigno." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nomine de usator o contrasigno incorrecte" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Il non pote demandar le subsystema SFTP. Tu assecura te que SFTP es " +"habilitate super le servitor." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Il non pote initialisar le session de SFTP" + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Il connecteva con successo a %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Le clave de hospite pro iste servitor non esseva trovate, sed altere typo de " +"clave existe.\n" +"Un attaccante poterea cambiar le clave de servitor predefinite pro confunder " +"tu cliente facente creder que le clave non existe.\n" +"Pro favor tu continge tu administrator de systema.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Le clave de hospite pro le servitor %1 ha cambiate.\n" +"Isto poterea significar que un DNS SPOOFING es occurrente o que le adresse " +"de IP pro le hospite ha cambiate a le mesme tempore.\n" +"Le signatura (fingerprint) pro le clave inviate per le remote hospite es:\n" +"%2\n" +"Pro favor tu continge tu administrator de systema.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Le authenticitate del hospite %1 non pote esser stabilite.\n" +"Le signatura (fingerprint) de clave es:%2\n" +"Tu es secur que tu vole continuar a connecter te?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Invalide contexto sftp" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Il non pote cambiar permissiones pro\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Il non pote leger ligamine: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Necun nomine de hospite specificate." diff --git a/po/ia/kio5_smb.po b/po/ia/kio5_smb.po new file mode 100644 index 0000000..55ce427 --- /dev/null +++ b/po/ia/kio5_smb.po @@ -0,0 +1,189 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010, 2011, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-09-16 23:15+0100\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "" +"Pro favor tu inserta information de authentication pro %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Pro favor tu inserta information de authentication pro:\n" +"Servitor = %1\n" +"Compartite = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Typo de file incognite, ni directorio o file." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Il non pote trovar alicun gruppo de labor in tu rete local. Isto pote esser " +"causate per un talia-foco (firewall) habilitate." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Nulle media in dispositivo pro %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Il non pote connecter a hospite pro %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Error durante que on connecteva a le servitor responsabile pro %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Compartite non pote esser trovate sur le date servitor" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Mal descriptor de file" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Le date nomine non pote esser resolvite a un unic servitor. Tu assecura que " +"tu rete es fixate sin alicun conflictos de nomine inter nomine usate per " +"resolution de nomine per Windows e per UNIX ." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1:Hospite non attingibile" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient reportava un error, ma il non specificava qual problema es. " +"Isto poterea indicar un grave problema con tu rete - ma il pote anque " +"indicar un problema con libsmbclient.\n" +"Si tu vole adjutar nos, pro favor tu provide un tcpdump del interfacie de " +"rete durante que tu probava a navigar (Tu recorda que il pote continer datos " +"private, assi tu non debe postar lo si tu non es secur - tu pote inviar lo " +"privatemente a le disveloppatores si illo de demanda lo)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condition de error incognite :[%1] %2 " + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Error occurreva quando on tentava acceder %1 %2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient falleva a crear contexto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Tu assecura te que le pacchetto samba es installate propriemente sur tu " +"systema." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Montar de compartite \"%1\" ex hospite \"%2\" per usator \"%3\" falleva.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Il falleva le dismontar del puncto de montage \"%1\".\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Dispositivo incognite @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient falleva a initialisar contexto" + +#~ msgid "File does not exist: %1" +#~ msgstr "File non existe:%1" diff --git a/po/ia/kio5_thumbnail.po b/po/ia/kio5_thumbnail.po new file mode 100644 index 0000000..9d4525d --- /dev/null +++ b/po/ia/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# g.sora , 2010, 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-02-28 09:07+0100\n" +"Last-Translator: g.sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rota automaticamente le imagine" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Necun Typo MIME Specificate." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Necun o invalide dimension specificate." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Il non pote crear miniatura pro directorio" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Necun plugin specificate." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Il non pote cargar ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Il non pote crear miniatura pro %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Il falleva a crear un miniatura" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Il non pote scriber image." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Il falleva a attaccar a le segmento de memoria compartite %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Image es troppo grande pro le segmento de memoria compartite" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Giovanni Sora" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "g.sora@tiscali.it" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbnail" diff --git a/po/id/kfileaudiopreview5.po b/po/id/kfileaudiopreview5.po new file mode 100644 index 0000000..e12dc3d --- /dev/null +++ b/po/id/kfileaudiopreview5.po @@ -0,0 +1,43 @@ +# Indonesian translations for kfileaudiopreview4 package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the kfileaudiopreview4 package. +# Gian Giovani , 2010. +# Wantoyo , 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2019-07-15 00:14+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\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" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Putarkan secara otom&atis" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "mulai pemutaran" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "jeda pemutaran" + +#~ msgid "stop playback" +#~ msgstr "stop mainkan" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "ulang-alik: putar ulang di akhir" + +#~ msgid "Media Player" +#~ msgstr "Pemutar Media" diff --git a/po/id/kio5_archive.po b/po/id/kio5_archive.po new file mode 100644 index 0000000..d04e39a --- /dev/null +++ b/po/id/kio5_archive.po @@ -0,0 +1,40 @@ +# Indonesian translations for kio_archive package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_archive package. +# Gian Giovani , 2010. +# Wantoyo , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2018-04-03 06:37+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Tidak dapat membuka file, mungkin dikarenakan tipe file yang tidak " +"didukung.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"File arsip tidak dapat terbuka, mungkin dikarenakan format file yang tidak " +"didukung.\n" +"%1" diff --git a/po/id/kio5_bookmarks.po b/po/id/kio5_bookmarks.po new file mode 100644 index 0000000..5f3fb94 --- /dev/null +++ b/po/id/kio5_bookmarks.po @@ -0,0 +1,81 @@ +# Indonesian translations for kio_bookmarks package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_bookmarks package. +# Andhika Padmawan , 2010. +# Wantoyo , 2017, 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2019-03-31 21:33+0700\n" +"Last-Translator: wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.12.1\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Tempat" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Permintaan salah: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Belum ada markah untuk ditampilkan." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"File CSS kio_bookmarks tidak ditemukan. Output akan tampak jelek.\n" +"Cek penginstalan anda." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Markah Saya" + +#~ msgid "My bookmarks" +#~ msgstr "Penanda saya" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Pengelola awal" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andhika Padmawan" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "andhika.padmawan@gmail.com" diff --git a/po/id/kio5_fish.po b/po/id/kio5_fish.po new file mode 100644 index 0000000..fa99418 --- /dev/null +++ b/po/id/kio5_fish.po @@ -0,0 +1,52 @@ +# Indonesian translations for kio_fish package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_fish package. +# Andhika Padmawan , 2014. +# Wantoyo , 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2019-01-27 10:27+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\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" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Mengonek..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Menginisiasi protokol..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Login Lokal" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autentikasi SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Terdiskoneksi." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andhika Padmawan" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "andhika.padmawan@gmail.com" diff --git a/po/id/kio5_info.po b/po/id/kio5_info.po new file mode 100644 index 0000000..4bbe4e1 --- /dev/null +++ b/po/id/kio5_info.po @@ -0,0 +1,30 @@ +# Indonesian translations for kio_info package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_info package. +# Andhika Padmawan , 2010. +# Wantoyo , 2017, 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2019-09-01 09:01+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\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" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Tak dapat menemukan lokasi file %1 yang diperlukan untuk menjalankan layanan " +"ini. Silakan cek penginstalan perangkat lunak anda." diff --git a/po/id/kio5_man.po b/po/id/kio5_man.po new file mode 100644 index 0000000..3579591 --- /dev/null +++ b/po/id/kio5_man.po @@ -0,0 +1,230 @@ +# Indonesian translations for kio_man package. +# Copyright (C) 2014 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_man package. +# Andhika Padmawan , 2014. +# Wantoyo , 2017, 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-08-03 07:33+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.12.1\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Tak ada halaman manual untuk %1 yang ditemukan.

        Cek apakah anda " +"tidak salah mengetik nama halaman yang anda inginkan.
        Cek apakah anda " +"telah mengetik nama menggunakan huruf besar dan kecil yang benar.
        Jika " +"semuanya tampak benar, maka anda mungkin perlu memperbanyak alur pencarian " +"untuk halaman manual; baik menggunakan variabel lingkungan MANPATH atau " +"menggunakan file yang cocok di direktori /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Error Penampil Manual KDE

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Ada lebih dari satu halaman manual yang cocok." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Catatan: jika anda membaca halaman manual dalam bahasa anda, tolong hati-" +"hati karena mungkin terdapat kesalahan atau telah kadaluwarsa. Jika ragu-" +"ragu, anda harus melihat versi bahasa Inggris." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "File header" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "File header (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Perintah Pengguna" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Perintah Pengguna (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Panggilan Sistem" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subrutin" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Modul Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Fungsi Jaringan" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Perangkat" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Format File" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Permainan" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Beraneka" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administrasi Sistem" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Dokumentasi Lokal" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Baru" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Indeks Manual UNIX" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Bagian %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indeks Untuk Bagian %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Indeks Manual UNIX" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Membuat Indeks" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Tak dapat menemukan program sgml2roff di sistem anda. Silakan instal program " +"tersebut, jika perlu, dan perluas alur pencarian dengan menyesuaikan alur " +"variabel lingkungan sebelum menjalankan KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Membuka %1 gagal." + +#~ msgid "Man output" +#~ msgstr "Output manual" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andhika Padmawan" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "andhika.padmawan@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/id/kio5_nfs.po b/po/id/kio5_nfs.po new file mode 100644 index 0000000..71c87d5 --- /dev/null +++ b/po/id/kio5_nfs.po @@ -0,0 +1,67 @@ +# Indonesian translations for kio_nfs package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_nfs package. +# Andhika Padmawan , 2010-2014. +# Wantoyo , 2017, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2018-04-16 08:17+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Versi NFS tak didukung" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Galat RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Tak ada ruang kosong tersisa di perangkat" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Sistem file hanya baca" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Nama file terlalu panjang" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Kuota cakram terlampaui" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Galat NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Gagal mengaitkan %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Sasaran tak diketahui" + +#~ msgid "An RPC error occurred." +#~ msgstr "Galat RPC terjadi." diff --git a/po/id/kio5_recentdocuments.po b/po/id/kio5_recentdocuments.po new file mode 100644 index 0000000..682d692 --- /dev/null +++ b/po/id/kio5_recentdocuments.po @@ -0,0 +1,24 @@ +# Indonesian translations for kio_recentdocuments package. +# Copyright (C) 2014 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_recentdocuments package. +# Andhika Padmawan , 2014. +# Wantoyo , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2019-05-18 07:41+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\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" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Dokumen Baru-baru ini" diff --git a/po/id/kio5_sftp.po b/po/id/kio5_sftp.po new file mode 100644 index 0000000..76df78b --- /dev/null +++ b/po/id/kio5_sftp.po @@ -0,0 +1,306 @@ +# Indonesian translations for kio_sftp package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_sftp package. +# Andhika Padmawan , 2010-2014. +# Wantoyo , 2017, 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2019-10-23 20:25+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.12.1\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Sandi salah atau tidak absah" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Tak dapat mengalokasikan panggil balik" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Tak dapat mengatur kelengkapan catatan." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Tak dapat mengatur catatan data pengguna." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Tak dapat mengatur catatan panggil balik." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Login SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Gunakan area input nama pengguna untuk menjawab pertanyaan ini." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Silakan masukkan sandi anda." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Situs:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Tak dapat menciptakan sesi SSH baru." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Tak dapat mengatur batas waktu." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Tak dapat mengatur pangkalan." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Tak dapat mengatur kompresi." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Tak dapat mengatur host." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Tak dapat mengatur porta." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Tak dapat mengatur nama pengguna." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Tak dapat mengurai file konfigurasi." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Membuka koneksi SFTP ke host %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not get server public key type name" +msgstr "Tak dapat menciptakan hash dari server kunci publik" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Tak dapat menciptakan hash dari server kunci publik" + +#: kio_sftp.cpp:762 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not create fingerprint for server public key" +msgstr "Tak dapat menciptakan hash dari server kunci publik" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Kunci host untuk server ini tidak ditemukan, tapi tipe lain kunci ada.\n" +"Penyerang mungkin mengubah kunci server baku untuk membingungkan klien anda " +"agar berpikir bahwa kunci tersebut tidak ada.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Kunci host untuk server %1 telah berubah.\n" +"Ini dapat berarti bahwa PENIPUAN DNS sedang berlangsung atau alamat IP untuk " +"host dan kunci hostnya telah berubah di saat yang sama.\n" +"Sidik jari untuk kunci yang dikirim oleh host jarak jauh adalah:\n" +" %2\n" +"Silakan hubungi pengurus anda.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Peringatan: Tak dapat verifikasi identitas host." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Otentikasi host %1 tak dapat dibangun.\n" +"Sidik jari kunci adalah: %2\n" +"Apakah anda yakin ingin melanjutkan penyambungan?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Otentikasi gagal." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "Otentikasi gagal. Server tidak mengirim metode otentikasi apapun" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Silakan masukkan nama pengguna dan sandi anda." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nama pengguna atau sandi salah" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Tak dapat mengirim permintaan subsistem SFTP. Pastikan SFTP telah " +"difungsikan di server." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Tak dapat menginisialisasi sesi SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Berhasil terkoneksi ke %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Kunci host untuk server ini tidak ditemukan, tapi tipe lain kunci ada.\n" +"Penyerang mungkin mengubah kunci server baku untuk membingungkan klien anda " +"agar berpikir bahwa kunci tersebut tidak ada.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Kunci host untuk server %1 telah berubah.\n" +"Ini dapat berarti bahwa PENIPUAN DNS sedang berlangsung atau alamat IP untuk " +"host dan kunci hostnya telah berubah di saat yang sama.\n" +"Sidik jari untuk kunci yang dikirim oleh host jarak jauh adalah:\n" +" %2\n" +"Silakan hubungi pengurus anda.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Otentikasi host %1 tak dapat dibangun.\n" +"Sidik jari kunci adalah: %2\n" +"Apakah anda yakin ingin melanjutkan penyambungan?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Tak dapat mengubah hak akses untuk\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Tak dapat membaca tautan: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Tak ada nama host yang ditentukan." diff --git a/po/id/kio5_smb.po b/po/id/kio5_smb.po new file mode 100644 index 0000000..1217a6e --- /dev/null +++ b/po/id/kio5_smb.po @@ -0,0 +1,191 @@ +# Indonesian translations for kio_smb package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_smb package. +# Andhika Padmawan , 2010. +# Wantoyo , 2017, 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2019-01-31 07:45+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.12.1\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Silakan masukkan informasi autentikasi untuk %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Silakan masukkan informasi autentikasi untuk:\n" +"Server = %1\n" +"Bagian = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tipe file tak diketahui, apakah direktori atau file." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Tak dapat menemukan grup kerja apapun di jaringan lokal anda. Hal ini " +"mungkin disebabkan oleh firewall yang difungsikan." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Tak ada media di perangkat untuk %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Tidak bisa mengkoneksikan ke host untuk %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Error ketika mengkoneksikan ke server yang bertanggungjawab atas %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Pembagian tidak bisa ditemukan di server yang diberikan" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Pendeskripsi file buruk" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Nama yang diberikan tidak bisa diselesaikan ke server unik. Pastikan " +"jaringan anda diatur tanpa konflik nama apapun antara nama yang digunakan " +"oleh Windows dan oleh resolusi nama UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient melaporkan error, tapi tidak menentukan apa masalahnya. Hal ini " +"mungkin mengindikasikan masalah yang parah di jaringan anda - atau mungkin " +"juga mengindikasikan masalah dengan libsmblient.\n" +"Jika anda ingin membantu kami, silakan berikan tcpdump dari antarmuka " +"jaringan ketika anda coba untuk menelusuri (hati-hati karena hal ini dapat " +"berisi data pribadi, jadi jangan kirim data jika anda tidak yakin tentang " +"hal itu - anda dapat mengirimkannya secara pribadi ke pengembang jika mereka " +"memintanya)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Kondisi error tak diketahui di stat: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Terjadi error ketika mencoba mengakses %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient gagal untuk menciptakan konteks" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Pastikan bahwa paket samba telah terinstal dengan benar di sistem anda." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Mengaitkan bagian \"%1\" dari host \"%2\" oleh pengguna \"%3\" gagal.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Melepaskait titikkait \"%1\" gagal.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient gagal untuk menginisialisasi konteks" + +#~ msgid "File does not exist: %1" +#~ msgstr "Berkas tidak ada: %1" diff --git a/po/id/kio5_thumbnail.po b/po/id/kio5_thumbnail.po new file mode 100644 index 0000000..1848b29 --- /dev/null +++ b/po/id/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# Indonesian translations for kio_smb package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_smb package. +# Andhika Padmawan , 2010-2014. +# Wantoyo , 2017, 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2019-07-29 16:23+0700\n" +"Last-Translator: Wantoyo \n" +"Language-Team: Indonesian \n" +"Language: id\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" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rotasikan gambar secara otomatis" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Tak ada Tipe MIME yang diberikan." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Tak ada atau ukuran yang diberikan tidak absah." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Tak dapat menciptakan gambar-mini untuk direktori" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Tak ada plugin yang ditentukan." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Tak dapat memuat ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Tak dapat menciptakan gambar-mini untuk %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Gagal menciptakan gambar-mini." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Tak dapat menulis gambar." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Gagal melampirkan ke segmen memori bersama %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Citra terlalu besar untuk segmen memori bersama" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andhika Padmawan" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "andhika.padmawan@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/is/kfileaudiopreview5.po b/po/is/kfileaudiopreview5.po new file mode 100644 index 0000000..80b0287 --- /dev/null +++ b/po/is/kfileaudiopreview5.po @@ -0,0 +1,46 @@ +# translation of kfileaudiopreview4.po to icelandic +# Icelandic translation of kfileaudiopreview +# Copyright (C) 2004, 2009 Free Software Foundation, Inc. +# +# Richard Allen , 2004. +# Sveinn í Felli , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-04-15 16:15+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" +"X-Generator: KBabel 1.11.4\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Spila &sjálfkrafa" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "hefja spilun" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "gera hlé á afspilun" + +#~ msgid "stop playback" +#~ msgstr "stöðva afspilun" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "endurtaka: ræsir spilun aftur við endi" + +#~ msgid "Media Player" +#~ msgstr "Margmiðlunarspilari" diff --git a/po/is/kio5_activities.po b/po/is/kio5_activities.po new file mode 100644 index 0000000..6ece9c9 --- /dev/null +++ b/po/is/kio5_activities.po @@ -0,0 +1,132 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sveinn í Felli , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-04-18 20:52+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activities" +msgstr "Virkni" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "Virknistjórinn er ekki að keyra eins og skyldi." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Tengja við núverandi virkni" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Aftengja við núverandi virkni" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Tengja við:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Aftengja frá:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activity" +msgstr "Virkni" + +#: KioActivities.cpp:230 +#, fuzzy, kde-format +#| msgid "Link to the current activity" +msgid "Current activity" +msgstr "Tengja við núverandi virkni" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sveinn í Felli" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sveinki@nett.is" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Skipta í \"%1\" virkni" + +#, fuzzy +#~| msgid "Activities" +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Virkni" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Delete activity" +#~ msgstr "Tengja við núverandi virkni" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create a new activity" +#~ msgstr "Tengja við núverandi virkni" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity settings" +#~ msgstr "Virkni" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity information" +#~ msgstr "Virkni" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create activity..." +#~ msgstr "Tengja við núverandi virkni" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity switching" +#~ msgstr "Virkni" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity name" +#~ msgstr "Virkni" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Virknistjórinn er ekki að keyra eins og skyldi." + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activities..." +#~ msgstr "Virkni" diff --git a/po/is/kio5_archive.po b/po/is/kio5_archive.po new file mode 100644 index 0000000..7baaf03 --- /dev/null +++ b/po/is/kio5_archive.po @@ -0,0 +1,38 @@ +# translation of kio_tar.po to Icelandic +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-12-04 19:51+0100\n" +"Last-Translator: Arnar Leosson \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Get ekki opnað skrána, trúlega vegna óstudds skráarsniðs.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Tókst ekki að opna safnskrána, kannski skráarsniðið er ekki studd.\n" +"%1" diff --git a/po/is/kio5_bookmarks.po b/po/is/kio5_bookmarks.po new file mode 100644 index 0000000..3712cf5 --- /dev/null +++ b/po/is/kio5_bookmarks.po @@ -0,0 +1,82 @@ +# translation of kio_bookmarks.po to Icelandic +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sveinn í Felli , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2009-01-07 10:20+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Rót" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Staðir" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Gölluð fyrirspurn: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Það eru ekki ennþá nein bókamerki til staðar til að sýna." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS skráin fannst ekki. Útkoman mun ekki líta vel út.\n" +"Athugaðu með uppsetninguna." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Bókamerkin mín" + +#~ msgid "My bookmarks" +#~ msgstr "Bókamerkin mín" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Upphaflegur höfundur" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sveinn í Felli" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sveinki@nett.is" diff --git a/po/is/kio5_fish.po b/po/is/kio5_fish.po new file mode 100644 index 0000000..c30e205 --- /dev/null +++ b/po/is/kio5_fish.po @@ -0,0 +1,55 @@ +# translation of kio_fish.po to icelandic +# Copyright (C) 2003, 2009 Free Software Foundation, Inc. +# +# Richard Allen , 2002. +# Arnar Leósson , 2003. +# Sveinn í Felli , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-09-07 06:48+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Tengist..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Virkja samskiptamáta..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Staðbundið notandanafn" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH auðkenning" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Aftengdur." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Richard Allen, Arnar Leósson, Sveinn í Felli" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "ra@ra.is, leosson@frisurf.no, sveinki@nett.is" diff --git a/po/is/kio5_info.po b/po/is/kio5_info.po new file mode 100644 index 0000000..c66bf36 --- /dev/null +++ b/po/is/kio5_info.po @@ -0,0 +1,32 @@ +# translation of kio_info.po to Icelandic +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sveinn í Felli , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-05-22 09:51+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Gat ekki fundið skrána %1 sem er nauðsynleg til að keyra þessa þjónustu. " +"Skoðaðu uppsetninguna þína." diff --git a/po/is/kio5_man.po b/po/is/kio5_man.po new file mode 100644 index 0000000..40c4a6b --- /dev/null +++ b/po/is/kio5_man.po @@ -0,0 +1,231 @@ +# translation of kio_man.po to icelandic +# Íslensk þýðing kio_man.po +# Copyright (C) 2000, 2005, 2009 Free Software Foundation, Inc. +# +# Kristinn Rúnar Kristinsson , 2000. +# Sveinn í Felli , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2012-09-07 06:50+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Engin hjálparsíða fannst fyrir %1.

        Athugaðu að þú hafir slegið " +"inn rétt heiti síðunnar sem þú vilt.
        Athugaðu einnig að það er munur á " +"há- og lágstöfum.
        Ef allt stemmir, þarftu kannski að bæta úr " +"leitarslóðinni fyrir hjálparsíðurnar, annað hvort með umhverfisbreytunni " +"MANPATH eða passandi skrá í /etc möppunni." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Villa í KDE hjálparsíðurýni

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Fleiri en ein hjálparsíða sem passar fannst." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Athugaðu: ef þú lest hjálparsíðu á þínu tungumáli, að hún getur innihaldið " +"einhverjar villur eða verið úreld. Ef þú ert í vafa ættir þú að skoða ensku " +"útgáfuna." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Höfuðskrár" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Höfuðskrár (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Notandaskipanir" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Notandaskipanir (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Kerfisköll" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Stefjur" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perleiningar" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Netstefjur" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Tæki" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Skráasnið" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Leikir" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Ýmislegt" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Kerfisstjórnun" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kjarni" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Staðbundnar upplýsingar" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nýtt" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Efnisyfirlit UNIX hjálparsíðna" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Kafli %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Efnisyfirlit yfir kafla %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Efnisyfirlit UNIX hjálparsíðna" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Bý til efnisyfirlit" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Gat ekki fundið sgml2roff forritið á þinni vél. Vinsamlega settu það inn, " +"ef þörf er á, eða bættu við leitarslóðina með því að breyta " +"umhverfisbreytunni PATH áður en þú ræsir KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Ekki tókst að opna %1." + +#~ msgid "Man output" +#~ msgstr "Úttak hjálparsíðu" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Kristinn Rúnar Kristinsson, Richard Allen, Pjetur G. Hjaltason" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kde-isl@molar.is, ra@ra.is, pjetur@pjetur.net" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/is/kio5_nfs.po b/po/is/kio5_nfs.po new file mode 100644 index 0000000..4416893 --- /dev/null +++ b/po/is/kio5_nfs.po @@ -0,0 +1,71 @@ +# translation of kio_nfs.po to Icelandic +# Icelandic translation of kio_nfs.po +# Copyright (C) 2001, 2011 Free Software Foundation, Inc. +# +# Þórarinn R. Einarsson , 2001. +# Sveinn í Felli , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2011-03-25 08:56+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" +"\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Ekkert pláss eftir á þessu tæki" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Skrifvarið skráakerfi" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Skráarheitið of langt" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disk kvóti notaður að fullu" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC villa átti sér stað." diff --git a/po/is/kio5_recentdocuments.po b/po/is/kio5_recentdocuments.po new file mode 100644 index 0000000..fc090b6 --- /dev/null +++ b/po/is/kio5_recentdocuments.po @@ -0,0 +1,26 @@ +# translation of kio_recentdocuments.po to Icelandic +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sveinn í Felli , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-04-08 16:50+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Nýleg skjöl" diff --git a/po/is/kio5_sftp.po b/po/is/kio5_sftp.po new file mode 100644 index 0000000..5547df4 --- /dev/null +++ b/po/is/kio5_sftp.po @@ -0,0 +1,264 @@ +# translation of kio_sftp.po to Icelandic +# Íslensk þýðing kio_sftp.po +# Copyright (C) 2002, 2005, 2009, 2010 Free Software Foundation, Inc. +# +# Richard Allen , 2002. +# Arnar Leosson , 2005. +# Sveinn í Felli , 2009, 2010, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2013-04-26 20:03+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" +"\n" +"\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Ógilt eða rangt lykilorð" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Gat ekki stillt upplýsingamagn fyrir annál." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Gat ekki stillt upplýsingamagn fyrir annál." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log callback." +msgstr "Gat ekki stillt upplýsingamagn fyrir annál." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP innstimplun" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Notaðu innstimplunarreit fyrir notandanafn til að svara þessari spurningu." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Sláðu inn lykilorðið þitt." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Vefsvæði:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Ekki var hægt að búa til nýja SSH-setu." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Gat ekki stillt tímamörk." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Gat ekki stillt gátt." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Gat ekki stillt þjöppun." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Gat ekki stillt vélarheiti." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Gat ekki stillt gátt." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Gat ekki stillt notandanafn." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Gat ekki lesið stillingaskrá." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Opnun SFTP tengingar við vélina %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Gat ekki stillt notandanafn." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Viðvörun: Get ekki staðfest auðkenni vélar." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Auðkenning brást!" + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "Auðkenning tókst ekki. Þjónninn sendi engar auðkenningaraðferðir." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Sláðu inn notandanafn og lykilorð þitt." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Ógilt notandanafn eða lykilorð" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Gat ekki frumstillt SFTP-setuna." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Tenging við %1 tókst" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ekki tókst að breyta aðgangsheimildum að\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Ekki tókst að lesa tengilinn: %1." + +#~ msgid "No hostname specified." +#~ msgstr "Ekkert vélarheiti tilgreint." diff --git a/po/is/kio5_smb.po b/po/is/kio5_smb.po new file mode 100644 index 0000000..a7b0a6a --- /dev/null +++ b/po/is/kio5_smb.po @@ -0,0 +1,195 @@ +# translation of kio_smb.po to Icelandic +# Icelandic Translation of kio_smb.po +# Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc. +# Þórarinn R. Einarsson , 2001. +# Svanur Palsson , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2005-12-04 19:48+0100\n" +"Last-Translator: Arnar Leosson \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Vinsamlegast sláðu inn auðkenniupplýsingar fyrir %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Vinsamlegast sláðu inn auðkenniupplýsingar fyrir:\n" +"Þjón = %1\n" +"Sameign = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Óþekkt skráargerð, hvorki mappa né skrá." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Fann enga vinnuhópa á netkerfinu þínu. Ástæðan gæti verið að þú ert á bak " +"við eldvegg." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Enginn diskur er í drifinu fyrir %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Gat ekki tengst þjóninum fyrir %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Villa við að tengjast þjóninum sem hefur %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Sameign fannst ekki á uppgefnum þjón" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Skemmdur skráarlýsir" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Ekki var hægt að tengja uppgefið heiti við tiltekna vél. Gaktu úr skugga um " +"að netuppsetning þín sé án árekstra milli heita á Windows og UNIX véla." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient tilkynnti villu, en gaf ekki til kynna hvað vandamálið væri. " +"Þetta gæti gefið til kynna að eitthvað alvarlegt er að netkerfinu þínu - en " +"gæti líka þýtt vandamál í libsmbclient.\n" +"Ef þú vilt hjálpa okkur, láttu okkur þá fá 'tcpdump' af nettækinu þínu meðan " +"þú reynir að vafra (taktu eftir að það gæti innihaldið einkagögn, svo þú " +"skalt ekki senda það ef þú er ekki viss um það - þú getur sent það beint á " +"forritarana ef þeir biðja þig um það)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Óþekkt villuskilyrði í stat: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient tókst ekki að búa til samhengi" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Gakktu úr skugga um að allir samba pakkar séu uppsettir á kerfinu þínu." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Mistókst að tengja sameignina \"%1\" frá vél \"%2\" af notanda \"%3\".\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ekki tókst að aftengja \"%1\".\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient tókst ekki frumstilla samhengi" + +#~ msgid "File does not exist: %1" +#~ msgstr "Skráin er ekki til: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "Gat ekki frumstillt libsmbclient" diff --git a/po/is/kio5_thumbnail.po b/po/is/kio5_thumbnail.po new file mode 100644 index 0000000..a0e747d --- /dev/null +++ b/po/is/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# translation of kio_thumbnail.po to Icelandic +# +# Sveinn í Felli , 2009, 2011, 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2015-10-22 09:25+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Snúa myndinni sjálfkrafa" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Engin MIME tegund skilgreind." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Engin eða ógild stærð uppgefin." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Get ekki búið til smámynd fyrir möppuna" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Engin viðbót skilgreind." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Get ekki hlaðið inn ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Get ekki búið til smámynd fyrir %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Mistókst að búa til smámynd." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Gat ekki skrifað mynd." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Mistókst að tengjast minnishluta %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Myndin er of stór fyrir minnishlutann" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Arnar Leosson, Richard Allen" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "leosson@frisurf.no, ra@ra.is" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/it/docs/kioslave5/bookmarks/index.docbook b/po/it/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..fcf3c42 --- /dev/null +++ b/po/it/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        +segnalibri + + +XavierVello xavier.vello@gmail.com +PinoToscano
        toscano.pino@tiscali.it
        Traduzione italiana
        +
        + +2008-08-31 +0.2 + +
        + +Questo KIO mostra i tuoi segnalibri come elegante e funzionale pagina &HTML;. Puoi accedervi digitando bookmarks:/ nella barra dell'indirizzo di &konqueror;. + +Il contenuto e la disposizione della pagina è configurabile. Apri bookmarks:/config in &konqueror; per avviare la finestra di configurazione. + +
        + diff --git a/po/it/docs/kioslave5/bzip2/index.docbook b/po/it/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..afdc5c2 --- /dev/null +++ b/po/it/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,64 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +Luciano Montanaro
        mikelima@cirulla.net
        Traduzione del documento
        +
        +
        + +bzip2 è un programma di compressione. + +Il kioslave bzip2 non è usabile direttamente, perché è fatto per essere usato come filtro. Per esempio, il kioslave tar può far filtrare un file attraverso il kioslave bzip2 per poter mostrare il contenuto di un archiviotar.bz2 direttamente in una finestra di &konqueror;. + +Facendo clic su un file compresso con estensione .bz2 in &konqueror;, viene usato questo kioslave per decomprimerlo e mostrarlo come se fosse un file normale (non compresso). + +Per gli sviluppatori che volessero usare il filtro bzip2, la documentazione relativa all'utilizzo dei kioslave si trova all'indirizzo http://techbase.kde.org + +Vedi il manuale: bzip2. + +bzip è l'avo di bzip2. È usato raramente ormai, poiché è stato sostituito da bzip2, che offre livelli di compressione molto migliori. + +
        diff --git a/po/it/docs/kioslave5/fish/index.docbook b/po/it/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..a6837c7 --- /dev/null +++ b/po/it/docs/kioslave5/fish/index.docbook @@ -0,0 +1,161 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +Luciano Montanaro
        mikelima@cirulla.net
        Traduzione
        +
        + +2010-10-27 +&kde; 4.5 + +
        + +Permette di accedere ai file di un altro calcolatore usando il protocollo Shell Sicura (SSH). Il computer remoto deve avere un demone SSH in esecuzione, ma il resto del protocollo usa strumenti standard della riga di comando, come descritto di seguito. + +Usa l'ioslave fish in questo modo: fish://nomehost oppure fish://nomeutente@nomehost. + +È necessario usare due barre inclinate in avanti (//). + +Puoi omettere il nomeutente (ed il simbolo "@") se hai lo stesso nome utente su entrambi i computer. + +Puoi aggiungere una password usando il formato: fish://nomeutente:password@nomehost, ma non è necessario, perché la password ti verrà richiesta se non la fornisci. + +Se stai usando il demone SSH su una porta non standard, puoi specificare la porta usando la normale sintassi degli &URL; come mostrato di seguito: fish://nomehost:numeroporta. + +Fish dovrebbe funzionare con ogni sistema remoto &UNIX; approssimativamente compatibile con POSIX. Usa i comandi di shell cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed, e wc. Fish avvia /bin/sh come shell e si aspetta che sia una shell Bourne (o compatibile, come bash). Se i comandi sed e file sono disponibili, e lo è anche il file /etc/apache/magic con le firme dei tipi &MIME; questi verranno usati per indovinare i tipi &MIME;. + +Se è presente Perl sul sistema remoto, verrà usato di preferenza. In questo caso, sono necessari solo i comandi env e /bin/sh. Usare Perl ha il vantaggio aggiuntivo di una maggior velocità di esecuzione. + +Fish può funzionare anche su macchine &Windows;, se strumenti come Cygwin sono installati. Tutti i programmi citati sopra devono essere installati nel PATH di sistema, e la shell iniziale deve essere in grado di eseguire correttamente il comando echo FISH:;/bin/sh. + +
        diff --git a/po/it/docs/kioslave5/gzip/index.docbook b/po/it/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..5e17926 --- /dev/null +++ b/po/it/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +Luciano Montanaro
        mikelima@cirulla.net
        Traduzione del documento
        +
        +
        + +gzip è un programma di compressione + +Il kioslave gzip non è usabile direttamente, essendo pensato per essere usato come filtro. Ad esempio, il kioslave tar può far filtrare un file attraverso il kioslave gzip per mostrare il contenuto di un file tar.gz direttamente all'interno di una finestra di &konqueror;. + +Facendo clic su un file compresso con estensione gz da &konqueror;, questo KIOSlave è usato per decomprimerlo e mostrarlo come se fosse un file normale (non compresso). + +Gli sviluppatori che volessero usare il filtro gzip possono trovare la documentazione sull'uso dei kioslave presso http://techbase.kde.org + +Vedi anche il manuale: gzip. + +
        diff --git a/po/it/docs/kioslave5/info/index.docbook b/po/it/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..2f7cd30 --- /dev/null +++ b/po/it/docs/kioslave5/info/index.docbook @@ -0,0 +1,72 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +Luciano Montanaro
        mikelima@cirulla.net
        Traduzione del documento
        +
        +
        + +Info è un tipo di documentazione. I documenti sono in un formato di file chiamato texinfo, e possono essere letti dalla linea di comando con il programma info. + +Il kioslave info permette di leggere le pagine info installate sul sistema dall'interno di &konqueror;. Si può fare molto facilmente: + +info:gcc + +Questo mostrerà il nodo iniziale della documentazione Info del compilatore &gcc;. + +Info è un sostituto &GNU; di man, ma non è usato molto al di fuori dei programmi &GNU;. + +La documentazione Info installata può essere letta semplicemente dall'applicazione &khelpcenter;, o, in alternativa, puoi usare il kioslave info direttamente da &konqueror; o dalla minicli. + +
        diff --git a/po/it/docs/kioslave5/man/index.docbook b/po/it/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..2e93722 --- /dev/null +++ b/po/it/docs/kioslave5/man/index.docbook @@ -0,0 +1,155 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +Luciano Montanaro
        mikelima@cirulla.net
        Traduzione del documento
        +
        +
        + +Usando il kioslave man si potrà accedere facilmente alle pagine di manuale installate sul sistema. Si usa facilmente: + + + +man: + +Mostra le sezioni del manuale, fai clic per trovare il resto. + + + +man:/fopen + +Mostra la pagina di manuale di fopen. + + + +man:/fopen(3) + +Mostra la pagina di manuale di fopen nella sezione 3. + + + +man:/(3) + +Mostra l'indice della sezione 3. + + + +man:/intro(3) + +Mostra l'introduzione della sezione 3. + + + + +Se c'è più di una pagina di manuale con il nome che hai inserito, otterrai una lista da cui scegliere quale mostrare. + +C'è anche una scorciatoia: #fopen, che ha lo stesso effetto della linea precedente. + +Se non riesci a trovare le pagine di manuale, correggi il file di configurazione /etc/manpath.config (il nome può variare a seconda della distribuzione che usi) oppure imposta correttamente le variabili MANPATH e MANSECT. + +Come per tutti gli altri kioslave di &kde; è possibile inserire un &URL; come man:/socket in qualsiasi applicazione di &kde;. Prova in &kwrite; e vedrai la pagina di manuale in formato &HTML;. + +Contatta la mailing list: kde-devel@kde.org + +
        diff --git a/po/it/docs/kioslave5/network/index.docbook b/po/it/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..9558ba9 --- /dev/null +++ b/po/it/docs/kioslave5/network/index.docbook @@ -0,0 +1,93 @@ + + + +]> + +
        + +network + + + + Friedrich W. H.Kossebau kossebau@kde.org + LucianoMontanaro
        mikelima@cirulla.net
        Traduzione della documentazione
        +
        + + 2016—12—11 + Applications 16.12 + +
        + + +L'ioslave network permette all'utente di navigare fra i dispositivi di rete connessi alla rete locale e fra i servizi che ospitano. È anche possibile avviare programmi per i servizi di tipo noto. + +Per vedere tutti i dispositivi trovati, inserisci network://. + +network://nome_host_del_dispositivo elencherà tutti i servizi resi disponibili da un dispositivo. + +La selezione di un servizio rimanderà a un URL che corrisponde al servizio scelto, a patto che sia disponibile. Ad esempio ssh://nome_host_del_dispositivo:porta/ per il servizio SSH. Ciascun tipo di servizio noto ha un tipo MIME assegnato, quindi un utente può assegnare nuovi gestori per gli URL risultanti. Ciò si fa con il modulo Associazione file di &systemsettings;. I tipi MIME dei servizi sono per ora tutti chiamati inode/vnd.kde.service.*. + + + L'ioslave network al momento trova e mostra solo i dispositivi e i servizi che si annunciano con il sistema di scoperta dei servizi DNS-SD. + + +
        + diff --git a/po/it/docs/kioslave5/nfs/index.docbook b/po/it/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..20c655e --- /dev/null +++ b/po/it/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +Luciano Montanaro
        mikelima@cirulla.net
        Traduzione del documento
        +
        +
        +Il protocollo NFS di Sun permette l'accesso remoto trasparente ai filesystem condivisi su una rete. Il protocollo NFS è progettato per essere indipendente da macchina, sistema operativo, architettura di rete e protocollo di trasporto. Questa indipendenza è ottenuta attraverso l'uso di primitive di invocazione remota di procedure (RPC, ovvero Remote Procedure Call) costruite su una rappresentazione esterna di dati (XDR, eXternal Data Representation). + +Il protocollo MOUNT esegue le funzioni specifiche del sistema che permettono ai client di attaccare porzioni di filesystem remoti ad un punto all'interno del filesystem locale. Il processo mount permette inoltre al server di rilasciare privilegi di accesso ad un insieme di client ristretto attraverso il controllo dell'esportazione. + +Il gestore di Lock fornisce la funzionalità di locking dei file quando usato in ambiente NFS. Il protocollo di gestione di lock di rete (NLM, Network Lock Manager) isola gli aspetti inerentemente "a stati" del locking dei file in un protocollo separato. + +Fonte: http://www.networksorcery.com/enp/protocol/nfs.htm + +Vedi il manuale: nfs. +
        diff --git a/po/it/docs/kioslave5/recentdocuments/index.docbook b/po/it/docs/kioslave5/recentdocuments/index.docbook new file mode 100644 index 0000000..8318bc6 --- /dev/null +++ b/po/it/docs/kioslave5/recentdocuments/index.docbook @@ -0,0 +1,74 @@ + + + +]> + +
        +Documenti recenti + + + + + &Burkhard.Lueck;&Burkhard.Lueck.mail; +LuigiToscano
        luigi.toscano@tiscali.it
        Traduzione del documento
        +
        + +2016-12-01 +Applications 16.12 + +
        + +Un kioslave per mostrare i documenti o &URL; recenti nella finestra di dialogo dei file, nel gestore dei file, in &krunner; e nel menu delle applicazioni. + +Puoi usare il kioslave in questo modo: + +Digita recentdocuments:/ nella barra degli indirizzi di &dolphin;, &konqueror; e nella finestra di dialogo dei file per elencare tutti i documenti o &URL; aperti di recente. + +Puoi aggiungere una voce alla barra laterale dei luoghi: fai clic con il pulsante destro sulla barra laterale, scegli Aggiungi voce, inserisci recentdocuments:/ nel campo Posizione e salvarlo. Dovrebbe essere ora disponibile in tutte le finestre di dialogo dei file, a meno che non abiliti l'opzione per mostrare questa voce solo in questa applicazione. + +Nel modulo delle &systemsettings; Ricerca di Plasma abilita l'estensione di ricerca Documenti recenti per usare questo kioslave in &krunner;. + +Nel Menu delle applicazioni aggiungi una voce di menu con i documenti recenti in alto nel menu abilitando l'opzione Mostra documenti recenti nella pagina delle impostazioni. + +
        diff --git a/po/it/docs/kioslave5/sftp/index.docbook b/po/it/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..38db22f --- /dev/null +++ b/po/it/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +Luciano Montanaro
        mikelima@cirulla.net
        Traduzione del documento
        +
        +
        +SFTP è un protocollo sicuro di trasferimento file. sftp è un programma interattivo, simile ad ftp, ma esegue tutte le operazioni su un canale cifrato ssh. Può usare molte caratteristiche di ssh, inclusa l'autenticazione di chiavi pubbliche e la compressione. + +Vedi il manuale: sftp. + +
        diff --git a/po/it/docs/kioslave5/smb/index.docbook b/po/it/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..338ffd8 --- /dev/null +++ b/po/it/docs/kioslave5/smb/index.docbook @@ -0,0 +1,114 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; +LucianoMontanaroTraduzione del documentoFedericoZenith
        federico.zenith@member.fsf.org
        Manutenzione della traduzione
        +
        +2016—12—11 +Applications 16.12 +
        +Il KIOSlave smb permette di sfogliare le condivisioni di una rete &Windows; (o Samba). + +Per vedere i gruppi di lavoro, inserisci smb:/. +smb://un_gruppo_di_lavoro mostrerà gli host del gruppo di lavoro. +Per vedere le condivisioni di un host, inserisci smb://un_host o smb:/un_gruppo_di_lavoro/un_host. +Per accedere direttamente ad una condivisione inserisci smb://un_host/la_condivisione o smb:/un_gruppo_di_lavoro/un_host/la_condivisione. + +Per il funzionamento dell'ioslave smb è necessario che sia installata la libreria libsmbclient. + +Puoi impostare l'utente predefinito e la password nella categoria Rete e connettività di &systemsettings;, sotto CondivisioneCondivisioni Windows. Questo è particolarmente utile se fai parte di un dominio di &Windows; NT. Puoi anche inserire il nome del gruppo di lavoro, ma di solito non è necessario. L'ioslave chiederà il nome utente e la password se non ne hai impostata una predefinita. + +
        + diff --git a/po/it/docs/kioslave5/tar/index.docbook b/po/it/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..0d36255 --- /dev/null +++ b/po/it/docs/kioslave5/tar/index.docbook @@ -0,0 +1,41 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +Luciano Montanaro
        mikelima@cirulla.net
        Traduzione del documento
        +
        +
        +Un programma di archiviazione progettato per conservare ed estrarre file da un file di archivio noto come tarfile. Un tarfile può essere fatto su un'unità a nastro, ma è d'uso comune scriverlo su un file normale. + +Vedi il manuale: tar. + +
        diff --git a/po/it/docs/kioslave5/thumbnail/index.docbook b/po/it/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..1219650 --- /dev/null +++ b/po/it/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +Luciano Montanaro
        mikelima@cirulla.net
        Traduzione del documento
        +
        +2016—12—11 +Applications 16.12 +
        +Il kioslave thumbnail è usato da &kde; per la gestione trasparente alla rete delle miniature ed alla loro generazione persistente. + +Il kioslave thumbnail usa delle estensioni per generare le miniature. Puoi abilitare la visualizzazione di queste miniature dalla voce di menu Visualizza Anteprima disponibile in &dolphin; o nella modalità di gestione file di &konqueror;. + +Il kioslave thumbnail non è direttamente utile per l'utente, ma gli sviluppatori possono usarlo all'interno delle applicazioni per creare le anteprime. + +Vedi la documentazione nei sorgenti per maggiori informazioni. La puoi trovare nella cartella dei sorgenti thumbnail + +
        diff --git a/po/it/docs/kioslave5/xz/index.docbook b/po/it/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..45bc0a1 --- /dev/null +++ b/po/it/docs/kioslave5/xz/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +PinoToscano
        toscano.pino@tiscali.it
        Traduzione italiana
        +
        +
        + +Xz è un programma di compressione + +Il kioslave xz non è usabile direttamente, essendo pensato per essere usato come filtro. Ad esempio, il kioslave tar può far filtrare un file attraverso il kioslave xz per mostrare il contenuto di un file tar.lzma o tar.xz direttamente all'interno di una finestra di &konqueror;. + +Facendo clic su un file compresso con estensione lzma o tar.xz da &konqueror;, questo kioslave è usato per decomprimerlo e mostrarlo come se fosse un file normale (non compresso). + +Gli sviluppatori che volessero usare il filtro xz possono trovare la documentazione sull'uso dei kioslave presso http://techbase.kde.org + +Vedi anche il manuale: xz. + +
        diff --git a/po/it/kfileaudiopreview5.po b/po/it/kfileaudiopreview5.po new file mode 100644 index 0000000..519e5cd --- /dev/null +++ b/po/it/kfileaudiopreview5.po @@ -0,0 +1,42 @@ +# translation of kfileaudiopreview4.po to Italian +# Copyright (C) 2003, 2009 Free Software Foundation, Inc. +# +# Daniele Medri , 2003. +# Nicola Ruggero , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-07-07 20:14+0200\n" +"Last-Translator: Nicola Ruggero \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Riproduci &automaticamente" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "avvia riproduzione" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pausa" + +#~ msgid "stop playback" +#~ msgstr "arresta riproduzione" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "ciclo: riavvia riproduzione al termine" + +#~ msgid "Media Player" +#~ msgstr "Lettore multimediale" diff --git a/po/it/kio5_activities.po b/po/it/kio5_activities.po new file mode 100644 index 0000000..e110c52 --- /dev/null +++ b/po/it/kio5_activities.po @@ -0,0 +1,248 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Federico Zenith , 2012, 2013, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: kactivitymanagerd_fileitem_linking_plugin\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-12-28 22:26+0100\n" +"Last-Translator: Vincenzo Reale \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Attività" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Caricamento..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Il gestore delle attività non è in esecuzione" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Collega all'attività attuale" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Scollega dall'attività attuale" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Collega a:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Scollega da:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Attività" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Attività attuale" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Vincenzo Reale,Federico Zenith" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "smart2128@baslug.org," + +#~ msgid "Default" +#~ msgstr "Predefinita" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Passa all'attività «%1»" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Attività" + +#~ msgid "Delete activity" +#~ msgstr "Elimina attività" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Sei sicuro di volerlo eliminare «%1»?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Errore durante il caricamento dei file QML. Controlla la tua " +#~ "installazione.\n" +#~ "%1 mancante" + +#~ msgid "Create a new activity" +#~ msgstr "Crea una nuova attività" + +#~ msgid "Activity settings" +#~ msgstr "Impostazioni delle attività" + +#~ msgid "General" +#~ msgstr "Generale" + +#~ msgid "Other" +#~ msgstr "Altro" + +#~ msgid "Create" +#~ msgstr "Crea" + +#~ msgid "Apply" +#~ msgstr "Applica" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Scorciatoia per passare a questa attività:" + +#~ msgid "Activity information" +#~ msgstr "Informazioni sulle attività" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Description" +#~ msgstr "Descrizione" + +#~ msgid "Wallpaper" +#~ msgstr "Sfondo" + +#~ msgid "Change..." +#~ msgstr "Cambia..." + +#~ msgid "Icon" +#~ msgstr "Icona" + +#~ msgid "Switching" +#~ msgstr "Commutazione" + +#~ msgid "Privacy" +#~ msgstr "Riservatezza" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "per sempre" + +#~ msgid "Forget the last hour" +#~ msgstr "Dimentica l'ultima ora" + +#~ msgid "Forget the last two hours" +#~ msgstr "Dimentica le ultime due ore" + +#~ msgid "Forget a day" +#~ msgstr "Dimentica un giorno" + +#~ msgid "Forget everything" +#~ msgstr "Dimentica tutto" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " mese" +#~ msgstr[1] " mesi" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "per " + +#~ msgid "Create activity..." +#~ msgstr "Crea attività..." + +#~ msgid "Activity switching" +#~ msgstr "Commutazione attività" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Percorri le attività" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Percorri le attività (inverso)" + +#~ msgid "Form" +#~ msgstr "Modulo" + +#~ msgid "Remember opened documents:" +#~ msgstr "Ricorda i documenti aperti:" + +#~ msgid "For a&ll applications" +#~ msgstr "Per tutte &le applicazioni" + +#~ msgid "&Do not remember" +#~ msgstr "&Non ricordare" + +#~ msgid "O&nly for specific applications" +#~ msgstr "&Solo per certe applicazioni" + +#~ msgid "Keep history" +#~ msgstr "Mantieni la cronologia" + +#~ msgid "Clear recent history" +#~ msgstr "Ripulisci la cronologia recente" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Metti in lista nera tutte le applicazioni non in questo elenco" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Ricorda il desktop virtuale attuale per ogni attività (richiede il " +#~ "riavvio)" + +#~ msgid "Shortcuts" +#~ msgstr "Scorciatoie" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Privato - non tracciare l'utilizzo per questa attività" + +#~ msgid "Delete" +#~ msgstr "Elimina" + +#~ msgid "Activity name" +#~ msgstr "Nome dell'attività" + +#~ msgid "Available Features" +#~ msgstr "Funzionalità disponibili" + +#~ msgid "Plugins" +#~ msgstr "Estensioni" + +#~ msgid "Enable activities management" +#~ msgstr "Abilita la gestione delle attività" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Il gestore delle attività non sta funzionando correttamente." + +#~ msgid "Activities..." +#~ msgstr "Attività..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "© 2012 Ivan Cukic" diff --git a/po/it/kio5_archive.po b/po/it/kio5_archive.po new file mode 100644 index 0000000..00a117b --- /dev/null +++ b/po/it/kio5_archive.po @@ -0,0 +1,36 @@ +# translation of kio_archive.po to Italian +# Luciano Montanaro , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-10-02 16:39+0200\n" +"Last-Translator: Luciano Montanaro \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Non si è potuto aprire il file, probabilmente perché il formato del file non " +"è gestito.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Non si è potuto aprire l'archivio, forse perché il formato non è gestito.\n" +"%1" diff --git a/po/it/kio5_bookmarks.po b/po/it/kio5_bookmarks.po new file mode 100644 index 0000000..ae4a1f2 --- /dev/null +++ b/po/it/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# translation of kio_bookmarks.po to Italian +# Copyright (C) 2008 Free Software Foundation, Inc. +# Vincenzo Reale , 2008, 2014. +# Luigi Toscano , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-10-31 14:22+0100\n" +"Last-Translator: Luigi Toscano \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 20.04.3\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Radice" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Risorse" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Impossibile trovare la configurazione dei segnalibri" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Impossibile trovare l'editor dei segnalibri" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Richiesta errata: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Non ci sono segnalibri da visualizzare." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"File CSS kio_bookmarks non trovato. Il risultato non sarà gradevole.\n" +"Controlla la tua installazione." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "I miei segnalibri" + +#~ msgid "My bookmarks" +#~ msgstr "I miei segnalibri" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Sviluppatore iniziale" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Vincenzo Reale" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "smart2128@baslug.org" diff --git a/po/it/kio5_fish.po b/po/it/kio5_fish.po new file mode 100644 index 0000000..7d2f654 --- /dev/null +++ b/po/it/kio5_fish.po @@ -0,0 +1,53 @@ +# translation of kio_fish.po to Italian +# Copyright (C) 2003, 2004, 2009 Free Software Foundation, Inc. +# +# Andrea Rizzi , 2003. +# Andrea RIZZI , 2004. +# Nicola Ruggero , 2009, 2013. +# Federico Zenith , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-01-30 17:24+0100\n" +"Last-Translator: Nicola Ruggero \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Connessione..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inizializzazione protocollo..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Accesso locale" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticazione SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Disconnesso." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Nicola Ruggero" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "nicola@nxnt.org" diff --git a/po/it/kio5_info.po b/po/it/kio5_info.po new file mode 100644 index 0000000..f6b4f35 --- /dev/null +++ b/po/it/kio5_info.po @@ -0,0 +1,29 @@ +# translation of kio_info.po to Italian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Nicola Ruggero , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-04-27 08:13+0200\n" +"Last-Translator: Nicola Ruggero \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Impossibile trovare il file %1 che è necessario per l'avvio del servizio. " +"Per favore controlla il software installato." diff --git a/po/it/kio5_man.po b/po/it/kio5_man.po new file mode 100644 index 0000000..e9b5a30 --- /dev/null +++ b/po/it/kio5_man.po @@ -0,0 +1,221 @@ +# translation of kio_man.po to Italian +# Copyright (C) 2003, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. +# Andrea Rizzi , 2003, 2005. +# Andrea Rizzi , 2007. +# Nicola Ruggero , 2008, 2009, 2013. +# Luigi Toscano , 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-21 00:04+0200\n" +"Last-Translator: Luigi Toscano \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 20.04.3\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Nessuna pagina di man trovata per %1. Controlla di non aver scritto male il nome della pagina richiesta, e fai " +"attenzione alle maiuscole e minuscole che sono considerate come lettere " +"diverse.Se il nome è corretto, probabilmente devi estendere il " +"percorso di ricerca corretto per le pagine di manuale, o tramite l'uso della " +"variabile d'ambiente MANPATH o tramite un file di " +"configurazione nella cartella /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"È stata trovata la pagina di manuale %1, ma non può " +"essere aperta o analizzata." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"La pagina di manuale specificata fa riferimento ad un'altra pagina " +"%1,ma non è stato possibile trovare tale pagina " +"%2." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Errore nel visore delle pagine di manuale" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "C'è più di una pagina di manuale che corrisponde alla richiesta:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Pagine di manuale multiple" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Nota: se vuoi leggere una pagina di man nella tua lingua sappi che potrebbe " +"essere obsoleta o contenere degli errori. In caso di dubbio controlla sempre " +"la versione inglese." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "File header" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "File header (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Comandi utente" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Comandi utente (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Chiamate di sistema" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Sottoprocedure" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Moduli Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Funzioni di rete" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Dispositivi" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formati file" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Giochi" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Varie" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Amministrazione di sistema" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentazione locale" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nuovi" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Indice principale delle pagine di manuale" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sezione %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Indice della sezione %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Indice delle pagine di manuale" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Generazione indice" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Impossibile trovare il programma sgml2roff nel sistema. " +"Installalo se necessario, e controlla che possa essere trovato tramite la " +"variabile d'ambiente PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "Apertura di %1 non riuscita." + +#~ msgid "Man output" +#~ msgstr "Output di man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Nicola Ruggero, Andrea Rizzi" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "nicola@nxnt.org," + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/it/kio5_mtp.po b/po/it/kio5_mtp.po new file mode 100644 index 0000000..65c628a --- /dev/null +++ b/po/it/kio5_mtp.po @@ -0,0 +1,38 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Vincenzo Reale , 2012, 2014. +# Luigi Toscano , 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-03-01 23:58+0100\n" +"Last-Translator: Luigi Toscano \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Nessun dispositivo di archiviazione trovato. Assicurati che il tuo " +"dispositivo sia sbloccato e che MTP sia abilitato nelle impostazioni di " +"connessione USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Impossibile copiare/spostare file sul dispositivo stesso" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Nessuna archiviazione trovata. Devi forse sbloccare il tuo dispositivo?" diff --git a/po/it/kio5_network.po b/po/it/kio5_network.po new file mode 100644 index 0000000..8f1ac85 --- /dev/null +++ b/po/it/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# Luigi Toscano , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-29 00:50+0100\n" +"Last-Translator: Luigi Toscano \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.08.1\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Rete" diff --git a/po/it/kio5_nfs.po b/po/it/kio5_nfs.po new file mode 100644 index 0000000..03a344c --- /dev/null +++ b/po/it/kio5_nfs.po @@ -0,0 +1,67 @@ +# translation of kio_nfs.po to Italian +# Copyright (C) 2004 Free Software Foundation, Inc. +# Andrea RIZZI , 2004. +# Vincenzo Reale , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-03-29 18:52+0200\n" +"Last-Translator: Vincenzo Reale \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: versione di NFS non supportata" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Errore RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Spazio insufficiente sul dispositivo" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "File system di sola lettura" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Nome file troppo lungo" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Quota disco superata" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Errore NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Montaggio di %1 non riuscito" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Destinazione sconosciuta" + +#~ msgid "An RPC error occurred." +#~ msgstr "Si è verificato un errore di RPC." diff --git a/po/it/kio5_recentdocuments.po b/po/it/kio5_recentdocuments.po new file mode 100644 index 0000000..3bbd656 --- /dev/null +++ b/po/it/kio5_recentdocuments.po @@ -0,0 +1,22 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Nicola Ruggero , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-07-18 14:32+0200\n" +"Last-Translator: Nicola Ruggero \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documenti recenti" diff --git a/po/it/kio5_sftp.po b/po/it/kio5_sftp.po new file mode 100644 index 0000000..d972027 --- /dev/null +++ b/po/it/kio5_sftp.po @@ -0,0 +1,463 @@ +# translation of kio_sftp.po to Italian +# Copyright (C) 2003, 2004, 2005, 2008 Free Software Foundation, Inc. +# Andrea Rizzi , 2003, 2004, 2005. +# Nicola Ruggero , 2008, 2010, 2012, 2013. +# Vincenzo Reale , 2015. +# Luigi Toscano , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-11-18 23:01+0100\n" +"Last-Translator: Luigi Toscano \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frase segreta sbagliata" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Impossibile allocare le richiamate" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Impossibile impostare il livello di dettaglio del registro." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Impossibile impostare il livello di dettaglio a userdata." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Impossibile impostare il livello di dettaglio a callback." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Accesso SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Usa il campo nome utente per rispondere a questa domanda." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Inserisci la password." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Sito:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Impossibile creare una nuova sessione SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Impossibile impostare un tempo massimo." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Impossibile disabilitare l'algoritmo di Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Impossibile impostare la compressione." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Impossibile impostare l'host." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Impossibile impostare la porta." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Impossibile impostare il nome utente." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Impossibile analizzare il file di configurazione." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Apertura della connessione SFTP all'host %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Impossibile ottenere il nome del tipo della chiave pubblica del server" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Impossibile creare l'hash dalla chiave pubblica del server" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" +"Impossibile creare un'impronta digitale per la chiave pubblica del server" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Una chiave host %1 per questo server non è stata trovata, ma esiste un altro " +"tipo di chiave.\n" +"Un utente malintenzionato può cambiare la chiave predefinita del server per " +"confondere il client facendogli pensare che la chiave non esiste.\n" +"Contatta l'amministratore di sistema.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"La chiave host per il server %1 è cambiata.\n" +"Questo significa che sta accadendo un DNS SPOOFING oppure che l'indirizzo IP " +"dell'host e la sua chiave sono cambiati contemporaneamente.\n" +"L'impronta digitale della chiave %2 inviata dall'host remoto è:\n" +" SHA256:%3\n" +"Contatta l'amministratore di sistema.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Attenzione: impossibile verificare l'identità dell'host." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Impossibile stabilire l'autenticità dell'host %1.\n" +"L'impronta digitale della chiave %2 è: %3\n" +"Sei sicuro di volerti collegare ugualmente?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Autenticazione non riuscita." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Autenticazione non riuscita. Il server non ha inviato alcuna modalità " +"d'autenticazione." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Inserisci il nome utente e la password." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Password o nome utente sbagliati" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Impossibile contattare il sottosistema SFTP. Assicurati che SFTP sia " +"abilitato nel server." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Impossibile inizializzare la sessione SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Connesso correttamente a %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"La chiave host per questo server non è stata trovata, ma esiste un altro " +"tipo di chiave.\n" +"Un utente malintenzionato può cambiare la chiave predefinita del server per " +"confondere il client facendogli pensare che la chiave non esiste.\n" +"Contatta l'amministratore di sistema.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"La chiave host per il server %1 è cambiata.\n" +"Questo significa che sta accadendo un DNS SPOOFING oppure che l'indirizzo IP " +"dell'host e la sua chiave sono cambiati contemporaneamente.\n" +"L'impronta digitale della chiave inviata dall'host remoto è:\n" +" %2\n" +"Contatta l'amministratore di sistema.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Impossibile stabilire l'autenticità dell'host %1.\n" +"L'impronta digitale della chiave è: %2\n" +"Sei sicuro di volerti collegare ugualmente?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contesto sftp non valido" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Impossibile cambiare i permessi di\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Impossibile leggere il collegamento: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Nessun nome host specificato." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "" +#~ "Si è verificato un errore interno. Per favore prova a ripetere la " +#~ "richiesta." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "" +#~ "Per favore immetti il tuo nome utente e la frase segreta della chiave" + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Attenzione: l'identità di questo host è cambiata." + +#~ msgid "Connection failed." +#~ msgstr "Connessione non riuscita." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Connessione chiusa dall'host remoto." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "errore SFTP inaspettato: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "Versione SFTP %1" + +#~ msgid "Protocol error." +#~ msgstr "Errore di protocollo." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Si è verificato un errore interno. Per favore prova di nuovo." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Si è verificato un errore interno durante la copia del file su «%1». " +#~ "Prova di nuovo, grazie." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "L'host remoto non supporta il cambiamento di nome dei file." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "L'host remoto non supporta la creazione di collegamenti simbolici." + +#~ msgid "Connection closed" +#~ msgstr "Connessione chiusa" + +#~ msgid "End of file." +#~ msgstr "Fine del file." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "Comando SFTP non riuscito per un motivo sconosciuto." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Il server SFTP ha ricevuto un messaggio sbagliato." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Hai provato un operazione non supportata da questo server SFTP." + +#~ msgid "Error code: %1" +#~ msgstr "Codice di errore: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "" +#~ "Impossibile specificare un sottosistema e un comando allo stesso tempo." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Non è stata fornita alcuna opzione per l'esecuzione di ssh." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Impossibile eseguire il processo ssh." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Errore durante il dialogo con ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Per favore fornisci una password." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Per favore immetti la frase segreta della tua chiave SSH privata." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Autenticazione su %1 non riuscita" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "L'identità dell'host remoto «%1» non può essere verificata perché la " +#~ "chiave dell'host non si trova nel file degli host conosciuti." + +# XXX non c'è un file "known hosts" che io sappia, c'è un file "hosts" in linux/unix. +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Aggiungi manualmente la chiave dell'host al file \"known hosts\" o " +#~ "contatta il tuo amministratore." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Aggiungi manualmente la chiave dell'host a %1 o contatta il tuo " +#~ "amministratore." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "L'identità dell'host remoto «%1» non può essere verificata. L'impronta " +#~ "digitale della chiave dell'host è:\n" +#~ "%2\n" +#~ "Devi verificare l'impronta con l'amministratore dell'host prima di " +#~ "connetterti.\n" +#~ "\n" +#~ "Vuoi accettare la chiave e connetterti comunque?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "ATTENZIONE: L'identità dell'host remoto «%1» è cambiata!\n" +#~ "\n" +#~ "Qualcuno potrebbe essersi messo in mezzo nella tua connessione oppure " +#~ "l'amministratore dell'host ha cambiato la chiave. In ogni caso devi " +#~ "verificare l'impronta digitale della chiave con l'amministratore " +#~ "dell'host. L'impronta è:\n" +#~ "%2\n" +#~ "Aggiungi la chiave corretta per questo host in \"%3\" per far sparire " +#~ "questo messaggio." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "ATTENZIONE: L'identità dell'host remoto «%1» è cambiata!\n" +#~ "\n" +#~ "Qualcuno potrebbe essersi messo in mezzo nella tua connessione oppure " +#~ "l'amministratore dell'host ha cambiato la chiave. In ogni caso devi " +#~ "verificare l'impronta digitale della chiave con l'amministratore " +#~ "dell'host prima di connetterti. L'impronta è:\n" +#~ "%2\n" +#~ "Vuoi accettare la nuova chiave dell'host e connetterti comunque?" + +#~ msgid "Host key was rejected." +#~ msgstr "Chiave dell'host non accettata." + +#~ msgid "Please enter a username and password" +#~ msgstr "Per favore immetti un nome utente ed una password" + +#~ msgid "File does not exist." +#~ msgstr "File inesistente." + +#~ msgid "Access is denied." +#~ msgstr "Accesso negato." diff --git a/po/it/kio5_smb.po b/po/it/kio5_smb.po new file mode 100644 index 0000000..79e8bf8 --- /dev/null +++ b/po/it/kio5_smb.po @@ -0,0 +1,206 @@ +# translation of kio_smb.po to Italian +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# Andrea Rizzi , 2003, 2004, 2005. +# Luigi Toscano , 2017, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-10 23:42+0100\n" +"Last-Translator: Luigi Toscano \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 20.08.2\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Ci sono varie opzioni per l'autenticazione su condivisioni SMB.nomeutente: quando ci si autentica in " +"una rete casalinga il nome utente sul server è sufficientenomeutente@example.com: i nomi per " +"l'accesso aziendali moderni hanno lo stesso formato degli indirizzi di posta " +"elettronicaDOMINIO\\nomeutente: per " +"vecchie reti aziendali o vecchi gruppi di lavoro potresti dover aggiungere " +"il nome di dominio NetBIOS come prefisso (pre-Windows 2000)anonimo: è possibile tentare un " +"accesso anonimo usando nome utente e password vuoti. In base alla " +"configurazione del server potrebbe essere richiesto un nome utente non " +"vuoto" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "" +"Per favore immetti le informazioni di autenticazione per %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Per favore immetti le informazioni di autenticazione per:\n" +"Server = %1\n" +"Condivisione = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tipo sconosciuto, né file né directory." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Impossibile trovare un gruppo di lavoro nella tua rete locale. Potrebbe " +"essere dovuto alla presenza di un firewall." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Nessun supporto nel lettore per %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Impossibile connettersi all'host per %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Errore durante la connessione al server responsabile di %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Non è stato possibile trovare la condivisione sul server dato" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descrittore di file errato" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Il nome dato non può essere tradotto in un server univoco. Assicurati che la " +"rete sia configurata bene senza alcun conflitto di nomi tra quelli usati " +"dalla risoluzione dei nomi di Windows e quella di UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: host non raggiungibile" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient ha riscontrato un errore ma non ha specificato di che problema " +"si tratti. Questo può indicare un serio problema con la tua rete oppure un " +"problema con libsmbclient.\n" +"Se ci vuoi aiutare forniscici gentilmente un tcpdump dell'interfaccia di " +"rete mentre provi a navigare (fa attenzione che potrebbe contenere dati " +"privati quindi non ci spedire niente se non sei sicuro di questo - puoi " +"spedire il tcpdump privatamente agli sviluppatori che lo richiedono)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condizione di errore sconosciuta: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Si è verificato un errore tentando di accedere a %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient non è riuscito a creare un contesto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Assicurati che il pacchetto samba sia installato correttamente sul tuo " +"sistema." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Montaggio della condivisione \"%1\" del computer \"%2\" come utente \"%3\" " +"non riuscito.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Smontaggio di \"%1\" non riuscito.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Dispositivo sconosciuto @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient non è riuscito ad inizializzare un contesto" + +#~ msgid "File does not exist: %1" +#~ msgstr "Il file non esiste: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "Inizializzazione di libsmbclient non riuscita" diff --git a/po/it/kio5_thumbnail.po b/po/it/kio5_thumbnail.po new file mode 100644 index 0000000..af05b7e --- /dev/null +++ b/po/it/kio5_thumbnail.po @@ -0,0 +1,83 @@ +# translation of kio_thumbnail.po to Italian +# Luciano Montanaro , 2005, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-06-11 01:48+0200\n" +"Last-Translator: Luciano Montanaro \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Ruota l'immagine automaticamente" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Nessun tipo MIME specificato." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Dimensione non valida o mancante." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Impossibile creare la miniatura per la cartella" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nessuna estensione specificata." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Non è stato possibile caricare ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Impossibile creare la miniatura per %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Non è stato possibile creare la miniatura." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Non è stato possibile scrivere l'immagine." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Non è stato possibile connettersi al segmento di memoria condivisa %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "L'immagine è troppo grande per il segmento di memoria condivisa" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Luciano Montanaro" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mikelima@cirulla.net" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/ja/kfileaudiopreview5.po b/po/ja/kfileaudiopreview5.po new file mode 100644 index 0000000..906aa3b --- /dev/null +++ b/po/ja/kfileaudiopreview5.po @@ -0,0 +1,34 @@ +# Translation of kfileaudiopreview4 into Japanese. +# Ryuichi Kakuda , 2004. +# Yukiko Bando , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-07-05 15:03+0900\n" +"Last-Translator: Yukiko Bando \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "自動再生(&A)" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "再生を開始" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "再生を一時停止" diff --git a/po/ja/kio5_activities.po b/po/ja/kio5_activities.po new file mode 100644 index 0000000..10dabc2 --- /dev/null +++ b/po/ja/kio5_activities.po @@ -0,0 +1,67 @@ +# Tomohiro Hyakutake , 2019. +# Fumiaki Okushi , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kcm_activities\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-05-11 16:16-0700\n" +"Last-Translator: Fumiaki Okushi \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Generator: Lokalize 19.04.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "アクティビティ" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "読み込み中..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Activity Manager が実行されていません" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "現在のアクティビティにリンク" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "現在のアクティビティからリンク解除" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "リンク先:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "リンク解除:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "アクティビティ" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "現在のアクティビティ" diff --git a/po/ja/kio5_archive.po b/po/ja/kio5_archive.po new file mode 100644 index 0000000..709e221 --- /dev/null +++ b/po/ja/kio5_archive.po @@ -0,0 +1,40 @@ +# Translation of kio_archive into Japanese. +# This file is distributed under the same license as the kdebase package. +# Tadashi Jokagi , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2006-11-10 23:00+0900\n" +"Last-Translator: Yukiko Bando \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"ファイルを開けませんでした。おそらくファイルフォーマットがサポートされていな" +"いためです。\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"おそらくファイル形式がサポートされていないため、アーカイブファイルを開けませ" +"んでした。\n" +"%1" diff --git a/po/ja/kio5_bookmarks.po b/po/ja/kio5_bookmarks.po new file mode 100644 index 0000000..c3e506a --- /dev/null +++ b/po/ja/kio5_bookmarks.po @@ -0,0 +1,64 @@ +# Translation of kio_bookmarks into Japanese. +# This file is distributed under the same license as the kdebase package. +# Yukiko Bando , 2008. +# Fumiaki Okushi , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-11-09 11:46+0900\n" +"Last-Translator: Yukiko Bando \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "ルート" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "場所" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "不正な要求: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "表示するブックマークがまだありません。" + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS ファイルが見つからないため、見栄えが悪くなります。\n" +"インストールを確認してください。" + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "マイブックマーク" diff --git a/po/ja/kio5_fish.po b/po/ja/kio5_fish.po new file mode 100644 index 0000000..3e28ae0 --- /dev/null +++ b/po/ja/kio5_fish.po @@ -0,0 +1,48 @@ +# translation of kio_fish.po to Japanese +# Copyright (C) 2003-2007 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# Taiki Komoda , 2003, 2004. +# ABE Masanori , 2004. +# Fumiaki Okushi , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2014-12-06 16:43-0800\n" +"Last-Translator: Fumiaki Okushi \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.9\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "接続中..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "プロトコルを初期化中..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "ローカルログイン" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH 認証" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "切断しました。" diff --git a/po/ja/kio5_info.po b/po/ja/kio5_info.po new file mode 100644 index 0000000..4178023 --- /dev/null +++ b/po/ja/kio5_info.po @@ -0,0 +1,28 @@ +# Translation of kio_info into Japanese. +# Yukiko Bando , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2010-01-09 23:17+0900\n" +"Last-Translator: Yukiko Bando \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"このサービスを実行するために必要なファイル ‘%1’ を見つけることができません。" +"ソフトウェアのインストールを確認してください。" diff --git a/po/ja/kio5_man.po b/po/ja/kio5_man.po new file mode 100644 index 0000000..2053edf --- /dev/null +++ b/po/ja/kio5_man.po @@ -0,0 +1,222 @@ +# Translation of kio_man into Japanese. +# This file is distributed under the same license as the kdebase package. +# Noboru Sinohara , 2002. +# ABE Masanori , 2004. +# Shinichi Tsunoda , 2005. +# Yukiko Bando , 2008. +# Fumiaki Okushi , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-12-06 16:43-0800\n" +"Last-Translator: Fumiaki Okushi \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"%1 にマッチするマニュアルページが見つかりませんでした。

        マ" +"ニュアルページの名前を打ち間違えていないかチェックしてください。
        大文字" +"と小文字の違いを区別する必要があることに注意してください。
        すべてが正し" +"い場合、おそらく環境変数 $MANPATH またはディレクトリ ‘/etc’ にある設" +"定ファイルで、マニュアルページの検索パスをより適切に設定する必要があります。" +"" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        KDE マニュアルビューアのエラー

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "マッチするマニュアルページが複数あります。" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"【注意】 あなたの言語でマニュアルページを読む場合、誤りや古くなった内容が含ま" +"れている可能性があります。疑わしい場合は、英語版を一読してみる必要がありま" +"す。" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "ユーザコマンド" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "ユーザコマンド (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "システムコール" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "サブルーチン" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl モジュール" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "ネットワーク機能" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "デバイス" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "ファイルフォーマット" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "ゲーム" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "その他" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "システム管理" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "カーネル" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "ローカルドキュメント" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "新規" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX マニュアルインデックス" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "セクション %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "セクション %1 のインデックス: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX マニュアルインデックス" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "インデックス生成中" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"sgml2roff プログラムが見つかりません。必要ならインストールして、KDE 起動前に" +"環境変数 PATH を設定し直してください。" + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 を開けませんでした。" + +#~ msgid "Man output" +#~ msgstr "man 出力" diff --git a/po/ja/kio5_mtp.po b/po/ja/kio5_mtp.po new file mode 100644 index 0000000..a81ccef --- /dev/null +++ b/po/ja/kio5_mtp.po @@ -0,0 +1,27 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2012-10-08 18:41-0700\n" +"Last-Translator: Japanese KDE translation team \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "" diff --git a/po/ja/kio5_network.po b/po/ja/kio5_network.po new file mode 100644 index 0000000..a328d11 --- /dev/null +++ b/po/ja/kio5_network.po @@ -0,0 +1,20 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-12-03 12:06-0800\n" +"Last-Translator: Japanese KDE translation team \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "" diff --git a/po/ja/kio5_nfs.po b/po/ja/kio5_nfs.po new file mode 100644 index 0000000..87ca683 --- /dev/null +++ b/po/ja/kio5_nfs.po @@ -0,0 +1,66 @@ +# translation of kio_nfs.po to Japanese. +# Copyright (C) 2001-2007 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# Taiki Komoda , 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2006-11-10 23:00+0900\n" +"Last-Translator: Yukiko Bando \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.8\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "デバイスの残り容量がありません" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "ファイルシステムは読み取り専用です" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "ファイル名が長すぎます" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "ディスククォータを超過しました" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" diff --git a/po/ja/kio5_recentdocuments.po b/po/ja/kio5_recentdocuments.po new file mode 100644 index 0000000..24c3da4 --- /dev/null +++ b/po/ja/kio5_recentdocuments.po @@ -0,0 +1,20 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-17 00:50-0700\n" +"Last-Translator: Japanese KDE translation team \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "" diff --git a/po/ja/kio5_sftp.po b/po/ja/kio5_sftp.po new file mode 100644 index 0000000..0822522 --- /dev/null +++ b/po/ja/kio5_sftp.po @@ -0,0 +1,311 @@ +# Translation of kio_sftp into Japanese. +# This file is distributed under the same license as the kdebase package. +# ABE Masanori , 2004. +# Kurose Shushi , 2004. +# Jumpei Ogawa , 2010. +# Jumpei Ogawa (phanect) , 2010. +# Fumiaki Okushi , 2010, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2014-12-06 16:44-0800\n" +"Last-Translator: Fumiaki Okushi \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "不正なパスフレーズ" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "コールバックを割り当てることができませんでした" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "ログレベルを設定できません。" + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "ログレベルを設定できません。" + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "コールバックを割り当てることができませんでした" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP ログイン" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "この質問への回答には、username 入力フィールドを用いてください。" + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "パスワードを入力してください。" + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "サイト:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "新しい SSH セッションを作成できませんでした。" + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "タイムアウトを設定できません" + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "ポートを設定できません。" + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "圧縮を設定できません" + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "ホストを設定できません。" + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "ポートを設定できません。" + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "ユーザ名を設定できません。" + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "設定ファイルを解析できませんでした。" + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "ホスト %1:%2 への SFTP 接続開始" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "ユーザ名を設定できません。" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"このサーバのホストの鍵が見つかりませんでしたが、別の種類の鍵があります。\n" +"攻撃者は、デフォルトのサーバの鍵を変更することで、鍵が存在しないように見せか" +"けてあなたを混乱させようとしているのかもしれません。\n" +"システム管理者に連絡してください。\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"サーバ %1 のホストの鍵が変更されました。\n" +"これは DNS のなりすましか、ホストの IP アドレスとホストの鍵が同時に変更された" +"可能性の二つが考えられます。\n" +"リモートホストから送られてきた鍵のフィンガープリントは:\n" +" %2\n" +"\n" +"システム管理者に連絡してください。\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "【警告】 ホストの識別情報を検証できません。" + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"ホスト %1 を認証できません。\n" +"鍵のフィンガープリントは: %2\n" +"接続を続行しますか?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "認証に失敗しました。" + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "ユーザ名とパスワードを入力してください。" + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "不正なユーザ名とパスワード" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP サブシステムにリクエストを送信できません。サーバ側で SFTP が有効になって" +"いることを確認してください。" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP セッションを初期化できませんでした。" + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 への接続に成功" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"このサーバのホストの鍵が見つかりませんでしたが、別の種類の鍵があります。\n" +"攻撃者は、デフォルトのサーバの鍵を変更することで、鍵が存在しないように見せか" +"けてあなたを混乱させようとしているのかもしれません。\n" +"システム管理者に連絡してください。\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"サーバ %1 のホストの鍵が変更されました。\n" +"これは DNS のなりすましか、ホストの IP アドレスとホストの鍵が同時に変更された" +"可能性の二つが考えられます。\n" +"リモートホストから送られてきた鍵のフィンガープリントは:\n" +" %2\n" +"\n" +"システム管理者に連絡してください。\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"ホスト %1 を認証できません。\n" +"鍵のフィンガープリントは: %2\n" +"接続を続行しますか?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"以下のパーミッションを変更できませんでした\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "リンクを読み込めませんでした: %1" diff --git a/po/ja/kio5_smb.po b/po/ja/kio5_smb.po new file mode 100644 index 0000000..0cb6acc --- /dev/null +++ b/po/ja/kio5_smb.po @@ -0,0 +1,191 @@ +# Translation of kio_smb into Japanese. +# This file is distributed under the same license as the kdebase package. +# ABE Masanori , 2004. +# Taiki Komoda , 2004. +# Kurose Shushi , 2004. +# Shinichi Tsunoda , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2006-11-10 23:00+0900\n" +"Last-Translator: Yukiko Bando \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "%1 の認証情報を入力してください。" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"以下への認証情報を指定してください:\n" +"サーバ = %1\n" +"共有名 = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"不明なファイルタイプ、ディレクトリでもファイルでもありません。" + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"ローカルネットワークにワークグループが見つかりません。ファイアウォールが有効" +"にされていることが原因かもしれません。" + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 用のデバイスにメディアがありません" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 のホストに接続できません" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 を担当するサーバに接続中にエラー" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "指定されたサーバに共有が見つかりませんでした" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "不正なファイル識別子" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"与えられた名前は唯一のサーバに名前解決できませんでした。Windows と UNIX の名" +"前解決に使用される名前が競合しないようにネットワークが設定されているか確認し" +"てください。" + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient はエラーを報告しましたが、問題が何であるかは特定されていません。" +"これは、ネットワークの重大な問題を示している可能性もありますが、libsmbclient " +"の問題を示しているかもしれません。\n" +"私達に協力していただけるのであれば、ブラウズを試みている間のネットワークイン" +"ターフェースの tcpdump を送ってください。(注意: これにはプライベートなデータ" +"が含まれている可能性があるので、不確かな場合は公の場に送らないでください。開" +"発者がお願いした場合は、個人的に送ってください。)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "不明なエラー条件です。状態: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient はコンテキストの作成に失敗しました" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"システムに samba パッケージが適切にインストールされているか確認してください。" + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"共有 “%1” のマウントは、ホスト “%2” ユーザ “%3” で失敗しました。\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"マウントポイント “%1” のアンマウントに失敗しました。\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient はコンテキストの初期化に失敗しました" diff --git a/po/ja/kio5_thumbnail.po b/po/ja/kio5_thumbnail.po new file mode 100644 index 0000000..693e518 --- /dev/null +++ b/po/ja/kio5_thumbnail.po @@ -0,0 +1,76 @@ +# Translation of kio_thumbnail into Japanese. +# This file is distributed under the same license as the kdebase package. +# Tadashi Jokagi , 2005. +# Yukiko Bando , 2010. +# Fumiaki Okushi , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-12-08 21:56-0800\n" +"Last-Translator: Fumiaki Okushi \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "自動的に画像を回転する" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "MIME タイプが指定されていません。" + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "サイズが無効か、指定されていません。" + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "フォルダのサムネイルを作成できません" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "プラグインが指定されていません。" + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 を読み込めません" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 のサムネイルを作成できません" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "サムネイルの作成に失敗しました。" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "画像を書き込めませんでした。" + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "共有メモリセグメント %1 への添付に失敗" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "共有メモリセグメントへの画像が大きすぎます" diff --git a/po/kk/kfileaudiopreview5.po b/po/kk/kfileaudiopreview5.po new file mode 100644 index 0000000..93cf570 --- /dev/null +++ b/po/kk/kfileaudiopreview5.po @@ -0,0 +1,43 @@ +# translation of kfileaudiopreview4.po to Kazakh +# +# Sairan Kikkarin , 2005. +# Sairan Kikkarin , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2010-04-08 07:25+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Автоматы түрде орындалсын" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "орындауын бастау" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "орындауын аялдату" + +#~ msgid "stop playback" +#~ msgstr "орындауын тоқтату" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "тұйық: біткен соң қайталау" + +#~ msgid "Media Player" +#~ msgstr "Ойнатқыш" diff --git a/po/kk/kio5_activities.po b/po/kk/kio5_activities.po new file mode 100644 index 0000000..fe24a22 --- /dev/null +++ b/po/kk/kio5_activities.po @@ -0,0 +1,199 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sairan Kikkarin , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-06-12 03:46+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activities" +msgstr "Белсенділіктер..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "Белсенділік менеджері дұрыс істемейді." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Назардағы белсенділікпен байланыстыру" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Назардағы белсенділіктен байланысын үзу" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Мынамен байланыстыру:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Мынадан байланысын үзу:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activity" +msgstr "Белсенділіктер..." + +#: KioActivities.cpp:230 +#, fuzzy, kde-format +#| msgid "Link to the current activity" +msgid "Current activity" +msgstr "Назардағы белсенділікпен байланыстыру" + +# +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Сайран Киккарин" + +# +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sairan@computer.org" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "\"%1\" белсенділігіне ауысу" + +#, fuzzy +#~| msgid "Activities..." +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Белсенділіктер..." + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Delete activity" +#~ msgstr "Назардағы белсенділікпен байланыстыру" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create a new activity" +#~ msgstr "Назардағы белсенділікпен байланыстыру" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity settings" +#~ msgstr "Белсенділіктер..." + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity information" +#~ msgstr "Белсенділіктер..." + +#~ msgid "Privacy" +#~ msgstr "Дербестік" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "мерзімі шексіз" + +#~ msgid "Forget the last hour" +#~ msgstr "Соңғы сағатын ұмыту" + +#~ msgid "Forget the last two hours" +#~ msgstr "Соңғы екі сағатын ұмыту" + +#~ msgid "Forget a day" +#~ msgstr "бір күнін ұмыту" + +#~ msgid "Forget everything" +#~ msgstr "Бүкілін ұмыту" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " ай" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "мерзімі " + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create activity..." +#~ msgstr "Назардағы белсенділікпен байланыстыру" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity switching" +#~ msgstr "Белсенділіктер..." + +#~ msgid "Remember opened documents:" +#~ msgstr "Ашылған құжаттарды жаттап алуы" + +#, fuzzy +#~| msgid "For all applications" +#~ msgid "For a&ll applications" +#~ msgstr "Бүкіл қолданбаларда" + +#, fuzzy +#~| msgid "Do not remember" +#~ msgid "&Do not remember" +#~ msgstr "Жаттамау" + +#, fuzzy +#~| msgid "Only for specific applications" +#~ msgid "O&nly for specific applications" +#~ msgstr "Тек белгілі қолданбаларда" + +#~ msgid "Keep history" +#~ msgstr "Жадында сақтайтын" + +#~ msgid "Clear recent history" +#~ msgstr "Жуырдағысын тазалау" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Тізімде жоқ қолданбалар үшін ештеңе жатталмасын" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity name" +#~ msgstr "Белсенділіктер..." + +#~ msgid "Available Features" +#~ msgstr "Қол жеткізер мүмкіндіктері" + +#~ msgid "Plugins" +#~ msgstr "Плагиндер" + +#~ msgid "Enable activities management" +#~ msgstr "Белсенділіктерді басқаруы болсын" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Белсенділік менеджері дұрыс істемейді." + +#~ msgid "Activities..." +#~ msgstr "Белсенділіктер..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" diff --git a/po/kk/kio5_archive.po b/po/kk/kio5_archive.po new file mode 100644 index 0000000..a385cda --- /dev/null +++ b/po/kk/kio5_archive.po @@ -0,0 +1,37 @@ +# translation of kio_tar.po to Kazakh +# Sairan Kikkarin , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-11-03 23:21+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh\n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Файл ашылмайды, бәлкім, файл пішімі қолданылмайды.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Архив файлы ашылмайды, бәлкім, бұл пішімі қолданылмайды.\n" +"%1" diff --git a/po/kk/kio5_bookmarks.po b/po/kk/kio5_bookmarks.po new file mode 100644 index 0000000..176b16b --- /dev/null +++ b/po/kk/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2010-02-07 21:27+0600\n" +"Last-Translator: \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Түбірі" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Орындар" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Қате талап: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Бетбегілер жоқ" + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS файл табылмады. Көрсеткені ажарсыз болу мүмкін.\n" +"Орнатылғаның тексеріңіз." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Бетбелгілерім" + +#~ msgid "My bookmarks" +#~ msgstr "Бетбелгілерім" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Бастапқы жасаушысы" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Сайран Киккарин" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sairan@computer.org" diff --git a/po/kk/kio5_fish.po b/po/kk/kio5_fish.po new file mode 100644 index 0000000..a49b64e --- /dev/null +++ b/po/kk/kio5_fish.po @@ -0,0 +1,51 @@ +# translation of kio_fish.po to Kazakh +# +# Sairan Kikkarin , 2005, 2010, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-12-10 07:05+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Байланысты құру..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Протоколды бастау күйіне келтіру..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Жергілікті жүйеге кіру" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH аутентификациясы" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Байланыс жоғалды." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Сайран Киккарин" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sairan@computer.org" diff --git a/po/kk/kio5_info.po b/po/kk/kio5_info.po new file mode 100644 index 0000000..8d8d6a6 --- /dev/null +++ b/po/kk/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2010-02-07 21:48+0600\n" +"Last-Translator: \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Бұл қызметті атқару үшін қажетті %1 деген файл табылған жоқ. Орнатылғанын " +"тексеріңіз." diff --git a/po/kk/kio5_man.po b/po/kk/kio5_man.po new file mode 100644 index 0000000..1178f49 --- /dev/null +++ b/po/kk/kio5_man.po @@ -0,0 +1,227 @@ +# translation of kio_man.po to Karakh +# +# Sairan Kikkarin , 2005, 2007, 2008. +# Sairan Kikkarin , 2010, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-01-02 04:13+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" +"\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"%1 дегеге сәйкес man-парағы жоқ.

        Керегіңізді қате термегеніңізді " +"тексеріңіз.
        Үлкен және кіші әріптерді шатастырып алмаңыз.
        Егер бұл " +"жағынан бәрі де дұрыс болса, бәлкім, man-парақтардың жолдарын анықтау керек, " +"оларды ортаңызға MANPATH айнымалысы немесе /etc каталогындағы тиісті файл " +"мәлімдейді." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        KDE Man қарау құралының қатесі

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Бірден артық сәйкес келетін man-парақтары табылды." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Ескерту: егер оқып жатқан man-парағыңыз ағылшын тілде емес болса, байқаңыз, " +"қате не ескірген болмасын. Күдігіңіз болса, ағылшын тілдегі нұсқасын қараңыз." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Айдар файлдары" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Айдар файлдары (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Пайдаланушының командалары" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Пайдаланушының командалары (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Жүйелік шақырулар" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Бағыныңқы бағдарламалар" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl модульдері" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Желілік функциялар" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Құрылғылар" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Файл пішімдері" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Ойындар" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Басқа" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Жүйелік әкімшілік ету" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Өзегі" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Жергілікті құжаттама" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Жаңалары" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX нұсқауының индексі" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "%1 бөлімі" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "%1: %2 бөлімінің индексі" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX нұсқауының индексі" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Индексті құру" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"sgml2roff бағдарламасы табылмады. Қажет болса орнатыңыз да, оның жолын " +"ортаңыздын PATH айнымалысына қосып койып, KDE сеансын қайта бастаңыз." + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 деген ашылмады." + +#~ msgid "Man output" +#~ msgstr "Man шығысы" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Сайран Киккарин" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sairan@computer.org" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/kk/kio5_nfs.po b/po/kk/kio5_nfs.po new file mode 100644 index 0000000..6f94122 --- /dev/null +++ b/po/kk/kio5_nfs.po @@ -0,0 +1,66 @@ +# translation of kio_nfs.po to Kazakh +# Sairan Kikkarin , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2005-10-25 16:46+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh\n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Құрылғыда орын қалған жоқ" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Тек оқитын файл жүйесі" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Файл атауы тым ұзым" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Дискідегі квота бітті" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC қатесі пайда болды." diff --git a/po/kk/kio5_recentdocuments.po b/po/kk/kio5_recentdocuments.po new file mode 100644 index 0000000..7f3ff16 --- /dev/null +++ b/po/kk/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sairan Kikkarin , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-01-01 05:45+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Жуырдағы құжаттар" diff --git a/po/kk/kio5_sftp.po b/po/kk/kio5_sftp.po new file mode 100644 index 0000000..0705002 --- /dev/null +++ b/po/kk/kio5_sftp.po @@ -0,0 +1,481 @@ +# translation of kio_sftp.po to Kazakh +# +# Sairan Kikkarin , 2005, 2007, 2008, 2010. +# Sairan Kikkarin , 2010, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2013-05-27 06:05+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" +"\n" +"\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Кілт тізбегі дұрыс емес не жарамсыз" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Қайтарма шақырлымдарына жад бөлінбеді" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Журналды жете жүргізуі орнатылмады." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Журналды жете жүргізуі орнатылмады." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Қайтарма шақырлымдарына жад бөлінбеді" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP хостына кіру" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Бұған жауап беру үшін пайдаланушы атауының өрісін пайдаланыңыз." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Пароліңізді келтіріңіз." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Сайт:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Жаңа SSH сеансы бастауға келмеді." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Күту уақыты орнатылмады." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Порт орнатылмады." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Сығу режімі орнатылмады." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Хост атауы орнатылмады." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Порт орнатылмады." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Пайдаланушы атауы орнатылмады." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Баптау файл талдауға келмеді." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "%1 хостымен SFTP байланыс құру:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Пайдаланушы атауы орнатылмады." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Серверінің хост кілті табылмады, бірақ басқа түрі бар.\n" +"Бір шабулшы, клиентіңізді, кілт жоқ деп алдап, әдетті сервер кілтін өзгертіп " +"жібергені мүмкін.\n" +"Жүйе әкімшісімен хабарласыңыз.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"%1 серверінің хост кілті өзгертілген.\n" +"Бұл DNS SPOOFING дегені орын алғанын немесе хосттың IP адресімен оның хост " +"кілті біржәолата өзгергенін көрсетеді.\n" +"Қашықтағы хост жіберген кілттің қолтаңбасы:\n" +" %2\n" +"Жүйе әкімшісімен хабарласыңыз.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Ескерту: хосттың идентификация тексерісі болмады." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"%1 хостының шындылығы анықталмады.\n" +"Кілттің қолтаңбасы: %2\n" +"Байланысуды жалғастыруын қалайсызба?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Идентификация тексерісі өтпеді." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Аутентификация өтпеді. Сервер ешбір аудентификация тәсілін жіберген жоқ." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Пайдаланушының атауыңыз мен пароліңізді келтіріңіз." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Пайдаланушының атауы не пароль дұрыс емес" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP ішкі жүйемен байланыс болмады. Серверіңізде SFTP рұқсат етілгенін " +"тексеріңіз." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP сеансы бастауға келмеді." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 дегенімен байланыс сәтті құрылды" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Серверінің хост кілті табылмады, бірақ басқа түрі бар.\n" +"Бір шабулшы, клиентіңізді, кілт жоқ деп алдап, әдетті сервер кілтін өзгертіп " +"жібергені мүмкін.\n" +"Жүйе әкімшісімен хабарласыңыз.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"%1 серверінің хост кілті өзгертілген.\n" +"Бұл DNS SPOOFING дегені орын алғанын немесе хосттың IP адресімен оның хост " +"кілті біржәолата өзгергенін көрсетеді.\n" +"Қашықтағы хост жіберген кілттің қолтаңбасы:\n" +" %2\n" +"Жүйе әкімшісімен хабарласыңыз.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"%1 хостының шындылығы анықталмады.\n" +"Кілттің қолтаңбасы: %2\n" +"Байланысуды жалғастыруын қалайсызба?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"%1 дегеннің\n" +"рұқсаттары өзгертілмеді" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Келесі сілтеме оқылмады: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Хосттың атауы келтірілмеген." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Бір ішкі қате пайда болды. Талабыңызды қайталап көріңіз." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Пайдаланушының атауы мен кілт тізбегін келтіріңіз." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Ескерту: хосттың идентификациясы өзгерген." + +#~ msgid "Connection failed." +#~ msgstr "Байланыс қатесі." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Кашықтағы хост байланысты үзді." + +#, fuzzy +#~| msgid "Unexpected SFTP error: %1" +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "Күтпеген SFTP қатесі: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "%1 SFTP нұскасы" + +#~ msgid "Protocol error." +#~ msgstr "Протокол қатесі." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Бір ішкі қате пайда болды. Қайталап көріңіз." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "'%1' дегенге файлды көшірмелеген кезде беймәлім қате орын алды. қайталап " +#~ "көріңіз." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Қашықтағы хост файлдардын атауын өзгертуге бермейді." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Қашықтағы хост символдық сілтемелерді құруға бермейді." + +#~ msgid "Connection closed" +#~ msgstr "Қосылым жабылды" + +#~ msgid "Could not read SFTP packet" +#~ msgstr "SFTP дестесі оқылмады" + +#~ msgid "End of file." +#~ msgstr "Файлдың соңы." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP командасы беймәлім себебімен орындалмады." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "SFTP серверден жарамсыз хабар келді." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "SFTP сервер қолдамайтын амалды орындау әрекеті." + +#~ msgid "Error code: %1" +#~ msgstr "Қатенің коды: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Бағыныңқы жүйе мен команданы бірге келтіруге болмайды." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "ssh параметрлері келтірілмеген." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "ssh процесін орындау қатесі." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "ssh жегу қатесі." + +#~ msgid "Please supply a password." +#~ msgstr "Парольді келтіріңіз." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "SSH жеке кілт тізбегін келтіріңіз." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "%1 идентификациясы өтпеді" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "'%1' деген қашықтағы хост идентификаңиядан өтпеді, өйткені оның кілті " +#~ "\"таныс хостар\" файлында жоқ." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Хосттың кілтін өзіңіз \"таныс хосттар\" файлына енгізіңіз, немесе " +#~ "әкімшіңізге қатынаңыз." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Хосттың кілтін өзіңіз %1 файлына енгізіңіз, немесе әкімшіңізге қатынаңыз." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Қашықтағы '%1' хосты идентификациядан өтпеді. Хост кілтінің бақылау " +#~ "тізбегі:\n" +#~ "%2\n" +#~ "Байланыс құрудың алдында хост әкімшісімен бақылау тізбегін тексеріп шығу " +#~ "керек.\n" +#~ "\n" +#~ "Хосттың кілті қабылданып, байланыс құрыла берсін бе? " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "ЕСКЕРТУ: Қашықтағы '%1' хостының идентификациясы өзгерген!\n" +#~ "\n" +#~ "Байланыста бөтен хост немесе әкімшісі хосттың кілт тізбегін өзгертіп " +#~ "жіберген. Бәрі бір, хост кілтінің бақылау тізбегін әкімшісімен тексеріп " +#~ "шығу керек. Кілтің бақылау тізбегі:\n" +#~ "%2\n" +#~ "Осы хабарламадан құтылу үшін хосттың шын кілтін \"%3\" дегенге қосып " +#~ "қойыңыз." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "ЕСКЕРТУ: Қашықтағы '%1' хостының идентификациясы өзгерген!\n" +#~ "\n" +#~ "Байланыста бөтен хост немесе әкімшісі хосттың кілтін өзгертіп жіберген. " +#~ "Бәрі бір, байланыс құру алдында, хост әкімшісімен бақылау тізбегін " +#~ "тексеріп шығу керек. Кілттің бақылау тізбегі:\n" +#~ "%2\n" +#~ "\n" +#~ "Хосттың жаңа кілті қабылданып, байланыс құрыла берсін бе?" + +#~ msgid "Host key was rejected." +#~ msgstr "Хосттың кілті қабылданбады." + +#~ msgid "Please enter a username and password" +#~ msgstr "Пайдаланушының атауы мен парольді келтіріңіз" + +#~ msgid "File does not exist." +#~ msgstr "Файл жоқ." + +#~ msgid "Access is denied." +#~ msgstr "Қатынауға болмайды." diff --git a/po/kk/kio5_smb.po b/po/kk/kio5_smb.po new file mode 100644 index 0000000..df0e613 --- /dev/null +++ b/po/kk/kio5_smb.po @@ -0,0 +1,191 @@ +# translation of kio_smb.po to Kazakh +# +# Sairan Kikkarin , 2005, 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2007-03-26 14:49+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh\n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "%1 үшін аутентификация мәліметін келтіріңіз" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Келесіні аутентификациялау үшін мәліметін келтіріңіз:\n" +"Сервер = %1\n" +"Ресурсы = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Не каталог емес, не файл емес, беймәлім файл түрі." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Жергілікті желіде бір де бір жұмыс тобы табылмады. Бәлкім, себебі желіаралық " +"қалқан қосылып тұрғанда." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 үшін құрылғысының тасушысы жоқ" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 үшін хостымен байланыс жоқ" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 үшін жауыпты серверімен байланыс жоқ" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Келтірілген серверде керек ресурс табылмады" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Жарамсыз файл дескрипторы" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Келтірілген атауы бойынша бірегей сервер табылмады. Желіңізде Windows және " +"UNIX қолданатын атаулар арасында қайшылық жоқтығын тексеріңіз." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient қате туралы хабарлады, бірақ себебін келтірген жоқ. Мәселе " +"желіңізде немесе libsmbclient жиының өзінде де болуы мүмкін.\n" +"Бізге көмектесемін десеңіз, tcpdump командасының берген жауабын келтіріңіз " +"(байқаңыз, ол жауабында сырлы мәліметтер болуы мүкін, сондықтан бұл " +"мәліметті жарияламай, не өшіріп тастаңыз, не жабық тұрде жетілдірушілерге " +"жіберіңіз)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Беймәлім қате жағдайы: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient қонтекст құру қатесі" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Samba дестесі жүйеңізде дұрыс орнатылғанын тексеріңіз." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"\"%1\" ресурсты (\"%2\" деген хосттағы, \"%3\" пайдаланушының\n" +"атынан) тіркеген кезде пайда болған қатесі.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"\"%1\" тіркеу орнынан тіркеуден шығару қатесі.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient контекст инициализациясының қатесі" + +#~ msgid "File does not exist: %1" +#~ msgstr "%1 деген файлы жоқ" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "libsmbclient инициализциясының қатесі" diff --git a/po/kk/kio5_thumbnail.po b/po/kk/kio5_thumbnail.po new file mode 100644 index 0000000..fad5b73 --- /dev/null +++ b/po/kk/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# translation of kio_thumbnail.po to Kazakh +# +# Sairan Kikkarin , 2005, 2007, 2010, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-06-25 05:59+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Кескін автоматты түрде бұралсын" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "MIME түрі келтірілмеген." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Өлшемі дұрыс емес не келтірілмеген." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Қапшықтың нобай суреті жасалмады" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Модулі келтірілмеген." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "%1 нобай сурет жасаушысы жүктелмеді" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 үшін нобай сурет жасалмады" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Нобай сурет жасау қатесі." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Кескін жазылмады." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "%1 ортақ жад сегментіне салу қатесі" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Кескін тым үлкен - ортақ жад сегментіне сыймайды" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Сайран Киккарин" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sairan@computer.org" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/km/kfileaudiopreview5.po b/po/km/kfileaudiopreview5.po new file mode 100644 index 0000000..4f82ab1 --- /dev/null +++ b/po/km/kfileaudiopreview5.po @@ -0,0 +1,34 @@ +# translation of kfileaudiopreview4.po to Khmer +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Khoem Sokhem , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-06-07 16:24+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "ចាក់​ដោយ​ស្វ័យប្រវត្តិ" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "ចាប់ផ្ដើម​ចាក់ឡើង​វិញ" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "ផ្អាក​ការ​ចាក់​ឡើង​វិញ" diff --git a/po/km/kio5_activities.po b/po/km/kio5_activities.po new file mode 100644 index 0000000..414f157 --- /dev/null +++ b/po/km/kio5_activities.po @@ -0,0 +1,176 @@ +# translation of kactivitymanagerd.po to Khmer +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Khoem Sokhem , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kactivitymanagerd\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2012-06-07 16:10+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, fuzzy, kde-format +#| msgid "Unlock Activity" +msgid "Activities" +msgstr "ដោះសោ​សកម្មភាព" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "កម្មវិធី​គ្រប់គ្រង​សកម្មភាព​មិនកំពុង​ដំណើរការ​ត្រឹមត្រូវ​ទេ ។" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, fuzzy, kde-format +#| msgid "Unprotect Activity" +msgid "Link to the current activity" +msgstr "សកម្មភាព​ដែល​មិន​បានការពារ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, fuzzy, kde-format +#| msgid "Unprotect Activity" +msgid "Unlink from the current activity" +msgstr "សកម្មភាព​ដែល​មិន​បានការពារ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, fuzzy, kde-format +#| msgid "Unlock Activity" +msgid "Activity" +msgstr "ដោះសោ​សកម្មភាព" + +#: KioActivities.cpp:230 +#, fuzzy, kde-format +#| msgid "Unprotect Activity" +msgid "Current activity" +msgstr "សកម្មភាព​ដែល​មិន​បានការពារ" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ខឹម សុខែម,ម៉ន ម៉េត, សេង សុត្ថា" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "khoemsokhem@khmeros.info,mornmet@khmeros.info,sutha@khmeros.info​​" + +#, fuzzy +#~| msgid "Unlock Activity" +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "ដោះសោ​សកម្មភាព" + +#, fuzzy +#~| msgid "Delete Activity" +#~ msgid "Delete activity" +#~ msgstr "លុប​សកម្មភាព" + +#, fuzzy +#~| msgid "Unprotect Activity" +#~ msgid "Create a new activity" +#~ msgstr "សកម្មភាព​ដែល​មិន​បានការពារ" + +#, fuzzy +#~| msgid "Activity Password" +#~ msgid "Activity settings" +#~ msgstr "ពាក្យ​សម្ងាត់​​សកម្មភាព" + +#, fuzzy +#~| msgid "Activity Password" +#~ msgid "Activity information" +#~ msgstr "ពាក្យ​សម្ងាត់​​សកម្មភាព" + +#, fuzzy +#~| msgid "Unprotect Activity" +#~ msgid "Create activity..." +#~ msgstr "សកម្មភាព​ដែល​មិន​បានការពារ" + +#, fuzzy +#~| msgid "Activity Password" +#~ msgid "Activity switching" +#~ msgstr "ពាក្យ​សម្ងាត់​​សកម្មភាព" + +#, fuzzy +#~| msgid "Unlock Activity" +#~ msgid "Activity name" +#~ msgstr "ដោះសោ​សកម្មភាព" + +#, fuzzy +#~| msgid "KDE Activity Management Service" +#~ msgid "Enable activities management" +#~ msgstr "សេវា​គ្រប់គ្រង​សកម្មភាព​របស់ KDE" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "កម្មវិធី​គ្រប់គ្រង​សកម្មភាព​មិនកំពុង​ដំណើរការ​ត្រឹមត្រូវ​ទេ ។" + +#, fuzzy +#~| msgid "(c) 2010, 2011, 2012 Ivan Cukic, Sebastian Trueg" +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "រក្សាសិទ្ធិ​ឆ្នាំ​ ២០១០ ២០១១ ២០១២ ដោយ Ivan Cukic, Sebastian Trueg" + +#~ msgid "KDE Activity Manager" +#~ msgstr "កម្មវិធី​គ្រប់គ្រង​សកម្មភាព​របស់ KDE" + +#~ msgid "Enter the password to use for encryption" +#~ msgstr "បញ្ចូល​ពាក្យសម្ងាត់ដើម្បី​ប្រើ​សម្រាប់​អ៊ីនគ្រិប" + +#~ msgid "Error" +#~ msgstr "កំហុស" + +#~ msgid "Error setting up the activity encryption" +#~ msgstr "កំហុស​ក្នុងការ​រៀបចំ​ការ​អ៊ីនគ្រិប​សកម្មភាព" + +#~ msgid "" +#~ "You are cancelling the protection of this activity. Its content will " +#~ "become public again and be accessed without a password." +#~ msgstr "" +#~ "អ្នកកំពុង​បោះបង់​ការការពារ​នៃ​សកម្មភាព​នេះ​ ។ មាតិកា​របស់​វា​នឹង​ក្លាយ​ជា​សាធារណៈ​ម្ដង​ទៀត ហើយ​អាច​" +#~ "ត្រូ​វបាន​ចូល​ដំណើរការ​ដោយ​គ្មាន​ពាក្យ​សម្ងាត់ ។" + +#~ msgid "" +#~ "Error unlocking the activity.\n" +#~ "You've probably entered a wrong password." +#~ msgstr "" +#~ "កំហុស​ក្នុង​ការ​ដោះសោ​សកម្មភាព ។\n" +#~ "អ្នក​ប្រហែល​ជា​​បាន​បញ្ចូល​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ ។" + +#~ msgid "Enter the password to unlock the activity" +#~ msgstr "បញ្ចូល​ពាក្យសម្ងាត់​ ដើម្បីដោះសោ​សកម្មភាព" + +#~ msgid "Confirmation" +#~ msgstr "ការ​បញ្ជាក់" + +#~ msgid "" +#~ "If you delete a private activity, all the documents and files that belong " +#~ "to it will also be deleted." +#~ msgstr "ប្រសិន​បើ​អ្នក​លុប​សកម្មភាព​ឯកជន ឯកសារ​ទាំងអស់​ដែល​ជា​របស់​វា​នឹង​ត្រូវ​បាន​លុប​ដែរ ។" + +#~ msgid "Enter the password to delete this protected activity." +#~ msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់ ដើម្បី​លុប​សកម្មភាព​ដែលបានការពារ​នេះ ។" diff --git a/po/km/kio5_archive.po b/po/km/kio5_archive.po new file mode 100644 index 0000000..c01244c --- /dev/null +++ b/po/km/kio5_archive.po @@ -0,0 +1,36 @@ +# translation of kio_archive.po to Khmer +# Khoem Sokhem , 2007, 2008. +# Eng Vannak , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-01-24 10:11+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"មិន​អាច​បើក​ឯកសារ ប្រហែល​ជា​ដោយ​សារ​ទ្រង់ទ្រាយ​ឯកសារ​មិន​បាន​គាំទ្រ ។\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"មិន​អាច​បើក​ឯកសារ​ប័ណ្ណសារ ប្រហែល​មក​ពី​ទ្រង់ទ្រាយ​នេះ​មិន​ត្រូវ​បាន​គាំទ្រ ។\n" +"%1" diff --git a/po/km/kio5_bookmarks.po b/po/km/kio5_bookmarks.po new file mode 100644 index 0000000..4bf2469 --- /dev/null +++ b/po/km/kio5_bookmarks.po @@ -0,0 +1,82 @@ +# translation of kio_bookmarks.po to Khmer +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Khoem Sokhem , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-12-12 14:40+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "កន្លែង" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "សំណើរ​មិន​ត្រឹមត្រូវ ៖ %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "មិនមាន​ចំណាំ​ត្រូវ​បង្ហាញ​នៅ​ឡើយ​ទេ ។" + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"រក​មិនឃើញ​ឯកសារ kio_bookmarks CSS ។ លទ្ធផល​នឹង​មិន​ល្អ​ទេ ។\n" +"ពិនិត្យ​មើល​ការ​ដំឡើង​របស់​អ្នក ។" + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "ចំណាំ​របស់​ខ្ញុំ" + +#~ msgid "My bookmarks" +#~ msgstr "ចំណាំ​របស់ខ្ញុំ" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "អ្នកអភិវឌ្ឍ​ដំបូង" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ខឹម សុខែម, អេង វណ្ណៈ, អោក ពិសិដ្ឋ" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "" +#~ "khoemsokhem@khmeros.info,​​evannak@khmeros.info,piseth_dv@khmeros.info" diff --git a/po/km/kio5_fish.po b/po/km/kio5_fish.po new file mode 100644 index 0000000..ddd2242 --- /dev/null +++ b/po/km/kio5_fish.po @@ -0,0 +1,51 @@ +# translation of kio_fish.po to Khmer +# Khoem Sokhem , 2005, 2007, 2008, 2009. +# Eng Vannak , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2009-04-22 10:29+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "កំពុង​តភ្ជាប់..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "កំពុង​ចាប់ផ្ដើម​ពិធីការ..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "ការ​ចូល​មូលដ្ឋាន" + +#: fish.cpp:631 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "ការ​អនុញ្ញាត​របស់ SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "បាន​ផ្ដាច់" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ខឹម សុខែម,​អេង វណ្ណៈ, អោក ពិសិដ្ឋ​" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "khoemsokhem@khmeros.info,vannak@khmeros.info,piseth_dv@khmeros.info" diff --git a/po/km/kio5_info.po b/po/km/kio5_info.po new file mode 100644 index 0000000..2422aea --- /dev/null +++ b/po/km/kio5_info.po @@ -0,0 +1,29 @@ +# translation of kio_info.po to Khmer +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Khoem Sokhem , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-04-09 14:27+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"មិន​អាច​បម្រុង​ទុក​​ឯកសារ %1 ដែល​ចាំបាច់​ដើម្បី​រត់​សេវា​នេះ ។ សូម​ពិនិត្យ​ការ​ដំឡើង​កម្មវិធី​របស់​អ្នក ។" diff --git a/po/km/kio5_man.po b/po/km/kio5_man.po new file mode 100644 index 0000000..94c0b23 --- /dev/null +++ b/po/km/kio5_man.po @@ -0,0 +1,227 @@ +# translation of kio_man.po to Khmer +# Khoem Sokhem , 2005, 2007, 2008. +# Auk Piseth , 2006, 2008. +# Eng Vannak , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-12-19 09:20+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"រក​មិន​ឃើញ​ទំព័រ man ដែល​​ផ្គូផ្គង​នឹង​ %1 ឡើយ ។

        សូម​ពិនិត្យ​មើល​ថា អ្នក​មិន​បាន​វាយ​ខុស​ឈ្មោះ​របស់​" +"ទំព័រ​ដែល​អ្នក​ចង់​រក​ទេ ។
        ពិនិត្យ​មើលថា អ្នក​បាន​វាយ​ឈ្មោះ​ដោយប្រើ​តួអក្សរ​ធំតូច​ត្រឹមត្រូវ ។
        បើ​​" +"អ្វីៗ​ត្រឹម​ត្រូវ​ហើយ នោះ​ប្រហែល​ជា​អ្នក​ត្រូវ​ជម្រុញ​ផ្លូវ​ស្វែង​រក​ដ៏​ប្រសើរ​ជាង​មួយ​សម្រាប់​ទំព័រ​​សៀវភៅ​ដៃ ។ កំណត់​វា​" +"ដោយ​ប្រើ​អថេរ​បរិស្ថាន MANPATH ឬ​ឯកសារ​ដែល​ដូច​ក្នុង​ថត /etc ។" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        កំហុស​ឧបករណ៍​មើល​របស់ KDE Man

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "មាន​ទំព័រ​របស់​សៀវភៅ​ដៃ​ច្រើន​ជាង​មួយ ដែល​ផ្គូផ្គង​នឹង​ទំព័រ man ។" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"ចំណាំ ៖ បើអ្នក​អាន​ទំព័រ man ជា​ភាសា​របស់​អ្នក សូម​ជ្រាប​ថា វា​អាច​មាន​កំហុស​មួយ​ចំនួន ឬ​ហួស​សម័យ ក្នុង​ករណី​មាន​" +"ចម្ងល់ អ្នក​គួរ​តែ​មើល​កំណែ​ជា​ភាសា​អង់គ្លេស ។" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "ពាក្យ​បញ្ជា​របស់​អ្នក​ប្រើ" + +#: kio_man.cpp:751 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "ពាក្យ​បញ្ជា​របស់​អ្នក​ប្រើ" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "ការ​ហៅ​ប្រព័ន្ធ" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "ទម្រង់ការ​រង" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "ម៉ូឌុល Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "មុខងារ​បណ្ដាញ" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "ឧបករណ៍" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "ទ្រង់ទ្រាយ​ឯកសារ" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "ល្បែង" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "ផ្សេងៗ" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "ការ​គ្រប់គ្រង​ប្រព័ន្ធ" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "ខឺណែល" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "ឯកសារ​មូលដ្ឋាន" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "ថ្មី" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "លិបិក្រម​សៀវភៅ​ដៃ​របស់​យូនីក" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "ភាគ %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "លិបិក្រម​សម្រាប់​ភាគ %1 ៖ %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "លិបិក្រម​សៀវភៅ​ដៃ​របស់​យូនីក" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "កំពុង​បង្កើត​លិបិក្រម" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"មិន​អាច​រក​ឃើញ​កម្មវិធី sgml2roff នៅ​ក្នុង​ប្រព័ន្ធ​របស់​អ្នក ។ សូម​ដំឡើង​វា បើ​ចាំបាច់ និង​ពង្រីក​ផ្លូវ​ស្វែង​" +"រក ដោយ​លៃ​តម្រូវ PATH អថេរ​បរិស្ថាន មុន​ពេល​ចាប់​ផ្ដើម KDE ។" + +#~ msgid "Open of %1 failed." +#~ msgstr "ការ​បើក %1 បាន​បរាជ័យ ។" + +#~ msgid "Man output" +#~ msgstr "លទ្ធផល Man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ខឹម សុខែម, អេង វណ្ណៈ, អោក ពិសិដ្ឋ​​" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "" +#~ "khoemsokhem@khmeros.info,​​evannak@khmeros.info,piseth_dv@khmeros.info" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/km/kio5_nfs.po b/po/km/kio5_nfs.po new file mode 100644 index 0000000..41795df --- /dev/null +++ b/po/km/kio5_nfs.po @@ -0,0 +1,65 @@ +# translation of kio_nfs.po to Khmer +# Khoem Sokhem , 2005, 2007, 2008. +# Eng Vannak , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2008-01-24 10:11+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "គ្មាន​ចន្លោះ​សល់​លើ​ឧបករណ៍" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "ប្រព័ន្ធ​ឯកសារ​បាន​តែ​អាន" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "ឈ្មោះ​ឯកសារ​វែង​ពេក" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "លើស​កូតា​ថាស​" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "កំហុស RPC មួយ​បាន​កើត​ឡើង ។" diff --git a/po/km/kio5_recentdocuments.po b/po/km/kio5_recentdocuments.po new file mode 100644 index 0000000..b2cf4df --- /dev/null +++ b/po/km/kio5_recentdocuments.po @@ -0,0 +1,24 @@ +# translation of kio_recentdocuments.po to Khmer +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Khoem Sokhem , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-06-08 15:34+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer\n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "ឯកសារ​ថ្មីៗ" diff --git a/po/km/kio5_sftp.po b/po/km/kio5_sftp.po new file mode 100644 index 0000000..0191840 --- /dev/null +++ b/po/km/kio5_sftp.po @@ -0,0 +1,306 @@ +# translation of kio_sftp.po to Khmer +# Khoem Sokhem , 2005, 2007, 2008, 2009, 2010, 2012. +# Eng Vannak , 2007. +# Auk Piseth , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2012-07-11 09:43+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_sftp.cpp:224 +#, fuzzy, kde-format +#| msgid "Incorrect or invalid passpharse" +msgid "Incorrect or invalid passphrase" +msgstr "​ពាក្យ​សម្ងាត់​មិន​ត្រឹម​ត្រូវ" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "មិនអាច​បម្រុង​ការហៅ​ត្រឡប់​បាន​ទេ" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "មិនអាច​ចុះ​កំណត់​ហេតុរៀបរាប់​បានទេ ។​" + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "មិនអាច​ចុះ​កំណត់​ហេតុរៀបរាប់​បានទេ ។​" + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "មិនអាច​បម្រុង​ការហៅ​ត្រឡប់​បាន​ទេ" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "ការ​ចូល SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "ប្រើ​វាល​បញ្ចូល​ឈ្មោះអ្នកប្រើ ដើម្បី​ឆ្លើយ​សំណួរ​នេះ ។" + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "សូម​បញ្ចូល​​ពាក្យ​សម្ងាត់​របស់​អ្នក ។" + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "តំបន់​បណ្ដាញ ៖​" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "មិនអាច​បង្កើត​សម័យ SSH ថ្មី​បានទេ ។" + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "មិនអាច​កំណត់​រយៈពេល​អស់​ពេល​បានទេ ។" + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "មិនអាច​កំណត់​ច្រក​បានទេ ។" + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "មិនអាច​កំណត់​ការ​បង្ហាប់បានទេ ។" + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "មិនអាច​កំណត់ម៉ាស៊ីន​បាន​ទេ ។" + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "មិនអាច​កំណត់​ច្រក​បានទេ ។" + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "មិនអាច​កំណត់​ឈ្មោះ​អ្នកប្រើបានទេ ។" + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "មិន​អាច​ញែក​ឯកសារ​កំណត់​រចនាសម្ព័ន្ធ​បានទេ ។" + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "បើក​ការ​តភ្ជាប់ SFTP ទៅ​ម៉ាស៊ីន %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "មិនអាច​កំណត់​ឈ្មោះ​អ្នកប្រើបានទេ ។" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"រក​មិនឃើញ​គ្រាប់​ចុច​ម៉ាស៊ីន​សម្រាប់​ម៉ាស៊ីន​បម្រើនេះ​​ទេ ប៉ុន្តែ​មាន​ប្រភេទ​គ្រាប់​ចុច​ផ្សេង​ទៀត​ហើយ ។\n" +"អ្នក​វាយ​ប្រហារ​អាច​ផ្លាស់ប្ដូរ​គ្រាប់ចុច​ម៉ាស៊ីន​បម្រើ​លំនាំដើម​ ដើម្បី​ធ្វើ​ឲ្យ​ម៉ាស៊ីន​របស់​អ្នក​ច្រឡំ​ក្នុងការ​គិត​អំពី​" +"គ្រាប់​ចុច​ដែល​មិន​ទាន់​មាន ។\n" +"សូម​ទាក់ទង​អ្នក​គ្រប់គ្រង​ប្រព័ន្ធ​របស់​អ្នក ។\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"គ្រាប់​ចុច​ម៉ាស៊ីន​សម្រាប់​ម៉ាស៊ីន​បម្រើ %1 បាន​ផ្លាស់ប្ដូរ ។\n" +"វាអាច​មានន័យ​ថា DNS SPOOFING កំពុង​កើត​ឡើង ឬ​អាសយដ្ឋាន IP សម្រាប់​ម៉ាស៊ីន​ និង​គ្រាប់ចុច​របស់​វា​" +"បានផ្លាស់ប្ដូរ​នៅ​ពេល​តែ​មួយ ។\n" +"ស្នាម​ម្រាមដៃ​សម្រាប់គ្រាប់ចុច​បាន​ផ្ញើ​ដោយ​ម៉ាស៊ីន​ពី​ចម្ងាយ​គឺ ៖\n" +" %2\n" +"សូម​ទាក់ទង​អ្នក​គ្រប់គ្រង​ប្រព័ន្ធ​របស់​អ្នក ។\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "ព្រមាន ៖ មិន​អាច​ផ្ទៀត​ផ្ទាត់​អត្តសញ្ញាណ​របស់​ម៉ាស៊ីន ។" + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"កា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ម៉ាស៊ីន %1 មិនអាច​ត្រូវ​បានបង្កើត​ទេ ។\n" +"សោ​ស្នាម​ម្រាមដៃ​គឺ ៖ %2\n" +"តើ​អ្នកប្រាកដ​ជា​ចង់​បន្ត​ការ​តភ្ជាប់​ដែរឬទេ ?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​បាន​បរាជ័យ ។" + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នក​ប្រើ និង​ពាក្យ​សម្ងាត់​របស់​អ្នក ។" + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "ឈ្មោះ​អ្នក​ប្រើ ឬ​ពាក្យ​សម្ងាត់​មិន​ត្រឹម​ត្រូវ" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "មិនអាច​ស្នើ​ប្រព័ន្ធ​រង​របស់ SFTP បាន​ទេ ។ សូម​ប្រាកដថា SFTP ត្រូវ​បានបើក​នៅ​លើ​ម៉ាស៊ីន​បម្រើ ។" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "មិន​អាច​ចាប់ផ្ដើម​សម័យ SFTP បាន​ទេ ។" + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "បាន​ត​ភ្ជាប់​ទៅ %1 ដោយ​ជោគជ័យ" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"រក​មិនឃើញ​គ្រាប់​ចុច​ម៉ាស៊ីន​សម្រាប់​ម៉ាស៊ីន​បម្រើនេះ​​ទេ ប៉ុន្តែ​មាន​ប្រភេទ​គ្រាប់​ចុច​ផ្សេង​ទៀត​ហើយ ។\n" +"អ្នក​វាយ​ប្រហារ​អាច​ផ្លាស់ប្ដូរ​គ្រាប់ចុច​ម៉ាស៊ីន​បម្រើ​លំនាំដើម​ ដើម្បី​ធ្វើ​ឲ្យ​ម៉ាស៊ីន​របស់​អ្នក​ច្រឡំ​ក្នុងការ​គិត​អំពី​" +"គ្រាប់​ចុច​ដែល​មិន​ទាន់​មាន ។\n" +"សូម​ទាក់ទង​អ្នក​គ្រប់គ្រង​ប្រព័ន្ធ​របស់​អ្នក ។\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"គ្រាប់​ចុច​ម៉ាស៊ីន​សម្រាប់​ម៉ាស៊ីន​បម្រើ %1 បាន​ផ្លាស់ប្ដូរ ។\n" +"វាអាច​មានន័យ​ថា DNS SPOOFING កំពុង​កើត​ឡើង ឬ​អាសយដ្ឋាន IP សម្រាប់​ម៉ាស៊ីន​ និង​គ្រាប់ចុច​របស់​វា​" +"បានផ្លាស់ប្ដូរ​នៅ​ពេល​តែ​មួយ ។\n" +"ស្នាម​ម្រាមដៃ​សម្រាប់គ្រាប់ចុច​បាន​ផ្ញើ​ដោយ​ម៉ាស៊ីន​ពី​ចម្ងាយ​គឺ ៖\n" +" %2\n" +"សូម​ទាក់ទង​អ្នក​គ្រប់គ្រង​ប្រព័ន្ធ​របស់​អ្នក ។\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"កា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ម៉ាស៊ីន %1 មិនអាច​ត្រូវ​បានបង្កើត​ទេ ។\n" +"សោ​ស្នាម​ម្រាមដៃ​គឺ ៖ %2\n" +"តើ​អ្នកប្រាកដ​ជា​ចង់​បន្ត​ការ​តភ្ជាប់​ដែរឬទេ ?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"មិន​អាច​ផ្លាស់ប្ដូរ​សិទ្ធិ​សម្រាប់\n" +"%1 បាន​ទេ" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "មិនអាចអាន​តំណ​បានទេ ៖ %1" + +#~ msgid "No hostname specified." +#~ msgstr "គ្មាន​ឈ្មោះ​ម៉ាស៊ីន​បាន​បញ្ជាក់​ទេ ។" diff --git a/po/km/kio5_smb.po b/po/km/kio5_smb.po new file mode 100644 index 0000000..e0b276f --- /dev/null +++ b/po/km/kio5_smb.po @@ -0,0 +1,188 @@ +# translation of kio_smb.po to Khmer +# Khoem Sokhem , 2005, 2007, 2008. +# Eng Vannak , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2008-01-24 10:11+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "សូម​បញ្ចូល​ព័ត៌មាន​នៃ​ការ​ផ្ទៀតផ្ទាត់​ភាព​ត្រឹម​ត្រូវ​សម្រាប់ %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"សូម​បញ្ចូល​ព័ត៌មាន​នៃ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹម​ត្រូវ​សម្រាប់ ៖\n" +"ម៉ាស៊ីន​បម្រើ = %1\n" +"ចែក​រំលែក = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1 ៖\n" +"ប្រភេទ​ឯកសារ​ដែល​មិន​ស្គាល់ ទាំង​ថត ឬ​ឯកសារ ។" + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"មិន​អាច​រក​ក្រុម​ការងារ​ណា​មួយ​ក្នុង​បណ្ដាញ​មូលដ្ឋាន​របស់​អ្នក​ ។ នេះ​អាច​បណ្ដាល​មក​ពី​ជញ្ជាំង​ភ្លើង​ដែល​បាន​ប្រើ ។" + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "គ្មាន​ឧបករណ៍​ផ្ទុក ក្នុង​ឧបករណ៍​សម្រាប់ %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "មិន​អាច​តភ្ជាប់​ទៅ​ម៉ាស៊ីន %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "កំហុស​ខណៈ​ពេល​ត​ភ្ជាប់​ទៅ​ម៉ាស៊ីន​បម្រើ​ដែល​ទទួល​ខុសត្រូវ​សម្រាប់ %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "រក​មិន​ឃើញ​ការ​ចែក​រំលែក​នៅ​លើ​ម៉ាស៊ីន​បម្រើ​ដែល​បាន​ផ្ដល់​ឲ្យ" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "ឧបករណ៍​ពិពណ៌នា​ឯកសារ BAD" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"ឈ្មោះ​ដែល​បាន​ផ្ដល់​ឲ្យ​មិន​អាច​កំណត់​ទៅ​ម៉ាស៊ីន​បម្រើ​តែ​មួយ​គត់ ។ សូម​ប្រាកដ​ថា​បណ្ដាញ​របស់​អ្នក​ត្រូវ​បាន​ដំឡើង​ដោយ​" +"គ្មាន​ឈ្មោះ​ជាន់​គ្នា រវាង​ឈ្មោះ​ដែល​បាន​ប្រើ​ដោយ វីនដូ និង​ដោយ យូនីក ។" + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient បាន​រាយការណ៍​កំហុស​មួយ ប៉ុន្តែ​មិន​បាន​បញ្ជាក់​លម្អិត​ថា​មាន​បញ្ហា​អ្វី​នោះ​ទេ ។ នេះ​អាច​បញ្ជាក់​" +"ថា​មាន​បញ្ហា​ដ៏​ធ្ងន់ធរ​ជាមួយ​នឹង​បណ្តាញ​របស់​អ្នក - ប៉ុន្តែ​ក៏​អាចបញ្ជាក់​ថា​មាន​បញ្ហា​ដ៏​ធ្ងន់​ធ្ងរ​ជាមួយ​នឹង " +"libsmbclient ។\n" +"បើ​អ្នក​ចង់​ជួយ​យើង សូម​ផ្ដល់ tcpdump នៃ​ចំណុច​ប្រទាក់​បណ្ដាញ​ខណៈ​ពេល​អ្នក​ព្យាយាម​រក​មើល (សូម​យល់​ថា វា​អាច​" +"មាន​ទិន្នន័យ​ផ្ទាល់​ខ្លួន ដូច្នេះ​កុំប្រកាស​វា ប្រសិន​បើ​អ្នក​មិន​ច្បាស់​អំពី​បញ្ហា​នោះ - អ្នក​អាច​ផ្ញើ​វា​ដោយ​ផ្ទាល់​ទៅ​" +"អ្នក​អភិវឌ្ឍន៍ បើ​ពួក​គេ​ស្នើ​វា)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "មិន​ស្គាល់​លក្ខខណ្ឌ​កំហុស​ក្នុង​សភាព ៖ %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient បាន​បរាជ័យ​ក្នុង​ការ​បង្កើត​បរិបទ" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"សូម​ប្រាកដ​ថា​កញ្ចប់​សាំបា (Samba) ត្រូវ​បាន​ដំឡើង​យ៉ាង​ត្រឹម​ត្រូវ​នៅ​ក្នុង​ប្រព័ន្ធ​របស់​អ្នក ។" + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"ការ​ម៉ោន​នៃ​ការ​ចែក​រំលែក \"%1\" ពី​ម៉ាស៊ីន \"%2\" ដោយ​អ្នក​ប្រើ \"%3\" បាន​បរាជ័យ ។\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"ការ​មិន​រៀបចំ​នៃ​ចំណុច​រៀបចំ \"%1\" បាន​បរាជ័យ ។\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient បាន​បរាជ័យ​ក្នុង​ការ​ចាប់ផ្តើម​បរិបទ" + +#~ msgid "File does not exist: %1" +#~ msgstr "ឯកសារ​មិន​មាន ៖ %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "libsmbclient បាន​បរាជ័យ​ក្នុង​ការ​ចាប់ផ្ដើម" diff --git a/po/km/kio5_thumbnail.po b/po/km/kio5_thumbnail.po new file mode 100644 index 0000000..393f887 --- /dev/null +++ b/po/km/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# translation of kio_thumbnail.po to Khmer +# Khoem Sokhem , 2007, 2008, 2009. +# Auk Piseth , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2009-04-09 14:30+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: KBabel 1.11.4\n" +"X-Language: km-CM\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "បង្វិល​រូបភាព​ដោយ​ស្វ័យ​ប្រវត្តិ​" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "គ្មាន MIME Type ត្រូវ​បាន​បញ្ជាក់​លម្អិត ។" + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "ទំហំ​មិន​ត្រឹមត្រូវ ឬ គ្មាន​ទំហំ​ត្រូវ​បាន​បញ្ជាក់​លម្អិត ។" + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "មិន​អាច​បង្កើត​រូបភាព​តូចៗ​​សម្រាប់​ថត​បានទេ" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "មិន​បាន​បញ្ជាក់​កម្មវិធី​ជំនួយ ។" + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "មិន​អាច​ផ្ទុក ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "មិន​អាច​បង្កើត​រូបភាព​តូច​សម្រាប់ %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "បរាជ័យ​ក្នុង​ការ​បង្កើត​រូបភាព​តូច ។" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "មិន​អាច​សរសេរ​រូបភាព ។" + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "បរាជ័យ​ក្នុង​ការ​ភ្ជាប់​ទៅ​ចម្រៀក​សតិ %1 ដែល​បាន​ចែក​រំលែក" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "រូបភាព​មាន​ទំហំ​ធំ​ពេក សម្រាប់​ចែក​រំលែក​ចម្រៀក​សតិ ។" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ខឹម សុខែម, អេង វណ្ណៈ, អោក ពិសិដ្ឋ​​" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "" +#~ "khoemsokhem@khmeros.info,​​evannak@khmeros.info,piseth_dv@khmeros.info" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/ko/kfileaudiopreview5.po b/po/ko/kfileaudiopreview5.po new file mode 100644 index 0000000..153771b --- /dev/null +++ b/po/ko/kfileaudiopreview5.po @@ -0,0 +1,33 @@ +# Korean messages for kfileaudiopreview. +# Copyright (C) 2004, 2008 Free Software Foundation, Inc. +# +# KIM KyungHeon , 2004. +# Shinjo Park , 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-07-05 00:47+0900\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "자동으로 재생(&A)" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "재생" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "일시 정지" diff --git a/po/ko/kio5_activities.po b/po/ko/kio5_activities.po new file mode 100644 index 0000000..227e96e --- /dev/null +++ b/po/ko/kio5_activities.po @@ -0,0 +1,244 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Shinjo Park , 2013, 2014, 2015, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-02-14 15:11+0100\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "활동" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "불러오는 중..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "활동 관리자가 실행되고 있지 않습니다" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "현재 활동으로 연결" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "현재 활동에서 연결 해제" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "다음으로 연결:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "다음에서 연결 해제:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "활동" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "현재 활동" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Shinjo Park" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kde@peremen.name" + +#~ msgid "Default" +#~ msgstr "기본값" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "활동 \"%1\"(으)로 전환" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "활동" + +#~ msgid "Delete activity" +#~ msgstr "활동 삭제" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "'%1'을(를) 삭제하시겠습니까?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "QML 파일을 불러올 수 없습니다. 설치 상태를 확인하십시오.\n" +#~ "%1이(가) 없음" + +#~ msgid "Create a new activity" +#~ msgstr "새 활동 만들기" + +#~ msgid "Activity settings" +#~ msgstr "활동 설정" + +#~ msgid "General" +#~ msgstr "일반" + +#~ msgid "Other" +#~ msgstr "기타" + +#~ msgid "Create" +#~ msgstr "생성" + +#~ msgid "Apply" +#~ msgstr "적용" + +#~ msgid "Cancel" +#~ msgstr "취소" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "이 활동으로 전환하는 단축키:" + +#~ msgid "Activity information" +#~ msgstr "활동 정보" + +#~ msgid "Name" +#~ msgstr "이름" + +#~ msgid "Description" +#~ msgstr "설명" + +#~ msgid "Wallpaper" +#~ msgstr "배경 그림" + +#~ msgid "Change..." +#~ msgstr "변경..." + +#~ msgid "Icon" +#~ msgstr "아이콘" + +#~ msgid "Switching" +#~ msgstr "전환" + +#~ msgid "Privacy" +#~ msgstr "개인 정보" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "영구" + +#~ msgid "Forget the last hour" +#~ msgstr "마지막 1시간 삭제" + +#~ msgid "Forget the last two hours" +#~ msgstr "마지막 2시간 삭제" + +#~ msgid "Forget a day" +#~ msgstr "마지막 하루 삭제" + +#~ msgid "Forget everything" +#~ msgstr "모두 삭제" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] "개월" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "시간:" + +#~ msgid "Create activity..." +#~ msgstr "활동 만들기..." + +#~ msgid "Activity switching" +#~ msgstr "활동 전환" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "활동간 전환" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "활동간 전환(거꾸로)" + +#~ msgid "Form" +#~ msgstr "폼" + +#~ msgid "Remember opened documents:" +#~ msgstr "열었던 문서 기억:" + +#~ msgid "For a&ll applications" +#~ msgstr "모든 프로그램에 대해서(&L)" + +#~ msgid "&Do not remember" +#~ msgstr "기억하지 않음(&D)" + +#~ msgid "O&nly for specific applications" +#~ msgstr "특정한 프로그램에 대해서(&N)" + +#~ msgid "Keep history" +#~ msgstr "과거 기록 저장" + +#~ msgid "Clear recent history" +#~ msgstr "최근 기록 삭제" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "이 목록에 없는 프로그램 차단" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "각 활동별 현재 가상 데스크톱 기억(다시 시작 필요)" + +#~ msgid "Shortcuts" +#~ msgstr "단축키" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity name" +#~ msgstr "활동" + +#~ msgid "Available Features" +#~ msgstr "사용 가능한 기능" + +#~ msgid "Plugins" +#~ msgstr "플러그인" + +#~ msgid "Enable activities management" +#~ msgstr "활동 관리 사용" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "활동 관리자가 올바르게 실행되고 있지 않습니다." + +#~ msgid "Activities..." +#~ msgstr "활동..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" + +#~ msgctxt "Header title for resource data model" +#~ msgid "Resource" +#~ msgstr "자원" diff --git a/po/ko/kio5_archive.po b/po/ko/kio5_archive.po new file mode 100644 index 0000000..bdf0dcd --- /dev/null +++ b/po/ko/kio5_archive.po @@ -0,0 +1,38 @@ +# Translation of kio_archive to Korean. +# Copyright (C) 2007 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# Shinjo Park , 2007, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-04-05 12:23+0200\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 19.04.3\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"파일을 열 수 없습니다. 지원하지 않을 수도 있습니다.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"압축 파일을 열 수 없습니다. 지원하지 않을 수도 있습니다.\n" +"%1" diff --git a/po/ko/kio5_bookmarks.po b/po/ko/kio5_bookmarks.po new file mode 100644 index 0000000..9670da8 --- /dev/null +++ b/po/ko/kio5_bookmarks.po @@ -0,0 +1,80 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Shinjo Park , 2008, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-12-26 23:12+0900\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "루트" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "위치" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "잘못된 요청: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "표시할 책갈피가 없습니다." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS 파일을 찾을 수 없습니다. 출력 결과가 보기 좋지 않을 수도 있" +"습니다.\n" +"
설치 상태를 확인하십시오." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "내 책갈피" + +#~ msgid "My bookmarks" +#~ msgstr "내 책갈피" + +#~ msgid "Xavier Vello" +#~ msgstr " " + +#~ msgid "Initial developer" +#~ msgstr "초기 개발자" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Shinjo Park" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kde@peremen.name" diff --git a/po/ko/kio5_fish.po b/po/ko/kio5_fish.po new file mode 100644 index 0000000..8a8efa6 --- /dev/null +++ b/po/ko/kio5_fish.po @@ -0,0 +1,43 @@ +# Translation of kio_fish to Korean. +# Copyright (C) 2007 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# +# Shinjo Park , 2007, 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-10-14 02:21+0900\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "연결 중..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "프로토콜 초기화 중..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "로컬 로그인" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH 인증" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "연결이 해제되었습니다." diff --git a/po/ko/kio5_info.po b/po/ko/kio5_info.po new file mode 100644 index 0000000..3edbf3e --- /dev/null +++ b/po/ko/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Shinjo Park , 2009, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2020-04-03 22:49+0200\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 19.04.3\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"이 서비스를 실행할 때 필요한 파일 %1을(를) 찾을 수 없습니다. 소프트웨어 설치 " +"상태를 확인하십시오." diff --git a/po/ko/kio5_man.po b/po/ko/kio5_man.po new file mode 100644 index 0000000..65c709e --- /dev/null +++ b/po/ko/kio5_man.po @@ -0,0 +1,217 @@ +# Korean messages for kio_man. +# Copyright (C) 2001-2004, 2007-2008 Free Software Foundation, Inc. +# Sae-keun Kim , 2001. +# KIM KyungHeon , 2002. +# Seok Lee , 2004. +# Shinjo Park , 2007, 2008, 2012, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-10-04 18:59+0200\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 19.12.3\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"%1와(과) 일치하는 man 페이지를 찾을 수 없습니다.원하는 페이지의 이름을 제대로 입력했는지 확인하십시오.문자열의 대" +"소문자는 구분됩니다. 이것을 혼동하지 않았는지 확인하십시오.만약 모든 것" +"이 올바른 것 같다면, MANPATH 환경 변수를 편집하거나 " +"/etc에 있는 일치하는 파일이 있는지 확인하는 식으로 man " +"페이지를 찾는 다른 경로를 지정하십시오." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"man 페이지 %1을(를) 찾았지만 읽거나 처리할 수 없습니다." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"지정한 man 페이지에서 %1 페이지를 참조하고 있지만," +"참조하는 %2 페이지를 찾을 수 없습니다." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "매뉴얼 페이지 뷰어 오류" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "일치하는 맨 페이지가 하나 이상입니다." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "여러 매뉴얼 페이지" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"메모: 만약 man 페이지가 번역되어 되어 있다면 몇몇 실수가 있거나 오래된 항목" +"이 들어 있을 수도 있습니다. 의심되는 경우에는 영어 버전을 참고하십시오." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "헤더 파일" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "헤더 파일 (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "사용자 명령" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "사용자 명령 (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "시스템 콜" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "서브루틴" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "펄 모듈" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "네트워크 함수" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "장치" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "파일 형식" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "게임" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "기타" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "시스템 관리" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "커널" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "로컬 문서" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "새로운 항목" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "주 매뉴얼 페이지 색인" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "섹션 %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "섹션 %1의 색인: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "매뉴얼 페이지 색인" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "색인 만드는 중" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"sgml2roff 프로그램을 찾을 수 없습니다. 해당 프로그램을 설" +"치하고 만약 필요하다면 KDE를 시작하기 전에 프로그램이 있는 곳으로 " +"PATH 환경 변수를 올바르게 설정하십시오." + +#~ msgid "Open of %1 failed." +#~ msgstr "%1을(를) 여는 데 실패했습니다." + +#~ msgid "Man output" +#~ msgstr "Man 출력" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "박신조" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kde@peremen.name" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/ko/kio5_mtp.po b/po/ko/kio5_mtp.po new file mode 100644 index 0000000..3993e0b --- /dev/null +++ b/po/ko/kio5_mtp.po @@ -0,0 +1,35 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Shinjo Park , 2015, 2016, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-04-22 01:46+0200\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 18.12.3\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"저장 미디어를 찾을 수 없습니다. 장치 잠금이 해제되어 있고 USB 설정에서 MTP가 " +"활성화되어 있는지 확인하십시오." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "장치 내부에서 파일을 복사/이동할 수 없음" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "저장소를 찾을 수 없습니다. 장치의 잠금을 해제해 보십시오." diff --git a/po/ko/kio5_network.po b/po/ko/kio5_network.po new file mode 100644 index 0000000..1da5f4d --- /dev/null +++ b/po/ko/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# Shinjo Park , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-01-27 00:15+0100\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 19.04.3\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "네트워크" diff --git a/po/ko/kio5_nfs.po b/po/ko/kio5_nfs.po new file mode 100644 index 0000000..22e5a18 --- /dev/null +++ b/po/ko/kio5_nfs.po @@ -0,0 +1,67 @@ +# Korean messages for kio_nfs. +# Copyright (C) 2002 Free Software Foundation, Inc. +# KIM KyungHeon , 2002. +# Shinjo Park , 2007, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-01-02 00:53+0900\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8Bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: 지원하지 않는 NFS 버전" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC 오류 %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "장치에 공간이 부족합니다" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "읽기 전용 파일 시스템" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "파일 이름이 너무 깁니다" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "디스크 할당량을 초과했습니다" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS 오류 %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "%1을(를) 마운트할 수 없음" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "알 수 없는 대상" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC 오류가 발생했습니다." diff --git a/po/ko/kio5_recentdocuments.po b/po/ko/kio5_recentdocuments.po new file mode 100644 index 0000000..941e535 --- /dev/null +++ b/po/ko/kio5_recentdocuments.po @@ -0,0 +1,22 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Shinjo Park , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-05-19 23:52+0900\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "최근 문서" diff --git a/po/ko/kio5_sftp.po b/po/ko/kio5_sftp.po new file mode 100644 index 0000000..119c6aa --- /dev/null +++ b/po/ko/kio5_sftp.po @@ -0,0 +1,281 @@ +# Translation of kio_sftp to Korean. +# Copyright (C) 2007 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# Shinjo Park , 2007, 2009, 2010, 2012, 2013, 2014, 2015, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2020-04-04 14:52+0200\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 19.04.3\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "잘못되었거나 올바르지 않은 암호" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "콜백을 할당할 수 없음" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "기록 정도를 설정할 수 없습니다." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "사용자 데이터 기록을 설정할 수 없습니다." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "기록 콜백을 설정할 수 없습니다." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP 로그인" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "이 질문에 대답하려면 사용자 이름 입력 필드를 사용하십시오." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "암호를 입력하십시오." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "사이트:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "새 SSH 세션을 만들 수 없습니다." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "시간 제한을 설정할 수 없습니다." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagle 알고리즘을 비활성화할 수 없습니다." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "압축을 설정할 수 없습니다." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "호스트를 설정할 수 없습니다." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "포트를 설정할 수 없습니다." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "사용자 이름을 설정할 수 없습니다." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "설정 파일을 처리할 수 없습니다." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "%1:%2(으)로 향한 SFTP 연결 여는 중" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "서버 공개 키 형식 이름을 가져올 수 없음" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "서버 공개 키에서 해시를 만들 수 없음" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "서버 공개 키의 지문을 만들 수 없음" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"이 서버의 %1 형식 호스트 키를 찾을 수 없지만 다른 종류의 키가 존재합니다.\n" +"공격자가 기본 서버 키를 바꿔서 클라이언트에게 키가 없는 듯 위장하고 있는 것 " +"같습니다.\n" +"시스템 관리자에게 연락하십시오.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"서버 %1의 호스트 키가 바뀌었습니다.\n" +"DNS 스푸핑 공격이 진행 중이거나, 호스트의 IP 주소 및 호스트 키가 바뀌었을 수" +"도 있습니다.\n" +"원격 호스트에서 마지막으로 보낸 %2 키 지문은 다음과 같습니다:\n" +" SHA256:%3\n" +"시스템 관리자에게 연락하십시오.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "경고: 호스트의 정체성을 검증할 수 없음." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"호스트 %1을(를) 믿을 수 없습니다.\n" +"%2 키 지문은 다음과 같습니다: %3\n" +"계속 연결을 진행하시겠습니까?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "인증이 실패했습니다." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "인증이 실패했습니다. 서버에서 인증 방식을 제공하지 않았습니다" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "사용자 이름과 암호를 입력하십시오." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "잘못된 사용자 이름과 암호" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP 서브시스템에 요청할 수 없습니다. 서버에 SFTP가 활성화되어 있는지 확인하" +"십시오." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP 세션을 초기화할 수 없습니다." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1에 성공적으로 연결됨" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"이 서버의 호스트 키를 찾을 수 없지만 다른 종류의 키가 존재합니다.\n" +"공격자가 기본 서버 키를 바꿔서 클라이언트에게 키가 없는 듯 위장하고 있는 것 " +"같습니다.\n" +"시스템 관리자에게 연락하십시오.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"서버 %1의 호스트 키가 바뀌었습니다.\n" +"DNS 스푸핑 공격이 진행 중이거나, 호스트의 IP 주소 및 호스트 키가 바뀌었을 수" +"도 있습니다.\n" +"원격 호스트에서 마지막으로 보낸 키 지문은 다음과 같습니다:\n" +"%2\n" +"시스템 관리자에게 연락하십시오.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"호스트 %1을(를) 믿을 수 없습니다.\n" +"키 지문은 다음과 같습니다: %2\n" +"계속 연결을 진행하시겠습니까?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "잘못된 SFTP 콘텍스트" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"%1\n" +"의 권한을 바꿀 수 없습니다" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "링크를 읽을 수 없음: %1" diff --git a/po/ko/kio5_smb.po b/po/ko/kio5_smb.po new file mode 100644 index 0000000..4b8d0f4 --- /dev/null +++ b/po/ko/kio5_smb.po @@ -0,0 +1,186 @@ +# Korean messages for kio_smb. +# Copyright (C) 2002-2004 Free Software Foundation, Inc. +# KIM KyungHeon , 2002. +# Seok Lee , 2004. +# Shinjo Park , 2007, 2013, 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-07-01 01:11+0200\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 19.12.3\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "%1의 인증 정보를 입력하십시오" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"다음의 인증 정보를 입력하십시오:\n" +"서버 = %1\n" +"공유 = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"디렉터리도 파일도 아닌 알 수 없는 파일 형식입니다." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"로컬 네트워크에서 작업 그룹을 찾을 수 없습니다. 방화벽이 방해하고 있을 수도 " +"있습니다." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 장치에 미디어 없음" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 호스트에 접속할 수 없음" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 자원이 있는 서버에 연결하는 중 오류 발생" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "서버에 공유된 내용이 없음" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "잘못된 파일 설명자" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"지정한 이름이 단일 서버를 가리키지 않습니다. Windows의 컴퓨터 이름과 유닉스 " +"호스트 이름 사이에서 이름이 섞이지 않았는지 확인해 보십시오." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: 호스트에 접근할 수 없음" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient가 오류를 보고했으나 정확한 문제를 알려 주지 않았습니다. 네트워" +"크 또는 libsmbclient 둘 중 하나에 있는 문제를 의미합니다.\n" +"만약 문제 해결을 도와 주시려면 탐색하는 동안 네트워크 인터페이스의 tcpdump를 " +"보내 주십시오. (여기에는 개인적인 정보가 들어 있을 수 있음을 유의하십시오. 개" +"발자가 문의하는 경우 개인적으로 전달할 수 있습니다.)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "알 수 없는 오류 조건: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "%1에 접근하는 중 오류 발생%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmclient의 콘텍스트를 만들 수 없음" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Samba 패키지가 올바르게 설치되었는지 확인하십시오." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"\"%2\" 호스트의 \"%3\" 사용자의 \"%1\" 공유 자원을 마운트하는 데 실패했습니" +"다.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"마운트 지점 \"%1\"의 마운트를 해제하는 데 실패했습니다.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "알 수 없는 장치 @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmclient의 콘텍스트를 초기화할 수 없음" + +#~ msgid "File does not exist: %1" +#~ msgstr "파일 %1이(가) 존재하지 않습니다." diff --git a/po/ko/kio5_thumbnail.po b/po/ko/kio5_thumbnail.po new file mode 100644 index 0000000..84fafa1 --- /dev/null +++ b/po/ko/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# Translation of kio_thumbnail to Korean. +# Copyright (C) 2007 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# Shinjo Park , 2007, 2009, 2011, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2020-10-04 18:18+0200\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 19.12.3\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "그림 자동 회전" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "MIME 형식이 지정되지 않았습니다." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "크기가 지정되지 않았거나 잘못되었습니다." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "디렉터리 축소판을 만들 수 없습니다" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "플러그인이 지정되지 않았습니다." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "축소판 생성기 %1을(를) 불러올 수 없습니다" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1의 축소판을 만들 수 없습니다" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "축소판을 만들 수 없습니다." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "그림을 쓸 수 없습니다." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "공유 메모리 조각 %1에 붙일 수 없습니다." + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "공유 메모리 조각보다 그림이 큽니다" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Shinjo Park" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kde@peremen.name" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/lt/kfileaudiopreview5.po b/po/lt/kfileaudiopreview5.po new file mode 100644 index 0000000..f55fe1b --- /dev/null +++ b/po/lt/kfileaudiopreview5.po @@ -0,0 +1,33 @@ +# translation of kfileaudiopreview4.po to Lithuanian +# Donatas Glodenis , 2005. +# Remigijus Jarmalavičius , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2019-07-15 22:49+0300\n" +"Last-Translator: Moo\n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" +"X-Generator: Poedit 2.2.1\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Atkurti &automatiškai" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "pradėti atkūrimą" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pristabdyti atkūrimą" diff --git a/po/lt/kio5_activities.po b/po/lt/kio5_activities.po new file mode 100644 index 0000000..99cb19f --- /dev/null +++ b/po/lt/kio5_activities.po @@ -0,0 +1,185 @@ +# Lithuanian translations for l package. +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the same license as the l package. +# +# Automatically generated, 2012. +# Liudas Alisauskas , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: l 10n\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-07-13 23:43+0300\n" +"Last-Translator: Moo\n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" +"X-Generator: Poedit 2.2.1\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Veiklos" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Įkeliama..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Veiklų tvarkytuvė neveikia" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Susieti su dabartine veikla" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Atsieti nuo dabartinės veiklos" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Susieti su:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Atsieti nuo:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Veikla" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Dabartinė veikla" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Liudas Ališauskas" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "liudas@akmc.lt" + +#~ msgid "Default" +#~ msgstr "Numatyta" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Persijungti į veiklą „%1“" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Veikla" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Delete activity" +#~ msgstr "Dabartinė veikla" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create a new activity" +#~ msgstr "Dabartinė veikla" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity settings" +#~ msgstr "Veikla" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity information" +#~ msgstr "Veikla" + +#~ msgid "Privacy" +#~ msgstr "Privatumas" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "visam laikui" + +#~ msgid "Forget the last hour" +#~ msgstr "Pamiršti paskutinę valandą" + +#~ msgid "Forget the last two hours" +#~ msgstr "Pamiršti paskutines dvi valandas" + +#~ msgid "Forget a day" +#~ msgstr "Pamiršti dieną" + +#~ msgid "Forget everything" +#~ msgstr "Pamiršti viską" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " mėnesį" +#~ msgstr[1] " mėnesius" +#~ msgstr[2] " mėnesių" +#~ msgstr[3] " mėnesį" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr " " + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create activity..." +#~ msgstr "Dabartinė veikla" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity switching" +#~ msgstr "Veikla" + +#~ msgid "Remember opened documents:" +#~ msgstr "Prisiminti atvertus dokumentus:" + +#~ msgid "For a&ll applications" +#~ msgstr "Visoms programos" + +#~ msgid "&Do not remember" +#~ msgstr "&Neprisiminti" + +#~ msgid "O&nly for specific applications" +#~ msgstr "Tik tam tikroms programoms" + +#~ msgid "Keep history" +#~ msgstr "Išsaugoti istoriją" + +#~ msgid "Clear recent history" +#~ msgstr "Išvalyti paskiausią istoriją" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Įtraukti į juodą sąrašą visas šias programas" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity name" +#~ msgstr "Veikla" + +#~ msgid "Available Features" +#~ msgstr "Galimos funkcijos" + +#~ msgid "Plugins" +#~ msgstr "Priedai" + +#~ msgid "Enable activities management" +#~ msgstr "Įjungti veiklų valdymą" diff --git a/po/lt/kio5_archive.po b/po/lt/kio5_archive.po new file mode 100644 index 0000000..9ee4c2e --- /dev/null +++ b/po/lt/kio5_archive.po @@ -0,0 +1,37 @@ +# translation of kio_archive.po to Lithuanian +# Donatas Glodenis , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-09-20 06:43+0300\n" +"Last-Translator: Donatas Glodenis \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Nepavyko atverti failo, tai galėjo įvykti dėl nepalaikomo failo formato.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Nepavyko atverti archyvo failo, greičiausiai taip nutiko dėl nepalaikomo " +"failo formato.\n" +"%1" diff --git a/po/lt/kio5_bookmarks.po b/po/lt/kio5_bookmarks.po new file mode 100644 index 0000000..eed9901 --- /dev/null +++ b/po/lt/kio5_bookmarks.po @@ -0,0 +1,62 @@ +# Lithuanian translations for kio_bookmarks package. +# This file is distributed under the same license as the kio_bookmarks package. +# Andrius Štikonas , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2009-03-20 21:31+0300\n" +"Last-Translator: Andrius Štikonas \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Šakninis aplankas" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Vietos" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Bloga užklausa: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Dar nėra žymelių, kurias būtų galima rodyti." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Nerastas kio_bookmarks CSS failas. Išvestis atrodys bjauriai.\n" +"Patikrinkite savo diegimą." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mano žymelės" diff --git a/po/lt/kio5_fish.po b/po/lt/kio5_fish.po new file mode 100644 index 0000000..145475e --- /dev/null +++ b/po/lt/kio5_fish.po @@ -0,0 +1,43 @@ +# translation of kio_fish.po to Lithuanian +# Donatas Glodenis , 2005, 2015. +# Liudas Ališauskas , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2019-10-11 23:06+0300\n" +"Last-Translator: Moo\n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" +"X-Generator: Poedit 2.0.6\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Jungiamasi..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicijuojamas protokolas..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Vietinis prisijungimas" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH tapatybės nustatymas" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Atsijungta." diff --git a/po/lt/kio5_info.po b/po/lt/kio5_info.po new file mode 100644 index 0000000..61fbbf5 --- /dev/null +++ b/po/lt/kio5_info.po @@ -0,0 +1,30 @@ +# Lithuanian translations for kio_info package. +# This file is distributed under the same license as the kio_info package. +# +# Remigijus Jarmalavičius , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2011-08-03 19:18+0300\n" +"Last-Translator: Remigijus Jarmalavičius \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" +"X-Generator: Lokalize 1.2\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Nepavyko surasti failo %1, kuris yra reikalingas šios paslaugos veikimui. " +"Prašome patikrinkite savo programinės įrangos įdiegimą." diff --git a/po/lt/kio5_man.po b/po/lt/kio5_man.po new file mode 100644 index 0000000..c6a3fb7 --- /dev/null +++ b/po/lt/kio5_man.po @@ -0,0 +1,230 @@ +# translation of kio_man.po to Lithuanian +# Donatas Glodenis , 2005-2007. +# Tomas Straupis , 2011, 2015. +# Liudas Ališauskas , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-01-25 12:12+0200\n" +"Last-Translator: Liudas Ališauskas \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"(n%100<10 || n%100>=20) ? 1: 2);\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" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Nerastas „man“ puslapis, atitinkantis %1.

        Patikrinkite, ar " +"netyčia neįvėlėte klaidos pageidaujamo puslapio pavadinime.
        Atkreipkite " +"dėmesį, kad turite skirti didžiąsias ir mažąsias raides!
        Jei visgi " +"klaidos nepadarėte, gali būti, kad turite nurodyti tikslesnį paieškos kelią " +"„man“ puslapiams, ar tai būtų aplinkos kintamas MANPATH ar atitinkamas " +"failas aplanke /etc ." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        KDE Man žiūriklio klaida

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Yra daugiau kaip vienas atitinkamas man puslapis." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Jei skaitote „man“ puslapį savo kalba, atkreipkite dėmesį kad jame gali būti " +"klaidų, arba jis gali būti pasenęs. Jei abejojate, turite pažiūrėti anglišką " +"versiją." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Antraštės failai" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Antraštės failai (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Naudotojo komandos" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Naudotojo komandos (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Sistemos iškvietimai" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Paprogramės" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perlo moduliai" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Tinklo funkcijos" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Įrengimai" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Failų formatai" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Žaidimai" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Įvairūs" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Sistemos administravimas" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Branduolys" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Vietinė dokumentacija" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nauja" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX vadovų (man) rodyklė" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Skyrius %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Sekcijos indeksas %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX vadovų (man) rodyklė" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Generuoju rodyklę" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Nepavyksta rasti sgml2roff komandos Jūsų sistemoje. Prašome ją įdiegti, jei " +"reikia, ir išplėskite paieškos kelią pakeisdami aplinkos kintamąjį PATH " +"prieš paleidžiant KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Nepavyko atidaryti %1." + +#~ msgid "Man output" +#~ msgstr "Man išvestis" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Ričardas Čepas, Donatas Glodenis, Valdas Jankūnas" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "rch@richard.eu.org, dgvirtual@akl.lt, skroblas@erdves.lt" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/lt/kio5_mtp.po b/po/lt/kio5_mtp.po new file mode 100644 index 0000000..4c36deb --- /dev/null +++ b/po/lt/kio5_mtp.po @@ -0,0 +1,34 @@ +# Lithuanian translations for trunk-kf package. +# Copyright (C) 2015 This_file_is_part_of_KDE +# This file is distributed under the same license as the trunk-kf package. +# Automatically generated, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: trunk-kf 5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-10-11 23:08+0300\n" +"Last-Translator: Moo\n" +"Language-Team: lt\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: Poedit 2.0.6\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Nerasta jokios saugyklos laikmenos. Įsitikinkite, kad jūsų įrenginys yra " +"atrakintas ir jo USB ryšio nuostatose yra įjungtas MTP." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Negalima kopijuoti/perkelti failus į patį įrenginį" diff --git a/po/lt/kio5_network.po b/po/lt/kio5_network.po new file mode 100644 index 0000000..6db2530 --- /dev/null +++ b/po/lt/kio5_network.po @@ -0,0 +1,25 @@ +# Lithuanian translations for kio-extras package. +# Copyright (C) 2019 This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-12-30 00:57+0200\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\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: Poedit 2.2.4\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Tinklas" diff --git a/po/lt/kio5_nfs.po b/po/lt/kio5_nfs.po new file mode 100644 index 0000000..92acaba --- /dev/null +++ b/po/lt/kio5_nfs.po @@ -0,0 +1,64 @@ +# translation of kio_nfs.po to Lithuanian +# +# Donatas Glodenis , 2005. +# Liudas Ališauskas , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2019-10-11 23:10+0300\n" +"Last-Translator: Moo\n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" +"X-Generator: Poedit 2.0.6\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Nepalaikoma NFS versija" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC klaida%1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Įrenginyje nebeliko vietos" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Tik skaitymui skirta failų sistema" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Failo pavadinimas yra per ilgas" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Viršyta leidžiamo duomenų kiekio riba" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS klaida %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Nepavyko prijungti %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Nežinoma paskirtis" diff --git a/po/lt/kio5_recentdocuments.po b/po/lt/kio5_recentdocuments.po new file mode 100644 index 0000000..4d23355 --- /dev/null +++ b/po/lt/kio5_recentdocuments.po @@ -0,0 +1,26 @@ +# Lithuanian translations for l package. +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the same license as the l package. +# +# Automatically generated, 2012. +# Liudas Alisauskas , 2013. +msgid "" +msgstr "" +"Project-Id-Version: l 10n\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2019-07-07 16:55+0300\n" +"Last-Translator: Moo\n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" +"X-Generator: Poedit 2.2.1\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Paskiausiai naudoti dokumentai" diff --git a/po/lt/kio5_sftp.po b/po/lt/kio5_sftp.po new file mode 100644 index 0000000..43ff6c2 --- /dev/null +++ b/po/lt/kio5_sftp.po @@ -0,0 +1,308 @@ +# translation of kio_sftp.po to Lithuanian +# +# Ričardas Čepas , 2002. +# Donatas Glodenis , 2005. +# Tomas Straupis , 2011. +# Remigijus Jarmalavičius , 2011. +# liudas@aksioma.lt , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2014-11-05 18:57+0200\n" +"Last-Translator: liudas@aksioma.lt \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Neteisinga ar netinkama slaptafrazė" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nepavyko sukurti atgalinių kvietimų" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nepavyko nustatyti žurnalo detalumo." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Nepavyko nustatyti žurnalo detalumo." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Nepavyko sukurti atgalinių kvietimų" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP prisiregistravimas" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Atsakykite į šitą klausimą naudotojo vardo įvedimo lauke." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Prašome įvesti savo slaptažodį." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Sritis:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nepavyko sukurti naujos SSH sesijos." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nepavyko nustatyti skirto laiko." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Nepavyko nustatyti prievado." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Nepavyko nustatyti suspaudimo." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Nepavyko nustatyti mazgo." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Nepavyko nustatyti prievado." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Nepavyko nustatyti naudotojo vardo." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nepavyko išnagrinėti konfigūracinio failo." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Atveriamas SFTP prisijungimas prie mazgo %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Nepavyko nustatyti naudotojo vardo." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Šio serverio raktas nerastas, bet yra kito tipo raktas.\n" +"Piktadarys gali pakeisti numatytąjį serverio raktą, kad priverstų jus " +"galvoti, kad raktas neegzistuoja.\n" +"Susisiekite su savo sistemos administratoriumi.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Mazgo %1 raktas pasikeitė.\n" +"Tai reiškia, kad arba vyksta DNS užklausų apgavystė (angl. „dns spoofing“), " +"arba vienu metu pasikeitė ir mazgo ip adresas ir raktas.\n" +"Nutolusio mazgo atsiųstas rakto atspaudas yra:\n" +" %2\n" +"Susisiekite su sistemos administratoriumi.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Perspėjimas: Nepavyksta patikrinti mazgo tapatybės!" + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Negalima nustatyti mazgo %1 autentiškumo.\n" +"Rakto atspaudas yra: %2\n" +"Ar tikrai norite tęsti prisijungimą?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Autentikavimas nepavyko." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Prašome įvesti naudotojo vardą ir slaptažodį." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Neteisingas naudotojo vardas ar slaptažodis" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Nepavyko paprašyti SFTP subsistemos. Įsitikinkite, kad SFTP yra įjungta " +"serveryje." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nepavyko pradėti SFTP sesijos." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Sėkmingai prisijungta prie %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Šio serverio raktas nerastas, bet yra kito tipo raktas.\n" +"Piktadarys gali pakeisti numatytąjį serverio raktą, kad priverstų jus " +"galvoti, kad raktas neegzistuoja.\n" +"Susisiekite su savo sistemos administratoriumi.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Mazgo %1 raktas pasikeitė.\n" +"Tai reiškia, kad arba vyksta DNS užklausų apgavystė (angl. „dns spoofing“), " +"arba vienu metu pasikeitė ir mazgo ip adresas ir raktas.\n" +"Nutolusio mazgo atsiųstas rakto atspaudas yra:\n" +" %2\n" +"Susisiekite su sistemos administratoriumi.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Negalima nustatyti mazgo %1 autentiškumo.\n" +"Rakto atspaudas yra: %2\n" +"Ar tikrai norite tęsti prisijungimą?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nepavyko pakeisti leidimų objektui\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Nepavyko perskaityti nuorodos: %1" diff --git a/po/lt/kio5_smb.po b/po/lt/kio5_smb.po new file mode 100644 index 0000000..a19e580 --- /dev/null +++ b/po/lt/kio5_smb.po @@ -0,0 +1,189 @@ +# translation of kio_smb.po to Lithuanian +# Donatas Glodenis , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2005-09-20 06:37+0300\n" +"Last-Translator: Donatas Glodenis \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Prašome įvesti %1 autentikavimo informaciją" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Prašome įvesti autentikacijos informaciją:\n" +"Serveris = %1\n" +"Bendro naudojimo diskas (share) = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Nežinomas failo tipas, nei aplankas, nei failas." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Vietiniame tinkle nepavyko rasti jokių darbo grupių. Darbo grupių peržiūrą " +"gali blokuoti įjungta ugniasienė." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Įrenginyje %1 nėra laikmenos" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 negalėjo prisijungti prie mazgo" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Klaida bandant prisijungti prie serverio, atsakingo už %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Bendro naudojimo diskas minėtame serveryje nerastas" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "BAD failo deskriptorius" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Tokio vardo šiame serveryje nepavyko pritaikyti. Patikrinkite, ar jūsų " +"tinkas yra nustatytas taip, kad jame nebūtų Windows ir UNIX vartojamų vardų " +"sistemų konfliktų." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient pranešė klaidą, tačiau nenurodė, kokia ji yra. Tai gali " +"reikšti, kad tinkle yra reikšminga klaida, tačiau gali būti, kad klaida yra " +"pačiame libsmbclient.\n" +"Jei norite mums padėti, prašome pateikti tinklo sąsajos tcpdump tuo momentu, " +"kai bandote tinklą naršyti (jame gali būti privačios informacijos, tad, jei " +"nesate dėl to tikri, nepublikuokite to viešai - jei programuotojai paprašys, " +"galite jiems tai nusiųsti privačiai)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Nežinomos klaidos būsena: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient programai nepavyko sukurti konteksto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Įsitikinkite, kad samba paketas teisingai įdiegtas Jūsų sistemoje." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Bendro naudojimo disko „%1“ montavimas iš mazgo „%2“, kurį atliko naudotojas " +"„%3“, nepavyko.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Montavimo taško „%1“ išmontavimas nepavyko.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient nepavyko inicijuoti konteksto" + +#~ msgid "File does not exist: %1" +#~ msgstr "Šio failo nėra: %1" diff --git a/po/lt/kio5_thumbnail.po b/po/lt/kio5_thumbnail.po new file mode 100644 index 0000000..e6516db --- /dev/null +++ b/po/lt/kio5_thumbnail.po @@ -0,0 +1,76 @@ +# translation of kio_thumbnail.po to Lithuanian +# +# Donatas Glodenis , 2005. +# Tomas Straupis , 2011. +# Mindaugas Baranauskas , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2015-12-29 21:10+0200\n" +"Last-Translator: Mindaugas Baranauskas \n" +"Language-Team: lt \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" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Automatiškai pasukti nuotrauką" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Nenurodytas MIME tipas." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Dydis nenurodytas arba nurodytas neteisingai." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nepavyksta sukurti miniatiūros aplankui" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nenurodytas papildinys." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nepavyksta įkelti ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nepavyksta sukurti miniatiūros %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Nepavyko sukurti miniatiūros." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Nepavyko įrašyti atvaizdo." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Nepavyko prisijungti prie dalinamo atminties segmento %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Atvaizdas per didelis dalinamam atminties segmentui" diff --git a/po/lv/kfileaudiopreview5.po b/po/lv/kfileaudiopreview5.po new file mode 100644 index 0000000..029fb90 --- /dev/null +++ b/po/lv/kfileaudiopreview5.po @@ -0,0 +1,46 @@ +# translation of kfileaudiopreview4.po to Latvian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Maris Nartiss , 2007. +# Viesturs Zarins , 2008. +# Viesturs Zariņš , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-05-18 21:32+0300\n" +"Last-Translator: Viesturs Zariņš \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Automātiski atskaņot" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "sākt atskaņot" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pauzēt atskaņošanu" + +#~ msgid "stop playback" +#~ msgstr "apturēt atskaņošanu" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "atkārtot: pēc beigām sāk no jauna" + +#~ msgid "Media Player" +#~ msgstr "Multivides atskaņotājs" diff --git a/po/lv/kio5_activities.po b/po/lv/kio5_activities.po new file mode 100644 index 0000000..3f62268 --- /dev/null +++ b/po/lv/kio5_activities.po @@ -0,0 +1,87 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Einars Sprugis , 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2011-08-17 23:34+0300\n" +"Last-Translator: Einars Sprugis \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "KDE aktivitāšu pārvaldnieks" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Einārs Sprūģis" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "einars8@gmail.com" + +#, fuzzy +#~| msgid "KDE Activity Management Service" +#~ msgid "Enable activities management" +#~ msgstr "KDE aktivitāšu pārvaldības serviss" + +#, fuzzy +#~| msgid "(c) 2010 Ivan Cukic, Sebastian Trueg" +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2010 Ivan Cukic, Sebastian Trueg" diff --git a/po/lv/kio5_archive.po b/po/lv/kio5_archive.po new file mode 100644 index 0000000..62856e1 --- /dev/null +++ b/po/lv/kio5_archive.po @@ -0,0 +1,37 @@ +# translation of kio_archive.po to Latvian +# +# Viesturs Zarins , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-06-28 19:56+0300\n" +"Last-Translator: Viesturs Zarins \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Neizdevās atvērt failu. Iespējams, ka faila formāts nav atbalstīts.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Neizdevās atvērt arhīva failu. Iespējams, ka arhīva formāts nav atbalstīts.\n" +"%1" diff --git a/po/lv/kio5_bookmarks.po b/po/lv/kio5_bookmarks.po new file mode 100644 index 0000000..2012a1d --- /dev/null +++ b/po/lv/kio5_bookmarks.po @@ -0,0 +1,82 @@ +# translation of kio_bookmarks.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 , 2008. +# Maris Nartiss , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-11-23 11:54+0200\n" +"Last-Translator: Maris Nartiss \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Sakne" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Vietas" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Nepareizs pieprasījums: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Vēl nav nevienas grāmatzīmes, ko rādīt." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Neizdevās atrast kio_bookmarks CSS failu. Izvads izskatīsies neglīts.\n" +"Pārbaudiet savu instalāciju." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Manas grāmatzīmes" + +#~ msgid "My bookmarks" +#~ msgstr "Manas grāmatzīmes" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Sākotnējais izstrādātājs" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Viesturs Zariņš" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "viesturs.zarins@mii.lu.lv" diff --git a/po/lv/kio5_fish.po b/po/lv/kio5_fish.po new file mode 100644 index 0000000..772c7e5 --- /dev/null +++ b/po/lv/kio5_fish.po @@ -0,0 +1,55 @@ +# translation of kio_fish.po to latvian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Oskars , 2007. +# Viesturs Zariņš , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2009-05-20 20:42+0300\n" +"Last-Translator: Viesturs Zariņš \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Pieslēdzas..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicializē protokolu..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokālā pieteikšanās" + +#: fish.cpp:631 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH autorizēšanās" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Atvienots." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Viesturs Zariņš" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "viesturs.zarins@mii.lu.lv" diff --git a/po/lv/kio5_info.po b/po/lv/kio5_info.po new file mode 100644 index 0000000..d0a3062 --- /dev/null +++ b/po/lv/kio5_info.po @@ -0,0 +1,31 @@ +# translation of kio_info.po to Latvian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Maris Nartiss , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-04-27 16:17+0300\n" +"Last-Translator: Maris Nartiss \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Nebija iespējams atrast failu %1, kas ir nepieciešams šī servisa " +"darbināšanai. Lūdzu pārbaudiet programmatūras instalāciju." diff --git a/po/lv/kio5_man.po b/po/lv/kio5_man.po new file mode 100644 index 0000000..bd1e961 --- /dev/null +++ b/po/lv/kio5_man.po @@ -0,0 +1,229 @@ +# translation of kio_man.po to Latvian +# Copyright (C) 2007, 2008 Free Software Foundation, Inc. +# +# Viesturs Zarins , 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-11-18 11:27+0200\n" +"Last-Translator: Viesturs Zarins \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Nav atrodama \"man\" lapa, kas atbilst %1.

        Pārbaudiet, vai " +"ievadītajā lapas nosaukumā nav kļūda.
        Arī lielajiem un mazajiem burtiem " +"ir nozīme!
        Ja viss tomēr ir pareizi, tad, varbūt, ir jāmaina \"man\" " +"meklēšanas ceļš - to var izdarīt gan ar vides mainīgo MANPATH, gan ar " +"atbilstošo failu /etc mapē." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        KDE Man skatītāja kļūda

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Ir vairāk nekā viena atbilstoša \"man\" lapa." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Piezīme. Ja lasāt \"man\" lapu valodā, kas nav angļu valoda, tad ņemiet " +"vērā, ka tajā var būt kļūdas un novecojušas ziņas. Ja ir šaubas, jāskatās " +"angliski!" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Lietotāja komandas" + +#: kio_man.cpp:751 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Lietotāja komandas" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Sistēmas izsaukumi" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subrutīnas" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "\"Perl\" moduļi" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Tīkla funkcijas" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Ierīces" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Failu formāti" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Spēles" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Dažādi" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Sistēmas administrēšana" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kodols" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Vietēja dokumentācija" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Jauns" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX rokasgrāmatas satura rādītājs" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sekcija %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Sekcijas %1: %2 indekss" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX rokasgrāmatas satura rādītājs" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Ģenerēju indeksu" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Jūsu sistēmā nav atrodama programma sgml2roff. Lūdzu, uzstādiet to, ja " +"nepieciešams, paplašiniet pārmeklējamo ceļu (vietu), mainot vides mainīgo " +"PATH, un tad no jauna iedarbiniet KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Nevar atvērt %1." + +#~ msgid "Man output" +#~ msgstr "\"Man\" izvade" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Valters,Māris Nartišs" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr ",maris.kde@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/lv/kio5_nfs.po b/po/lv/kio5_nfs.po new file mode 100644 index 0000000..40c27e7 --- /dev/null +++ b/po/lv/kio5_nfs.po @@ -0,0 +1,68 @@ +# translation of kio_nfs.po to Latvian +# Copyright (C) 2006, 2007 Free Software Foundation, Inc. +# +# Maris Nartiss , 2006. +# Viesturs Zarins , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2007-12-30 23:51+0200\n" +"Last-Translator: Viesturs Zarins \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Uz ierīces vairs nav brīvas vietas" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Tikai lasāma failu sistēma" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Faila nosaukums par garu" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Pārsniegta diska kvota " + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "Gadījusies RPC kļūda." diff --git a/po/lv/kio5_recentdocuments.po b/po/lv/kio5_recentdocuments.po new file mode 100644 index 0000000..d7e9d99 --- /dev/null +++ b/po/lv/kio5_recentdocuments.po @@ -0,0 +1,25 @@ +# translation of kio_recentdocuments.po to Latvian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Maris Nartiss , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-06-11 08:19+0300\n" +"Last-Translator: Maris Nartiss \n" +"Language-Team: Latvian\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Nesenie dokumenti" diff --git a/po/lv/kio5_sftp.po b/po/lv/kio5_sftp.po new file mode 100644 index 0000000..46673e2 --- /dev/null +++ b/po/lv/kio5_sftp.po @@ -0,0 +1,313 @@ +# translation of kio_sftp.po to Latvian +# Copyright (C) 2007, 2008, 2011 Free Software Foundation, Inc. +# +# Maris Nartiss , 2007, 2011. +# Viesturs Zarins , 2008, 2009, 2010. +# Viesturs Zariņš , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2011-12-02 07:37+0200\n" +"Last-Translator: Maris Nartiss \n" +"Language-Team: Latvian\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: kio_sftp.cpp:224 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Nepareizs lietotājvārds vai parole" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nebija iespējams piešķirt atpakaļizsaukumus" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Neizdevās iestatīt žurnalēšanas detalitāti." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Neizdevās iestatīt žurnalēšanas detalitāti." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Nebija iespējams piešķirt atpakaļizsaukumus" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP pieteikšanās" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Lietojiet lietotājvārda ievades lauku, lai atbildētu šo jautājumu." + +#: kio_sftp.cpp:396 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "Lūdzu ievadiet jūsu lietotājvārdu un paroli." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "vietne:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Neizdevās sākt jaunu SSH sesiju." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Neizdevās iestatīt noildzi." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Neizdevās iestatīt portu." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Neizdevās iestatīt kompresiju." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Neizdevās iestatīt resursdatora nosaukumu." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Neizdevās iestatīt portu." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Neizdevās iestatīt lietotājvārdu." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Neizdevās parsēt konfigurācijas failu." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Atver SFTP savienojumu ar resursdatoru %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Neizdevās iestatīt lietotājvārdu." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Šī servera saimnieka atslēga netika atrasta, bet eksistē cita tipa atslēga.\n" +"iespējams ka kāds ļaundaris ir nomainījis noklusēto servera atslēgu, lai " +"iemānītu lietotājam ka tā neeksistē.\n" +"Lūdzu sazinieties ar servera administratoru.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Servera %1 saimnieka atslēga ir mainīta.\n" +"Tas var nozīmēt vai nu ka notiek DNS VILTOŠANA vai datora IP adrese un " +"saimnieka atslēga ir abas reizē mainītas.\n" +"Servera atslēgas pirkstu nospiedums ir:\n" +"%2\n" +"Lūdzu sazinieties ar servera administratoru.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Brīdinājums: nav iespējams pārbaudīt datora identitāti." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Datora %1 autentiskums nav zināms.\n" +"Atslēgas pirkstu nospiedums ir: %2\n" +"Vai tiešām vēlaties pieslēgties šim serverim?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Neveiksmīga autentificēšanās." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Lūdzu ievadiet jūsu lietotājvārdu un paroli." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nepareizs lietotājvārds vai parole" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Neizdevās sazināties ar SFTP apakšsistēmu. Pārlicienieties ka uz servera ir " +"ieslēgts SFTP." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Neizdevās sākt SFTP sesiju." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Veiksmīgi pieslēdzies %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Šī servera saimnieka atslēga netika atrasta, bet eksistē cita tipa atslēga.\n" +"iespējams ka kāds ļaundaris ir nomainījis noklusēto servera atslēgu, lai " +"iemānītu lietotājam ka tā neeksistē.\n" +"Lūdzu sazinieties ar servera administratoru.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Servera %1 saimnieka atslēga ir mainīta.\n" +"Tas var nozīmēt vai nu ka notiek DNS VILTOŠANA vai datora IP adrese un " +"saimnieka atslēga ir abas reizē mainītas.\n" +"Servera atslēgas pirkstu nospiedums ir:\n" +"%2\n" +"Lūdzu sazinieties ar servera administratoru.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Datora %1 autentiskums nav zināms.\n" +"Atslēgas pirkstu nospiedums ir: %2\n" +"Vai tiešām vēlaties pieslēgties šim serverim?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Neizdevas izmainīt atļaujas priekš\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Neizdevās nolasīt saiti: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Nav norādīts resursdatora nosaukums." diff --git a/po/lv/kio5_smb.po b/po/lv/kio5_smb.po new file mode 100644 index 0000000..25caf91 --- /dev/null +++ b/po/lv/kio5_smb.po @@ -0,0 +1,194 @@ +# translation of kio_smb.po to Latvian +# Copyright (C) 2007, 2008 Free Software Foundation, Inc. +# +# Maris Nartiss , 2007. +# Viesturs Zarins , 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2008-07-04 17:19+0300\n" +"Last-Translator: Viesturs Zarins \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Lūdzu ievadiet autentifikācijas informāciju priekš %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Lūdzu ievadiet autentifikācijas informāciju:\n" +"Serveris = %1\n" +"Kopīgojums = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Nezināms faila tips - nav ne mape, ne fails." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Neizdevās atrast lokālā tīkla darba grupas. Tam par iemeslu var būt ieslēgts " +"ugunsmūris." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Nav datu nesēja ierīcē priekš %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Neizdevās pieslēgties datoram priekš %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Kļūda pieslēdzoties par %1 atbildīgajam datoram" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Uz norādītā servera kopīgojums netika atrasts" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Nederīgs faila deskriptors" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Ar doto vārdu neizdevās identificēt unikālu serveri. Pārliecinieties, ka " +"jūsu tīklā nav datoru nosaukumu konfliktu starp Windows un UNIX nosaukumu " +"atriti." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient ziņoja par kļūdu, taču nenorādija kāda tā ir. Tas var norādīt " +"uz problēmām ar tīklu, kā arī uz problēmu ar libsmbclient.\n" +"Ja vēlaties mums palīdzēt, atsūtiet tcpdump programmas izvadi no " +"pārlūkošanas laika. Uzmanību - šāda izvade var saturēt personīgus datus, " +"tādēļ, ja neesat par to pārliecināti, sūtiet to izstrādātājiem privāti nevis " +"izmantojot publisku telpu." + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Nezināma kļūda iekš stat: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient nezidevās izveidot kontekstu" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Pārliecinieties, ka jūsu sistēmā SAMBA ir korekti instalēta." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Kopīgojuma \"%1\" no datora \"%2\" kā lietotājam \"%3\" montēšana bija " +"nesekmīga.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Montēšanas punkta \"%1\" atmontēšana neizdevās.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient neizdevās inicializēt kontekstu" + +#~ msgid "File does not exist: %1" +#~ msgstr "Fails neeksistē: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "libsmbclient neizdevās inicializēties" diff --git a/po/lv/kio5_thumbnail.po b/po/lv/kio5_thumbnail.po new file mode 100644 index 0000000..a88f1a4 --- /dev/null +++ b/po/lv/kio5_thumbnail.po @@ -0,0 +1,88 @@ +# translation of kio_thumbnail.po to Latvian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Oskars , 2007. +# Maris Nartiss , 2009, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-12-02 07:31+0200\n" +"Last-Translator: Maris Nartiss \n" +"Language-Team: Latvian\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Automātiski rotēt attēlu" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Nav atrasts MIME tips" + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Izmērs nav noteikts vai tas ir nekorekts." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nevar izveidot sīktēlu mapei" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nav norādīts spraudnis" + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nevar ielādēt ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nevar izveidot sīktēlu %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Sīktēla izveide nav izdevusies." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Nevar ierakstīt attēlu." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Neizdevās pievienoties koplietošanas atmiņas apgabalam %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Attēls ir pālāk liels izdalītajam atmiņas segmentam" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Oskars" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "osk@one.lv" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/ml/kfileaudiopreview5.po b/po/ml/kfileaudiopreview5.po new file mode 100644 index 0000000..d5e3cc7 --- /dev/null +++ b/po/ml/kfileaudiopreview5.po @@ -0,0 +1,36 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Anish A , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2010-12-16 23:03+0530\n" +"Last-Translator: Anish A \n" +"Language-Team: Swathantra Malayalam Computing | സ്വതന്ത്ര മലയാള കമ്പ്യൂട്ടിങ് " +"\n" +"Language: ml\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" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&സ്വയം പ്രേരിതമായി പാടുക" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "പാടാന്‍ തുടങ്ങുക" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "പാട്ടിന് തല്ക്കാലവിരാമം" + +#~ msgid "Media Player" +#~ msgstr "പാട്ടുപെട്ടി" diff --git a/po/ml/kio5_archive.po b/po/ml/kio5_archive.po new file mode 100644 index 0000000..0754010 --- /dev/null +++ b/po/ml/kio5_archive.po @@ -0,0 +1,34 @@ +# Malayalam translation of kio_archive. +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_archive package. +# Manu S Madhav , 2008. +# Reviewed by: സന്തോഷ് തോട്ടിങ്ങല്‍ +msgid "" +msgstr "" +"Project-Id-Version: kio_archive trunk\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-07-06 07:57+0530\n" +"Last-Translator: Manu|മനു S|എസ് Madhav|മാധവ് \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "ഈ ഫയല്‍ തുറക്കാന്‍ പറ്റിയില്ല, ചിലപ്പോള്‍ പിന്തുണയില്ലാത്ത ഫയല്‍തരമായതുമൂലമാകാം.%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "ഈ ശേഖരം തുറക്കാന്‍ പറ്റിയില്ല, ചിലപ്പോള്‍ ഇത്തരം ഫയലിനു പിന്തുണയില്ലാത്തതുകാരണമാകാം.%1" diff --git a/po/ml/kio5_bookmarks.po b/po/ml/kio5_bookmarks.po new file mode 100644 index 0000000..6df2d54 --- /dev/null +++ b/po/ml/kio5_bookmarks.po @@ -0,0 +1,80 @@ +# Malyalam translation of kio_bookmarks. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_bookmarks package. +# +# Sankaranarayanan , 2008. +# Praveen Arimbrathodiyil , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks trunk\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-11-22 16:20-0800\n" +"Last-Translator: Praveen Arimbrathodiyil \n" +"Language-Team: SMC \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "റൂട്ട്" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "സ്ഥാനങ്ങള്‍" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "തെറ്റായ അപേക്ഷ: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "ഇതു് വരെ ഓര്‍മ്മക്കുറിപ്പുകളൊന്നും കാണിയ്ക്കാനില്ല." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks സിഎസ്എസ് ഫയല്‍ കണ്ടില്ല. ഫലം ഭംഗിയില്ലാത്തതാകാം.\n" +"നിങ്ങളുടെ ഇന്‍സ്റ്റലേഷന്‍ പരിശോധിക്കൂ." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "എന്റെ ഓര്‍മ്മക്കുറിപ്പുകള്‍" + +#~ msgid "My bookmarks" +#~ msgstr "എന്റെ ഓര്‍മ്മക്കുറിപ്പുകള്‍" + +#~ msgid "Xavier Vello" +#~ msgstr "സേവ്യ‌ര്‍ വെല്ലോ" + +#~ msgid "Initial developer" +#~ msgstr "ആദ്യ രചയിതാവു്" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ശങ്കരനാരായണന്‍" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "snalledam@dataone.in" diff --git a/po/ml/kio5_fish.po b/po/ml/kio5_fish.po new file mode 100644 index 0000000..43a1a94 --- /dev/null +++ b/po/ml/kio5_fish.po @@ -0,0 +1,45 @@ +# Malayalam translation of kio_fish. +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_fish package. +# Manu S Madhav , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_fish trunk\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2008-07-07 01:03+0530\n" +"Last-Translator: Manu|മനു S|എസ് Madhav|മാധവ് \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: ml\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" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "ബന്ധപ്പെടുന്നു..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "നിയമാവലി ആരംഭിക്കുന്നു..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "പ്രാദേശിക ലോഗിന്‍" + +#: fish.cpp:631 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "എസ്.എസ്.എച്ച് അധികാരപ്പെടുത്തല്‍" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "ബന്ധം വിച്ഛേദിച്ചിരിക്കുന്നു." diff --git a/po/ml/kio5_info.po b/po/ml/kio5_info.po new file mode 100644 index 0000000..34ecefd --- /dev/null +++ b/po/ml/kio5_info.po @@ -0,0 +1,30 @@ +# translation of kio_info.po to +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Hrishikesh K B , 2010 +# Reviewed by Ani , 2010 +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2010-12-17 09:56+0530\n" +"Last-Translator: Hrishikesh K Bhaskaran \n" +"Language-Team: Swathantra Malayalam Computing | സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ് " +"\n" +"Language: ml\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" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"ഈ സേവനം പ്രവര്‍ത്തിക്കാനാവശ്യമായ %1 എന്ന പ്രമാണം കണ്ടെത്താന്‍ കഴിഞ്ഞില്ല. ദയവായി സോഫ്റ്റ്‌വെയര്‍ " +"ഇന്‍സ്റ്റലേഷന്‍ പരിശോധിക്കുക" diff --git a/po/ml/kio5_man.po b/po/ml/kio5_man.po new file mode 100644 index 0000000..0d63270 --- /dev/null +++ b/po/ml/kio5_man.po @@ -0,0 +1,227 @@ +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# HARI VISHNU, 2008. +# Reviewed by Praveen Arimbrathodiyil , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kdebase\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-10-22 00:35+0530\n" +"Last-Translator: Hari Vishnu \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"%1 ഉമായി ചേരുന്ന മാന്‍ താളൊന്നും കണ്ടു പിടിച്ചില്ല.

        .നിങ്ങള്‍ താളിന്റെ പേരു " +"തെറ്റിച്ചില്ലെന്നു് ഉറപ്പു വരുത്തുക.
        നിങ്ങള്‍ പേരു് ശരിയായി വലിയക്ഷരങ്ങളും ചെറിയക്ഷരങ്ങളും " +"ഉപയോഗിച്ചാണോ എഴുതിയതെന്നു് ഉറപ്പു വരുത്തുക.
        എല്ലാം ശരിയായി തോന്നുന്നെങ്കില്‍ നിങ്ങളുടെ മാന്‍ " +"താളുകള്‍ തെരയുവാനുള്ള പാത്ത് നന്നാക്കേണ്ടി വരും; പരിസര വേരിയബിളായ(environment variable) " +"MANPATH ഉപയോഗിച്ചോ, ഒരു ചേരുന്ന ഫയല്‍ /etc തട്ടില്‍ നിന്നും ഉപയോഗിയ്ക്കുക" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        കെഡിഇ മാന്‍ ദര്‍ശിനിയില്‍ പിശക്

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "ഒന്നിലേറെ ചേരുന്ന താളുകള്‍ ഉണ്ട്." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"ശ്രദ്ധിയ്ക്കുക: നിങ്ങള്‍ ഒരു മാന്‍ താള്‍ നിങ്ങളുടെ ഭാഷയില്‍ വായിച്ചാല്‍, അതില്‍ തെറ്റുകള്‍ ഉണ്ടാവാം. " +"സംശയം ഉണ്ടെങ്കില്‍, ആംഗലേയ ഭാഷയില്‍ ഉള്ളതു നോക്കുക" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "ഉപയോക്താവിന്റെ ആജ്ഞകള്‍" + +#: kio_man.cpp:751 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "ഉപയോക്താവിന്റെ ആജ്ഞകള്‍" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "സിസ്റ്റത്തിന്റെ വിളികള്‍" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "സബ്റൂട്ടീന്‍സ്" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "പേള്‍ മോഡ്യൂളുകള്‍" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "ശൃംഖലയിലെ ധര്‍മ്മങ്ങള്‍" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "ഉപകരണങ്ങള്‍" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "ഫയല്‍ ഫോര്‍മാറ്റുകള്‍" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "കളികള്‍" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "മറ്റുള്ളവ" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "സിസ്റ്റം ഭരണപരമായ" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "കെര്‍ണല്‍" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "പ്രാദേശികമായ സഹായക്കുറിപ്പുകള്‍" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "പുതിയതു്" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "യൂണിക്സ് മാനുവല്‍ സൂചിക" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "ഭാഗം %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "ഭാഗം %1: %2 ഇനുള്ള സൂചിക" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "യൂണിക്സ് മാനുവല്‍ സൂചിക" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "ജെനറേറ്റിങ്ങ് സൂചിക" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"sgml2roff പ്രയോഗം നിങ്ങളൂടെ സിസ്റ്റത്തില്‍ കണ്ടെത്തുവാനായില്ല. ദയവായി അതു് ഇന്‍സ്റ്റോള്‍ ചെയ്യുക, " +"അതിനു ശേഷം PATH എന്ന പരിസര വേരിയബിള്‍ (environment variable) മാറ്റി കെ.ഡി.ഇ " +"തുടങ്ങുന്നതിനു മുമ്പു് തെരയാനുള്ള പാത്ത് കൂടി കൊടുക്കുക " + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 തുറക്കാന്‍ കഴിഞ്ഞില്ല" + +#~ msgid "Man output" +#~ msgstr "മാന്‍ ഔട്ട്പുട്ട്" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ഹരി വിഷ്ണു" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "harivishnu@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/ml/kio5_nfs.po b/po/ml/kio5_nfs.po new file mode 100644 index 0000000..0efd1a2 --- /dev/null +++ b/po/ml/kio5_nfs.po @@ -0,0 +1,67 @@ +# translation of kio_nfs.po to +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# ANI PETER|അനി പീറ്റര്‍ , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2008-07-04 00:54+0530\n" +"Last-Translator: ANI PETER|അനി പീറ്റര്‍ \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "ഡിവൈസില്‍ സ്ഥലം ലഭ്യമല്ല" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "റീഡ് ഒണ്‍ലി ഫയല്‍ സിസ്റ്റം" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "ഫയല്‍നാമം വളരെ വലുതാണു്" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "ഡിസ്ക് കോട്ടായുടെ പരിധി കഴിഞ്ഞിരിക്കുന്നു" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "ഒരു ആര്‍പിസി പിശകു് ഉണ്ടായിരിക്കുന്നു." diff --git a/po/ml/kio5_sftp.po b/po/ml/kio5_sftp.po new file mode 100644 index 0000000..3594688 --- /dev/null +++ b/po/ml/kio5_sftp.po @@ -0,0 +1,355 @@ +# translation of kio_sftp.po to +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_sftp package. +# ANI PETER|അനി പീറ്റര്‍ , 2008 +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2008-07-11 17:51+0530\n" +"Last-Translator: ANI PETER|അനി പീറ്റര്‍ \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_sftp.cpp:224 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "നല്‍കിയ ഉപയോക്തൃനാമം അല്ലെങ്കില്‍ പാസ്‌വേര്‍ഡ് തെറ്റാണു്." + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set log userdata." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set log callback." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP ലോഗിന്‍" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" + +#: kio_sftp.cpp:396 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "ദയവായി നിങ്ങളുടെ ഉപയോക്തൃനാമവും പാസ്‌വേര്‍ഡും നല്‍കുക." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "സൈറ്റ്:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "" + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set a timeout." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not disable Nagle's Algorithm." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "" + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:634 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set port." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "SFTP കണക്ഷന്‍ ഹോസ്റ്റ് %1:%2-ലേക്കു് തുറക്കുന്നു" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "മുന്നറിയിപ്പു്: ഹോസ്റ്റിനെ തിരിച്ചറിയുവാന്‍ സാധ്യമല്ല." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "തിരിച്ചറിയല്‍ പരാജയപ്പെട്ടു." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "ദയവായി നിങ്ങളുടെ ഉപയോക്തൃനാമവും പാസ്‌വേര്‍ഡും നല്‍കുക." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "നല്‍കിയ ഉപയോക്തൃനാമം അല്ലെങ്കില്‍ പാസ്‌വേര്‍ഡ് തെറ്റാണു്." + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "" + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1-മായി വിജയകരമായി ബന്ധം സ്ഥാപിച്ചിരിക്കുന്നു." + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" + +#: kio_sftp.cpp:2252 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not read link: %1" +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#, fuzzy +#~| msgid "No hostname specified" +#~ msgid "No hostname specified." +#~ msgstr "ഹോസ്റ്റ്നാമം നല്‍കിയിട്ടില്ല" + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "ഒരു ആന്തരിക പിശകുണ്ടായിരിക്കുന്നു. ദയവായി വീണ്ടും ശ്രമിക്കുക." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "ദയവായി നിങ്ങളുടെ ഉപയോക്തൃനാമവും കീ പാസ്ഫ്രെയിസും നല്‍കുക." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "മുന്നറിയിപ്പു്: ഹോസ്റ്റിനെ തിരിച്ചറിഞ്ഞിരിക്കുന്നു." + +#~ msgid "Connection failed." +#~ msgstr "ബന്ധം സ്ഥാപിക്കുവാന്‍ സാധ്യമായില്ല." + +#~ msgid "Connection closed by remote host." +#~ msgstr "റിമോട്ട് ഹോസ്റ്റ് കണക്ഷന്‍ നിര്‍ത്തിയിരിക്കുന്നു." + +#, fuzzy +#~| msgid "Unexpected SFTP error: %1" +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "അപ്രതീക്ഷിതമായ SFTP പിശകു്: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP പതിപ്പു് %1" + +#~ msgid "Protocol error." +#~ msgstr "സമ്പ്രദായത്തില്‍ പിശകു്" + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "ഒരു ആന്തരിക പിശകുണ്ടായിരിക്കുന്നു. ദയവായി വീണ്ടും ശ്രമിക്കുക." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "'%1'-ലേക്കു് ഫയല്‍ പകര്‍ത്തുമ്പോള്‍ അപരിചിതമായൊരു പിശകുണ്ടായിരിക്കുന്നു. ദയവായി വീണ്ടും " +#~ "ശ്രമിക്കുക." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "റിമോട്ട് ഹോസ്റ്റ് ഫയലിന്റെ പേരുമാറ്റുന്നതിനുള്ള പിന്തുണ നല്‍കുന്നതല്ല." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "റിമോട്ട് ഹോസ്റ്റ് സിംബോളിക് ലിങ്കുകളുണ്ടാക്കുന്നതിനുള്ള പിന്തുണ നല്‍കുന്നതല്ല." + +#~ msgid "Connection closed" +#~ msgstr "ബന്ധം നിലച്ചു." + +#~ msgid "End of file." +#~ msgstr "ഫയലിന്റെ അവസാനം." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "ഏതോ ഒരു കാരണത്താല്‍ SFTP ആജ്ഞ പരാജയപ്പെട്ടു." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "SFTP സര്‍വറിനു് തെറ്റായ ഒരു സന്ദേശം ലഭിച്ചിരിക്കുന്നു." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "നിങ്ങള്‍ ശ്രമിച്ച പ്രക്രിയ SFTP സര്‍വര്‍ പിന്തുണയ്ക്കുന്നില്ല." + +#~ msgid "Error code: %1" +#~ msgstr "പിശകു് കോഡ്: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "ഒരു സബ്സിസ്റ്റവും ആജ്ഞയും ഒരേ സമയത്തു് നല്‍കുവാന്‍ സാധ്യമല്ല." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "ssh പ്രവര്‍ത്തനത്തിനു് ഐച്ഛികങ്ങള്‍ ലഭ്യമല്ല." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "ssh പ്രക്രിയ നടപ്പിലാക്കുന്നതില്‍ പരാജയം." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "ssh-മായി ഇടപെടുമ്പോള്‍ പിശകുണ്ടായിരിക്കുന്നു." + +#~ msgid "Please supply a password." +#~ msgstr "ദയവായി ഒരു പാസ്‌വേര്‍ഡ് നല്‍കുക." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "ദയവായി നിങ്ങളുടെ SSH പ്രൈവറ്റ് കീയ്ക്കുള്ള പാസ്ഫ്രെയിസ് നല്‍കുക." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "%1-ലേക്കുള്ള തിരിച്ചറിയല്‍ പരാജയപ്പെട്ടു." + +#~ msgid "Host key was rejected." +#~ msgstr "ഹോസ്റ്റ് കീ നിഷേധിച്ചിരിക്കുന്നു." + +#~ msgid "Please enter a username and password" +#~ msgstr "ദയവായി ഒരു ഉപയോക്തൃനാമവും പാസ്‌വേര്‍ഡും നല്‍കുക." + +#~ msgid "File does not exist." +#~ msgstr "ഫയല്‍ നിലവിലില്ല." + +#~ msgid "Access is denied." +#~ msgstr "പ്രവേശനം നിഷിദ്ധം." diff --git a/po/ml/kio5_smb.po b/po/ml/kio5_smb.po new file mode 100644 index 0000000..15c8063 --- /dev/null +++ b/po/ml/kio5_smb.po @@ -0,0 +1,194 @@ +# Translation of file kio_smb.po +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# HARI VISHNU , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kdebase\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2008-07-08 18:03+0530\n" +"Last-Translator: Hari Vishnu \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "%1ഇനുള്ള തിരിച്ചറിയലിനുള്ള വിവരങ്ങള്‍ ദയവായി അടിച്ചു തരിക" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"തിരിച്ചറിയലിനുള്ള വിവരങ്ങള്‍ താഴെ പറഞ്ഞിരിക്കുന്ന സാധനങ്ങള്‍ക്കു അടിച്ചു തരിക : \n" +"സര്‍വര്‍ = %1\n" +"പങ്കുവെക്കല്‍ = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"തിരിച്ചറിയാത്ത തരം ഫയല്‍ , ഇതു തട്ടവുമല്ല ഫയലുമല്ല" + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"നിങ്ങളുടെ പ്രാദേശിക ശൃംഖലയില്‍ പണി-കൂട്ടങ്ങള്‍ കണ്ടു പിടിക്കാനായില്ല. ഇതൊരു പ്രാവര്‍ത്തികമായ ഫയര്‍-" +"വോള്‍ കാരണം ആയേക്കാം" + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1-ഇനുള്ള ഉപകരണത്തിനു മീഡിയ ഇല്ല" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1-ഇനു വേണ്ടി ആഥിതേയനിലേക്കു ബന്ധപ്പെടാന്‍ കഴിജില്ല" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 ഇനുത്തരവാദിയായ സറ്വറിലോട്ടു ബന്ധപ്പെടുന്നതില്‍ പിശക്" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "'പങ്കുവയ്ക്കല് ' തന്നിരിക്കുന്ന സര്‍വറേല്‍ കണ്ടു പിടിക്കാന്‍ കഴിഞ്ഞില്ല" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "മോശമായ ഫയല്‍ ഡിസ്ക്രിപ്റ്റര്‍" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"തന്നിരിക്കുന്ന പേര് ഒരു വ്യത്യസ്ഥമായ സര്‍വറേലോട്ട് റിസോള്‍വ് ചെയ്യാന്‍ കഴിഞ്ഞില്ല തന്നിരിക്കുന്ന പേര് " +"ഒരു വ്യത്യസ്ഥമായ സര്‍വറേലോട്ട് റിസോള്‍വ് ചെയ്യാന്‍ കഴിഞില്ല. നിങ്ങളുടെ ശ്രംഖലയുടെ സെറ്റപ്പ് " +"വിന്റോസും യൂണിക്സും ഉപയോഗിക്കുന്ന പേരുകള്‍ തമ്മിലുള്ള പേരു-തര്‍ക്കങ്ങള്‍ ഇല്ലാതെയാണു ചെയ്തിരിക്കുന്നത് " +"എന്ന് ഉറപ്പു വരുത്തു." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"ലിബ്-എസ്-എം-ബി ക്ലയന്റ് (libsmbclient) ഒരു പിശക് റിപ്പോര്‍ട്ട് ചെയ്തു, പക്ഷെ അതെന്താണെന്നു " +"വ്യക്തമാക്കിയില്ല. ഇത് ശൃംഖലയിലേ ഒരു പിശകാവാം, അല്ലെങ്കില്‍ ലിബ്-എസ്-എം-ബി ക്ലയന്റ്-ഇല്‍ ഒരു " +"വലിയ പിശകുമാവാം. \n" +"നിങ്ങള്‍ക്കു ഞങ്ങളെ സഹായിക്കണമെന്നുണ്ടെങ്കില്‍, തരേണ്ടതാണ്, നിങ്ങള്‍ പരതുന്നതിനോടൊപ്പം തന്നെയുള്ള " +"ശൃംഖല വിനിമയതലത്തിന്റെ ഒരു ടി.സി.പ്പി.ഡമ്പ് (tcpdump) (സൂക്ഷിക്കുക: ഇതില്‍ സ്വകാര്യമായ " +"വിവരങ്ങള്‍ ഉണ്ടായേക്കാം, അതു കൊണ്ട് നിങ്ങള്‍ക്കുറപ്പില്ലെങ്കില്‍ പോസ്റ്റ് ചെയ്യരുത്. ഇത് നിങ്ങള്‍ക്ക് " +"ഡെവെലപ്പേഴ്സിന് സ്വകാര്യമായി അയയ്ക്കാം അവരതാവശ്യപ്പെടുന്നെങ്കില്‍." + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "അറിഞ്ഞുകൂടാത്ത പിശകു നില സ്റ്റാറ്റ് : %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "ലൈബ്-എസ്-എം-ബി ക്ലയന്റ്(libsmbclient) ഇനു കോണ്ടെക്സ്റ്റ് ഉണ്ടാക്കുവാന്‍ കഴിഞില്ല" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"സാമ്പ പാക്കേജ് നിങ്ങളുടെ സിസ്റ്റത്തേല്‍ ശരിയായി ഇന്‍സ്റ്റോള്‍ ചെയ്തിരിക്കുന്നു എന്ന് ഉറപ്പു വരുത്തുക" + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"ആതിഥേയന്‍ \"%2\"-ഇല്‍ നിന്നും \"%3\" ഉപയോക്താവ് മൗണ്ട് ചെയ്യുവാന്‍ ശ്രമിച്ച പങ്കുവെച്ച \"%1\" " +"നടന്നില്ല.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"മൗണ്ട്-പോയിന്റ് \"%1\"-ഇന്റെ അണ്‍മൗണ്ടിങ്ങ് പരാജയപ്പെട്ടു.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "ലൈബ്-എസ്-എം-ബി ക്ലയന്റ്(libsmbclient) ഇനു കോണ്ടെക്സ്റ്റ് തുടങ്ങുവാന്‍ കഴിഞില്ല" + +#~ msgid "File does not exist: %1" +#~ msgstr "ഫയല്‍ ഇവിടെ ഇല്ല : %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "ലൈബ്-എസ്-എം-ബി ക്ലയന്റ്(libsmbclient) തുടങ്ങുവാന്‍ കഴിഞ്ഞില്ല" diff --git a/po/ml/kio5_thumbnail.po b/po/ml/kio5_thumbnail.po new file mode 100644 index 0000000..c648099 --- /dev/null +++ b/po/ml/kio5_thumbnail.po @@ -0,0 +1,87 @@ +# Translation of file kio_thumbnail.po +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdebase package. +# HARI VISHNU , 2008. +# Anoopan|അനൂപന്‍ , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kdebase\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2008-10-22 00:36+0530\n" +"Last-Translator: Hari Vishnu \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: ml\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" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "ഒരു MIME തരവും വ്യക്തമാക്കിയിട്ടില്ല" + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "വലിപ്പം വ്യക്തമാക്കിയിട്ടില്ല അല്ലെങ്കില്‍ അതു് തെറ്റാണു്" + +#: thumbnail.cpp:229 +#, fuzzy, kde-format +#| msgid "Cannot create thumbnail for %1" +msgid "Cannot create thumbnail for directory" +msgstr "നഖച്ചിത്രം %1-ഇനു ഉണ്ടാക്കുവാന് കഴിയുന്നില്ല" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "സംയോജകം വ്യക്തമാക്കിയിട്ടില്ല" + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "നഖച്ചിത്രനിര്‍മ്മാതാവു് %1 എടുക്കുവാന്‍ കഴിയുന്നില്ല" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "നഖച്ചിത്രം %1-ഇനു ഉണ്ടാക്കുവാന് കഴിയുന്നില്ല" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "നഖച്ചിത്രം ഉണ്ടാക്കുവാന്‍ കഴിയുന്നില്ല" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "ചിത്രം എഴുതുവാന്‍ കഴിയുന്നില്ല" + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "%1 എന്ന പങ്കുവെച്ച മെമ്മറിയിലേക്ക് കൂട്ടിവെക്കുവാന്‍ കഴിഞ്ഞില്ല" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "ചിത്രം പങ്കുവെച്ച മെമ്മറി വിഭാഗത്തിനേക്കാള്‍ വലുതാണു്" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ഹരി വിഷ്ണു,അനൂപന്‍ " + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "harivishnu@gmail.com,anoop.ind@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/mr/kfileaudiopreview5.po b/po/mr/kfileaudiopreview5.po new file mode 100644 index 0000000..c03b7ab --- /dev/null +++ b/po/mr/kfileaudiopreview5.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Chetan Khona , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-02-09 16:30+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "स्वयंचलितरित्या प्ले करा" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "प्लेबॅक सुरु करा" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "प्लेबॅक थांबवा" diff --git a/po/mr/kio5_activities.po b/po/mr/kio5_activities.po new file mode 100644 index 0000000..4b6c22f --- /dev/null +++ b/po/mr/kio5_activities.po @@ -0,0 +1,194 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Chetan Khona , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-01-14 22:14+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: American English \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" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activities" +msgstr "कार्यपध्दती" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "कार्यपध्दती व्यवस्थापक नीट काम करत नाही." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "वर्तमान कार्यपध्दतीस लिंक करा" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "वर्तमान कार्यपध्दती पासून अनलिंक करा" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "यास लिंक करा :" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "या पासून अनलिंक करा :" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activity" +msgstr "कार्यपध्दती" + +#: KioActivities.cpp:230 +#, fuzzy, kde-format +#| msgid "Link to the current activity" +msgid "Current activity" +msgstr "वर्तमान कार्यपध्दतीस लिंक करा" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "चेतन खोना" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "chetan@kompkin.com" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "\"%1\" या कार्यपध्दतीप्रमाणे काम सुरु करा" + +#, fuzzy +#~| msgid "Activities" +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "कार्यपध्दती" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Delete activity" +#~ msgstr "वर्तमान कार्यपध्दतीस लिंक करा" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create a new activity" +#~ msgstr "वर्तमान कार्यपध्दतीस लिंक करा" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity settings" +#~ msgstr "कार्यपध्दती" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity information" +#~ msgstr "कार्यपध्दती" + +#~ msgid "Privacy" +#~ msgstr "गुप्तता" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "कायमचे" + +#~ msgid "Forget the last hour" +#~ msgstr "शेवटचा तास विसरा" + +#~ msgid "Forget the last two hours" +#~ msgstr "शेवटचे दोन तास विसरा" + +#~ msgid "Forget a day" +#~ msgstr "एक दिवस विसरा" + +#~ msgid "Forget everything" +#~ msgstr "सर्वकाही विसरा" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "या करिता " + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create activity..." +#~ msgstr "वर्तमान कार्यपध्दतीस लिंक करा" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity switching" +#~ msgstr "कार्यपध्दती" + +#~ msgid "Remember opened documents:" +#~ msgstr "उघडलेले दस्तऐवज लक्षात ठेवा :" + +#, fuzzy +#~| msgid "For all applications" +#~ msgid "For a&ll applications" +#~ msgstr "सर्व अनुप्रयोगांकरिता" + +#, fuzzy +#~| msgid "Do not remember" +#~ msgid "&Do not remember" +#~ msgstr "लक्षात ठेवू नका" + +#, fuzzy +#~| msgid "Only for specific applications" +#~ msgid "O&nly for specific applications" +#~ msgstr "फक्त ठराविक अनुप्रयोगांकरिता" + +#~ msgid "Keep history" +#~ msgstr "इतिहास लक्षात ठेवा" + +#~ msgid "Clear recent history" +#~ msgstr "ताजा इतिहास काढून टाका" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "या यादीत नसलेल्या सर्व अनुप्रयोगांना प्रतिबंध करा" + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activity name" +#~ msgstr "कार्यपध्दती" + +#~ msgid "Available Features" +#~ msgstr "उपलब्ध वैशिष्ठ्ये" + +#~ msgid "Plugins" +#~ msgstr "प्लगइन्स" + +#~ msgid "Enable activities management" +#~ msgstr "कार्यपध्दती व्यवस्थापन कार्यान्वित करा" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "कार्यपध्दती व्यवस्थापक नीट काम करत नाही." + +#, fuzzy +#~| msgid "Activities" +#~ msgid "Activities..." +#~ msgstr "कार्यपध्दती" + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 इव्हान क्युकिक" diff --git a/po/mr/kio5_archive.po b/po/mr/kio5_archive.po new file mode 100644 index 0000000..189b0dd --- /dev/null +++ b/po/mr/kio5_archive.po @@ -0,0 +1,39 @@ +# translation of kio_archive.po to marathi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sandeep Shedmake , 2009. +# Chetan Khona , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-01-25 16:41+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"फाईल उघडू शकत नाही, संभाव्यतया असमर्थीत फाईल प्रकारमुळे होत असावे.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"ऐतिहासीक संग्रह फाईल उघडू शकत नाही, संभाव्यतया प्रकार समर्थीत नसावे.\n" +"%1" diff --git a/po/mr/kio5_bookmarks.po b/po/mr/kio5_bookmarks.po new file mode 100644 index 0000000..72766f5 --- /dev/null +++ b/po/mr/kio5_bookmarks.po @@ -0,0 +1,85 @@ +# translation of kio_bookmarks.po to marathi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sandeep Shedmake , 2009. +# Chetan Khona , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2013-02-22 14:26+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "रूट" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "जागा" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "चूकीची विनंती: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "प्रदर्शन करिता ओळखचिन्ह नाही." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS फाईल आढळली नाही. आऊटपुट कुरूप दिसेल.\n" +"तुमचे प्रतिष्ठापन तपासा." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "माझे ओळखचिन्ह" + +#~ msgid "My bookmarks" +#~ msgstr "माझे ओळखचिन्ह" + +#~ msgid "Xavier Vello" +#~ msgstr "झेवियर वेल्लो" + +#~ msgid "Initial developer" +#~ msgstr "प्रारंभिक विकासकर्ता" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "" +#~ "संदिप शेडमाके, \n" +#~ "चेतन खोना" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "" +#~ "sandeep.shedmake@gmail.com, \n" +#~ "chetan@kompkin.com" diff --git a/po/mr/kio5_fish.po b/po/mr/kio5_fish.po new file mode 100644 index 0000000..a21926f --- /dev/null +++ b/po/mr/kio5_fish.po @@ -0,0 +1,45 @@ +# translation of kio_fish.po to marathi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sandeep Shedmake , 2009. +# Chetan Khona , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-03-28 15:17+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "जोडत आहे..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "शिष्टाचार प्रारंभ करत आहे..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "स्थानिक प्रवेश" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH अधिप्रमाणन" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "जुळवणी तुटली." diff --git a/po/mr/kio5_info.po b/po/mr/kio5_info.po new file mode 100644 index 0000000..f4cfa4d --- /dev/null +++ b/po/mr/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Chetan Khona , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2013-01-20 14:59+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Generator: Lokalize 1.5\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"%1 ही फाईल शोधु शकत नाही. ही सेवा पुरविण्यासाठी ती फाईल गरजेची आहे. कृपया तुमची " +"सॉफ़्टवेअर प्रतिष्ठापना तपासा." diff --git a/po/mr/kio5_man.po b/po/mr/kio5_man.po new file mode 100644 index 0000000..629ae25 --- /dev/null +++ b/po/mr/kio5_man.po @@ -0,0 +1,230 @@ +# translation of kio_man.po to marathi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sandeep Shedmake , 2009. +# Chetan Khona , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-03-28 15:17+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"%1 शी जुळणारे man page सापडले नाही.

        तुम्हाला जे पान पाहिजे त्याचे नाव चुकीचे " +"टाइप झाले नाही याची खात्री करा.
        नावात मोठी व लहान अक्षरे बरोबर आहेत याची " +"खात्री करा.
        जर सर्व ठीक वाटत असेल तर कदाचित तुमचा शोध मार्ग सुधारावा लागेल. " +"वातावरण परिवर्तनीय MANPATH किंवा /etc संचयीकेत जुळणारी फाईल वापरा." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        केडीई Man प्रदर्शक त्रुटी

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "एकापेक्षा जास्त जुळवणीचे man पान आढळले." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"नोंद: जर तुम्ही man page तुमच्या भाषेत वाचत असाल तर काळजी ठेवा की त्यात चुका असु शकतील " +"किंवा ते अप्रचलित असु शकते. शंका वाटल्यास इंग्रजी अनुवाद बघा." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "हेडर फाईल्स" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "हेडर फाईल्स (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "वापरकर्ता आदेश" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "वापरकर्ता आदेश (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "प्रणाली कॉल" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "उपकार्यक्रम" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl विभाग" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "संजाळ कार्ये" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "साधन" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "फाईल स्वरूप" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "खेळ" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "किरकोळ" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "प्रणाली व्यवस्थापक" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "कर्नल" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "स्थानिक दस्तऐवजीकरण" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "नवीन" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX पुस्तिका अनुक्रमणिका" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "विभाग %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "विभाग %1: %2 करिता अनुक्रमणिका" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX पुस्तिका अनुक्रमणिका" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "निर्देशिका बनवीत आहे" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"प्रणालीवर sgml2roff कार्यक्रम आढळले नाही. कृपया आवश्यकता असल्यास, प्रतिष्ठापीत करा, व " +"केडीई सुरु करण्यापूर्वी एनवायर्नमेंट वेरियेबल PATH संयोजीत करून शोध मार्ग विस्तारीत करा." + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 उघडण्यास अपयशी." + +#~ msgid "Man output" +#~ msgstr "Man आऊटपुट" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "" +#~ "संदिप शेडमाके, \n" +#~ "चेतन खोना" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "" +#~ "sandeep.shedmake@gmail.com, \n" +#~ "chetan@kompkin.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/mr/kio5_nfs.po b/po/mr/kio5_nfs.po new file mode 100644 index 0000000..74c3a4c --- /dev/null +++ b/po/mr/kio5_nfs.po @@ -0,0 +1,68 @@ +# translation of kio_nfs.po to marathi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sandeep Shedmake , 2009. +# Chetan Khona , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-01-16 11:30+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "या साधनावर रिकामी जागा उपलब्ध नाही" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "फक्त वाचण्याजोगी फाईल प्रणाली" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "फाईलनाव खूपच लांब आहे" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "डिस्क कोटा अपुरा आहे" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC त्रुटी आढळली." diff --git a/po/mr/kio5_recentdocuments.po b/po/mr/kio5_recentdocuments.po new file mode 100644 index 0000000..e618c29 --- /dev/null +++ b/po/mr/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Chetan Khona , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-12-28 15:49+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Generator: Lokalize 1.5\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "अलिकडील दस्तऐवज" diff --git a/po/mr/kio5_sftp.po b/po/mr/kio5_sftp.po new file mode 100644 index 0000000..2f8d772 --- /dev/null +++ b/po/mr/kio5_sftp.po @@ -0,0 +1,414 @@ +# translation of kio_sftp.po to marathi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sandeep Shedmake , 2009. +# Chetan Khona , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2013-03-28 16:14+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "अयोग्य किंवा चुकीचा गुप्तशब्द" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "पुन्हा बोलवण्याचे ठरवु शकत नाही" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "लॉग वाचाळता लागु करू शकत नाही." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "लॉग वाचाळता लागु करू शकत नाही." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "पुन्हा बोलवण्याचे ठरवु शकत नाही" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP प्रवेश" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "या प्रश्नाचे उत्तर देण्यासाठी वापरकर्तानाव हे इनपुट क्षेत्र वापरा." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "कृपया गुप्तशब्द दाखल करा." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "स्थळ:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "नवीन SSH सत्र तयार करू शकत नाही." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "वेळेचे बंधन लागु करू शकत नाही." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "पोर्ट लागु करू शकत नाही." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "संक्षिप्तीकरण लागु करू शकत नाही." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "यजमान लागु करू शकत नाही." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "पोर्ट लागु करू शकत नाही." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "वापरकर्तानाव लागु करू शकत नाही." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "संयोजना फाईलची व्याख्या वाचु शकत नाही." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "यजमान %1:%2 करिता SFTP जुळवणी उघडली" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "वापरकर्तानाव लागु करू शकत नाही." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"या सर्व्हरसाठीची होस्ट कि सापडत नाही ,पण इतर प्रकारच्या कीज आहेत.\n" +"हल्लेखोर तुमची डीफाँल्ट सर्व्हर कि बदलू शकतो.\n" +"त्याने तुमच्या ग्राहकाची दिशाभूल होऊन त्याला असे वाटु शकते की उपलब्ध नाही.\n" +"कृपया प्रणाली प्रशासकाशी संपर्क करा.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"सर्व्हरसाठीची होस्ट कि %1 बदलली गेली आहे.\n" +"याचा अर्थ असा कि एकतर DNS SPOOFING घडत आहे.\n" +"किंवा होस्टचा IP अँड्रेस व त्याची होस्ट कि दोन्ही एकाच वेळी बदलली गेली आहेत.\n" +" दूरस्थ होस्ट कडून कि साठी पाठवलेली फिंगरप्रिंट :\n" +"%2\n" +"कृपया तुमच्या प्रणाली प्रशासकाशी संपर्क करा.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "इशारा : यजमानची ओळख निश्चित करू शकत नाही." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"%1 या यजमानाची सत्यता पडताळता आली नाही.\n" +"किल्लीची प्रतिमुद्रा आहे : %2\n" +"तुम्हाला पुढे जाण्याची खात्री आहे का?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "अधिप्रमाणन असफल." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "अधिप्रमाणन असफल. सर्व्हरने कोणतीही अधिप्रमाणन पद्धत पाठविली नाही." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "कृपया वापरकर्तानाव व गुप्तशब्द दाखल करा." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "अयोग्य वापरकर्ता किंवा गुप्तशब्द" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP उपप्रणालीस विनंती करण्यास अपयश. SFTP सर्व्हरवर कार्यान्वित केलेले आहे याची खात्री " +"करा." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP सत्र सुरु करू शकत नाही." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "यशस्वीरित्या %1 शी जुळवणी स्थापीत केली" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"या सर्व्हरसाठीची होस्ट कि सापडत नाही ,पण इतर प्रकारच्या कीज आहेत.\n" +"हल्लेखोर तुमची डीफाँल्ट सर्व्हर कि बदलू शकतो.\n" +"त्याने तुमच्या ग्राहकाची दिशाभूल होऊन त्याला असे वाटु शकते की उपलब्ध नाही.\n" +"कृपया प्रणाली प्रशासकाशी संपर्क करा.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"सर्व्हरसाठीची होस्ट कि %1 बदलली गेली आहे.\n" +"याचा अर्थ असा कि एकतर DNS SPOOFING घडत आहे.\n" +"किंवा होस्टचा IP अँड्रेस व त्याची होस्ट कि दोन्ही एकाच वेळी बदलली गेली आहेत.\n" +" दूरस्थ होस्ट कडून कि साठी पाठवलेली फिंगरप्रिंट :\n" +"%2\n" +"कृपया तुमच्या प्रणाली प्रशासकाशी संपर्क करा.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"%1 या यजमानाची सत्यता पडताळता आली नाही.\n" +"किल्लीची प्रतिमुद्रा आहे : %2\n" +"तुम्हाला पुढे जाण्याची खात्री आहे का?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"या साठी परवानगी बदलु शकत नाही\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "%1 ही लिंक वाचू शकत नाही" + +#, fuzzy +#~| msgid "No hostname specified" +#~ msgid "No hostname specified." +#~ msgstr "यजमाननाव निश्चित केले नाही" + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "आंतरीक त्रुटी आढळली. कृपया विनंती करीता पुन्हा प्रयत्न करा." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "कृपया वापरकर्तानाव व कि गुप्तवाक्यरचना प्रविष्ट करा." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "सावधानता: यजमानची ओळख बदलविले." + +#~ msgid "Connection failed." +#~ msgstr "जुळवणी अपयशी." + +#~ msgid "Connection closed by remote host." +#~ msgstr "दूरस्थ यजमान द्वारे जुळवणी बंद केली गेली." + +#, fuzzy +#~| msgid "Unexpected SFTP error: %1" +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "अनपेक्षीत SFTP त्रुटी: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP आवृत्ती %1" + +#~ msgid "Protocol error." +#~ msgstr "शिष्टाचार त्रुटी." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "आंतरीक त्रुटी आढळली. कृपाय पुन्हा प्रयत्न करा." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "फाइल '%1' करीता प्रतिकृत करतेवेळी अपरिचीत त्रुटी आढळली. कृपया पुन्हा प्रयत्न करा." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "दूरस्थ यजमान फाइल पुन्हानामांकन करीता समर्थन पुरवित नाही." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "दूरस्थ हजमान बोधचिन्ह लिंक निर्माण करीता समर्थन पुरवित नाही." + +#~ msgid "Connection closed" +#~ msgstr "जुळवणी बंद केली" + +#~ msgid "End of file." +#~ msgstr "फाइलची समाप्ती." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP आदेश अपरिचीत कारणास्तव अपयशी ठरले." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "SFTP सर्वरला चूकीचे संदेश प्राप्त झाले." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "" +#~ "तुम्ही SFTP सर्वर द्वारे असमर्थीत कार्यपद्धती कार्यान्वीत करण्याचा प्रयत्न केला आहे." + +#~ msgid "Error code: %1" +#~ msgstr "त्रुटी कोड: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "एकाचवेळी उपकार्यक्रम व आदेश निश्चित करू शकत नाही." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "ssh कार्यान्वीत करण्याकरीता पर्याय उपलब्ध नाही." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "ssh क्रिया कार्यान्वीत करण्यास अपयशी ठरले." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "ssh सह संवाद साधतेवेळी त्रुटी आढळली." + +#~ msgid "Please supply a password." +#~ msgstr "कृपया गुप्तशब्द प्रविष्ट करा." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "कृपया SSH व्यक्तिगत कि करीता गुप्तवाक्यरचना प्रविष्ट करा." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "%1 करीता अधिप्रमाणता अपयशी" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "यजमानाची कि \"known hosts\" फाइल अंतर्गत नसल्यामुळे दूरस्थ यजमान '%1' ची ओळख " +#~ "निश्चित केले जाऊ शकले नाही." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " स्वत:, यजमानाची कि \"known hosts\" फाइलशी जोडा किंवा प्रशासकाशी संपर्क करा." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr " स्वत:, यजमानाची कि %1 शी जोडा किंवा प्रशासकाशी संपर्क करा." + +#~ msgid "Host key was rejected." +#~ msgstr "यजमान कि नकारले गेली." + +#~ msgid "Please enter a username and password" +#~ msgstr "कृपया वापरकर्तानाव व गुप्तशभ्द प्रविष्ट करा" diff --git a/po/mr/kio5_smb.po b/po/mr/kio5_smb.po new file mode 100644 index 0000000..f19ead5 --- /dev/null +++ b/po/mr/kio5_smb.po @@ -0,0 +1,189 @@ +# translation of kio_smb.po to marathi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sandeep Shedmake , 2009. +# Chetan Khona , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2013-03-28 15:17+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "कृपया %1 करिता अधिप्रमाणता माहिती दाखल करा" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"कृपया खालील करिता अधिप्रमाणता माहिती:\n" +"Server = %1\n" +"Share = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"अपरिचीत फाईल प्रकार, संचयीका किंवा फाईल परिचीत नाही." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"स्थानिक संजाळ वरील कोणतेही वर्कग्रुप शोधू शकत नाही. हे सहसा कार्यान्वित फायरवॉल द्वारे " +"होऊ शकते." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 करिता साधन अंतर्गत मीडिया आढळले नाही" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 करिता यजमानशी जुळवणी स्थापीत करू शकत नाही" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 करिता कारणीभूत ठरणाऱ्या सर्वशी जुळवणी स्थापीत करतेवेळी त्रुटी आढळली" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "दाखल सर्व्हरवर सहभाग आढळले नाही" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "अयोग्य फाईल वर्तक" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"दिलेल्या नावाने एकमेव सर्व्हर ओळखता आला नाही. खात्री करा की तुमच्या संजाळाच्या संयोजनेत " +"Windows व UNIX नावाकरिता मतभेद नाहीत." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient ने त्रुटीची सूचना दिली आहे, पण समस्या काय आहे त्याची स्पष्टता केलेली नाही. " +"हे कदाचीत दर्शविते की तुमच्या संचाळात मोठी समस्या आहे किंवा libsmbclient मध्येही समस्या " +"असु शकते.\n" +"तुमची आम्हाला मदत करायची असेल तर, कृपया संजाळ इंटरफ़ेस वाचतेवेळीचा tcpdump पुरवा. (त्यात " +"कदाचित खासगी माहिती असु शकते म्हणुन जर तुम्हाला खात्री नसेल तर हे पोष्ट करू नका. " +"विकासकर्त्याने मागितल्यास तुम्ही खासगीत ते पाठवु शकता.)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "stat अंतर्गत अपरिचीत त्रुटी स्थिती आढळली: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient संदर्भ बनविण्यास अपयशी ठरला" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"प्रणालीवर samba संकुल योग्यरित्या प्रतिष्ठापीत केले गेली आहे याची खात्री करा." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"वापरकर्ता \"%3\" चे यजमान \"%2\" वरील सहभाग \"%1\" चे आरोहण अपयशी ठरले.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"mountpoint \"%1\" चे अनारोहण अपयशी ठरले.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient संदर्भ प्रारंभ करण्यास अपयशी ठरला" + +#~ msgid "File does not exist: %1" +#~ msgstr "फाईल अस्तित्वात नाही: %1" diff --git a/po/mr/kio5_thumbnail.po b/po/mr/kio5_thumbnail.po new file mode 100644 index 0000000..a244218 --- /dev/null +++ b/po/mr/kio5_thumbnail.po @@ -0,0 +1,91 @@ +# translation of kio_thumbnail.po to marathi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sandeep Shedmake , 2009. +# Chetan Khona , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-02-22 14:26+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "प्रतिमा स्वयंचलितरित्या फिरवा " + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "MIME प्रकार निश्चित केले नाही." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "अवैध आकार निश्चित केले किंवा केले नाही." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "लघुप्रतिमा संचयीका बनवू शकत नाही" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "प्लगइन निश्चित केले नाही." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 दाखल करू शकत नाही" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 करिता लघुप्रतिमा बनवू शकत नाही" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "लघुप्रतिमा बनविण्यास अपयशी." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "प्रतिमा लिहू शकत नाही." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "सहभागीय स्मृती भाग %1 शी जोडण्यास अपयशी ठरले" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "सहभागीय स्मृती भाग करिता प्रतिमा खूप मोठे आहे" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "" +#~ "संदिप शेडमाके, \n" +#~ "चेतन खोना" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "" +#~ "sandeep.shedmake@gmail.com, \n" +#~ "chetan@kompkin.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/nb/docs/kioslave5/man/index.docbook b/po/nb/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..2d943d2 --- /dev/null +++ b/po/nb/docs/kioslave5/man/index.docbook @@ -0,0 +1,155 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +
        bjornst@skogkatt.homelinux.org
        +
        +
        + +Med kioslaven man kan du lese man-sider installert på systemet ditt. Den er veldig lett å bruke: + + + +man: + +Her ser du avsnittene i manualsidene, trykk for å finne resten. + + + +man:/fopen + +viser deg man-siden for fopen. + + + +man:/fopen(3) + +viser deg man-siden for fopen i del 3. + + + +man:/(3) + +viser innholdsfortegnelsen i del 3. + + + +man:/intro(3) + +viser innledningen til del 3. + + + + +Hvis det er flere enn ën man-side med det navnet du har oppgitt, så får du opp en liste der du kan velge den man-sida du vil se. + +Du kan også bruke snarveien: #fopen, som gjør det samme som over. + +Hvis du ikke finner alle man-sidene kan du justere oppsettsfila /etc/manpath.config (eller en fil med et liknende navn, avhengig av distribusjonen) eller miljøvariablene MANPATH og MANSECT + +Som med alle andre &kde; ioslaver er det mulig å oppgi en &URL;, slik som man:/socket i hvilket som helst &kde;-program. Forsøk det i &kwrite;, så får du opp man-sida i &HTML;-format. + +Kontakt e-postlista:kde-devel@kde.org + +
        diff --git a/po/nb/docs/kioslave5/thumbnail/index.docbook b/po/nb/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..bbe929c --- /dev/null +++ b/po/nb/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +
        bjornst@skogkatt.homelinux.org
        +
        +
        +Kioslaven thumbnail brukes av &kde; for å lage varige miniatyrbilder, transparent over nettverket. + +Kioslaven thumbnail bruker tilleggsprogrammer til å lage selve miniatyrbildene. Du kan slå på visning av disse miniatyrene ved menyvalget Vis Forhåndsvisning i &konqueror; som filbehandler. + +Denne kioslaven er ikke direkte nytig for en bruker, men hvis du er utvikler, kan du bruke den inne i dine egen programmer for å lage forhåndsvisninger av filer. + +Mer informasjon finner du i dokumentasjonen i kildekoden. Den kan du finne i $KDEDIR/include/kio/thumbcreator.h eller i kildemappa kdebase/runtime/kioslave/thumbnail + +
        diff --git a/po/nb/kfileaudiopreview5.po b/po/nb/kfileaudiopreview5.po new file mode 100644 index 0000000..621a91a --- /dev/null +++ b/po/nb/kfileaudiopreview5.po @@ -0,0 +1,36 @@ +# Translation of kfileaudiopreview5 to Norwegian Bokmål +# +# Knut Yrvin , 2003. +# Bjørn Steensrud , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-05-18 10:52+0200\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Spill av &automatisk" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "start avspilling" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pause avspilling" diff --git a/po/nb/kio5_activities.po b/po/nb/kio5_activities.po new file mode 100644 index 0000000..24d992a --- /dev/null +++ b/po/nb/kio5_activities.po @@ -0,0 +1,69 @@ +# Translation of kio5_activities to Norwegian Bokmål +# +# Bjørn Steensrud , 2012, 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-09-09 12:52+0200\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktiviteter" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Laster …" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktivitetsbehandler kjører ikke." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Lenk til gjeldende aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Lenk fra gjeldende aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Lenk til:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Lenk fra:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktivitet" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Gjeldende aktivitet" diff --git a/po/nb/kio5_archive.po b/po/nb/kio5_archive.po new file mode 100644 index 0000000..acda62e --- /dev/null +++ b/po/nb/kio5_archive.po @@ -0,0 +1,40 @@ +# Translation of kio5_archive to Norwegian Bokmål +# +# Bjørn Steensrud , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2007-10-06 13:45+0200\n" +"Last-Translator: MagicPO 0.3 (automated)\n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: MagicPO 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Klarte ikke å åpne fila, antakelig fordi filformatet ikke støttes.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Klarte ikke å åpne denne arkivfila, kanskje fordi det ikke er støtte for " +"formatet.\n" +"%1" diff --git a/po/nb/kio5_bookmarks.po b/po/nb/kio5_bookmarks.po new file mode 100644 index 0000000..beb43a4 --- /dev/null +++ b/po/nb/kio5_bookmarks.po @@ -0,0 +1,64 @@ +# Translation of kio5_bookmarks to Norwegian Bokmål +# +# Bjørn Steensrud , 2008, 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-11-28 21:31+0100\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Rot" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Steder" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Feil forespørsel: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Det er ingen bokmerker å vise ennå." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Fant ikke CSS-fil for kio-bookmarks. Utdata vil se stygge ut.\n" +"Sjekk installasjonen." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mine bokmerker" diff --git a/po/nb/kio5_fish.po b/po/nb/kio5_fish.po new file mode 100644 index 0000000..afbbad8 --- /dev/null +++ b/po/nb/kio5_fish.po @@ -0,0 +1,47 @@ +# Translation of kio5_fish to Norwegian Bokmål +# +# Andreas D. Landmark , 2003. +# Knut Yrvin , 2003. +# Bjørn Steensrud , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-08-24 19:43+0200\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Kobler til …" + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Klargjør protokoll …" + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokal innlogging" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-autentisering" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Frakoblet." diff --git a/po/nb/kio5_info.po b/po/nb/kio5_info.po new file mode 100644 index 0000000..2130eef --- /dev/null +++ b/po/nb/kio5_info.po @@ -0,0 +1,31 @@ +# Translation of kio5_info to Norwegian Bokmål +# +# Bjørn Steensrud , 2009. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-08-10 22:09+0200\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Klarer ikke å finne fila %1 som trengs for å kjøre denne tjenesten. " +"Kontroller programinstallasjonen." diff --git a/po/nb/kio5_man.po b/po/nb/kio5_man.po new file mode 100644 index 0000000..b7c9723 --- /dev/null +++ b/po/nb/kio5_man.po @@ -0,0 +1,188 @@ +# Translation of kio5_man to Norwegian Bokmål +# +# Hans Petter Bieker , 2000. +# Bjørn Steensrud , 2003, 2007, 2008, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2012-08-19 21:44+0200\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Merk: om du leser en man-side på norsk, så kan den være feil eller utdatert. " +"Er du i tvil bør du ta en titt på den engelske versjonen." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Hodefiler" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Hodefiler (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Brukerkommandoer" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Brukerkommandoer (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Systemkall" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subrutiner" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-moduler" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Nettverksfunksjoner" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Enheter" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Filformater" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Spill" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Diverse" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Systemadministrasjon" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kjerne" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokal dokumentasjon" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Ny" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Del %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Lager indeks" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" diff --git a/po/nb/kio5_nfs.po b/po/nb/kio5_nfs.po new file mode 100644 index 0000000..d2390ba --- /dev/null +++ b/po/nb/kio5_nfs.po @@ -0,0 +1,65 @@ +# Translation of kio5_nfs to Norwegian Bokmål +# +# Bjørn Steensrud , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-11-07 18:04+0100\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: NFS-versjonen støttes ikke" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC-feil %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Ingen plass igjen på enheten" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Filsystem med kun lesetilgang" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "For langt filnavn" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Diskkvote overskredet" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS-feil %1 – %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Klarte ikke å montere %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Ukjent mål" diff --git a/po/nb/kio5_recentdocuments.po b/po/nb/kio5_recentdocuments.po new file mode 100644 index 0000000..5c9f4d9 --- /dev/null +++ b/po/nb/kio5_recentdocuments.po @@ -0,0 +1,25 @@ +# Translation of kio5_recentdocuments to Norwegian Bokmål +# +# Bjørn Steensrud , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-15 15:30+0100\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Nylig brukte dokumenter" diff --git a/po/nb/kio5_sftp.po b/po/nb/kio5_sftp.po new file mode 100644 index 0000000..92fcc8e --- /dev/null +++ b/po/nb/kio5_sftp.po @@ -0,0 +1,271 @@ +# Translation of kio5_sftp to Norwegian Bokmål +# +# Knut Yrvin , 2002, 2003, 2005. +# Bjørn Steensrud , 2002, 2008, 2009, 2010, 2012, 2013, 2014. +# Jørgen Grønlund , 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2014-02-23 10:53+0100\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Ukorrekt eller ugyldig passord" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Klarte ikke å tilordne tilbakekall" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Klarte ikke angi ordrikhet for loggen." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Klarte ikke angi brukerdata for loggen." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Klarte ikke å tilordne tilbakekall for loggen." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP login" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Bruk tekstfeltet brukernavn til å svare på dette spørsmålet." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Oppgi passordet ditt." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Nettsted:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Klarte ikke opprette en ny SSH-økt." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Klarte ikke angi et tidsavbrudd." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "" + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Klarte ikke angi kompresjon." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Klarte ikke angi vert." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Klarte ikke angi port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Klarte ikke angi brukernavn." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Kunne ikke tolke oppsettsfila." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Åpner SFTP-tilkobling til vert %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Klarte ikke å opprette hash ut fra tjenerens offentlige nøkkel" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Advarsel: kan ikke verifisere vertens identitet." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Autentisering mislyktes." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Autentisering mislyktes. Tjeneren sendte ikke noen autentiseringsmetoder." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Skriv inn brukernavn og passord." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Ukorrekt brukernavn eller passord" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Klarer ikke forespørre SFTP-subsystemet. Se etter et SFTP er slått på på " +"tjeneren." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Klarte ikke klargjøre SFTP-økta." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Vellykket tilkobling til %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Vertsnøkkelen for denne tjeneren ble ikke funnet, men det fins en annen " +"nøkkeltype.\n" +"En angriper kunne kanskje endre standard tjenernøkkel for å forvirre " +"klienten din til å tro at nøkkelen ikke finnes\n" +"Kontakt din systemadministrator.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Vertsnøkkelen for tjeneren %1 er endret.\n" +"Dette kan bety enten at DNS-JUKSING foregår eller at vertens IP-adresse og " +"vertsnøkkel er endret samtidig.\n" +"Fingeravtrykket for nøkkelen som motparten sendte er:\n" +"%2\n" +"Kontakt din systemadministrator.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Kan ikke finne ut om verten %1 er autentisk.\n" +"Fingeravtrykket er: %2\n" +"Er du sikker på at du vil fortsette å koble til?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Klarte ikke å forandre rettigheter for\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Klarte ikke lese lenke: %1" diff --git a/po/nb/kio5_smb.po b/po/nb/kio5_smb.po new file mode 100644 index 0000000..5d3a698 --- /dev/null +++ b/po/nb/kio5_smb.po @@ -0,0 +1,183 @@ +# Translation of kio5_smb to Norwegian Bokmål +# +# Bjørn Steensrud , 2003. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2005-09-22 08:32+0200\n" +"Last-Translator: MagicPO 0.3 (automated)\n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: MagicPO 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Skriv inn autentiseringsinformasjon for %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Skriv inn autentiseringsinformasjon for:\n" +"Tjener = %1\n" +"Ressurs = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Ukjent filtype, verken mappe eller fil." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Klarer ikke å finne noen arbeidsgrupper i lokalnettet. Dette kan skyldes en " +"brannmur som er slått på." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Ingen media i enheten for %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Klarte ikke kople til vert for %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Feil ved tilkopling til tjener som er ansvarlig for %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Kunne ikke finne ressursen på angitt tjener" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Det navnet som er oppgitt svarte ikke til en entydig tjener. Se etter at " +"nettet er satt opp uten navnekonflikter mellom navn brukt i Windows og i " +"UNIX navnsystem." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient rapporterte en feil, men forklarte ikke hva problemet er. Dette " +"kan bety et alvorlig problem i nettverket ditt – men kan også bety et " +"problem med libsmbclient.\n" +"Hvis du vil hjelpe oss, vennligst skaff en tcpdump av nettverksgrensesnittet " +"mens du forsøker å bla i nettet (merk at dette kan inneholde private data, " +"så ikke oppgi dette på et åpent medium hvis du er usikker – du kan sende det " +"privat til utviklerne hvis de ber om det)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient opprettet ikke kontekst" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Se etter at samba-pakken er riktig installert på systemet ditt." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Bruker «%3» klarte ikke montere ressursen «%1» fra vert «%2».\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Avmontering av «%1» mislyktes.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" diff --git a/po/nb/kio5_thumbnail.po b/po/nb/kio5_thumbnail.po new file mode 100644 index 0000000..f913e97 --- /dev/null +++ b/po/nb/kio5_thumbnail.po @@ -0,0 +1,77 @@ +# Translation of kio5_thumbnail to Norwegian Bokmål +# +# Axel Bojer , 2005. +# Bjørn Steensrud , 2009, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-03-08 09:03+0100\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Roter bildet automatisk" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Ingen MIME-type er angitt." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Ingen, eller feil, størrelse er angitt." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kan ikke lage miniatyrbilder for mappa" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Intet programtillegg er angitt." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Kan ikke laste ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Kan ikke lage miniatyrbilder for %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Klarte ikke å lage et miniatyrbilde." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Klarte ikke å lagre bildet." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Klarte ikke å koble til minnedelen %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Bildet er for stort for den delte minnedelen" diff --git a/po/nds/kfileaudiopreview5.po b/po/nds/kfileaudiopreview5.po new file mode 100644 index 0000000..b4425a3 --- /dev/null +++ b/po/nds/kfileaudiopreview5.po @@ -0,0 +1,43 @@ +# Copyright (C) 2004, 2007 Free Software Foundation, Inc. +# Heiko Evermann , 2004. +# Sönke Dibbern , 2007, 2009. +# Manfred Wiese , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-04-27 01:04+0200\n" +"Last-Translator: Manfred Wiese \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Automaatsch afspelen" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "Afspelen starten" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "Afspelen anhollen" + +#~ msgid "stop playback" +#~ msgstr "Afspelen ophollen" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "Slööp: Afspelen na't Enn wedder anfangen" + +#~ msgid "Media Player" +#~ msgstr "Medienafspeler" diff --git a/po/nds/kio5_activities.po b/po/nds/kio5_activities.po new file mode 100644 index 0000000..ccfb4c0 --- /dev/null +++ b/po/nds/kio5_activities.po @@ -0,0 +1,193 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sönke Dibbern , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-08-21 16:34+0200\n" +"Last-Translator: Sönke Dibbern \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.4\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktiviteten" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Bi to laden..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "De Aktivitetenpleger löppt nich" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Na de aktuelle Aktiviteet towiesen" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Vun de aktuelle Aktiviteet aflösen" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Towiesen na:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Aflösen vun:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktiviteet" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Aktuell Aktiviteet" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sönke Dibbern" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "s_dibbern@web.de" + +#~ msgid "Default" +#~ msgstr "Standard" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Na Aktiviteet \"%1\" wesseln " + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Aktiviteet" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Delete activity" +#~ msgstr "Aktuell Aktiviteet" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create a new activity" +#~ msgstr "Aktuell Aktiviteet" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity settings" +#~ msgstr "Aktiviteet" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity information" +#~ msgstr "Aktiviteet" + +#~ msgid "Privacy" +#~ msgstr "Privaatrebeet" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "för jümmers" + +#~ msgid "Forget the last hour" +#~ msgstr "De verleden Stünn vergeten" + +#~ msgid "Forget the last two hours" +#~ msgstr "De verleden twee Stünnen vergeten" + +#~ msgid "Forget a day" +#~ msgstr "En Dag vergeten" + +#~ msgid "Forget everything" +#~ msgstr "Allens vergeten" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " Maand" +#~ msgstr[1] " Maanden" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "för " + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create activity..." +#~ msgstr "Aktuell Aktiviteet" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity switching" +#~ msgstr "Aktiviteet" + +#~ msgid "Remember opened documents:" +#~ msgstr "Opmaakt Dokmenten wohren:" + +#~ msgid "For a&ll applications" +#~ msgstr "För a&ll Programmen" + +#~ msgid "&Do not remember" +#~ msgstr "&Nich wohren" + +#~ msgid "O&nly for specific applications" +#~ msgstr "&Bloots för wiss Programmen" + +#~ msgid "Keep history" +#~ msgstr "Vörgeschicht wohren" + +#~ msgid "Clear recent history" +#~ msgstr "Vörgeschicht leddig maken" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "All Programmen nich op disse List op Leeglist setten" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity name" +#~ msgstr "Aktiviteet" + +#~ msgid "Available Features" +#~ msgstr "Verföögbor Funkschonen" + +#~ msgid "Plugins" +#~ msgstr "Modulen" + +#~ msgid "Enable activities management" +#~ msgstr "Aktivitetenpleeg anmaken" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "De Aktivitetenpleger löppt nich as he schall." + +#~ msgid "Activities..." +#~ msgstr "Aktiviteten..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" + +#~ msgctxt "Header title for resource data model" +#~ msgid "Resource" +#~ msgstr "Ressource" diff --git a/po/nds/kio5_archive.po b/po/nds/kio5_archive.po new file mode 100644 index 0000000..a3c0ac7 --- /dev/null +++ b/po/nds/kio5_archive.po @@ -0,0 +1,41 @@ +# Translation of kio_archive.po to Low Saxon +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sönke Dibbern , 2007, 2008. +# Manfred Wiese , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-04-29 20:04+0200\n" +"Last-Translator: Manfred Wiese \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"De Datei lett sik nich opmaken, dat Dateiformaat warrt wull nich " +"ünnerstütt.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"De Archivdatei lett sik nich opmaken, villicht warrt dat Formaat nich " +"ünnerstütt.\n" +"%1" diff --git a/po/nds/kio5_bookmarks.po b/po/nds/kio5_bookmarks.po new file mode 100644 index 0000000..bca5ecf --- /dev/null +++ b/po/nds/kio5_bookmarks.po @@ -0,0 +1,160 @@ +# Translation of kio_bookmarks.po to Low Saxon +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sönke Dibbern , 2008. +# Manfred Wiese , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-11-23 03:03+0100\n" +"Last-Translator: Manfred Wiese \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Wörtel" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Steden" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Leeg Anfraag: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Dat gifft noch keen Leestekens, de sik wiesen laat." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"De CSS-Datei för \"kio_bookmarks\" lett sik nich finnen.\n" +"De Utgaav schall so wull leeg utsehn. Prööv bitte Dien Installatschoon." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "De Leestekens" + +#~ msgid "My bookmarks" +#~ msgstr "De Leestekens" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Eerst Schriever" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sönke Dibbern" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "s_dibbern@web.de" + +#~ msgid "Configuration" +#~ msgstr "Instellen" + +#~ msgid "Edit bookmarks" +#~ msgstr "Leestekens bewerken" + +#~ msgid "Help" +#~ msgstr "Hülp" + +#~ msgid "Bookmarks" +#~ msgstr "Leestekens" + +#~ msgid "" +#~ "If this option is unchecked, bookmarks at the root of the hierarchy (not " +#~ "in a folder) are not displayed.\n" +#~ "If checked, they are gathered in a \"root\" folder." +#~ msgstr "" +#~ "Is dit nich anmaakt, warrt Leestekens bi de Wörtel (nich binnen en Orner) " +#~ "nich wiest.\n" +#~ "Is dit anmaakt, warrt se binnen en Ornern \"Wörtel\" tosamenfaat." + +#~ msgid "&Show bookmarks without folder" +#~ msgstr "Leestekens &wiesen, de keen Orner hebbt" + +#~ msgid "" +#~ "Sub-folders are show within their parent by default. If you activate this " +#~ "option, sub-folders are displayed on their own.\n" +#~ "It looks less nice but it may help if you have a very big folder you want " +#~ "to spread in two columns." +#~ msgstr "" +#~ "Standardwies warrt Ünnerornern binnen ehr Böverornern wiest. Maakst Du " +#~ "dit an, warrt Ünnerornern alleen wiest.\n" +#~ "Dat mag wesen, dat süht nich so goot ut, man dat mag Di hölpen, wenn Du " +#~ "en bannig groot Orner hest un em as twee Striepen wiesen wullt." + +#~ msgid "&Flatten bookmarks tree" +#~ msgstr "Leestekenboom &flaag wiesen" + +#~ msgid "" +#~ "Show a box with KDE places (Home, Network, ...). Useful if you use " +#~ "konqueror as a file manager." +#~ msgstr "" +#~ "En Kasten mit KDE-Öörd wiesen (Tohuusorner, Nettwark, ...) Goot, wenn Du " +#~ "Konqueror as Dateipleger bruukst." + +#~ msgid "Show system &places" +#~ msgstr "S&ysteemsteden wiesen" + +#~ msgid "General settings" +#~ msgstr "Allmeen Instellen" + +#~ msgid "" +#~ "Folders are automatically distributed in several columns. The optimal " +#~ "number of columns depends on the width of the konqueror window and the " +#~ "number of bookmarks you have." +#~ msgstr "" +#~ "Ornern warrt automaatsch binnen en Reeg Striepen wiest. Ehr beste Tall " +#~ "hangt vun dat Konqueror-Finster sien Breed af, un vun de Tall vun Dien " +#~ "Leestekens." + +#~ msgid "Number of columns to show" +#~ msgstr "Tall vun sichtbor Striepen" + +#~ msgid "Disable it on slow system to disable background images." +#~ msgstr "" +#~ "Op langsam Systemen utmaken, wenn Du keen Achtergrundbiller bruken wullt" + +#~ msgid "Show folder &backgrounds" +#~ msgstr "Orner-&Achtergrundbiller wiesen" + +#~ msgid "" +#~ "

        My Bookmarks

        This module lets you configure the bookmarks home " +#~ "page.

        The bookmarks home page is accessible at bookmarks:/.

        " +#~ msgstr "" +#~ "

        De Leestekens

        Mit dit Moduul kannst Du Dien Leesteken-" +#~ "Tohuussiet topassen.

        Du kannst ehr mit bookmarks:/ opropen.

        " diff --git a/po/nds/kio5_fish.po b/po/nds/kio5_fish.po new file mode 100644 index 0000000..ea9155e --- /dev/null +++ b/po/nds/kio5_fish.po @@ -0,0 +1,53 @@ +# Translation of kio_fish.po to Low Saxon +# Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# Heiko Evermann , 2004. +# Sönke Dibbern , 2005, 2006, 2007, 2008, 2009, 2014. +# Manfred Wiese , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2014-02-13 23:56+0100\n" +"Last-Translator: Sönke Dibbern \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "An't Tokoppeln..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokoll warrt torechtmaakt..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokaal Anmellen" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-Identiteetprööv" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Afkoppelt." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sönke Dibbern" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "s_dibbern@web.de" diff --git a/po/nds/kio5_info.po b/po/nds/kio5_info.po new file mode 100644 index 0000000..d28b9c9 --- /dev/null +++ b/po/nds/kio5_info.po @@ -0,0 +1,30 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sönke Dibbern , 2009. +# Manfred Wiese , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-03-31 21:55+0200\n" +"Last-Translator: Manfred Wiese \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"De Datei \"%1\" lett sik nich finnen, man se deit för't Utföhren vun dissen " +"Deenst noot. Prööv bitte Dien Software-Installeren." diff --git a/po/nds/kio5_man.po b/po/nds/kio5_man.po new file mode 100644 index 0000000..c48e381 --- /dev/null +++ b/po/nds/kio5_man.po @@ -0,0 +1,229 @@ +# Translation of kio_man.po to Low Saxon +# Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# Heiko Evermann , 2004. +# Sönke Dibbern , 2005, 2006, 2007, 2008, 2014. +# Manfred Wiese , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-02-13 23:57+0100\n" +"Last-Translator: Sönke Dibbern \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"För \"%1\" lett sik keen Man-Siet finnen.

        Prööv bitte, wat Du den " +"Naam vun de Siet richtig schreven hest.
        Kiek bitte ok op Groot- un " +"Lüttschrieven.
        Wenn allens püük utsüht, muttst Du villicht Dien " +"Söökpadd för Man-Sieden ännern. Dat kannst Du över de Ümgeven-Variabel " +"\"MANPATH\" maken, oder över en Instellendatei binnen \"/etc\"." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Fehler vun den Man-Sieden-Kieker vun KDE

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Dat gifft mehr as een passen Man-Siet." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Beacht: Wenn Du en Man-Siet in Dien Spraak leest, kunnen dor Fehlers binnen " +"wesen, oder se kunn al to oolt wesen. Wenn Du nich seker büst, kiek Di ok de " +"engelsche Verschoon an." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Koppdateien" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Koppdateien (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Brukerbefehlen" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Brukerbefehlen (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Systeem-Oprööp" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Ünnerroutinen" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-Modulen" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Nettwark-Funkschonen" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Reedschappen" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Dateiformaten" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Spelen" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Anner Saken" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Systeempleeg" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokaal Dokmentatschoon" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nieg" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Man-Sieden-Index vun UNIX" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Afsnitt %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Index för Afsnitt %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Man-Sieden-Index vun UNIX" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Index warrt opstellt" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Dat Programm \"sgml2roff\" lett sik op Dien Systeem nich finnen. Bitte " +"installeer dat, wenn nödig, un pass den Söökpadd över de Ümgevenvariable " +"\"PATH\" to, ehr Du KDE nieg startst." + +#~ msgid "Open of %1 failed." +#~ msgstr "Opmaken vun \"%1\" fehlslaan" + +#~ msgid "Man output" +#~ msgstr "Man-Utgaav" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sönke Dibbern" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "s_dibbern@web.de" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/nds/kio5_nfs.po b/po/nds/kio5_nfs.po new file mode 100644 index 0000000..dd159f9 --- /dev/null +++ b/po/nds/kio5_nfs.po @@ -0,0 +1,68 @@ +# Translation of kio_nfs.po to Low Saxon +# Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# Heiko Evermann , 2004. +# Sönke Dibbern , 2005, 2006, 2007, 2008. +# Manfred Wiese , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2008-04-29 20:04+0200\n" +"Last-Translator: Manfred Wiese \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Keen Platz mehr na op de Reedschap." + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Bloots leesbor Dateisysteem" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Dateinaam to lang" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Bi Fastplaat-Bruukgrenz anlangt" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "Dat geev en RPC-Fehler." diff --git a/po/nds/kio5_recentdocuments.po b/po/nds/kio5_recentdocuments.po new file mode 100644 index 0000000..166a02e --- /dev/null +++ b/po/nds/kio5_recentdocuments.po @@ -0,0 +1,24 @@ +# translation of kio_recentdocuments.po to Low Saxon +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Manfred Wiese , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-16 05:19+0100\n" +"Last-Translator: Manfred Wiese \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Tolest bruukt Dokmenten" diff --git a/po/nds/kio5_sftp.po b/po/nds/kio5_sftp.po new file mode 100644 index 0000000..9e347f2 --- /dev/null +++ b/po/nds/kio5_sftp.po @@ -0,0 +1,480 @@ +# Translation of kio_sftp.po to Low Saxon +# Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# Heiko Evermann , 2004. +# Sönke Dibbern , 2005, 2006, 2007, 2008, 2009, 2014. +# Manfred Wiese , 2009, 2010, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2014-02-14 00:25+0100\n" +"Last-Translator: Sönke Dibbern \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Passwoort gellt nich oder is leeg" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Torüchrööp laat sik nich towiesen." + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Logbook-Snackhaftigkeit lett sik nich instellen." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Logbook-Brukerdaten laat sik nich fastsetten" + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Logbook-Torüchroop lett sik nich towiesen." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-Anmellen" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Bruuk dat Brukernaam-Feld, wenn Du op disse Fraag antern wullt." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Giff bitte Dien Passwoort in." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Server:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nieg SSH-Törn lett sik nich opstellen." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Tietgrenz lett sik nich instellen." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Port lett sik nich instellen." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Komprimeren lett sik nich instellen." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Reekner lett sik nich instellen." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Port lett sik nich instellen." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Brukernaam lett sik nich instellen." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "De Instellen-Datei lett sik nich inlesen." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "SFTP-Verbinnen na den Reekner %1:%2 warrt opbuut." + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not get server public key type name" +msgstr "Ut den Server sien apen Slötel lett sik keen Pröövsumm opstellen." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Ut den Server sien apen Slötel lett sik keen Pröövsumm opstellen." + +#: kio_sftp.cpp:762 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not create fingerprint for server public key" +msgstr "Ut den Server sien apen Slötel lett sik keen Pröövsumm opstellen." + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"De Reeknerslötel för dissen Server lett sik nich finnen, man dat gifft en " +"Slötel vun en anner Typ.\n" +"En Angreper mag den Standardslötel utwesseln, so dat Dien Client annimmt, " +"dat gifft den Slötel nich.\n" +"Snack dor bitte Dien Systeempleger op an.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"De Reeknerslötel för den Server \"%1\" wöör ännert.\n" +"Dat mag angahn, Een drievt hier DNS-Dörstekeree, oder den Server sien IP-" +"Adress un Reeknerslötel hebbt sik beed op eenmaal ännert.\n" +"De Fingerafdruck för den Slötel, den de Server Di tostüert hett, is:\n" +" %2\n" +"Snack dor bitte Dien Systeempleger op an.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Wohrscho: Identiteet vun den Reekner lett sik nich överpröven." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"De Identiteet vun den Reekner \"%1\" lett sik nich pröven.\n" +"De Fingerafdruck is: %2\n" +"Wullt Du Di redig tokoppeln?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Identiteetprööv fehlslaan." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Identiteetprööv fehlslaan. De Server hett keen Methoden dorför künnig maakt." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Bitte giff Dien Brukernaam un Passwoort in." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Brukernaam oder Passwoort gellt nich" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Dat SFTP-Ünnersysteem lett sik nich ansnacken. Beseker bitte, SFTP is op den " +"Server anmaakt." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "De SFTP-Törn lett sik nich torechtmaken." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Verbinnen na %1 opstellt" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"De Reeknerslötel för dissen Server lett sik nich finnen, man dat gifft en " +"Slötel vun en anner Typ.\n" +"En Angreper mag den Standardslötel utwesseln, so dat Dien Client annimmt, " +"dat gifft den Slötel nich.\n" +"Snack dor bitte Dien Systeempleger op an.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"De Reeknerslötel för den Server \"%1\" wöör ännert.\n" +"Dat mag angahn, Een drievt hier DNS-Dörstekeree, oder den Server sien IP-" +"Adress un Reeknerslötel hebbt sik beed op eenmaal ännert.\n" +"De Fingerafdruck för den Slötel, den de Server Di tostüert hett, is:\n" +" %2\n" +"Snack dor bitte Dien Systeempleger op an.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"De Identiteet vun den Reekner \"%1\" lett sik nich pröven.\n" +"De Fingerafdruck is: %2\n" +"Wullt Du Di redig tokoppeln?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Verlöven laat sik nich ännern för:\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Link lett sik nich lesen: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Keen Reeknernaam angeven." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Dat geev en intern Fehler. Bitte versöök dat nochmaal." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Bitte giff Dien Brukernaam un Slötelsatz in." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Wohrscho: Identiteet vun den Reekner hett sik ännert." + +#~ msgid "Connection failed." +#~ msgstr "Tokoppeln fehlslaan." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Verbinnen vun den annern Reekner afbraken." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "Nich verwacht SFTP-Fehler: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP-Verschoon %1" + +#~ msgid "Protocol error." +#~ msgstr "Protokollfehler" + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Dat geev en intern Fehler. Bitte versöök dat nochmaal" + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Dat geev en nich begäng Fehler bi't Koperen vun de Datei na \"%1\". Bitte " +#~ "nochmaal versöken." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "De anner Reekner ünnerstütt dat Ümnömen vun Dateien nich." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "" +#~ "De anner Reekner ünnerstütt dat Anleggen vun symboolsche Links nich." + +#~ msgid "Connection closed" +#~ msgstr "Afkoppelt" + +#~ msgid "End of file." +#~ msgstr "Dateienn." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP-Befehl fehlslaan, de Grund is nich begäng." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "De SFTP-Server hett en nich gellen Naricht kregen." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Du wullst en Akschoon utföhren, de de SFTP-Server nich ünnerstütt." + +#~ msgid "Error code: %1" +#~ msgstr "Fehlerkode: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "" +#~ "En Ünnersysteem un en Befehl köönt nich to de sülve Tiet angeven warrn." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Keen Optschonen för dat Utföhren vun SSH angeven." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "SSH-Perzess lett sik nich utföhren." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Fehler bi de Kommunikatschoon mit SSH." + +#~ msgid "Please supply a password." +#~ msgstr "Bitte en Passwoort angeven" + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Bitte den Slötelsatz för Dien privaten SSH-Slötel angeven" + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Identiteetprööv för %1 fehlslaan" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "De Identiteet vun den Reekner \"%1\" lett sik nich överpröven, wiel de " +#~ "Slötel vun den Reekner nich binnen de Datei mit begäng Reekners steiht." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Föög den Slötel vun Hand de Datei mit begäng Reekners to oder snack mit " +#~ "Dien Systeempleger." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Föög den Slötel vun Hand de Datei %1 to oder snack mit Dien " +#~ "Systeempleger." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "De Identiteet vun den Reekner \"%1\" lett sik nich överpröven. De " +#~ "Fingerafdruck vun den Reekner sien Slötel is:\n" +#~ "%2\n" +#~ "Du schullst den Fingerafdruck vun den Systeempleger vun den Reekner " +#~ "beglöven laten, ehr Du Di tokoppelst.\n" +#~ "\n" +#~ "Wullt Du den Slötel liekers annehmen un Di tokoppeln?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "Wohrscho: De Identiteet vun den Reekner \"%1\" hett sik ännert!\n" +#~ "\n" +#~ "Dat mag wesen, dat Een versöcht, de Verbinnen to beluern, oder de " +#~ "Systeempleger hett bloots den Slötel vun den Reekner utwesselt. In beed " +#~ "Fäll schullst Du den Slötel sien Fingerafdruck vun den Systeempleger vun " +#~ "den Reekner beglöven laten. De Fingerafdruck is:\n" +#~ "%2\n" +#~ "Föög den richtigen Reekner-Slötel \"%3\" to, wenn Du disse Mellen " +#~ "looswarrn wullt." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "Wohrscho: De Identiteet vun den Reekner \"%1\" hett sik ännert!\n" +#~ "\n" +#~ "Dat mag wesen, dat Een versöcht, de Verbinnen to beluern, oder de " +#~ "Systeempleger hett bloots den Slötel vun den Reekner utwesselt. In beed " +#~ "Fäll schullst Du den Slötel sien Fingerafdruck vun den Systeempleger vun " +#~ "den Reekner beglöven laten, ehr Du Di tokoppelst. De Fingerafdruck is:\n" +#~ "%2\n" +#~ "Wullt Du den niegen Slötel liekers annehmen un Di tokoppeln?" + +#~ msgid "Host key was rejected." +#~ msgstr "Reekner-Slötel wöör afwiest." + +#~ msgid "Please enter a username and password" +#~ msgstr "Bitte giff en Brukernaam un en Passwoort in" + +#~ msgid "File does not exist." +#~ msgstr "Gifft Datei nich." + +#~ msgid "Access is denied." +#~ msgstr "Togriepen torüchwiest." diff --git a/po/nds/kio5_smb.po b/po/nds/kio5_smb.po new file mode 100644 index 0000000..2aefb86 --- /dev/null +++ b/po/nds/kio5_smb.po @@ -0,0 +1,195 @@ +# Translation of kio_smb.po to Low Saxon +# Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# Heiko Evermann , 2004. +# Sönke Dibbern , 2005, 2006, 2007, 2008. +# Manfred Wiese , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2008-04-29 20:04+0200\n" +"Last-Translator: Manfred Wiese \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Bitte giff de Identiteetprööv-Angaven för %1 in." + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Bitte giff de Identiteetprööv-Angaven in för:\n" +"Server = %1\n" +"Freegaav = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Dateityp nich begäng, is keen Orner oder Datei." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Dor lett sik keen Arbeitkoppel binnen Dien Nettwark finnen. De Oorsaak " +"dorför kunn en aktiv Nettdiek wesen." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Keen Medium in Reedschap för %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Keen Verbinnen na den Reekner för %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Fehler bi't Tokoppeln na den Reekner, de %1 passt." + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Freegaav lett sik op den angeven Server nich finnen" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Dateideskriptor nich bruukbor" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"De angeven Naam lett sik nich to en enkelten Server oplösen. Prööv bitte, " +"wat dat Nettwark ahn all Naamkonflikten twischen Windows- un Unix-" +"Naamoplösen inricht is." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"De Perzess \"libsmbclient\" meldt en Fehler, man gifft dat Problem nich an. " +"Dat kann en echt Problem mit Dien Nettwark bedüden - oder ok en Problem mit " +"libsmbclient.\n" +"Wenn Du us hölpen wullt, maak mit \"tcpdump\" en Log för de Nettwark-" +"Koppelsteed, wielt Du versöchst, in't Nettwark to stövern. (Beacht bitte, " +"dat dit Log private Daten bargen kunn - wenn Du dat nich nau weetst, " +"schullst Du dat nich apen maken. Wenn dor de Schrieverslüüd na fraagt, " +"kannst Du se dat jümmers noch privaat toschicken.)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Nich begäng Fehlerbedingen in stat: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "\"libsmbclient\" sloog bi't Opstellen vun den Kontext fehl" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Prööv, wat dat Samba-Paket richtig op Dien Systeem installeert is." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Inhangen vun Freegaav \"%1\" op Reekner \"%2\" dör Bruker \"%3\" fehlslaan.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Afhangen ut \"%1\" fehlslaan.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "\"libsmbclient\" sloog bi't Torechtmaken vun den Kontext fehl" + +#~ msgid "File does not exist: %1" +#~ msgstr "Dat gifft keen Datei \"%1\"" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "\"libsmbclient\" sloog bi't Torechtmaken fehl" diff --git a/po/nds/kio5_thumbnail.po b/po/nds/kio5_thumbnail.po new file mode 100644 index 0000000..a58f1f5 --- /dev/null +++ b/po/nds/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# Translation of kio_thumbnail.po to Low Saxon +# +# Sönke Dibbern , 2005, 2006, 2007, 2008. +# Manfred Wiese , 2009, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-04-05 07:47+0200\n" +"Last-Translator: Manfred Wiese \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Bild automaatsch dreihen" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Keen MIME-Typ angeven." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Keen oder nich gellen Grött angeven." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Vöransicht för Orner lett sik nich opstellen" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Keen Plugin angeven." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 lett sik nich laden" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Vöransicht för \"%1\" lett sik nich opstellen" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Opstellen vun Vöransicht fehlslaan" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Bild lett sik nich schrieven." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Anfögen an Afsnitt %1 vun den deelten Spieker fehlslaan" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Bild is to groot för den Afsnitt vun den deelten Spieker" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sönke Dibbern" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "s_dibbern@web.de" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/nl/docs/kioslave5/bookmarks/index.docbook b/po/nl/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..d5f2dea --- /dev/null +++ b/po/nl/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,47 @@ + + + +]> + +
        +bladwijzers + + +XavierVello xavier.vello@gmail.com +&Kristof.Bal; + + +2008-08-31 +0.2 + + + +Deze KIO toont uw bladwijzers (ook favorieten genoemd) als een mooie en functionele &HTML;-pagina. U kan hem bereiken door bookmarks:/ in te voeren in de locatiebalk van Konqueror. + +De inhoud en het uiterlijk van de pagina is instelbaar. Ga met Konqueror gewoon naar bookmarks:/config om de configuratiedialoog te openen. + +
        + diff --git a/po/nl/docs/kioslave5/bzip2/index.docbook b/po/nl/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..d45cece --- /dev/null +++ b/po/nl/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,50 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +&Otto.Bruggeman;&Rinse.Devries; + + + +bzip2 is een comprimeerprogramma. + +De io-slave bzip2 is niet direct bruikbaar. Deze is bedoeld om als een filter te geburiken. De io-slave tar kan bijvoorbeeld een bestand door deze io-slave filteren om de inhoud van een tar.bz2-archief direct in een &konqueror;-venster te tonen. + +Als u in &konqueror; op een bestand klikt met de extensie bz2, dan zal de bzip2 io-slave worden gebruikt om het uit te pakken en als een normaal ongecomprimeerd bestand te tonen. + +Als u een ontwikelaar bent en u wilt graag het bzip2-filter gebruiken, dan kunt u informatie over het gebruik van io-slaves vinden op http://techbase.kde.org + +Zie ook de man-pagina: bzip2. + +bzip is de voorloper van bzip2. Het wordt nog weinig gebruikt, en is vervangen door bzip2 die veel betere compressie oplevert. + +
        diff --git a/po/nl/docs/kioslave5/fish/index.docbook b/po/nl/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..8698c4c --- /dev/null +++ b/po/nl/docs/kioslave5/fish/index.docbook @@ -0,0 +1,151 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +&Otto.Bruggeman;&Rinse.Devries;&Freek.de.Kruijf; + + +2010-10-27 +&kde; 4.5 + + + +Stelt u in staat om toegang te krijgen tot bestanden op een andere computer met behulp van het Secure SHell (SSH) protocol. Op de externe computer moet de SSH-daemon draaien. Verder maakt de rest van het protocol gebruik van de standaard commandoregelprogramma's zoals hieronder beschreven. + +U gebruikt de kioslave fish als volgt: fish://hostnaam of fish://gebruikersnaam@hostnaam. + +U moet dubbele slashes gebruiken. + +U kunt de gebruikersnaam (en het @-teken) achterwege laten als u dezelfde gebruikersnaam hebt op beide computers. + +U kunt een wachtwoord als volgt opgeven: fish://gebruikersnaam:wachtwoord@hostnaam, maar dit is niet strikt noodzakelijk. U zult vanzelf om een wachtwoord gevraagd worden. + +Als u de SSH-daemon op een niet-standaard poort draait, dan kunt u die poort opgeven met behulp van de normale &URL;-syntaxis zoals hieronder: fish://hostnaam:poortnummer. + +FISH zou moeten werken met elke POSIX compatibele, op &UNIX; gebaseerde computer. Het maakt gebruik van de shellcommando's cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed, en wc. FISH start een /bin/sh-shell als zijn shell en verwacht dat dit een bourne shell is (of op zijn minst een Bourne-compatibele shell zoals bash). Als de commando's sed en file als ook het bestand /etc/apache/magic met &MIME;-type handtekeningen aanwezig zijn, dan zullen die worden gebruikt voor het bepalen van de &MIME;Bestandstypen. + +Als perl aanwezig is op de andere computer dan zal dit in plaats van de hiervoor genoemde commando's worden gebruikt. In dat geval zijn alleen env en /bin/sh nodig. Het gebruik van perl heeft als bijkomend voordeel dat het sneller is. + +Fish zou mogelijk ook kunnen werken op &Windows;-computers als hulpprogramma's zoals Cygwin zijn geïnstalleerd. Alle bovenstaande commando's dienen dan in de omgevingsvariabele PATH van het systeem te staan en de oorspronkelijke shell dient in staat te zijn om het commando echo FISH:;/bin/sh correct te kunnen uitvoeren. + +
        diff --git a/po/nl/docs/kioslave5/gzip/index.docbook b/po/nl/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..3b04c5e --- /dev/null +++ b/po/nl/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,45 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +&Otto.Bruggeman;&Rinse.Devries; + + + +gzip is een comprimeerprogramma. + +De io-slave gzip is niet direct bruikbaar. Deze is bedoeld om als een filter te geburiken. De io-slave tar kan bijvoorbeeld een bestand door deze io-slave filteren om de inhoud van een tar.gz-archief direct in een &konqueror;-venster te tonen. + +Als u in &konqueror; op een bestand klikt met de extensie gz, dan zal de gzip io-slave worden gebruikt om het uit te pakken en als een normaal ongecomprimeerd bestand te tonen. + +Als u een ontwikkelaar bent en graag het gzip-filter zou willen gebruiken, dan kunt u informatie over het gebruik van io-slaves vinden op http://techbase.kde.org. + +Zie ook de man-pagina: gzip. + +
        diff --git a/po/nl/docs/kioslave5/info/index.docbook b/po/nl/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..10fd5bc --- /dev/null +++ b/po/nl/docs/kioslave5/info/index.docbook @@ -0,0 +1,58 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +&Otto.Bruggeman;&Rinse.Devries; + + + +Info is een type documentatie. De documenten zijn geschreven in een formaat genaamd texinfo en kunnen worden gelezen met het info programma. + +De io-slave info geeft u de mogelijkheid om de info-pagina's die op uw systeem zijn geïnstalleerd vanuit &konqueror; in te zien. U kunt het heel gemakkelijk gebruiken: + +info:gcc + +Dit opent de hoofdpagina van de info-documentatie voor de &gcc;-compiler. + +Info is een &GNU;-vervanging voor man, maar is niet erg ver verspreid buiten de &GNU;-software. + +U kunt heel erg gemakkelijk de op uw systeem geïnstalleerde info-documentatie doorbladeren vanuit &khelpcenter;, of u kunt de info io-slave direct vanuit &konqueror; of de mini-cli gebruiken. + +
        diff --git a/po/nl/docs/kioslave5/man/index.docbook b/po/nl/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..dce57ac --- /dev/null +++ b/po/nl/docs/kioslave5/man/index.docbook @@ -0,0 +1,141 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +&Otto.Bruggeman;&Rinse.Devries; + + + +Met de io-slave man ikunt u de man-documentatie die op uw systeem is geïnstalleerd lezen. Het is zeer eenvoudig in gebruik: + + + +man: + +Opent de secties van de man-pagina's, klik om de rest te vinden. + + + +man:/fopen + +Opent de man-pagina van fopen. + + + +man:fopen(3) + +Opent de man-pagina van fopen in sectie 3. + + + +man:(3) + +Opent de index van sectie 3. + + + +man:intro(3) + +Opent de inleiding van sectie 3. + + + + +Als er meerdere man-pagina's beschikbaar zijn voor de door u ingevoerde naam, dan wordt er een lijst geopend waarin u de man-pagina die u wilt bekijken kunt kiezen. + +Er is ook een snelkoppeling: #fopen, welke hetzelfde effect heeft als bovenstaand URL-adres. + +Als u niet al uw man-pagina's kunt vinden, pas dan het configuratiebestand /etc/manpath.config aan (of een bestand met een vergelijkbare naam, afhankelijk van uw distributie), of wijzig de omgevingsvariabelen MANPATH en MANSECT. + +Zoals met elke andere &kde; io-slave is het mogelijk om een &URL;-adres in te voeren, zoals man:/socket, in elk &kde;-programma. Probeer dit eens in &kwrite; en u zult de man-pagina in &HTML;-opmaak zien. + +Contact-mailinglijst: kde-devel@kde.org + +
        diff --git a/po/nl/docs/kioslave5/network/index.docbook b/po/nl/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..e01fb8e --- /dev/null +++ b/po/nl/docs/kioslave5/network/index.docbook @@ -0,0 +1,79 @@ + + + +]> + +
        + +netwerk + + + + Friedrich W. H.Kossebau kossebau@kde.org + &Freek.de.Kruijf; + + + 2016-12-11 + Applications 16.12 + + + + +De netwerk-ioslave stelt de gebruiker is staat om door de apparaten te bladeren die zijn verbonden met het locale netwerk en de services die er op draaien. Het is ook mogelijk programma's te starten voor services waarvan het type bekend is. + +Om alle gevonden apparaten te zien, voer network:// in. + +network://hostnaam_van_apparaat geeft een lijst met de gevonden services die draaien op een apparaat. + +Het selecteren van een service wijst naar een url die overeenkomt met de service, gegeven dat er iets geschikt is, bijv. ssh://hostnaam_van_apparaat:poort/ voor een SSH-service. Elk bekend servicetype heeft een gekoppeld mimetype, zodat een gebruiker er programma's aan kan koppelen voor de resulterende url's. Dit wordt gedaan met de controlemodule Bestandsassociaties in &systemsettings;. De mimetypes van de services hebben nu allen de naam inode/vnd.kde.service.*. + + + De netwerk-kioslave vindt en toont nu alleen apparaten en services die zich actief melden door het "service discovery framework" DNS-SD te gebruiken. + + +
        + diff --git a/po/nl/docs/kioslave5/nfs/index.docbook b/po/nl/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..6ce7403 --- /dev/null +++ b/po/nl/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +&Otto.Bruggeman;&Rinse.Devries; + + +Sun's NFS- protocol biedt u transparante toegang tot bestanden op andere computers via gedeelde bestandssystemen over netwerken. Het NFS-protocol is ontwikkeld om computer-, besturingssyteem-, netwerkachitectuur- en transportprotocol-onafhankelijk te werken. Deze onafhankelijkheid wordt bereikt door het gebruik van RPC-primitieven (Remote Procedure Call), gebaseerd op een eXterne Data Representatie (XDR). + +Het ondersteunende MOUNT-protocol verwerkt de besturingssysteem-specifieke functies die clienten de mogelijkheid geven om niet-lokale mappenstructuren naar een plek in het lokale bestandssysteem toe te leiden. Het mount-proces biedt tevens de server de mogelijkheid om toegangsprivileges te bieden aan een beperkte set clients via exportbeheer. + +De Lock Manager biedt ondersteuning voor het vergrendelen van bestanden wanneer deze in de NFS-omgeving worden gebruikt. Het NLM- protocol (Network Lock Manager) isoleert de inherente toestandaspecten van het vergrendelen van bestanden in een apart protocol. + +Bron: http://www.networksorcery.com/enp/protocol/nfs.htm + +Zie ook de man-pagina: nfs. +
        diff --git a/po/nl/docs/kioslave5/recentdocuments/index.docbook b/po/nl/docs/kioslave5/recentdocuments/index.docbook new file mode 100644 index 0000000..c243d9a --- /dev/null +++ b/po/nl/docs/kioslave5/recentdocuments/index.docbook @@ -0,0 +1,60 @@ + + + +]> + +
        +Recente Documenten + + + + + &Burkhard.Lueck;&Burkhard.Lueck.mail; +&Freek.de.Kruijf; + + +2016-12-01 +Applications 16.12 + + + +Een kioslave om recente documenten of &URL;'s in de bestandsdialoog weer te geven, in de bestandsbeheerder, in &krunner; en in het menu Toepassingen. + +U kunt de kioslave als volgt gebruiken: + +Typ recentdocuments:/ in de locatiebalk van &dolphin;, &konqueror; en de bestandsdialoog om een lijst met de recent geopende documenten of &URL;'s te krijgen. + +U kunt een item aan de zijbalk Plaatsen toevoegen: klik rechts op de zijbalk, kies Item toevoegen, voer recentdocuments:// in in het veld Locatie en sla het op. Het zou nu beschikbaar moeten zijn in alle bestandsdialogen tenzij u in het item activeert om het alleen weer te geven in deze toepassing. + +In de module &systemsettings; Plasmazoeken schakel de zoekplug-in in Recente documenten om deze kioslave in &krunner; te gebruiken. + +In het Menu Toepassingen voegt u een menu-item toe met recente documenten aan de top van het menu door Recente documenten weergeven op de instellingenpagina. + +
        diff --git a/po/nl/docs/kioslave5/sftp/index.docbook b/po/nl/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..74dd89a --- /dev/null +++ b/po/nl/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,35 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +&Otto.Bruggeman;&Rinse.Devries; + + +SFTP is een Secure File Transfer Protocol. sftp is een interactief programma, voor het overdragen van bestanden, zoals FTP. Verschil met FTP is dat het alle operaties uitvoert over een versleutelde ssh-verbinding. Het kan gebruik maken van de mogelijkheden van ssh, inclusief publieke-sleutel-authenticatie en compressie. + +Zie ook de man-pagina: sftp. + +
        diff --git a/po/nl/docs/kioslave5/smb/index.docbook b/po/nl/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..1639b5c --- /dev/null +++ b/po/nl/docs/kioslave5/smb/index.docbook @@ -0,0 +1,88 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; +&Otto.Bruggeman;&Rinse.Devries; + +2016-12-11 +Applications 16.12 + +De io-slave smb stelt u in staat om de gedeelde bronnen van een &Windows;- of Samba-netwerk te verkennen. + +Om de werkgroepen te zien voert u smb:/ in. +smb:/de_werkgroep zal de hostcomputers in deze werkgroep tonen. +Om de de gedeelde netwerkbronnen van een host te zien, voer smb://de_host in. Om een gedeelde netwerkbron direct te bekijken, voer smb://de_host/de_gedeelde_bron in. +Om direct toegang te krijgen tot een gedeelde bron voert u smb://de_host/de_gedeelde_bron of smb://de_werkgroep/de_gedeelde_bron in. + +Om met de smb-ioslave te kunnen werken, dient libsmbclient geïnstalleerd te zijn. + +U kunt uw standaard gebruikersnaam en wachtwoord instellen in de categorie van &systemsettings;, Netwerk in VerbindingenWindows netwerken. Dit is vooral nuttig als u een lid bent van een &Windows; NT-domein. U kunt daar ook uw werkgroepnaam instellen. Dit is overigens in de meeste gevallen niet nodig. De kioslave zal om uw gebruikersnaam en wachtwoord vragen als er geen standaard is ingesteld. + +
        + diff --git a/po/nl/docs/kioslave5/tar/index.docbook b/po/nl/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..f597a31 --- /dev/null +++ b/po/nl/docs/kioslave5/tar/index.docbook @@ -0,0 +1,27 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +&Otto.Bruggeman;&Rinse.Devries; + + +Een archiveerprogramma ontworpen om bestanden op te slaan en weer terug te halen vanuit een archiefbestand dat bekend staat als tar-bestand. Een tar-bestand kan op een tape drive worden gemaakt, maar het wordt ook veel gebruikt als een normaal bestand dat is weggeschreven op uw harde schijf. + +Zie ook de man-pagina: tar. + +
        diff --git a/po/nl/docs/kioslave5/thumbnail/index.docbook b/po/nl/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..c74d9a0 --- /dev/null +++ b/po/nl/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,43 @@ + + + +]> + +
        +miniatuur + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +&Otto.Bruggeman;&Rinse.Devries; + +2016-12-11 +Applications 16.12 + +De io-slave thumbnail wordt door &kde; gebruikt voor de netwerktransparante en persistente generatie van voorbeeldpictogrammen. + +Deze io-slave maakt gebruik van plugins om de eigenlijke voorbeeldpictogrammen te genereren. U kunt het weergeven van voorbeeldpictogrammen activeren vanuit het submenu Beeld Voorbeeld dat beschikbaar is in &dolphin; of &konqueror; in modus bestandsbeheerder. + +De io-slave thumbnail is niet direct geschikt voor de gebruiker, maar als u een ontwikkelaar bent kunt u het gebruiken in uw eigen toepassing om voorbeeldpictogrammen van verschillende typen bestanden te maken. + +Zie de documentatie in de broncode voor meer informatie. U vindt deze in de broncodemap thumbnail + +
        diff --git a/po/nl/docs/kioslave5/xz/index.docbook b/po/nl/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..cdf26e2 --- /dev/null +++ b/po/nl/docs/kioslave5/xz/index.docbook @@ -0,0 +1,51 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +&Freek.de.Kruijf; + + + +Xz is een compressieprogramma + +De kioslave xz is niet direct bruikbaar. Deze is bedoeld om als een filter te gebruiken. De kioslave tar kan bijvoorbeeld een bestand door de kioslave xz filteren om de inhoud van een tar.lzma- of tar.xz-archief direct in een &konqueror;-venster te tonen. + +Als u klikt op een bestand dat gecomprimeerd is met .lzma of tar.xz in &konqueror;, dan zal deze kioslave gebruikt worden om het uit te pakken en te tonen als een normaal (niet gecomprimeerd) bestand. + +Als u een ontwikkelaar bent en u wilt graag het xz-filter gebruiken, dan kunt u informatie over het gebruik van kioslaves vinden op http://techbase.kde.org + +Zie de handleiding: xz. + +
        diff --git a/po/nl/kfileaudiopreview5.po b/po/nl/kfileaudiopreview5.po new file mode 100644 index 0000000..e00be7b --- /dev/null +++ b/po/nl/kfileaudiopreview5.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-20 13:14+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Automatisch afspelen" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "afspelen starten" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "afspelen pauzeren" diff --git a/po/nl/kio5_activities.po b/po/nl/kio5_activities.po new file mode 100644 index 0000000..e153af6 --- /dev/null +++ b/po/nl/kio5_activities.po @@ -0,0 +1,82 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-03-09 10:20+0100\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Activiteiten" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Bezig met laden..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "De activiteitenbeheerder is niet actief" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Aankoppelen aan de huidige activiteit" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Afkoppelen van de huidige activiteit" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Aankoppelen aan:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Afkoppelen van:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Activiteit" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Huidige activiteit" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Freek de Kruijf" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "freekdekruijf@kde.nl" + +#~ msgid "Default" +#~ msgstr "Standaard" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Omschakelen naar activiteit \"%1\"" diff --git a/po/nl/kio5_archive.po b/po/nl/kio5_archive.po new file mode 100644 index 0000000..af2b2b7 --- /dev/null +++ b/po/nl/kio5_archive.po @@ -0,0 +1,39 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-07-20 13:14+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Kon het bestand niet openen, mogelijk vanwege een niet-ondersteund " +"bestandsformaat.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Het archiefbestand kon niet worden geopend, mogelijk omdat het formaat niet " +"wordt ondersteund.\n" +"%1" diff --git a/po/nl/kio5_bookmarks.po b/po/nl/kio5_bookmarks.po new file mode 100644 index 0000000..0232144 --- /dev/null +++ b/po/nl/kio5_bookmarks.po @@ -0,0 +1,63 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-10-31 19:02+0100\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.2\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Hoofdmap" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Plaatsen" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Kon configuratie voor bladwijzers niet vinden" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Kon bewerker van bladwijzers niet vinden" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Onjuist verzoek: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Er zijn nog geen bladwijzers om te weergeven." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Het CSS-bestand kio_bookmarks is niet gevonden. De uitvoer zal er lelijk uit " +"zien.\n" +"Controleer uw installatie." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mijn bladwijzers" diff --git a/po/nl/kio5_fish.po b/po/nl/kio5_fish.po new file mode 100644 index 0000000..e279857 --- /dev/null +++ b/po/nl/kio5_fish.po @@ -0,0 +1,43 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2015-07-20 13:15+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Verbinden..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Bezig met initialiseren van protocol..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokaal aanmelden" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-authenticatie" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Niet verbonden." diff --git a/po/nl/kio5_info.po b/po/nl/kio5_info.po new file mode 100644 index 0000000..ee9722f --- /dev/null +++ b/po/nl/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2015-07-20 13:15+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Kon het bestand %1 niet vinden, dat nodig is voor deze dienst. Controleer uw " +"installatie." diff --git a/po/nl/kio5_man.po b/po/nl/kio5_man.po new file mode 100644 index 0000000..e71ddb4 --- /dev/null +++ b/po/nl/kio5_man.po @@ -0,0 +1,217 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-14 10:42+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.1\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Geen man-pagina gevonden die overeenkomt met %1.Controleer of u de naam van de pagina goed hebt geschreven en let er " +"dat namen van man-pagina's onderscheid maken tussen hoofd-/kleine lettersAls de naam juist is, dan kan het nodig zijn het zoekpad voor de man-" +"pagina's uit te breiden, ofwel met de omgevingsvariabele MANPATH of een configuratiebestand in de map /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"De man-pagina %1 is gevonden, maar deze kon niet worden " +"gelezen of ontleed." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"De gespecificeerde man-pagina verwijst naar een andere pagina %1,maar de pagina %2 waarnaar werd verwezen " +"is niet gevonden." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Fout in man-paginaviewer" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Er is meer dan één man-pagina die overeenkomt:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Meerdere man-pagina's" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Opmerking: als u een man-pagina in uw eigen taal leest, houd er dan rekening " +"mee dat deze fouten kan bevatten of achterhaald is. In geval van twijfel: " +"bekijk de Engelstalige versie." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Header-bestanden" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Header-bestanden (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Gebruikerscommando's" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Gebruikerscommando's (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Systeemaanroepen" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subroutines" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-modules" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Netwerkfuncties" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Apparaten" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Bestandsformaten" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Spellen" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversen" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Systeemadministratie" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokale documentatie" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nieuw" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Index van hoofdman-pagina" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sectie %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index voor sectie %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Index van man-pagina" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Bezig met genereren van index" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Kon het programma sgml2groff niet vinden op uw systeem. " +"Installeer het indien nodig en zorg er voor dat het gevonden kan worden met " +"de omgevingsvariabele PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "Het openen van %1 is mislukt." + +#~ msgid "Man output" +#~ msgstr "Man-uitvoer" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Freek de Kruijf - t/m 2019" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "freekdekruijf@kde.nl" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/nl/kio5_mtp.po b/po/nl/kio5_mtp.po new file mode 100644 index 0000000..2cdfc9e --- /dev/null +++ b/po/nl/kio5_mtp.po @@ -0,0 +1,35 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015, 2016, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-16 10:14+0100\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 18.12.1\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Geen opslagmedium gevonden. Ga na dat uw apparaat niet is vergrendeld en MTP " +"heeft ingeschakeld in de instellingen van zijn USB-verbinding." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Kan bestanden op het apparaat zelf niet kopiëren/verplaatsen" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "Geen opslag gevonden. Misschien moet u uw apparaat ontgrendelen?" diff --git a/po/nl/kio5_network.po b/po/nl/kio5_network.po new file mode 100644 index 0000000..5b50ae9 --- /dev/null +++ b/po/nl/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Freek de Kruijf , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-24 21:30+0100\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.08.3\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Netwerk" diff --git a/po/nl/kio5_nfs.po b/po/nl/kio5_nfs.po new file mode 100644 index 0000000..cfe5b55 --- /dev/null +++ b/po/nl/kio5_nfs.po @@ -0,0 +1,63 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-20 13:16+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Niet-ondersteunde NFS-versie" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC-fout %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Geen ruimte meer beschikbaar op het station." + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Alleen-lezen systeem" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Bestandsnaam te lang" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Schijfquota overschreden" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS-fout %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Aankoppelen van %1 is mislukt" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Onbekend doel" diff --git a/po/nl/kio5_recentdocuments.po b/po/nl/kio5_recentdocuments.po new file mode 100644 index 0000000..90b2888 --- /dev/null +++ b/po/nl/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-20 13:17+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Recente documenten" diff --git a/po/nl/kio5_sftp.po b/po/nl/kio5_sftp.po new file mode 100644 index 0000000..4ad0331 --- /dev/null +++ b/po/nl/kio5_sftp.po @@ -0,0 +1,285 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015, 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-11-12 11:33+0100\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Onjuiste of ongeldige wachtwoordzin" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Terugbellen kon niet worden toegekend" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Hoeveelheid logging instellen lukt niet." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Gebruikergegevens loggen instellen lukt niet." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Instelling van loggen van terugbellen lukt niet." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-login" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Het invoerveld voor de gebruikersnaam gebruiken om deze vraag te " +"beantwoorden." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Voer uw wachtwoord in." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Site:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Kon geen nieuwe SSH-sessie aanmaken." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Tijdslimiet instellen lukt niet." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Kon Nagle's algoritme niet uitschakelen." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Compressie instellen lukt niet." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Host instellen lukt niet." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Poort instellen lukt niet." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Gebruikersnaam instellen lukt niet." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Configuratiebestand ontleden lukt niet." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Bezig met maken van SFTP-verbinding naar host %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Kon typenaam van de publieke sleutel van de server niet ophalen" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Kon geen hash maken van de publieke sleutel van de server" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Kon geen vingerafdruk maken van de publieke sleutel van de server" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Een %1 host-sleutel voor deze server is niet gevonden maar er bestaat een " +"ander type sleutel.\n" +"Een aanvaller zou de standaard serversleutel kunnen wijzigen om uw client te " +"laten denken dat deze niet bestaat.\n" +"Gaarne contact opnemen met uw systeembeheerder.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"De host-sleutel voor de server %1 is gewijzigd.\n" +"Dit zou ofwel DNS SPOOFING kunnen betekenen of het IP-adres van de host en " +"zijn host-sleutel zijn op hetzelfde tijdstip gewijzigd.\n" +"De vingerafdruk van de door de host op afstand verzonden %2 sleutel is:\n" +" SHA256:%3\n" +"Gaarne contact opnemen met uw systeembeheerder.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Waarschuwing: de identiteit van de host kan niet worden geverifieerd." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"De authenticiteit van host %1 kan niet worden vastgesteld.\n" +"De vingerafdruk van de %2 sleutel is: %3\n" +"Bent u er zeker van dat u wil doorgaan met verbinden?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Authenticatie is mislukt." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Authenticatie is mislukt. De server heeft geen authenticatiemethoden gezonden" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Voer uw gebruikersnaam en wachtwoord in." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Onjuiste gebruikersnaam of wachtwoord" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Het activeren van het SFTP-subsysteem lukt niet. Verzeker u ervan dat deze " +"is ingeschakeld op de server." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Kan de SFTP-sessie niet initialiseren." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Succesvol verbonden met %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"De host-sleutel voor deze server is niet gevonden maar er bestaat een ander " +"type sleutel.\n" +"Een aanvaller zou de standaard serversleutel kunnen wijzigen om uw client te " +"laten denken dat deze niet bestaat.\n" +"Gaarne contact opnemen met uw systeembeheerder.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"De host-sleutel voor de server %1 is gewijzigd.\n" +"Dit zou ofwel DNS SPOOFING kunnen betekenen of het IP-adres van de host en " +"zijn host-sleutel zijn op hetzelfde tijdstip gewijzigd.\n" +"De vingerafdruk van de door de host op afstand verzonden sleutel is:\n" +" %2\n" +"Gaarne contact opnemen met uw systeembeheerder.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"De authenticiteit van host %1 kan niet worden vastgesteld.\n" +"De vingerafdruk van de sleutel is: %2\n" +"Bent u er zeker van dat u wil doorgaan met verbinden?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ongeldige sftp-context" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Kon de toegangsrechten niet wijzigen voor\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Lezen lukt niet van koppeling: %1" diff --git a/po/nl/kio5_smb.po b/po/nl/kio5_smb.po new file mode 100644 index 0000000..3a7b81d --- /dev/null +++ b/po/nl/kio5_smb.po @@ -0,0 +1,200 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015, 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-04 12:25+0100\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.2\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Er zijn verschillende opties voor het authenticeren op SMB-shares. username: Bij authenticeren in een " +"thuisnetwerk zal de gebruikersnaam op de server voldoende zijngebruikersnaam@domein.nl: Moderne " +"aanmeldnamen in bedrijven worden gevormd zoals e-mailadressenDOMEIN\\gebruikersnaam: Voor oudere " +"bedrijfsnetwerken of werkgroepen moet u misschien een prefix van de NetBIOS-" +"domeinnaam gebruiken (pre-Windows 2000)anonymous: Anonieme aanmeldingen kunnen geprobeerd worden met lege " +"gebruikersnaam en wachtwoord. Afhankelijk van de serverconfiguratie kunnen " +"niet-lege gebruikersnamen vereist zijn" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Voer de authenticatie in voor %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Voer de authenticatie in voor:\n" +"Server = %1\n" +"Share = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Onbekend bestandstype, geen map of bestand." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Er kon geen enkele werkgroep worden gevonden in uw lokale netwerk. Dit kan " +"worden veroorzaakt door een draaiende firewall." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Geen medium in station voor %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Er kon geen verbinding worden gemaakt met de host voor %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Fout bij het verbinden met de server verantwoordelijk voor %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "De netwerkbron kon niet worden gevonden op de opgegeven server." + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Onjuiste bestandsdescriptor" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"De opgegeven naam kon niet worden verbonden met een unieke server. Zorg " +"ervoor dat uw netwerk is opgezet zonder conflicten tussen namen die worden " +"gebruikt door Windows- en UNIX-name-resolution." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Host onbereikbaar" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient meldde een fout, maar gaf niet aan wat het probleem is. Dit kan " +"wijzen op een ernstig probleem met uw netwerk, of een probleem met " +"libsmbclient.\n" +"Als u ons wilt helpen, lever dan een tcpdump aan van de netwerkinterface " +"terwijl u probeert te bladeren (pas op: de dump kan private gegevens " +"bevatten, verzendt het pas als u uzelf ervan hebt verzekerd dat er geen " +"gevoelige gegevens in staan. U kunt de informatie sturen naar een van de " +"ontwikkelaars persoonlijk als die er om vragen)." + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Onbekende foutstatus: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Fout bij het proberen toegang te krijgen tot %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient kon geen context aanmaken" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Verzeker u ervan dat het Samba-pakket op de juiste manier is geïnstalleerd " +"op uw computer." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Aankoppelen van \"%1\" van host \"%2\" door gebruiker \"%3\" is mislukt.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Afkoppelen van koppelpunt \"%1\" is mislukt.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Onbekend apparaat @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient kon geen context initialiseren" + +#~ msgid "File does not exist: %1" +#~ msgstr "Bestand bestaat niet: %1" diff --git a/po/nl/kio5_thumbnail.po b/po/nl/kio5_thumbnail.po new file mode 100644 index 0000000..5deb03b --- /dev/null +++ b/po/nl/kio5_thumbnail.po @@ -0,0 +1,74 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2015-07-20 13:18+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Afbeelding automatisch draaien" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Geen MIME-bestandstype opgegeven." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Geen of een ongeldige grootte opgegeven." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kan geen miniatuur aanmaken voor map" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Geen plugin opgegeven." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Kan ThumbCreator %1 niet laden" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Kan geen miniatuur aanmaken voor %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Aanmaken van een miniatuur is mislukt" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Afbeelding kon niet worden geschreven." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Verbinding met gedeeldgeheugensegment %1 is mislukt" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Afbeelding is te groot voor het gedeeldgeheugensegment" diff --git a/po/nn/kfileaudiopreview5.po b/po/nn/kfileaudiopreview5.po new file mode 100644 index 0000000..0fd2db8 --- /dev/null +++ b/po/nn/kfileaudiopreview5.po @@ -0,0 +1,36 @@ +# Translation of kfileaudiopreview5 to Norwegian Nynorsk +# +# Gaute Hvoslef Kvalnes , 2003. +# Karl Ove Hufthammer , 2007, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-04-29 10:34+0200\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "&Spel av automatisk" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "start avspeling" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pausa avspeling" diff --git a/po/nn/kio5_activities.po b/po/nn/kio5_activities.po new file mode 100644 index 0000000..f95ff19 --- /dev/null +++ b/po/nn/kio5_activities.po @@ -0,0 +1,69 @@ +# Translation of kio5_activities to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2014, 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-11-10 20:13+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktivitetar" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Lastar …" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktivitetshandsamaren køyrer ikkje" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Lenkje til gjeldande aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Fjern lenkje frå gjeldande aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Lag lenkje til:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Fjern lenkje frå:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktivitet" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Gjeldande aktivitet" diff --git a/po/nn/kio5_archive.po b/po/nn/kio5_archive.po new file mode 100644 index 0000000..9bc3436 --- /dev/null +++ b/po/nn/kio5_archive.po @@ -0,0 +1,39 @@ +# Translation of kio5_archive to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-08-03 19:20+0200\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Klarte ikkje opna fila. Grunnen er truleg at filformatet ikkje er støtta.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Klarte ikkje opna arkivfila, kanskje grunna at filformatet ikkje er støtta.\n" +"%1" diff --git a/po/nn/kio5_bookmarks.po b/po/nn/kio5_bookmarks.po new file mode 100644 index 0000000..4cd7b8d --- /dev/null +++ b/po/nn/kio5_bookmarks.po @@ -0,0 +1,66 @@ +# Translation of kio5_bookmarks to Norwegian Nynorsk +# +# Eirik U. Birkeland , 2008. +# Karl Ove Hufthammer , 2015, 2020. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-01 09:31+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.2\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Rot" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Stadar" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Fann ikkje bokmerkeoppsettet" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Fann ikkje bokmerkeprogram" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Feil førespurnad: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Det finst ingen bokmerke å visa enno." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Fann ikkje CSS-fila til «kio_bookmarks». Resultatet vil ikkje sjå så fint " +"ut.\n" +"Kontroller at programmet er rett installert." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mine bokmerke" diff --git a/po/nn/kio5_fish.po b/po/nn/kio5_fish.po new file mode 100644 index 0000000..daffb54 --- /dev/null +++ b/po/nn/kio5_fish.po @@ -0,0 +1,47 @@ +# Translation of kio5_fish to Norwegian Nynorsk +# +# Gaute Hvoslef Kvalnes , 2003, 2004. +# Karl Ove Hufthammer , 2007, 2008, 2015. +# Eirik U. Birkeland , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2015-05-16 17:47+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Koplar til …" + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Startar opp protokoll …" + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokal innlogging" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-autentisering" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Kopla frå." diff --git a/po/nn/kio5_info.po b/po/nn/kio5_info.po new file mode 100644 index 0000000..54484a7 --- /dev/null +++ b/po/nn/kio5_info.po @@ -0,0 +1,31 @@ +# Translation of kio5_info to Norwegian Nynorsk +# +# Eirik U. Birkeland , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-06-22 13:21+0200\n" +"Last-Translator: Eirik U. Birkeland \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Klarte ikkje finna fila %1, som er nødvendig for å bruka denne tenesta. Du " +"bør sjekka programvareinstallasjonen." diff --git a/po/nn/kio5_man.po b/po/nn/kio5_man.po new file mode 100644 index 0000000..af65a76 --- /dev/null +++ b/po/nn/kio5_man.po @@ -0,0 +1,201 @@ +# Translation of kio5_man to Norwegian Nynorsk +# +# Gaute Hvoslef Kvalnes , 2000, 2002, 2003, 2005. +# Karl Ove Hufthammer , 2007, 2008, 2015, 2019, 2020. +# Eirik U. Birkeland , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-10-23 21:10+0200\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Fann ikkje noka manualside for %1.Kontroller " +"at du ikkje har feilstava namnet på sida, og merk at namn på manualsider " +"skil mellom store og små bokstavar.Viss namnet er rett, kan det " +"vera at du må utvida søkjestien for manualsider, anten med miljøvariabelen " +"MANPATH eller ei oppsettfil i mappa /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Fann manualsida %1, men klarte ikkje lesa/tolka ho." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Den valde manualsida refererer til ei anna side, %1,men sida %2 som det vart referert til, finst ikkje." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Feil i KDE-manualsidevisar" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Det finst fleire enn éi manualside som passar:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Fleire manualsider" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Merk: Dersom du les ei omsett manualside, kan det henda at ho inneheld feil " +"eller er for gammal. Dersom du er i tvil, kan det vera lurt å sjå i den " +"engelske utgåva." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Hovudfiler" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Hovudfiler (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Brukarkommandoar" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Brukarkommandoar (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Systemkall" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Underrutinar" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-modular" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Nettverksfunksjonar" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Einingar" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Filformat" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Spel" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Ymse" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Systemadministrasjon" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kjerne" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokale hjelpetekstar" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Ny" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Sideindeks for hovudmanual" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Kapittel %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Oversikt for bolk %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Sideindeks for manual" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Byggjer opp indeks" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Fann ikkje programmet sgml2roff på systemet. Sjå til at " +"det er installert og tilgjengeleg via mapper i søkjestien (PATH-variabelen)." diff --git a/po/nn/kio5_mtp.po b/po/nn/kio5_mtp.po new file mode 100644 index 0000000..8eabbc1 --- /dev/null +++ b/po/nn/kio5_mtp.po @@ -0,0 +1,34 @@ +# Translation of kio5_mtp to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2016, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-03-16 11:50+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 18.12.3\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Fann inkje lagringsområde. Sjå til at eininga er låst opp og har slått på " +"MTP-støtte i innstillingane for USB-tilkopling." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Kan ikkje kopiera/flytta filer på eininga til seg sjølv" diff --git a/po/nn/kio5_network.po b/po/nn/kio5_network.po new file mode 100644 index 0000000..3784ecc --- /dev/null +++ b/po/nn/kio5_network.po @@ -0,0 +1,25 @@ +# Translation of kio5_network to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-04-02 21:01+0200\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.12.3\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Nettverk" diff --git a/po/nn/kio5_nfs.po b/po/nn/kio5_nfs.po new file mode 100644 index 0000000..e3733da --- /dev/null +++ b/po/nn/kio5_nfs.po @@ -0,0 +1,66 @@ +# Translation of kio5_nfs to Norwegian Nynorsk +# +# Gaute Hvoslef Kvalnes , 1999, 2000, 2001. +# Karl Ove Hufthammer , 2007, 2008, 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-05-31 09:55+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Ikkje-støtta NFS-versjon" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC-feil %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Ikkje meir plass på eininga" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Filsystem med berre lesetilgang" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "For langt filnamn" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Diskkvote fylt" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS-feil %1 – %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Klarte ikkje montera %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Ukjent mål" diff --git a/po/nn/kio5_recentdocuments.po b/po/nn/kio5_recentdocuments.po new file mode 100644 index 0000000..4334663 --- /dev/null +++ b/po/nn/kio5_recentdocuments.po @@ -0,0 +1,25 @@ +# Translation of kio5_recentdocuments to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-11-11 19:56+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Nyleg brukte dokument" diff --git a/po/nn/kio5_sftp.po b/po/nn/kio5_sftp.po new file mode 100644 index 0000000..ce7f059 --- /dev/null +++ b/po/nn/kio5_sftp.po @@ -0,0 +1,287 @@ +# Translation of kio5_sftp to Norwegian Nynorsk +# +# Gaute Hvoslef Kvalnes , 1999, 2000, 2001, 2002, 2003, 2004. +# Karl Ove Hufthammer , 2007, 2008, 2010, 2013, 2015, 2018, 2019. +# Eirik U. Birkeland , 2008, 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2019-03-16 11:49+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 18.12.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Feil passord" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Klarte ikkje tildela tilbakefall" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Klarte ikkje definera detaljnivå på logg." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Klarte ikkje definera brukardata for logg." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Klarte ikkje tildela tilbakelogg for logg." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-innlogging" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Bruk brukarnamnfeltet for å svara på dette spørsmålet." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Skriv inn passordet." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Nettstad:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Klarte ikkje starta ny SSH-økt." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Klarte ikkje definera tidsavbrot." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Klarte ikkje slå av Nagles algoritme." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Klarte ikkje definera komprimeringsgrad." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Klarte ikkje definera vert." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Klart ikkje definera port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Klarte ikkje definera brukarnamn." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Klarte ikkje tolka oppsettfila." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Opnar SFTP-samband til vert %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Klarte ikkje henta namn på offentlegnøkkel til tenaren" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Klarte ikkje rekna ut hash frå offentlegnøkkel til tenaren" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Klarte ikkje laga fingeravtrykk for offentlegnøkkelen til tenaren" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Fann ikkje vertsnøkkel %1 til denne tenaren, men det finst ein annan type " +"nøkkel.\n" +"Ein datasnok kan endra standardnøkkelen på tenaren for å få klienten din til " +"å tru at nøkkelen ikkje finst.\n" +"Ta kontakt med systemansvarleg.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Vertsnøkkelen til tenaren %1 er endra.\n" +"Dette tyder anten at «DNS spoofing» vert gjort, eller at IP-adressa til " +"verten og vertsnøkkelen vart endra på same tid.\n" +"Fingeravtrykket for %2-nøkkelen som er send av fjernverten er:\n" +" SHA256:%3\n" +"Ta kontakt med systemansvarleg.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Åtvaring: kan ikkje stadfesta identiteten til verten." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Klarar ikkje avgjera om verten %1 er ekte.\n" +"Fingeravtrykket til nøkkelen %2 er: %3\n" +"Er du sikker på at du vil halda fram tilkoplinga?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Feil ved autentisering." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Feil ved autentisering. Tenaren oppgav ikkje nokon autentiseringsmetodar." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Skriv inn brukarnamn og passord." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Feil brukarnamn eller passord" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Klarte ikkje spørja etter undersystemet til SFTP. Sjå til at SFTP er tillate " +"på tenaren." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Klarte ikkje starta SFTP-økta." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Vellukka tilkopling til %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Fann ikkje vertsnøkkelen til denne tenaren, men det finst ein annan type " +"nøkkel.\n" +"Ein datasnok kan endra standardnøkkelen på tenaren for å få klienten din til " +"å tru at nøkkelen ikkje finst.\n" +"Ta kontakt med systemansvarleg.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Vertsnøkkelen til tenaren %1 er endra.\n" +"Dette tyder anten at «DNS spoofing» vert gjort, eller at IP-adressa til " +"verten og vertsnøkkelen vart endra på same tid.\n" +"Fingeravtrykket for nøkkelen som er send av fjernverten er:\n" +" %2\n" +"Ta kontakt med systemansvarleg.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Klarar ikkje avgjera om verten %1 er ekte.\n" +"Nøkkelen er: %2\n" +"Er du sikker på at du vil halda fram tilkoplinga?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ugyldig SFTP-kontekst" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Klarte ikkje endra løyva for\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Klarte ikkje lesa lenkja: %1" diff --git a/po/nn/kio5_smb.po b/po/nn/kio5_smb.po new file mode 100644 index 0000000..d59d953 --- /dev/null +++ b/po/nn/kio5_smb.po @@ -0,0 +1,193 @@ +# Translation of kio5_smb to Norwegian Nynorsk +# +# Gaute Hvoslef Kvalnes , 1999, 2000, 2001, 2003, 2004, 2005. +# Karl Ove Hufthammer , 2007, 2008, 2018, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-05 19:24+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Det finst fleire val for autentisering for SMB-ressursar.brukarnamn: Ved autentisering på heime­" +"nettverket held det med brukarnamnet.brukarnnamn@domene.no: Brukarnamn for " +"moderne firma­nettverk er utforma som e-postadresser.DOMENE\\brukarnamn: Eldre firma­" +"nettverk og arbeids­grupper NetBIOS-domene­namnet som prefiks (pre-Windows " +"2000)anonym: Du kan prøva anonym " +"pålogging ved å bruka eit tomt brukarnamn og passord. Ved nokre tenar­oppsett " +"er det nødvendig med eit ikkje-tomt brukarnamn." + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Oppgje autentiseringsinformasjon for %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Oppgje autentiseringsinformasjon for:\n" +"Tenar = %1\n" +"Delt ressurs = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Ukjend filtype, verken katalog eller fil." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Fann ingen arbeidsgrupper i lokalnettet. Dette kan skuldast ein brannmur." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Ingen medium i eininga for %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Klarte ikkje kopla til vert for %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Feil ved tilkopling til tenaren som er ansvarleg for %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Fann ikkje ressursen på tenaren" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Dårleg fildeskriptor" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Det namnet som er oppgjeve svarte ikkje til ein eintydig tenar. Sjå etter at " +"nettet er sett opp utan konfliktar mellom namn som er brukte i namnesystema " +"til Windows og UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Fekk ikkje kontakt med verten" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient melde om ein feil, men sa ikkje noko om kva problemet er. Dette " +"kan tyda på eit alvorleg problem med nettverket, men kan òg skuldast feil i " +"libsmbclient.\n" +"Dersom du vil hjelpa til, kan du skaffa ein tcpdump av " +"nettverksgrensesnittet mens du prøver å kopla til. (Legg merke til at dumpen " +"kan innehalda privat informasjon. Du kan senda han privat til ein av " +"utviklarane om dei ber om det.)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Ukjend feiltilstand: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Feil ved forsøk på å få tilgang til %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient klarte ikkje oppretta samanheng" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Sjå til at samba-pakken er rett installert på systemet." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Brukaren «%3» klarte ikkje montera ressursen «%1» frå verten «%2».\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Avmontering av «%1» mislukkast.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Ukjend eining @ %1" diff --git a/po/nn/kio5_thumbnail.po b/po/nn/kio5_thumbnail.po new file mode 100644 index 0000000..9375a28 --- /dev/null +++ b/po/nn/kio5_thumbnail.po @@ -0,0 +1,77 @@ +# Translation of kio5_thumbnail to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2007, 2008, 2015. +# Eirik U. Birkeland , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2015-05-30 13:56+0100\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Drei om biletet automatisk" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Ingen MIME-type vald." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Ingen, eller ugyldig, storleik vald." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Klarte ikkje laga miniatyrbilete for mappa" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Ingen programtillegg valde." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Klarte ikkje lasta «ThumbCreator %1»" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Klarte ikkje laga miniatyrbilete for «%1»" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Klarte ikkje laga miniatyrbilete." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Klarte ikkje lagra biletet." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Klarte ikkje kopla til delt minneområde %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Biletet er for stort for det delte minneområdet" diff --git a/po/pa/kfileaudiopreview5.po b/po/pa/kfileaudiopreview5.po new file mode 100644 index 0000000..f66d20d --- /dev/null +++ b/po/pa/kfileaudiopreview5.po @@ -0,0 +1,35 @@ +# translation of kfileaudiopreview4.po to Panjabi +# Amanpreet Singh Alam , 2004. +# A S Alam , 2007, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2011-01-01 18:29+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \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" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "ਆਟੋਮੈਟਿਕ ਚਲਾਓ(&a)" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "ਪਲੇਅਬੈਕ ਸ਼ੁਰੂ" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "ਪਲੇਅਬੈਕ ਪੌਜ਼" + +#~ msgid "Media Player" +#~ msgstr "ਮੀਡਿਆ ਪਲੇਅਰ" diff --git a/po/pa/kio5_activities.po b/po/pa/kio5_activities.po new file mode 100644 index 0000000..3849133 --- /dev/null +++ b/po/pa/kio5_activities.po @@ -0,0 +1,189 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# A S Alam , 2012, 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-11-06 17:43-0600\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \n" +"Language: pa\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" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "ਸਰਗਰਮੀ" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "...ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "ਸਰਗਰਮੀ ਮੈਨੇਜਰ ਨਹੀਂ ਚੱਲ ਰਿਹਾ ਹੈ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "ਮੌਜੂਦਾ ਸਰਗਰਮੀ ਲਈ ਲਿੰਕ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "ਮੌਜੂਦਾ ਸਰਗਰਮੀ ਤੋਂ ਅਣ-ਲਿੰਕ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "ਨਾਲ ਲਿੰਕ:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "ਅਣਲਿੰਕ ਕਰੋ:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "ਸਰਗਰਮੀ" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "ਮੌਜੂਦਾ ਸਰਗਰਮੀ" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "aalam@users.sf.net" + +#~ msgid "Default" +#~ msgstr "ਡਿਫਾਲਟ" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "\"%1\" ਐਕਟਵਿਟੀ ਲਈ ਬਦਲੋ" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "ਸਰਗਰਮੀ" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Delete activity" +#~ msgstr "ਮੌਜੂਦਾ ਸਰਗਰਮੀ" + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create a new activity" +#~ msgstr "ਮੌਜੂਦਾ ਸਰਗਰਮੀ" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity settings" +#~ msgstr "ਸਰਗਰਮੀ" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity information" +#~ msgstr "ਸਰਗਰਮੀ" + +#~ msgid "Privacy" +#~ msgstr "ਪਰਾਈਵੇਸੀ" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "ਹਮੇਸ਼ਾ" + +#~ msgid "Forget the last hour" +#~ msgstr "ਪਿਛਲਾ ਘੰਟਾ ਭੁੱਲ ਜਾਉ" + +#~ msgid "Forget the last two hours" +#~ msgstr "ਪਿਛਲੇ ਦੋ ਘੰਟੇ ਭੁੱਲ ਜਾਉ" + +#~ msgid "Forget a day" +#~ msgstr "ਇੱਕ ਦਿਨ ਭੁੱਲ ਜਾਓ" + +#~ msgid "Forget everything" +#~ msgstr "ਹਰ ਚੀਜ਼ ਭੁੱਲ ਜਾਉ" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " ਮਹੀਨਾ" +#~ msgstr[1] " ਮਹੀਨੇ" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "ਲਈ " + +#, fuzzy +#~| msgid "Current activity" +#~ msgid "Create activity..." +#~ msgstr "ਮੌਜੂਦਾ ਸਰਗਰਮੀ" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity switching" +#~ msgstr "ਸਰਗਰਮੀ" + +#~ msgid "Remember opened documents:" +#~ msgstr "ਖੁੱਲ੍ਹੇ ਡੌਕੂਮੈਂਟ ਯਾਦ ਰੱਖੋ" + +#~ msgid "For a&ll applications" +#~ msgstr "ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਲਈ(&l)" + +#~ msgid "&Do not remember" +#~ msgstr "ਯਾਦ ਨਾ ਰੱਖੋ(&D)" + +#~ msgid "O&nly for specific applications" +#~ msgstr "ਕੇਵਲ ਖਾਸ ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਹੀ(&n)" + +#~ msgid "Keep history" +#~ msgstr "ਅਤੀਤ ਰੱਖੋ" + +#~ msgid "Clear recent history" +#~ msgstr "ਤਾਜ਼ਾ ਅਤੀਤ ਸਾਫ਼ ਕਰੋ" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "ਇਹ ਸੂਚੀ ਤੋਂ ਬਿਨਾਂ ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਬਲੈਕ-ਲਿਸਟ" + +#, fuzzy +#~| msgid "Activity" +#~ msgid "Activity name" +#~ msgstr "ਸਰਗਰਮੀ" + +#~ msgid "Available Features" +#~ msgstr "ਉਪਲੱਬਧ ਫੀਚਰ" + +#~ msgid "Plugins" +#~ msgstr "ਪਲੱਗਇਨ" + +#~ msgid "Enable activities management" +#~ msgstr "ਸਰਗਰਮੀ ਪਰਬੰਧ ਯੋਗ" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "ਸਰਗਰਮੀ ਮੈਨੇਜਰ ਠੀਕ ਤਰ੍ਹਾਂ ਨਹੀਂ ਚੱਲਦਾ ਹੈ।" + +#~ msgid "Activities..." +#~ msgstr "...ਸਰਗਰਮੀਆਂ" + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2010, 2011, 2012 Ivan Cukic" diff --git a/po/pa/kio5_archive.po b/po/pa/kio5_archive.po new file mode 100644 index 0000000..91b07d5 --- /dev/null +++ b/po/pa/kio5_archive.po @@ -0,0 +1,37 @@ +# translation of kio_tar.po to Panjabi +# +# Amanpreet Singh Alam , 2005. +# A S Alam , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2007-04-07 07:00+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Panjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"ਫਾਈਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ, ਸੰਭਵ ਤੌਰ 'ਤੇ ਨਾ-ਸਹਾਇਕ ਫਾਈਲ ਫਾਰਮੈਟ ਹੈ:\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"ਅਕਾਈਵ ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਤੌਰ 'ਤੇ ਪਰੋਟੋਕਾਲ ਸਹਾਇਕ ਨਹੀਂ ਹੈ:\n" +"%1" diff --git a/po/pa/kio5_bookmarks.po b/po/pa/kio5_bookmarks.po new file mode 100644 index 0000000..e7dc317 --- /dev/null +++ b/po/pa/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# translation of kio_bookmarks.po to Punjabi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Amanpreet Singh , 2008. +# A S Alam , 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2009-01-06 22:40+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "ਰੂਟ" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "ਥਾਵਾਂ" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "ਗਲਤ ਮੰਗ: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "ਵੇਖਾਉਣ ਲਈ ਕੋਈ ਬੁੱਕਮਾਰਕ ਨਹੀਂ ਹੈ।" + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "ਮੇਰੇ ਬੁੱਕਮਾਰਕ" + +#~ msgid "My bookmarks" +#~ msgstr "ਮੇਰੇ ਬੁੱਕਮਾਰਕ" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "ਸ਼ੁਰੂਆਤੀ ਡਿਵੈਲਪਰ" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "aalam@users.sf.net" diff --git a/po/pa/kio5_fish.po b/po/pa/kio5_fish.po new file mode 100644 index 0000000..94b1686 --- /dev/null +++ b/po/pa/kio5_fish.po @@ -0,0 +1,52 @@ +# translation of kio_fish.po to Punjabi +# Amanpreet Singh Alam , 2004, 2005. +# AP S Alam , 2007. +# A S Alam , 2007, 2009, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-01-05 08:37+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \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.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "...ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "ਪਰੋਟੋਕਾਲ ਸ਼ੁਰੂ ਕੀਤਾ ਜਾਦਾ ਹੈ..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "ਲੋਕਲ ਲਾਗਇਨ" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH ਪਰਮਾਣਕਿਤਾ" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਹੈ।" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "aalam@users.sf.net" diff --git a/po/pa/kio5_info.po b/po/pa/kio5_info.po new file mode 100644 index 0000000..619e752 --- /dev/null +++ b/po/pa/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# A S Alam , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2010-10-22 22:45+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \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" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"%1 ਫਾਈਲ ਲੱਭਣ ਲਈ ਅਸਮਰੱਖ, ਜੋ ਕਿ ਇਹ ਸਰਵਿਸ ਚਲਾਉਣ ਲਈ ਲਾਜ਼ਮੀ ਹੈ। ਆਪਣੀ ਸਾਫਟਵੇਅਰ ਇੰਸਟਾਲੇਸ਼ਨ " +"ਲਈ ਚੈੱਕ ਕਰੋ।" diff --git a/po/pa/kio5_man.po b/po/pa/kio5_man.po new file mode 100644 index 0000000..96637a6 --- /dev/null +++ b/po/pa/kio5_man.po @@ -0,0 +1,207 @@ +# translation of kio_man.po to Punjabi +# Amanpreet Singh Alam , 2004, 2005. +# Amanpreet Singh Brar , 2005. +# Amanpreet Singh Brar , 2005. +# AP S Alam , 2007. +# A S Alam , 2007, 2008, 2009, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-01-05 08:38+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \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.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        KDE man ਦਰਸ਼ਕ ਗਲਤੀ

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "ਇੱਕ ਤੋਂ ਜਿਆਦਾ man ਸਫ਼ੇ ਹਨ।" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "ਹੈੱਡਰ ਫਾਈਲਾਂ (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡਾਂ" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡ (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "ਸਿਸਟਮ ਕਾਲ" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subroutines" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "ਪਰਲ ਮੋਡੀਊਲ" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "ਨੈੱਟਵਰਕ ਫੰਕਸ਼ਨ" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "ਜੰਤਰ" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "ਫਾਈਲ ਫਾਰਮੈਟ" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "ਖੇਡਾਂ" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "ਫੁਟਕਲ" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "ਸਿਸਟਮ ਪਰਸ਼ਾਸ਼ਨ" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "ਕਰਨਲ" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "ਲੋਕਲ ਡੌਕੂਮੈਂਟੇਸ਼ਨ" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "ਨਵਾਂ" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX ਮੇਨੂਅਲ ਇੰਡੈਕਸ" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "ਸ਼ੈਕਸ਼ਨ %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "ਸ਼ੈਕਸ਼ਨ %1 ਲਈ ਇੰਡੈਕਸ: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX ਮੇਨੂਅਲ ਇੰਡੈਕਸ" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "ਇੰਡੈਕਸ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 ਨੂੰ ਖੋਲਣ ਤੋਂ ਅਸਫ਼ਲ ਹੈ।" + +#~ msgid "Man output" +#~ msgstr "Man ਆਉਟਪੁੱਟ" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "aalam@users.sf.net" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/pa/kio5_mtp.po b/po/pa/kio5_mtp.po new file mode 100644 index 0000000..0045b22 --- /dev/null +++ b/po/pa/kio5_mtp.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# A S Alam , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2015-02-01 03:22-0600\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "ਫਾਇਲਾਂ ਨੂੰ ਯੰਤਰ ਨੂੰ ਖੁਦ ਉੱਤੇ ਕਾਪੀ/ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "ਕੋਈ ਸਟੋਰੇਜ਼ ਨਹੀਂ ਲੱਭਿਆ। ਸ਼ਾਇਦ ਤੁਹਾਨੂੰ ਆਪਣੇ ਯੰਤਰ ਨੂੰ ਅਣ-ਲਾਕ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇ?" diff --git a/po/pa/kio5_nfs.po b/po/pa/kio5_nfs.po new file mode 100644 index 0000000..b66cf38 --- /dev/null +++ b/po/pa/kio5_nfs.po @@ -0,0 +1,65 @@ +# translation of kio_nfs.po to Panjabi +# Amanpreet Singh Alam , 2004, 2005. +# AP S Alam , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2007-06-04 06:34+0530\n" +"Last-Translator: AP S Alam \n" +"Language-Team: Panjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "ਜੰਤਰ ਉੱਤੇ ਕੋਈ ਖਾਲੀ ਥਾਂ ਨਹੀਂ ਰਹੀ" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "ਫਾਈਲ ਸਿਸਟਮ ਕੇਵਲ ਪੜ੍ਹਨ ਲਈ ਹੈ" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "ਫਾਈਲ ਨਾਂ ਬਹੁਤ ਲੰਮਾ ਹੈ" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "ਡਿਸਟ ਕੋਟੇ ਤੋਂ ਵੱਧ ਗਿਆ ਹੈ" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "ਇੱਕ RPC ਗਲਤੀ ਆਈ ਹੈ।" diff --git a/po/pa/kio5_recentdocuments.po b/po/pa/kio5_recentdocuments.po new file mode 100644 index 0000000..8ae0c90 --- /dev/null +++ b/po/pa/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# A S Alam , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-05-03 07:54+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \n" +"Language: pa\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" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "ਤਾਜ਼ਾ ਡੌਕੂਮੈਂਟ" diff --git a/po/pa/kio5_sftp.po b/po/pa/kio5_sftp.po new file mode 100644 index 0000000..1d0449b --- /dev/null +++ b/po/pa/kio5_sftp.po @@ -0,0 +1,366 @@ +# translation of kio_sftp.po to Punjabi +# Amanpreet Singh Alam , 2004, 2005. +# Amanpreet Singh Brar , 2005. +# AP S Alam , 2007. +# A S Alam , 2007, 2008, 2010, 2011. +# ASB , 2007, 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2014-03-16 23:26-0500\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \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.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "ਗਲਤ ਜਾਂ ਅਢੁੱਕਵਾਂ ਵਾਕ" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "callbacks ਜਾਰੀ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕੇ" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "ਲਾਗ ਵੇਰਵਾ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "ਲਾਗ ਯੂਜ਼ਰ-ਡਾਟਾ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "callbacks ਜਾਰੀ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕੇ" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP ਲਾਗਇਨ" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "ਇਹ ਸਵਾਲ ਦੇ ਜਵਾਬ ਲਈ ਯੂਜ਼ਰ-ਨਾਂ ਇੰਪੁੱਟ ਖੇਤਰ ਵਰਤੋਂ।" + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "ਆਪਣਾ ਪਾਸਵਰਡ ਦਿਉ ਜੀ।" + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "ਸਾਇਟ:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "ਨਵਾਂ SSH ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "ਟਾਈਮ-ਆਉਟ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "ਪੋਰਟ ਸੈੱਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।" + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "ਕੰਪਰੈਸ਼ਨ ਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "ਹੋਸਟ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "ਪੋਰਟ ਸੈੱਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।" + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "ਸੰਰਚਨਾ ਫਾਈਲ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।" + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "ਕੁਨੈਕਸ਼ਨ SFTP ਹੋਸਟ %1:%2 ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "ਚੇਤਾਵਨੀ: ਹੋਸਟ ਦੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਹੋ ਸਕੀ ਹੈ।" + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "ਪਰਮਾਣਕਤਾ ਅਸਫਲ ਹੈ।" + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "ਆਪਣਾ ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਪਾਸਵਰਡ ਦਿਓ ਜੀ।" + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "SFTP ਸਬ-ਸਿਸਟਮ ਲਈ ਮੰਗ ਵਾਸਤੇ ਅਸਮਰੱਥ ਹੈ। ਯਕੀਨੀ ਬਣਾਉ ਕਿ ਸਰਵਰ ਉੱਤੇ SFTP ਚਾਲੂ ਹੈ।" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "ਸਫਲਤਾਪੂਰਕ %1 ਨਾਲ ਜੋੜਿਆ ਗਿਆ" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"%1\n" +"ਲਈ ਅਧਿਕਾਰ ਬਦਲੇ ਨਹੀਂ ਜਾ ਸਕੇ" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "ਲਿੰਕ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %1" + +#~ msgid "No hostname specified." +#~ msgstr "ਕੋਈ ਹੋਸਟ-ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ ਹੈ।" + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "ਇੱਕ ਅੰਦਰੂਨੀ ਗਲਤੀ ਆਈ ਹੈ, ਬੇਨਤੀ ਦੀ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ ਜੀ।" + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "ਆਪਣਾ ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਕੁੰਜੀ ਪੈਰਾ ਦਿਓ ਜੀ।" + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "ਚੇਤਾਵਨੀ: ਹੋਸਟ ਦੀ ਪਛਾਣ ਬਦਲ ਗਈ ਹੈ।" + +#~ msgid "Connection failed." +#~ msgstr "ਕੁਨੈਕਸ਼ਨ ਅਸਫਲ ਹੈ।" + +#~ msgid "Connection closed by remote host." +#~ msgstr "ਰਿਮੋਟ ਹੋਸਟ ਨੇ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ।" + +#, fuzzy +#~| msgid "Unexpected SFTP error: %1" +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "ਅਣਜਾਣੀ SFTP ਗਲਤੀ: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP ਵਰਜਨ %1" + +#~ msgid "Protocol error." +#~ msgstr "ਪਰੋਟੋਕਾਲ ਗਲਤੀ ਹੈ।" + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "ਇੱਕ ਅੰਦਰੂਨੀ ਗਲਤੀ ਹੈ। ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ ਜੀ।" + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "'%1' ਤੇ ਫਾਈਲ ਕਾਪੀ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣੀ ਗਲਤੀ ਆਈ ਹੈ। ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ ਜੀ।" + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "ਰਿਮੋਟ ਹੋਸਟ ਫਾਈਲਾਂ ਦਾ ਨਾਂ ਬਦਲੀ ਕਰਨ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "ਰਿਮੋਟ ਹੋਸਟ ਨਿਸ਼ਾਨ ਲਿੰਕ ਬਣਾਉਣ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" + +#~ msgid "Connection closed" +#~ msgstr "ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ" + +#~ msgid "End of file." +#~ msgstr "ਫਾਈਲ ਦਾ ਅੰਤ ਹੈ।" + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP ਕਮਾਂਡ ਅਣਜਾਣੇ ਕਾਰਨ ਕਰਕੇ ਅਸਫਲ ਹੈ।" + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "SFTP ਸਰਵਰ ਨੂੰ ਗਲਤ ਸੁਨੇਹਾ ਮਿਲਿਆ ਹੈ।" + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "ਤੁਸੀਂ ਇੱਕ ਕਾਰਵਾਈ ਦੀ ਕੋਸ਼ਿਸ ਕੀਤੀ ਹੈ, ਜਿਸ ਲਈ SFTP ਸਰਵਰ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।" + +#~ msgid "Error code: %1" +#~ msgstr "ਗਲਤੀ ਕੋਡ: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "ਇੱਕੋ ਸਮੇਂ ਅਧੀਨ-ਸਿਸਟਮ ਅਤੇ ਕਮਾਂਡ ਦਿੱਤੀ ਨਹੀਂ ਜਾ ਸਕਦੇ ਹਨ।" + +#~ msgid "No options provided for ssh execution." +#~ msgstr "ssh ਚਲਾਉਣ ਲਈ ਕੋਈ ਚੋਣ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।" + +#~ msgid "Failed to execute ssh process." +#~ msgstr "ssh ਕਾਰਜ ਚਲਾਉਣਾ ਅਸਫਲ ਹੈ।" + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "sss ਚਲਾਉਣ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।" + +#~ msgid "Please supply a password." +#~ msgstr "ਇੱਕ ਪਾਸਵਰਡ ਦਿਓ ਜੀ।" + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "ਆਪਣੀ SSH ਪਰਾਈਵੇਟ ਕੁੰਜੀ ਲਈ ਪੈਰਾ ਦਿਓ ਜੀ।" + +#~ msgid "Authentication to %1 failed" +#~ msgstr "%1 ਲਈ ਪਰਮਾਣਕਤਾ ਅਸਫ਼ਲ" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "ਰਿਮੋਟ ਹੋਸਟ '%1' ਦੀ ਪਛਾਣ ਪੁਸ਼ਟੀ ਅਸਫਲ ਹੋਈ ਹੈ, ਕਿਉਂਕਿ ਹੋਸਟ ਦੀ ਕੁੰਜੀ \"known hosts\" " +#~ "ਫਾਈਲ ਵਿੱਚ ਨਹੀਂ ਹੈ।" + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " ਦਸਤੀ, ਹੋਸਟ ਦੀ ਕੁੰਜੀ ਫਾਈਲ \"known hosts\" ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰੋ ਜਾਂ ਆਪਣੇ ਪਰਸ਼ਾਸ਼ਕ ਨਾਲ " +#~ "ਸੰਪਰਕ ਕਰੋ।" + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr " ਦਸਤੀ, ਹੋਸਟ ਦੀ ਕੁੰਜੀ %1 ਸ਼ਾਮਿਲ ਕਰੋ ਜਾਂ ਆਪਣੇ ਪਰਸ਼ਾਸ਼ਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।" + +#~ msgid "Host key was rejected." +#~ msgstr "ਹੋਸਟ ਕੁੰਜੀ ਨਾ-ਮਨਜ਼ੂਰ ਕੀਤੀ ਗਈ।" + +#~ msgid "Please enter a username and password" +#~ msgstr "ਇੱਕ ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਪਾਸਵਰਡ ਦਿਓ ਜੀ।" + +#~ msgid "File does not exist." +#~ msgstr "ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।" + +#~ msgid "Access is denied." +#~ msgstr "ਅਸੈੱਸ ਉੱਤੇ ਪਾਬੰਦੀ ਹੈ।" diff --git a/po/pa/kio5_smb.po b/po/pa/kio5_smb.po new file mode 100644 index 0000000..55c5648 --- /dev/null +++ b/po/pa/kio5_smb.po @@ -0,0 +1,192 @@ +# translation of kio_smb.po to Punjabi +# Amanpreet Singh Alam , 2004, 2005. +# Amanpreet Singh Brar , 2005. +# AP S Alam , 2007. +# A S Alam , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2007-08-06 21:17+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "%1ਲਈ ਪਰਮਾਣਕਤਾ ਜਾਣਕਾਰੀ ਭਰੋ ਜੀ" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"ਪਰਮਾਣਕਿਤਾ ਜਾਣਕਾਰੀ ਭਰੋ ਜੀ:\n" +"ਸਰਵਰ= %1\n" +"ਸਾਂਝ = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"ਅਣਜਾਣੀ ਫਾਈਲ ਕਿਸਮ, ਨਾ ਡਾਇਰੈਕਟਰੀ ਹੈ ਜਾਂ ਫਾਈਲ ਹੈ।" + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"ਤੁਹਾਡੇ ਲੋਕਲ ਨੈੱਟਵਰਕ ਵਿੱਚ ਕੋਈ ਵਰਕਗਰੁੱਪ ਲੱਭਣ ਤੋਂ ਅਸਫਲ ਹੈ। ਇਹ ਸ਼ਾਇਦ ਫਾਇਰਵਾਲ ਚਾਲੂ ਹੋਣ ਕਰਕੇ ਹੋ ਸਕਦਾ " +"ਹੈ।" + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 ਲਈ ਜੰਤਰ ਵਿੱਚ ਕੋਈ ਮੀਡਿਅਮ ਨਹੀਂ ਹੈ" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 ਲਈ ਹੋਸਟ ਨਾਲ ਜੁੜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "ਸਰਵਰ, ਜੋ ਕਿ %1 ਲਈ ਜਿੰਮੇਵਾਰ ਹੈ, ਨਾਲ ਜੁੜਨ ਦੌਰਾਨ ਗਲਤੀ" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "ਦਿੱਤੇ ਸਰਵਰ ਤੇ ਸਾਂਝ ਖੋਜੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "ਗਲਤ ਫਾਈਲ ਵਰਣਨਕਰਤਾ" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"ਦਿੱਤੇ ਨਾਂ ਨੂੰ ਵਿੱਲਖਣ ਸਰਵਰ ਦੇ ਰੂਪ ਵਿੱਚ ਖੋਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ। ਇਹ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ Windows ਅਤੇ " +"UNIX ਨਾਂ ਖੋਜਣ ਵਿੱਚ ਨਾਂ ਅਪਵਾਦ ਬਿਨਾਂ ਤੁਹਾਡਾ ਨੈਟਵਰਕ ਸੈਟਅੱਪ ਹੋਇਆ ਹੈ।" + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient ਨੇ ਗਲਤੀ ਦੀ ਜਾਣਕਾਰੀ ਦਿੱਤੀ ਹੈ, ਪਰ ਸਮੱਸਿਆ ਬਾਰੇ ਸਪਸ਼ੱਟ ਨਹੀਂ ਨਹੀਂ ਕੀਤੀ ਹੈ। ਇਹ " +"ਤੁਹਾਡੇ ਨੈਟਵਰਕ ਵਿੱਚ ਇੱਕ ਸਰਵਰ ਸਮੱਸਿਆ ਨੂੰ ਵਿਖਾ ਰਿਹਾ ਹੈ - ਪਰ ਇਹ libsmbclient ਵਿੱਚ ਵੀ ਸਮੱਸਿਆ " +"ਹੋ ਸਕਦੀ ਹੈ।\n" +"ਜੇਕਰ ਤੁਸੀਂ ਸਾਡੀ ਮੱਦਦ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ, ਨੈੱਟਵਰਕ ਇੰਟਰਫੇਸ ਦਾ tcpdump ਦਿਓ ਜੀ, ਜਦੋਂ ਕਿ ਤੁਸੀਂ ਝਲਕ " +"ਵੇਖਦੇ ਹੋ (ਯਾਦ ਰੱਖੋ ਕਿ ਇਸ ਵਿੱਚ ਨਿੱਜੀ ਡਾਟਾ ਹੋ ਸਕਦਾ ਹੈ, ਇਸ ਕਰਕੇ ਜੇਕਰ ਤੁਹਾਨੂੰ ਜਾਣਕਾਰੀ ਨਾ ਹੋਵੇ ਤਾਂ " +"ਭੇਜ ਨਾ - ਜੇਕਰ ਖੋਜੀ ਤੁਹਾਨੂੰ ਮੰਗਣ ਤਾਂ ਨਿੱਜੀ ਤੌਰ 'ਤੇ ਭੇਜ ਸਕਦੇ ਹੋ।)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "ਹਾਲਤ ਵਿੱਚ ਅਣਜਾਣੀ ਗਲਤੀ ਹਾਲਾਤ: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient ਭਾਗ ਬਣਾਉਣ ਲਈ ਅਸਫਲ" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"ਇਹ ਯਕੀਨੀ ਬਣਾ ਲਵੋ ਕਿ ਸਾਂਬਾ ਪੈਕੇਜ ਤੁਹਾਡੀ ਮਸ਼ੀਨ 'ਤੇ ਠੀਕ ਤਰਾਂ ਇੰਸਟਾਲ ਹੈ।" + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"ਯੂਜ਼ਰ \"%3\" ਰਾਹੀਂ ਹੋਸਟ \"%2\" ਤੋਂ ਸਾਂਝ \"%1\" ਮਾਊਟ ਕਰਨਾ ਅਸਫਲ ਹੈ।\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"ਮਾਊਟ-ਪੁਆਇੰਟ \"%1\" ਨੂੰ ਅਣ-ਮਾਊਟ ਕਰਨਾ ਅਸਫ਼ਲ ਹੈ।\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient ਭਾਗ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅਸਫਲ" + +#~ msgid "File does not exist: %1" +#~ msgstr "ਫਾਈਲ ਮੌਜੂਦ ਨਹੀ ਹੈ: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "libsmbclient ਸ਼ੁਰੂ ਹੋਣ ਵਿੱਚ ਅਸਫ਼ਲ" diff --git a/po/pa/kio5_thumbnail.po b/po/pa/kio5_thumbnail.po new file mode 100644 index 0000000..fbd04a4 --- /dev/null +++ b/po/pa/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# translation of kio_thumbnail.po to Punjabi +# +# Amanpreet Singh Alam , 2005. +# A S Alam , 2007, 2009, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-06-28 21:56+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \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.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "ਚਿੱਤਰ ਆਟੋਮੈਟਿਕ ਘੁੰਮਾਉ" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "ਕੋਈ MIME ਕਿਸਮ ਨਹੀਂ ਦਿੱਤੀ ਹੈ।" + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "ਕੋਈ ਜਾਂ ਗਲਤੀ ਅਕਾਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।" + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "ਡਾਇਰੈਕਟਰੀ ਲਈ ਥੰਮਨੇਲ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "ਕੋਈ ਪਲੱਗਇਨ ਨਹੀਂ ਦਿੱਤੀ ਗਈ ਹੈ।" + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 ਲਈ ਥੰਮਨੇਲ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "ਥੰਮਨੇਲ ਬਣਾਉਣ ਲਈ ਅਸਫ਼ਲ ਹੈ।" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "ਚਿੱਤਰ ਲਿਖਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।" + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "ਸਾਂਝਾ ਮੈਮੋਰੀ ਸਿਗਮਿੰਟ %1 ਨਾਲ ਜੁੜਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "ਚਿੱਤਰ ਸਾਂਝੀ ਮੈਮੋਰੀ ਸਿਗਮਿੰਟ ਵਿੱਚ ਸਮਾ ਨਹੀਂ ਸਕਦਾ ਹੈ" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "aalam@users.sf.net" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/pl/kfileaudiopreview5.po b/po/pl/kfileaudiopreview5.po new file mode 100644 index 0000000..1f28be6 --- /dev/null +++ b/po/pl/kfileaudiopreview5.po @@ -0,0 +1,44 @@ +# translation of kfileaudiopreview4.po to Polish +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Wojciech Świergocki , 2003. +# Marta Rybczyńska , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-07-15 22:02+0200\n" +"Last-Translator: Marta Rybczyńska \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Odtwarzaj &automatycznie" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "rozpocznij odtwarzanie" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "wstrzymaj odtwarzanie" + +#~ msgid "stop playback" +#~ msgstr "zatrzymaj odtwarzanie" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "pętla: ponowne rozpoczęcie odtwarzania po dojściu do końca" + +#~ msgid "Media Player" +#~ msgstr "Odtwarzacz multimedialny" diff --git a/po/pl/kio5_activities.po b/po/pl/kio5_activities.po new file mode 100644 index 0000000..7330d54 --- /dev/null +++ b/po/pl/kio5_activities.po @@ -0,0 +1,255 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Łukasz Wojniłowicz , 2012, 2014, 2015, 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-05-07 08:02+0100\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktywności" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Wczytywanie..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Program do zarządzania aktywnościami nie został uruchomiony." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Dowiąż do bieżącej aktywności" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Usuń dowiązanie z bieżącej aktywności" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Dowiąż do:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Usuń dowiązanie z:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktywność" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Bieżąca aktywność" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Łukasz Wojniłowicz" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "lukasz.wojnilowicz@gmail.com" + +#~ msgid "Default" +#~ msgstr "Domyślne" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Przełącz do działania \"%1\"" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Działanie" + +#~ msgid "Delete activity" +#~ msgstr "Usuń działanie" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Czy jesteś pewien, że chcesz usunąć '%1'?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Błąd wczytywania plików QML. Sprawdź swoją instalację.\n" +#~ "Brakuje %1" + +#~ msgid "Create a new activity" +#~ msgstr "Utwórz nowe działanie" + +#~ msgid "Activity settings" +#~ msgstr "Ustawienia działań" + +#~ msgid "General" +#~ msgstr "Ogólne" + +#~ msgid "Other" +#~ msgstr "Inne" + +#~ msgid "Create" +#~ msgstr "Utwórz" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Skrót do przełączenia na to działanie:" + +#~ msgid "Activity information" +#~ msgstr "Inoformacje o działaniu" + +#~ msgid "Name" +#~ msgstr "Nazwa" + +#~ msgid "Description" +#~ msgstr "Opis" + +#~ msgid "Wallpaper" +#~ msgstr "Tapeta" + +#~ msgid "Change..." +#~ msgstr "Zmień..." + +#~ msgid "Icon" +#~ msgstr "Ikona" + +#~ msgid "Switching" +#~ msgstr "Przełączanie" + +#~ msgid "Privacy" +#~ msgstr "Prywatność" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "zawsze" + +#~ msgid "Forget the last hour" +#~ msgstr "Zapomnij o ostatniej godzinie" + +#~ msgid "Forget the last two hours" +#~ msgstr "Zapomnij o ostatnich dwóch godzinach" + +#~ msgid "Forget a day" +#~ msgstr "Zapomnij o dniu" + +#~ msgid "Forget everything" +#~ msgstr "Zapomnij wszystko" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " miesiąc" +#~ msgstr[1] " miesiące" +#~ msgstr[2] " miesięcy" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "na " + +#~ msgid "Create activity..." +#~ msgstr "Uwtórz działanie..." + +#~ msgid "Activity switching" +#~ msgstr "Przełączanie działań" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Przechodzenie pomiędzy działaniami" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Przechodzenie pomiędzy działaniami (odwrotnie)" + +#~ msgid "Form" +#~ msgstr "Formularz" + +#~ msgid "Remember opened documents:" +#~ msgstr "Zapamiętaj otwarte dokumenty:" + +#~ msgid "For a&ll applications" +#~ msgstr "D&la wszystkich programów" + +#~ msgid "&Do not remember" +#~ msgstr "&Nie zapamiętuj" + +#~ msgid "O&nly for specific applications" +#~ msgstr "Tylko dla da&nych programów" + +#~ msgid "Keep history" +#~ msgstr "Zachowaj historię" + +#~ msgid "Clear recent history" +#~ msgstr "Wyczyść niedawną historię" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "" +#~ "Umieść na czarnej liście wszystkie programy nie znajdujące się na tej " +#~ "liście" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Pamiętaj bieżący pulpit wirtualny dla każdego działania (wymaga ponownego " +#~ "uruchomienia)" + +#~ msgid "Shortcuts" +#~ msgstr "Skróty" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Prywatne - nie rejestruj zachowań w tym działaniu" + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#~ msgid "Activity name" +#~ msgstr "Nazwa działania" + +#~ msgid "Available Features" +#~ msgstr "Dostępne możliwości" + +#~ msgid "Plugins" +#~ msgstr "Wtyczki" + +#~ msgid "Enable activities management" +#~ msgstr "Włącz zarządzanie działaniami" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Program do zarządzania działaniami nie działa poprawnie." + +#~ msgid "Activities..." +#~ msgstr "Działania..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" + +#~ msgctxt "Header title for resource data model" +#~ msgid "Resource" +#~ msgstr "Zasób" diff --git a/po/pl/kio5_archive.po b/po/pl/kio5_archive.po new file mode 100644 index 0000000..a409072 --- /dev/null +++ b/po/pl/kio5_archive.po @@ -0,0 +1,39 @@ +# translation of kio_tar.po to Polish +# Krzysztof Lichota, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-09-30 01:07+0200\n" +"Last-Translator: Krzysztof Lichota\n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Nie można otworzyć pliku, prawdopodobnie z powodu nieobsługiwanego formatu " +"pliku.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Nie można otworzyć pliku archiwum, prawdopodobnie ponieważ format nie jest " +"obsługiwany.\n" +"%1" diff --git a/po/pl/kio5_bookmarks.po b/po/pl/kio5_bookmarks.po new file mode 100644 index 0000000..98e4a96 --- /dev/null +++ b/po/pl/kio5_bookmarks.po @@ -0,0 +1,81 @@ +# translation of kio_bookmarks.po to +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Maciej Wikło , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-12-11 22:15+0100\n" +"Last-Translator: \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.2\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Katalog główny" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Miejsca" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Złe zapytanie: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Nie ma żadnych zakładek do wyświetlenia." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Nie znaleziono pliku CSS kio_bookmarks. Efekt będzie wyglądał nienajlepiej.\n" +"Sprawdź swoją instalację." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Moje zakładki" + +#~ msgid "My bookmarks" +#~ msgstr "Moje zakładki" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Pierwszy autor" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Maciej Wikło" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "maciej.wiklo@wp.pl" diff --git a/po/pl/kio5_fish.po b/po/pl/kio5_fish.po new file mode 100644 index 0000000..1e6c3a3 --- /dev/null +++ b/po/pl/kio5_fish.po @@ -0,0 +1,54 @@ +# translation of kio_fish.po to Polish +# Copyright (C) 2003, 2004, 2009 Free Software Foundation, Inc. +# +# Krzysztof Lichota , 2003. +# Michal Rudolf , 2004, 2009. +# Łukasz Wojniłowicz , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-11-08 15:47+0100\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Łączenie..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicjowanie protokołu..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Logowanie lokalne" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Uwierzytelnienie SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Rozłączony." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Michał Rudolf" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mrudolf@kdewebdev.org" diff --git a/po/pl/kio5_info.po b/po/pl/kio5_info.po new file mode 100644 index 0000000..a339df6 --- /dev/null +++ b/po/pl/kio5_info.po @@ -0,0 +1,30 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marta Rybczyńska , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-06-18 23:16+0200\n" +"Last-Translator: Marta Rybczyńska \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Nie można znaleźć pliku %1, który jest niezbędny do działania tej usługi. " +"Proszę sprawdzić, czy program jest poprawnie zainstalowany." diff --git a/po/pl/kio5_man.po b/po/pl/kio5_man.po new file mode 100644 index 0000000..6062059 --- /dev/null +++ b/po/pl/kio5_man.po @@ -0,0 +1,234 @@ +# Version: $Revision: 1582299 $ +# translation of kio_man.po to Polish +# translation of kio_man.po to +# Michał Rudolf , 2002. +# Michal Rudolf , 2002, 2003, 2005, 2008, 2009. +# Łukasz Wojniłowicz , 2012, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-07-21 09:53+0200\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +">\n" +"X-Generator: Lokalize 19.07.70\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Nie znaleziono strony podręcznika dla %1.

        Proszę sprawdzić, czy " +"nazwa poszukiwanej strony została wpisana poprawnie.\n" +"Wielkość liter też ma znaczenie!
        Jeśli wszystko wygląda poprawnie, być " +"może trzeba rozszerzyć listę przeszukiwanych ścieżek: albo ustawiając " +"zmienną środowiskową MANPATH, albo edytując odpowiedni plik w katalogu /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "The specified man page referenced another page '%1',
        but the " +#| "referenced page '%2' could not be found." +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Dana strona podręcznika odwołuje się do innej strony '%1',
        lecz nie " +"można znaleźć tej strony '%2'." + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Błąd przeglądarki KDE Man

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Pasuje kilka stron podręcznika." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Uwaga: strona podręcznika napisana w Twoim języku może być nieaktualna lub " +"zawierać błędy. W razie wątpliwości dobrze jest sprawdzić wersję angielską." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Pliki nagłówkowe" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Pliki nagłówkowe (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Polecenia użytkownika" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Polecenia użytkownika (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Wywołania systemowe" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Podprogramy" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Moduły Perla" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Funkcje sieciowe" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Urządzenia" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formaty plików" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Gry" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Inne" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administracja systemu" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Jądro" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Dokumentacja lokalna" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nowy" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Indeks podręcznika UNIX" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Rozdział %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Spis treści rozdziału %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Indeks podręcznika UNIX" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Tworzenie spisu treści" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Nie można znaleźć programu sgml2roff. Proszę zainstalować go lub poprawić " +"ustawienia ścieżki, ustawiając zmienną PATH przed uruchomieniem KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Nie można otworzyć %1." + +#~ msgid "Man output" +#~ msgstr "Zawartość podręcznika" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Michał Rudolf, Łukasz Wojniłowicz" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mrudolf@kdewebdev.org, lukasz.wojnilowicz@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/pl/kio5_mtp.po b/po/pl/kio5_mtp.po new file mode 100644 index 0000000..7871ab5 --- /dev/null +++ b/po/pl/kio5_mtp.po @@ -0,0 +1,37 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Łukasz Wojniłowicz , 2014, 2016, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-06-21 06:06+0200\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 19.07.70\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Nie znaleziono nośników pamięci. Upewnij się, że twoje urządzenie zostało " +"odblokowane i ma włączone MTP w swoich ustawieniach USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Nie można skopiować/przenieść plików na urządzeniu" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Nie znaleziono przechowalni. Może musisz odblokować swoje urządzenie?" diff --git a/po/pl/kio5_nfs.po b/po/pl/kio5_nfs.po new file mode 100644 index 0000000..9aed31e --- /dev/null +++ b/po/pl/kio5_nfs.po @@ -0,0 +1,69 @@ +# translation of kio_nfs.po to Polish +# Version: $Revision: 1569808 $ +# translation of kio_nfs.po to +# Norbert Popiołek +# Michal Rudolf , 2004. +# Łukasz Wojniłowicz , 2014, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2016-03-19 07:20+0100\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Nieobsługiwana wersja NFS" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Błąd RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Brak wolnego miejsca na tym urządzeniu" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "System plików tylko do odczytu" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Za długa nazwa pliku" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Przekroczone dostępne miejsce na dysku" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Błąd NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Nieudane podpinanie %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Nieznany cel" + +#~ msgid "An RPC error occurred." +#~ msgstr "Wystąpił błąd RPC." diff --git a/po/pl/kio5_recentdocuments.po b/po/pl/kio5_recentdocuments.po new file mode 100644 index 0000000..dc1cb0f --- /dev/null +++ b/po/pl/kio5_recentdocuments.po @@ -0,0 +1,24 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Łukasz Wojniłowicz , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-04-29 08:33+0200\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Ostatnie dokumenty" diff --git a/po/pl/kio5_sftp.po b/po/pl/kio5_sftp.po new file mode 100644 index 0000000..d3dbcd2 --- /dev/null +++ b/po/pl/kio5_sftp.po @@ -0,0 +1,452 @@ +# translation of kio_sftp.po to +# Version: $Revision: 1584955 $ +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# +# Michał Rudolf , 2002. +# Marcin Giedz , 2002. +# Michal Rudolf , 2003, 2008. +# Mikolaj Machowski , 2004. +# Krzysztof Lichota , 2005. +# Robert Gomulka , 2006. +# Marta Rybczyńska , 2009, 2010. +# Łukasz Wojniłowicz , 2011, 2012, 2013, 2014, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-12-16 06:06+0100\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +">\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" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Niepoprawne lub nieprawidłowe hasło" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nie można przydzielić wywołań zwrotnych" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nie można ustawić szczegółowości dziennika." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Nie można ustawić dziennika danych użytkownika." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Nie można ustawić dziennika wywołań wstecznych." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Logowanie SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Użyj pola wejściowego 'username' aby odpowiedzieć na to pytanie." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Proszę podać swoje hasło." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Strona:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nie można utworzyć nowej sesji SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nie można ustawić limitu czasowego." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nie można wyłączyć algorytmu Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Nie można ustawić poziomu kompresji." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Nie można ustawić gospodarza." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Nie można ustawić portu." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Nie można ustawić nazwy użytkownika." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nie można rozczłonkować pliku konfiguracji." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Ustalanie połączenia SFTP do gospodarza %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Nie można uzyskać nazwy rodzaju klucza publicznego serwera" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Nie można utworzyć hasza z klucza publicznego serwera" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Nie można utworzyć odcisku palca klucza publicznego serwera" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Nie znaleziono klucza dla serwera %1, ale istnieje inny rodzaj klucza.\n" +"Atakujący mógł zmienić domyślny klucz serwera, żeby przekonać klienta, że " +"klucz nie istnieje.\n" +"Proszę skontaktować się z administratorem systemu.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Klucz serwera %1 uległ zmianie.\n" +"To oznacza, że nastąpił atak DNS SPOOFING albo adres IP serwera i jego klucz " +"zostały zmienione w tym samym czasie.\n" +"Odcisk palca klucza %2 wysłanego przez zdalnego gospodarza to:\n" +" SHA256:%3\n" +"Proszę skontaktować się z administratorem systemu.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Uwaga: Nie można potwierdzić tożsamości gospodarza." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Nie można potwierdzić tożsamości gospodarza %1.\n" +"Odcisk palca klucza %2 to: %3\n" +"Czy kontynuować połączenie?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Uwierzytelnianie nie powiodło się." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Nieudane uwierzytelnienie. Serwer nie wysłał żadnych metod uwierzytelnienia" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Proszę podać nazwę użytkownika i hasło." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Zła nazwa użytkownika lub hasło" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Nie można wysłać zapytania do podsystemu SFTP. Proszę upewnić się, że SFTP " +"jest włączone na serwerze." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nie można zainicjować sesji SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Pomyślnie podłączono do %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Nie znaleziono klucza dla tego gospodarza, ale istnieje inny rodzaj klucza.\n" +"Atakujący mógł zmienić domyślny klucz serwera, żeby przekonać klienta, że " +"klucz nie istnieje.\n" +"Proszę skontaktować się z administratorem systemu.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Klucz gospodarza %1 uległ zmianie.\n" +"To oznacza, że nastąpił atak DNS SPOOFING albo adres IP gospodarza i jego " +"klucz zostały zmienione w tym samym czasie.\n" +"Odcisk palca klucza wysłanego przez gospodarza to:\n" +" %2\n" +"Proszę skontaktować się z administratorem systemu.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Nie można potwierdzić tożsamości gospodarza %1.\n" +"Odcisk palca klucza to: %2\n" +"Czy kontynuować połączenie?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Nieprawidłowy kontekst sftp" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nie można zmienić uprawnień dla\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Nie można odczytać łącza: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Nie określono nazwy gospodarza." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Wystąpił błąd wewnętrzny. Proszę powtórzyć próbę." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Proszę podać nazwę użytkownika i hasło klucza." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Uwaga: Identyfikacja komputera została zmieniona." + +#~ msgid "Connection failed." +#~ msgstr "Połączenie nie powiodło się." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Połączenie zakończone przez zdalny komputer." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "nieoczekiwany błąd SFTP: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "Wersja SFTP %1" + +#~ msgid "Protocol error." +#~ msgstr "Błąd protokołu." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Wystąpił błąd wewnętrzny. Proszę spróbować ponownie." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Wystąpił nieznany błąd podczas kopiowania pliku do '%1'. Proszę spróbować " +#~ "ponownie." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Zdalny serwer nie obsługuje zmiany nazwy plików." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Zdalny serwer nie obsługuje tworzenia dowiązań symbolicznych." + +#~ msgid "Connection closed" +#~ msgstr "Połączenie zamknięte" + +#~ msgid "End of file." +#~ msgstr "Koniec pliku." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "Polecenie SFTP zakończone błędem z niewiadomych powodów." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Serwer SFTP odebrał złą wiadomość." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Zamierzasz wykonać operację nieobsługiwaną przez serwer SFTP." + +#~ msgid "Error code: %1" +#~ msgstr "Kod błędu: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Nie można określić jednocześnie podsystemu i polecenia." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Brak opcji do ssh." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Błąd podczas uruchamiania procesu ssh." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Pojawił sie błąd podczas rozmowy z ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Proszę potwierdzić hasło." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Proszę potwierdzić hasło dla prywatnego klucza SSH." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Autoryzacja do %1 zakończona błędem" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Identyfikacja zdalnego komputera '%1' nie mogła zostać sprawdzona, " +#~ "ponieważ klucz komputera nie występuje w pliku \"known hosts\"." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Ręcznie dodaj klucz komputera do pliku \"known hosts\" lub skontaktuj " +#~ "się z administratorem." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Ręcznie dodaj klucz komputera do %1 lub skontaktuj się z administratorem." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Nie można sprawdzić tożsamości zdalnego komputera '%1'. Odcisk palca " +#~ "klucza tego komputera to:\n" +#~ "%2\n" +#~ "Zanim się połączysz, powinieneś potwierdzić u administratora tego " +#~ "serwera, że odcisk palca jest prawidłowy.\n" +#~ "\n" +#~ "Czy chcesz zaakceptować klucz komputera i połączyć się mimo to?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "OSTRZEŻENIE: Zmieniła się tożsamość zdalnego komputera '%1'!\n" +#~ "\n" +#~ "Ktoś może próbować podsłuchiwać Twoje połączenie albo po prostu " +#~ "administrator serwera zmienił klucz komputera. W każdym razie, powinieneś " +#~ "potwierdzić u administratora serwera, czy odcisk palca klucza się zgadza. " +#~ "Odcisk palca klucza to:\n" +#~ "%2\n" +#~ "Dodaj prawidłowy klucz komputera do pliku \"%3\", aby wyłączyć ten " +#~ "komunikat." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "OSTRZEŻENIE: Zmieniła się tożsamość zdalnego komputera '%1'!\n" +#~ "\n" +#~ "Ktoś może próbować podsłuchiwać Twoje połączenie albo po prostu " +#~ "administrator serwera zmienił klucz komputera. W każdym razie, powinieneś " +#~ "potwierdzić u administratora serwera, czy odcisk palca klucza się zgadza. " +#~ "Odcisk palca klucza to:\n" +#~ "%2\n" +#~ "\n" +#~ "Czy chcesz zaakceptować klucz komputera i połączyć się mimo to?" + +#~ msgid "Host key was rejected." +#~ msgstr "Klucz komputera został odrzucony." diff --git a/po/pl/kio5_smb.po b/po/pl/kio5_smb.po new file mode 100644 index 0000000..5fc5989 --- /dev/null +++ b/po/pl/kio5_smb.po @@ -0,0 +1,200 @@ +# translation of kio_smb.po to polish +# translation of kio_smb.po to +# Version: $Revision: 1584548 $ +# translation of kio_smb.po to +# +# Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc. +# Michał Rudolf , 2002. +# Mikolaj Machowski , 2004. +# Robert Gomulka , 2006. +# Łukasz Wojniłowicz , 2014, 2016, 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-10-11 08:20+0200\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.1\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Proszę o podanie danych uwierzytelniających dla %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Proszę o podanie danych uwierzytelniających dla:\n" +"Serwer = %1\n" +"Zasób = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Nieznany rodzaj pliku, ani katalog, ani plik." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Nie można znaleźć żadnych grup roboczych w twojej sieci lokalnej. Powodem " +"mogą być ustawienia zapory ogniowej." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Brak nośnika w urządzeniu przy dostępie do %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nie można połączyć się z serwerem przy dostępie do %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Wystąpił błąd podczas łączenia się z serwerem odpowiedzialnym za %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Nie znaleziono zasobu na podanym serwerze" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Zły deskryptor pliku" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Podana nazwa nie mogła zostać przekształcona w unikalną nazwę serwera. " +"Upewnij się, że w Twojej sieci nie ma konfliktów nazw pomiędzy systemem nazw " +"stosowanych przez Windows a systemem nazw stosowany przez UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Gospodarz nieosiągalny" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"Biblioteka libsmbclient zgłosiła błąd, ale nie podała powodu. Może to " +"wskazywać na poważny problem z Twoją siecią, ale może również oznaczać " +"problem w bibliotece libsmbclient.\n" +"Jeśli chcesz nam pomóc, prosimy o przysłanie zrzutu tcpdumpa z interfejsu " +"sieciowego, wykonanego w czasie przeglądania (należy zwrócić uwagę, że może " +"on zawierać prywatne dane, więc nie należy go publikować, jeśli nie jesteś " +"pewien, czy je zawiera - możesz wysłać go do programistów, jeśli o niego " +"poproszą)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Nieznany stan błędu: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Wystąpił błąd przy próbie dostępu do %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient nie mógł utworzyć kontekstu" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Proszę się upewnić, że pakiet samba został poprawnie zainstalowany w Twoim " +"systemie." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Nie powiodło się podpięcie udziału \"%1\" z komputera \"%2\" przez " +"użytkownika \"%3\".\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Nie powiodło się odpięcie punktu podpięcia \"%1\".\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Nieznane urządzenie @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient nie mógł zainicjować kontekstu" + +#~ msgid "File does not exist: %1" +#~ msgstr "Plik nie istnieje: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "Błąd inicjalizacji libsmbclient" diff --git a/po/pl/kio5_thumbnail.po b/po/pl/kio5_thumbnail.po new file mode 100644 index 0000000..1b9ad71 --- /dev/null +++ b/po/pl/kio5_thumbnail.po @@ -0,0 +1,87 @@ +# translation of kio_thumbnail.po to +# +# Krzysztof Lichota, 2005. +# Marta Rybczyńska , 2007, 2009. +# Łukasz Wojniłowicz , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-06-16 13:43+0200\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Obróć obraz automatycznie" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Nie podano typu MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Nie podano rozmiaru albo podano nieprawidłowy." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nie można utworzyć miniaturki dla katalogu" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nie podano wtyczki." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nie można wczytać programu tworzącego miniaturki %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nie można utworzyć miniaturki dla %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Nie powiodło się utworzenie miniaturki." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Nie można zapisać obrazka." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Nie powiodło się podłączenie do segmentu pamięci dzielonej %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Obrazek jest zbyt duży dla segmentu pamięci dzielonej" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Krzysztof Lichota" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "krzysiek@lichota.net" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/pt/docs/kioslave5/bookmarks/index.docbook b/po/pt/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..856fa04 --- /dev/null +++ b/po/pt/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        +favoritos + + +XavierVello xavier.vello@gmail.com +JoséPires
        zepires@gmail.com
        Tradução
        +
        + +2008-08-31 +0.2 + +
        + +Este KIO apresenta os seus favoritos como uma página &HTML; agradável e funcional. Poderá aceder a ela se escrever bookmarks:/ na barra de localização do &konqueror;. + +O conteúdo e disposição da página é configurável. Basta apontar o &konqueror; para bookmarks:/config, de modo a invocar a janela de configuração. + +
        + diff --git a/po/pt/docs/kioslave5/bzip2/index.docbook b/po/pt/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..996ad5a --- /dev/null +++ b/po/pt/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,64 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +JoséPires
        zepires@gmail.com
        Tradução
        +
        +
        + +O bzip2 é um programa de compressão. + +O 'kioslave' do BZIP2 não é usado directamente e é dirigido para ser usado como um filtro. Por exemplo o 'kioslave' do TAR pode filtrar um ficheiro através do kioslave do BZIP2, de modo a mostrar o conteúdo de um ficheiro tar.bz2 directamente numa janela do &konqueror;. + +Se você carregar num ficheiro comprimido com uma extensão bz2 no &konqueror;, este 'kioslave' será usado para o descomprimir e abrir como um ficheiro normal (não comprimido). + +Se você é um programador e gostaria de usar o filtro do bzip2, poderá encontrar documentação sobre como usar 'kioslaves' em http://techbase.kde.org + +Veja o manual: bzip2. + +O bzip é o antecessor do 'bzip2'. É usado raramente, hoje em dia, tendo sido substituído pelo 'bzip2', que oferece uma compressão muito melhor. + +
        diff --git a/po/pt/docs/kioslave5/fish/index.docbook b/po/pt/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..03fe123 --- /dev/null +++ b/po/pt/docs/kioslave5/fish/index.docbook @@ -0,0 +1,165 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +JoséPires
        zepires@gmail.com
        Tradução
        +
        + +2010-10-27 +&kde; 4.5 + +
        + +Permite-lhe aceder aos ficheiros de outro computador com o protocolo de Secure SHell (SSH). O computador remoto necessita de estar a correr o servidor de SSH, mas o resto do protocolo usa ferramentas normais da linha de comandos, como é descrito abaixo. + +Use o 'kioslave' do FISH da seguinte forma: fish://maquina ou fish://utilizador@maquina. + +Necessitar de usar barras duplas (//). + +Pode omitir o utilizador (e o símbolo '@' que se segue) se tiver o mesmo utilizador em ambos os computadores. + +Poderá adicionar uma senha no formato fish://utilizador:senha@maquina, mas não será necessário, dado que ser-lhe-á pedida a senha se você não a indicar. + +Se estiver a correr o servidor de SSH num porto que não o padrão, pode indicar esse porto com a sintaxe normal dos &URL;s como aparece em baixo: fish://máquina:número do porto. + +O Fish deverá funcionar com qualquer computador remoto baseado em &UNIX; POSIX. Utiliza os comandos da 'shell' cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed e wc. O Fish inicia a /bin/sh como a sua linha de comandos e assume-a como sendo uma do tipo Bourne (ou compatível, como a bash). Se os comandos sed e file estiverem disponíveis, assim como o ficheiro /etc/apache/magic com as assinaturas dos tipos &MIME;, estas serão usadas para adivinhar os tipos &MIME;. + +Se o Perl estiver disponível na máquina remota, então será este usado em alternativa. A partir daí, só os comandos env e /bin/sh é que serão necessários. A utilização do Perl tem a vantagem adicional de ser mais rápido. + +O Fish pode até funcionar nas máquinas de &Windows;, se as ferramentas como o Cygwin estiverem instaladas. Todos os utilitários acima indicados deverão estar na PATH do sistema, assim como a linha de comandos inicial deverá ser capaz de processar o comando echo FISH:;/bin/sh correctamente. + +
        diff --git a/po/pt/docs/kioslave5/gzip/index.docbook b/po/pt/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..0aa0c81 --- /dev/null +++ b/po/pt/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +JoséPires
        zepires@gmail.com
        Tradução
        +
        +
        + +O gzip é um programa de compressão + +O 'kioslave' do GZIP não é usado directamente e é dirigido para ser usado como um filtro. Por exemplo o 'kioslave' do TAR pode filtrar um ficheiro através do 'kioslave' do GZIP, de modo a mostrar o conteúdo de um ficheiro tar.gz directamente numa janela do &konqueror;. + +Se você carregar num ficheiro comprimido com uma extensão gz no &konqueror;, este 'kioslave' é usado para o descomprimir e abrir como um ficheiro normal (não-comprimido). + +Se você for um programador e gostaria de usar o filtro do 'gzip', poderá encontrar documentação sobre como usar 'kioslaves' em http://techbase.kde.org + +Veja o manual: gzip. + +
        diff --git a/po/pt/docs/kioslave5/info/index.docbook b/po/pt/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..a7ee6e3 --- /dev/null +++ b/po/pt/docs/kioslave5/info/index.docbook @@ -0,0 +1,72 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +JoséPires
        zepires@gmail.com
        Tradução
        +
        +
        + +O 'info' é um tipo de documentação. Os documentos estão num formato de ficheiros chamado 'texinfo' e podem ser lidos na linha de comandos com o programa info. + +O 'ioslave' Info permite-lhe ler as páginas do 'info' instaladas no seu computador dentro do &konqueror;. É muito fácil de utilizar: + +info:gcc + +Isto iria mostrar o nó de topo da documentação do 'info' sobre o compilador &gcc;. + +O Info é um substituto da &GNU; para o man, mas não é usado, em larga escala, fora do 'software' da &GNU;. + +Poderá navegar com facilidade pela documentação do 'info', instalada dentro da aplicação &khelpcenter;, assim como pode usar o 'ioslave' do Info directamente, tanto dentro do &konqueror; como na mini-linha de comandos. + +
        diff --git a/po/pt/docs/kioslave5/man/index.docbook b/po/pt/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..8452658 --- /dev/null +++ b/po/pt/docs/kioslave5/man/index.docbook @@ -0,0 +1,155 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +JoséPires
        zepires@gmail.com
        Tradução
        +
        +
        + +Ao usar o 'ioslave' do MAN, poderá ler as páginas do 'man' instaladas no seu sistema. É simples de usar: + + + +man: + +Verá, neste caso, as secções do manual; carregue numa delas para obter o resto. + + + +man:/fopen + +Verá a página do 'man' sobre o fopen. + + + +man:/fopen(3) + +Ver a página do 'man' sobre o fopen na secção 3. + + + +man:/(3) + +Ver o índice da secção 3. + + + +man:/intro(3) + +Ver a introdução da secção 3. + + + + +Se existir mais que uma página do 'man' para o nome introduzido, irá ver uma lista onde poderá escolher a página de 'man' que deseja ver. + +Existe também uma abreviatura: a #fopen, que tem o mesmo efeito que a de cima. + +Se não encontrar todas as suas páginas do 'man', ajuste o ficheiro de configuração /etc/manpath.config (ou um ficheiro com um nome semelhante, dependendo da sua distribuição) ou ajuste as variáveis de ambiente MANPATH e MANSECT. + +Como em qualquer outro 'ioslave' do &kde;, é possível indicar um &URL; como man:/socket em qualquer aplicação do &kde;. Tente no &kwrite;, para poder ver a página do 'man' no formato &HTML;. + +Contacte a lista de correio: kde-devel@kde.org + +
        diff --git a/po/pt/docs/kioslave5/network/index.docbook b/po/pt/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..cd21fb9 --- /dev/null +++ b/po/pt/docs/kioslave5/network/index.docbook @@ -0,0 +1,93 @@ + + + +]> + +
        + +network + + + + Friedrich W. H.Kossebau kossebau@kde.org + JoséPires
        zepires@gmail.com
        Tradução
        +
        + + 2016-12-11 + Aplicações 16.12 + +
        + + +O IO-Slave 'network' permite ao utilizador navegar pelos dispositivos ligados à rede local, bem como os serviços em execução neles. Também é possível iniciar programas para os serviços cujo tipo seja conhecido. + +Para ver todos os dispositivos encontrados, escreva network://. + +O network://máquina-do-dispositivo irá apresentar os serviços encontrados em execução num dispositivo. + +A selecção de um serviço irá conduzir a um URL correspondente ao serviço, desde que exista um adequado, p.ex. ssh://máquina-do-dispositivo:porto/ para um serviço de SSH. Cada tipo de serviço conhecido tem um tipo MIME associado a ele, sendo que assim um utilizador poderá associar novas rotinas de tratamento para os URL's resultantes. Isto é feito com o módulo de controlo Associações de Ficheiros no &systemsettings;. Os tipos MIME dos serviços chamam-se de momento inode/vnd.kde.service.*. + + + O KIO-Slave 'network' só encontra e apresenta de momento os dispositivos e serviços que sejam anunciados através da plataforma de descoberta de serviços DNS-SD. + + +
        + diff --git a/po/pt/docs/kioslave5/nfs/index.docbook b/po/pt/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..4ebe910 --- /dev/null +++ b/po/pt/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +JoséPires
        zepires@gmail.com
        Tradução
        +
        +
        +O protocolo NFS da Sun possibilita um acesso remoto transparente pelos sistemas de partilha de ficheiros nas várias redes. O protocolo NFS está desenhado para ser independente das máquinas, sistemas operativos, arquitectura da rede e do protocolo de transporte. Esta independência é conseguida através do uso de primitivas de RPC (Remote Procedure Call) definidas sobre uma XDR (eXternal Data Representation). + +O protocolo de suporte MOUNT executa as funções específicas do sistema operativo, as quais permitem aos clientes associarem árvores de pastas remotas a um ponto no sistema de ficheiros local. O processo de montagem também permite ao servidor garantir privilégios de acesso remoto a um conjunto restrito de clientes através do controlo das exportações. + +O 'Lock Manager' (Gestor de Bloqueios) disponibiliza o suporte para o bloqueio de ficheiros, quando é usado no ambiente do NFS. O protocolo NLM (Network Lock Manager) isola os aspectos inerentes ao estado do bloqueio dos ficheiros num protocolo em separado. + +Referência: http://www.networksorcery.com/enp/protocol/nfs.htm + +Veja o manual: nfs. +
        diff --git a/po/pt/docs/kioslave5/recentdocuments/index.docbook b/po/pt/docs/kioslave5/recentdocuments/index.docbook new file mode 100644 index 0000000..a8e8e20 --- /dev/null +++ b/po/pt/docs/kioslave5/recentdocuments/index.docbook @@ -0,0 +1,74 @@ + + + +]> + +
        +Documentos Recentes + + + + + &Burkhard.Lueck;&Burkhard.Lueck.mail; +JoséPires
        zepires@gmail.com
        Tradução
        +
        + +2016-12-01 +Aplicações 16.12 + +
        + +Um 'kioslave' para mostrar os documentos ou &URL;'s recentes na janela de ficheiros, no Menu de Aplicações e no &krunner;. + +Poderá usar o 'kioslave' desta forma: + +Escreva recentdocuments:/ na barra de localização do &dolphin;, &konqueror; e na janela de ficheiros para apresentar os documentos ou &URL;'s abertos recentemente. + +Poderá adicionar um item à barra de Locais: Carregue com o botão direito na barra lateral, escolha a opção Adicionar um Item, introduza recentdocuments:/ no campo Localização e grave-o. Deverá ficar disponível agora em todas as janelas de ficheiros, a menos que assinale para mostrar o item apenas nesta aplicação. + +No módulo do &systemsettings; Pesquisa no Plasma, active o 'plugin' de pesquisa Documentos Recentes para usar este 'kioslave' no &krunner;. + +No Menu de Aplicações, adicione um item de menu com os documentos recentes no topo do menu, activando a opção Mostrar os documentos recentes na página de configuração. + +
        diff --git a/po/pt/docs/kioslave5/sftp/index.docbook b/po/pt/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..8a1c11e --- /dev/null +++ b/po/pt/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,51 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +JoséPires
        zepires@gmail.com
        Tradução
        +
        +
        +O SFTP é um protocolo de transferência de ficheiros seguro. O sftp é um programa interactivo de transferência de ficheiros, semelhante ao ftp, só que realiza todas as operações por um transporte cifrado de ssh. Pode usar muitas das funcionalidades do ssh, incluindo a autenticação por chave pública e a compressão. + +Veja o manual: sftp. + +
        diff --git a/po/pt/docs/kioslave5/smb/index.docbook b/po/pt/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..bb01b4e --- /dev/null +++ b/po/pt/docs/kioslave5/smb/index.docbook @@ -0,0 +1,100 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; +JoséPires
        zepires@gmail.com
        Tradução
        +
        +2016-12-11 +Aplicações 16.12 +
        +O 'ioslave' smb permite-lhe navegar nas partilhas de uma rede de &Windows; (ou Samba). + +Para ver os grupos de trabalho, escreva smb:/. +O smb://um_grupo_de_trabalho irá enumerar as máquinas nesse grupo. +Para ver as partilhas de uma máquina, escreva smb://a_maquina ou smb:/a_maquina. +Para aceder a uma partilha directamente, escreva smb://a_maquina/a_partilha ou smb:/a_maquina/a_partilha + +O 'ioslave' smb necessita da 'libsmbclient' para ser utilizado. + +Poderá definir o seu utilizador e senha por omissão no &systemsettings; em Rede e ConectividadePartilhaPartilhas de Windows. Isto é especialmente útil se você for um membro de um domínio de &Windows; NT. Aí, pode também definir o nome do seu grupo de trabalho, embora não seja na maioria dos casos necessário. Se o valor por omissão não estiver definido o nome de utilizador e a senha são pedidos. + +
        + diff --git a/po/pt/docs/kioslave5/tar/index.docbook b/po/pt/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..18e3264 --- /dev/null +++ b/po/pt/docs/kioslave5/tar/index.docbook @@ -0,0 +1,41 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +JoséPires
        zepires@gmail.com
        Tradução
        +
        +
        +Um programa de armazenamento em arquivo, desenhado para guardar e extrair ficheiros a partir de um pacote conhecido como ficheiro 'tar'. Um ficheiro 'tar' pode ser criado numa unidade de fita magnética, mas também é normal gravar um ficheiro 'tar' num ficheiro normal. + +Veja o manual: tar. + +
        diff --git a/po/pt/docs/kioslave5/thumbnail/index.docbook b/po/pt/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..29ee7b5 --- /dev/null +++ b/po/pt/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +JoséPires
        zepires@gmail.com
        Tradução
        +
        +2016-12-11 +Aplicações 16.12 +
        +O 'kioslave' 'thumbnail' é usado pelo &kde; para a geração persistente e transparente na rede de miniaturas de imagens. + +O 'kioslave' thumbnail utiliza 'plugins' para gerar os miniaturas propriamente ditas. Poderá activar a visualização destes no submenu Ver Antevisão, que está disponível no &dolphin; ou no &konqueror; quando está no modo de gestão de ficheiros. + +O 'kioslave' 'thumbnail' não é útil directamente para um utilizador mas, se for um programador, pode utilizá-lo dentro das suas próprias aplicações para gerar antevisões de ficheiros. + +Veja a documentação no código para mais informações. Pode-a encontrar na pasta do código thumbnail + +
        diff --git a/po/pt/docs/kioslave5/xz/index.docbook b/po/pt/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..f81c5a7 --- /dev/null +++ b/po/pt/docs/kioslave5/xz/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +JoséPires
        zepires@gmail.com
        Tradução
        +
        +
        + +O Xz é um programa de compressão + +O 'kioslave' xz não pode ser usado directamente, devendo ser usado como um filtro. Por exemplo, o 'kioslave' 'tar' poderá filtrar um ficheiro através do 'kioslave' 'xz', de modo a mostrar o conteúdo de um ficheiro tar.lzma ou tar.xz directamente numa janela do &konqueror;. + +Se carregar num ficheiro comprimido com o .lzma ou tar.xz no &konqueror;, este 'kioslave' é usado para o descomprimir e o abrir como um ficheiro normal (não-comprimido). + +Se for um programador, e quiser usar o filtro 'xz', poderá encontrar alguma documentação sobre a utilização dos 'kioslaves' em http://techbase.kde.org + +Veja o manual: xz. + +
        diff --git a/po/pt/kfileaudiopreview5.po b/po/pt/kfileaudiopreview5.po new file mode 100644 index 0000000..90e32fe --- /dev/null +++ b/po/pt/kfileaudiopreview5.po @@ -0,0 +1,33 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-20 13:57+0000\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Tocar &automaticamente" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "iniciar a reprodução" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pausar a reprodução" diff --git a/po/pt/kio5_activities.po b/po/pt/kio5_activities.po new file mode 100644 index 0000000..f50c0e5 --- /dev/null +++ b/po/pt/kio5_activities.po @@ -0,0 +1,217 @@ +msgid "" +msgstr "" +"Project-Id-Version: kactivities5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-12-28 13:58+0000\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-POFile-SpellExtra: Cukic QML\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Actividades" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "A carregar..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "O gestor de actividades não está em execução" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Associar à actividade actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Dissociar da actividade actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Associar a:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Dissociar de:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Actividade" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Actividade actual" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "José Nuno Pires" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "zepires@gmail.com" + +#~ msgid "Default" +#~ msgstr "Predefinição" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Mudar para a actividade \"%1\"" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Actividade" + +#~ msgid "Delete activity" +#~ msgstr "Apagar a actividade" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Tem a certeza que deseja apagar a '%1'?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Ocorreu um erro ao carregar os ficheiros QML. Verifique a sua " +#~ "instalação.\n" +#~ "Falta o %1" + +#~ msgid "Create a new activity" +#~ msgstr "Criar uma nova actividade" + +#~ msgid "Activity settings" +#~ msgstr "Configuração da actividade" + +#~ msgid "General" +#~ msgstr "Geral" + +#~ msgid "Other" +#~ msgstr "Outro" + +#~ msgid "Create" +#~ msgstr "Criar" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Atalho para mudar para esta actividade:" + +#~ msgid "Activity information" +#~ msgstr "Informação da actividade" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Description" +#~ msgstr "Descrição" + +#~ msgid "Wallpaper" +#~ msgstr "Papel de Parede" + +#~ msgid "Change..." +#~ msgstr "Modificar..." + +#~ msgid "Icon" +#~ msgstr "Ícone" + +#~ msgid "Switching" +#~ msgstr "Mudança" + +#~ msgid "Privacy" +#~ msgstr "Privacidade" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "para sempre" + +#~ msgid "Forget the last hour" +#~ msgstr "Esquecer a última hora" + +#~ msgid "Forget the last two hours" +#~ msgstr "Esquecer as duas últimas horas" + +#~ msgid "Forget a day" +#~ msgstr "Esquecer um dia" + +#~ msgid "Forget everything" +#~ msgstr "Esquecer tudo" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " mês" +#~ msgstr[1] " meses" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "durante " + +#~ msgid "Create activity..." +#~ msgstr "Criar uma actividade..." + +#~ msgid "Activity switching" +#~ msgstr "Mudança de actividade" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Percorrer as actividades" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Percorrer as actividades (inverso)" + +#~ msgid "Form" +#~ msgstr "Formulário" + +#~ msgid "Remember opened documents:" +#~ msgstr "Recordar os documentos abertos:" + +#~ msgid "For a&ll applications" +#~ msgstr "Para &todas as aplicações" + +#~ msgid "&Do not remember" +#~ msgstr "&Não recordar" + +#~ msgid "O&nly for specific applications" +#~ msgstr "&Apenas em aplicações específicas" + +#~ msgid "Keep history" +#~ msgstr "Manter o histórico" + +#~ msgid "Clear recent history" +#~ msgstr "Limpar o histórico recente" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Excluir todas as aplicações fora desta lista" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Recordar o ecrã virtual actual para cada actividade (necessita de " +#~ "reiniciar)" + +#~ msgid "Shortcuts" +#~ msgstr "Atalhos" diff --git a/po/pt/kio5_archive.po b/po/pt/kio5_archive.po new file mode 100644 index 0000000..4cc28d6 --- /dev/null +++ b/po/pt/kio5_archive.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2005-09-25 22:55+0100\n" +"Last-Translator: José Nuno Pires \n" +"Language-Team: pt \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Não foi possível aceder ao ficheiro, talvez por ser um formato de ficheiro " +"não suportado.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"O ficheiro do pacote não conseguiu ser aberto, talvez por ser um formato de " +"ficheiro não suportado.\n" +"%1" diff --git a/po/pt/kio5_bookmarks.po b/po/pt/kio5_bookmarks.po new file mode 100644 index 0000000..23bb9cb --- /dev/null +++ b/po/pt/kio5_bookmarks.po @@ -0,0 +1,58 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-10-31 10:12+0000\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-POFile-SpellExtra: kiobookmarks bookmarks Vello\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Raiz" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Locais" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Não foi possível encontrar a configuração dos favoritos" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Não foi possível encontrar o editor de favoritos" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Pedido inválido: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Não existem ainda nenhuns favoritos para mostrar." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"O ficheiro CSS do kio_bookmarks não foi encontrado. O resultado\n" +"irá aparecer feio. Verifique a sua instalação." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Os Meus Favoritos" diff --git a/po/pt/kio5_fish.po b/po/pt/kio5_fish.po new file mode 100644 index 0000000..2d56e38 --- /dev/null +++ b/po/pt/kio5_fish.po @@ -0,0 +1,39 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-08-21 11:00+0100\n" +"Last-Translator: Pedro Morais \n" +"Language-Team: pt \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: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "A ligar..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "A inicializar o protocolo..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Ligação Local" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticação de SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Desligado." diff --git a/po/pt/kio5_info.po b/po/pt/kio5_info.po new file mode 100644 index 0000000..78934be --- /dev/null +++ b/po/pt/kio5_info.po @@ -0,0 +1,24 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-03-27 18:35+0000\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Não é possível localizar o ficheiro '%1', que é necessário para executar " +"este serviço. Verifique por favor a sua instalação de 'software'." diff --git a/po/pt/kio5_man.po b/po/pt/kio5_man.po new file mode 100644 index 0000000..fdc1686 --- /dev/null +++ b/po/pt/kio5_man.po @@ -0,0 +1,199 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-13 11:37+0100\n" +"Last-Translator: José Nuno Pires \n" +"Language-Team: pt \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Spell-Extra: man\n" +"X-POFile-SpellExtra: roff KMan sgml MANPATH man Man \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Não existe nenhuma página do manual correspondente ao %1.Verifique se não se enganou a escrever o nome da página " +"que deseja.Tenha em atenção que deverá ter cuidado com a utilização de " +"maiúsculas ou minúsculas!Se o nome estiver correcto, então poderá " +"ser necessário definir um local de pesquisa para as páginas de manual, " +"esteja esta na variável de ambiente MANPATH ou num ficheiro " +"correspondente da pasta /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Foi encontrada a página %1 do 'man', mas não foi " +"possível lê-la ou processá-la." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"A página de manual indicada faz referência a outra página %1,mas a página referenciada %2 não foi " +"encontrada." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Erro do Visualizador de Páginas do Manual" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Existe mais do que uma página do 'man' correspondente:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiplas Páginas do Manual" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Nota: se você ler uma página do manual na sua língua, tenha em atenção que " +"esta poderá conter alguns erros ou estar desactualizada. Em caso de dúvida, " +"deverá ver também a versão em inglês." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Ficheiros de inclusão" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Ficheiros de inclusão (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Comandos do Utilizador" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Comandos do Utilizador (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Chamadas de Sistema" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Sub-Rotinas" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Módulos de Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Funções de Rede" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formatos de Ficheiros" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Jogos" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversos" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administração de Sistemas" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "'Kernel'" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentação Local" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índice da Página Principal dos Manuais" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Secção %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índice da secção %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Índice da Página do Manual" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "A Gerar o Índice" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Não foi possível encontrar o programa sgml2roff no seu " +"sistema. Instale-o por favor, se necessário, e estenda as localizações de " +"procura, bastando para isso ajustar a variável de ambiente de ambiente " +"PATH antes de iniciar o KDE." diff --git a/po/pt/kio5_mtp.po b/po/pt/kio5_mtp.po new file mode 100644 index 0000000..9dde998 --- /dev/null +++ b/po/pt/kio5_mtp.po @@ -0,0 +1,29 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-16 10:24+0000\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-POFile-SpellExtra: MTP\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Não foram encontrados dispositivos de armazenamento. Certifique-se que o seu " +"dispositivo está desbloqueado e tem o MTP activo na sua configuração de " +"ligação por USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Não é possível copiar/mover os ficheiros para o próprio dispositivo" diff --git a/po/pt/kio5_network.po b/po/pt/kio5_network.po new file mode 100644 index 0000000..8ac9359 --- /dev/null +++ b/po/pt/kio5_network.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-24 17:47+0000\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Rede" diff --git a/po/pt/kio5_nfs.po b/po/pt/kio5_nfs.po new file mode 100644 index 0000000..7e6fbf5 --- /dev/null +++ b/po/pt/kio5_nfs.po @@ -0,0 +1,59 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-12-18 11:09+0000\n" +"Last-Translator: José Nuno Pires \n" +"Language-Team: pt \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: RPC \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: A versão do NFS não é suportada" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Erro de RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Não há mais espaço no dispositivo" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "O sistema de ficheiro é só para leitura" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "O nome do ficheiro é demasiado longo" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Foi ultrapassada a quota de disco" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Erro do NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Não foi possível montar o %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Destino desconhecido" diff --git a/po/pt/kio5_recentdocuments.po b/po/pt/kio5_recentdocuments.po new file mode 100644 index 0000000..ba9865b --- /dev/null +++ b/po/pt/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-12 23:27+0000\n" +"Last-Translator: José Nuno Coelho Pires \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documentos Recentes" diff --git a/po/pt/kio5_sftp.po b/po/pt/kio5_sftp.po new file mode 100644 index 0000000..f72c789 --- /dev/null +++ b/po/pt/kio5_sftp.po @@ -0,0 +1,281 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-11-12 16:30+0000\n" +"Last-Translator: José Nuno Pires \n" +"Language-Team: pt \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: SFTP Nagle SHA\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "A senha é incorrecta ou inválida" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Não foi possível reservar as rotinas" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Não foi possível definir o nível descritivo do registo." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Não foi possível definir os dados de utilizador do registo." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Não foi possível definir a chamada de retorno do registo." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Ligação de SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Use o campo do utilizador para responder a esta questão." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Indique por favor a sua senha." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "'Site':" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Não foi possível criar uma nova sessão de SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Não foi possível definir um tempo-limite." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Não foi possível desactivar o Algoritmo de Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Não foi possível definir a compressão." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Não foi possível definir a máquina." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Não foi possível definir o porto." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Não foi possível definir o utilizador." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Não foi possível processar o ficheiro de configuração." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "A abrir a ligação de SFTP à máquina %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Não foi possível obter o nome do tipo de chave pública do servidor" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Não foi possível criar o código a partir da chave pública do servidor" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" +"Não foi possível criar a impressão-digital para a chave pública do servidor" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"A chave da máquina %1 para este servidor não foi encontrada, mas existe " +"outro tipo de chave.\n" +"Um atacante poderá alterar a chave predefinida do servidor, para confundir o " +"cliente, fazendo-o crer que a chave não existe\n" +"Contacte por favor o seu administrador de sistemas.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"A chave da máquina para o servidor %1 foi alterada.\n" +"Isto poderá tanto significar que está uma BURLA DE DNS em curso, ou que o " +"endereço IP da máquina e a sua chave possam ter mudado ao mesmo tempo.\n" +"A impressão digital da chave %2 enviada pela máquina remota é:\n" +" SHA256: %3\n" +"Contacte por favor o seu administrador de sistema.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Aviso: Não é possível verificar a identidade da máquina." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Não é possível estabelecer a autenticidade da máquina %1.\n" +"A impressão digital da chave %2 é: %3\n" +"Tem a certeza que deseja continuar a ligação?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "A autenticação falhou." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"A autenticação não teve sucesso. O servidor não enviou nenhum método de " +"autenticação" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Indique o seu utilizador e senha." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "O utilizador ou a senha são incorrectos." + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Não foi possível fazer um pedido ao sub-sistema de SFTP. Certifique-se que o " +"SFTP está activo no servidor." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Não foi possível inicializar a sessão de SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "A ligação a %1 foi bem sucedida" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"A chave da máquina para este servidor não foi encontrada, mas existe outro " +"tipo de chave.\n" +"Um atacante poderá alterar a chave predefinida do servidor, para confundir o " +"cliente, fazendo-o crer que a chave não existe\n" +"Contacte por favor o seu administrador de sistemas.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"A chave da máquina para o servidor %1 foi alterada.\n" +"Isto poderá tanto significar que está uma BURLA DE DNS em curso, ou que o " +"endereço IP da máquina e a sua chave possam ter mudado ao mesmo tempo.\n" +"A impressão digital da chave enviada pela máquina remota é:\n" +" %2\n" +"Contacte por favor o seu administrador de sistema.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Não é possível estabelecer a autenticidade da máquina %1.\n" +"A impressão digital da chave é: %2\n" +"Tem a certeza que deseja continuar a ligação?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexto de SFTP inválido" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Não foi possível mudar as permissões de\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Não foi possível ler a ligação: %1" diff --git a/po/pt/kio5_smb.po b/po/pt/kio5_smb.po new file mode 100644 index 0000000..0a0bae7 --- /dev/null +++ b/po/pt/kio5_smb.po @@ -0,0 +1,189 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-04 13:21+0000\n" +"Last-Translator: José Nuno Pires \n" +"Language-Team: pt \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: libsmbclient stat tcpdump \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Existem várias opções para se autenticar nas partilhas de SMB.utilizador: Ao autenticar-se numa rede " +"doméstico, o nome do utilizador no servidor é suficienteutilizador@dominio.com: Os nomes de " +"contas empresariais modernos têm o formato de endereços de e-mailDOMÍNIO\\utilizador: Para as redes " +"empresariais antigas ou grupos de trabalho, poderá ter de anteceder o nome " +"NetBIOS do domínio (pré-Windows 2000)anónimo: Poderá tentar autenticações anónimas com um utilizador e senha " +"em branco. Dependendo da configuração do servidor, poderá ser necessário " +"indicar um nome de utilizador" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Indique a informação de autenticação para %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Indique a informação de autenticação para o:\n" +"Servidor = %1\n" +"Partilha = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tipo de ficheiro desconhecido, não é directoria nem ficheiro." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Não foi possível encontrar qualquer grupo de trabalho na sua rede local. " +"Isto poderá acontecer devido a uma 'firewall' activa." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Disco não encontrado no dispositivo %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Não foi possível ligar à maquina para %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Erro ao ligar ao servidor responsável por %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Não foi possível encontrar a partilha no servidor" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descritor de ficheiro inválido" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Não foi possível resolver o nome dado para um servidor único. Verifique que " +"a sua rede está configurada sem conflitos entre os nomes utilizados pelo " +"Windows e pela resolução de nomes UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Máquina inacessível" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"A libsmbclient devolveu um erro, mas não indicou qual. Isto pode indicar um " +"problema grave na sua rede - mas pode também indicar um problema na " +"libsmbclient.\n" +"Se nos quiser ajudar, envie-nos um tcpdump da interface de rede enquanto " +"tentar navegar (atenção: esta informação pode conter dados confidenciais, " +"por isso não a envie se não tiver a certeza - pode enviá-la de forma privada " +"aos programadores se eles a pedirem)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condição de erro desconhecida: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Ocorreu um erro ao tentar aceder ao %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "A libsmbclient não conseguiu criar um contexto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Verifique que o pacote samba está correctamente instalado no seu sistema." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"A montagem da partilha \"%1\" da máquina \"%2\" pelo utilizador \"%3\" " +"falhou.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"A desmontagem do ponto \"%1\" falhou.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Dispositivo Desconhecido @ %1" diff --git a/po/pt/kio5_thumbnail.po b/po/pt/kio5_thumbnail.po new file mode 100644 index 0000000..f5dd0f1 --- /dev/null +++ b/po/pt/kio5_thumbnail.po @@ -0,0 +1,81 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-02-28 10:26+0000\n" +"Last-Translator: José Nuno Pires \n" +"Language-Team: pt \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: ThumbCreator kiothumbmail\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rodar automaticamente a imagem" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Não foi indicado nenhum tipo MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "O tamanho não existe ou é inválido." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Não foi possível criar a miniatura da pasta" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Não foi indicado qualquer 'plugin'." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Não foi possível carregar o ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Não foi possível criar a miniatura de %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Não foi possível criar uma miniatura." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Não foi possível gravar a imagem." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Não foi possível anexar ao segmento de memória partilhada %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "A imagem é demasiado grande para o segmento de memória partilhada" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "José Nuno Pires,Pedro Morais" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "zepires@gmail.com,morais@kde.org" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/pt_BR/docs/kioslave5/bookmarks/index.docbook b/po/pt_BR/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..8baed69 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        +bookmarks + + +XavierVello xavier.vello@gmail.com +Marcus Gama
        marcus.gama@gmail.com
        Tradução
        +
        + +31/08/2008 +0.2 + +
        + +Este KIO apresenta os seus favoritos como uma página &HTML; agradável e funcional. Você poderá acessá-la digitando bookmarks:/ na barra de localização do &konqueror;. + +O conteúdo e disposição da página é configurável. Basta apontar o &konqueror; para bookmarks:/config, de modo a invocar a janela de configuração. + +
        + diff --git a/po/pt_BR/docs/kioslave5/bzip2/index.docbook b/po/pt_BR/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..ba968c0 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,64 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +Lisiane Sztoltz
        lisiane@conectiva.com.br
        Tradução
        +
        +
        + +O bzip2 é um programa de compressão. + +O 'kioslave' do 'bzip2' não é utilizável diretamente, e a intenção é usá-lo como filtro. Por exemplo, o 'kioslave' do 'tar' pode filtrar um arquivo por meio do 'kioslave' do 'bzip2', a fim de exibir o conteúdo de um arquivo tar.bz2 diretamente na janela do &konqueror;. + +Se você clicar em um arquivo comprimido com .bz2 no &konqueror;, o 'kioslave' é usado para descomprimi-lo e exibi-lo como um arquivo normal (sem compressão). + +Se você é um desenvolvedor, e gostaria de usar o filtro 'bzip2', pode encontrar documentação sobre o uso de 'kioslaves' em http://techbase.kde.org + +Veja o manual: bzip2. + +O bzip é o antecessor do 'bzip2'. É usado raramente, hoje em dia, tendo sido substituído pelo 'bzip2', que oferece uma compressão muito melhor. + +
        diff --git a/po/pt_BR/docs/kioslave5/fish/index.docbook b/po/pt_BR/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..f0295d8 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/fish/index.docbook @@ -0,0 +1,179 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +Lisiane Sztoltz Teixeira
        lisiane@kdemail.net
        Tradução
        MarcusGama
        marcus.gama@gmail.com
        Tradução
        +
        + +27/10/2010 +&kde; 4.5 + +
        + +Permite-lhe acessar aos arquivos de outro computador com o protocolo de Secure SHell (SSH). O computador remoto necessita ter rodando o servidor de SSH, mas o resto do protocolo usa ferramentas normais da linha de comando, como descrito abaixo. + +Use o 'kioslave' do 'fish' da seguinte forma: fish://máquina ou fish://usuário@máquina. + +Você precisa usar barras duplas (//). + +Você pode omitir o usuário (e o símbolo '@' que se segue) se tiver o mesmo usuário em ambos os computadores. + +Você poderá adicionar uma senha no formato fish://usuário:senha@máquina, mas não será necessário, uma vez que será pedida a senha se você não a indicar. + +Se estiver rodando o servidor de SSH numa porta que não a padrão, você pode indicar essa porta com a sintaxe normal das &URL;s como aparece abaixo: fish://máquina:número da porta. + +O 'fish' deve funcionar com qualquer computador remoto baseado em &UNIX; e compatível com o padrão POSIX. Ele usa os comandos shell cat, chgrp,chmod, chown, cp , dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed e wc. O protocolo 'fish' inicia com o /bin/sh como seu shell padrão, e espera mudar para um Bourne shell (ou compatível, como o bash). Se os comandos sed e file estiverem disponíveis, bem como o arquivo /etc/apache/magic com o tipo &MIME; para assinaturas, estes serão usados para adivinhar tipos &MIME;. + +Se o Perl estiver disponível na máquina remota, ele será usado. Então, env e /bin/sh serão necessários. Usando o Perl se tem o benefício adicional de ser mais rápido. + +O 'fish' pode até mesmo funcionar em máquinas &Windows;, se ferramentas como o Cygwin estiverem instaladas. Todos os utilitários acima devem estar no PATH do sistema, e o shell inicial deve ser capaz de processar o comando echo FISH:;/bin/sh corretamente. + +
        diff --git a/po/pt_BR/docs/kioslave5/gzip/index.docbook b/po/pt_BR/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..7202fad --- /dev/null +++ b/po/pt_BR/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +Lisiane Sztoltz
        lisiane@conectiva.com.br
        Tradução
        +
        +
        + +O gzip é um programa de compressão + +O 'kioslave' do 'gzip' não é utilizável diretamente, e a intenção é usá-lo como filtro. Por exemplo, o 'kioslave' do 'tar' pode filtrar um arquivo por meio do 'kioslave' do 'gzip', a fim de exibir o conteúdo de um arquivo tar.gz diretamente na janela do &konqueror;. + +Se você clicar em um arquivo comprimido com gz no &konqueror;, o 'kioslave' é usado para descomprimi-lo e exibi-lo como um arquivo normal (sem compressão). + +Se você é um desenvolvedor, e gostaria de usar o filtro 'gzip', pode encontrar documentação sobre o uso de 'kioslaves' em http://techbase.kde.org + +Veja o manual: gzip. + +
        diff --git a/po/pt_BR/docs/kioslave5/info/index.docbook b/po/pt_BR/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..242dc59 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/info/index.docbook @@ -0,0 +1,72 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +Lisiane Sztoltz
        lisiane@conectiva.com.br
        Tradução
        +
        +
        + +O 'Info' é um tipo de documentação. Os documentos ficam em um formato de arquivo chamado 'textinfo', e podem ser lidos da linha de comando com o programa info. + +O escravo do 'Info' permite a você ler as páginas 'info' instaladas em seu sistema, de dentro do &konqueror;. Você pode usá-lo muito facilmente: + +info:gcc + +Isto iria mostrar o nó de topo da documentação do 'info' sobre o compilador &gcc;. + +O 'Info' é um substituto da &GNU; para o man, mas não é usado, em larga escala, fora do software da &GNU;. + +Você pode navegar facilmente por uma documentação 'info' que você tem instalada de dentro do aplicativo do &khelpcenter;, ou pode usar o escravo do 'info' diretamente de dentro do &konqueror;. + +
        diff --git a/po/pt_BR/docs/kioslave5/man/index.docbook b/po/pt_BR/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..dd1542e --- /dev/null +++ b/po/pt_BR/docs/kioslave5/man/index.docbook @@ -0,0 +1,155 @@ + + + +]> + +
        +Manual + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +Lisiane Sztoltz
        lisiane@conectiva.com.br
        Tradução
        +
        +
        + +Usando o escravo do 'man' você conseguirá ler as páginas de manual instaladas em seu sistema. É fácil de usar: + + + +man: + +Veja as seções do manual e clique pra encontrar o resto. + + + +man:/fopen + +Ver a página do manual do fopen. + + + +man:/fopen(3) + +Ver a seção 3 da página do manual do fopen. + + + +man:/(3) + +Ver o índice da seção 3. + + + +man:/intro(3) + +Ver a introdução da seção 3. + + + + +Se existir mais de uma página do 'man' para o nome introduzido, você irá ver uma lista onde poderá escolher a página de 'man' que deseja acessar. + +Existe também um atalho: #fopen, que possui o mesmo efeito do que foi descrito acima. + +Se você não encontrar todas as suas páginas de manual, ajuste o arquivo de configuração /etc/manpath.config (ou um arquivo com um nome semelhante, dependendo da sua distribuição) ou ajuste as variáveis de ambiente MANPATH e MANSECT. + +Como em qualquer outro escravo do &kde;, é possível indicar uma &URL; como man:/socket em qualquer aplicativo do &kde;. Tente no &kwrite;, para poder ver a página do manual no formato &HTML;. + +Lista de discussão para contato: kde-devel@kde.org + +
        diff --git a/po/pt_BR/docs/kioslave5/network/index.docbook b/po/pt_BR/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..cd84400 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/network/index.docbook @@ -0,0 +1,93 @@ + + + +]> + +
        + +network + + + + Friedrich W. H.Kossebau kossebau@kde.org + Luiz FernandoRanghetti
        elchevive@opensuse.org
        Tradução
        +
        + + 28/04/2009 + 0.1 + +
        + + +O escravo de rede habilita o usuário a navegar os dispositivos conectados a rede local e os serviços sendo executados neles. Também é possível iniciar programas para os serviços cujos tipos são conhecidos. + +Para ver todos os dispositivos encontrados, digite network:/. + +network:/nome_de_máquina_do_dispositivo irá listar os serviços em execução no dispositivo. + +Selecionar um serviço irá encaminhar a uma URL que corresponde ao serviço apropriado, por exemplo: ssh:/nome_de_máquina_do_dispositivo:porta/ para um serviço SSH. Cada serviço conhecido tem um tipo MIME associado, então o usuário pode atribuir novos manipuladores para as URLs resultantes. Isto é feito com o módulo de controle Associações de arquivos nas &systemsettings;. Os tipos MIME dos serviços são todos atualmente chamados de inode/vnd.kde.service.*. + + + O 'kioslave' de rede atualmente apenas encontra e exibe os dispositivos e serviços que estão ativamente se anunciando usando a infraestrutura de descoberta de serviços DNS-SD. + + +
        + diff --git a/po/pt_BR/docs/kioslave5/nfs/index.docbook b/po/pt_BR/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..479d647 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +Lisiane Sztoltz
        lisiane@conectiva.com.br
        Tradução
        +
        +
        +O protocolo NFS da Sun fornece um acesso remoto transparente para sistemas de arquivos compartilhados por meio de redes. O protocolo NFS é projetado para ser independente de máquina, sistema operacional, arquitetura de rede e protocolo de transporte. Esta independência é conseguida através de Chamadas de Procedimento Remotas (RPC ou Remote Procedure Call) que são integradas na Representação de Dados Externos (ou XDR ou eXternal Data Representation). + +O protocolo MOUNT suportado executa as funções específicas do sistema operacional que permite que clientes anexem árvores de pastas remotas a um ponto dentro do sistema de arquivos local. O processo de montagem permite também ao servidor garantir privilégios de acesso remoto a um conjunto restrito de clientes, via controle de exportação. + +O Gerenciador de Bloqueios fornece o suporte a bloqueio de arquivos, quando usado no ambiente NFS. O protocolo do Gerenciador de Bloqueios de Rede (NLM) isola os aspectos de herança de estado do bloqueio de arquivo dentro de um protocolo separado. + +Fonte: http://www.networksorcery.com/enp/protocol/nfs.htm + +Veja o manual: nfs. +
        diff --git a/po/pt_BR/docs/kioslave5/sftp/index.docbook b/po/pt_BR/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..27d5a5e --- /dev/null +++ b/po/pt_BR/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +Lisiane Sztoltz
        lisiane@conectiva.com.br
        Tradução
        +
        +
        +O SFTP é um protocolo de transferência segura de arquivos. O sftp é um programa de transferência de arquivos interativo, similar ao 'ftp', mas executa todas as operações sobre uma camada de transporte ssh criptografada. Ele pode usar muitas das características do ssh, incluindo autenticação com chave privada e compressão. + +Veja o manual: sftp. + +
        diff --git a/po/pt_BR/docs/kioslave5/smb/index.docbook b/po/pt_BR/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..bc99287 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/smb/index.docbook @@ -0,0 +1,109 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; +Lisiane Sztoltz
        lisiane@conectiva.com.br
        Tradução
        +
        +
        +O escravo do 'smb' habilita você a navegar pelos volumes de uma rede &Windows; (ou Samba). + +Para ver os grupos de trabalho, digite smb:/ . +smb://grupo listará todas as máquinas deste grupo de trabalho. +Para ver os compartilhamentos de uma máquina, digite smb://máquina ou smb:/ grupo/máquina. +Para acessar um volume diretamente digite smb://máquina/volume ou smb:/grupo/máquina/volume + +O escravo do 'smb' precisa da 'libsmbclient' para ser usado. + +Você pode configurar o seu nome de usuário e senha padrões nas &systemsettings; na categoria Rede e conectividade em CompartilhamentoCompartilhamentos Windows. Isto é especialmente útil se você é um membro de um domínio do &Windows; NT. Ali você também pode configurar o nome do seu grupo de trabalho, mas na maioria dos casos isto não é necessário. O 'kioslave' pedirá pelo seu nome de usuário e senha se um padrão não estiver configurado. + +Este escravo é testado e desenvolvido usando principalmente o Samba 2.0.7, mas outras versões do Samba devem funcionar também. + +Autor: Alexander Neundorf neundorf@kde.org +
        + diff --git a/po/pt_BR/docs/kioslave5/tar/index.docbook b/po/pt_BR/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..1a5a0df --- /dev/null +++ b/po/pt_BR/docs/kioslave5/tar/index.docbook @@ -0,0 +1,41 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +Lisiane Sztoltz
        lisiane@conectiva.com.br
        Tradução
        +
        +
        +Um programa de arquivamento projetado para armazenar e extrair arquivos de um arquivo conhecido como arquivo 'tar'. Este arquivo pode ser criado em uma unidade de fita, no entanto, é comum também gravar um arquivo 'tar' em um arquivo normal. + +Veja o manual: tar. + +
        diff --git a/po/pt_BR/docs/kioslave5/thumbnail/index.docbook b/po/pt_BR/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..3b1bf28 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +Lisiane Sztoltz Teixeira
        lisiane@conectiva.com.br
        Tradução
        +
        +
        +O 'kioslave' do 'thumbnail' é usado pelo &kde; para transparência de rede e geração persistente de miniaturas. + +Este 'kioslave' usa plugins para gerar as miniaturas reais. Você pode habilitar a visualização destas miniaturas do submenu Exibir Visualizar, disponível no modo de gerenciador de arquivos do &konqueror;. + +O 'kioslave' do 'thumbnail' não é útil diretamente para um usuário, mas se você for um desenvolvedor, pode usá-lo dentro de seus próprios aplicativos para criar visualizações de arquivos. + +Veja a documentação dos arquivos fonte para mais informações. Você encontrará isto em $KDEDIR/include/kio/thumbcreator.h ou no arquivo fonte kdebase/runtime/kioslave/thumbnail + +
        diff --git a/po/pt_BR/docs/kioslave5/xz/index.docbook b/po/pt_BR/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..4fd91f8 --- /dev/null +++ b/po/pt_BR/docs/kioslave5/xz/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +MarcusGama
        marcus.gama@gmail.com
        Tradução
        +
        +
        + +O 'xz' é um programa de compressão + +O 'kioslave' do 'xz' não pode ser usado diretamente, devendo ser usado como um filtro. Por exemplo, o 'kioslave' do 'tar' poderá filtrar um arquivo por meio do 'kioslave' do 'xz', de modo a mostrar o conteúdo de um arquivo tar.lzma ou tar.xz diretamente numa janela do &konqueror;. + +Se você clicar em um arquivo comprimido com o .lzma ou tar.xz no &konqueror;, este 'kioslave' é usado para o descomprimir e o abrir como um arquivo normal (não-comprimido). + +Se você é um desenvolvedor, e gostaria de usar o filtro 'xz', pode encontrar documentação sobre o uso de 'kioslaves' em http://techbase.kde.org + +Veja o manual: xz. + +
        diff --git a/po/pt_BR/kfileaudiopreview5.po b/po/pt_BR/kfileaudiopreview5.po new file mode 100644 index 0000000..45bb5e2 --- /dev/null +++ b/po/pt_BR/kfileaudiopreview5.po @@ -0,0 +1,34 @@ +# Translation of kfileaudiopreview5.po to Brazilian Portuguese +# Copyright (C) 2014-2015 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# André Marcelo Alvarenga , 2014, 2015. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-27 23:11-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Reproduzir &automaticamente" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "Iniciar reprodução" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "Pausar reprodução" diff --git a/po/pt_BR/kio5_activities.po b/po/pt_BR/kio5_activities.po new file mode 100644 index 0000000..878e843 --- /dev/null +++ b/po/pt_BR/kio5_activities.po @@ -0,0 +1,68 @@ +# Translation of kactivities5.po to Brazilian Portuguese +# Copyright (C) 2016 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# André Marcelo Alvarenga , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kactivities5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-03-09 08:08-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Atividades" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Carregando..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "O Gerenciador de Atividades não está em execução." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Vincular à atividade atual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Desvincular da atividade atual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Vincular à:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Desvincular de:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Atividade" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Atividade atual" diff --git a/po/pt_BR/kio5_archive.po b/po/pt_BR/kio5_archive.po new file mode 100644 index 0000000..a6daac0 --- /dev/null +++ b/po/pt_BR/kio5_archive.po @@ -0,0 +1,41 @@ +# Translation of kio_archive.po to Brazilian Portuguese +# Copyright (C) 2005-2015 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Lisiane Sztoltz Teixeira , 2005. +# André Marcelo Alvarenga , 2011, 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-07-27 23:17-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Não foi possível abrir o arquivo, provavelmente devido a um formato de " +"arquivo não suportado.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"O arquivo de pacote não pode ser aberto, talvez porque o formato do arquivo " +"não é suportado.\n" +"%1" diff --git a/po/pt_BR/kio5_bookmarks.po b/po/pt_BR/kio5_bookmarks.po new file mode 100644 index 0000000..fd09f68 --- /dev/null +++ b/po/pt_BR/kio5_bookmarks.po @@ -0,0 +1,64 @@ +# Translation of kio_bookmarks.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 , 2008, 2015. +# Luiz Fernando Ranghetti , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-04 14:27-0300\n" +"Last-Translator: Luiz Fernando Ranghetti \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 20.04.3\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Raiz" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Locais" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Não foi possível encontrar a configuração dos favoritos" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Não foi possível encontrar o editor de favoritos" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Solicitação inválida: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Não há favoritos a serem exibidos." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"O arquivo CSS do kio_bookmarks não foi encontrado. A saída parecerá feia.\n" +"Verifique sua instalação." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Meus favoritos" diff --git a/po/pt_BR/kio5_fish.po b/po/pt_BR/kio5_fish.po new file mode 100644 index 0000000..b5d4fec --- /dev/null +++ b/po/pt_BR/kio5_fish.po @@ -0,0 +1,46 @@ +# tradução do kio_fish.po para Brazilian Portuguese +# Copyright (C) 2003, 2009 Free Software Foundation, Inc. +# +# Lisiane Sztoltz , 2003. +# Henrique Pinto , 2003. +# Lisiane Sztoltz Teixeira , 2004. +# André Marcelo Alvarenga , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-08-20 09:42-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Conectando..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Iniciando protocolo..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Login local" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticação SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Desconectado." diff --git a/po/pt_BR/kio5_info.po b/po/pt_BR/kio5_info.po new file mode 100644 index 0000000..fa5f039 --- /dev/null +++ b/po/pt_BR/kio5_info.po @@ -0,0 +1,31 @@ +# tradução do kio_info.po para Brazilian Portuguese +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Luiz Fernando Ranghetti , 2009. +# André Marcelo Alvarenga , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-03-28 03:22-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Não foi possível localizar o arquivo %1, necessário para executar este " +"serviço. Verifique a instalação do programa." diff --git a/po/pt_BR/kio5_man.po b/po/pt_BR/kio5_man.po new file mode 100644 index 0000000..ab5c439 --- /dev/null +++ b/po/pt_BR/kio5_man.po @@ -0,0 +1,225 @@ +# Translation of kio5_man.po to Brazilian Portuguese +# Copyright (C) 2002, 2003, 2005, 2007, 2008, 2009, 2012, 2015, 2019 Free Software Foundation, Inc. +# +# Lisiane Sztoltz , 2002, 2003. +# Henrique Pinto , 2003. +# Lisiane Sztoltz Teixeira , 2005. +# Diniz Bortolotto , 2007, 2008. +# Fernando Boaglio , 2008. +# André Marcelo Alvarenga , 2009, 2012, 2015, 2019. +# Marcus Gama , 2012. +# Luiz Fernando Ranghetti , 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-17 11:24-0300\n" +"Last-Translator: Luiz Fernando Ranghetti \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 20.04.3\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Não foi encontrada nenhuma página de manual combinando com %1.Verifique se não digitou errado o nome da página e note " +"que os nomes de página de manual diferenciam maiúsculas de minúsculas. Se o nome estiver correto, então talvez você precise estender o " +"caminho de pesquisa para as páginas de manual, ou usando a variável de " +"ambiente MANPATH ou um arquivo de configuração na pasta " +"/etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"A página de manual %1 foi encontrada, mas não pode ser " +"lida nem processada." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"A página de manual indicada faz referência a outra página %1,mas a página referenciada %2 não foi " +"encontrada." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Erro do visualizador de páginas de manual" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Há mais de uma página de manual relacionada:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiplas páginas de manual" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Observação: Se for ler uma página de manual em seu idioma, lembre-se de que " +"ela pode conter alguns erros ou estar obsoleta. Em caso de dúvida, você deve " +"sempre olhar a versão em inglês." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Arquivos de cabeçalho" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Arquivos de cabeçalho (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Comandos do usuário" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Comandos do usuário (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Chamadas de sistema" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Sub-rotinas" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Módulos Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Funções de rede" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formatos de arquivo" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Jogos" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversos" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administração do sistema" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentação local" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índice principal da página de manual" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Seção %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índice da seção %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Índice da página de manual" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Gerando o índice" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Não foi possível encontrar o programa sgml2roff em seu " +"sistema. Instale-o se for necessário e garanta que ele possa ser encontrado " +"usando a variável de ambiente PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "A abertura de %1 falhou." + +#~ msgid "Man output" +#~ msgstr "Saída do man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Lisiane Sztoltz Teixeira" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "lisiane@kdemail.net" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/pt_BR/kio5_mtp.po b/po/pt_BR/kio5_mtp.po new file mode 100644 index 0000000..0742986 --- /dev/null +++ b/po/pt_BR/kio5_mtp.po @@ -0,0 +1,40 @@ +# Translation of kio_mtp.po to Brazilian Portuguese +# Copyright (C) 2014 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# André Marcelo Alvarenga , 2014. +# Luiz Fernando Ranghetti , 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-19 17:57-0300\n" +"Last-Translator: Luiz Fernando Ranghetti \n" +"Language-Team: Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 18.12.2\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Nenhuma mídia de armazenamento encontrada. Certifique-se de que seu " +"dispositivo está desbloqueado e tem o MTP habilitado nas configurações da " +"conexão USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Não é possível copiar/mover arquivos no próprio dispositivo" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Nenhum armazenamento encontrado. Pode ser necessário desbloquear seu " +#~ "dispositivo." diff --git a/po/pt_BR/kio5_network.po b/po/pt_BR/kio5_network.po new file mode 100644 index 0000000..fd566e6 --- /dev/null +++ b/po/pt_BR/kio5_network.po @@ -0,0 +1,24 @@ +# Translation of kio5_network.po to Brazilian Portuguese +# Copyright (C) 2019 This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# André Marcelo Alvarenga , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-24 16:56-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 19.04.3\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Rede" diff --git a/po/pt_BR/kio5_nfs.po b/po/pt_BR/kio5_nfs.po new file mode 100644 index 0000000..6418e13 --- /dev/null +++ b/po/pt_BR/kio5_nfs.po @@ -0,0 +1,66 @@ +# Translation of kio_nfs.po to Brazilian Portuguese +# Copyright (C) 2003-2014 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Henrique Pinto , 2003. +# Marcus Gama , 2004. +# André Marcelo Alvarenga , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-17 21:51-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Versão do NFS não suportada" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Erro de RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Não há mais espaço no dispositivo" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Sistema de arquivos somente para leitura" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "O nome do arquivo é muito longo" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Quota de disco excedida" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Erro de NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Não foi possível montar o %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Destino desconhecido" diff --git a/po/pt_BR/kio5_recentdocuments.po b/po/pt_BR/kio5_recentdocuments.po new file mode 100644 index 0000000..7a57ccd --- /dev/null +++ b/po/pt_BR/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# André Marcelo Alvarenga , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-14 00:28-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documentos recentes" diff --git a/po/pt_BR/kio5_sftp.po b/po/pt_BR/kio5_sftp.po new file mode 100644 index 0000000..0a2358a --- /dev/null +++ b/po/pt_BR/kio5_sftp.po @@ -0,0 +1,293 @@ +# Translation of kio5_sftp.po to Brazilian Portuguese +# Copyright (C) 2002, 2003, 2004, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2018 Free Software Foundation, Inc. +# +# Lisiane Sztoltz , 2002, 2003. +# Henrique Pinto , 2003. +# Lisiane Sztoltz Teixeira , 2004. +# Marcus Gama , 2004. +# André Marcelo Alvarenga , 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2018. +# Luiz Fernando Ranghetti , 2009, 2012, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio5_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-11-13 12:08-0300\n" +"Last-Translator: Luiz Fernando Ranghetti \n" +"Language-Team: Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Senha incorreta ou inválida" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Não foi possível alocar as rotinas" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Não foi possível definir o nível de detalhamento do log." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Não foi possível definir os dados de usuário do log." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Não foi possível definir a chamada de retorno do log." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Login SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Use o campo de entrada do nome de usuário para responder a esta pergunta." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Digite sua senha." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Site:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Não foi possível criar uma nova sessão SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Não foi possível definir um tempo de espera." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Não foi possível desativar o algoritmo de Nagle." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Não foi possível definir a compressão." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Não foi possível definir a máquina." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Não foi possível definir a porta." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Não foi possível definir o nome de usuário." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Não foi possível analisar o arquivo de configuração." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Abrindo a conexão SFTP com a máquina %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Não foi possível obter o nome do tipo de chave pública do servidor" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" +"Não foi possível criar o código de verificação a partir da chave pública do " +"servidor" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" +"Não foi possível criar a impressão digital para a chave pública do servidor" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Uma chave da máquina %1 para este servidor não foi encontrada, mas existe " +"outro tipo de chave.\n" +"Um atacante poderá alterar a chave padrão do servidor, para confundir o " +"cliente, fazendo-o crer que a chave não existe.\n" +"Contacte o administrador do seu sistema.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"A chave da máquina para o servidor %1 foi alterada.\n" +"Isto poderá tanto significar que está uma BURLA DE DNS em curso, ou que o " +"endereço IP da máquina e a sua chave possam ter alterado ao mesmo tempo.\n" +"A impressão digital da chave %2 enviada pela máquina remota é:\n" +" SHA256:%3\n" +"Contacte o administrador do seu sistema.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Aviso: Não foi possível verificar a identidade da máquina." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"A autenticidade da máquina %1 não pôde ser estabelecida.\n" +"A impressão digital da chave %2 é: %3\n" +"Deseja continuar com a conexão?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Falha na autenticação." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Ocorreu uma falha na autenticação. O servidor não enviou um método de " +"autenticação" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Digite seu nome de usuário e sua senha." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nome de usuário ou senha incorretos" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Não foi possível requisitar o subsistema SFTP. Confirme se o SFTP está " +"habilitado no servidor." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Não foi possível inicializar a sessão SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Conectado à %1 com sucesso" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"A chave da máquina para este servidor não foi encontrada, mas existe outro " +"tipo de chave.\n" +"Um atacante poderá alterar a chave padrão do servidor, para confundir o " +"cliente, fazendo-o crer que a chave não existe.\n" +"Contacte o administrador do seu sistema.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"A chave da máquina para o servidor %1 foi alterada.\n" +"Isto poderá tanto significar que está uma BURLA DE DNS em curso, ou que o " +"endereço IP da máquina e a sua chave possam ter alterado ao mesmo tempo.\n" +"A impressão digital da chave enviada pela máquina remota é:\n" +" %2\n" +"Contacte o administrador do seu sistema.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"A autenticidade da máquina %1 não pôde ser estabelecida.\n" +"A impressão digital da chave é: %2\n" +"Deseja continuar com a conexão?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexto de SFTP inválido" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Não foi possível modificar as permissões de\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Não foi possível ler o link: %1" diff --git a/po/pt_BR/kio5_smb.po b/po/pt_BR/kio5_smb.po new file mode 100644 index 0000000..ded9ddd --- /dev/null +++ b/po/pt_BR/kio5_smb.po @@ -0,0 +1,204 @@ +# Translation of kio5_smb.po to Brazilian Portuguese +# Copyright (C) 2011-2020 This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Lisiane Sztoltz , 2003. +# Henrique Pinto , 2003. +# Lisiane Sztoltz Teixeira , 2004. +# Lisiane Sztoltz Teixeira , 2005. +# André Marcelo Alvarenga , 2009, 2020. +# Luiz Fernando Ranghetti , 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-09 10:39-0300\n" +"Last-Translator: Luiz Fernando Ranghetti \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 20.04.3\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Existem várias opções para autenticação em compartilhamentos SMB.nome de usuário: Quando autenticar " +"dentro de uma rede doméstica o nome de usuário no servidor é suficientenome_de_usuario@dominio.com: Nomes de " +"login de empresas modernas são formados como endereços de e-mailsDOMÍNIO\\nome_de_usuário: Para redes " +"antigas de empresas ou grupos de trabalho você pode precisar do prefixo do " +"nome de domínio NetBIOS (antes do Windows 2000)anônimo: Logins anônimos podem ser " +"tentados usando nomes de usuário e senha vazios. Dependendo da configuração " +"do servidor, nomes de usuário não vazio podem ser necessários" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Digite a informação de autenticação para: %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Digite a informação da autenticação para:\n" +"Servidor = %1\n" +"Compartilhamento= %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tipo de arquivo desconhecido; nem arquivo, nem pasta." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Não foi possível encontrar grupos de trabalho em sua rede local. Isto pode " +"ter sido causado por um firewall habilitado." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Nenhuma mídia no dispositivo %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Não foi possível conectar-se à máquina %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Erro ao conectar-se ao responsável do servidor para %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "O volume não pode ser encontrado no servidor fornecido" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descritor de arquivo ruim" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"O nome fornecido não pode ser resolvido por um servidor único. Certifique-se " +"de que sua rede está configurada sem nenhum conflito de nomes, entre os " +"nomes usados pelo Windows e os usados pela resolução de nomes do UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: A máquina está inacessível" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"O cliente libsmb reportou um erro, mas não especificou qual era o problema. " +"Isto pode indicar um problema de servidor em sua rede - mas também pode " +"indicar um problema com o cliente.\n" +"Se você deseja nos ajudar, por favor forneça o resultado de um comando " +"tcpdump da interface de rede enquanto você tenta navegar (esteja ciente de " +"que isto pode conter dados privados, portanto não envie se estiver inseguro " +"quanto a isto - você pode enviar os dados privadamente para os " +"desenvolvedores se eles pedirem por isto)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condição de erro desconhecida: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Ocorreu um erro ao tentar acessar %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "A libsmbclient falhou ao criar o contexto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Certifique-se de que o pacote do samba está instalado corretamente em seu " +"sistema." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"A montagem do compartilhamento \"%1\" da máquina \"%2\" pelo servidor \"%3\" " +"falhou.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"A desmontagem de \"%1\" falhou.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Dispositivo desconhecido @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "A libsmbclient falhou ao iniciar o contexto" diff --git a/po/pt_BR/kio5_thumbnail.po b/po/pt_BR/kio5_thumbnail.po new file mode 100644 index 0000000..4bb0805 --- /dev/null +++ b/po/pt_BR/kio5_thumbnail.po @@ -0,0 +1,87 @@ +# tradução do kio_thumbnail.po para Brazilian Portuguese +# +# Lisiane Sztoltz Teixeira , 2005. +# Diniz Bortolotto , 2007. +# André Marcelo Alvarenga , 2009, 2010, 2011. +# Marcus Gama , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-05-09 19:48-0300\n" +"Last-Translator: Marcus Gama \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Girar a imagem automaticamente" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Nenhum tipo MIME foi especificado." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Tamanho inválido ou não especificado." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Não foi possível criar a miniatura para a pasta" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nenhum plugin foi especificado." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Não foi possível carregar o ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Não foi possível criar a miniatura de %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Falha ao criar uma miniatura." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Não foi possível gravar a imagem." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Falha ao anexar ao segmento de memória compartilhado %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "A imagem é muito grande para o segmento de memória compartilhado" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Diniz Bortolotto" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "diniz.bortolotto@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/ro/kfileaudiopreview5.po b/po/ro/kfileaudiopreview5.po new file mode 100644 index 0000000..31e98c8 --- /dev/null +++ b/po/ro/kfileaudiopreview5.po @@ -0,0 +1,44 @@ +# translation of kfileaudiopreview4.po to +# translation of kfileaudiopreview4.po to Romanian +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +# Claudiu Costin , 2003, 2004. +# Sergiu Bivol , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-06-25 23:00+0300\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Redă &automat" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "pornește redarea" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "întrerupe redarea" + +#~ msgid "stop playback" +#~ msgstr "oprește redarea" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "buclă: repornește redarea la sfârșit" + +#~ msgid "Media Player" +#~ msgstr "Redare multimedia" diff --git a/po/ro/kio5_activities.po b/po/ro/kio5_activities.po new file mode 100644 index 0000000..aff6033 --- /dev/null +++ b/po/ro/kio5_activities.po @@ -0,0 +1,192 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sergiu Bivol , 2012, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-10-27 11:29+0200\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activities" +msgstr "Activități..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "Administratorul de activități nu rulează corespunzător." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Leagă de activitatea curentă" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Dezleagă de activitatea curentă" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Leagă la:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Dezleagă de la:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activity" +msgstr "Activități..." + +#: KioActivities.cpp:230 +#, fuzzy, kde-format +#| msgid "Link to the current activity" +msgid "Current activity" +msgstr "Leagă de activitatea curentă" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sergiu Bivol" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sergiu@ase.md" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Comută la activitatea „%1”" + +#, fuzzy +#~| msgid "Activities..." +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Activități..." + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Delete activity" +#~ msgstr "Leagă de activitatea curentă" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create a new activity" +#~ msgstr "Leagă de activitatea curentă" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity settings" +#~ msgstr "Activități..." + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity information" +#~ msgstr "Activități..." + +#~ msgid "Privacy" +#~ msgstr "Intimitate" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "permanent" + +#~ msgid "Forget the last hour" +#~ msgstr "Uită ultima oră" + +#~ msgid "Forget the last two hours" +#~ msgstr "Uită ultimele două ore" + +#~ msgid "Forget a day" +#~ msgstr "Uită o zi" + +#~ msgid "Forget everything" +#~ msgstr "Uită tot" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "pentru " + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create activity..." +#~ msgstr "Leagă de activitatea curentă" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity switching" +#~ msgstr "Activități..." + +#~ msgid "Remember opened documents:" +#~ msgstr "Memorizează documentele deschise:" + +#, fuzzy +#~| msgid "For all applications" +#~ msgid "For a&ll applications" +#~ msgstr "Pentru toate aplicațiile" + +#, fuzzy +#~| msgid "Do not remember" +#~ msgid "&Do not remember" +#~ msgstr "Nu memoriza" + +#, fuzzy +#~| msgid "Only for specific applications" +#~ msgid "O&nly for specific applications" +#~ msgstr "Numai pentru anumite aplicații" + +#~ msgid "Keep history" +#~ msgstr "Păstrează istoricul" + +#~ msgid "Clear recent history" +#~ msgstr "Curăță istoricul recent" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Pune în lista neagră toate aplicațiile ce nu sunt în lista asta" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity name" +#~ msgstr "Activități..." + +#~ msgid "Available Features" +#~ msgstr "Caracteristici disponibile" + +#~ msgid "Plugins" +#~ msgstr "Extensii" + +#~ msgid "Enable activities management" +#~ msgstr "Activează gestiunea activităților" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Administratorul de activități nu rulează corespunzător." + +#~ msgid "Activities..." +#~ msgstr "Activități..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" diff --git a/po/ro/kio5_archive.po b/po/ro/kio5_archive.po new file mode 100644 index 0000000..03b6e5c --- /dev/null +++ b/po/ro/kio5_archive.po @@ -0,0 +1,40 @@ +# Traducerea kio_archive.po în Română +# translation of kio_archive to Romanian +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_archive package. +# Laurenţiu Buzdugan , 2008". +# Sergiu Bivol , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2008-03-03 15:47+0200\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Română \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Fișierul nu a putut fi deschis, probabil din cauza unui format nesusținut.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Arhiva nu a putut fi deschisă, probabil deoarece formatul nu este susținut.\n" +"%1" diff --git a/po/ro/kio5_bookmarks.po b/po/ro/kio5_bookmarks.po new file mode 100644 index 0000000..74e1365 --- /dev/null +++ b/po/ro/kio5_bookmarks.po @@ -0,0 +1,71 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sergiu Bivol , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2014-04-11 15:39+0300\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Rădăcină" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Locuri" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Cerere greșită: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Încă nu sunt semne de carte de afișat." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Fișierul CSS kio_bookmarks nu a fost găsit. Rezultatul va arăta urât.\n" +"
Verificați instalarea." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Semnele mele de carte" + +#~ msgid "My bookmarks" +#~ msgstr "Semnele mele de carte" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Dezvoltator inițial" diff --git a/po/ro/kio5_fish.po b/po/ro/kio5_fish.po new file mode 100644 index 0000000..9d22009 --- /dev/null +++ b/po/ro/kio5_fish.po @@ -0,0 +1,50 @@ +# Traducerea kio_fish.po în Română +# Copyright (C) 2003, 2004, 2008 Free Software Foundation, Inc. +# Sergiu Bivol , 2008, 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-12-12 17:25+0200\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Se conectează..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Se inițiază protocolul..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Autentificare locală" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Autentificare SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Deconectat." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sergiu Bivol" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sergiu@ase.md" diff --git a/po/ro/kio5_info.po b/po/ro/kio5_info.po new file mode 100644 index 0000000..2fa5f23 --- /dev/null +++ b/po/ro/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sergiu Bivol , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-04-08 13:08+0300\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Imposibil de localizat fișierul %1 care este necesar pentru a rula acest " +"serviciu. Verificați instalarea programelor dumneavoastră." diff --git a/po/ro/kio5_man.po b/po/ro/kio5_man.po new file mode 100644 index 0000000..409a56e --- /dev/null +++ b/po/ro/kio5_man.po @@ -0,0 +1,232 @@ +# Traducerea kio_man.po în Română +# translation of kio_man.po to Romanian +# translation of @PACKAGE.po to @LANGUAGE +# Copyright (C) 2003, 2008 Free Software Foundation, Inc. +# Claudiu Costin , 2003. +# Sergiu Bivol , 2008. +# Sergiu Bivol , 2008, 2009, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2012-12-12 17:26+0200\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Nu s-a găsit nicio pagină de manual potrivită cu %1.

        Verificați " +"dacă ați scris corect denumirea paginii dorite.
        Verificați dacă ați " +"scris numele utilizând literele majuscule și minuscule corecte.
        Dacă " +"totul pare a fi în ordine, atunci probabil ar trebui să stabiliți o cale de " +"căutare mai bună pentru pagini de manual, fie utilizând variabila de mediu " +"MANPATH, fie în fișierul corespunzător din /etc ." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Eroare KDE Man Viewer

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Există mai mult de o pagină de manual ce se potrivește." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Notă: dacă citiți o pagină de manual în limba dumneavoastră, aveți în vedere " +"că aceasta poate fi depășită sau poate conține greșeli. Dacă aveți dubii, " +"consultați versiunea engleză." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Fișiere-antet" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Fișiere-antet (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Comenzi utilizator" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Comenzi utilizator (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Apeluri de sistem" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subrutine" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Module Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Funcții de rețea" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Dispozitive" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formate de fișiere" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Jocuri" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Diverse" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Administrare de sistem" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documentația locală" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Noi" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Index manuale UNIX" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Secțiunea %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Index pentru secțiunea %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Index manuale UNIX" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Generez indexul" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Nu am găsit programul „sgml2roff”. Instalați-l și dacă este necesar " +"extindeți aria de căutare modificând variabila de mediu PATH înainte de " +"pornirea KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Deschiderea %1 a eșuat." + +#~ msgid "Man output" +#~ msgstr "Rezultate \"man\"" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Claudiu Costin" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "claudiuc@kde.org" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/ro/kio5_mtp.po b/po/ro/kio5_mtp.po new file mode 100644 index 0000000..a714a1a --- /dev/null +++ b/po/ro/kio5_mtp.po @@ -0,0 +1,34 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sergiu Bivol , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2015-04-20 14:28+0300\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Fișierele nu pot fi copiate/mutate pe dispozitivul în sine" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Nu a fost găsită nicio stocare. Poate trebuie să deblocați dispozitivul?" diff --git a/po/ro/kio5_nfs.po b/po/ro/kio5_nfs.po new file mode 100644 index 0000000..f704d8b --- /dev/null +++ b/po/ro/kio5_nfs.po @@ -0,0 +1,68 @@ +# translation of kio_nfs.po to Romanian +# translation of @PACKAGE.po to @LANGUAGE +# Copyright (C) 2004 Free Software Foundation, Inc. +# Claudiu Costin , 2003, 2004. +# Sergiu Bivol , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2008-12-14 18:52+0200\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Nu mai există spațiu de disc" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Sistem de fișiere numai în citire" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Denumire fișier prea lungă" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Cotă spațiu de disc depășită" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "A apărut o eroare RPC." diff --git a/po/ro/kio5_recentdocuments.po b/po/ro/kio5_recentdocuments.po new file mode 100644 index 0000000..c1f950c --- /dev/null +++ b/po/ro/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Cristian Oneț , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-04-09 19:27+0300\n" +"Last-Translator: Cristian Oneț \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Documente recente" diff --git a/po/ro/kio5_sftp.po b/po/ro/kio5_sftp.po new file mode 100644 index 0000000..f9383cc --- /dev/null +++ b/po/ro/kio5_sftp.po @@ -0,0 +1,484 @@ +# translation of kio_sftp.po to Romanian +# translation of @PACKAGE.po to @LANGUAGE +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# Claudiu Costin , 2003, 2004, 2005. +# Sergiu Bivol , 2008, 2009, 2010. +# Sergiu Bivol , 2010, 2012, 2013. +# Cristian Oneț , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2013-05-25 09:29+0300\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frază de acces greșită sau nevalidă" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nu s-au putut aloca retroapeluri" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nu s-a putut seta nivelul de detaliere a jurnalului." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Nu s-a putut seta nivelul de detaliere a jurnalului." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Nu s-au putut aloca retroapeluri" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Autentificare SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Utilizați câmpul de introducere a utilizatorului pentru a răspunde la " +"această întrebare." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Introduceți parola dumneavoastră." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Sait:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Noua sesiune SSH nu a putut fi creată." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Temporizarea nu a putut fi stabilită." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Portul nu a putut fi stabilit." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Compresia nu a putut fi stabilită." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Gazda nu a putut fi stabilită." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Portul nu a putut fi stabilit." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Numele de utilizator nu a putut fi stabilit." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Fișierul de configurare nu a putut fi parcurs." + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Deschid conexiunea SFTP la gazda %1:%2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Numele de utilizator nu a putut fi stabilit." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Cheia gazdă pentru acest server nu a fost găsită, dar există un alt tip de " +"cheie.\n" +"Un atacator poate schimba cheia serverului implicit pentru a vă duce în " +"eroare clientul ca să creadă că nu există cheia.\n" +"Vă rugăm să contactați administratorul dumneavoastră de sistem.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Cheia gazdă pentru serverul %1 s-a schimbat.\n" +"Aceasta poate însemna fie că se întâmplă DNS SPOOFING sau adresa IP pentru " +"gazdă și cheia gazdă s-au schimbat simultan.\n" +"Amprenta pentru cheie trimisă de gazda de la distanță este:\n" +" %2\n" +"Vă rugăm să contactați administratorul dumneavoastră de sistem.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Atenție: Nu am putut verifica identitatea gazdei." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Autenticitatea gazdei %1 nu poate fi stabilită.\n" +"Amprenta cheii este: %2\n" +"Sigur doriți să continuați conectarea?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Autentificarea a eșuat." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Autentificare eșuată. Serverul n-a trimis nicio metodă de autentificare" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Introduceți numele de utilizator și parola." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nume de utilizator sau parolă incorectă" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Imposibil de cerut subsistemul SFTP. Asigurați-vă că SFTP e activat pe " +"server." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Sesiunea SFTP nu a putut fi inițializată." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Am realizat cu succes conexiunea la %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Cheia gazdă pentru acest server nu a fost găsită, dar există un alt tip de " +"cheie.\n" +"Un atacator poate schimba cheia serverului implicit pentru a vă duce în " +"eroare clientul ca să creadă că nu există cheia.\n" +"Vă rugăm să contactați administratorul dumneavoastră de sistem.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Cheia gazdă pentru serverul %1 s-a schimbat.\n" +"Aceasta poate însemna fie că se întâmplă DNS SPOOFING sau adresa IP pentru " +"gazdă și cheia gazdă s-au schimbat simultan.\n" +"Amprenta pentru cheie trimisă de gazda de la distanță este:\n" +" %2\n" +"Vă rugăm să contactați administratorul dumneavoastră de sistem.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Autenticitatea gazdei %1 nu poate fi stabilită.\n" +"Amprenta cheii este: %2\n" +"Sigur doriți să continuați conectarea?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nu s-au putut schimba permisiunile pentru\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Legătura nu a putut fi citită: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Nu este specificată o gazdă." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "A apărut o eroare internă. Încercați cererea din nou." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Introduceți numele de utilizator și fraza de acces." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Atenție: Identitatea gazdei s-a modificat." + +#~ msgid "Connection failed." +#~ msgstr "Conexiunea a eșuat." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Conexiune închisă de gazda distantă." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "eroare SFTP neașteptată: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP versiunea %1" + +#~ msgid "Protocol error." +#~ msgstr "Eroare de protocol." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "A apărut o eroare internă. Încercați din nou." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "A apărut o eroare necunoscută la copierea fișierului în '%1'. Încercați " +#~ "din nou." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Gazda distantă nu suportă redenumirea de fișiere." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Gazda distantă nu suportă crearea de legături simbolice." + +#~ msgid "Connection closed" +#~ msgstr "Conexiune închisă" + +#~ msgid "End of file." +#~ msgstr "Sfârșit de fișier." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "Comanda SFTP a eșuat dintr-un motiv necunoscut." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Serverul SFTP a primit un mesaj necorespunzător." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Ați încercat o operație nesuportată de serverul SFTP." + +#~ msgid "Error code: %1" +#~ msgstr "Cod de eroare: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Nu pot specifica un subsistem și o comandă în același timp." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Nu ați dat opțiuni pentru execuția SSH." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Eroare la execuția procesului SSH." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Eroare la comunicarea cu SSH." + +#~ msgid "Please supply a password." +#~ msgstr "Introduceți o parolă." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Introduceți fraza de acces pentru cheia privată SSH." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Autentificarea la %1 a eșuat" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Nu am putut verifica identitatea gazdei distante \"%1\" deoarece cheia " +#~ "publică a gazdei nu este în fișierul \"known hosts\"." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Adăugați manual cheia publică a gazdei la fișierul \"known hosts\" sau " +#~ "contactați administratorul dumneavoastră de sistem." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Adăugați manual cheia publică a gazdei în %1 sau contactați " +#~ "administratorul dumneavoastră de sistem." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Nu am putut verifica identitatea gazdei \"%1\". Semnătura cheii publice a " +#~ "gazdei este:\n" +#~ "%2\n" +#~ "Înainte de vă conecta este indicat să verificați această semnătură " +#~ "împreună cu administratorul de sistem al acelei mașini.\n" +#~ "\n" +#~ "Doriți să accept cheia publică a mașinii și să mă conectez în aceste " +#~ "condiții?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "ATENȚIE: Identitatea gazdei distante \"%1\" s-a modificat!\n" +#~ "\n" +#~ "Este posibil ca cineva tocmai să urmărească conexiunea dumneavoastră sau " +#~ "administratorul acelei mașini a schimbat cheia publică. Oricare ar fi din " +#~ "cele două cazuri, verificați împreună cu administratorul de sistem al " +#~ "mașinii că semnătura este corectă. Semnătura cheii publice este:\n" +#~ "%2\n" +#~ "Adăugați cheia publică corectă în \"%3\" pentru a scăpa de acest mesaj." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "ATENȚIE: Identitatea gazdei distante „%1” s-a modificat!\n" +#~ "\n" +#~ "Este posibil ca cineva tocmai să urmărească conexiunea dumneavoastră sau " +#~ "administratorul acelei mașini a schimbat cheia publică. Oricare ar fi din " +#~ "cele două cazuri, verificați împreună cu administratorul de sistem al " +#~ "mașinii că semnătura este corectă. Semnătura cheii publice este:\n" +#~ "%2\n" +#~ "Doriți să accept noua cheie publică a mașinii și să mă conectez în aceste " +#~ "condiții?" + +#~ msgid "Host key was rejected." +#~ msgstr "Cheia gazdei a fost respinsă." + +#~ msgid "Please enter a username and password" +#~ msgstr "Introduceți numele de utilizator și parola" + +#~ msgid "File does not exist." +#~ msgstr "Fișierul nu există." + +#~ msgid "Access is denied." +#~ msgstr "Accesul este interzis." diff --git a/po/ro/kio5_smb.po b/po/ro/kio5_smb.po new file mode 100644 index 0000000..5ef11dd --- /dev/null +++ b/po/ro/kio5_smb.po @@ -0,0 +1,198 @@ +# Traducerea kio_smb.po în Română +# translation of kio_smb.po to Romanian +# translation of @PACKAGE.po to @LANGUAGE +# Copyright (C) 2003, 2004, 2008 Free Software Foundation, Inc. +# Claudiu Costin , 2003, 2004. +# Sergiu Bivol , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2008-04-05 18:39+0300\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Română\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Introduceți informațiile de autentificare pentru %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Introduceți informațiile de autentificare pentru:\n" +"Server = %1\n" +"Partajare = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Tip necunoscut de fișier. Nu este nici fișier, nici director." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Nu am găsit nici un grup de lucru în rețeaua locală. Aceasta se poate " +"întâmpla din cauza unui firewall." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Nici un mediu în dispozitivul pentru %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nu mă pot conecta la gazdă pentru %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Eroare de conectare la serverul responsabil de %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Nu am găsit partajarea pe serverul dat" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Descriptor de fișier eronat" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Numele dat nu a putut fi rezolvat pentru un unic server. Asigurați-vă că " +"rețeaua dumneavoastră este setată fără nici un conflict de nume la " +"determinarea lor pentru Windows și UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"\"libsmbclient\" a raportat o eroare, dar nu a specificat care este " +"problema. Acest lucru ar putea indica o problemă severă în rețeaua " +"dumneavoastră, dar este posibil să fie numai o problemă internă a " +"\"libsmbclient\".\n" +"Dacă doriți să ajutați, vă rog să trimiteți un fișier generat de \"tcpdump\" " +"pentru interfața de rețea pentru care încercați să răsfoiți. Aveți grijă că " +"fișierul generat ar putea conține date private, astfel încât nu este indicat " +"să-l publicați pe web, ci trimiteți-l în mod direct dezvoltatorilor dacă ei " +"vă cer acest lucru." + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condiție de eroare necunoscută în funcția \"stat\": %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient a eșuat la crearea contextului" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Asigurați-vă că pachetul \"Samba\" este instalat corespunzător." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Montarea partajării \"%1\" de pe calculatorul \"%2\" de către utilizatorul " +"\"%3\" a eșuat.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Demontarea \"%1\" a eșuat.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient a eșuat la inițializarea contextului" + +#~ msgid "File does not exist: %1" +#~ msgstr "Fișierul nu există: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "A apărut o eroare la inițializarea „libsmbclient”" diff --git a/po/ro/kio5_thumbnail.po b/po/ro/kio5_thumbnail.po new file mode 100644 index 0000000..c1012b0 --- /dev/null +++ b/po/ro/kio5_thumbnail.po @@ -0,0 +1,88 @@ +# Traducerea kio_thumbnail.po în Română +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kio_thumbnail package. +# Sergiu Bivol , 2008. +# Sergiu Bivol , 2009. +# Cristian Oneț , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-04-09 11:26+0300\n" +"Last-Translator: Cristian Oneț \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rotește imaginea automat" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Tip MIME nespecificat" + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Mărime nespecificată sau nevalidă" + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Imposibil de creat miniatură pentru dosar" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nici un modul specificat." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nu pot încărca ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nu pot crea miniatură pentru %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Crearea miniaturii a eșuat." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Nu s-a putut scrie imaginea." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Atașarea la segmentul de memorie partajată %1 a eșuat" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Imaginea este prea mare pentru segmentul de memorie partajată" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Sergiu Bivol" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sergiu@ase.md" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/ru/docs/kioslave5/gzip/index.docbook b/po/ru/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..f78df85 --- /dev/null +++ b/po/ru/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +
        +
        +
        + +gzip — программа сжатия + +Напрямую этот протокол не используется, он предназначен для работы в качестве фильтра. Например, протокол tar может пропустить файл через фильтр gzip, чтобы вы могли просмотреть содержимое файла tar.gz прямо в окне &konqueror;. + +Если вы щелкнете по файлу с расширением gz в &konqueror;, этот протокол распакует файл и отобразит его как обычный (несжатый). + +Если вы разработчик и хотиели бы использовать фильтр gzip, документацию по использованию протоколов &kde; можно найти на сайте http://techbase.kde.org + +См. также руководство: gzip. + +
        diff --git a/po/ru/docs/kioslave5/nfs/index.docbook b/po/ru/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..f4a7d9a --- /dev/null +++ b/po/ru/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +
        +
        +
        +Протокол NFS, разработанный Sun, позволяет работать с файловыми системами на других машинах как с локальными. Протокол NFS разработан так, чтобы быть независимым от машины, оепрационной системы, архитектуры сети и транспортного протокола. Эта независимость достигается с использованием команд вызова удаленных процедур (RPC, Remote Procedure Call), надстроеннных над командами представления внешних данных (XDR, eXternal Data Representation). + +Протокол MOUNT выполняет зависящие от операционной системы функции, позволяющие клиентам монтировать удаленные файловые системы в указанные места локальной файловой системы. Он также позволяет серверу давать права на доступ ограниченному набору клиентов. + +Блокировщик позволяет блокировать файлы при использовании NFS. Протокол диспетчера сетевых блокировок (NLM, Network Lock Manager) берет на себя эти функции. + +Источник: http://www.networksorcery.com/enp/protocol/nfs.htm. + +См. также руководство: nfs. +
        diff --git a/po/ru/docs/kioslave5/sftp/index.docbook b/po/ru/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..635dda2 --- /dev/null +++ b/po/ru/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +ОлегБаталов
        olegbatalov@mail.ru
        Перевод на русский язык
        +
        +
        +SFTP - это безопасный протокол передачи файлов. sftp является интерактивной программой передачи файлов, аналогичной ftp, но она осуществляет все операции через зашифрованный канал ssh, и использует большенство возможностей ssh, включая аутентификацию через публичные ключи и сжатие. + +Смотрите руководство sftp. + +
        diff --git a/po/ru/docs/kioslave5/tar/index.docbook b/po/ru/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..1c50425 --- /dev/null +++ b/po/ru/docs/kioslave5/tar/index.docbook @@ -0,0 +1,41 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +
        +
        +
        +Это архиватор. Tar-архив может быть создан на приводе магнитной ленты, но может быть и обычным файлом. + +См. также руководство: tar. + +
        diff --git a/po/ru/docs/kioslave5/thumbnail/index.docbook b/po/ru/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..f233b2d --- /dev/null +++ b/po/ru/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +
        +
        +
        +Протокол thumbnail используется &kde; для создания пиктограмм предварительного просмотра во время работы в сети, не отвлекая на это пользователя. + +Для создания собственно пиктограмм используется специальный модуль. Вы можете увидеть эти пиктограммы, выбрав в диспетчере файлов &konqueror; ВидПредварительный просмотр. + +Возможно, этот протокол будет более полезен разработчику, чем пользователю. + +Более подробная информация находится в документации с исходными файлами. Вы можете найти её в файле $KDEDIR/include/kio/thumbcreator.h или каталоге kdebase/runtime/kioslave/thumbnail. + +
        diff --git a/po/ru/kfileaudiopreview5.po b/po/ru/kfileaudiopreview5.po new file mode 100644 index 0000000..9cdcf68 --- /dev/null +++ b/po/ru/kfileaudiopreview5.po @@ -0,0 +1,48 @@ +# KDE3 - kdelibs/kfileaudiopreview4.po Russian translation. +# Copyright (C) 2003, KDE Team. +# +# Nick Shafff , 2003. +# Artem Sereda , 2009. +# Alexander Potashev , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2011-01-19 21:01+0300\n" +"Last-Translator: Alexander Potashev \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.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-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Воспроизводить &автоматически" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "Воспроизведение" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "Приостановить" + +#~ msgid "stop playback" +#~ msgstr "Остановить" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "Повторять бесконечно" + +#~ msgid "Media Player" +#~ msgstr "Проигрыватель мультимедиа" diff --git a/po/ru/kio5_activities.po b/po/ru/kio5_activities.po new file mode 100644 index 0000000..deb7b91 --- /dev/null +++ b/po/ru/kio5_activities.po @@ -0,0 +1,236 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Julia Dronova , 2013. +# Yuri Efremov , 2013. +# Alexander Potashev , 2014, 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-09-01 10:30+0300\n" +"Last-Translator: Alexander Potashev \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Комнаты" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Загрузка..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Диспетчер комнат не запущен." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Привязать к текущей комнате" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Снять привязку к текущей комнате" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Привязать к:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Снять привязку с:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Комната" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Текущая комната" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Александр Лахин" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "exclusion@gmail.com" + +#~ msgid "Default" +#~ msgstr "Начальная комната" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Переключиться на комнату «%1»" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Комната" + +#, fuzzy +#~| msgid "Create activity..." +#~ msgid "Delete activity" +#~ msgstr "Создать комнату..." + +#, fuzzy +#~| msgid "Are you sure you want to delete this activity?" +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Удалить эту комнату?" + +#, fuzzy +#~| msgid "Create activity..." +#~ msgid "Create a new activity" +#~ msgstr "Создать комнату..." + +#, fuzzy +#~| msgid "Activity switching" +#~ msgid "Activity settings" +#~ msgstr "Переключение комнат" + +#~ msgid "General" +#~ msgstr "Общее" + +#~ msgid "Create" +#~ msgstr "Создать" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Комбинация клавиш для переключения на эту комнату:" + +#, fuzzy +#~| msgid "Activity switching" +#~ msgid "Activity information" +#~ msgstr "Переключение комнат" + +#~ msgid "Switching" +#~ msgstr "Переключение" + +#~ msgid "Privacy" +#~ msgstr "Конфиденциальность" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "вечно" + +#~ msgid "Forget the last hour" +#~ msgstr "Стереть последний час" + +#~ msgid "Forget the last two hours" +#~ msgstr "Стереть последние два часа" + +#~ msgid "Forget a day" +#~ msgstr "Стереть день" + +#~ msgid "Forget everything" +#~ msgstr "Стереть всё" + +# "Хранить историю в течение ... месяц(а/ев)" --aspotashev +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " месяца" +#~ msgstr[1] " месяцев" +#~ msgstr[2] " месяцев" +#~ msgstr[3] " месяца" + +# "Хранить историю в течение ... месяц(а/ев)" --aspotashev +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "в течение " + +#~ msgid "Create activity..." +#~ msgstr "Создать комнату..." + +#~ msgid "Activity switching" +#~ msgstr "Переключение комнат" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "На одну комнату вперёд" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "На одну комнату назад" + +#~ msgid "Remember opened documents:" +#~ msgstr "Запоминать открытые документы:" + +#~ msgid "For a&ll applications" +#~ msgstr "Для &всех приложений" + +#~ msgid "&Do not remember" +#~ msgstr "&Не запоминать" + +#~ msgid "O&nly for specific applications" +#~ msgstr "Толь&ко для определённых приложений" + +#~ msgid "Keep history" +#~ msgstr "Хранить историю" + +#~ msgid "Clear recent history" +#~ msgstr "Очистить последнюю историю" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Заблокировать все приложения, кроме перечисленных" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Запоминать текущий рабочий стол для каждой комнаты (потребуется " +#~ "перезапуск)" + +#~ msgid "Shortcuts" +#~ msgstr "Комбинации клавиш" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Конфиденциальная (не запоминать статистику использования)" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "Activity name" +#~ msgstr "Название комнаты" + +#~ msgid "Available Features" +#~ msgstr "Доступные возможности" + +#~ msgid "Plugins" +#~ msgstr "Модули" + +#~ msgid "Enable activities management" +#~ msgstr "Включить управление комнатами" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Диспетчер комнат не запущен правильно." + +#~ msgid "Activities..." +#~ msgstr "Комнаты..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "© Ivan Cukic, 2012" diff --git a/po/ru/kio5_archive.po b/po/ru/kio5_archive.po new file mode 100644 index 0000000..6ced271 --- /dev/null +++ b/po/ru/kio5_archive.po @@ -0,0 +1,42 @@ +# translation of kio_tar.po into Russian +# +# Gregory Mokhin , 2005. +# Andrey Cherepanov , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2009-02-26 21:31+0300\n" +"Last-Translator: Andrey Cherepanov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Невозможно открыть файл. Возможно, он имеет не поддерживаемый формат.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Невозможно открыть файл архива. Возможно, он имеет не поддерживаемый " +"формат.\n" +"%1" diff --git a/po/ru/kio5_bookmarks.po b/po/ru/kio5_bookmarks.po new file mode 100644 index 0000000..2a5a5c4 --- /dev/null +++ b/po/ru/kio5_bookmarks.po @@ -0,0 +1,85 @@ +# Translation of kio_bookmarks.po into Russian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Andrey Cherepanov , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks.po\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2009-03-04 19:46+0300\n" +"Last-Translator: Andrey Cherepanov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Корневая папка" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Точки входа" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Неверный запрос: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Нет закладок" + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Невозможно найти таблицу стилей для kio_bookmarks. Информация будет " +"выводится без оформления.\n" +"Проверьте правильность установки KDE." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Закладки" + +#~ msgid "My bookmarks" +#~ msgstr "Закладки" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Первый разработчик" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Андрей Черепанов" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "skull@kde.ru" diff --git a/po/ru/kio5_fish.po b/po/ru/kio5_fish.po new file mode 100644 index 0000000..66b8ad8 --- /dev/null +++ b/po/ru/kio5_fish.po @@ -0,0 +1,57 @@ +# translation of kio_fish.po to Russian +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# Leonid Kanter , 2004. +# Andrey Cherepanov , 2009. +# Artem Sereda , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-01-06 22:49+0400\n" +"Last-Translator: Artem Sereda \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 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" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Соединение..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Начало передачи данных..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Локальный вход" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Аутентификация SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Подключение прервано." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Леонид Кантер" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "leon@asplinux.ru" diff --git a/po/ru/kio5_info.po b/po/ru/kio5_info.po new file mode 100644 index 0000000..d64670b --- /dev/null +++ b/po/ru/kio5_info.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Alexander Potashev , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2010-01-22 12:49+0300\n" +"Last-Translator: Alexander Potashev \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.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" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Не удалось найти файл %1, необходимый для запуска этой службы. Проверьте " +"правильность установки." diff --git a/po/ru/kio5_man.po b/po/ru/kio5_man.po new file mode 100644 index 0000000..c278358 --- /dev/null +++ b/po/ru/kio5_man.po @@ -0,0 +1,245 @@ +# translation of kio_man.po into Russian +# KDE3 - kdebase/kio_man.po Russian translation. +# Copyright (C) 2003, KDE Team. +# +# Vitaly Lopatin , 2000. +# Andrey S. Cherepanov , 2001, 2003. +# Gregory Mokhin , 2005. +# Andrey Cherepanov , 2009. +# Yuri Efremov , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-01-18 21:12+0400\n" +"Last-Translator: Yuri Efremov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 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" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Страница «%1» не найдена.

        Проверьте, правильно ли указано имя " +"страницы.\n" +"Учтите, что оно указывается с учётом регистра.
        Если в написании нет " +"ошибок, то проверьте правильность пути к страницам man, который задан в " +"переменной среды окружения MANPATH или в соответствующем файле в /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Ошибка вывода man-страницы

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Найдено более одной man-страницы." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Примечание: перевод man-страницы мог устареть. Если есть сомнения, " +"прочитайте источник страницы на английском языке." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Заголовочные файлы" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Заголовочные файлы (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Команды пользователя" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Команды пользователя (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Системные вызовы" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Функции" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Модули Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Работа с сетью" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Устройства" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Форматы файлов" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Игры" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Разное" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Системное администрирование" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Ядро" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Локальная документация" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Новые" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Индекс руководства UNIX" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Раздел %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Индекс раздела %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Индекс руководства UNIX" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Создание индекса" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Невозможно найти программу «sgml2roff» в вашей системе. Установите её и при " +"необходимости расширьте путь поиска, изменив переменную PATH перед запуском " +"KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Ошибка открытия %1." + +#~ msgid "Man output" +#~ msgstr "Вывод man-страницы" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Виталий Лопатин,Андрей Черепанов" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "vitls@chat.ru,skull@kde.ru" + +#~ msgid "KMan" +#~ msgstr "KMan" + +#~ msgid "" +#~ "_: NAME OF TRANSLATORS\n" +#~ "Your names" +#~ msgstr "Виталий Лопатин,Андрей Черепанов" + +#~ msgid "" +#~ "_: EMAIL OF TRANSLATORS\n" +#~ "Your emails" +#~ msgstr "vitls@chat.ru,sibskull@mail.ru" diff --git a/po/ru/kio5_mtp.po b/po/ru/kio5_mtp.po new file mode 100644 index 0000000..0a1bb08 --- /dev/null +++ b/po/ru/kio5_mtp.po @@ -0,0 +1,40 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Alexander Potashev , 2015, 2019. +# Alexander Yavorsky , 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-07-11 02:52+0300\n" +"Last-Translator: Alexander Potashev \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 19.07.70\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Устройства хранения данных не найдены. Убедитесь, что подключённое " +"устройство разблокировано и передача по протоколу MTP разрешена в параметрах " +"подключения USB." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Невозможно копировать или перемещать файлы прямо на устройстве" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Не найдено носителей информации. Возможно, следует разблокировать ваше " +#~ "устройство." diff --git a/po/ru/kio5_network.po b/po/ru/kio5_network.po new file mode 100644 index 0000000..8aadd84 --- /dev/null +++ b/po/ru/kio5_network.po @@ -0,0 +1,24 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Alexander Yavorsky , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-02-11 20:14+0300\n" +"Last-Translator: Alexander Yavorsky \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 19.12.2\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Network" diff --git a/po/ru/kio5_nfs.po b/po/ru/kio5_nfs.po new file mode 100644 index 0000000..a0a1212 --- /dev/null +++ b/po/ru/kio5_nfs.po @@ -0,0 +1,73 @@ +# translation of kio_nfs.po to Russian +# KDE2 - kdebase/kio_nfs.po Russian translation. +# Copyright (C) 2001, KDE Team. +# +# Alex Miller , 2001. +# Leonid Kanter , 2004. +# Alexander Potashev , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-04-20 15:11+0300\n" +"Last-Translator: Alexander Potashev \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: неподдерживаемая версия NFS" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Ошибка RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Недостаточно места на устройстве" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Файловая система только для чтения" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Слишком длинное имя файла" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Превышена дисковая квота" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Ошибка NFS %1: «%2»" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Не удалось подключить %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Неизвестный сетевой путь" + +#~ msgid "An RPC error occurred." +#~ msgstr "Произошла ошибка RPC." diff --git a/po/ru/kio5_recentdocuments.po b/po/ru/kio5_recentdocuments.po new file mode 100644 index 0000000..8ea34ac --- /dev/null +++ b/po/ru/kio5_recentdocuments.po @@ -0,0 +1,24 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Yuri Efremov , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-01-18 21:13+0400\n" +"Last-Translator: Yuri Efremov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Последние документы" diff --git a/po/ru/kio5_sftp.po b/po/ru/kio5_sftp.po new file mode 100644 index 0000000..8d1f260 --- /dev/null +++ b/po/ru/kio5_sftp.po @@ -0,0 +1,462 @@ +# translation of kio_sftp.po into Russian +# translation of kio_sftp.po to Russian +# +# KDE3 - kdebase/kio_sftp.pot Russian translation. +# Copyright (C) 2002, KDE Russian translation Team. +# +# Gregory Mokhin , 2002, 2005. +# Leonid Kanter , 2004. +# Andrey Cherepanov , 2009, 2011. +# Alexander Potashev , 2010, 2015. +# Yuri Efremov , 2013. +# Alexander Lakhin , 2013, 2014. +# Alexander Yavorsky , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2019-01-25 23:05+0300\n" +"Last-Translator: Alexander Yavorsky \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 18.12.1\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" +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Неверный или некорректный пароль" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Не удалось выделить память под функции обработки" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Не удалось установить уровень журналирования." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Не удалось задать доп. данные для журналирования." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Не удалось задать функцию обратного вызова для журналирования." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Вход на сервер SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Введите ответ на этот вопрос в поле для имени пользователя." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Введите пароль." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Сайт:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Не удалось открыть сеанс SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Не удалось установить время ожидания." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Не удалось отключить использование алгоритма Нейгла." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Не удалось установить сжатие." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Не удалось установить имя сервера." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Не удалось установить номер порта." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Не удалось установить имя пользователя." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Не удалось обработать конфигурационный файл." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Подключение к SFTP-серверу %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Не удалось получить имя типа открытого ключа сервера" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Не удалось получить хэш из открытого ключа сервера" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Не удалось создать отпечаток из открытого ключа сервера" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Для этого сервера не найден ключ узла %1, но присутствует другой тип ключа.\n" +"Подобную ситуацию может вызывать подмена ключа сервера атакующим " +"злоумышленником.\n" +"Обратитесь к системному администратору.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Изменён ключ сервера %1.\n" +"Это означает, что возможна подмена адреса сервера.\n" +"Отпечаток ключа %2, полученный сейчас с сервера:\n" +" SHA256:%3\n" +"Обратитесь к системному администратору.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Внимание: невозможно проверить подлинность узла." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Не удалось установить подлинность сервера %1.\n" +"Отпечаток ключа %2: %3\n" +"Продолжить подключение к серверу?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Проверка подлинности неудачна." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Проверка подлинности неудачна. Сервер не передал список доступных методов " +"проверки" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Введите имя пользователя и пароль." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Неверное имя пользователя или пароль" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Не удаётся использовать подсистему SFTP. Убедитесь, что сервер поддерживает " +"SFTP." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Не удалось инициализировать сеанс SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Успешное соединение с %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Для этого сервера не найден ключ узла, но присутствует другой тип ключа.\n" +"Атакующий злоумышленник может подменить ключ сервера, что вызывает подобную " +"ситуацию.\n" +"Обратитесь к системному администратору.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Изменён ключ сервера %1.\n" +"Это означает, что возможна подмена адреса сервера.\n" +"Отпечаток ключа, полученный сейчас с сервера: %2\n" +"Обратитесь к системному администратору.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Не удалось установить подлинность сервера %1.\n" +"Отпечаток ключа: %2\n" +"Продолжить подключение к серверу?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Неверный контекст sftp" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Невозможно изменить права доступа для\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Не удалось прочитать ссылку: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Не указано имя сервера." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Произошла внутренняя ошибка. Повторите запрос ещё раз." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Введите имя пользователя и ключевую фразу." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Внимание: идентификация узла изменилась." + +#~ msgid "Connection failed." +#~ msgstr "Ошибка при соединении." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Соединение было закрыто сервером." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "ошибка SFTP: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP версии %1" + +#~ msgid "Protocol error." +#~ msgstr "Ошибка протокола." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Произошла внутренняя ошибка. Попробуйте ещё раз." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Произошла неизвестная ошибка при копировании файла в «%1». Попробуйте ещё " +#~ "раз." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Удалённый узел не поддерживает переименование файлов." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Удалённый узел не поддерживает создание символических ссылок." + +#~ msgid "Connection closed" +#~ msgstr "Соединение закрыто." + +#~ msgid "End of file." +#~ msgstr "Конец файла." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "Сбой выполнения команды SFTP по неизвестной причине." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Сервер SFTP прислал сообщение неверного формата." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Попытка выполнить операцию, не поддерживаемую сервером SFTP." + +#~ msgid "Error code: %1" +#~ msgstr "Код ошибки: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Невозможно одновременно указать подсистему и команду." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Не указаны параметры для запуска ssh." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Ошибка запуска программы ssh." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Произошла ошибка связи с ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Укажите пароль." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Укажите пароль для вашего личного ключа SSH." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Ошибка регистрации на %1" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Идентификация удалённого сервера «%1» не может быть проверена, поскольку " +#~ "ключ сервера не указан в файле известных серверов." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ "Добавьте ключ сервера в файл известных серверов вручную или обратитесь к " +#~ "системному администратору." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ "Добавьте ключ сервера в «%1» вручную или обратитесь к системному " +#~ "администратору." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Идентификация удалённого сервера «%1» не может быть проверена. Отпечаток " +#~ "ключа сервера:\n" +#~ "%2\n" +#~ "Вы должны проверить отпечаток ключа сервера с администратором сервера " +#~ "перед установлением соединения.\n" +#~ "\n" +#~ "Принять ключ сервера и продолжить соединение?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "ВНИМАНИЕ: идентификация сервера «%1» изменилась!\n" +#~ "\n" +#~ "Кто-то проник в ваше соединение или администратор сервера сменил ключ " +#~ "сервера. В любом случае проверьте отпечаток ключа сервера с " +#~ "администратором этого сервера. Отпечаток:\n" +#~ "%2\n" +#~ "Добавьте правильный ключ сервера в «%3», чтобы это сообщение больше не " +#~ "показывалось." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "ВНИМАНИЕ: идентификация сервера «%1» изменилась!\n" +#~ "\n" +#~ "Кто-то проник в ваше соединение или администратор сервера сменил ключ " +#~ "сервера. В любом случае проверьте отпечаток ключа сервера с " +#~ "администратором этого сервера перед установлением соединения. Отпечаток:\n" +#~ "%2\n" +#~ "\n" +#~ "Принять ключ сервера и продолжить соединение?" + +#~ msgid "Host key was rejected." +#~ msgstr "Ключ сервера был отвергнут." + +#~ msgid "Please enter a username and password" +#~ msgstr "Введите имя пользователя и пароль" + +#~ msgid "File does not exist." +#~ msgstr "Файл не найден." + +#~ msgid "Access is denied." +#~ msgstr "Доступ запрещён." diff --git a/po/ru/kio5_smb.po b/po/ru/kio5_smb.po new file mode 100644 index 0000000..2c7a35a --- /dev/null +++ b/po/ru/kio5_smb.po @@ -0,0 +1,205 @@ +# translation of kio_smb.po into Russian +# translation of kio_smb.po to Russian +# +# +# KDE2 - kdebase/kio_smb.po Russian translation. +# Copyright (C) 2001, KDE Team. +# +# Alex Miller , 2001. +# Leonid Kanter , 2004. +# Gregory Mokhin , 2005. +# Nick Shaforostoff , 2005. +# Andrey Cherepanov , 2009. +# Alexander Potashev , 2019. +# Alexander Yavorsky , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-03-12 19:43+0300\n" +"Last-Translator: Alexander Yavorsky \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.12.3\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Укажите сведения идентификации для %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Укажите информацию идентификации для:\n" +"Сервер = %1\n" +"Папка = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Неизвестный тип файла: ни папка и ни файл." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Невозможно найти рабочие группы в вашей локальной сети. Возможно, этому " +"препятствует брандмауэр." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Нет диска в устройстве для %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Невозможно подключиться к серверу для %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Ошибка при подключении к серверу, ответственному за %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Невозможно найти папку на данном сервере" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Неверный описатель файла" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Указанное имя не может быть преобразовано в уникальный адрес сервера. " +"Убедитесь, что в вашей сети нет конфликтов между именами, используемыми в " +"Windows и UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Хост недоступен" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"Библиотека libsmbclient сообщила об ошибке, но не указала, в чём её причина. " +"Это может быть связано с неполадкой сети или самой библиотеки.\n" +"Если вы хотите нам помочь, сообщите вывод команды tcpdump, сделанный во " +"время попытки обзора сети (учтите, что вывод tcpdump может содержать " +"секретные данные, поэтому не публикуйте его - вы можете отправить его " +"разработчикам личной почтой, если они запросят)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Неизвестное состояние ошибки: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Не удалось получить доступ к %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "ошибка создания контекста libsmbclient" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Убедитесь, что пакет samba правильно установлен в системе." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Ошибка монтирования ресурса «%1» сервера «%2» под именем пользователя «%3».\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ошибка отключения точки монтирования «%1».\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Неизвестное устройство @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "ошибка инициализации контекста libsmbclient" + +#~ msgid "File does not exist: %1" +#~ msgstr "Файл не существует: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "ошибка инициализации libsmbclient" diff --git a/po/ru/kio5_thumbnail.po b/po/ru/kio5_thumbnail.po new file mode 100644 index 0000000..6dc1f7b --- /dev/null +++ b/po/ru/kio5_thumbnail.po @@ -0,0 +1,90 @@ +# translation of kio_thumbnail.po into Russian +# +# Gregory Mokhin , 2005. +# Andrey Cherepanov , 2009. +# Alexander Potashev , 2009, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-03-11 20:41+0300\n" +"Last-Translator: Alexander Potashev \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.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-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Автоматически поворачивать изображение" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Не указан тип MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Указан недопустимый размер." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Не удалось создать миниатюру для папки" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Не указан модуль." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Невозможно загрузить ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Невозможно создать миниатюру для %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Невозможно создать миниатюру." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Невозможно записать изображение." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Подключение к сегменту общей памяти %1 не выполнено" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Изображение слишком велико для сегмента общей памяти" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Gregory Mokhin,Nick Shaforostoff" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "mok@kde.ru,shaforostoff@kde.ru" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/sk/kfileaudiopreview5.po b/po/sk/kfileaudiopreview5.po new file mode 100644 index 0000000..89e2b5b --- /dev/null +++ b/po/sk/kfileaudiopreview5.po @@ -0,0 +1,31 @@ +# translation of kfileaudiopreview5.po to Slovak +# Roman Paholik , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-01-25 11:18+0100\n" +"Last-Translator: Roman Paholík \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Prehrať &automaticky" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "spustiť prehrávanie" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pozastaviť prehrávanie" diff --git a/po/sk/kio5_activities.po b/po/sk/kio5_activities.po new file mode 100644 index 0000000..f02bf8e --- /dev/null +++ b/po/sk/kio5_activities.po @@ -0,0 +1,250 @@ +# translation of kactivities5.po to Slovak +# Roman Paholík , 2014, 2015. +msgid "" +msgstr "" +"Project-Id-Version: kactivities5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-12-27 12:14+0100\n" +"Last-Translator: Roman Paholik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktivity" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Načítava sa..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Správca aktivít nebeží" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Odkaz na aktuálnu aktivitu" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Odlinkovať z aktuálnej aktivity" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Odkaz na:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Odlinkovať z:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktivita" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Aktuálna aktivita" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Roman Paholík" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "wizzardsk@gmail.com" + +#~ msgid "Default" +#~ msgstr "Predvolené" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Prepnúť na aktivitu \"%1\"" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Aktivity" + +#~ msgid "Delete activity" +#~ msgstr "Vymazať aktivitu" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Naozaj chcete vymazať '%1'?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Chyba načítania QML súborov. Skontrolujte vašu inštaláciu.\n" +#~ "Chýba %1" + +#~ msgid "Create a new activity" +#~ msgstr "Vytvoriť novú aktivitu" + +#~ msgid "Activity settings" +#~ msgstr "Nastavenie aktivity" + +#~ msgid "General" +#~ msgstr "Všeobecné" + +#~ msgid "Other" +#~ msgstr "Iné" + +#~ msgid "Create" +#~ msgstr "Vytvoriť" + +#~ msgid "Apply" +#~ msgstr "Použiť" + +#~ msgid "Cancel" +#~ msgstr "Zrušiť" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Skratka na prepínanie na túto aktivitu" + +#~ msgid "Activity information" +#~ msgstr "Informácia o aktivite" + +#~ msgid "Name" +#~ msgstr "Názov" + +#~ msgid "Description" +#~ msgstr "Popis" + +#~ msgid "Wallpaper" +#~ msgstr "Tapeta" + +#~ msgid "Change..." +#~ msgstr "Zmeniť..." + +#~ msgid "Icon" +#~ msgstr "Ikona" + +#~ msgid "Switching" +#~ msgstr "Prepínanie" + +#~ msgid "Privacy" +#~ msgstr "Súkromie" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "navždy" + +#~ msgid "Forget the last hour" +#~ msgstr "Zabudnúť poslednú hodinu" + +#~ msgid "Forget the last two hours" +#~ msgstr "Zabudnúť posledné dve hodiny" + +#~ msgid "Forget a day" +#~ msgstr "Zabudnúť deň" + +#~ msgid "Forget everything" +#~ msgstr "Zabudnúť všetko" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " mesiac" +#~ msgstr[1] " mesiace" +#~ msgstr[2] " mesiacov" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "pre " + +#~ msgid "Create activity..." +#~ msgstr "Vytvoriť aktivitu..." + +#~ msgid "Activity switching" +#~ msgstr "Prepínanie aktivít" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Prechádzať cez aktivity" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Prechádzať cez aktivity (spätne)" + +#~ msgid "Form" +#~ msgstr "Formulár" + +#~ msgid "Remember opened documents:" +#~ msgstr "Zapamätať si otvorené dokumenty:" + +#~ msgid "For a&ll applications" +#~ msgstr "Pre všetky aplikácie" + +#~ msgid "&Do not remember" +#~ msgstr "Nezapamätať si" + +#~ msgid "O&nly for specific applications" +#~ msgstr "Iba pre špecifické aplikácie" + +#~ msgid "Keep history" +#~ msgstr "Ponechať históriu" + +#~ msgid "Clear recent history" +#~ msgstr "Vyčistiť nedávnu históriu" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Vylúčiť všetky aplikácie, ktoré nie sú na zozname" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Zapamätať si aktuálnu virtuálnu plochu pre každú aktivitu (potrebuje " +#~ "reštart)" + +#~ msgid "Shortcuts" +#~ msgstr "Skratky" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Súkromná - nesledovať používanie pre túto aktivitu" + +#~ msgid "Delete" +#~ msgstr "Vymazať" + +#~ msgid "Activity name" +#~ msgstr "Názov aktivity" + +#~ msgid "Available Features" +#~ msgstr "Dostupné funkcie" + +#~ msgid "Plugins" +#~ msgstr "Moduly" + +#~ msgid "Enable activities management" +#~ msgstr "Povoliť správu aktivít" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Správca aktivít nebeží správne." + +#~ msgid "Activities..." +#~ msgstr "Aktivity..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" + +#~ msgctxt "Header title for resource data model" +#~ msgid "Resource" +#~ msgstr "Zdroj" diff --git a/po/sk/kio5_archive.po b/po/sk/kio5_archive.po new file mode 100644 index 0000000..8b5ae23 --- /dev/null +++ b/po/sk/kio5_archive.po @@ -0,0 +1,35 @@ +# translation of kio_archive.po to Slovak +# Richard Fric , 2006, 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2006-03-29 16:55+0200\n" +"Last-Translator: Richard Fric \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.1\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Nedá sa otvoriť súbor, pravdepodobne formát súboru nie je podporovaný.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Súbor archívu sa nedá otvoriť, formát asi nie je podporovaný.\n" +"%1" diff --git a/po/sk/kio5_bookmarks.po b/po/sk/kio5_bookmarks.po new file mode 100644 index 0000000..9bb99c4 --- /dev/null +++ b/po/sk/kio5_bookmarks.po @@ -0,0 +1,70 @@ +# translation of kio_bookmarks.po to Slovak +# Michal Sulek , 2009. +# Matej Mrenica , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-09 11:05+0100\n" +"Last-Translator: Matej Mrenica \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.3\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Koreň" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Miesta" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Konfiguráciu záložiek sa nepodarilo nájsť" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Nepodarilo sa nájsť editor záložiek" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Neplatná požiadavka: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Nie sú k dispozícii žiadne záložky na zobrazenie." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"CSS súbor kio_bookmarks nebol nájdený. Výstup nebude vyzerať pekne.\n" +"Skontrolujte svoju inštaláciu." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Moje záložky" + +#~ msgid "My bookmarks" +#~ msgstr "Moje záložky" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Pôvodný vývojár" diff --git a/po/sk/kio5_fish.po b/po/sk/kio5_fish.po new file mode 100644 index 0000000..34e69bf --- /dev/null +++ b/po/sk/kio5_fish.po @@ -0,0 +1,43 @@ +# translation of kio_fish.po to Slovak +# Stanislav Visnovsky , 2004. +# Michal Sulek , 2009. +# Roman Paholík , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-08-21 00:00+0200\n" +"Last-Translator: Roman Paholík \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Pripájanie..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Iniciovanie protokolu..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokálne prihlásenie" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH overenie" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Odpojený." diff --git a/po/sk/kio5_info.po b/po/sk/kio5_info.po new file mode 100644 index 0000000..ed8cae8 --- /dev/null +++ b/po/sk/kio5_info.po @@ -0,0 +1,27 @@ +# translation of kio_info.po to Slovak +# Richard Fric , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-03-29 12:31+0200\n" +"Last-Translator: Richard Fric \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Súbor %1, ktorý je potrebný pre spustenie služby, sa nedá nájsť. Prosím " +"skontrolujte si inštaláciu." diff --git a/po/sk/kio5_man.po b/po/sk/kio5_man.po new file mode 100644 index 0000000..a79cb10 --- /dev/null +++ b/po/sk/kio5_man.po @@ -0,0 +1,236 @@ +# translation of kio_man.po to Slovak +# Stanislav Visnovsky , 2002. +# Stanislav Visnovsky , 2002. +# Stanislav Visnovsky , 2003. +# Richard Fric , 2006, 2009. +# Michal Sulek , 2009. +# Roman Paholík , 2012. +# Matej Mrenica , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-07-29 12:55+0200\n" +"Last-Translator: Matej Mrenica \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.07.80\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Manuálová stránka %1 nenájdená.

        Skontrolujte, či ste nespravili " +"chybu v názve stránky.
        Buďte opatrný, malé a veľké písmená musia " +"súhlasiť
        Ak všetko vyzerá byť správne, potom možno potrebujete nastaviť " +"lepšie cestu k manuálovým stránkam, buď pomocou premennej MANPATH alebo " +"príslušného súboru v priečinku /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "The specified man page referenced another page '%1',
        but the " +#| "referenced page '%2' could not be found." +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Zadaná stránka príručky odkazovala na inú stránku '%1',
        , ale " +"odkazovanú stránku '%2' sa nepodarilo nájsť." + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Chyba KDE prehliadača manuálových stránok

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Odpovedá viac ako jedna manuálová stránka." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Poznámka: ak čítate manuálovú stránku vo svojom jazyku, uvedomte si, že môže " +"obsahovať chyby alebo môže byť zastaraná. V prípade pochybností by ste si " +"mali pozrieť anglickú verziu." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Hlavičkové súbory" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Hlavičkové súbory (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Užívateľské príkazy" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Používateľské príkazy (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Systémové volania" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Podprogramy" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Moduly Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Sieťové funkcie" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Zariadenia" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Formáty súborov" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Hry" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Rôzne" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Systémová administrácia" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokálna dokumentácia" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Nový" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Index manuálov UNIX" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sekcia %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Index pre sekciu %1: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Index manuálov UNIX" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Generuje sa index" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Nepodarilo sa nájsť program sgml2roff. Prosím nainštalujte ho, a ak je to " +"potrebné, rozšírte cesty pomocou premennej prostredia PATH pred spustením " +"KDE." + +#~ msgid "Open of %1 failed." +#~ msgstr "Otvorenie %1 zlyhalo." + +#~ msgid "Man output" +#~ msgstr "Výstup príkazu man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Stanislav Višňovský" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "visnovsky@nenya.ms.mff.cuni.cz" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/sk/kio5_mtp.po b/po/sk/kio5_mtp.po new file mode 100644 index 0000000..bf7df46 --- /dev/null +++ b/po/sk/kio5_mtp.po @@ -0,0 +1,34 @@ +# translation of kio_mtp.po to Slovak +# Roman Paholík , 2014, 2016. +# Matej Mrenica , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-07-29 12:54+0200\n" +"Last-Translator: Matej Mrenica \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.07.80\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Nenašlo sa žiadne úložisko. Uistite sa, že vaše zariadenie je odomknuté a má " +"MTP povolené v nastaveniach USB pripojenia." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Nemôžem kopírovať/presunúť súbory na samotné zariadenie" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "Nenašlo sa žiadne úložisko. Možno treba odomknúť vaše zariadenie?" diff --git a/po/sk/kio5_network.po b/po/sk/kio5_network.po new file mode 100644 index 0000000..f83ffb7 --- /dev/null +++ b/po/sk/kio5_network.po @@ -0,0 +1,21 @@ +# translation of kio5_network.po to Slovak +# Roman Paholík , 2014, 2016, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio5_network\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-28 22:14+0100\n" +"Last-Translator: Roman Paholik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.08.3\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Sieť" diff --git a/po/sk/kio5_nfs.po b/po/sk/kio5_nfs.po new file mode 100644 index 0000000..0eb9493 --- /dev/null +++ b/po/sk/kio5_nfs.po @@ -0,0 +1,65 @@ +# translation of kio_nfs.po to Slovak +# Stanislav Visnovsky , 2001. +# Roman Paholik , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-17 11:34+0200\n" +"Last-Translator: Roman Paholik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Nepodporovaná NFS verzia" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC chyba %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Nedostatok miesta na zariadení" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Súborový systém len pre čítanie" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Meno súboru príliš dlhé" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Prekročené obmedzenie miesta na disku" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS chyba %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Zlyhalo pripojenie %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Neznámy cieľ" + +#~ msgid "An RPC error occurred." +#~ msgstr "Nastala chyba RPC." diff --git a/po/sk/kio5_recentdocuments.po b/po/sk/kio5_recentdocuments.po new file mode 100644 index 0000000..e977d70 --- /dev/null +++ b/po/sk/kio5_recentdocuments.po @@ -0,0 +1,21 @@ +# translation of kio_recentdocuments.po to Slovak +# Roman Paholik , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-13 08:57+0100\n" +"Last-Translator: Roman Paholík \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Nedávne dokumenty" diff --git a/po/sk/kio5_sftp.po b/po/sk/kio5_sftp.po new file mode 100644 index 0000000..7081a8a --- /dev/null +++ b/po/sk/kio5_sftp.po @@ -0,0 +1,283 @@ +# translation of kio_sftp.po to Slovak +# Stanislav Visnovsky , 2001,2002. +# Stanislav Visnovsky , 2003, 2004, 2005. +# Richard Fric , 2006, 2009. +# Michal Sulek , 2009, 2010. +# Roman Paholík , 2012, 2013, 2014. +# Matej Mrenica , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2019-12-22 11:46+0100\n" +"Last-Translator: Matej Mrenica \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.12.0\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Nesprávne alebo neplatné heslo" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nepodarilo sa prideliť spätné volania" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nepodarilo sa nastaviť podrobnosti logu." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Nepodarilo sa nastaviť používateľské údaje záznamu." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Nepodarilo sa nastaviť spätné volanie záznamu." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Prihlásenie SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Použite vstupné pole užívateľské meno pre odpoveď na túto otázku." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Prosím zadajte vaše heslo." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Server:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nepodarilo sa vytvoriť nové sedenie SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nepodarilo sa nastaviť časový limit." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagleov algoritmus sa nepodarilo zakázať." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Nepodarilo sa nastaviť kompresiu." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Nepodarilo sa nastaviť hostiteľa." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Nepodarilo sa nastaviť port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Nepodarilo sa nastaviť užívateľské meno." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nepodarilo sa spracovať konfiguračný súbor." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Otvára sa SFTP pripojenie k hostiteľovi %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Názov typu verejného kľúča servera sa nepodarilo získať" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Nemôžem vytvoriť hash z verejného kľúča servera" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Nepodarilo sa vytvoriť odtlačok pre verejný kľúč servera" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Kľúč hostiteľa %1 pre tento server sa nenašiel, ale existuje iný typ kľúča.\n" +"Útočník mohol zmeniť štandardný kľuč servera, aby zmiatol vášho klienta, aby " +"si myslel, že kľúč neexistuje.\n" +"Prosím kontaktujte svojho systémového administrátora.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Kľúč hostiteľa pre server %1 sa zmenil.\n" +"To môže znamenať buď, že dochádza k FALŠOVANIU DNS, alebo IP adresa " +"hostiteľa a jeho kľúč sa zmenili v rovnakom čase.\n" +"Odtlačok pre kľúč %2 odoslaný vzdialeným hostiteľom je:\n" +" SHA256:%3\n" +"Prosím kontaktujte svojho systémového administrátora.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Upozornenie: Nie je možné overiť identitu hostiteľa." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Pravosť hostiteľa %1 nie je možné zistiť.\n" +"Odtlačok kľúča %2 je: %3\n" +"Naozaj chcete pokračovať v pripájaní?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Overenie zlyhalo." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "Overenie zlyhalo. Server neposlal žiadne metódy overenia" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Zadajte svoje užívateľské meno a heslo." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Neplatné užívateľské meno alebo heslo" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Nepodarilo sa vyžiadať podsystém SFTP. Uistite sa, že je SFTP na serveri " +"povolený." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nepodarilo sa inicializovať sedenie SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Úspešne pripojený k %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Kľúč hostiteľa pre tento server sa nenašiel, ale existuje iný typ kľúča.\n" +"Útočník mohol zmeniť štandardný kľuč servera, aby zmiatol vášho klienta, " +"ktorý sa domnieva, že kľúč neexistuje.\n" +"Kontaktujte svojho administrátora systému.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Kľúč hostiteľa pre server %1 sa zmenil.\n" +"To môže znamenať buď, že dochádza k FALŠOVANIU DNS, alebo IP adresa " +"hostiteľa a jeho kľúč sa zmenili v rovnakom čase.\n" +"Odtlačok pre kľúč odoslaný vzdialeným hostiteľom je:\n" +" %2\n" +"Kontaktujte svojho administrátora systému.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Pravosť hostiteľa %1 nie je možné zistiť.\n" +"Odtlačok kľúča je: %2\n" +"Naozaj chcete pokračovať v pripojení?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Neplatný kontext sftp" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nepodarilo sa zmeniť práva pre\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Nepodarilo sa prečítať odkaz: %1" diff --git a/po/sk/kio5_smb.po b/po/sk/kio5_smb.po new file mode 100644 index 0000000..ff07d88 --- /dev/null +++ b/po/sk/kio5_smb.po @@ -0,0 +1,191 @@ +# translation of kio_smb.po to Slovak +# Stanislav Visnovsky , 2001. +# Stanislav Visnovsky , 2003, 2004. +# Richard Fric , 2006, 2009. +# Peter Mihalik , 2006. +# Roman Paholik , 2017. +# Matej Mrenica , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-06-17 18:32+0200\n" +"Last-Translator: Matej Mrenica \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Prosím, zadajte informácie pre prihlásenie k %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Prosím, zadajte informácie pre prihlásenie k:\n" +"Server = %1\n" +"Disk = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Neznámy typ súboru, ani priečinok ani súbor." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Nepodarilo sa nájsť žiadnu pracovnú skupinu na vašej lokálnej sieti. Toto " +"môže byť spôsobené použitím firewall." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "V zariadení pre %1 nenájdené médium" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nepodarilo sa pripojiť k hostiteľovi pre %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Chyba počas pripájania k serveru zodpovednému za %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Zdieľaný disk sa na zadanom serveri nepodarilo nájsť" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Zlý deskriptor súboru" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Zadané meno sa nepodarilo previesť na jednoznačný server. Overte, že máte " +"sieťové nastavenie bez konfliktov v menách medzi systémami UNIX a Windows." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Hostiteľ nedostupný" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient oznámil chybu, ale neupresnil, v čom je problém. To môže " +"naznačovať vážny problém s vašou sieťou, ale aj problém s knižnicou " +"libsmbclient.\n" +"Ak chcete, aby sme vám pomohli, prosím, pošlite nám výstup tcpdump sieťového " +"rozhrania počas pokusu o prehliadanie siete (uvedomte si, že tento výpis " +"môže obsahovať súkromné dáta, takže ho neposielajte, ak si nie ste istý, čo " +"vlastne posielate. Môžete nám ho poslať neskôr, ak ho budú vývojári " +"potrebovať.)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Neznámy chybový stav: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Chyba počas pokusu o prístup k %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient sa nepodarilo vytvoriť kontext" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Overte, že máte správne nainštalovaný balík samba." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Pripojenie zdieľaného disku \"%1\" z hostiteľa \"%2\" užívateľom \"%3\" " +"zlyhalo.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Odpojenie priečinku \"%1\" zlyhalo.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Neznáme zariadenie @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient sa nepodarilo inicializovať kontext" + +#~ msgid "File does not exist: %1" +#~ msgstr "Súbor neexistuje: %1" diff --git a/po/sk/kio5_thumbnail.po b/po/sk/kio5_thumbnail.po new file mode 100644 index 0000000..c7332cf --- /dev/null +++ b/po/sk/kio5_thumbnail.po @@ -0,0 +1,73 @@ +# translation of kio_thumbnail.po to Slovak +# Richard Fric , 2006. +# Michal Sulek , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-01-16 18:13+0100\n" +"Last-Translator: Roman Paholík \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Otočiť obrázok automaticky" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Žiadny typ MIME nie je špecifikovaný." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Veľkosť nebola zadaná alebo je neplatná." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nedá sa vytvoriť náhľad pre adresár" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Žiadny modul nie je špecifikovaný." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nedá sa načítať ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nedá sa vytvoriť náhľad pre %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Vytvorenie náhľadu zlyhalo." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Obrázok sa nedá zapísať." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Pripojenie zdielaného segmentu pamäte %1 zlyhalo" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Obrázok je príliš veľký pre zdielaný segment pamäte" diff --git a/po/sl/kfileaudiopreview5.po b/po/sl/kfileaudiopreview5.po new file mode 100644 index 0000000..f99af31 --- /dev/null +++ b/po/sl/kfileaudiopreview5.po @@ -0,0 +1,36 @@ +# Translation of kfileaudiopreview4.po to Slovenian +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Gregor Rakar , 2003. +# Jure Repinc , 2009. +# Andrej Mernik , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-07-03 20:15+0200\n" +"Last-Translator: Andrej Mernik \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "S&amodejno predvajaj" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "začni predvajanje" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "premor predvajanja" diff --git a/po/sl/kio5_activities.po b/po/sl/kio5_activities.po new file mode 100644 index 0000000..de51d92 --- /dev/null +++ b/po/sl/kio5_activities.po @@ -0,0 +1,252 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Andrej Vernekar , 2012. +# Jure Repinc , 2013. +# Andrej Mernik , 2013, 2014, 2015, 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-01-03 13:19+0100\n" +"Last-Translator: Andrej Mernik \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" +"X-Generator: Lokalize 1.5\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Dejavnosti" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Nalaganje ..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Upravljalnik dejavnosti ne teče" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Poveži s trenutno dejavnostjo" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Prekini povezavo s trenutno dejavnostjo" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Poveži z:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Prekini povezavo z:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Dejavnost" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Trenutna dejavnost" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andrej Vernekar,Andrej Mernik" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "andrej.vernekar@gmail.com,andrejm@ubuntu.si" + +#~ msgid "Default" +#~ msgstr "Privzeta" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Preklopi na dejavnost »%1«" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Dejavnost" + +#~ msgid "Delete activity" +#~ msgstr "Izbriši dejavnost" + +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Ali ste prepričani, da želite izbrisati »%1«?" + +#~ msgid "" +#~ "Error loading the QML files. Check your installation.\n" +#~ "Missing %1" +#~ msgstr "" +#~ "Napaka med nalaganjem datotek QML. Preverite vašo namestitev.\n" +#~ "Manjka %1" + +#~ msgid "Create a new activity" +#~ msgstr "Ustvari novo dejavnost" + +#~ msgid "Activity settings" +#~ msgstr "Nastavitve dejavnosti" + +#~ msgid "General" +#~ msgstr "Splošno" + +#~ msgid "Other" +#~ msgstr "Drugo" + +#~ msgid "Create" +#~ msgstr "Ustvari" + +#~ msgid "Apply" +#~ msgstr "Uveljavi" + +#~ msgid "Cancel" +#~ msgstr "Prekliči" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Bližnjica za preklop na to dejavnost:" + +#~ msgid "Activity information" +#~ msgstr "Podrobnosti o dejavnosti" + +#~ msgid "Name" +#~ msgstr "Ime" + +#~ msgid "Description" +#~ msgstr "Opis" + +#~ msgid "Wallpaper" +#~ msgstr "Slika ozadja" + +#~ msgid "Change..." +#~ msgstr "Spremeni ..." + +#~ msgid "Icon" +#~ msgstr "Ikona" + +#~ msgid "Switching" +#~ msgstr "Preklapljanje" + +#~ msgid "Privacy" +#~ msgstr "Zasebnost" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "vedno" + +#~ msgid "Forget the last hour" +#~ msgstr "Pozabi zadnjo uro" + +#~ msgid "Forget the last two hours" +#~ msgstr "Pozabi zadnji dve uri" + +#~ msgid "Forget a day" +#~ msgstr "Pozabi dan" + +#~ msgid "Forget everything" +#~ msgstr "Pozabi vse" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] "%1 mesecev" +#~ msgstr[1] "%1 mesec" +#~ msgstr[2] "%1 meseca" +#~ msgstr[3] "%1 mesece" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "za " + +#~ msgid "Create activity..." +#~ msgstr "Ustvari dejavnost ..." + +#~ msgid "Activity switching" +#~ msgstr "Preklop med dejavnostmi" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Sprehodite se med dejavnostmi" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Sprehodite se med dejavnostmi (obratno)" + +#~ msgid "Form" +#~ msgstr "Obrazec" + +#~ msgid "Remember opened documents:" +#~ msgstr "Zapomni si odprte dokumente:" + +#~ msgid "For a&ll applications" +#~ msgstr "Za &vse programe" + +#~ msgid "&Do not remember" +#~ msgstr "&Ne zapomni si" + +#~ msgid "O&nly for specific applications" +#~ msgstr "Sa&mo za določene programe" + +#~ msgid "Keep history" +#~ msgstr "Ohrani zgodovino" + +#~ msgid "Clear recent history" +#~ msgstr "Počisti nedavno zgodovino" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Na črni seznam daj vse programe, ki niso na tem seznamu" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Zapomni si trenutno navidezno namizje za vsako dejavnost (zahteva ponovni " +#~ "zagon)" + +#~ msgid "Shortcuts" +#~ msgstr "Bližnjice" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Zasebna - ne sledi uporabi te dejavnosti" + +#~ msgid "Delete" +#~ msgstr "Izbriši" + +#~ msgid "Activity name" +#~ msgstr "Ime dejavnosti" + +#~ msgid "Available Features" +#~ msgstr "Razpoložljive zmožnosti" + +#~ msgid "Plugins" +#~ msgstr "Vstavki" + +#~ msgid "Enable activities management" +#~ msgstr "Omogoči upravljanje dejavnosti" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Upravljalnik dejavnosti ne deluje pravilno." + +#~ msgid "Activities..." +#~ msgstr "Dejavnosti ..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "© 2012 Ivan Cukic" diff --git a/po/sl/kio5_archive.po b/po/sl/kio5_archive.po new file mode 100644 index 0000000..f35b1fd --- /dev/null +++ b/po/sl/kio5_archive.po @@ -0,0 +1,38 @@ +# translation of kio_tar.po to Slovenian +# +# Jure Repinc , 2005. +# Andrej Mernik , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-06-03 17:24+0200\n" +"Last-Translator: Andrej Mernik \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Ni mogoče odpreti datoteke. Mogoče vrsta datoteke ni podprta.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Ni bilo mogoče odpreti datoteke arhiva. Mogoče vrsta datoteke ni podprta.\n" +"%1" diff --git a/po/sl/kio5_bookmarks.po b/po/sl/kio5_bookmarks.po new file mode 100644 index 0000000..8bd14b0 --- /dev/null +++ b/po/sl/kio5_bookmarks.po @@ -0,0 +1,82 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jure Repinc , 2009. +# Andrej Mernik , 2013. +# Matjaž Jeran , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-05 08:36+0100\n" +"Last-Translator: Matjaž Jeran \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.1\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Vrh" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Mesta" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Nastavitve zaznamkov ni bilo mogoče najti" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Urejevalnika zaznamkov ni bilo mogoče najti" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Napačna zahteva: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Za prikaz ni na voljo nobenega zaznamka." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Ni bilo mogoče najti datoteke CSS kio_bookmarks. Izpis bo grd.\n" +"Preverite namestitev." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Moji zaznamki" + +#~ msgid "My bookmarks" +#~ msgstr "Moji zaznamki" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Prvotni razvijalec" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Jure Repinc" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jlp@holodeck1.com" diff --git a/po/sl/kio5_fish.po b/po/sl/kio5_fish.po new file mode 100644 index 0000000..cdc9a85 --- /dev/null +++ b/po/sl/kio5_fish.po @@ -0,0 +1,47 @@ +# Translation of kio_fish.po to Slovenian +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +# +# Gregor Rakar , 2003. +# Gregor Rakar , 2003, 2004. +# Jure Repinc , 2009, 2012. +# Andrej Mernik , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-06-03 17:26+0200\n" +"Last-Translator: Andrej Mernik \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Povezovanje ..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Začenjanje protokola ..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Krajevna prijava" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Overitev SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Brez povezave." diff --git a/po/sl/kio5_info.po b/po/sl/kio5_info.po new file mode 100644 index 0000000..ceaec28 --- /dev/null +++ b/po/sl/kio5_info.po @@ -0,0 +1,31 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jure Repinc , 2009. +# Andrej Mernik , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2013-06-03 17:34+0200\n" +"Last-Translator: Andrej Mernik \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Ni bilo mogoče najti datoteke %1, ki je zahtevana za zagon te storitve. " +"Preverite namestitev programov." diff --git a/po/sl/kio5_man.po b/po/sl/kio5_man.po new file mode 100644 index 0000000..6f1eb89 --- /dev/null +++ b/po/sl/kio5_man.po @@ -0,0 +1,211 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Marko Samastur , 2000. +# Gregor Rakar , 2003. +# Jure Repinc , 2007, 2008, 2009, 2012. +# Andrej Mernik , 2013. +# Matjaž Jeran , 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-14 09:40+0200\n" +"Last-Translator: Matjaž Jeran \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Translator: Andrej Mernik \n" +"X-Generator: Lokalize 19.12.2\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Ni mogoče najti strani man, ki bi ustrezala %1.Prepričajte se, da se niste zatipkali pri imenu želene strani in " +"upoštevajte, da so imena občutljiva na male/velike črke.Če je vse " +"pravilno, bo mogoče potrebno nastaviti pot za iskanje strani man. To lahko " +"storite z okoljsko spremenljivko MANPATH ali pa z ustrezno " +"nastavitveno datoteko v mapi /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Stran man %1 je bila sicer najdena, a ni je bilo mogoče " +"prebrati in razčleniti." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Določena stran man se je sklicevala na drugo stran %1," +", a te strani %2 ni bilo mogoče najti." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Napaka pri pregledovalniku strani man" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Na voljo je več kot ena ujemajoča se stran man:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Več strani priročnika" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Opomba: ko berete strani man v slovenščini, se morate zavedati, da lahko " +"vsebujejo napake ali pa so zastarele. Če ste v dvomih, si oglejte različico " +"v angleščini." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Datoteke glave" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Datoteke glave (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Uporabniški ukazi" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Uporabniški ukazi (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Sistemski klici" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Podprogrami" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Moduli Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Omrežne funkcije" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Naprave" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Vrste datotek" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Igre" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Razno" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Skrbništvo sistema" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Jedro" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Krajevna dokumentacija" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Glavno kazalo strani priročnika" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Odsek %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Kazalo za odsek %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Kazalo strani priročnika" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Ustvarjanje kazala" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Na vašem sistemu ni bilo mogoče najti programa sgml2roff. " +"Namestite ga, če je potrebno, in razširite poti iskanja s prilagoditvijo " +"okoljske spremenljivke PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "Odpiranje %1 je spodletelo." + +#~ msgid "Man output" +#~ msgstr "Izpis man" diff --git a/po/sl/kio5_mtp.po b/po/sl/kio5_mtp.po new file mode 100644 index 0000000..554f0e2 --- /dev/null +++ b/po/sl/kio5_mtp.po @@ -0,0 +1,38 @@ +# Slovenian translation of kio5_mtp +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Andrej Mernik , 2014, 2016. +# Matjaž Jeran , 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2020-01-23 16:23+0100\n" +"Last-Translator: Matjaž Jeran \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Translator: Andrej Mernik \n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" +"X-Generator: Poedit 2.2.4\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Ni bilo najdenih medijev. Prepričajte se, da je vaša naprava odklenjena in " +"ima v nastavitvah povezave z USB vklopljen MTP." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Ni mogoče kopirati/premakniti datotek na sami napravi" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "Ni najdenih shramb. Morda morate odkleniti vašo napravo?" diff --git a/po/sl/kio5_network.po b/po/sl/kio5_network.po new file mode 100644 index 0000000..58e139e --- /dev/null +++ b/po/sl/kio5_network.po @@ -0,0 +1,24 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Matjaž Jeran , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-06-09 14:41+0200\n" +"Last-Translator: Matjaž Jeran \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.12.2\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Omrežje" diff --git a/po/sl/kio5_nfs.po b/po/sl/kio5_nfs.po new file mode 100644 index 0000000..2f0e13a --- /dev/null +++ b/po/sl/kio5_nfs.po @@ -0,0 +1,72 @@ +# Translation of kio_nfs.po to Slovenian +# SLOVENIAN TRANSLATION OF K DESKTOP ENVIRONMENT. +# Copyright (C) 2001, 2004 Free Software Foundation, Inc. +# $Id: kio5_nfs.po 1569808 2020-05-22 08:27:06Z ltoscano $ +# $Source$ +# +# Andrej Vernekar , 2001. +# Gregor Rakar , 2004. +# Andrej Mernik , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-11-04 13:21+0100\n" +"Last-Translator: Andrej Mernik \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: nepodprta različica NFS" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Napaka RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Ni prostora na napravi" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Datotečni sistem le za branje" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Ime datoteke je predolgo" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Prekoračena je količinska omejitev diska" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Napaka NFS %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Ni bilo mogoče priklopiti %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Neznan cilj" + +#~ msgid "An RPC error occurred." +#~ msgstr "Prišlo je do napake RPC." diff --git a/po/sl/kio5_recentdocuments.po b/po/sl/kio5_recentdocuments.po new file mode 100644 index 0000000..1787c73 --- /dev/null +++ b/po/sl/kio5_recentdocuments.po @@ -0,0 +1,24 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jure Repinc , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-06-27 14:25+0200\n" +"Last-Translator: Jure Repinc \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" +"X-Generator: Lokalize 1.5\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Nedavni dokumenti" diff --git a/po/sl/kio5_sftp.po b/po/sl/kio5_sftp.po new file mode 100644 index 0000000..464de14 --- /dev/null +++ b/po/sl/kio5_sftp.po @@ -0,0 +1,293 @@ +# Slovenian translation of kio_sftp +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc. +# $Id: kio5_sftp.po 1584955 2020-11-07 04:55:49Z scripty $ +# $Source$ +# +# Andrej Vernekar , 2001. +# Gregor Rakar , 2003, 2004. +# Jure Repinc , 2008, 2009, 2010, 2012. +# Andrej Mernik , 2013, 2014. +# Matjaž Jeran , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2020-03-24 07:33+0100\n" +"Last-Translator: Matjaž Jeran \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Translator: Andrej Mernik \n" +"X-Generator: Poedit 2.3\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Nepravilna ali neveljavna šifrirna fraza" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Ni bilo mogoče dodeliti povratnih klicev" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Ni bilo mogoče nastaviti podrobnosti izpisa dnevnika." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Ni bilo mogoče nastaviti dnevnika uporabniških podatkov." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Ni bilo mogoče nastaviti povratnih klicev dnevnika." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Prijava SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Za odgovor na to vprašanje v vnosno polje vnesite uporabniško ime." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Vnesite svoje geslo." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Mesto:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Ni bilo mogoče ustvariti nove seje SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Ni bilo mogoče nastaviti časovne omejitve." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagle algoritma ni bilo mogoče onemogočiti." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Ni bilo mogoče nastaviti stiskanja." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Ni bilo mogoče nastaviti gostitelja." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Ni bilo mogoče nastaviti vrat." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Ni bilo mogoče nastaviti uporabniškega imena." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Ni bilo mogoče razčleniti nastavitvene datoteke." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Odpiranje povezave SFTP do gostitelja %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Ni bilo mogoče dobiti imena vrste javnega ključa strežnika" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" +"Ni bilo mogoče ustvariti razpršilne funkcije iz javnega ključa strežnika" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Ni bilo mogoče ustvariti prstnega odtisa za javni ključ strežnika" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Ključ %1 gostitelja tega strežnika ni bil najden, vendar obstaja druga vrsta " +"ključa.\n" +"Napadalec lahko spremeni privzeti ključ strežnika in tako poskuša zmesti " +"odjemalca, da le ta misli, da ključ ne obstaja.\n" +"Stopite v stik s svojim sistemskim skrbnikom.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Ključ gostitelja strežnika %1 je bil spremenjen.\n" +"To lahko pomeni, da se dogaja lažno predstavljanje DNS-ja, ali pa da sta se " +"istočasno spremenila naslov IP gostitelja in ključ gostitelja.\n" +"Prstni odtis %2 ključa, ki ga je poslal oddaljeni gostitelj je:\n" +" SHA256:%3\n" +"Stopite v stik s svojim sistemskim skrbnikom.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Pozor: ni mogoče preveriti istovetnosti gostitelja." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Pristnosti gostitelja %1 ne moremo ugotoviti.\n" +"Za ključ %2 je prstni odtis: %3\n" +"Ali res želite nadaljevati s povezovanjem?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Overitev ni uspela." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "Overitev ni uspela. Strežnik ni poslal nobenih overitvenih metod" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Vnesite vaše uporabniško ime in geslo." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Napačno uporabniško ime ali geslo" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Ni mogoče zahtevati podsistema SFTP. Prepričajte se, da je SFTP na strežniku " +"sploh omogočen." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Ni bilo mogoče začeti seje SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Uspešno povezan z %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Ključ gostitelja tega strežnika ni bil najden, vendar obstaja druga vrsta " +"ključa.\n" +"Napadalec lahko spremeni privzeti ključ strežnika in tako poskuša zmesti " +"odjemalca, da le ta misli, da ključ ne obstaja.\n" +"Stopite v stik s svojim sistemskim skrbnikom.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Ključ gostitelja strežnika %1 je bil spremenjen.\n" +"To lahko pomeni, da se dogaja lažno predstavljanje DNS-ja, ali pa da sta se " +"istočasno spremenila naslov IP gostitelja in ključ gostitelja.\n" +"Prstni odtis ključa, ki ga je poslal oddaljeni gostitelj je:\n" +" %2\n" +"Stopite v stik s svojim sistemskim skrbnikom.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Pristnosti gostitelja %1 ni bilo mogoče ugotoviti.\n" +"Prstni odtis ključa je: %2\n" +"Ali res želite nadaljevati s povezovanjem?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Neveljaven kontekst sftp" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ni bilo mogoče spremeniti dovoljenj za\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Ni bilo mogoče prebrati povezave: %1" diff --git a/po/sl/kio5_smb.po b/po/sl/kio5_smb.po new file mode 100644 index 0000000..9923291 --- /dev/null +++ b/po/sl/kio5_smb.po @@ -0,0 +1,205 @@ +# translation of kio_smb.po to Slovenian +# Translation of kio_smb.po to Slovenian +# SLOVENIAN TRANSLATION OF K DESKTOP ENVIRONMENT. +# $Id: kio5_smb.po 1584793 2020-11-06 04:53:44Z scripty $ +# $Source$ +# +# Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc. +# Andrej Vernekar , 2001. +# Gregor Rakar , 2003, 2004. +# Andrej Mernik , 2013, 2017. +# Matjaž Jeran , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-05 08:46+0100\n" +"Last-Translator: Matjaž Jeran \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.1\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Obstajajo različne možnosti za preverjanje pristnosti dostopa do " +"skupnih delov SMB.uporabniško_ime: " +"pri preverjanju pristnosti v domačem omrežju zadostuje uporabniško ime na " +"strežnikuuporabniško_ime@domena.com: " +"Sodobna imena za prijavo v organizacije so oblikovana kot e-poštni nasloviDOMENA\\uporabniško_ime: Za stara " +"korporativna omrežja ali delovne skupine bi morali morda pred domenskim " +"imenom NetBIOS (pred Windows 2000) vnesti predponoanonymous: anonimne prijave lahko " +"poskusite s praznimi uporabniškim imenom in geslom. Glede na nastavitve " +"strežnika bodo morda potrebna neprazna uporabniška imena" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Vnesite overitvene podatke za %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Vnesite overitvene podatke za:\n" +"Strežnik = %1\n" +"Souporaba = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Neznana vrsta datoteke, ni niti mapa niti datoteka." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"V krajevnem omrežju ni mogoče najti nobenih delovnih skupin. To je lahko " +"posledica omogočenega požarnega zidu." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "V napravi ni nosilca za %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Ni se bilo mogoče povezati z gostiteljem za %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Napaka med povezovanjem s strežnikom, ki je odgovoren za %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Na podanem strežniku ni bilo mogoče najti souporabe" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Slab opisnik datotek" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Dano ime ni bilo razrešeno do edinstvenega strežnika. Preverite, ali so vaše " +"omrežne nastavitve brez imenskih sporov med imeni, ki jih uporablja " +"razreševanje imen za Windows in UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Gostitelj nedostopen" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient je sporočil napako, vendar ni navedel, kaj je narobe. To lahko " +"pomeni resne težave z omrežjem ali pa težave z libsmbclient-om.\n" +"Če bi nam radi pomagali, potem priskrbite »tcpdump« omrežnega vmesnika " +"medtem ko poskušate brskati (vedite, da lahko vsebuje zasebne podatke, zato " +"ga ne pošljite, če niste prepričani o tem - lahko ga pošljete zasebno " +"raziskovalcem, če zaprosijo zanj)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Neznano stanje napake: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Med poskusom dostopanja do %1 je prišlo do napake%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient ni uspel ustvariti konteksta" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Prepričajte se, da je paket samba pravilno nameščen na vašem sistemu." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Priklapljanje souporabe »%1« gostitelja »%2« uporabnika »%3« ni uspelo.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Odklapljanje priklopne točke »%1« ni uspelo.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Neznana naprava @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient ni uspel začeti konteksta" + +#~ msgid "File does not exist: %1" +#~ msgstr "Datoteka ne obstaja: %1" diff --git a/po/sl/kio5_thumbnail.po b/po/sl/kio5_thumbnail.po new file mode 100644 index 0000000..fdd36ab --- /dev/null +++ b/po/sl/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# translation of kio_thumbnail.po to Slovenian +# +# Jure Repinc , 2005, 2007, 2009, 2011. +# Andrej Mernik , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-06-03 18:30+0200\n" +"Last-Translator: Andrej Mernik \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Samodejno zavrti sliko" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Navedene ni nobene vrste MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Navedene ni nobene velikosti ali pa je le ta napačna." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ni bilo mogoče ustvariti sličice za mapo" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Navedenega ni nobenega vstavka." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ni mogoče naložiti ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ni mogoče ustvariti sličice za %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Ustvarjanje sličice je spodletelo." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Ni bilo mogoče zapisati slike." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Pripenjanje na deljen odsek pomnilnika %1 je spodletelo" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Slika je prevelika za deljen odsek pomnilnika" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Jure Repinc,Andrej Mernik" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jlp@holodeck1.com,andrejm@ubuntu.si" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/sr/docs/kioslave5/bookmarks/index.docbook b/po/sr/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..772b6d3 --- /dev/null +++ b/po/sr/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +Обележивачи + + +Ксавје Вејо xavier.vello@gmail.com +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        + +31. 8. 2008. +0.2 + +
        + +Овај У/И захват приказује ваше обележиваче као лепу и функционалну ХТМЛ страницу. Приступате му уписивањем bookmarks:/ у траку локације К‑освајача. + +Садржај и распоред странице је подесив. Само усмерите К‑освајач на bookmarks:/config да бисте покренули дијалог за подешавање. + +
        + diff --git a/po/sr/docs/kioslave5/bzip2/index.docbook b/po/sr/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..4d6dbe6 --- /dev/null +++ b/po/sr/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,74 @@ + + + +]> + +
        +Бзип2 и бзип + + +Лори Вотс &Lauri.Watts.mail; +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        +
        + +bzip2 је наредба за компресовање. + +У/И захват бзипа2 не може се користити непосредно, већ је замишљен као филтер. На пример, У/И захват тара може да филтрира фајл кроз У/И захват бзипа2, како би приказао садржаје .tar.bz2 фајлова на лицу места у прозору К‑освајача. + +Ако у К‑освајачу кликнете на компресован фајл са наставком .bz2, овај У/И захват ће га распаковати и приказати као обичан (некомпресован) фајл. + +Ако сте програмер и треба вам бзип2 филтер, документацију о употреби овог У/И захвата можете наћи на Техбази. + +Погледајте упутну страницу bzip2. + +Бзип је предак формата бзип2. Данас се ретко користи, пошто бзип2 нуди много бољу компресију. + +
        diff --git a/po/sr/docs/kioslave5/fish/index.docbook b/po/sr/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..688b65e --- /dev/null +++ b/po/sr/docs/kioslave5/fish/index.docbook @@ -0,0 +1,159 @@ + + + +]> + +
        +ФИСХ + + +Јерг Валтер &Joerg.Walter.mail; +Бред Хардс &Brad.Hards.mail; +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        + +27. 10. 2010. +КДЕ 4.5 + +
        + +Омогућава вам приступ фајловима на другом рачунару путем протокола „безбедне шкољке“ (ССХ). На удаљеном рачунару мора да се извршава ССХ демон, али остатак протокола користи стандардне алатке командне линије, као што ће бити наведено ниже. + +У/И захват ФИСХ‑а можете користити овако: fish://domacin или fish://korisnik@domacin. + +Неопходне су две обрнуте косе црте. + +Ако вам је корисничко име исто на оба рачунара, можете изоставити korisnik и пратећи знак @. + +Лозинку можете додати у формату fish://korisnik:lozinka@domacin, али није неопходно, пошто ће вам бити затражена ако није овако наведена. + +Ако ССХ демон ослушкује на нестандардном порту, циљни порт можете задати уобичајеном УРЛ синтаксом: fish://domacin:port. + +ФИСХ би требало да ради са сваким приближно с ПОСИКС‑ом сагласним удаљеним уникс рачунаром. Користи наредбе шкољке cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed и wc. ФИСХ покреће /bin/sh као своју шкољку, очекујући да то буде Борнова шкољка (или сагласна, попут bash). Ако су расположиве наредбе sed и file, као и фајл /etc/apache/magic са обрисима МИМЕ типова, користиће се заједно за погађање МИМЕ типова. + +Ако је на удаљеном рачунару доступан перл, користиће се уместо наредби шкољке. Тада су потребне само env и /bin/sh. Перл додатно омогућава већу брзину саобраћања. + +ФИСХ би могао да ради чак и на виндоуз машинама, ако су инсталиране алатке попут Сигвина. Све горепоменуте алатке морају бити у системској PATH, а почетна шкољка мора бити у стању да исправно обради наредбу echo FISH:;/bin/sh. + +
        diff --git a/po/sr/docs/kioslave5/gzip/index.docbook b/po/sr/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..d6cb054 --- /dev/null +++ b/po/sr/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,71 @@ + + + +]> + +
        +Гзип + + +Лори Вотс &Lauri.Watts.mail; +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        +
        + +gzip је наредба за компресовање + +У/И захват гзипа не може се користити непосредно, већ је замишљен као филтер. На пример, У/И захват тара може да филтрира фајл кроз У/И захват гзипа, како би приказао садржаје .tar.gz фајлова на лицу места у прозору К‑освајача. + +Ако у К‑освајачу кликнете на компресован фајл са наставком .gz, овај У/И захват ће га распаковати и приказати као обичан (некомпресован) фајл. + +Ако сте програмер и треба вам гзип филтер, документацију о употреби овог У/И захвата можете наћи на Техбази. + +Погледајте упутну страницу gzip. + +
        diff --git a/po/sr/docs/kioslave5/info/index.docbook b/po/sr/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..004c3d0 --- /dev/null +++ b/po/sr/docs/kioslave5/info/index.docbook @@ -0,0 +1,84 @@ + + + +]> + +
        +Инфо странице + + +Лори Вотс &Lauri.Watts.mail; +Никола Гут goutte@kde.org +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        +
        + +Инфо странице су врста документације. Њени документи су у формату по имену техинфо, а могу се читати кроз командну линију наредбом info. + +У/И захват инфо страница омогућава вам да из К‑освајача читате све инфо странице инсталиране на систему. Лако се користи: + +info:gcc + +Овим бисте добили чвор на врху инфо страница за компилатор ГЦЦ. + +Инфо странице су Гнуова замена за man, али нису стекле ширу примену изван Гнуовог софтвера. + +Инсталиране инфо странице врло лако можете прегледати у К‑центру-помоћи, а можете и користити У/И захват непосредно, нпр. у К‑освајачу. + +
        diff --git a/po/sr/docs/kioslave5/man/index.docbook b/po/sr/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..2e920fb --- /dev/null +++ b/po/sr/docs/kioslave5/man/index.docbook @@ -0,0 +1,163 @@ + + + +]> + +
        +Упутне странице + + +Лори Вотс &Lauri.Watts.mail; +Никола Гут goutte@kde.org +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        +
        + +У/И захватом упутних страница можете да читате све упутне странице инсталиране на систему. Лако се користи: + + + +man: + +Погледајте одељке упутстава, кликните да нађете остало. + + + +man:/fopen + +Погледајте упутну страницу за fopen. + + + +man:/fopen(3) + +Погледајте упутну страницу за fopen у одељку 3. + + + +man:/(3) + +Погледајте индекс одељка 3. + + + +man:/intro(3) + +Погледајте увод одељка 3. + + + + +Ако за име које сте унели постоји више упутних страница, добићете списак са ког можете изабрати тачно ону коју желите да видите. + +Постоји и пречица: #fopen, истог дејства као изнад. + +Ако неке упутне странице недостају, подесите поставни фајл /etc/manpath.config (или сличног имена, зависно од ваше дистрибуције) или променљиве окружења MANPATH и MANSECT. + +Као и са свим другим КДЕ‑овим У/И захватом, у било који КДЕ програм можете унети одговарајући УРЛ, попут man:/socket. Пробајте то у К‑писању, и добићете упутну страницу у ХТМЛ формату. + +Поштанска листа за контакт: kde-devel@kde.org + +
        diff --git a/po/sr/docs/kioslave5/network/index.docbook b/po/sr/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..0561501 --- /dev/null +++ b/po/sr/docs/kioslave5/network/index.docbook @@ -0,0 +1,93 @@ + + + +]> + +
        + +Мрежа + + + + Фридрих В.Х. Косебау kossebau@kde.org + ЧаславИлић
        caslav.ilic@gmx.net
        превод
        +
        + + 11. 12. 2016. + Програми КДЕ‑а 16.12 + +
        + + +Мрежни У/И захват омогућава кориснику да прегледа уређаје повезане на локалну мрежу и сервисе у погону на њима. Такође је могуће покретати програме за сервисе чији је тип познат. + +Да бисте видели све пронађене уређаје, унесите network://. + +network://име‑домаћина-уређаја набраја све нађене сервисе у погону на уређају. + +Избор сервиса прослеђује на УРЛ који одговара сервису, ако има погодног, нпр ssh://име‑домаћина-уређаја:порт/ за ССХ сервис. Сваком познатом типу сервиса додељен је МИМЕ тип, тако да корисник може додељивати нове руковаоце за резултујуће УРЛ‑ове. Ово се ради кроз контролни модул Придружења фајловима у Системским поставкама. МИМЕ типови сервиса тренутно су сви именовани као inode/vnd.kde.service.*. + + + Мрежни У/И захват тренутно налази и приказује само уређаје и сервисе који се активно оглашавају, путем радног оквира откривања сервиса ДНССД. + + +
        + diff --git a/po/sr/docs/kioslave5/nfs/index.docbook b/po/sr/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..2b95d55 --- /dev/null +++ b/po/sr/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +НФС + + +Лори Вотс &Lauri.Watts.mail; +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        +
        +Санов протокол НФС обезбеђује прозиран удаљени приступ фајл системима дељеним преко мрежа. НФС је пројектован да буде независан од хардвера, оперативног система, мрежне архитектуре и транспортних протокола. Ова независност постиже се коришћењем примитива „позива удаљених процедура“ (РПЦ) над „спољашњом репрезентацијом података“ (ИксДР). + +Помоћни протокол монтирања извршава функције посебне по оперативном систему, које клијентима омогућавају да прикључе стабла фасцикли на тачку унутар локалног фајл система. Преко контроле извоза, процес монтирања такође допушта серверу да додели дозволе удаљеног приступа ограниченом скупу клијената. + +„Менаџер закључавања“ пружа подршку за закључавање фајлова у НФС окружењу. Протокол НЛМ (мрежни менаџер закључавања) изолује нераздвојиве аспекте стања закључавања фајлова у један посебан протокол. + +Извор: http://www.networksorcery.com/enp/protocol/nfs.htm + +Погледајте упутну страницу НФС‑а. +
        diff --git a/po/sr/docs/kioslave5/recentdocuments/index.docbook b/po/sr/docs/kioslave5/recentdocuments/index.docbook new file mode 100644 index 0000000..58f601d --- /dev/null +++ b/po/sr/docs/kioslave5/recentdocuments/index.docbook @@ -0,0 +1,88 @@ + + + +]> + +
        +Недавни документи + + + + + Буркхард Лик &Burkhard.Lueck.mail; +ЧаславИлић
        caslav.ilic@gmx.net
        превод
        +
        + +1. 12. 2016. +Програми КДЕ‑а 16.12 + +
        + +У/И захват за приказивање недавних докумената или УРЛ‑ова у фајл дијалогу, менаџеру фајлова, у К‑извођачу и менију програма. + +У/И захват можете користити овако: + +Унесите recentdocuments:/ у траку локације Делфина, К‑освајача или фајл дијалога да добијете списак недавно отвараних докумената и УРЛ‑ова. + +Можете додати унос у бочну траку места: кликните десним на бочну траку, изаберите Додај ставку..., унесите recentdocuments:/ у поље Локација: и сачувајте га. Потом би требало да буде доступан у свим фајл дијалозима (осим ако нисте задали да се унос види само у тренутном програму). + +У модулу Плазма претрага Системских поставки укључите прикључак Недавни документи да би овај У/И захват био доступан у К‑извођачу. + +У мени програма додајте ставку са недавним документима на врх менија тако што укључите Прикажи недавне документе на страници поставки. + +
        diff --git a/po/sr/docs/kioslave5/sftp/index.docbook b/po/sr/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..19769ae --- /dev/null +++ b/po/sr/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +СФТП + + +Фердинанд Гасауер &Ferdinand.Gassauer.mail; +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        +
        +СФТП је протокол за безбедан пренос фајлова. sftp је интерактивна наредба за пренос фајлова, налик на ftp, али тако да све преносе шифрује кроз ssh. Може да користи многе могућности ssh, укључујући аутентификацију јавним кључем и компресовање. + +Погледајте упутну страницу sftp. + +
        diff --git a/po/sr/docs/kioslave5/smb/index.docbook b/po/sr/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..ac920fc --- /dev/null +++ b/po/sr/docs/kioslave5/smb/index.docbook @@ -0,0 +1,112 @@ + + + +]> + +
        +СМБ + + +Александер Нојндорф &Alexander.Neundorf.mail; +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        +11. 12. 2016. +Програми КДЕ‑а 16.12 +
        +У/И захват СМБ‑а омогућава вам да прегледате дељења на виндоуз (или самба) мрежи. + +Унесите smb:/ за преглед радних група. +smb://radnagrupa набројаће све домаћине унутар ње. +Да бисте видели домаћинова дељења, унесите smb://domacin или smb:/radnagrupadomacin. +За директан приступ дељењу, унесите smb://domacin/deljenje или smb:/radnagrupadomacindeljenje + +Да би се СМБ У/И захват користио, неопходно је да је инсталирана libsmbclient. + +Своје подразумевано име и лозинку можете поставити у Системским поставкама, у категорији Мрежа под ПовезивостВиндоузова дељења. Ово је нарочито корисно ако сте члан домена под Виндоузом НТ. Тамо такође можете поставити име радне групе, али оно најчешће није неопходно. Ако подразумевано није постављено, У/И захват ће вам затражити корисничко име и лозинку. + +
        + diff --git a/po/sr/docs/kioslave5/tar/index.docbook b/po/sr/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..82aef57 --- /dev/null +++ b/po/sr/docs/kioslave5/tar/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +Тар + + +Фердинанд Гасауер &Ferdinand.Gassauer.mail; +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        +
        +Програм за архивирање намењен складиштењу и извлачењу фајлова из архива познатих као тар‑фајлови. Тар‑фајлови су традиционално записивани на магнетним тракама, док је данас врло уобичајено стварати их као нормалне фајлове. + +Погледајте упутну страницу tar. + +
        diff --git a/po/sr/docs/kioslave5/thumbnail/index.docbook b/po/sr/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..a7ec62b --- /dev/null +++ b/po/sr/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,69 @@ + + + +]> + +
        +Сличице + + +Карстен Пфајфер &Carsten.Pfeiffer.mail; +ДраганПантелић
        falcon-10@gmx.de
        превод
        +
        +11. 12. 2016. +Програми КДЕ‑а 16.12 +
        +КДЕ користи У/И захват сличица за мрежно прозирно и трајно стварање сличица. + +У/И захвата сличица користи прикључке за непосредно стварање сличица. У Делфину и у К‑освајачу у режиму менаџера фајлова, приказ сличица можете укључити кроз подмени Приказ Преглед. + +У/И захват сличица није од непосредне важности корисницима, али ако сте програмер, можете га користити у својим програмима за стварање прегледа фајлова. + +За више информација погледајте документацију у извору. Наћи ћете је у изворној фасцикли thumbnail. + +
        diff --git a/po/sr/docs/kioslave5/xz/index.docbook b/po/sr/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..8e5e8dc --- /dev/null +++ b/po/sr/docs/kioslave5/xz/index.docbook @@ -0,0 +1,79 @@ + + + +]> + +
        +ИксЗ/ЛЗМА + + +Пер Ејвинд Карлсен +ЧаславИлић
        caslav.ilic@gmx.net
        превод
        +
        +
        + +xz је наредба за компресовање. + +У/И захват за xz не може се непосредно користити, већ само као филтер. На пример, У/И захват за tar може да употреби овај У/И захват да би приказао садржај .tar.lzma или .tar.xz фајла у прозору К‑освајача. + +Ако у К‑освајачу кликнете на фајл архиве са наставком .lzma или .tar.xz, овај У/И захват се позива да га отпакује и прикаже као обичан (некомпресовани) фајл. + +Ако сте програмер и желите да употребите филтер за xz, документацију о коришћењу У/И захвата можете наћи на http://techbase.kde.org. + +Погледајте упутство: xz. + +
        diff --git a/po/sr/kfileaudiopreview5.po b/po/sr/kfileaudiopreview5.po new file mode 100644 index 0000000..e0c897b --- /dev/null +++ b/po/sr/kfileaudiopreview5.po @@ -0,0 +1,37 @@ +# Translation of kfileaudiopreview4.po to Serbian. +# Toplica Tanaskovic , 2003, 2004. +# Chusslove Illich , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-06-11 19:51+0200\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.3.1\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" +"X-Wrapping: fine\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Пусти &аутоматски" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "Почни пуштање" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "Паузирај пуштање" diff --git a/po/sr/kio5_activities.po b/po/sr/kio5_activities.po new file mode 100644 index 0000000..80fd42f --- /dev/null +++ b/po/sr/kio5_activities.po @@ -0,0 +1,68 @@ +# Translation of kactivities5.po into Serbian. +# Chusslove Illich , 2012, 2014, 2015, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kactivities5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-12 03:21+0200\n" +"PO-Revision-Date: 2016-01-01 15:42+0100\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Активности" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Учитавам..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Менаџер активности није у погону." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:138 +#, kde-format +msgid "Link to the current activity" +msgstr "Повежи са текућом активношћу" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:143 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Развежи од текуће активности" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:147 +#, kde-format +msgid "Link to:" +msgstr "Повежи са:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:155 +#, kde-format +msgid "Unlink from:" +msgstr "Развежи од:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Активност" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Текућа активност" diff --git a/po/sr/kio5_archive.po b/po/sr/kio5_archive.po new file mode 100644 index 0000000..f375a4b --- /dev/null +++ b/po/sr/kio5_archive.po @@ -0,0 +1,39 @@ +# Translation of kio_tar.po to Serbian. +# Chusslove Illich , 2005. +# Dalibor Djuric , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2009-12-26 23:13+0100\n" +"Last-Translator: Dalibor Djuric \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: kio_archivebase.cpp:216 kio_archivebase.cpp:310 kio_archivebase.cpp:385 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Не могу да отворим фајл, вероватно јер није подржаног формата.\n" +"%1" + +#: kio_archivebase.cpp:436 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Не могу да отворим архиву, можда зато што није подржаног формата.\n" +"%1" diff --git a/po/sr/kio5_bookmarks.po b/po/sr/kio5_bookmarks.po new file mode 100644 index 0000000..bb6976b --- /dev/null +++ b/po/sr/kio5_bookmarks.po @@ -0,0 +1,55 @@ +# Translation of kio_bookmarks.po into Serbian. +# Chusslove Illich , 2009, 2010, 2014. +# Dalibor Djuric , 2009. +# Dalibor Djuric , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-06 03:18+0200\n" +"PO-Revision-Date: 2010-04-26 14:43+0200\n" +"Last-Translator: Dalibor Djuric \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Корен" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Места" + +#: kio_bookmarks.cpp:199 +#, kde-format +msgid "Wrong request: %1" +msgstr "Погрешан захтев: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Још увек нема обележивача за приказ." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"ЦСС фајл није нађен. Излаз ће бити ружан.\n" +"Проверите инсталацију." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Моји обележивачи" diff --git a/po/sr/kio5_fish.po b/po/sr/kio5_fish.po new file mode 100644 index 0000000..845706b --- /dev/null +++ b/po/sr/kio5_fish.po @@ -0,0 +1,45 @@ +# Translation of kio_fish.po into Serbian. +# Toplica Tanaskovic , 2003, 2004. +# Chusslove Illich , 2007, 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-05-10 03:32+0200\n" +"PO-Revision-Date: 2012-08-26 09:25+0200\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: fish.cpp:287 +#, kde-format +msgid "Connecting..." +msgstr "Повезујем се..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Припремам протокол..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Локално пријављивање" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "ССХ аутентификација" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Веза прекинута." diff --git a/po/sr/kio5_info.po b/po/sr/kio5_info.po new file mode 100644 index 0000000..2c55a3b --- /dev/null +++ b/po/sr/kio5_info.po @@ -0,0 +1,31 @@ +# Translation of kio_info into Serbian. +# Chusslove Illich , 2009. +# Dalibor Djuric , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-12-26 23:13+0100\n" +"Last-Translator: Dalibor Djuric \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: info.cc:45 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Не могу да нађем фајл %1, неопходан за покретање овог сервиса. Проверите " +"инсталацију софтвера." diff --git a/po/sr/kio5_man.po b/po/sr/kio5_man.po new file mode 100644 index 0000000..4eb14ed --- /dev/null +++ b/po/sr/kio5_man.po @@ -0,0 +1,188 @@ +# Translation of kio5_man.po into Serbian. +# Toplica Tanaskovic , 2003. +# Chusslove Illich , 2005, 2007, 2008, 2009, 2012, 2017. +# Dalibor Djuric , 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: kio5_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-06 03:18+0200\n" +"PO-Revision-Date: 2017-09-28 18:00+0200\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: kio_man.cpp:480 +#, kde-format +msgid "" +"No man page matching to %1 found.

        Check that you have not " +"mistyped the name of the page that you want.
        Check that you have typed " +"the name using the correct upper and lower case characters.
        If " +"everything looks correct, then you may need to improve the search path for " +"man pages; either using the environment variable MANPATH or using a matching " +"file in the /etc directory." +msgstr "" +"Није нађена ниједна упутна страница која одговара %1.

        Проверите да ли сте исправно унели име странице коју желите.
        Не " +"заборавите да морате пазити на разлику великих и малих слова.
        Ако све " +"делује тачно, можда морате задати бољу путању тражења упутних страница, или " +"у променљивој окружења $MANPATH или у одговарајућем фајлу у " +"фасцикли /etc." + +#: kio_man.cpp:511 +#, kde-format +msgid "Open of %1 failed." +msgstr "Отварање %1 није успело." + +#: kio_man.cpp:581 +#, kde-format +msgid "" +"The specified man page referenced another page '%1',
        but the referenced " +"page '%2' could not be found." +msgstr "" + +#: kio_man.cpp:617 kio_man.cpp:636 +#, kde-format +msgid "Man output" +msgstr "Излаз наредбе man" + +#: kio_man.cpp:621 +#, kde-format +msgid "

        KDE Man Viewer Error

        " +msgstr "

        Грешка КДЕ‑овог приказивача упутних страница

        " + +#: kio_man.cpp:640 +#, kde-format +msgid "There is more than one matching man page." +msgstr "Више од једне упутне странице одговара упиту." + +#: kio_man.cpp:651 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Напомена: Ако читате упутну страницу на свом језику, имајте на уму да може " +"имати неке грешке или бити застарела. Ако посумњате, погледајте и енглеску " +"верзију." + +#: kio_man.cpp:728 +#, kde-format +msgid "Header files" +msgstr "Фајлови заглавља" + +#: kio_man.cpp:729 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Фајлови заглавља (ПОСИКС)" + +#: kio_man.cpp:730 +#, kde-format +msgid "User Commands" +msgstr "Корисничке наредбе" + +#: kio_man.cpp:731 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Корисничке наредбе (ПОСИКС)" + +#: kio_man.cpp:732 +#, kde-format +msgid "System Calls" +msgstr "Системски позиви" + +#: kio_man.cpp:733 +#, kde-format +msgid "Subroutines" +msgstr "Подрутине" + +#: kio_man.cpp:734 +#, kde-format +msgid "Perl Modules" +msgstr "Перловски модули" + +#: kio_man.cpp:735 +#, kde-format +msgid "Network Functions" +msgstr "Мрежне функције" + +#: kio_man.cpp:736 +#, kde-format +msgid "Devices" +msgstr "Уређаји" + +#: kio_man.cpp:737 +#, kde-format +msgid "File Formats" +msgstr "Формати фајлова" + +#: kio_man.cpp:738 +#, kde-format +msgid "Games" +msgstr "Игре" + +#: kio_man.cpp:739 +#, kde-format +msgid "Miscellaneous" +msgstr "Разно" + +#: kio_man.cpp:740 +#, kde-format +msgid "System Administration" +msgstr "Администрација система" + +#: kio_man.cpp:741 +#, kde-format +msgid "Kernel" +msgstr "Језгро" + +#: kio_man.cpp:742 +#, kde-format +msgid "Local Documentation" +msgstr "Локална документација" + +# >> @title Section of man pages, as the several above +#: kio_man.cpp:743 +#, kde-format +msgid "New" +msgstr "Ново" + +#: kio_man.cpp:778 kio_man.cpp:782 kio_man.cpp:1133 +#, kde-format +msgid "UNIX Manual Index" +msgstr "Индекс уникс упута" + +#: kio_man.cpp:808 +#, kde-format +msgid "Section %1" +msgstr "Одељак %1" + +#: kio_man.cpp:1142 +#, kde-format +msgid "Index for Section %1: %2" +msgstr "Индекс за одељак %1: %2" + +#: kio_man.cpp:1147 +#, kde-format +msgid "Generating Index" +msgstr "Стварам индекс" + +#: kio_man.cpp:1412 +#, kde-format +msgid "" +"Could not find the sgml2roff program on your system. Please install it, if " +"necessary, and extend the search path by adjusting the environment variable " +"PATH before starting KDE." +msgstr "" +"Не могу да нађем наредбу sgml2roff. Инсталирајте је уколико је потребно, и " +"проширите путању претраге допуњавањем променљиве окружења $PATH (пре него " +"што се КДЕ покрене)." diff --git a/po/sr/kio5_mtp.po b/po/sr/kio5_mtp.po new file mode 100644 index 0000000..68151ba --- /dev/null +++ b/po/sr/kio5_mtp.po @@ -0,0 +1,36 @@ +# Translation of kio_mtp.po into Serbian. +# Chusslove Illich , 2014, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2016-11-28 01:33+0100\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: kio_mtp.cpp:223 +#, fuzzy, kde-format +#| msgid "" +#| "No Storages found. Make sure your device is unlocked and has MTP enabled " +#| "in its USB connection settings." +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Није нађено ниједно складиште. Проверите да ли је уређај откључан и да ли је " +"активиран МТП у његовим поставкама УСБ повезивања." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Фајлови не могу да се копирају/премештају на самом уређају" diff --git a/po/sr/kio5_nfs.po b/po/sr/kio5_nfs.po new file mode 100644 index 0000000..b271f1a --- /dev/null +++ b/po/sr/kio5_nfs.po @@ -0,0 +1,65 @@ +# Translation of kio_nfs.po into Serbian. +# Toplica Tanaskovic , 2003, 2004. +# Chusslove Illich , 2007, 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-18 19:34+0200\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: неподржана верзија НФС‑а" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "РПЦ грешка %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Нема простора на уређају" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Фајл систем само‑за‑читање" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Предугачко име фајла" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Прекорачена квота диска" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "НФС грешка %1 — %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Не могу да монтирам %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Непознат циљ" diff --git a/po/sr/kio5_recentdocuments.po b/po/sr/kio5_recentdocuments.po new file mode 100644 index 0000000..e57005a --- /dev/null +++ b/po/sr/kio5_recentdocuments.po @@ -0,0 +1,24 @@ +# Translation of kio_recentdocuments.po into Serbian. +# Chusslove Illich , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-06-04 22:20+0200\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Недавни документи" diff --git a/po/sr/kio5_sftp.po b/po/sr/kio5_sftp.po new file mode 100644 index 0000000..c47fb5c --- /dev/null +++ b/po/sr/kio5_sftp.po @@ -0,0 +1,308 @@ +# Translation of kio_sftp.po into Serbian. +# Toplica Tanaskovic , 2003, 2004. +# Chusslove Illich , 2005, 2007, 2008, 2009, 2010, 2012, 2013, 2014. +# Dalibor Djuric , 2009, 2010. +# Dalibor Djuric , 2010, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-05-15 03:32+0200\n" +"PO-Revision-Date: 2014-12-06 16:12+0100\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: kio_sftp.cpp:212 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Нетачна или неважећа лозинка" + +#: kio_sftp.cpp:262 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Не могу да резервишем контрапозиве." + +#: kio_sftp.cpp:275 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Не могу да поставим опширност бележења." + +#: kio_sftp.cpp:280 +#, kde-format +msgid "Could not set log userdata." +msgstr "Не могу да поставим корисничке податке бележења." + +#: kio_sftp.cpp:285 +#, kde-format +msgid "Could not set log callback." +msgstr "Не могу да поставим контрапозив бележења." + +#: kio_sftp.cpp:354 kio_sftp.cpp:356 kio_sftp.cpp:890 kio_sftp.cpp:1184 +#, kde-format +msgid "SFTP Login" +msgstr "СФТП пријављивање" + +#: kio_sftp.cpp:371 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "На ово питање одговорите у пољу за унос корисничког имена." + +#: kio_sftp.cpp:384 +#, kde-format +msgid "Please enter your password." +msgstr "Унесите лозинку." + +#: kio_sftp.cpp:389 kio_sftp.cpp:893 kio_sftp.cpp:1187 +#, kde-format +msgid "Site:" +msgstr "Сајт:" + +#: kio_sftp.cpp:580 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Не могу да направим нову ССХ сесију." + +#: kio_sftp.cpp:590 kio_sftp.cpp:594 +#, kde-format +msgid "Could not set a timeout." +msgstr "Не могу да поставим прековреме." + +#: kio_sftp.cpp:602 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Не могу да поставим порт." + +#: kio_sftp.cpp:609 kio_sftp.cpp:614 +#, kde-format +msgid "Could not set compression." +msgstr "Не могу да поставим компресију." + +#: kio_sftp.cpp:620 +#, kde-format +msgid "Could not set host." +msgstr "Не могу да поставим домаћин." + +#: kio_sftp.cpp:626 +#, kde-format +msgid "Could not set port." +msgstr "Не могу да поставим порт." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set username." +msgstr "Не могу да поставим корисничко име." + +#: kio_sftp.cpp:641 +#, kde-format +msgid "Could not parse the config file." +msgstr "Не могу да рашчланим поставни фајл." + +#: kio_sftp.cpp:658 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Отварам СФТП везу ка домаћину %1:%2" + +#: kio_sftp.cpp:733 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not get server public key type name" +msgstr "Не могу да направим дисперзију јавног кључа сервера" + +#: kio_sftp.cpp:744 kio_sftp.cpp:1052 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Не могу да направим дисперзију јавног кључа сервера" + +#: kio_sftp.cpp:754 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not create fingerprint for server public key" +msgstr "Не могу да направим дисперзију јавног кључа сервера" + +#: kio_sftp.cpp:764 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Кључ домаћина за овај сервер није нађен, али постоји други тип кључа.\n" +"Нападач би могао да промени подразумевани кључ сервера тако да ваш клијент " +"помисли да кључ не постоји.\n" +"Обратите се систем-администратору.\n" +"%1" + +#: kio_sftp.cpp:776 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Кључ домаћина за сервер %1 измењен је.\n" +"Ово значи да је или дошло до ДНС варке, или су и ИП адреса и кључ домаћина " +"истовремено промењени.\n" +"Удаљени домаћин шаље кључ са отиском:\n" +"%2\n" +"Обратите се систем-администратору.\n" +"%3" + +#: kio_sftp.cpp:792 kio_sftp.cpp:1093 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Упозорење: Не могу да проверим индентитет домаћина." + +#: kio_sftp.cpp:793 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Аутентичност домаћина %1 не може да се успостави.\n" +"Отисак кључа је: %2\n" +"Желите ли заиста да наставите с повезивањем?" + +#: kio_sftp.cpp:830 kio_sftp.cpp:851 kio_sftp.cpp:867 kio_sftp.cpp:882 +#: kio_sftp.cpp:938 kio_sftp.cpp:948 kio_sftp.cpp:1124 kio_sftp.cpp:1145 +#: kio_sftp.cpp:1161 kio_sftp.cpp:1176 kio_sftp.cpp:1232 kio_sftp.cpp:1242 +#, kde-format +msgid "Authentication failed." +msgstr "Аутентификација није успела." + +#: kio_sftp.cpp:837 kio_sftp.cpp:1131 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Аутентификација није успела. Сервер није послао ниједан метод " +"аутентификације." + +#: kio_sftp.cpp:891 kio_sftp.cpp:1185 +#, kde-format +msgid "Please enter your username and password." +msgstr "Унесите своје корисничко име и лозинку." + +#: kio_sftp.cpp:902 kio_sftp.cpp:1196 +#, kde-format +msgid "Incorrect username or password" +msgstr "Погрешно корисничко име или лозинка" + +#: kio_sftp.cpp:956 kio_sftp.cpp:1250 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Не могу да затражим СФТП подсистем. Постарајте се да је СФТП укључен на " +"серверу." + +#: kio_sftp.cpp:963 kio_sftp.cpp:1257 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Не могу да припремим СФТП сесију." + +#: kio_sftp.cpp:967 kio_sftp.cpp:1261 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Успешно успостављена веза са %1" + +#: kio_sftp.cpp:1064 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Кључ домаћина за овај сервер није нађен, али постоји други тип кључа.\n" +"Нападач би могао да промени подразумевани кључ сервера тако да ваш клијент " +"помисли да кључ не постоји.\n" +"Обратите се систем-администратору.\n" +"%1" + +#: kio_sftp.cpp:1077 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Кључ домаћина за сервер %1 измењен је.\n" +"Ово значи да је или дошло до ДНС варке, или су и ИП адреса и кључ домаћина " +"истовремено промењени.\n" +"Удаљени домаћин шаље кључ са отиском:\n" +"%2\n" +"Обратите се систем-администратору.\n" +"%3" + +#: kio_sftp.cpp:1094 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Аутентичност домаћина %1 не може да се успостави.\n" +"Отисак кључа је: %2\n" +"Желите ли заиста да наставите с повезивањем?" + +#: kio_sftp.cpp:1304 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1886 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Не могу да променим дозволе за\n" +"%1" + +#: kio_sftp.cpp:2255 +#, kde-format +msgid "Could not read link: %1" +msgstr "Не могу да читам везу: %1" diff --git a/po/sr/kio5_smb.po b/po/sr/kio5_smb.po new file mode 100644 index 0000000..f7059c6 --- /dev/null +++ b/po/sr/kio5_smb.po @@ -0,0 +1,175 @@ +# Translation of kio5_smb.po into Serbian. +# Toplica Tanaskovic , 2003, 2004. +# Marko Rosic , 2003. +# Chusslove Illich , 2005, 2007, 2010, 2017. +# Dalibor Djuric , 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: kio5_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-06-09 02:09+0200\n" +"PO-Revision-Date: 2017-07-24 00:24+0200\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: kio_smb_auth.cpp:123 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Унесите аутентификационе податке за %1" + +#: kio_smb_auth.cpp:126 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Унесите аутентификационе податке за:\n" +"сервер = %1\n" +"дељење = %2" + +#: kio_smb_auth.cpp:165 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Библиотека СМБ клијента није успела да направи контекст" + +#: kio_smb_auth.cpp:193 +#, kde-format +msgid "libsmbclient failed to initialize context" +msgstr "Библиотека СМБ клијента није успела да припреми контекст" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Непознат формат фајла, није ни фајл ни фасцикла." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Не могу да нађем ниједну радну групу у локалној мрежи. Ово може бити услед " +"укљученог заштитног зида." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Нема медијума у уређају за %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Не могу да се повежем са домаћином за %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Грешка приликом повезивања на сервер одговоран за %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Дељени ресурси нису пронађени на датом серверу" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Лош описник фајла" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Дато име се не може протумачити као јединствени сервер. Проверите да у вашим " +"мрежним подешавањима нема сукобљених имена, према начинима разрешавања " +"Виндоуза и Уникса." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"Библиотека СМБ клијента је пријавила грешку, али без даљих детаља. Ово може " +"значити да постоје озбиљни проблеми у мрежи, али може бити и проблем у " +"библиотеци.\n" +"Ако желите да нам помогнете, пошаљите нам ТЦП попис мрежног сучеља настао " +"током вашег прегледања (пазите на евентуалне приватне податке које не желите " +"да изнесете, попис можете послати приватно програмерима ако га затраже)." + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Непознато стање грешке у испиту: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Грешка при покушају приступа %1:%2" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Проверите да ли је Самба правилно инсталирана на систему." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Корисник „%3“ је покушао да монтира дељење „%1“ са домаћина „%2“, али то " +"није успело.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Демонтирање „%1“ није успело.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" diff --git a/po/sr/kio5_thumbnail.po b/po/sr/kio5_thumbnail.po new file mode 100644 index 0000000..51d6b99 --- /dev/null +++ b/po/sr/kio5_thumbnail.po @@ -0,0 +1,77 @@ +# Translation of kio5_thumbnail.po into Serbian. +# Chusslove Illich , 2005, 2009, 2011, 2017. +# Dalibor Djuric , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kio5_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2017-09-28 18:00+0200\n" +"Last-Translator: Chusslove Illich \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" +"X-Environment: kde\n" + +#: jpegcreator.cpp:66 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Ротирај слику аутоматски" + +#: thumbnail.cpp:197 +#, kde-format +msgid "No MIME Type specified." +msgstr "МИМЕ тип није задат." + +#: thumbnail.cpp:206 +#, kde-format +msgid "No or invalid size specified." +msgstr "Величина није задата или није исправна." + +#: thumbnail.cpp:240 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Не могу да направим сличицу за фасциклу" + +#: thumbnail.cpp:252 +#, kde-format +msgid "No plugin specified." +msgstr "Прикључак није задат." + +#: thumbnail.cpp:258 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Не могу да учитам „ThumbCreator“ %1" + +#: thumbnail.cpp:267 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Не могу да направим сличицу за %1" + +#: thumbnail.cpp:305 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Неуспех стварања сличице." + +#: thumbnail.cpp:317 +#, kde-format +msgid "Could not write image." +msgstr "Не могу да упишем слику." + +#: thumbnail.cpp:342 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Не могу да се прикачим на сегмент дељене меморије %1" + +#: thumbnail.cpp:346 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Слика је превелика за сегмент дељене меморије" diff --git a/po/sv/docs/kioslave5/bookmarks/index.docbook b/po/sv/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..3dd2e08 --- /dev/null +++ b/po/sv/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,61 @@ + + + +]> + +
        +Bokmärken + + +XavierVello xavier.vello@gmail.com + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        + +2008-08-31 +0.2 + +
        + +Den här I/O-slaven visar bokmärḱen som en trevlig och funktionell &HTML;-sida. Du kommer åt den genom att skriva bookmarks:/ i &konqueror;s platsrad. + +Sidans innehåll och layout kan anpassas. Peka bara &konqueror; på bookmarks:/config för att starta inställningsdialogrutan. + +
        + diff --git a/po/sv/docs/kioslave5/bzip2/index.docbook b/po/sv/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..088d03d --- /dev/null +++ b/po/sv/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,64 @@ + + + +]> + +
        +bzip2/bzip + + +&Lauri.Watts; &Lauri.Watts.mail; + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        +
        + +Bzip2 är ett kompressionsprogram. + +I/O-slaven bzip2 är inte användbar direkt, utan är avsedd att användas som ett filter. I/O-slaven tar kan till exempel filtrera en fil genom I/O-slaven bzip2, för att visa innehållet i en tar.bz2-fil direkt i ett &konqueror;-fönster. + +Om du klickar på en fil som är komprimerad med en bz2-filändelse i &konqueror;, används den här I/O-slaven för att packa upp filen och visa den som en normal (okomprimerad) fil. + +Om du är en utvecklare och vill använda bzip2-filtret, hittar du dokumentation om hur I/O-slavar används på http://techbase.kde.org. + +Se manualen: bzip2. + +Bzip är föregångaren till bzip2. Det används sällan nu för tiden, eftersom det har ersatts av bzip2, som erbjuder mycket bättre komprimering. + +
        diff --git a/po/sv/docs/kioslave5/fish/index.docbook b/po/sv/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..39a8b0f --- /dev/null +++ b/po/sv/docs/kioslave5/fish/index.docbook @@ -0,0 +1,161 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        + +2010-10-27 +&kde; 4.5 + +
        + +Låter dig komma åt filer på en annan dator med det säkra skalprotokollet (SSH). Fjärrdatorn måste köra SSH-demonen, men resten av protokollet använder vanliga kommandoradverktyg, som beskrivs nedan. + +Du kan använda I/O-slaven fish så här: fish://värddatornamn eller fish://användarnamn@värddatornamn + +Du måste använda dubbla snedstreck. + +Du behöver inte ange användarnamn (och den efterföljande symbolen @) om du har samma användarnamn på båda datorerna. + +Du kan lägga till ett lösenord på formatet fish://användarnamn:lösenord@värddatornamn men det är inte nödvändigt, eftersom du blir tillfrågad om det inte anges. + +Om du kör SSH-demonen på en annan port än den vanliga, kan du ange porten med normal webbadressyntax som visas nedan: fish://värddatornamn:portnummer. + +FISH ska fungera med alla &UNIX;-baserade datorer som i stort sett följer POSIX. Den använder följande skalkommandon: cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed och wc. FISH startar /bin/sh som skal och antar att det är ett Bourne-skal (eller motsvarande, som bash). Om kommandona sed och file, samt filen /etc/apache/magic med &MIME;-typ signaturer är tillgängliga, används de för att gissa &MIME;-typer. + +Om Perl är tillgängligt på den andra datorn, används det istället. Då behövs bara env och /bin/sh. Att använda Perl har dessutom fördelen att vara snabbare. + +FISH kan till och med fungera på &Windows;-datorer om verktyg som Cygwin är installerade. Alla verktygen ovan måste finnas i datorns PATH, och det ursprungliga skalet måste kunna köra kommandot echo FISH:;/bin/sh på ett riktigt sätt. + +
        diff --git a/po/sv/docs/kioslave5/gzip/index.docbook b/po/sv/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..212b8cf --- /dev/null +++ b/po/sv/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        +
        + +gzip är ett kompressionsprogram. + +I/O-slaven gzip är inte användbar direkt, utan är avsedd att användas som ett filter. I/O-slaven tar kan till exempel filtrera en fil genom I/O-slaven gzip, för att visa innehållet i en tar.gz-fil direkt i ett &konqueror;-fönster. + +Om du klickar på en fil som är komprimerad med en gz-filändelse i &konqueror;, används den här I/O-slaven för att packa upp filen och visa den som en normal (okomprimerad) fil. + +Om du är en utvecklare och vill använda gzip-filtret, hittar du dokumentation om hur I/O-slavar används på http://techbase.kde.org. + +Se manualen: gzip. + +
        diff --git a/po/sv/docs/kioslave5/info/index.docbook b/po/sv/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..b52b3c0 --- /dev/null +++ b/po/sv/docs/kioslave5/info/index.docbook @@ -0,0 +1,72 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        +
        + +Info är en typ av dokumentation. Dokumenten har ett filformat som kallas texinfo, och kan läsas på kommandoraden med info-programmet. + +I/O-slaven info låter dig läsa info-sidorna installerade på systemet inne i &konqueror;. Den är mycket lätt att använda: + +info:/gcc + +Det här visar dig toppnivånoden i info-dokumentationen för &gcc;-kompilatorn. + +Info är en ersättning för man inom &GNU;, men används inte mycket utanför &GNU;-programvara. + +Det är lättast att bläddra i info-dokumentationen som du har installerad inne i Hjälpcentralen, eller så kan du använda I/O-slaven direkt från både &konqueror; och mini-kommandoraden. + +
        diff --git a/po/sv/docs/kioslave5/man/index.docbook b/po/sv/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..b280943 --- /dev/null +++ b/po/sv/docs/kioslave5/man/index.docbook @@ -0,0 +1,155 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        +
        + +Genom att använda I/O-slaven man kan du läsa manualsidorna som är installerade på systemet. Den är lätt att använda: + + + +man: + +Se på sektionerna i manualen, och klicka för att hitta resten. + + + +man:/fopen + +Se på manualsidan för fopen. + + + +man:/fopen(3) + +Se på manualsidan för fopen i sektion 3. + + + +man:/(3) + +Titta på index för sektion 3. + + + +man:/intro(3) + +Titta på inledningen till sektion 3. + + + + +Om det finns mer än en manualsida med namnet du skrev in, får du en lista där du kan välja manualsidan du vill titta på. + +Det finns också en genväg: #fopen, som har samma effekt som ovan. + +Om du inte hittar alla dina manualsidor, justera inställningsfilen /etc/manpath.config (eller en fil med liknande namn beroende på din distribution) eller justera miljövariablerna MANPATH och MANSECT. + +Precis som med vilken annan I/O-slav som helst i &kde;, är det möjligt att skriva in en webbadress som man:/socket i vilket &kde;-program som helst. Försök med det i &kwrite;, och du får se manualsidan med &HTML;-format. + +E-postlista att kontakta: kde-devel@kde.org + +
        diff --git a/po/sv/docs/kioslave5/network/index.docbook b/po/sv/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..83a76ea --- /dev/null +++ b/po/sv/docs/kioslave5/network/index.docbook @@ -0,0 +1,93 @@ + + + +]> + +
        + +Nätverk + + + + Friedrich W. H.Kossebau kossebau@kde.org + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        + + 2016-12-11 + Program 16.12 + +
        + + +IO-slaven network gör det möjligt för användaren att komma åt enheter anslutna till det lokala nätverket och tjänster som kör på dem. Det är också möjligt att starta program för en tjänst vars typ är känd. + +För att se alla enheter som hittas, skriv in network:/. + +network://enhetens_värddatornamn listar tjänster som hittas och kör på en enhet. + +Att välja en tjänst vidarebefordrar till en webbadress som motsvarar tjänsten, under förutsättning att det finns någon lämplig, t.ex. ssh://enhetens_värddatornamn:port/ för en SSH-tjänst. Varje känd tjänsttyp har en tillhörande MIME-typ, så användare kan lägga till nya sätt att hantera de resulterande webbadresserna. Det görs med inställningsmodulen Filbindningar i systeminställningarna. Alla tjänsters MIME-typer heter för närvarande inode/vnd.kde.service.*. + + + IO-slaven network hittar och visar för närvarande bara enheter och tjänster som aktivt ger sig till känna med ramverket för tjänstupptäckt DNS-SD. + + +
        + diff --git a/po/sv/docs/kioslave5/nfs/index.docbook b/po/sv/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..61efba2 --- /dev/null +++ b/po/sv/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        +
        +NFS-protokollet från Sun tillhandahåller transparent fjärrtillgång till delade filsystem över nätverk. NFS-protokollet är konstruerat för att vara oberoende av dator, operativsystem, nätverksarkitektur och transportprotokoll. Detta oberoende åstadkoms genom användning av fjärrproceduranrop (Remote Procedure Call, RPC) som byggs ovanpå en extern datarepresentation (XDR). + +Det understödjande monteringsprotokollet utför operativsystemspecifika funktioner som låter klienter ansluta fjärrkatalogträd på en plats i det lokala filsystemet. Monteringsprocessen låter också servern ge behörighet för fjärråtkomst till en begränsad uppsättning klienter via exportkontroll. + +Låshanteraren tillhandahåller stöd för fillåsning när den används i NFS-miljön. Protokollet för låshantering i nätverket (NLM) isolerar de nödvändiga aspekterna med tillståndsinformation för fillåsning i ett särskilt protokoll. + +Källa: http://www.networksorcery.com/enp/protocol/nfs.htm + +Se manualen: nfs. +
        diff --git a/po/sv/docs/kioslave5/recentdocuments/index.docbook b/po/sv/docs/kioslave5/recentdocuments/index.docbook new file mode 100644 index 0000000..42afc15 --- /dev/null +++ b/po/sv/docs/kioslave5/recentdocuments/index.docbook @@ -0,0 +1,74 @@ + + + +]> + +
        +Senaste dokument + + + + + &Burkhard.Lueck;&Burkhard.Lueck.mail; + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        + +2016-12-01 +Program 16.12 + +
        + +En I/O-slav för att visa senaste dokument eller webbadresser i fildialogrutan, i filhanteraren, i Kör program och i programmenyn. + +Du kan använda I/O-slaven som följer: + +Skriv recentdocuments:/ i &dolphin;s platsrad, i &konqueror; eller i fildialogrutan för att lista de senast öppnade dokumenten eller webbadresserna. + +Du kan lägga till en post i sidoraden Platser: Högerklicka på sidoraden, välj Lägg till post, skriv in recentdocuments:/ i fältet Plats och spara den. Nu ska den vara tillgänglig i alla fildialogrutor om du inte markerar att posten bara ska visas i det här programmet. + +Aktivera sökinsticksprogrammet Senaste dokument i systeminställningarnas modul Plasma sökning för att använda I/O-slaven i Kör program. + +Lägg till ett menyalternativ i Programmeny med senaste dokument längst upp i menyn genom att aktivera Visa senaste dokument på inställningssidan. + +
        diff --git a/po/sv/docs/kioslave5/sftp/index.docbook b/po/sv/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..80a978b --- /dev/null +++ b/po/sv/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        +
        +SFTP är ett säkert filöverföringsprotokoll. sftp är ett interaktivt filöverföringsprogram, som liknar ftp, men göra alla åtgärder via en krypterad ssh-överföring. Den kan använda många av funktionerna i ssh, inklusive autentisering med öppna nycklar och komprimering. + +Se manualen: sftp. + +
        diff --git a/po/sv/docs/kioslave5/smb/index.docbook b/po/sv/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..49ca776 --- /dev/null +++ b/po/sv/docs/kioslave5/smb/index.docbook @@ -0,0 +1,106 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; +
        stefan.asserhall@bredband.net
        +
        +2016-12-11 +Program 16.12 +
        +I/O-slaven smb låter dig bläddra i ett nätverk med delade &Windows;-kataloger (eller Samba-nätverk). + +För att se arbetsgrupperna, skriv in smb:/. +smb://arbetsgrupp listar alla värddatorer i arbetsgruppen. +För att se katalogerna på en värddator, skriv in smb://värddator eller smb:/arbetsgrupp/värddator. +För att direkt komma åt en delad katalog, skriv in smb://värddator/katalog eller smb:/arbetsgrupp/ värddator/katalog. + +För att använda I/O-slaven smb krävs att du har libsmbclient. + +Du kan ställa in ditt förvalda användarnamn och lösenord med systeminställningar under kategorin Nätverk i Anslutningar Delade Windows-kataloger. Det är särskilt användbart om du är medlem i en &Windows; NT-domän. Du kan också ange din arbetsgrupp där, även om det inte krävs i de flesta fall. I/O-slaven frågar efter ditt användarnamn och lösenord om inga standardvärden är angivna. + +
        + diff --git a/po/sv/docs/kioslave5/tar/index.docbook b/po/sv/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..b41fa6e --- /dev/null +++ b/po/sv/docs/kioslave5/tar/index.docbook @@ -0,0 +1,41 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        +
        +Ett arkiveringsprogram som är konstruerat för att lagra och hämta filer i en arkivfil som är känd som en tar-fil. En tar-fil kan skapas på en bandenhet, men det är också vanligt att skriva en tar-fil som en vanlig fil. + +Se manualen: tar. + +
        diff --git a/po/sv/docs/kioslave5/thumbnail/index.docbook b/po/sv/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..782c08a --- /dev/null +++ b/po/sv/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +miniatyrbild + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        +2016-12-11 +Program 16.12 +
        +I/O-slaven thumbnail används av &kde; för att skapa nätverkstransparenta och bestående miniatyrbilder. + +I/O-slaven använder insticksprogram för att skapa själva miniatyrbilden. Du kan aktivera visning av de här miniatyrbilderna från Visa Förhandsgranska-undermenyn, tillgänglig i &dolphin; eller i &konqueror;s filhanteringsläge. + +I/O-slaven är inte direkt användbar för en användare, men om du är en utvecklare, kan du använda den med ditt eget program för att skapa förhandsgranskningsvyer av filer. + +Se dokumentationen i källkoden för mer information. Du hittar dessa på i källkodskatalogen thumbnail + +
        diff --git a/po/sv/docs/kioslave5/xz/index.docbook b/po/sv/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..02406ca --- /dev/null +++ b/po/sv/docs/kioslave5/xz/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +Xz och Lzma + + +Per Øyvind Karlsen + Stefan Asserhäll
        stefan.asserhall@bredband.net
        Översättare
        +
        +
        + +Xz är ett kompressionsprogram + +I/O-slaven Xz är inte direkt användbar, utan är avsedd att användas som ett filter. I/O-slaven Tar kan till exempel filtrera en fil genom I/O-slaven xz, för att visa innehållet i en tar.lzma-fil eller tar.xz-fil direkt i ett &konqueror;-fönster. + +Om du klickar på en fil komprimerad med lzma eller tar.xz i &konqueror;, används den här I/O-slaven för att packa upp den och visa den som en vanlig (okomprimerad) fil. + +Om du är en utvecklare och vill använda xz-filtret, hittar du dokumentation om hur I/O-slavar används på http://techbase.kde.org. + +Se manualen: xz. + +
        diff --git a/po/sv/kfileaudiopreview5.po b/po/sv/kfileaudiopreview5.po new file mode 100644 index 0000000..cf86ff7 --- /dev/null +++ b/po/sv/kfileaudiopreview5.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-20 12:29+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Spela &automatiskt" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "starta uppspelning" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "pausa uppspelning" diff --git a/po/sv/kio5_activities.po b/po/sv/kio5_activities.po new file mode 100644 index 0000000..5d561f7 --- /dev/null +++ b/po/sv/kio5_activities.po @@ -0,0 +1,82 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-03-09 17:33+0100\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Aktiviteter" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Läser in..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktivitetshanteraren kör inte" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Länka till aktuell aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Ta bort länk för aktuell aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Länka till:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Ta bort länk från:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Aktivitet" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Nuvarande aktivitet" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Stefan Asserhäll" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "stefan.asserhall@bredband.net" + +#~ msgid "Default" +#~ msgstr "Förval" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Byt till aktivitet \"%1\"" diff --git a/po/sv/kio5_archive.po b/po/sv/kio5_archive.po new file mode 100644 index 0000000..13b9b03 --- /dev/null +++ b/po/sv/kio5_archive.po @@ -0,0 +1,38 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-07-20 12:30+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Kunde inte behandla filen, troligen beroende på ett filformat som inte " +"stöds.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Arkivfilen kunde inte öppnas, kanske på grund av att formatet inte stöds.\n" +"%1" diff --git a/po/sv/kio5_bookmarks.po b/po/sv/kio5_bookmarks.po new file mode 100644 index 0000000..5ce81af --- /dev/null +++ b/po/sv/kio5_bookmarks.po @@ -0,0 +1,63 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-10-31 07:47+0100\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.04.3\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Rot" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Platser" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Kunde inte hitta bokmärkesinställning" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Kunde inte hitta bokmärkeseditor" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Felaktig begäran: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Det finns inga bokmärken att visa ännu." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"CSS-fil för I/O-slaven bokmärken hittades inte. Utdata kommer att se ful " +"ut.\n" +"Kontrollera installationen." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Bokmärken" diff --git a/po/sv/kio5_fish.po b/po/sv/kio5_fish.po new file mode 100644 index 0000000..b08a329 --- /dev/null +++ b/po/sv/kio5_fish.po @@ -0,0 +1,43 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2015-07-20 12:31+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Ansluter..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Initierar protokoll..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Lokal inloggning" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-behörighetskontroll" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Nerkopplad." diff --git a/po/sv/kio5_info.po b/po/sv/kio5_info.po new file mode 100644 index 0000000..d40a90f --- /dev/null +++ b/po/sv/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2015-07-20 12:31+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Kan inte hitta filen %1, som är nödvändig för att köra tjänsten. Kontrollera " +"programvaruinstallationen." diff --git a/po/sv/kio5_man.po b/po/sv/kio5_man.po new file mode 100644 index 0000000..f1bf966 --- /dev/null +++ b/po/sv/kio5_man.po @@ -0,0 +1,216 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-13 08:21+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.04.3\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Någon manualsida som matchar %1 hittades inte.Kontrollera att du inte har skrivit in namnet på sidan felaktigt, och " +"observera att namn på manualsidor är skiftlägeskänsliga.Om namnet " +"är riktigt, kanske du måste utöka sökvägen för manualsidor, antingen genom " +"att använda miljövariabeln MANPATH eller en inställningsfil i " +"katalogen /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Manualsidan %1 hittades, men den kunde inte läsas eller " +"tolkas." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Den angivna manualsidan %1 hänvisar till en annan sida," +"men sidan %2 som hänvisades till kunde inte hittas." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Felmeddelande i manualvisning" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Det finns fler än en manualsida som matchar:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Flera manualsidor" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Observera att om du läser en manualsida på ditt språk, var då medveten om " +"att den kan innehålla vissa misstag eller vara föråldrad. Om du är tveksam, " +"bör du ta en titt på den engelska versionen." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Deklarationsfiler" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Deklarationsfiler (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Användarkommandon" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Användarkommandon (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Systemanrop" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Subrutiner" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-moduler" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Nätverksfunktioner" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Enheter" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Filformat" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Spel" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Diverse" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Systemadministration" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Kärna" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Lokal dokumentation" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Ny" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Sidoindex i huvudmanual" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Sektion %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index för sektion %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Sidoindex i manual" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Genererar index" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Kunde inte hitta programmet sgml2roff i systemet. " +"Installera det, om nödvändigt, och försäkra att det kan hittas genom att " +"använda miljövariabeln PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "Misslyckades öppna %1." + +#~ msgid "Man output" +#~ msgstr "Utskrift från man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Stefan Asserhäll" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "stefan.asserhall@bredband.net" + +#~ msgid "KMan" +#~ msgstr "Kman" diff --git a/po/sv/kio5_mtp.po b/po/sv/kio5_mtp.po new file mode 100644 index 0000000..8efc591 --- /dev/null +++ b/po/sv/kio5_mtp.po @@ -0,0 +1,35 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015, 2016, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-16 06:58+0100\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Inga lagringsmedier hittades. Försäkra dig om att enheten är upplåst och har " +"MTP aktiverad i inställningarna för USB-anslutning." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Kan inte kopiera eller flytta filer på själva enheten" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "Ingen lagringsenhet hittades. Kanske måste enheten låsas upp?" diff --git a/po/sv/kio5_network.po b/po/sv/kio5_network.po new file mode 100644 index 0000000..c25c777 --- /dev/null +++ b/po/sv/kio5_network.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Stefan Asserhäll , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-23 10:02+0100\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Nätverk" diff --git a/po/sv/kio5_nfs.po b/po/sv/kio5_nfs.po new file mode 100644 index 0000000..6bb9b3d --- /dev/null +++ b/po/sv/kio5_nfs.po @@ -0,0 +1,63 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-20 12:36+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: NFS-versionen stöds inte" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC-fel %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Inget utrymme kvar på enheten" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Skrivskyddat filsystem." + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "För långt filnamn" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Diskkvot överskriden" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS-fel %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Misslyckades montera %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Okänt mål" diff --git a/po/sv/kio5_recentdocuments.po b/po/sv/kio5_recentdocuments.po new file mode 100644 index 0000000..773f554 --- /dev/null +++ b/po/sv/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-20 12:36+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Senaste dokument" diff --git a/po/sv/kio5_sftp.po b/po/sv/kio5_sftp.po new file mode 100644 index 0000000..b7a535b --- /dev/null +++ b/po/sv/kio5_sftp.po @@ -0,0 +1,283 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015, 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-11-12 21:42+0100\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Felaktig eller ogiltig lösenordsfras" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Kunde inte reservera återanrop" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Kunde inte ställa in loggens detaljnivå" + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Kunde inte ställa in loggens användardata." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Kunde inte ställa in loggens återanrop." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-inloggning" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Använd indatafältet användarnamn för att besvara frågan." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Ange ditt lösenord." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Plats:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Kunde inte skapa ny SSH-session." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Kunde inte ställa in en tidsgräns." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Kunde inte inaktivera Nagles algoritm." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Kunde inte ställa in komprimering." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Kunde inte ställa in värddator." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Kunde inte ställa in port." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Kunde inte ställa in användarnamn." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Kunde inte tolka inställningsfilen." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Öppnar SFTP-anslutning till värddator %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Kunde inte hämta typnamn på serverns öppna nyckel" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Kunde inte skapa kondensat från serverns öppna nyckel" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Kunde inte skapa fingeravtryck för serverns öppna nyckel" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Värddatornyckeln %1 för servern hittades inte, men en annan nyckeltyp " +"finns.\n" +"En attack kan ändra serverns standardnyckel för att förvirra klienter så att " +"de tror att nyckeln inte finns.\n" +"Kontakta systemadministratören.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Värddatornyckeln för servern %1 har ändrats.\n" +"Det kan antingen betyda att DNS-förfalskning har inträffat eller att " +"värddatorns IP-adress och dess värddatornyckel har ändrats samtidigt.\n" +"Fingeravtrycket för nyckeln %2 som skickas av fjärrdatorn är:\n" +" SHA256: %3\n" +"Kontakta systemadministratören.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Varning: Kan inte verifiera värddatorns identitet." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Äkthet för värddatorn %1 kan inte fastställas.\n" +"Fingeravtryck för nyckeln %2 är: %3\n" +"Är du säker på att du vill fortsätta ansluta?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Autentisering misslyckades." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Behörighetskontroll misslyckades. Servern skickade inte några " +"behörighetskontrollmetoder." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Ange ditt användarnamn och lösenord." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Felaktigt användarnamn eller lösenord" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Kunde inte begära SFTP-delsystemet. Försäkra dig om att SFTP är aktiverat på " +"servern." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Kunde inte initiera SFTP-sessionen." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Ansluten till %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Värddatornyckeln för servern hittades inte, men en annan nyckeltyp finns.\n" +"En attack kan ändra serverns standardnyckel för att förvirra klienter så att " +"de tror att nyckeln inte finns.\n" +"Kontakta systemadministratören.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Värddatornyckeln för servern %1 har ändrats.\n" +"Det kan antingen betyda att DNS-förfalskning har inträffat eller att " +"värddatorns IP-adress och dess värddatornyckel har ändrats samtidigt.\n" +"Fingeravtrycket för nyckeln som skickas av fjärrdatorn är:\n" +" %2\n" +"Kontakta systemadministratören.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Äkthet för värddatorn %1 kan inte fastställas.\n" +"Nyckelns fingeravtryck är: %2\n" +"Är du säker på att du vill fortsätta ansluta?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ogiltigt sftp-sammanhang" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Kunde inte ändra rättigheter för\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Kunde inte läsa länken: %1" diff --git a/po/sv/kio5_smb.po b/po/sv/kio5_smb.po new file mode 100644 index 0000000..5941f83 --- /dev/null +++ b/po/sv/kio5_smb.po @@ -0,0 +1,199 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015, 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-04 08:04+0100\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.04.3\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Det finns olika alternativ för behörighetskontroll för delade SMB-" +"kataloger.användarnamn: Vid " +"behörighetskontroll inom ett hemnätverk är användarnamnet på servern " +"tillräckligtanvändarnamn@domän.com: " +"Moderna inloggningsnamn på företag är formade som e-postadresserDOMÄN\\användarnamn: För uråldriga " +"företagsnätverk eller arbetsgrupper kanske man föredrar att inleda med " +"NetBIOS domännamn (innan Windows 2000)anonym: Anonyma inloggningar kan försökas med tomt användarnamn och " +"lösenord. Beroende på serverinställning kan användarnamn som inte är tomma " +"krävas" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Ange autentiseringsinformation för %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Ange autentiseringsinformation för:\n" +"Server=%1\n" +"Utdelning=%2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Okänd filtyp, varken katalog eller fil." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Kunde inte hitta några arbetsgrupper i det lokala nätverket. Det kan orsakas " +"av en aktiverad brandvägg." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Inget medium i enheten för %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Kunde inte ansluta till värddator för %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Fel vid anslutning till servern som är ansvarig för %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Utdelad katalog kunde inte hittas på angiven server" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Felaktig filbeskrivning" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Det givna namnet kunde inte lösas upp till en unik server. Försäkra dig om " +"att nätverket är inställt utan namnkonflikter mellan namn som används av " +"Windows- och Unix-namnupplösning." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: Värddatorn går inte att nå" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"Biblioteket libsmbclient rapporterade ett fel, men angav inte vad problemet " +"var. Det kan indikera ett allvarligt problem med nätverket, men kan också " +"indikera ett problem med lbsmbclient.\n" +"Om du vill hjälpa till, skicka gärna en tcpdump av nätverksgränssnittet " +"medan du försöker bläddra (Var medveten om att den kan innehålla privat " +"information, så skicka den inte om du är osäker på det. Du kan skicka den " +"privat till utvecklarna om de ber om den)." + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Okänt feltillstånd: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Fel uppstod vid försök att komma åt %1%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient misslyckades skapa omgivning" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Försäkra dig om att Samba-paketet är korrekt installerat på systemet." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Montering av den utdelade katalogen \"%1\" från värddatorn \"%2\" av " +"användaren \"%3\" misslyckades.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Avmontering av monteringspunkten \"%1\" misslyckades.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Okänd enhet på %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient misslyckades initiera omgivning" + +#~ msgid "File does not exist: %1" +#~ msgstr "Filen finns inte: %1" diff --git a/po/sv/kio5_thumbnail.po b/po/sv/kio5_thumbnail.po new file mode 100644 index 0000000..7a61f3e --- /dev/null +++ b/po/sv/kio5_thumbnail.po @@ -0,0 +1,74 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2015-07-20 12:40+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Rotera bilden automatiskt" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Ingen MIME-typ angiven." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Ingen eller felaktig storlek angiven." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kan inte skapa miniatyrbild för katalog" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Inget insticksprogram angivet." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Kan inte ladda miniatyrbildsskaparen %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Kan inte skapa miniatyrbild för %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Misslyckades skapa miniatyrbild." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Kunde inte skriva bild." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Misslyckades ansluta till delat minnessegment %1." + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Bilden är för stor för det delade minnessegmentet" diff --git a/po/tr/kfileaudiopreview5.po b/po/tr/kfileaudiopreview5.po new file mode 100644 index 0000000..f859dd6 --- /dev/null +++ b/po/tr/kfileaudiopreview5.po @@ -0,0 +1,45 @@ +# translation of kfileaudiopreview4.po to Türkçe +# translation of kfileaudiopreview4.po to Turkish +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# Rıdvan CAN , 2003. +# Görkem Çetin , 2005. +# Serdar Soytetir , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-21 09:49+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 0.3\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Otom&atik oynat" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "çalmayı başlat" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "çalmayı duraklat" + +#~ msgid "stop playback" +#~ msgstr "çalmayı durdur" + +#~ msgid "loop: restarts playback at end" +#~ msgstr "döngü: Çalma görevi bitince baştan başlatır" + +#~ msgid "Media Player" +#~ msgstr "Çoklu Ortam Oynatıcı" diff --git a/po/tr/kio5_activities.po b/po/tr/kio5_activities.po new file mode 100644 index 0000000..dbf35a4 --- /dev/null +++ b/po/tr/kio5_activities.po @@ -0,0 +1,230 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Volkan Gezer , 2013, 2014. +# Kaan Ozdincer , 2014, 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-09-08 14:31+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Etkinlikler" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Yükleniyor..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Etkinlik Yöneticisi çalışmıyor." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "Geçerli etkinliğe bağla" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Geçerli etkinlikten bağlantısını kes" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "Şuraya bağla:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Şuradan bağlantısını kes:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Etkinlik" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Geçerli etkinlik" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Volkan Gezer" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "volkangezer@gmail.com" + +#~ msgid "Default" +#~ msgstr "Öntanımlı" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "\"%1\" etkinliğine geç" + +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "Etkinlik" + +#, fuzzy +#~| msgid "Create activity..." +#~ msgid "Delete activity" +#~ msgstr "Etkinlik oluştur..." + +#, fuzzy +#~| msgid "Are you sure you want to delete this activity?" +#~ msgid "Are you sure you want to delete '%1'?" +#~ msgstr "Bu etkinliği silmek istediğinizden emin misiniz?" + +#, fuzzy +#~| msgid "Create activity..." +#~ msgid "Create a new activity" +#~ msgstr "Etkinlik oluştur..." + +#, fuzzy +#~| msgid "Activity switching" +#~ msgid "Activity settings" +#~ msgstr "Etkinlik geçişi" + +#~ msgid "General" +#~ msgstr "Genel" + +#~ msgid "Create" +#~ msgstr "Oluştur" + +#~ msgid "Apply" +#~ msgstr "Uygula" + +#~ msgid "Cancel" +#~ msgstr "İptal" + +#~ msgid "Shortcut for switching to this activity:" +#~ msgstr "Bu etkinliğe geçiş için kısayol:" + +#, fuzzy +#~| msgid "Activity switching" +#~ msgid "Activity information" +#~ msgstr "Etkinlik geçişi" + +#~ msgid "Switching" +#~ msgstr "Geçiş" + +#~ msgid "Privacy" +#~ msgstr "Gizlilik" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "sonsuza kadar" + +#~ msgid "Forget the last hour" +#~ msgstr "Son saati unut" + +#~ msgid "Forget the last two hours" +#~ msgstr "Son iki saati unut" + +#~ msgid "Forget a day" +#~ msgstr "Bir günü unut" + +#~ msgid "Forget everything" +#~ msgstr "Her şeyi unut" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " ay" +#~ msgstr[1] " ay" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "şu süre için " + +#~ msgid "Create activity..." +#~ msgstr "Etkinlik oluştur..." + +#~ msgid "Activity switching" +#~ msgstr "Etkinlik geçişi" + +#~ msgctxt "@action" +#~ msgid "Walk through activities" +#~ msgstr "Etkinlikler arasında gezin" + +#~ msgctxt "@action" +#~ msgid "Walk through activities (Reverse)" +#~ msgstr "Etkinlikler arasında gezin (Tersten)" + +#~ msgid "Remember opened documents:" +#~ msgstr "Açılan belgeleri hatırla:" + +#~ msgid "For a&ll applications" +#~ msgstr "Tüm uygu&lamalar için" + +#~ msgid "&Do not remember" +#~ msgstr "&Hatırlama" + +#~ msgid "O&nly for specific applications" +#~ msgstr "S&adece özel uygulamalar için" + +#~ msgid "Keep history" +#~ msgstr "Geçmişi tut" + +#~ msgid "Clear recent history" +#~ msgstr "Yakın geçmişi temizle" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "Listede olmayan tüm uygulamaları kara listeye al" + +#~ msgid "" +#~ "Remember the current virtual desktop for each activity (needs restart)" +#~ msgstr "" +#~ "Her etkinlik için mevcut sanal masaüstünü hatırla (yeniden başlatmayı " +#~ "gerektirir)" + +#~ msgid "Shortcuts" +#~ msgstr "Kısayollar" + +#~ msgid "Private - do not track usage for this activity" +#~ msgstr "Özel - bu etkinliğin kullanımını izleme" + +#~ msgid "Delete" +#~ msgstr "Sil" + +#~ msgid "Activity name" +#~ msgstr "Etkinlik adı" + +#~ msgid "Available Features" +#~ msgstr "Kullanılabilir Özellikler" + +#~ msgid "Plugins" +#~ msgstr "Eklentiler" + +#~ msgid "Enable activities management" +#~ msgstr "Etkinlik yönetimini etkinleştir" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "Etkinlik yöneticisi düzgün bir şekilde çalışmıyor." + +#~ msgid "Activities..." +#~ msgstr "Etkinlikler..." + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" diff --git a/po/tr/kio5_archive.po b/po/tr/kio5_archive.po new file mode 100644 index 0000000..c2eb12b --- /dev/null +++ b/po/tr/kio5_archive.po @@ -0,0 +1,37 @@ +# translation of kio_tar.po to +# +# Görkem Çetin , 2005. +# Serdar Soytetir , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-10-21 09:49+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 0.3\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Dosya açılamadı, yüksek ihtimalle desteklenmeyen bir dosya türü.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Arşiv dosyası açılamadı, yüksek ihtimalle arşiv türü deteklenmiyor.\n" +"%1" diff --git a/po/tr/kio5_bookmarks.po b/po/tr/kio5_bookmarks.po new file mode 100644 index 0000000..8c13e4a --- /dev/null +++ b/po/tr/kio5_bookmarks.po @@ -0,0 +1,131 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Serdar Soytetir , 2008. +# H. İbrahim Güngör , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2014-10-21 09:49+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.2\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Kök" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Konumlar" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Hatalı istek: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Henüz gösterilecek bir yer imi yok." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks CSS dosyası bulunamadı. Çıktı çirkin görünecektir.\n" +"Kurulumunuzu kontrol edin." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Yer İmlerim" + +#~ msgid "My bookmarks" +#~ msgstr "Yer İmlerim" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "İlk geliştirici" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Serdar Soytetir" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "tulliana@gmail.com" + +#~ msgid "Configuration" +#~ msgstr "Yapılandırma" + +#~ msgid "Edit bookmarks" +#~ msgstr "Yer imlerini düzenle" + +#~ msgid "Help" +#~ msgstr "Yardım" + +#~ msgid "Bookmarks" +#~ msgstr "Yer İmleri" + +#~ msgid "&Show bookmarks without folder" +#~ msgstr "Yer imlerini dizinler &olmadan göster" + +#~ msgid "&Flatten bookmarks tree" +#~ msgstr "&Düz yer imleri ağacı" + +#~ msgid "" +#~ "Show a box with KDE places (Home, Network, ...). Useful if you use " +#~ "konqueror as a file manager." +#~ msgstr "" +#~ "KDE konumlarını içeren bir kutucuk göster (Ev Dizini, Ağ, ...). Dosya " +#~ "yöneticisi olarak Konqueror kullanıyorsanız kullanışlıdır." + +#~ msgid "Show system &places" +#~ msgstr "&Sistem konumlarını göster" + +#~ msgid "General settings" +#~ msgstr "Genel ayarlar" + +#~ msgid "Number of columns to show" +#~ msgstr "Gösterilecek sütunların sayısı" + +#~ msgid "Disable it on slow system to disable background images." +#~ msgstr "" +#~ "Bu seçeneği yavaş sistemlerde arkaplan resimlerini pasifleştirmek için " +#~ "etkisizleştirin." + +#~ msgid "Show folder &backgrounds" +#~ msgstr "&Dizin arkaplanlarını göster" + +#~ msgid "" +#~ "

        My Bookmarks

        This module lets you configure the bookmarks home " +#~ "page.

        The bookmarks home page is accessible at bookmarks:/.

        " +#~ msgstr "" +#~ "

        Yer İmlerim

        Bu modül yer imleri ana sayfasını yapılandırmanızı " +#~ "sağlar.

        Yer imleri ana sayfasına bu adresten erişilebilir bookmarks:/.

        " diff --git a/po/tr/kio5_fish.po b/po/tr/kio5_fish.po new file mode 100644 index 0000000..2cb3d8a --- /dev/null +++ b/po/tr/kio5_fish.po @@ -0,0 +1,54 @@ +# translation of kio_fish.po to Türkçe +# translation of kio_fish.po to Turkish +# Copyright (C) 2003, 2004 Free Software Foundation, Inc. +# +# Görkem Çetin , 2003, 2004. +# Serdar Soytetir , 2009. +# Volkan Gezer , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2014-10-21 09:49+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Bağlantı kuruluyor..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokol iletişimi yapılıyor..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Yerel Giriş" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH Kimlik Denetimi" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Bağlantı Kesildi." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Serdar Soytetir" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "tulliana@gmail.com" diff --git a/po/tr/kio5_info.po b/po/tr/kio5_info.po new file mode 100644 index 0000000..bfd7bd4 --- /dev/null +++ b/po/tr/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Serdar Soytetir , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2014-10-21 09:49+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 0.3\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Bu servisi çalıştırmak için gerekli olan %1 dosyası bulunamadı. Lütfen " +"kurulumunuzu kontrol edin." diff --git a/po/tr/kio5_man.po b/po/tr/kio5_man.po new file mode 100644 index 0000000..4600d38 --- /dev/null +++ b/po/tr/kio5_man.po @@ -0,0 +1,230 @@ +# translation of kio_man.po to Turkish +# translation of kio_man.po to +# Copyright (C) 2003, 2008 Free Software Foundation, Inc. +# +# Rıdvan CAN , 2003. +# Görkem Çetin , 2003. +# Serdar Soytetir , 2008. +# H. İbrahim Güngör , 2010. +# Volkan Gezer , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2014-10-21 09:48+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"%1 ile uyuşan man sayfası bulunamadı.

        İstediğiniz sayfanın adını " +"yanlış yazmadığınızı kontrol edin.
        Büyük ve küçük harfler aramayı " +"etkileyecektir.
        Her şey doğru görünüyorsa, man sayfalarının aranacağı " +"yolu MANPATH ortam değişkeni ile genişletmeniz gerekebilir." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        KDE Kılavuz Sayfası Görüntüleyici Hatası

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "Birden fazla eşleme bulundu." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Not. Kendi dilinizde bir man sayfası okuyorsanız, bazı yanlışlıklar veya " +"eski kalmış metinler içerebileceğini unutmayın. Böyle bir durumdan " +"şüphelenirseniz, İngilizce sürümüne bakmalısınız." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Başlık dosyaları" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Başlık dosyaları (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Kullanıcı Komutları" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Kullanıcı Komutları (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Sistem Çağrıları" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Alt Yordamlar" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl Modülleri" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Ağ Fonksiyonları" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Aygıt Sürücüleri" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Dosya Biçimleri" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Oyunlar" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Diğer" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Sistem Yöneticisi" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Çekirdek" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Yerel Belge" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Yeni" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX Kılavuz Dizini" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Bölüm %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "%1. Bölüm İçin Dizin: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX Kılavuz Dizini" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Dizin Oluşturuluyor" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Sgml2roffu programı sisteminizde bulanamadı.Lütfen kurun ve KDE başlamadan " +"önce ortam değişkeni yolunu ayarlayarak aranacak yolu ayarlayın." + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 dosyası açılamadı." + +#~ msgid "Man output" +#~ msgstr "Kılavuz sayfası çıktısı" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Rıdvan CAN" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "ridvan@geleceklinux.org" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/tr/kio5_mtp.po b/po/tr/kio5_mtp.po new file mode 100644 index 0000000..35b568d --- /dev/null +++ b/po/tr/kio5_mtp.po @@ -0,0 +1,39 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Volkan Gezer , 2015, 2017. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2017-04-13 15:14+0100\n" +"Last-Translator: Volkan Gezer \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 2.0\n" + +#: kio_mtp.cpp:223 +#, fuzzy, kde-format +#| msgid "" +#| "No Storages found. Make sure your device is unlocked and has MTP enabled " +#| "in its USB connection settings." +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Depolama bulunamadı. Cihazınızın kilidinin açık olduğundan ve USB bağlantı " +"ayarlarından MTP'nin etkinleştirilmiş olduğundan emin olun." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Aygıtın kendi üzerinde kopyalama/taşıma yapılamıyor" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Depolama bulunamadı. Belki de cihazınızın kilidini açmanız gereklidir?" diff --git a/po/tr/kio5_nfs.po b/po/tr/kio5_nfs.po new file mode 100644 index 0000000..0063b25 --- /dev/null +++ b/po/tr/kio5_nfs.po @@ -0,0 +1,69 @@ +# translation of kio_nfs.po to Türkçe +# kde +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# Görkem Çetin , 2001, 2004. +# Serdar Soytetir , 2009. +# Volkan Gezer , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-23 17:40+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: Desteklenmeyen NFS sürümü." + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC hatası %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Aygıtta boş yer kalmadı" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Salt okunur dosya sistemi" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Dosya adı çok uzun" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disk kotası aşıldı" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS hatası %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "%1 bağlanamadı" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Bilinmeyen hedef" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC hatası oluştu." diff --git a/po/tr/kio5_recentdocuments.po b/po/tr/kio5_recentdocuments.po new file mode 100644 index 0000000..080d638 --- /dev/null +++ b/po/tr/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-21 09:49+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.4\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Son Kullanılan Belgeler" diff --git a/po/tr/kio5_sftp.po b/po/tr/kio5_sftp.po new file mode 100644 index 0000000..ed4af23 --- /dev/null +++ b/po/tr/kio5_sftp.po @@ -0,0 +1,459 @@ +# translation of kio_sftp.po to +# translation of kio_sftp.po to Türkçe +# translation of kio_sftp.po to turkish +# translation of kio_sftp.po to Turkish +# Copyright (C) 2002,2003, 2004, 2005 Free Software Foundation, Inc. +# +# Görkem Çetin , 2002, 2004. +# Rıdvan CAN , 2003. +# Görkem Çetin , 2005. +# Serdar Soytetir, 2008. +# Serdar Soytetir , 2008, 2009, 2010, 2012. +# Onur Küçük , 2010. +# Volkan Gezer , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2014-12-27 00:28+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Yanlış veya geçersiz parola" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Geri aramalar paylaştırılamadı" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Günlük kaydı ayrıntısı ayarlanamadı." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Günlük kullanıcı verisi ayarlanamadı." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Günlük geri çağırımı ayarlanamadı" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP Girişi" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Bu soruyu yanıtlamak için kullanıcı adı alanını kullanın." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Lütfen parolanızı girin." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Site:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Yeni bir SSH oturumu başlatılamadı." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Zamanaşımı ayarlanamadı." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Port ayarlanamadı." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Sıkıştırma ayarlanamadı." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Makine ayarlanamadı." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Port ayarlanamadı." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Kullanıcı adı ayarlanamadı." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Yapılandırma dosyası ayrıştırılamadı." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "%1 uzak sunucusuna SFTP bağlantısı açılıyor: %2" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not get server public key type name" +msgstr "Sunucu genel anahtarından karma oluşturulamadı" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Sunucu genel anahtarından karma oluşturulamadı" + +#: kio_sftp.cpp:762 +#, fuzzy, kde-format +#| msgid "Could not create hash from server public key" +msgid "Could not create fingerprint for server public key" +msgstr "Sunucu genel anahtarından karma oluşturulamadı" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Bu sunucu için konak anahtarı bulunamadı, ancak başka bir tür anahtar " +"bulundu.\n" +"Saldırganlar istemcinizin anahtarın olmadığını düşünmesini sağlamak için ana " +"sunucunu anahtarını değiştirmiş olabilir.\n" +"Lütfen sistem yöneticinize başvurunuz.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Sunucu %1 için konak anahtarı değiştirilmiş.\n" +"Bir güvenlik tehdidine (DNS SPOOFING) maruz kalmış olabilirsiniz, ya da " +"bağlanmaya çalıştığınız adresin hem IP adresi hem de konak anahtarı aynı " +"anda değişmiş olabilir.\n" +"Uzaktaki sistemden anahtar için iletilen parmak izi:\n" +" %2\n" +"Lütfen sistem yöneticinize başvurunuz.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Uyarı: Makinenin kimliği saptanamadı." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"%1 makinesinin güvenilirliğine ulaşılamadı.\n" +"Anahtar parmak izi: %2\n" +"Bağlanmaya devam etmek istediğinizden emin misiniz?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Kimlik sınaması başarısız oldu." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Kimlik doğrulama başarısız. Sunucu herhangi bir kimlik sınama yöntemi " +"göndermedi" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Lütfen kullanıcı adı ve parolanızı girin." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Geçersiz kullanıcı adı veya parolası" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP alt sistemi sorgulanamadı. Sunucuda SFTP'nin etkinleştirildiğinden emin " +"olun." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP oturumu başlatılamadı." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 adresine başarıyla bağlantı kuruldu" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Bu sunucu için konak anahtarı bulunamadı, ancak başka bir tür anahtar " +"bulundu.\n" +"Saldırganlar istemcinizin anahtarın olmadığını düşünmesini sağlamak için ana " +"sunucunu anahtarını değiştirmiş olabilir.\n" +"Lütfen sistem yöneticinize başvurunuz.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Sunucu %1 için konak anahtarı değiştirilmiş.\n" +"Bir güvenlik tehdidine (DNS SPOOFING) maruz kalmış olabilirsiniz, ya da " +"bağlanmaya çalıştığınız adresin hem IP adresi hem de konak anahtarı aynı " +"anda değişmiş olabilir.\n" +"Uzaktaki sistemden anahtar için iletilen parmak izi:\n" +" %2\n" +"Lütfen sistem yöneticinize başvurunuz.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"%1 makinesinin güvenilirliğine ulaşılamadı.\n" +"Anahtar parmak izi: %2\n" +"Bağlanmaya devam etmek istediğinizden emin misiniz?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Yetki özellikleri değiştirilemedi\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Bağlantı okunamadı: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Makine adı belirtilmedi." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Bir hata oluştu. Lütfen isteğinizi yenileyin." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Lütfen kullanıcı adı ve parolanızı girin." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Uyarı: Makinenin kimliği değişti." + +#~ msgid "Connection failed." +#~ msgstr "Bağlantıda yapılamadı." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Bağlantı karşıdaki makine tarafından sonlandırıldı!" + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "Beklenmeyen SFTP hatası: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP sürüm: %1" + +#~ msgid "Protocol error." +#~ msgstr "Protokol hatası." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Bir hata oluştu. Lütfen yeniden deneyin." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "Dosyayı '%1' dizinine kopyalarken bir hata oluştu. Lütfen tekrar deneyin." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Uzak makine dosyaların yeniden adlandırılmasını desteklemiyor" + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Uzak makine sembolik bağ oluşturulmasını desteklemiyor." + +#~ msgid "Connection closed" +#~ msgstr "Bağlantı kesildi" + +#~ msgid "End of file." +#~ msgstr "Dosyanın sonu." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "SFTP komutunda bir hata oluştu" + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "SFTP sunucusu hatalı bir yanıt aldı." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "SFTP sunucusunun desteklemediği bir işlem gerçekleştirdiniz." + +#~ msgid "Error code: %1" +#~ msgstr "Hata kodu: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Aynı anda hem bir alt sistem, hem de komut belirtemezsiniz." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "ssh çalıştırmak için bir komut girilmedi." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "ssh sürecinin çalıştırılmasında hata." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Ssh ile konuşurken bir hata oluştu." + +#~ msgid "Please supply a password." +#~ msgstr "Lütfen bir parola girin." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Lütfen SSH özel anahtarı için bir parola girin." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "%1 makinesi için yapılan kimlik sınaması başarısız oldu" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "'%1' makinesinin kimliği onaylanamadı. " + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "Sistem yöneticinizle bağlantıya geçin." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " El ile, %1 makinesinin anahtarını ekleyin ya da yöneticinize başvurun." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "%1 doğrulanmayan uzak host sahibi kimliği. Host sahibi anahtar parmak " +#~ "izi:\n" +#~ "%2\n" +#~ "Host sahibine bağlanarak yöneticisine anahtar parmak izini " +#~ "doğrulatmalısınız.\n" +#~ "\n" +#~ "Kabuk edilmiş host parmak iziyle ve yine bağlanmaktan hoşlanırmıydınız?" + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "TEHLİKE : Uzak host kimliği '%1' değiştirildi!\n" +#~ "\n" +#~ "Birileri açıkları gözletliyor olabilir.Host yöneticisi anahtar kimliğini " +#~ "değiştirmiş olabilir.Doğrulanan yol host yöneticisinin anahtarı olabilir." +#~ "Anahtar parmak izi:\n" +#~ "%2\n" +#~ "Bu mesajdan kurtulmak için \"%3\" doğru anahtar parmak izini ekleyin." + +#~ msgid "Host key was rejected." +#~ msgstr "Makine anahtarı kabul edilmedi." + +#~ msgid "Please enter a username and password" +#~ msgstr "Lütfen bir kullanıcı adı ve parola girin" + +#~ msgid "File does not exist." +#~ msgstr "Dosya yok." + +#~ msgid "Access is denied." +#~ msgstr "Erişim engellendi." diff --git a/po/tr/kio5_smb.po b/po/tr/kio5_smb.po new file mode 100644 index 0000000..805ac1f --- /dev/null +++ b/po/tr/kio5_smb.po @@ -0,0 +1,197 @@ +# translation of kio_smb.po to Turkish +# translation of kio_smb.po to +# translation of kio_smb.po to +# Copyright (C) 2003, 2005, 2008 Free Software Foundation, Inc. +# +# Görkem Çetin , 2001, 2003. +# Ömer Fadıl USTA , 2002. +# Görkem Çetin , 2005. +# Serdar Soytetir , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2017-07-31 15:20+0000\n" +"Last-Translator: Mesutcan \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: KBabel 1.11.4\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Lütfen %1 için kimlik doğrulama bilgilerini girin" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Lütfen aşağıdaki kimlik denetim bilgilerini girin:\n" +"Sunucu = %1\n" +"Paylaşım = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1\n" +"Bilinmeyen dosya türü." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Yerel ağda hiç çalışma grubu bulunamadı. Buna etkin durumda bulunan bir " +"güvenlik duvarı sebep olmuş olabilir." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 için aygıtta medya yok" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 için makineye bağlantı kurulamadı" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 için sorumlu olan sunucuya bağlanılırken hata oluştu" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Verilen sunucu üzerinde bu isimde bir paylaşım bulunamadı" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Hatalı dosya belirteci" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Verilen isim tek bir sunucu olarak çözümlenemedi. Ağınızın Windows ve UNIX " +"isimlendirmeleri arasında çakışmaya sebep olmayacak şekilde ayarlandığından " +"emin olun." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient bir hata bildirdi, ancak hatanın ne olduğu belirtilmedi. Ağda " +"bir sorun olabilir ancak bir libsmbclient hatası da olabilir.\n" +"Eğer bize yardım etmek istiyorsanız bu işlemi yaparken kullandığınız ağ " +"arayüzünün bir tcpdump çıktısını alın (bu komut çıktısının özel veriler " +"içerebileceğini unutmayın, eğer özel verileriniz olup olmadığından emin " +"değilseniz lütfen göndermeyin, eğer geliştiriciler özel bir kanal kullanarak " +"isterse gönderebilirsiniz)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Bilinmeyen hata: %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "%1%2 erişimi denenirken hata oluştu" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient başlatılamadı" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Lütfen sisteminizde Samba paketlerinin kurulu olduğunu kontrol edin." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"\"%3\" kullanıcısı tarafından \"%2\" makinesinden \"%1\" paylaşımının " +"bağlanması işlemi başarısız oldu.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"\"%1\" bağlantı noktasının ayrılması işlemi başarısız oldu.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient başlatılamadı" + +#~ msgid "File does not exist: %1" +#~ msgstr "Bu isimde bir dosya yok: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "Libsmbclient başlatılamadı" diff --git a/po/tr/kio5_thumbnail.po b/po/tr/kio5_thumbnail.po new file mode 100644 index 0000000..f88c1a6 --- /dev/null +++ b/po/tr/kio5_thumbnail.po @@ -0,0 +1,87 @@ +# translation of kio_thumbnail.po to +# +# Görkem Çetin , 2005. +# Serdar Soytetir , 2008, 2009. +# H. İbrahim Güngör , 2011. +# Volkan Gezer , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2014-10-21 09:49+0000\n" +"Last-Translator: Necdet \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Resmi otomatik olarak döndür" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "MIME Türü belirtilmedi." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Boyut belirtilmedi ya da geçersiz." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Dizin için küçük resim oluşturulamadı" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Eklenti belirtilmedi." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 yüklenemedi" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 için küçük resim oluşturulamadı" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Küçük resim oluşturma işlemi başarısız oldu." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Resim yazılamadı." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Paylaşılan bellek parçası %1'e eklenemedi" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Resim paylaşılan bellek parçası için çok büyük" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Serdar Soytetir" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "tulliana@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/ug/kfileaudiopreview5.po b/po/ug/kfileaudiopreview5.po new file mode 100644 index 0000000..6356cde --- /dev/null +++ b/po/ug/kfileaudiopreview5.po @@ -0,0 +1,33 @@ +# Uyghur translation for kfileaudiopreview4. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "ئاپتوماتىك قويۇش" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "قويۇشنى باشلاش" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "قويۇشنى ۋاقىتلىق توختىتىش" diff --git a/po/ug/kio5_activities.po b/po/ug/kio5_activities.po new file mode 100644 index 0000000..5d70299 --- /dev/null +++ b/po/ug/kio5_activities.po @@ -0,0 +1,198 @@ +# Uyghur translation for kactivitymanagerd_fileitem_linking_plugin. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Gheyret Kenji , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kactivitymanagerd_fileitem_linking_plugin\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.5\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activities" +msgstr "پائالىيەتلەر…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "پائالىيەت باشقۇرغۇچ نورمال ئىجرا بولمىغان." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "نۆۋەتتىكى پائالىيەتكە ئۇلا" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "نۆۋەتتىكى پائالىيەتتىن ئۇلانمىنى ئۈز" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "ئۇلايدىغىنى:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "ئۇلانمىنى ئۈزىدىغىنى:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activity" +msgstr "پائالىيەتلەر…" + +#: KioActivities.cpp:230 +#, fuzzy, kde-format +#| msgid "Link to the current activity" +msgid "Current activity" +msgstr "نۆۋەتتىكى پائالىيەتكە ئۇلا" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sahran.ug@gmail.com, gheyret@gmail.com" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "\"%1\" پائالىيەتكە ئالماشتۇر" + +#, fuzzy +#~| msgid "Activities..." +#~ msgctxt "Header title for activity data model" +#~ msgid "Activity" +#~ msgstr "پائالىيەتلەر…" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Delete activity" +#~ msgstr "نۆۋەتتىكى پائالىيەتكە ئۇلا" + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create a new activity" +#~ msgstr "نۆۋەتتىكى پائالىيەتكە ئۇلا" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity settings" +#~ msgstr "پائالىيەتلەر…" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity information" +#~ msgstr "پائالىيەتلەر…" + +#~ msgid "Privacy" +#~ msgstr "شەخسىيەت" + +#~ msgctxt "unlimited number of months" +#~ msgid "forever" +#~ msgstr "مەڭگۈ" + +#~ msgid "Forget the last hour" +#~ msgstr "ئاخىرقى سائەتتە ئۇنتۇ" + +#~ msgid "Forget the last two hours" +#~ msgstr "ئاخىرقى ئىككى سائەتتە ئۇنتۇ" + +#~ msgid "Forget a day" +#~ msgstr "بىر كۈندە ئۇنتۇ" + +#~ msgid "Forget everything" +#~ msgstr "ھەممىنى ئۇنتۇ" + +#~ msgctxt "unit of time. months to keep the history" +#~ msgid " month" +#~ msgid_plural " months" +#~ msgstr[0] " ئاي" + +#~ msgctxt "for in 'keep history for 5 months'" +#~ msgid "for " +#~ msgstr "ئۈچۈن " + +#, fuzzy +#~| msgid "Link to the current activity" +#~ msgid "Create activity..." +#~ msgstr "نۆۋەتتىكى پائالىيەتكە ئۇلا" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity switching" +#~ msgstr "پائالىيەتلەر…" + +#~ msgid "Remember opened documents:" +#~ msgstr "ئېچىلغان پۈتۈكلەرنى ئەستە تۇت:" + +#, fuzzy +#~| msgid "For all applications" +#~ msgid "For a&ll applications" +#~ msgstr "ھەممە ئەپلەر ئۈچۈن" + +#, fuzzy +#~| msgid "Do not remember" +#~ msgid "&Do not remember" +#~ msgstr "ئەستە تۇتما" + +#, fuzzy +#~| msgid "Only for specific applications" +#~ msgid "O&nly for specific applications" +#~ msgstr "ئالاھىدە ئەپلەر ئۈچۈنلا" + +#~ msgid "Keep history" +#~ msgstr "ئىزلارنى ساقلاپ قال" + +#~ msgid "Clear recent history" +#~ msgstr "يېقىنقى ئىزنى تازىلا" + +#~ msgid "Blacklist all applications not on this list" +#~ msgstr "قارا تىزىمى بۇ تىزىملىكتە بولمىغان ھەممە ئەپلەر" + +#, fuzzy +#~| msgid "Activities..." +#~ msgid "Activity name" +#~ msgstr "پائالىيەتلەر…" + +#~ msgid "Available Features" +#~ msgstr "ئىشلەتكىلى بولىدىغان ئىقتىدارلار" + +#~ msgid "Plugins" +#~ msgstr "قىستۇرما" + +#~ msgid "Enable activities management" +#~ msgstr "پائالىيەت باشقۇرغۇچنى قوزغات" + +#~ msgid "Activity manager is not running properly." +#~ msgstr "پائالىيەت باشقۇرغۇچ نورمال ئىجرا بولمىغان." + +#~ msgid "Activities..." +#~ msgstr "پائالىيەتلەر…" + +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "(c) 2012 Ivan Cukic" diff --git a/po/ug/kio5_archive.po b/po/ug/kio5_archive.po new file mode 100644 index 0000000..4fc9e34 --- /dev/null +++ b/po/ug/kio5_archive.po @@ -0,0 +1,37 @@ +# Uyghur translation for kio_archive. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"بۇ ھۆججەتنى ئاچقىلى بولمىدى. سەۋەبى ھۆججەت فورماتىنى قوللىمايدۇ.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"ئارخىپ ھۆججەتنى ئاچقىلى بولمىدى. سەۋەبى ھۆججەت فورماتىنى قوللىمايدۇ.\n" +"%1" diff --git a/po/ug/kio5_bookmarks.po b/po/ug/kio5_bookmarks.po new file mode 100644 index 0000000..216d06c --- /dev/null +++ b/po/ug/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# Uyghur translation for kio_bookmarks. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "غول مۇندەرىجە" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "ئورۇنلار" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "خاتا سۈرۈشتۈرۈش: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "تېخى كۆرسىتىدىغان خەتكۈش يوق." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"kio_bookmarks نىڭ CSS ھۆججىتى تېپىلمىدى. كۆرۈمسىز كۆرۈنىدۇ.\n" +"ئورنىتىشنى تەكشۈرۈپ ئۆۆرۈڭ." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "خەتكۈچلىرىم" + +#~ msgid "My bookmarks" +#~ msgstr "خەتكۈچلىرىم" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "تۇنجى ئىجادىيەتچى" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sahran.ug@gmail.com, gheyret@gmail.com" diff --git a/po/ug/kio5_fish.po b/po/ug/kio5_fish.po new file mode 100644 index 0000000..251189e --- /dev/null +++ b/po/ug/kio5_fish.po @@ -0,0 +1,43 @@ +# Uyghur translation for kio_fish. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "باغلىنىۋاتىدۇ…" + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "كېلىشىمنى دەسلەپلەشتۈرۈۋاتىدۇ…" + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "يەرلىك كىرىش" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "س س خ (SSH) كىملىك دەلىللەش" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "ئۈزۈلدى." diff --git a/po/ug/kio5_info.po b/po/ug/kio5_info.po new file mode 100644 index 0000000..20743c2 --- /dev/null +++ b/po/ug/kio5_info.po @@ -0,0 +1,29 @@ +# Uyghur translation for kio_info. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"بۇ مۇلازىمەتنى ئىجرا قىلىشقا زۆرۈر بولغان ھۆججەت %1 نىڭ ئورنىنى بىلگىلى " +"بولمىدى. پروگراممىنىڭ ئورنىتىلىشىنى تەكشۈرۈپ كۆرۈڭ." diff --git a/po/ug/kio5_man.po b/po/ug/kio5_man.po new file mode 100644 index 0000000..5a5830d --- /dev/null +++ b/po/ug/kio5_man.po @@ -0,0 +1,200 @@ +# Uyghur translation for kio_man. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "باش ھۆججەتلەر" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "باش ھۆججەتلەر (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "ئىشلەتكۈچى بۇيرۇقلىرى" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "ئىشلەتكۈچى بۇيرۇقلىرى(POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "سىستېما چاقىرىش" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "تارماق فۇنكسىيىلەر" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl بۆلەكلىرى" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "تور فۇنكسىيە" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "ئۈسكۈنىلەر" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "ھۆججەت پىچىملىرى" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "ئويۇنلار" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "باشقىلار" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "سىستېما باشقۇرۇش" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "يادرو" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "يەرلىك پۈتۈك" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "يېڭى" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX قوللانما ئىندىكىسى" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "بۆلەك %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "بۆلەك %1 نىڭ ئىندېكسى: %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX قوللانما ئىندىكىسى" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "ئىندېكس ھاسىللاۋاتىدۇ" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" + +#~ msgid "Open of %1 failed." +#~ msgstr "%1 نى ئېچىش مەغلۇپ بولدى." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sahran.ug@gmail.com, gheyret@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/ug/kio5_nfs.po b/po/ug/kio5_nfs.po new file mode 100644 index 0000000..23e7782 --- /dev/null +++ b/po/ug/kio5_nfs.po @@ -0,0 +1,66 @@ +# Uyghur translation for kio_nfs. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "ئۈسكۈنىدە يېتەرلىك بوشلۇق يوق" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "ئوقۇشقىلا بولىدىغان ھۆججەت سىستېمىسى" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "ئات بەك ئۇزۇن" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "دىسكا نورمىسى ئېشىپ كەتتى" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC خاتالىقى كۆرۈلدى." diff --git a/po/ug/kio5_recentdocuments.po b/po/ug/kio5_recentdocuments.po new file mode 100644 index 0000000..b327db4 --- /dev/null +++ b/po/ug/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Uyghur translation for kio_recentdocuments. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Gheyret Kenji , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur \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" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "يېقىنقى پۈتۈكلەر" diff --git a/po/ug/kio5_sftp.po b/po/ug/kio5_sftp.po new file mode 100644 index 0000000..6a6474c --- /dev/null +++ b/po/ug/kio5_sftp.po @@ -0,0 +1,256 @@ +# Uyghur translation for kio_sftp. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "ئىم توغرا ئەمەس ياكى ئىناۋەتسىز" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "callback لارنى تەقسىملىگىلى بولمىدى" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "خاتىرە دەرىجىسىنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "خاتىرە دەرىجىسىنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "callback لارنى تەقسىملىگىلى بولمىدى" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP كىرىش" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"بۇ سوئالغا جاۋاب بېرىشتە ئىشلەتكۈچى ئاتىنى كىرگۈزۈش سۆز بۆلىكىنى ئىشلىتىدۇ." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "ئىمنى كىرگۈزۈڭ." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "تور بېكەت:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "يېڭى SSH ئەڭگىمەسى قۇرغىلى بولمىدى." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "قەرەلنى(timeout) نى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:610 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "ئېغىزنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "پرېسلاشنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "كومپيۇتېرنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "ئېغىزنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "ئىشلەتكۈچى ئاتىنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "سەپلىمە ھۆججەتنى تەھلىل قىلغىلى بولمىدى." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "" + +#: kio_sftp.cpp:741 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "ئىشلەتكۈچى ئاتىنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "ئاگاھلاندۇرۇش: كومپيۇتېرنىڭ كىملىكىنى تەكشۈرگىلى بولمىدى." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "دەلىللەش مەغلۇپ بولدى." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "ئىشلەتكۈچى ئاتى ۋە ئىمنى كىرگۈزۈڭ." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "ئىشلەتكۈچى ئاتى ياكى ئىم توغرا ئەمەس" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP ئەڭگىمەسىنى دەسلەپلەشتۈرەلمىدى." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 غا مۇۋەپپەقىيەتلىك باغلاندى" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"تۆۋەندىكىنىڭ ھوقۇقىنى ئۆزگەرتكىلى بولمىدى\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "ئۇلانمىنى ئوقۇغىلى بولمىدى: %1" + +#~ msgid "No hostname specified." +#~ msgstr "كومپيۇتېر ئاتى بەلگىلەنمىگەن" diff --git a/po/ug/kio5_smb.po b/po/ug/kio5_smb.po new file mode 100644 index 0000000..ac32434 --- /dev/null +++ b/po/ug/kio5_smb.po @@ -0,0 +1,176 @@ +# Uyghur translation for kio_smb. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr " %1 نىڭ كىملىك دەلىللەش ئۇچۇرلىرىنى كىرگۈزۈڭ" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"تۆۋەندىكىلەرنىڭ دەلىللەش ئۇچۇرلىرىنى كىرگۈزۈڭ:\n" +"مۇلازىمېتىر = %1\n" +"ھەمبەھىر = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +" ھۆججەتنىڭ تىپى نامەلۇم، نامەلۇم مۇندەرىجە ياكى ھۆججەت" + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"يەرلىك توردا ھېچقانداق بىر گۇرۇپپا يوق. بۇ تور توسۇقنىڭ سەۋەبىدىن كېلىپ " +"چىقىدۇ." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 نىڭ ئۈسكۈنىسىدە ۋاسىتە يوق" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "ماشىنا %1 غا باغلانغىلى بولمىدى" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "بېرىلگەن مۇلازىمېتىردىن ھەمبەھىر تېپىلمىدى" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "بولمىغۇر ھۆججەت چۈشەندۈرۈلۈشى" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "مەزمۇن قۇرۇشتا libsmbclient مەغلۇپ بولدى" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"سىستېمىڭىزغا samba بوغچىسى توغرا ئورنىتىلغانمۇ تەكشۈرۈڭ." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"ئېگەرلەش نۇقتىسى «%1» نى ئېگەرسىزلەش مەغلۇپ بولدى.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "مەزمۇننى دەسلەپلەشتۈرۈشتە libsmbclient مەغلۇپ بولدى" + +#~ msgid "File does not exist: %1" +#~ msgstr "ھۆججەت مەۋجۇت ئەمەس: %1" diff --git a/po/ug/kio5_thumbnail.po b/po/ug/kio5_thumbnail.po new file mode 100644 index 0000000..eecbb71 --- /dev/null +++ b/po/ug/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# Uyghur translation for kio_thumbnail. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "سۈرەتنى ئاپتوماتىك چۆرگىلىتىدۇ" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "MIME تىپى كۆرسىتىلمىگەن." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "چوڭلۇقى ئىناۋەتسىز ۋە كۆرسىتىلمىگەن." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "مۇندەرىجىنىڭ كىچىك سۈرىتىنى قۇرغىلى بولمىدى" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "قىستۇرما كۆرسىتىلمىگەن." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator نى ئوقۇغىلى بولمىدى %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 ئۈچۈن كىچىك سۈرەت قۇرغىلى بولمىدى" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "كىچىك سۈرەت قۇرۇش مەغلۇپ بولدى." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "سۈرەتنى يازغىلى بولمىدى." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "ھەمبەھىرلەنگەن ئەسلەك بۆلىكى %1 گە قېتىلىش مەغلۇپ بولدى" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "ھەمبەھىرلەنگەن ئەسلەك بۆلىكىگە نىسبەتەن سۈرەت بەك چوڭ" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "sahran.ug@gmail.com, gheyret@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/uk/docs/kioslave5/bookmarks/index.docbook b/po/uk/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..df7c410 --- /dev/null +++ b/po/uk/docs/kioslave5/bookmarks/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +bookmarks + + +XavierVello xavier.vello@gmail.com +ЮрійЧорноіван
        yurchor@ukr.net
        Переклад українською
        +
        + +31 серпня 2008 року +0.2 + +
        + +Цей KIO показує ваші закладки у вигляді красивої та функціональної сторінки HTML. Доступ до неї можна отримати введенням адреси bookmarks:/ у поле адреси &konqueror;. + +Вміст і компонування цієї сторінки можна змінювати. Для цього достатньо вказати &konqueror; адресу bookmarks:/config, — у результаті переходу за цією адресою буде відкрито діалогове вікно налаштування. + +
        + diff --git a/po/uk/docs/kioslave5/bzip2/index.docbook b/po/uk/docs/kioslave5/bzip2/index.docbook new file mode 100644 index 0000000..056714f --- /dev/null +++ b/po/uk/docs/kioslave5/bzip2/index.docbook @@ -0,0 +1,64 @@ + + + +]> + +
        +bzip2 / bzip + + +&Lauri.Watts; &Lauri.Watts.mail; +ЄвгенОнищенко
        oneugene@ukr.net
        Переклад українською
        +
        +
        + +bzip2 — це програма для стискання даних. + +Підлеглий bzip2 не використовується безпосередньо, його використовують як фільтр. Наприклад, підлеглий tar може розпакувати файл за допомогою підлеглого bzip2, для того, щоб показати вміст файла tar.bz2 в вікні &konqueror;. + +Коли ви натискаєте позначку файла з суфіксом назви bz2, у &konqueror;, цей підлеглий В/В використовується, щоб розпакувати цей файл та показати його як звичайний (розпакований) файл. + +Розробники програм, що бажають використовувати підлеглий bzip2, можуть знайти документацію про використання підлеглих В/В на http://techbase.kde.org + +Перегляньте довідку: bzip2. + +Команда bzip є попередницею команди bzip2. Зараз її використовують нечасто, її замінила команда bzip2, за використання якої можна отримувати кращий рівень стиснення. + +
        diff --git a/po/uk/docs/kioslave5/fish/index.docbook b/po/uk/docs/kioslave5/fish/index.docbook new file mode 100644 index 0000000..f3f95b0 --- /dev/null +++ b/po/uk/docs/kioslave5/fish/index.docbook @@ -0,0 +1,165 @@ + + + +]> + +
        +fish + + +&Joerg.Walter; &Joerg.Walter.mail; +&Brad.Hards; &Brad.Hards.mail; +ЮрійЧорноіван
        yurchor@ukr.net
        Переклад українською
        +
        + +27 жовтня 2010 року +&kde; 4.5 + +
        + +Надає вам змогу мати доступ до файлів на іншому комп’ютері за протоколом Secure SHell (безпечної оболонки SSH). На віддаленому комп’ютері має бути запущено фонову службу SSH, але решта протоколу використовує стандартні засоби командного рядка у спосіб, описаний нижче. + +Використовувати kioslave fish можна так: fish://назва_вузла або fish://користувач@назва_вузла. + +Вам слід використовувати подвійні прямі зворотні риски. + +Поле користувач (і символ @, що за ним слідує) можна пропустити, якщо у вас однаковий запис користувача на обох комп’ютерах. + +Пароль можна додати у форматі: fish://користувач:пароль@назва_вузла, але цього можна і не робити, оскільки, якщо ви не надасте пароля, програма запитає вас про потрібний пароль. + +Якщо фонову службу SSH запущено на нетиповому порті, ви можете вказати порт, використовуючи звичайний синтаксис &URL;, наприклад так: fish://назва_вузла:номер_порту. + +Fish має працювати на всіх віддалених системах &UNIX;, які виконують стандарти POSIX. Можна використовувати команди оболонки cat, chgrp, chmod, chown, cp, dd, env, expr, grep, ls, mkdir, mv, rm, rmdir, sed, і wc. Як оболонку Fish запускає /bin/sh і вважає, що оболонка є оболонкою Bourne (або сумісною з нею, на зразок bash). Якщо доступні команди sed і file, а також підписи типів &MIME; з файла /etc/apache/magic, буде використано відповідні можливості під час визначення типів &MIME;. + +Якщо на віддаленім комп’ютері встановлено Perl, замість попередніх засобів. У такому випадку потрібні лише env і /bin/sh. Використання Perl має перевагу, оскільки команди у такому випадку виконуються швидше. + +Fish може працювати навіть на комп’ютерах під керуванням &Windows;, якщо на них встановлено інструменти на зразок Cygwin. Всі перелічені вище утиліти, у такому випадку, має бути встановлено у каталогах, перелічених у системній змінній PATH, а початкова оболонка має належним чином виконувати команду echo FISH:;/bin/sh. + +
        diff --git a/po/uk/docs/kioslave5/gzip/index.docbook b/po/uk/docs/kioslave5/gzip/index.docbook new file mode 100644 index 0000000..c0d9b06 --- /dev/null +++ b/po/uk/docs/kioslave5/gzip/index.docbook @@ -0,0 +1,59 @@ + + + +]> + +
        +gzip + + +&Lauri.Watts; &Lauri.Watts.mail; +о. ІванПетрущак
        fr.ivan@ukrainian-orthodox.org
        Переклад українською
        +
        +
        + +gzip це програма для стискання даних. + +Підлеглий gzip типово не використовується безпосередньо, його використовують як фільтр. Наприклад, підлеглий tar може розпакувати файл за допомогою підлеглого gzip, для того щоб показати вміст файла tar.gz в вікні &konqueror;. + +Коли ви натискаєте позначку файла з суфіксом назви gz, у &konqueror;, цей підлеглий В/В використовується, щоб розпакувати цей файл і показати його, як звичайний (розпакований) файл. + +Розробники програм, що бажають використовувати фільтр gzip, можуть знайти документацію про використання підлеглих В/В на http://techbase.kde.org + +Дивіться довідку: gzip. + +
        diff --git a/po/uk/docs/kioslave5/info/index.docbook b/po/uk/docs/kioslave5/info/index.docbook new file mode 100644 index 0000000..e945901 --- /dev/null +++ b/po/uk/docs/kioslave5/info/index.docbook @@ -0,0 +1,72 @@ + + + +]> + +
        +Info + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +АндрійРисін
        rysin@kde.org
        Переклад українською
        +
        +
        + +Info це різновид документації. Документація знаходиться у файлах в форматі texinfo. Їх можна читати в консолі за допомогою програми info. + +Підлеглий info дозволяє читати сторінки info, які встановлені на вашому комп'ютері, за допомогою &konqueror;. Користуватись ним дуже просто: + +info:gcc + +Це покаже першу сторінку документації для компілятора &gcc;. + +Info — це заміна команди man від &GNU;, але вона рідко використовується у програмних продуктах, які не створено &GNU;. + +Ви можете досить легко переглядати встановлену документацію у &khelpcenter;, або ви можете скористатись підлеглим в/в "info" безпосередньо в &konqueror; та mini-cli. + +
        diff --git a/po/uk/docs/kioslave5/man/index.docbook b/po/uk/docs/kioslave5/man/index.docbook new file mode 100644 index 0000000..289a686 --- /dev/null +++ b/po/uk/docs/kioslave5/man/index.docbook @@ -0,0 +1,155 @@ + + + +]> + +
        +Man + + +&Lauri.Watts; &Lauri.Watts.mail; +Nicolas Goutte goutte@kde.org +АндрійРисін
        rysin@kde.org
        Переклад українською
        +
        +
        + +Користуючись цим підлеглим В/В ви можете читати сторінки man встановлені на вашому комп'ютері. Користуватись ним дуже просто: + + + +man: + +Ви побачите індекс довідки Unix, далі просто натискайте на посилання. + + + +man:/fopen + +Дозволить вам побачити довідку про команду fopen. + + + +man:/fopen(3) + +Прочитати сторінку довідки fopen у розділі 3. + + + +man:/(3) + +Переглянути покажчик розділу 3. + + + +man:/intro(3) + +Переглянути вступ до розділу 3. + + + + +Якщо для введеної вами назви існує декілька довідкових сторінок, ви побачите список, з якого зможете вибрати потрібну вам сторінку довідки. + +Також ви можете користуватись скороченою адресою: #fopen, це та сама адреса, що і в попередньому прикладі. + +Якщо ви не можете знайти всі ваші сторінки довідки, змініть належним чином встановіть файл налаштування /etc/manpath.config (або відповідний файл вашого дистрибутиву) або відповідно налаштуйте змінні оточення MANPATH та MANSECT. + +Як і у будь-якому іншому підлеглому &kde; можна ввести адресу &URL;, на зразок man:/socket у будь-якій програмі &kde;. Спробуйте зробити це у &kwrite;, і ви побачите сторінку довідки у форматі &HTML;. + +Всі питання надсилайте до списку листування kde-devel@kde.org + +
        diff --git a/po/uk/docs/kioslave5/network/index.docbook b/po/uk/docs/kioslave5/network/index.docbook new file mode 100644 index 0000000..1caa9f2 --- /dev/null +++ b/po/uk/docs/kioslave5/network/index.docbook @@ -0,0 +1,93 @@ + + + +]> + +
        + +мережа + + + + Friedrich W. H.Kossebau kossebau@kde.org + ЮрійЧорноіван
        yurchor@ukr.net
        Переклад українською
        +
        + + 11 грудня 2016 року + Програми 16.12 + +
        + + +За допомогою допоміжної служби вводу-виводу (ioslave) network користувач зможе переглядати з’єднані пристрої у локальній мережі та запущені на них служби. Крім того, передбачено можливість запуску програм для служб, тип яких відомий програмі. + +Щоб переглянути список всіх знайдених пристроїв, перейдіть за адресою network://. + +У даних, виведених внаслідок виконання команди network:// назва_вузла_пристрою буде показано перелік служб, які запущено на пристрої. + +Перехід за позначкою пристрою буде переспрямовано за адресою url, що відповідає службі, яку програма вважає належною, наприклад ssh://назва_вузла_пристрою:порт/ для служби SSH. У кожного типу служби на рівні середовище існує відповідний тип MIME, отже користувач можна призначати власні інструменти обробки для адрес url. Зробити це можна за допомогою модуля керування Прив’язка файлів у «Системних параметрах». Типи MIME служб у переліку типів перебувають у вузлі з назвою inode/vnd.kde.service.*. + + + Поточна версія KIOSlave network знаходить і показує пристрої і служби, які активно повідомляють про себе за допомогою оболонки визначення служб DNS-SD. + + +
        + diff --git a/po/uk/docs/kioslave5/nfs/index.docbook b/po/uk/docs/kioslave5/nfs/index.docbook new file mode 100644 index 0000000..a1a90df --- /dev/null +++ b/po/uk/docs/kioslave5/nfs/index.docbook @@ -0,0 +1,63 @@ + + + +]> + +
        +nfs + + +&Lauri.Watts; &Lauri.Watts.mail; +ЮрійЧорноіван
        yurchor@ukr.net
        Переклад українською
        +
        +
        +Протокол NFS, розроблений фірмою Sun, надає можливість прозорого віддаленого доступу мережею на спільні файлові системи. Протокол NFS створено незалежним від архітектури комп’ютера, операційної системи, архітектури мережі і протоколу перенесення. Ця незалежність досягається за допомогою використання базових елементів Remote Procedure Call (RPC) як надбудову над eXternal Data Representation (XDR). + +Підтримка протоколу MOUNT виконує функції, залежні від операційної системи, які надають змогу клієнтам під’єднувати ієрархічні дерева віддаленої теки у точку монтування у локальній файловій системі. Процес монтування також надає змогу серверу надавати привілеї віддаленого доступу обмеженому колу клієнтів за допомогою керування експортом. + +Менеджер блокування надає підтримку блокування файлів у середовищі NFS. Протокол Network Lock Manager (NLM) передає успадкування властивостей блокування файла у вигляді окремого протоколу. + +Джерело: http://www.networksorcery.com/enp/protocol/nfs.htm + +Довідка з nfs. +
        diff --git a/po/uk/docs/kioslave5/recentdocuments/index.docbook b/po/uk/docs/kioslave5/recentdocuments/index.docbook new file mode 100644 index 0000000..050f383 --- /dev/null +++ b/po/uk/docs/kioslave5/recentdocuments/index.docbook @@ -0,0 +1,74 @@ + + + +]> + +
        +Нещодавні документи + + + + + &Burkhard.Lueck;&Burkhard.Lueck.mail; +ЮрійЧорноіван
        yurchor@ukr.net
        Переклад українською
        +
        + +1 грудня 2016 року +Програми 16.12 + +
        + +Допоміжний засіб введення-виведення для показу списку нещодавно відкритих документів або адрес у діалоговому вікні роботи з файлами, програмі для навігації файловою системою, у &krunner; та у меню програм. + +Скористатися допоміжним засобом можна так: + +Введіть recentdocuments:/ у рядку адреси &dolphin;, &konqueror; або діалоговому вікні роботи з файлами, щоб відкрити список останніх використаних документів або адрес. + +Ви можете додати запис засобу до бічної панелі «Місця»: наведіть вказівник миші на бічну панель, клацніть правою кнопкою миші, виберіть у меню пункт Додати запис, введіть recentdocuments:/ у поле Адреса і збережіть запис. Тепер записом можна буде скористатися в усіх діалогових вікнах роботи з файлами, якщо ви не позначите пункту показу відповідного запису лише у поточній програмі. + +Щоб скористатися цим допоміжним засобом введення-виведення у &krunner;, увімкніть додаток пошуку Нещодавні документи у модулі «Системних параметрів» Пошук у Плазмі. + +Додати пункт нещодавніх документів до верхньої частини списку Меню програм можна позначенням пункту Показувати нещодавні документи на сторінці параметрів програми. + +
        diff --git a/po/uk/docs/kioslave5/sftp/index.docbook b/po/uk/docs/kioslave5/sftp/index.docbook new file mode 100644 index 0000000..d3b7dd4 --- /dev/null +++ b/po/uk/docs/kioslave5/sftp/index.docbook @@ -0,0 +1,49 @@ + + + +]> + +
        +sftp + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +ЮрійЧорноіван
        yurchor@ukr.net
        Переклад українською
        +
        +
        +SFTP — Secure file transfer protocol (протокол для безпечного передавання файлів). sftp — це інтерактивна програма для передачі файлів, подібна до ftp, але ця програма виконує всі дії за допомогою зашифрованої ssh-трансляції. Вона може використовувати багато з можливостей ssh, зокрема, ідентифікацію за відкритим ключем і стиснення. + +Перегляньте довідку: sftp. + +
        diff --git a/po/uk/docs/kioslave5/smb/index.docbook b/po/uk/docs/kioslave5/smb/index.docbook new file mode 100644 index 0000000..55bdd87 --- /dev/null +++ b/po/uk/docs/kioslave5/smb/index.docbook @@ -0,0 +1,106 @@ + + + +]> + +
        +SMB + + +&Alexander.Neundorf; &Alexander.Neundorf.mail; +ІванПетрущак
        iip@telus.net
        Переклад українською
        +
        +11 грудня 2016 року +Програми 16.12 +
        +Підлеглий smb впроваджує навігацію по спільним ресурсам &Windows; (або samba) у мережі. + +Щоб побачити робочі групи, введіть smb:/. +smb:/робоча_група покаже список вузлів в цій робочій групі. +Щоб побачити список спільних ресурсів вузла, введіть smb://the_host або smb:/a_workgroup/the_host. +Щоб отримати прямий доступ до ресурсу, введіть smb://the_host/the_share або smb:/a_workgroup/the_host/the_share + +Для роботи підлеглого В/В smb потрібно встановити libsmbclient. + +Ви можете встановити типового користувача і пароль у Системних параметрах: категорія Мережа, З’єднанняСпільні ресурси Windows. Це дуже корисно, якщо ви член домену &Windows; NT. Також ви можете встановити назву робочої групи, але в більшості випадків це не потрібно. Підлеглий В/В запитає вас про користувача і пароль, якщо не встановлено типових значень цих елементів. + +
        + diff --git a/po/uk/docs/kioslave5/tar/index.docbook b/po/uk/docs/kioslave5/tar/index.docbook new file mode 100644 index 0000000..a2af5f0 --- /dev/null +++ b/po/uk/docs/kioslave5/tar/index.docbook @@ -0,0 +1,41 @@ + + + +]> + +
        +tar + + +&Ferdinand.Gassauer; &Ferdinand.Gassauer.mail; +ІванПетрущак
        iip@telus.net
        Переклад українською
        +
        +
        +Програма для архівування створена для зберігання і видобування файлів з архівних файлів, які відомі як tar-файли. Tar-файл (tape archive) спочатку був пов’язаний зі стрічковими накопичувачами інформації, але зараз запис tar-файла нічим не відрізняється від звичайного файла. + +Див. довідник: tar. + +
        diff --git a/po/uk/docs/kioslave5/thumbnail/index.docbook b/po/uk/docs/kioslave5/thumbnail/index.docbook new file mode 100644 index 0000000..8e60663 --- /dev/null +++ b/po/uk/docs/kioslave5/thumbnail/index.docbook @@ -0,0 +1,57 @@ + + + +]> + +
        +thumbnail + + +&Carsten.Pfeiffer; &Carsten.Pfeiffer.mail; +ЮрійЧорноіван
        yurchor@ukr.net
        Переклад українською
        +
        +11 грудня 2016 року +Програми 16.12 +
        +Kioslave thumbnail використовується у &kde; для прозорого з точки зору мережі і неперервного створення мініатюр. + +Для створення мініатюр kioslave thumbnail використовує додатки. Побачити створені мініатюри можна увімкненням відповідного параметра у підменю Перегляд Режим перегляду, доступного у режимі роботи з файлами у &dolphin; або &konqueror;. + +Безпосередньо користувачеві kioslave thumbnail не потрібен, але, якщо ви є розробником, ви можете скористатися ним у ваших власних програмах для створення зображення попереднього перегляду файлів. + +Щоб дізнатися більше, прочитайте документацію у початкових кодах програм. Цю документацію можна знайти у теці thumbnail. + +
        diff --git a/po/uk/docs/kioslave5/xz/index.docbook b/po/uk/docs/kioslave5/xz/index.docbook new file mode 100644 index 0000000..c9e78f5 --- /dev/null +++ b/po/uk/docs/kioslave5/xz/index.docbook @@ -0,0 +1,67 @@ + + + +]> + +
        +xz / lzma + + +Per Øyvind Karlsen +ЮрійЧорноіван
        yurchor@ukr.net
        Переклад українською
        +
        +
        + +Xz — це програма для стискання даних. + +Підлеглий xz типово не використовується безпосередньо, його використовують як фільтр. Наприклад, підлеглий tar може розпакувати файл за допомогою підлеглого gzip, для того щоб показати вміст файла tar.lzma або tar.xz в вікні &konqueror;. + +Коли ви натискаєте на файл, назва якого має суфікс .lzma абоtar.xz, у &konqueror;, цей підлеглий В/В використовується, щоб розпакувати цей файл та показати його як звичайний (розпакований) файл. + +Розробники програм, які бажають використовувати підлеглий фільтр xz, можуть знайти документацію про використання підлеглих В/В на http://techbase.kde.org + +Дивіться довідку: xz. + +
        diff --git a/po/uk/kfileaudiopreview5.po b/po/uk/kfileaudiopreview5.po new file mode 100644 index 0000000..a7d7d25 --- /dev/null +++ b/po/uk/kfileaudiopreview5.po @@ -0,0 +1,36 @@ +# Translation of kfileaudiopreview5.po to Ukrainian +# Copyright (C) 2014-2015 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2015-07-20 13:20+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Відтворювати &автоматично" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "почати відтворення" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "призупинити відтворення" diff --git a/po/uk/kio5_activities.po b/po/uk/kio5_activities.po new file mode 100644 index 0000000..302094a --- /dev/null +++ b/po/uk/kio5_activities.po @@ -0,0 +1,85 @@ +# Translation of kio5_activities.po to Ukrainian +# Copyright (C) 2016 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio5_activities\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2016-03-09 16:38+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "Простори дій" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "Завантаження…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Засіб керування просторами дій не запущено" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "З’єднати з поточним простором дій" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Від’єднати від поточного простору дій" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "З’єднати з:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "Від’єднати від:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "Простір дій" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "Поточний простір дій" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Юрій Чорноіван" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "yurchor@ukr.net" + +#~ msgid "Default" +#~ msgstr "Типовий" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Перемкнутися на простір дій «%1»" diff --git a/po/uk/kio5_archive.po b/po/uk/kio5_archive.po new file mode 100644 index 0000000..595a2e5 --- /dev/null +++ b/po/uk/kio5_archive.po @@ -0,0 +1,43 @@ +# Translation of kio5_archive.po to Ukrainian +# Copyright (C) 2005-2009 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. +# +# Eugene Onischenko , 2005. +# Ivan Petrouchtchak , 2008. +# Yuri Chornoivan , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio5_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2009-12-27 09:58+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.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" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Не вдалося відкрити файл. Ймовірно через формат, який не підтримується.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Не вдалося відкрити файл архіву. Ймовірно через те, що його формат не " +"підтримується.\n" +"%1" diff --git a/po/uk/kio5_bookmarks.po b/po/uk/kio5_bookmarks.po new file mode 100644 index 0000000..02da193 --- /dev/null +++ b/po/uk/kio5_bookmarks.po @@ -0,0 +1,65 @@ +# Translation of kio5_bookmarks.po to Ukrainian +# Copyright (C) 2015-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2015, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio5_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-10-31 08:56+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 20.11.70\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Корінь" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Місця" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Не вдалося знайти налаштування закладок" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Не вдалося знайти редактор закладок" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Помилковий запит: %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Закладок ще немає, — немає чого показувати." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Файл CSS kio_bookmarks не знайдено. Вивід виглядатиме жахливо.\n" +"Перевірте, чи встановлено відповідні компоненти." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Мої закладки" diff --git a/po/uk/kio5_fish.po b/po/uk/kio5_fish.po new file mode 100644 index 0000000..45bc5e3 --- /dev/null +++ b/po/uk/kio5_fish.po @@ -0,0 +1,55 @@ +# Translation of kio5_fish.po to Ukrainian +# Copyright (C) 2003-2012 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. +# +# Andriy Rysin , 2003, 2004. +# Yuri Chornoivan , 2009, 2010, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio5_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-08-20 09:32+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Встановлення з’єднання..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Ініціалізація протоколу..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Локальна реєстрація" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "Розпізнавання за допомогою SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Роз'єднано." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Юрій Чорноіван" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "yurchor@ukr.net" diff --git a/po/uk/kio5_info.po b/po/uk/kio5_info.po new file mode 100644 index 0000000..d27f909 --- /dev/null +++ b/po/uk/kio5_info.po @@ -0,0 +1,32 @@ +# Translation of kio5_info.po to Ukrainian +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio5_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-03-27 17:29+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Не вдалося знайти файл %1, який потрібен для запуску цієї служби. Будь " +"ласка, переконайтеся, що програму встановлено належним чином." diff --git a/po/uk/kio5_man.po b/po/uk/kio5_man.po new file mode 100644 index 0000000..76a08f5 --- /dev/null +++ b/po/uk/kio5_man.po @@ -0,0 +1,224 @@ +# Translation of kio5_man.po to Ukrainian +# Copyright (C) 2002-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Andriy Rysin , 2002, 2003. +# Eugene Onischenko , 2005. +# Ivan Petrouchtchak , 2007, 2008. +# Yuri Chornoivan , 2008, 2009, 2012, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio5_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-09-13 08:33+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.11.70\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" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"Не знайдено сторінки підручника, що відповідає %1.Перевірте чи назву сторінки введено правильно. Будьте уважні, слід " +"відрізняти малі на великі літери у назві!Якщо все виглядає " +"правильно, можливо, потрібно розширити шлях для пошуку або за допомогою " +"змінної середовища MANPATH, або за допомогою відповідного " +"файла налаштувань у каталозі /etc." + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" +"Виявлено сторінку підручника (man) %1, але її не " +"вдалося прочитати або обробити." + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Вказана сторінка підручника посилається на іншу сторінку %1,але програмі не вдалося знайти сторінку %2, на яку посилаються." + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Помилка засобу перегляду сторінок підручника" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Підходить одразу декілька сторінок:" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Декілька сторінок підручника" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"Примітка: якщо ви читаєте перекладену сторінку довідки, пам'ятайте, що вона " +"може містити помилки або бути застарілою. Якщо є сумніви, перегляньте " +"англійську версію." + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "Файли заголовків" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "Файл заголовків (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Команди користувача" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Команди користувача (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Системні виклики" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Підпрограми" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Модулі Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Функції мережі" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Пристрої" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Формати файлів" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Ігри" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Різне" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Керування системою" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Ядро" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Локальна документація" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Створити" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Основний покажчик сторінок підручника" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Розділ %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Індекс розділу %1: %2" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "Покажчик сторінок підручника" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Створюю індекс" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Не вдалося знайти програму sgml2roff у вашій системі. " +"Будь ласка, встановіть її, якщо потрібно, та перевірте, чи адреса каталогу, " +"де вона зберігається, є частиною значення змінної середовища PATH." + +#~ msgid "Open of %1 failed." +#~ msgstr "Неможливо відкрити %1." + +#~ msgid "Man output" +#~ msgstr "Вивід man" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Andriy Rysin" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "rysin@kde.org" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/uk/kio5_mtp.po b/po/uk/kio5_mtp.po new file mode 100644 index 0000000..dc266f9 --- /dev/null +++ b/po/uk/kio5_mtp.po @@ -0,0 +1,39 @@ +# Translation of kio5_mtp.po to Ukrainian +# Copyright (C) 2015-2019 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2015, 2016, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio5_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-16 08:10+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 19.03.70\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Носіїв для зберігання даних не виявлено. Переконайтеся, що пристрій " +"розблоковано, а у його параметрах з’єднання за допомогою USB увімкнено MTP." + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Не можна копіювати або пересувати файли на сам пристрій" + +#~ msgid "No Storages found. Maybe you need to unlock your device?" +#~ msgstr "" +#~ "Сховищ даних не виявлено. Можливо, вам слід розблокувати ваш пристрій?" diff --git a/po/uk/kio5_network.po b/po/uk/kio5_network.po new file mode 100644 index 0000000..304e793 --- /dev/null +++ b/po/uk/kio5_network.po @@ -0,0 +1,26 @@ +# Translation of kio5_network.po to Ukrainian +# Copyright (C) 2019 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio5_network\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-11-23 09:06+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 20.03.70\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "Мережа" diff --git a/po/uk/kio5_nfs.po b/po/uk/kio5_nfs.po new file mode 100644 index 0000000..4e73f66 --- /dev/null +++ b/po/uk/kio5_nfs.po @@ -0,0 +1,71 @@ +# Translation of kio5_nfs.po to Ukrainian +# Copyright (C) 2002-2014 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. +# +# Andriy Rysin , 2002, 2004. +# Ivan Petrouchtchak , 2006. +# Yuri Chornoivan , 2009, 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio5_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-12-18 07:29+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 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" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1: непідтримувана версія NFS" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "Помилка RPC %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "Немає місця на пристрої" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Файлова система тільки для зчитування" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Задовга назва файла" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Перевищено квоту диска" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "Помилка NFS %1 — %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "Не вдалося змонтувати %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "Невідоме призначення" + +#~ msgid "An RPC error occurred." +#~ msgstr "Трапилась помилка RPC." diff --git a/po/uk/kio5_recentdocuments.po b/po/uk/kio5_recentdocuments.po new file mode 100644 index 0000000..da24735 --- /dev/null +++ b/po/uk/kio5_recentdocuments.po @@ -0,0 +1,26 @@ +# Translation of kio5_recentdocuments.po to Ukrainian +# Copyright (C) 2012 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio5_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-03-12 07:57+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "Недавні документи" diff --git a/po/uk/kio5_sftp.po b/po/uk/kio5_sftp.po new file mode 100644 index 0000000..1834ace --- /dev/null +++ b/po/uk/kio5_sftp.po @@ -0,0 +1,458 @@ +# Translation of kio5_sftp.po to Ukrainian +# Copyright (C) 2002-2018 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Eugene Onischenko , 2002, 2004, 2005. +# Andriy Rysin , 2003, 2004. +# Ivan Petrouchtchak , 2006, 2007, 2008. +# Yuri Chornoivan , 2008, 2009, 2010, 2012, 2013, 2014, 2015, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio5_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-11-12 08:36+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Помилковий або некоректний пароль" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Не вдалося розмістити зворотні виклики" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Не вдалося встановити рівень докладності журналу." + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "Не вдалося встановити дані щодо користувача журналу." + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "Не вдалося встановити зворотний виклик журналу." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Вхід до SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Скористайтеся полем імені користувача для відповіді на це питання." + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "Будь ласка, введіть ваш пароль." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "Сайт:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Не вдалося створити сеанс SSH." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "Не вдалося встановити час очікування." + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Не вдалося вимкнути алгоритм Негла." + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "Не вдалося встановити режим стискання." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "Не вдалося встановити назву вузла." + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "Не вдалося встановити номер порту." + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "Не вдалося встановити ім’я користувача." + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "Не вдалося обробити файл налаштувань." + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Відкриття SFTP-з’єднання з вузлом %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Не вдалося отримати назву типу відкритого ключа сервера" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Не вдалося створити хеш на основі відкритого ключа сервера" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Не вдалося створити відбиток для відкритого ключа сервера" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Не вдалося знайти ключ вузла %1, але існує інший тип ключа.\n" +"Зловмисник міг змінити типовий ключ сервера, щоб ваш клієнт помилково " +"вважав, що ключа не існує.\n" +"Будь ласка, зв’яжіться з адміністратором вашої системи.\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Ключ вузла сервера %1 було змінено.\n" +"Це може означати, що було вдало проведено атаку DNS SPOOFING або що було " +"одночасно змінено IP-адресу вузла і його ключ вузла.\n" +"Відбиток ключа %2, який надіслано віддаленим вузлом:\n" +" SHA256:%3\n" +"Будь ласка, зв’яжіться з адміністратором вашої системи.\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Увага: неможливо перевірити тотожність машини." + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Не вдалося встановити автентичність вузла %1.\n" +"Відбиток ключа %2: %3\n" +"Ви впевнені, що не бажаєте розірвати з’єднання?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "Спроба розпізнавання зазнала невдачі." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Помилка розпізнавання. Сервером не надіслано жодних даних щодо способів " +"розпізнавання." + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Будь ласка, введіть ім'я користувача та пароль." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Неправильні ім'я користувача або пароль" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Не вдалося надіслати запит до підсистеми SFTP. Переконайтеся, що на сервері " +"увімкнено SFTP." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Не вдалося ініціалізувати сеанс SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Успішно встановлено з'єднання до %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Не вдалося знайти ключ вузла цього сервера, але існує інший тип ключа.\n" +"Зловмисник міг змінити типовий ключ сервера, щоб ваш клієнт помилково " +"вважав, що ключа не існує.\n" +"Будь ласка, зв’яжіться з адміністратором вашої системи.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Ключ вузла сервера %1 було змінено.\n" +"Це може означати, що було вдало проведено атаку DNS SPOOFING або що було " +"одночасно змінено IP-адресу вузла і його ключ вузла.\n" +"Відбиток цього ключа, надісланий віддаленим вузлом:\n" +" %2\n" +"Будь ласка, зв’яжіться з адміністратором вашої системи.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Не вдалося встановити автентичність вузла %1.\n" +"Відбиток ключа: %2\n" +"Ви впевнені, що не бажаєте розірвати з’єднання?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "Некоректний контекст sftp" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Не вдалося змінити права доступу до\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "Не вдалося прочитати посилання: %1" + +#~ msgid "No hostname specified." +#~ msgstr "Не вказано назву вузла." + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Сталася внутрішня помилка. Будь ласка, спробуйте запит ще раз." + +#~ msgid "Please enter your username and key passphrase." +#~ msgstr "Будь ласка, введіть ім'я користувача та пароль ключа." + +#~ msgid "Warning: Host's identity changed." +#~ msgstr "Увага: ключ сервера змінився." + +#~ msgid "Connection failed." +#~ msgstr "Помилка під час з'єднання." + +#~ msgid "Connection closed by remote host." +#~ msgstr "З'єднання закрито віддаленою машиною." + +#~ msgid "unexpected SFTP error: %1" +#~ msgstr "Неочікувана помилка SFTP: %1" + +#~ msgid "SFTP version %1" +#~ msgstr "Версія SFTP %1" + +#~ msgid "Protocol error." +#~ msgstr "Помилка протоколу." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Сталася внутрішня помилка. Будь ласка, спробуйте ще раз." + +#~ msgid "" +#~ "Unknown error was encountered while copying the file to '%1'. Please try " +#~ "again." +#~ msgstr "" +#~ "При копіюванні файла в «%1» сталася невідома помилка. Будь ласка, " +#~ "спробуйте ще раз." + +#~ msgid "The remote host does not support renaming files." +#~ msgstr "Віддалений вузол не підтримує перейменування файлів." + +#~ msgid "The remote host does not support creating symbolic links." +#~ msgstr "Віддалений вузол не підтримує створення символічних посилань." + +#~ msgid "Connection closed" +#~ msgstr "З'єднання закрито" + +#~ msgid "Could not read SFTP packet" +#~ msgstr "Не вдається прочитати з сокету SFTP" + +#~ msgid "End of file." +#~ msgstr "Кінець файла." + +#~ msgid "SFTP command failed for an unknown reason." +#~ msgstr "Трапилась помилка SFTP з невідомої причини." + +#~ msgid "The SFTP server received a bad message." +#~ msgstr "Сервер SFTP отримав зіпсоване повідомлення." + +#~ msgid "You attempted an operation unsupported by the SFTP server." +#~ msgstr "Ви спробували виконати операцію, що не підтримується сервером SFTP." + +#~ msgid "Error code: %1" +#~ msgstr "Код помилки: %1" + +#~ msgid "Cannot specify a subsystem and command at the same time." +#~ msgstr "Неможливо вказувати підсистему та команду одночасно." + +#~ msgid "No options provided for ssh execution." +#~ msgstr "Не надано опцій для запуску ssh." + +#~ msgid "Failed to execute ssh process." +#~ msgstr "Не вдалося запустити процес ssh." + +#~ msgid "Error encountered while talking to ssh." +#~ msgstr "Виникла помилка при спілкуванні з ssh." + +#~ msgid "Please supply a password." +#~ msgstr "Будь ласка, надайте пароль." + +#~ msgid "Please supply the passphrase for your SSH private key." +#~ msgstr "Будь ласка, надайте пароль для вашого закритого ключа." + +#~ msgid "Authentication to %1 failed" +#~ msgstr "Автентифікація на %1 зазнала невдачі" + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified because the " +#~ "host's key is not in the \"known hosts\" file." +#~ msgstr "" +#~ "Неможливо перевірити тотожність віддаленої машини «%1» тому,що її ключа " +#~ "не має у файлі зі списком «відомих машин»." + +#~ msgid "" +#~ " Manually, add the host's key to the \"known hosts\" file or contact your " +#~ "administrator." +#~ msgstr "" +#~ " Додайте ключ машини у файл з зі списком «відомих машин» вручну, або " +#~ "зв'яжіться з вашим адміністратором." + +#~ msgid " Manually, add the host's key to %1 or contact your administrator." +#~ msgstr "" +#~ " Додайте ключ машини у %1 вручну, або зв'яжіться з вашим адміністратором." + +#~ msgid "" +#~ "The identity of the remote host '%1' could not be verified. The host's " +#~ "key fingerprint is:\n" +#~ "%2\n" +#~ "You should verify the fingerprint with the host's administrator before " +#~ "connecting.\n" +#~ "\n" +#~ "Would you like to accept the host's key and connect anyway? " +#~ msgstr "" +#~ "Неможливо перевірити тотожність віддаленої машини «%1». fingerprint " +#~ "машини:\n" +#~ "%2\n" +#~ "Адміністратору віддаленої машини слід підтвердити правильність відбитка " +#~ "ключа спочатку.\n" +#~ "\n" +#~ "Чи ви бажаєте прийняти ключ машини та з'єднатися попри все? " + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator. The key fingerprint " +#~ "is:\n" +#~ "%2\n" +#~ "Add the correct host key to \"%3\" to get rid of this message." +#~ msgstr "" +#~ "ПОПЕРЕДЖЕННЯ: Ключ віддаленої машини «%1» змінився!\n" +#~ "\n" +#~ "Або хтось прослуховує ваше з'єднання, або, можливо, адміністратор змінив " +#~ "ключ машини. В обох випадках, адміністратор віддаленої машини повинен " +#~ "підтвердити правильність відбитка ключа. Відбиток:\n" +#~ "%2\n" +#~ "Додайте правильний ключ машини у «%3», щоб позбутися цього повідомлення." + +#~ msgid "" +#~ "WARNING: The identity of the remote host '%1' has changed!\n" +#~ "\n" +#~ "Someone could be eavesdropping on your connection, or the administrator " +#~ "may have just changed the host's key. Either way, you should verify the " +#~ "host's key fingerprint with the host's administrator before connecting. " +#~ "The key fingerprint is:\n" +#~ "%2\n" +#~ "\n" +#~ "Would you like to accept the host's new key and connect anyway?" +#~ msgstr "" +#~ "ПОПЕРЕДЖЕННЯ: Ключ віддаленої машини «%1» змінився!\n" +#~ "\n" +#~ "Або хтось прослуховує ваше з'єднання, або, можливо, адміністратор змінив " +#~ "ключ машини. В обох випадках, адміністратор віддаленої машини повинен " +#~ "підтвердити правильність відбитка ключа. Відбиток:\n" +#~ "%2\n" +#~ "\n" +#~ "Чи ви бажаєте прийняти ключ машини та з'єднатися попри все?" + +#~ msgid "Host key was rejected." +#~ msgstr "Ключ машини було відкинуто." + +#~ msgid "Please enter a username and password" +#~ msgstr "Будь ласка, введіть ім'я користувача та пароль" + +#~ msgid "File does not exist." +#~ msgstr "Файл не існує." + +#~ msgid "Access is denied." +#~ msgstr "Відмовлено в доступі." diff --git a/po/uk/kio5_smb.po b/po/uk/kio5_smb.po new file mode 100644 index 0000000..4a82ead --- /dev/null +++ b/po/uk/kio5_smb.po @@ -0,0 +1,207 @@ +# Translation of kio5_smb.po to Ukrainian +# Copyright (C) 2002-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Andriy Rysin , 2002, 2003, 2006. +# Eugene Onischenko , 2004, 2005. +# Ivan Petrouchtchak , 2006, 2007. +# Yuri Chornoivan , 2009, 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio5_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-04 08:54+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.11.70\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" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" +"Існують різні варіанти розпізнавання на спільних ресурсах SMB.користувач: при розпізнаванні у межах " +"домашньої мережі достатньо імені користувача на серверікористувач@домен.com: у сучасних " +"корпоративних середовищах імена для входу до системи формуються як адреси " +"електронної поштиДОМЕН\\користувач: " +"у давніх корпоративних мережах або робочих групах може виникнути потреба у " +"додаванні префікса назви домену NetBIOS (спадок систем до Windows 2000)анонімний: можливий варіант із входом " +"із порожнім іменем користувача і паролем. Залежно від налаштувань сервера, " +"може бути запроваджено вимогу входу із непорожнім іменем користувача." + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Будь ласка, введіть реєстраційні дані для %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Будь ласка, введіть реєстраційні дані для:\n" +"Сервер = %1\n" +"Ресурс = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Невідомий тип файла, це не каталог і не файл." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Не знайдено жодної робочої групи у вашій локальній мережі. Це могло статися " +"через роботу брандмауера." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Немає носія інформації у пристрої, пов’язаному з %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Не вдається з'єднатися з вузлом для доступу до %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Помилка при з'єднанні з сервером, що відповідає за %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Ресурс на заданому сервері не знайдено" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "Помилковий дескриптор файла" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Не вдається зв'язати вказану назву з унікальним сервером. Перевірте, що в " +"мережі немає конфліктів між назвами вузлів у Windows та UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: немає доступу до вузла" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient повернув помилку, але не вказав її походження. Це може бути " +"спричинено серйозними помилками у вашій мережі, але також може означати " +"проблеми з самим libsmbclient.\n" +"Якщо ви хочете нам допомогти, будь ласка, пришліть вивід команди tcpdump для " +"мережного пристрою при спробі навігації (будьте обережні: цей вивід може " +"містити приватні дані, і, якщо ви не впевнені, що все гаразд, не відсилайте " +"його зразу, а лише при запиті розробників)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Невідома помилкова умова: [%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Під час спроби отримати доступ до %1 сталася помилка%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient зазнала помилку при створенні контексту." + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Перевірте, чи у вашій системі встановлено пакунок samba." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Помилка монтування спільного ресурсу «%1» з вузла «%2» від імені користувача " +"«%3».\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Помилка розмотування «%1».\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Невідомий пристрій на %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient зазнала помилку при ініціалізації контексту." + +#~ msgid "File does not exist: %1" +#~ msgstr "Файл не існує: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "Помилка ініціалізації libsmbclient" diff --git a/po/uk/kio5_thumbnail.po b/po/uk/kio5_thumbnail.po new file mode 100644 index 0000000..8535e40 --- /dev/null +++ b/po/uk/kio5_thumbnail.po @@ -0,0 +1,77 @@ +# Translation of kio5_thumbnail.po to Ukrainian +# Copyright (C) 2015 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kio5_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2015-07-20 13:20+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "Автоматично повертати зображення" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Не вказано тип MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Не вказано розмір, або вказано неправильний." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Не вдалося створити мініатюру для каталогу" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Не вказано додаток." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Не вдалося завантажити ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Не вдалося створити мініатюру для %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Помилка створення мініатюри." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Не вдалося записати зображення." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Помилка при долученні сегменту спільної пам'яті %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Зображення занадто велике для сегменту спільної пам'яті" diff --git a/po/wa/kfileaudiopreview5.po b/po/wa/kfileaudiopreview5.po new file mode 100644 index 0000000..8af97b3 --- /dev/null +++ b/po/wa/kfileaudiopreview5.po @@ -0,0 +1,37 @@ +# translation of kfileaudiopreview4.po to Walloon +# Ratournaedje e walon des messaedjes di KDE. +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Pablo Saratxaga , 2003, 2004, 2007. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2004-01-12 02:50+0100\n" +"Last-Translator: Pablo Saratxaga \n" +"Language-Team: Walloon \n" +"Language: wa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "Djouwer &otomaticmint" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "" + +#~ msgid "Media Player" +#~ msgstr "Djouweu multimedia" diff --git a/po/wa/kio5_activities.po b/po/wa/kio5_activities.po new file mode 100644 index 0000000..9e9aa1e --- /dev/null +++ b/po/wa/kio5_activities.po @@ -0,0 +1,86 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jean Cayron , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2010-12-17 16:59+0100\n" +"Last-Translator: Jean Cayron \n" +"Language-Team: Walloon \n" +"Language: wa\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" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "Manaedjeu di l' activité da KDE" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Djan Cayron" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jean.cayron@gmail.com" + +#, fuzzy +#~| msgid "KDE Activity Management Service" +#~ msgid "Enable activities management" +#~ msgstr "Siervice di manaedjmint di l' activité da KDE" + +#, fuzzy +#~| msgid "(c) 2010 Ivan Cukic, Sebastian Trueg" +#~ msgid "(c) 2012 Ivan Cukic" +#~ msgstr "© 2010 Ivan Cukic, Sebastian Trueg" diff --git a/po/wa/kio5_archive.po b/po/wa/kio5_archive.po new file mode 100644 index 0000000..bfbc97b --- /dev/null +++ b/po/wa/kio5_archive.po @@ -0,0 +1,39 @@ +# translation of kio_tar.po to Walon +# Ratournaedje e walon des messaedjes di KDE. +# +# Pablo Saratxaga , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2007-09-10 23:20+0200\n" +"Last-Translator: Pablo Saratxaga \n" +"Language-Team: Walloon \n" +"Language: wa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Dji n' a nén savou drovi l' fitchî, dandjureus ki c' est ene sôre di fitchî " +"nén sopoirté.\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Dji n' a nén savou drovi l' fitchî årtchive, dandjureus ki c' est ene sôre " +"di fitchî nén sopoirté.\n" +"%1" diff --git a/po/wa/kio5_bookmarks.po b/po/wa/kio5_bookmarks.po new file mode 100644 index 0000000..a90f62e --- /dev/null +++ b/po/wa/kio5_bookmarks.po @@ -0,0 +1,79 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jean Cayron , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2010-01-22 14:15+0100\n" +"Last-Translator: Jean Cayron \n" +"Language-Team: Walloon \n" +"Language: wa\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" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Raecene" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "Plaeces" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "Mwaijhe dimande : %1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "I gn a nén co d' rimåkes a håyner." + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Fitchî CSS di kio_bookmarks nén trové. Li rexhowe va esse foirt laide.\n" +"Verifyîz vost astalaedje." + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "Mes rimåkes" + +#~ msgid "My bookmarks" +#~ msgstr "Mes rimåkes" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Diswalpeu å cmince" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Djan Cayron" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jean.cayron@gmail.com" diff --git a/po/wa/kio5_fish.po b/po/wa/kio5_fish.po new file mode 100644 index 0000000..bb56aed --- /dev/null +++ b/po/wa/kio5_fish.po @@ -0,0 +1,53 @@ +# translation of kio_fish.po to Walloon +# Ratournaedje e walon des messaedjes di KDE. +# +# Pablo Saratxaga , 2007. +# Jean Cayron , 2007, 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2009-03-14 16:25+0100\n" +"Last-Translator: Jean Cayron \n" +"Language-Team: Walloon \n" +"Language: wa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "Raloyaedje..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicialijhaedje di protocole ..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "Elodjaedje locå" + +#: fish.cpp:631 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "Otorijhåcion SSH" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "Disraloyî." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Djan Cayron" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jean.cayron@gmail.com" diff --git a/po/wa/kio5_info.po b/po/wa/kio5_info.po new file mode 100644 index 0000000..5b9da6e --- /dev/null +++ b/po/wa/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jean Cayron , 2009. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-12-26 18:50+0100\n" +"Last-Translator: Jean Cayron \n" +"Language-Team: Walloon \n" +"Language: wa\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" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"Dji n' sai trover l' eplaeçmint do fitchî %1 k' ons a mezåjhe pos enonder ci " +"siervice. Waitîz l' astalaedje di vos programes s' i vos plait." diff --git a/po/wa/kio5_man.po b/po/wa/kio5_man.po new file mode 100644 index 0000000..2d3b7c5 --- /dev/null +++ b/po/wa/kio5_man.po @@ -0,0 +1,206 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jean Cayron , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2010-01-22 14:20+0100\n" +"Last-Translator: Jean Cayron \n" +"Language-Team: Walloon \n" +"Language: wa\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" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        Aroke do håyneu d' esplikêyes (man) di KDE

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "I gn a pus k' ene seule pådje d' esplikêyes (man) ki pôrént aler." + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "Comandes uzeu" + +#: kio_man.cpp:751 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Comandes uzeu" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "Houcaedjes sistinme" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "Fonccions di programaedje" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Modules Perl" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "Fonccions rantoele" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "Éndjins" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "Cognes di fitchîs" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "Djeus" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "Totes sôres" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "Manaedjmint do sistinme" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "Nawea" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "Documintåcion coinrece" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "Noû" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Indecse d' esplikêyes UNIX" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "Seccion %1" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indecse pol seccion %1 : %2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Indecse d' esplikêyes UNIX" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "Dji fwai l' indecse" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" + +#~ msgid "Open of %1 failed." +#~ msgstr "Li drovaedje di %1 a fwait berwete." + +#~ msgid "Man output" +#~ msgstr "Rexhowe des esplikêyes (man)" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Djan Cayron" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jean.cayron@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/wa/kio5_nfs.po b/po/wa/kio5_nfs.po new file mode 100644 index 0000000..a90814a --- /dev/null +++ b/po/wa/kio5_nfs.po @@ -0,0 +1,66 @@ +# translation of kio_nfs.po to Walloon +# Ratournaedje e walon des messaedjes di KDE. +# +# Pablo Saratxaga , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2007-09-10 23:20+0200\n" +"Last-Translator: Pablo Saratxaga \n" +"Language-Team: Walloon \n" +"Language: wa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "I n' a pupont d' plaece so l' éndjin" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "Sistinme di fitchîs k' on pout seulmint lére" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "Li no do fitchî est pår trop long" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Houte do cwota pol plake" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "An RPC error occurred." +#~ msgstr "I gn a-st avou ene aroke RPC." diff --git a/po/wa/kio5_sftp.po b/po/wa/kio5_sftp.po new file mode 100644 index 0000000..fdc5430 --- /dev/null +++ b/po/wa/kio5_sftp.po @@ -0,0 +1,314 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jean Cayron , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2010-01-22 14:27+0100\n" +"Last-Translator: Jean Cayron \n" +"Language-Team: Walloon \n" +"Language: wa\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" + +#: kio_sftp.cpp:224 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Måva no d' uzeu ou scret" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:292 +#, fuzzy, kde-format +#| msgid "Could not initialize the SFTP session." +msgid "Could not set log userdata." +msgstr "Dji n' a savou inicialijhî l' session SFTP." + +#: kio_sftp.cpp:297 +#, fuzzy, kde-format +#| msgid "Could not initialize the SFTP session." +msgid "Could not set log callback." +msgstr "Dji n' a savou inicialijhî l' session SFTP." + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "Login SFTP" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Siervoz do tchamp d' intrêye no d' uzeu po responde a cisse kesse." + +#: kio_sftp.cpp:396 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "Intrez vosse no d' uzeu et vosse sicret, s' i vs plait." + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "waibe :" + +#: kio_sftp.cpp:588 +#, fuzzy, kde-format +#| msgid "Could not initialize the SFTP session." +msgid "Could not create a new SSH session." +msgstr "Dji n' a savou inicialijhî l' session SFTP." + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "" + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "" + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, fuzzy, kde-format +#| msgid "Could not initialize the SFTP session." +msgid "Could not set compression." +msgstr "Dji n' a savou inicialijhî l' session SFTP." + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "" + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:666 +#, fuzzy, kde-kuit-format +#| msgid "Opening SFTP connection to host %1:%2" +msgid "Opening SFTP connection to host %1:%2" +msgstr "Dji drove li raloyaedje SFTP å lodjoe %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:772 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for this server was not found, but another type of key " +#| "exists.\n" +#| "An attacker might change the default server key to confuse your client " +#| "into thinking the key does not exist.\n" +#| "Please contact your system administrator.\n" +#| "%1" +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"Dji n' a nén trové l' clé do lodjoe po c' sierveu ci mins ene ôte sôre di " +"clé egzistêye.\n" +"En atakeu pôreut candjî l' prémetowe clé do sierveu po discatibuler vosse " +"cliyint eyet pinser kel clé n' egzistêye nén.\n" +"Houkîz l' manaedjeu d' vosse sistinme s' i vs plait.\n" +"%1" + +#: kio_sftp.cpp:784 +#, fuzzy, kde-format +#| msgid "" +#| "The host key for the server %1 has changed.\n" +#| "This could either mean that DNS SPOOFING is happening or the IP address " +#| "for the host and its host key have changed at the same time.\n" +#| "The fingerprint for the key sent by the remote host is:\n" +#| " %2\n" +#| "Please contact your system administrator.\n" +#| "%3" +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"Li clé do lodjoe pol sierveu %1 a candjî.\n" +"Ça pôreut soeye-t i voleur dire k' on DNS SPOOFING si passe ou k' l' adresse " +"IP pol lodjoe eyet s' clé d' lodjoe ont candjî sol minme tins.\n" +"Li trace di doet pol clé evoyeye pal lodjoe då lon est:\n" +" %2\n" +"Houkîz l' manaedjeu d' vosse sistinme s' i vs plait.\n" +"%3" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Adviertixhmint : dji n' sai verifyî l' idintité do lodjoe." + +#: kio_sftp.cpp:801 +#, fuzzy, kde-format +#| msgid "" +#| "The authenticity of host %1 cannot be established.\n" +#| "The key fingerprint is: %2\n" +#| "Are you sure you want to continue connecting?" +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Dji n' sai nén dire sel lodjoe %1 est otintike.\n" +"Li trace di doet del clé est: %2\n" +"Estoz seur ki vs voloz continouwer a vs raloyî?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "L' otintifiaedje a fwait berwete." + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "Intrez vosse no d' uzeu et vosse sicret, s' i vs plait." + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "Måva no d' uzeu ou scret" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Dji n' sai dmander l' sistinme efant SFTP. Waitîz bén k' SFTP est en alaedje " +"sol sierveu." + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Dji n' a savou inicialijhî l' session SFTP." + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Raloyî comifåt a %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"Dji n' a nén trové l' clé do lodjoe po c' sierveu ci mins ene ôte sôre di " +"clé egzistêye.\n" +"En atakeu pôreut candjî l' prémetowe clé do sierveu po discatibuler vosse " +"cliyint eyet pinser kel clé n' egzistêye nén.\n" +"Houkîz l' manaedjeu d' vosse sistinme s' i vs plait.\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"Li clé do lodjoe pol sierveu %1 a candjî.\n" +"Ça pôreut soeye-t i voleur dire k' on DNS SPOOFING si passe ou k' l' adresse " +"IP pol lodjoe eyet s' clé d' lodjoe ont candjî sol minme tins.\n" +"Li trace di doet pol clé evoyeye pal lodjoe då lon est:\n" +" %2\n" +"Houkîz l' manaedjeu d' vosse sistinme s' i vs plait.\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"Dji n' sai nén dire sel lodjoe %1 est otintike.\n" +"Li trace di doet del clé est: %2\n" +"Estoz seur ki vs voloz continouwer a vs raloyî?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Dji n' a seu candjî les permissions po\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "" + +#, fuzzy +#~| msgid "No hostname specified" +#~ msgid "No hostname specified." +#~ msgstr "Vos n' avoz nén dné di no d' lodjoe" diff --git a/po/wa/kio5_smb.po b/po/wa/kio5_smb.po new file mode 100644 index 0000000..999e584 --- /dev/null +++ b/po/wa/kio5_smb.po @@ -0,0 +1,193 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jean Cayron , 2010, 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2012-12-21 22:57+0100\n" +"Last-Translator: Jean Cayron \n" +"Language-Team: Walloon \n" +"Language: wa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "" +"Tapez les informåcions d' otintifiaedje po %1, s' i vs plait" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Tapez les informåcions d' otintifiaedje po :\n" +"Sierveu = %1\n" +"Pårtaedje = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1 :\n" +"Sôre di fitchî nén cnoxhowe, ni come ridant ni come fitchî." + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Dji n' trove nou groupe di travaye e vosse rantoele coinrece. C' est motoit " +"a cåze d' on côpe-feu e-n alaedje." + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "Nou media e l' éndjin po %1" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Dji n' a savou m' raloyî å lodjoe po %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Åk n' a nén stî come dji houkive li sierveu responsåve po %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Dji n' a savou trover l' pårtaedje sol sierveu diné" + +#: kio_smb_browse.cpp:306 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "MWAIS discrijheu di fitchî" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"Dji n' a savou rezoude li no dné viè on seu sierveu. Waitîz ki vosse " +"rantoele est bén aponteye sins nol afrontmint inte les nos eployîs pas " +"Windows eyet l' rezolucion di no UNIX." + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient a rapoirté ene aroke mins n' a nén specifyî çou k' est l' " +"problinme. Çoula pôreut mostrer k' i gn a on gråve problinme avou vosse " +"rantoele - mins ça pôreut ossu dire k' i gn a on problinme avou " +"libsmbclient.\n" +"Si vs nos vloz copler, dinez s' i vs plait on tcpdump di l' eterface " +"rantoele sol tins ki vs sayîz d' foyter (vos dvoz saveur k' i pôreut î aveur " +"des dnêyes privêyes, d' abôrd nel postez nén si vos n' estoz nén seur å " +"dfwait d' ça - vos l' poloz evoyî d' ene façon privêye ås diswalpeus s' i l' " +"dimandèt)" + +#: kio_smb_browse.cpp:337 +#, fuzzy, kde-format +#| msgid "Unknown error condition in stat: %1" +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Condicion d' aroke nén cnoxhowe e statistike : %1" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient a fwait berwete tot-z ahivant l' contecse" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Waitîz bén kel pacaedje samba est astalé comifåt so vosse sistinme." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Li montaedje do pårtaedje « %1 » do lodjoe « %2 » pa l' uzeu « %3 » a fwait " +"berwete.\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Li dismontaedje do pont d' montaedje « %1 » a fwait berwete.\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient a fwait berwete tot-z inicialijhant l' contecse" + +#~ msgid "File does not exist: %1" +#~ msgstr "Li fitchî n' egzistêye nén : %1" diff --git a/po/wa/kio5_thumbnail.po b/po/wa/kio5_thumbnail.po new file mode 100644 index 0000000..b182b54 --- /dev/null +++ b/po/wa/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jean Cayron , 2009. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2009-12-26 18:49+0100\n" +"Last-Translator: Jean Cayron \n" +"Language-Team: Walloon \n" +"Language: wa\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" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "I gn a nole sôre MIME di specifieye." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "I gn a nole grandeu di specifieye oudonbén elle est nén valåbe." + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Dji n' sai fé d' prévoeyaedje pos on ridant" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "Nou tchôke-divins d' sipecifyî." + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Dji n' sai tcherdjî ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Dji n' sai fé d' prévoeyaedje po %1" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "L' ahivaedje d' on prévoeyaedje a fwait berwete." + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "Dji n' a nén sepou scrire l' imådje." + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "L' ataetchaedje do segmint d' memwere pårtaedjeye %1 a fwait berwete" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "L' imådje est trop grande pol segmint di memwere pårtaedjeye" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "Djan Cayron" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "jean.cayron@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/zh_CN/kfileaudiopreview5.po b/po/zh_CN/kfileaudiopreview5.po new file mode 100644 index 0000000..f74f9d7 --- /dev/null +++ b/po/zh_CN/kfileaudiopreview5.po @@ -0,0 +1,37 @@ +# translation of kfileaudiopreview4.po to Chinese Simplified +# Copyright (C) 2007 Free Software Foundation, Inc. +# +# Funda Wang , 2003 +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kfileaudiopreview5.pot\n" +"X-Crowdin-File-ID: 3439\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "自动播放(&A)" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "开始播放" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "暂停播放" diff --git a/po/zh_CN/kio5_activities.po b/po/zh_CN/kio5_activities.po new file mode 100644 index 0000000..2359775 --- /dev/null +++ b/po/zh_CN/kio5_activities.po @@ -0,0 +1,73 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Weng Xuetian , 2013, 2014, 2015, 2016. +# Feng Chao , 2012, 2014. +# Xuetian Weng , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_activities.pot\n" +"X-Crowdin-File-ID: 3443\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "活动" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "正在载入..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "活动管理器未运行。" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "连接到当前活动" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "取消到当前活动的连接" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "连接到:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "取消连接:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "活动" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "当前活动" diff --git a/po/zh_CN/kio5_archive.po b/po/zh_CN/kio5_archive.po new file mode 100644 index 0000000..97f42e3 --- /dev/null +++ b/po/zh_CN/kio5_archive.po @@ -0,0 +1,40 @@ +# +# Funda Wang , 2005. +# Feng Chao , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_archive.pot\n" +"X-Crowdin-File-ID: 3502\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"无法打开文件,可能是因为不支持文件的格式。\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"无法打开存档文件,可能是因为不支持所用格式。\n" +"%1" diff --git a/po/zh_CN/kio5_bookmarks.po b/po/zh_CN/kio5_bookmarks.po new file mode 100644 index 0000000..a068ab9 --- /dev/null +++ b/po/zh_CN/kio5_bookmarks.po @@ -0,0 +1,67 @@ +# translation of kio_bookmarks.po to 简体中文 +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Ni Hui , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_bookmarks.pot\n" +"X-Crowdin-File-ID: 3504\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "根" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "位置" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "错误请求:%1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "还没有可显示的书签。" + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"未找到 kio_bookmarks CSS 文件。输出将会很难看。\n" +"检查您的安装。" + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "我的书签" diff --git a/po/zh_CN/kio5_fish.po b/po/zh_CN/kio5_fish.po new file mode 100644 index 0000000..f67df58 --- /dev/null +++ b/po/zh_CN/kio5_fish.po @@ -0,0 +1,48 @@ +# translation of kio_fish.po to 简体中文 +# Copyright (C) 2003, 2009 Free Software Foundation, Inc. +# +# Sun Fang , 2003. +# Ni Hui , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_fish.pot\n" +"X-Crowdin-File-ID: 3506\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "正在连接..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "正在初始化协议..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "本地登录" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH 认证" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "已断开连接。" diff --git a/po/zh_CN/kio5_info.po b/po/zh_CN/kio5_info.po new file mode 100644 index 0000000..84ff1e9 --- /dev/null +++ b/po/zh_CN/kio5_info.po @@ -0,0 +1,33 @@ +# translation of kio_info.po to 简体中文 +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Ni Hui , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_info.pot\n" +"X-Crowdin-File-ID: 3508\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"无法定位运行此服务所需的文件 %1。请检查您的软件安装。" diff --git a/po/zh_CN/kio5_man.po b/po/zh_CN/kio5_man.po new file mode 100644 index 0000000..97fb51f --- /dev/null +++ b/po/zh_CN/kio5_man.po @@ -0,0 +1,192 @@ +# translation of kio_man.po to 简体中文 +# Copyright (C) 2003, 2008 Free Software Foundation, Inc. +# +# +# Li Zongliang , 2001. +# Xiong Jiang , 2003. +# Ni Hui , 2008, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_man.pot\n" +"X-Crowdin-File-ID: 3510\n" + +#: kio_man.cpp:477 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" + +#: kio_man.cpp:649 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "" + +#: kio_man.cpp:665 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"请注意:如果您正在阅读非英语的手册页,那么该手册页很可能包含错误或已过时。如" +"果您怀有疑问的话,请以英文版本为准。" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "头文件" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "头文件 (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "用户命令" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "用户命令 (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "系统调用" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "子例程" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl 模块" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "网络函数" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "设备" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "文件格式" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "游戏" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "其它" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "系统管理" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "内核" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "本地文档" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "新增部分" + +#: kio_man.cpp:794 +#, kde-format +msgid "Main Manual Page Index" +msgstr "" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "节 %1" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Index for section %1: %2" +msgstr "" + +#: kio_man.cpp:1134 +#, kde-format +msgid "Manual Page Index" +msgstr "" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "生成索引" + +#: kio_man.cpp:1411 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" diff --git a/po/zh_CN/kio5_mtp.po b/po/zh_CN/kio5_mtp.po new file mode 100644 index 0000000..083e896 --- /dev/null +++ b/po/zh_CN/kio5_mtp.po @@ -0,0 +1,35 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Weng Xuetian , 2014, 2017. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_mtp.pot\n" +"X-Crowdin-File-ID: 3513\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"未找到存储设备。请确认您的设备已经解锁并且在 USB 连接设置中启用了 MTP。" + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "无法复制/移动设备自己的文件" diff --git a/po/zh_CN/kio5_network.po b/po/zh_CN/kio5_network.po new file mode 100644 index 0000000..8cf4f2e --- /dev/null +++ b/po/zh_CN/kio5_network.po @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_network.pot\n" +"X-Crowdin-File-ID: 12086\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "网络" diff --git a/po/zh_CN/kio5_nfs.po b/po/zh_CN/kio5_nfs.po new file mode 100644 index 0000000..ac45f3e --- /dev/null +++ b/po/zh_CN/kio5_nfs.po @@ -0,0 +1,67 @@ +# Copyright (C) 2014 Free Software Foundation, Inc. +# +# Mai Haohui , 2001. +# Xuetian Weng , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_nfs.pot\n" +"X-Crowdin-File-ID: 3514\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1:不支持的 NFS 版本" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC 错误 %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "驱动器上没有可用空间" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "只读文件系统" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "文件名太长" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "超过了磁盘配额" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS 错误 %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "挂载 %1 失败" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "位置目标" diff --git a/po/zh_CN/kio5_recentdocuments.po b/po/zh_CN/kio5_recentdocuments.po new file mode 100644 index 0000000..849e722 --- /dev/null +++ b/po/zh_CN/kio5_recentdocuments.po @@ -0,0 +1,27 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# FengChao , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_recentdocuments.pot\n" +"X-Crowdin-File-ID: 3516\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "最近的文档" diff --git a/po/zh_CN/kio5_sftp.po b/po/zh_CN/kio5_sftp.po new file mode 100644 index 0000000..cbd67a7 --- /dev/null +++ b/po/zh_CN/kio5_sftp.po @@ -0,0 +1,282 @@ +# translation of kio_sftp.po to 简体中文 +# Copyright (C) 2002, 2009 Free Software Foundation, Inc. +# +# Xiong Jiang , 2002. +# Mai Hao Hui , 2001,2003,2004. +# Ni Hui , 2009, 2012. +# Lie Ex , 2009-2010. +# Weng Xuetian , 2013, 2014, 2017. +# FengChao , 2013. +# Feng Chao , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_sftp.pot\n" +"X-Crowdin-File-ID: 3518\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "密码不正确或无效" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "无法分配回调空间" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "无法设定日志级别。" + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "无法设定日志用户数据。" + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "无法设置日志回调。" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP 登录" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "使用此用户名输入字段来回答响应。" + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "请输入您的密码。" + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "站点:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "无法新建 SSH 会话" + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "无法设定超时。" + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "无法禁用Nagle算法" + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "无法设定压缩。" + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "无法设定主机。" + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "无法设定端口。" + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "无法设定用户名。" + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "无法解析配置文件。" + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "正在打开到主机 %1:%2 的 SFTP 连接" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "无法获取服务器公钥类型名称" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "无法从服务器公钥创建散列值" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "无法为服务器公钥创建指纹" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"找不到此服务器的 %1 主机密钥,但发现有其它类型的密钥。\n" +"可能是因为攻击者篡改了服务器的默认密钥,诱使客户端以为服务器密钥不存在。\n" +"请联系您的系统管理员。\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"服务器 %1 的主机密钥已被篡改。\n" +"这可能意味着发生了 DNS 欺骗,或是此主机的 IP 地址和主机密钥同时被修改。\n" +"远程主机发送的 %2 密钥指纹是:\n" +" SHA256:%3\n" +"请联系您的系统管理员。\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "警告:不能检验主机的身份。" + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"无法和主机 %1 建立验证。\n" +"%2 密钥指纹是:%3\n" +"您确认要继续连接吗?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "认证失败。" + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "认证失败。服务器未发送任何认证方式" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "请输入您的用户名和密码。" + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "用户名或密码不正确" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "无法请求 SFTP 子系统。请确认服务器上启用了 SFTP。" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "无法初始化 SFTP 会话。" + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "成功连接到 %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"找不到此服务器的主机密钥,但发现有其它类型的密钥。\n" +"可能是因为攻击者篡改了服务器的默认密钥,诱使客户端以为服务器密钥不存在。\n" +"请联系您的系统管理员。\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"服务器 %1 的主机密钥已被篡改。\n" +"这可能意味着发生了 DNS 欺骗,或是此主机的 IP 地址和主机密钥同时被修改。\n" +"远程主机发送的密钥指纹是:\n" +" %2\n" +"请联系您的系统管理员。\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"无法和主机 %1 建立验证。\n" +"密钥指纹是:%2\n" +"您确认要继续连接吗?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "无效的 SFTP 上下文" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "无法更改 %1 的权限" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "无法读取链接:%1" diff --git a/po/zh_CN/kio5_smb.po b/po/zh_CN/kio5_smb.po new file mode 100644 index 0000000..9118f3d --- /dev/null +++ b/po/zh_CN/kio5_smb.po @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# Mai Haohui , 2001, 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_smb.pot\n" +"X-Crowdin-File-ID: 3521\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "请输入 %1 的身份验证信息" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"请输入验证信息:\n" +"服务器 = %1\n" +"共享 = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"不是目录或文件,未知的文件类型。" + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "无法在您的局域网中找到任何工作组。可能是防火墙配置错误。" + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 的设备中没有介质" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "无法连接到主机 %1" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "连接到 %1 的服务器时出错" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "在给定的服务器上没有找到共享" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "无效的文件描述符" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"给出的名称无法解析为唯一的服务器。请确定您的网络已经设置正确,而且在 Windows " +"和 UNIX 名称混合解析的情况下没有命名冲突。" + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1: 主机不可达" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient 报告了错误,但是没有指定出了什么问题。这可能是您网络的严重问题 " +"- 但也可能是 libsmbclient 自身的问题。\n" +"如果您想要帮助我们,请提供您在试图浏览时网络接口的 tcpdump(请注意,其中可能包" +"含私人书,所以在您不太确定的情况下请不要投递一信息 - 如果我们的开发者请求您提" +"供这一信息的话,您可以私下里发给他们)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "尝试访问 %1 时出错%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient 无法创建环境" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"请确认 samba 软件包在您的系统上已经正确安装。" + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"用户“%3”挂载主机“%2”上的共享“%1”失败。\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"卸下挂载点“%1”失败。\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "未知设备 @ %1" diff --git a/po/zh_CN/kio5_thumbnail.po b/po/zh_CN/kio5_thumbnail.po new file mode 100644 index 0000000..583a705 --- /dev/null +++ b/po/zh_CN/kio5_thumbnail.po @@ -0,0 +1,79 @@ +# translation of kio_thumbnail.po to 简体中文 +# +# Funda Wang , 2005. +# Ni Hui , 2009. +# Feng Chao , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2020-11-10 15:04\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kio-extras/kio5_thumbnail.pot\n" +"X-Crowdin-File-ID: 3522\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "自动旋转图像" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "未指定任何 MIME 类型。" + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "未指定大小或指定了无效的大小。" + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "无法创建目录的缩略图" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "未指定插件。" + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "无法装入缩略图创建器 %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "无法创建 %1 的缩略图" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "创建缩略图失败。" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "无法写入图像。" + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "附加到共享内存段 %1 失败" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "图像太大,共享内存段装不下" diff --git a/po/zh_TW/kfileaudiopreview5.po b/po/zh_TW/kfileaudiopreview5.po new file mode 100644 index 0000000..8f36f3d --- /dev/null +++ b/po/zh_TW/kfileaudiopreview5.po @@ -0,0 +1,33 @@ +# translation of kfileaudiopreview4.po to Traditional Chinese +# +# Frank Weng (a.k.a. Franklin) , 2006, 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2009-04-13 14:10+0800\n" +"Last-Translator: Frank Weng (a.k.a. Franklin) \n" +"Language-Team: Chinese Traditional \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kfileaudiopreview.cpp:81 +#, kde-format +msgid "Play &automatically" +msgstr "自動播放(&A)" + +#: mediacontrols_p.h:51 +#, kde-format +msgid "start playback" +msgstr "開始播放" + +#: mediacontrols_p.h:56 +#, kde-format +msgid "pause playback" +msgstr "暫停播放" diff --git a/po/zh_TW/kio5_activities.po b/po/zh_TW/kio5_activities.po new file mode 100644 index 0000000..85ab7f6 --- /dev/null +++ b/po/zh_TW/kio5_activities.po @@ -0,0 +1,67 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Franklin Weng , 2012, 2013, 2014, 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2015-09-02 15:34+0800\n" +"Last-Translator: Franklin\n" +"Language-Team: Chinese Traditional \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 1.5\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:101 KioActivities.cpp:308 +#, kde-format +msgid "Activities" +msgstr "活動" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:104 +#, kde-format +msgid "Loading..." +msgstr "載入中..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:124 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "活動管理員並未執行。" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:67 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:139 +#, kde-format +msgid "Link to the current activity" +msgstr "連結到目前的活動" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:70 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:144 +#, kde-format +msgid "Unlink from the current activity" +msgstr "取消與目前的活動的連結" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:73 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:148 +#, kde-format +msgid "Link to:" +msgstr "連結到:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:78 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:156 +#, kde-format +msgid "Unlink from:" +msgstr "取消連結:" + +#: KioActivities.cpp:108 KioActivities.cpp:231 +#, kde-format +msgid "Activity" +msgstr "活動" + +#: KioActivities.cpp:230 +#, kde-format +msgid "Current activity" +msgstr "目前活動" diff --git a/po/zh_TW/kio5_archive.po b/po/zh_TW/kio5_archive.po new file mode 100644 index 0000000..8c85f57 --- /dev/null +++ b/po/zh_TW/kio5_archive.po @@ -0,0 +1,37 @@ +# translation of kio_tar.po to Traditional Chinese +# Frank Weng (a.k.a. Franklin) , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2006-01-20 15:35+0800\n" +"Last-Translator: Frank Weng (a.k.a. Franklin) \n" +"Language-Team: Traditional Chinese \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_archivebase.cpp:283 kio_archivebase.cpp:377 kio_archivebase.cpp:464 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"無法開啟檔案,也許是檔案格式不支援。\n" +"%1" + +#: kio_archivebase.cpp:515 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"無法開啟檔案,也許是檔案格式不支援。\n" +"%1" diff --git a/po/zh_TW/kio5_bookmarks.po b/po/zh_TW/kio5_bookmarks.po new file mode 100644 index 0000000..44276af --- /dev/null +++ b/po/zh_TW/kio5_bookmarks.po @@ -0,0 +1,63 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Frank Weng (a.k.a. Franklin) , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-31 02:20+0100\n" +"PO-Revision-Date: 2008-11-21 08:19+0800\n" +"Last-Translator: Frank Weng (a.k.a. Franklin) \n" +"Language-Team: Chinese Traditional \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_bookmarks.cpp:87 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:120 +#, kde-format +msgid "Places" +msgstr "地方" + +#: kio_bookmarks.cpp:193 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:202 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:209 +#, kde-format +msgid "Wrong request: %1" +msgstr "錯誤的請求:%1" + +#: kio_bookmarks_html.cpp:97 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "尚無書籤可顯示。" + +#: kio_bookmarks_html.cpp:136 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"找不到 kio_bookmarks CSS 檔。輸出會看起來很醜。\n" +"請檢查您的安裝。" + +#: kio_bookmarks_html.cpp:145 +#, kde-format +msgid "My Bookmarks" +msgstr "我的書籤" diff --git a/po/zh_TW/kio5_fish.po b/po/zh_TW/kio5_fish.po new file mode 100644 index 0000000..6cc2159 --- /dev/null +++ b/po/zh_TW/kio5_fish.po @@ -0,0 +1,45 @@ +# translation of kio_fish.po to Chinese (traditional) +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Keng-Tso Ou , 2003. +# Frank Weng (a.k.a. Franklin) , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2012-09-19 08:42+0800\n" +"Last-Translator: \n" +"Language-Team: Chinese Traditional \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"dot tw>\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fish.cpp:291 +#, kde-format +msgid "Connecting..." +msgstr "連線中..." + +#: fish.cpp:593 +#, kde-format +msgid "Initiating protocol..." +msgstr "初始化通訊協定中..." + +#: fish.cpp:629 +#, kde-format +msgid "Local Login" +msgstr "本機登入" + +#: fish.cpp:631 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH 認證" + +#: fish.cpp:761 +#, kde-format +msgid "Disconnected." +msgstr "已離線。" diff --git a/po/zh_TW/kio5_info.po b/po/zh_TW/kio5_info.po new file mode 100644 index 0000000..a6ac286 --- /dev/null +++ b/po/zh_TW/kio5_info.po @@ -0,0 +1,29 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Frank Weng (a.k.a. Franklin) , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-08-08 02:15+0200\n" +"PO-Revision-Date: 2009-06-05 10:24+0800\n" +"Last-Translator: Frank Weng (a.k.a. Franklin) \n" +"Language-Team: Chinese Traditional \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: info.cc:47 +#, kde-format +msgid "" +"\n" +"Unable to locate file %1 which is necessary to run this service. Please " +"check your software installation." +msgstr "" +"\n" +"無法找到執行此服務需要的檔案 %1。請檢查您的安裝。" diff --git a/po/zh_TW/kio5_man.po b/po/zh_TW/kio5_man.po new file mode 100644 index 0000000..7338755 --- /dev/null +++ b/po/zh_TW/kio5_man.po @@ -0,0 +1,221 @@ +# translation of kio_man.po to Chinese Traditional +# Traditional Chinese Translation of kio_man. +# Copyright (C) 2002, 2007, 2008 Free Software Foundation, Inc. +# +# Chen Yang , 2002. +# Kenduest Lee , 2002. +# Frank Weng (a.k.a. Franklin) , 2007, 2008. +# Franklin Weng , 2007, 2008, 2012. +# pan93412 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-07-24 22:59+0800\n" +"Last-Translator: pan93412 \n" +"Language-Team: Chinese \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 19.07.80\n" + +#: kio_man.cpp:477 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "No man page matching to %1 found.

        Check that you have not " +#| "mistyped the name of the page that you want.
        Check that you have " +#| "typed the name using the correct upper and lower case characters.
        If " +#| "everything looks correct, then you may need to improve the search path " +#| "for man pages; either using the environment variable MANPATH or using a " +#| "matching file in the /etc directory." +msgctxt "@info" +msgid "" +"No man page matching %1 could be found.Check " +"that you have not mistyped the name of the page, and note that man page " +"names are case sensitive.If the name is correct, then you may need " +"to extend the search path for man pages, either using the MANPATH environment variable or a configuration file in the /etc directory." +msgstr "" +"找不到符合 %1 的 man page。

        請檢查您是否打錯您所要頁面的名稱。" +"
        請注意您必須確認大寫與小寫字母!
        如果一切看來都正確,可能您得設定" +"一個更好的 man page 搜尋路徑,可用 MANPATH 環境變數或在 /etc 目錄中符合的檔案" +"來設定。" + +#: kio_man.cpp:523 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The man page %1 was found, but it could not be read or " +"parsed." +msgstr "" + +#: kio_man.cpp:594 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "The specified man page referenced another page '%1',
        but the " +#| "referenced page '%2' could not be found." +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "指定的 man 頁面參考到另一個頁面「%1」,
        但找不到「%2」參考頁面。" + +#: kio_man.cpp:649 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

        " +msgid "Manual Page Viewer Error" +msgstr "

        KDE Man 檢視器錯誤

        " + +#: kio_man.cpp:665 +#, fuzzy, kde-format +#| msgid "There is more than one matching man page." +msgid "There is more than one matching man page:" +msgstr "符合的 man page 不只一項。" + +#: kio_man.cpp:665 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:677 +#, kde-format +msgid "" +"Note: if you read a man page in your language, be aware it can contain some " +"mistakes or be obsolete. In case of doubt, you should have a look at the " +"English version." +msgstr "" +"注意:如果您以您的語言來閱讀 man page,請小心它可能包含一些錯誤和缺漏。如果對" +"此有疑慮,您應該使用英語版本。" + +#: kio_man.cpp:748 +#, kde-format +msgid "Header files" +msgstr "標頭檔" + +#: kio_man.cpp:749 +#, kde-format +msgid "Header files (POSIX)" +msgstr "標頭檔 (POSIX)" + +#: kio_man.cpp:750 +#, kde-format +msgid "User Commands" +msgstr "使用者命令" + +#: kio_man.cpp:751 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "使用者命令 (POSIX)" + +#: kio_man.cpp:752 +#, kde-format +msgid "System Calls" +msgstr "系統呼叫" + +#: kio_man.cpp:753 +#, kde-format +msgid "Subroutines" +msgstr "函式呼叫" + +#: kio_man.cpp:754 +#, kde-format +msgid "Perl Modules" +msgstr "Perl 模組" + +#: kio_man.cpp:755 +#, kde-format +msgid "Network Functions" +msgstr "網路功能" + +#: kio_man.cpp:756 +#, kde-format +msgid "Devices" +msgstr "裝置" + +#: kio_man.cpp:757 +#, kde-format +msgid "File Formats" +msgstr "檔案格式" + +#: kio_man.cpp:758 +#, kde-format +msgid "Games" +msgstr "遊戲" + +#: kio_man.cpp:759 +#, kde-format +msgid "Miscellaneous" +msgstr "雜項" + +#: kio_man.cpp:760 +#, kde-format +msgid "System Administration" +msgstr "系統管理" + +#: kio_man.cpp:761 +#, kde-format +msgid "Kernel" +msgstr "核心" + +#: kio_man.cpp:762 +#, kde-format +msgid "Local Documentation" +msgstr "本地端文件" + +#: kio_man.cpp:763 +#, kde-format +msgid "New" +msgstr "新項目" + +#: kio_man.cpp:794 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX 手冊索引" + +#: kio_man.cpp:819 +#, kde-format +msgid "Section %1" +msgstr "第 %1 區" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "章節索引 %1:%2" + +#: kio_man.cpp:1134 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX 手冊索引" + +#: kio_man.cpp:1144 +#, kde-format +msgid "Generating Index" +msgstr "產生索引中" + +#: kio_man.cpp:1411 +#, fuzzy, kde-kuit-format +#| msgid "" +#| "Could not find the sgml2roff program on your system. Please install it, " +#| "if necessary, and extend the search path by adjusting the environment " +#| "variable PATH before starting KDE." +msgctxt "@info" +msgid "" +"Could not find the sgml2roff program on your system. " +"Please install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"抱歉,您的系統並未安裝 sgm2roff。請確認您有正確安裝上該程式,並確認 PATH 環境" +"變數內能夠找到該程式項目。" + +#~ msgid "Open of %1 failed." +#~ msgstr "開啟 %1 失敗。" + +#~ msgid "Man output" +#~ msgstr "Man 輸出" diff --git a/po/zh_TW/kio5_mtp.po b/po/zh_TW/kio5_mtp.po new file mode 100644 index 0000000..5706af0 --- /dev/null +++ b/po/zh_TW/kio5_mtp.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Franklin, 2015. +# Jeff Huang , 2016. +# pan93412 , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-04-04 03:36+0200\n" +"PO-Revision-Date: 2019-02-16 21:24+0800\n" +"Last-Translator: pan93412 \n" +"Language-Team: Chinese \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 18.12.2\n" + +#: kio_mtp.cpp:223 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"找不到儲存媒體。請確定您的裝置已解鎖,並已在其 USB 連線設定中啟用 MTP。" + +#: kio_mtp.cpp:526 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "無法複製或移動檔案至裝置本身" diff --git a/po/zh_TW/kio5_network.po b/po/zh_TW/kio5_network.po new file mode 100644 index 0000000..4353e77 --- /dev/null +++ b/po/zh_TW/kio5_network.po @@ -0,0 +1,26 @@ +# Chinese translations for kio-extras package +# kio-extras 套件的正體中文翻譯. +# Copyright (C) 2019 This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Automatically generated, 2019. +# pan93412 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-10-11 02:23+0200\n" +"PO-Revision-Date: 2019-12-05 00:37+0800\n" +"Last-Translator: pan93412 \n" +"Language-Team: Chinese \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 19.11.90\n" + +#: ioslave/networkslave.cpp:270 +#, kde-format +msgid "Network" +msgstr "網路" diff --git a/po/zh_TW/kio5_nfs.po b/po/zh_TW/kio5_nfs.po new file mode 100644 index 0000000..23f0061 --- /dev/null +++ b/po/zh_TW/kio5_nfs.po @@ -0,0 +1,63 @@ +# translation of desktop_kdebase.po to Chinese Traditional +# Copyright (C) 2001-2002, 2006, 2007, 2008 Free Software Foundation, Inc. +# +# Frank Weng (a.k.a. Franklin) , 2008, 2014. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2014-10-29 17:01+0800\n" +"Last-Translator: Franklin\n" +"Language-Team: Chinese Traditional \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 1.5\n" + +#: kio_nfs.cpp:131 +#, kde-format +msgid "%1: Unsupported NFS version" +msgstr "%1:未支援的 NFS 版本" + +#: kio_nfs.cpp:654 +#, kde-format +msgid "RPC error %1" +msgstr "RPC 錯誤 %1" + +#: kio_nfs.cpp:697 +#, kde-format +msgid "No space left on device" +msgstr "在設備上沒有剩餘空間" + +#: kio_nfs.cpp:700 +#, kde-format +msgid "Read only file system" +msgstr "唯讀的檔案系統" + +#: kio_nfs.cpp:703 +#, kde-format +msgid "Filename too long" +msgstr "檔名太長" + +#: kio_nfs.cpp:710 +#, kde-format +msgid "Disk quota exceeded" +msgstr "硬碟 quota 滿了" + +#: kio_nfs.cpp:716 +#, kde-format +msgid "NFS error %1 - %2" +msgstr "NFS 錯誤 %1 - %2" + +#: nfsv2.cpp:260 nfsv3.cpp:275 +#, kde-format +msgid "Failed to mount %1" +msgstr "掛載失敗 %1" + +#: nfsv2.cpp:431 nfsv2.cpp:492 nfsv3.cpp:447 nfsv3.cpp:612 +#, kde-format +msgid "Unknown target" +msgstr "未知的目標" diff --git a/po/zh_TW/kio5_recentdocuments.po b/po/zh_TW/kio5_recentdocuments.po new file mode 100644 index 0000000..2a0c626 --- /dev/null +++ b/po/zh_TW/kio5_recentdocuments.po @@ -0,0 +1,23 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Franklin Weng , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:10+0200\n" +"PO-Revision-Date: 2012-04-16 18:29+0800\n" +"Last-Translator: Franklin Weng \n" +"Language-Team: Chinese Traditional \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: recentdocuments.cpp:149 +#, kde-format +msgid "Recent Documents" +msgstr "最近的文件" diff --git a/po/zh_TW/kio5_sftp.po b/po/zh_TW/kio5_sftp.po new file mode 100644 index 0000000..1b4c099 --- /dev/null +++ b/po/zh_TW/kio5_sftp.po @@ -0,0 +1,278 @@ +# translation of kio_sftp.po to Chinese Traditional +# Copyright (C) 2008 Free Software Foundation, Inc. +# Paladin Liu , 2002. +# Kenduest Lee , 2002. +# Franklin Weng , 2012, 2013, 2014, 2015. +# pan93412 , 2018. +# +# Frank Weng (a.k.a. Franklin) , 2008, 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-07 02:24+0100\n" +"PO-Revision-Date: 2018-12-02 17:33+0800\n" +"Last-Translator: pan93412 \n" +"Language-Team: Chinese \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 2.0\n" + +#: kio_sftp.cpp:224 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "不正確或無效的密碼" + +#: kio_sftp.cpp:274 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "無法配置 callback" + +#: kio_sftp.cpp:287 +#, kde-format +msgid "Could not set log verbosity." +msgstr "無法設定紀錄等級。" + +#: kio_sftp.cpp:292 +#, kde-format +msgid "Could not set log userdata." +msgstr "無法設定紀錄使用者資料。" + +#: kio_sftp.cpp:297 +#, kde-format +msgid "Could not set log callback." +msgstr "無法設定紀錄 callback。" + +#: kio_sftp.cpp:366 kio_sftp.cpp:368 kio_sftp.cpp:898 kio_sftp.cpp:1192 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP 登入" + +#: kio_sftp.cpp:383 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "請使用輸入帳號的欄位來回答此問題。" + +#: kio_sftp.cpp:396 +#, kde-format +msgid "Please enter your password." +msgstr "請輸入您的密碼。" + +#: kio_sftp.cpp:401 kio_sftp.cpp:901 kio_sftp.cpp:1195 +#, kde-format +msgid "Site:" +msgstr "主機:" + +#: kio_sftp.cpp:588 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "無法建立新的 SSH 工作階段。" + +#: kio_sftp.cpp:598 kio_sftp.cpp:602 +#, kde-format +msgid "Could not set a timeout." +msgstr "無法設定逾時。" + +#: kio_sftp.cpp:610 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "無法停用 Nagle 的算法。" + +#: kio_sftp.cpp:617 kio_sftp.cpp:622 +#, kde-format +msgid "Could not set compression." +msgstr "無法設定壓縮。" + +#: kio_sftp.cpp:628 +#, kde-format +msgid "Could not set host." +msgstr "無法設定主機。" + +#: kio_sftp.cpp:634 +#, kde-format +msgid "Could not set port." +msgstr "無法設定連接埠。" + +#: kio_sftp.cpp:642 +#, kde-format +msgid "Could not set username." +msgstr "無法設定使用者名稱。" + +#: kio_sftp.cpp:649 +#, kde-format +msgid "Could not parse the config file." +msgstr "無法剖析設定檔。" + +#: kio_sftp.cpp:666 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "開啟 SFTP 連線到主機 %1:%2" + +#: kio_sftp.cpp:741 +#, kde-format +msgid "Could not get server public key type name" +msgstr "無法取得伺服器公鑰的類型名稱" + +#: kio_sftp.cpp:752 kio_sftp.cpp:1060 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "無法從伺服器公開金鑰建立雜湊" + +#: kio_sftp.cpp:762 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "無法建立伺服器公鑰的指紋" + +#: kio_sftp.cpp:772 +#, kde-format +msgid "" +"An %1 host key for this server was not found, but another type of key " +"exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%2" +msgstr "" +"找不到此伺服器的 %1 主機金鑰,但是有另一種金鑰。\n" +"入侵者可能變更了預設的伺服器金鑰,用來使用戶端程式認為找不到金鑰。\n" +"請聯絡您的系統管理員。\n" +"%2" + +#: kio_sftp.cpp:784 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the %2 key sent by the remote host is:\n" +" SHA256:%3\n" +"Please contact your system administrator.\n" +"%4" +msgstr "" +"伺服器 %1 的主機金鑰已變更。\n" +"有可能是 DNS SPOOFING 正在發生,或是此主機的 IP 與主機金鑰同時變更。\n" +"遠端主機傳送過來的 %2 金鑰指紋為:\n" +" SHA256:%3\n" +"請聯絡您的系統管理員。\n" +"%4" + +#: kio_sftp.cpp:800 kio_sftp.cpp:1101 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "警告:無法驗證主機的識別碼。" + +#: kio_sftp.cpp:801 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The %2 key fingerprint is: %3\n" +"Are you sure you want to continue connecting?" +msgstr "" +"無法與主機 %1 建立認證。\n" +"%2 的金鑰指紋為 %3。\n" +"您確定要繼續連線嗎?" + +#: kio_sftp.cpp:838 kio_sftp.cpp:859 kio_sftp.cpp:875 kio_sftp.cpp:890 +#: kio_sftp.cpp:946 kio_sftp.cpp:956 kio_sftp.cpp:1132 kio_sftp.cpp:1153 +#: kio_sftp.cpp:1169 kio_sftp.cpp:1184 kio_sftp.cpp:1240 kio_sftp.cpp:1250 +#, kde-format +msgid "Authentication failed." +msgstr "認證失敗。" + +#: kio_sftp.cpp:845 kio_sftp.cpp:1139 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "認證失敗。伺服器未傳送任何認證方法" + +#: kio_sftp.cpp:899 kio_sftp.cpp:1193 +#, kde-format +msgid "Please enter your username and password." +msgstr "請輸入您的使用者名稱與密碼。" + +#: kio_sftp.cpp:910 kio_sftp.cpp:1204 +#, kde-format +msgid "Incorrect username or password" +msgstr "錯誤的使用者名稱或密碼" + +#: kio_sftp.cpp:964 kio_sftp.cpp:1258 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "無法請求 SFTP 系統。請確定伺服器上的 SFTP 有開啟。" + +#: kio_sftp.cpp:971 kio_sftp.cpp:1265 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "無法初始化 SFTP 階段。" + +#: kio_sftp.cpp:975 kio_sftp.cpp:1269 +#, kde-format +msgid "Successfully connected to %1" +msgstr "成功的連線到 %1" + +#: kio_sftp.cpp:1072 +#, kde-format +msgid "" +"The host key for this server was not found, but another type of key exists.\n" +"An attacker might change the default server key to confuse your client into " +"thinking the key does not exist.\n" +"Please contact your system administrator.\n" +"%1" +msgstr "" +"找不到此伺服器的主機金鑰,但是有另一種金鑰。\n" +"入侵者可能變更了預設的伺服器金鑰,用來使用戶端程式認為找不到金鑰。\n" +"請聯絡您的系統管理員。\n" +"%1" + +#: kio_sftp.cpp:1085 +#, kde-format +msgid "" +"The host key for the server %1 has changed.\n" +"This could either mean that DNS SPOOFING is happening or the IP address for " +"the host and its host key have changed at the same time.\n" +"The fingerprint for the key sent by the remote host is:\n" +" %2\n" +"Please contact your system administrator.\n" +"%3" +msgstr "" +"伺服器 %1 的主機金鑰已變更。\n" +"有可能是 DNS SPOOFING 正在發生,或是此主機的 IP 與主機金鑰同時變更。\n" +"遠端主機傳送過來的金鑰指紋為:\n" +"%2\n" +"請聯絡連的系統管理員。\n" +"%3" + +#: kio_sftp.cpp:1102 +#, kde-format +msgid "" +"The authenticity of host %1 cannot be established.\n" +"The key fingerprint is: %2\n" +"Are you sure you want to continue connecting?" +msgstr "" +"無法與主機 %1 建立認證。\n" +"金鑰指紋為 %2。\n" +"您確定要繼續連線嗎?" + +#: kio_sftp.cpp:1314 +#, kde-format +msgid "Invalid sftp context" +msgstr "無效的 SFTP 內容" + +#: kio_sftp.cpp:1885 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"無法變更該權限\n" +"%1" + +#: kio_sftp.cpp:2252 +#, kde-format +msgid "Could not read link: %1" +msgstr "無法讀取連結:%1" diff --git a/po/zh_TW/kio5_smb.po b/po/zh_TW/kio5_smb.po new file mode 100644 index 0000000..ed285da --- /dev/null +++ b/po/zh_TW/kio5_smb.po @@ -0,0 +1,182 @@ +# translation of kio_smb.po to Chinese (traditional) +# translation of kio_smb.po to Chinese (traditional) +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Keng-Tso Ou , 2003. +# Jeff Huang , 2017. +# Yi-Jyun Pan , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-04 02:24+0100\n" +"PO-Revision-Date: 2020-05-02 23:10+0800\n" +"Last-Translator: Yi-Jyun Pan \n" +"Language-Team: Chinese \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_smb_auth.cpp:40 +#, kde-kuit-format +msgctxt "@info:whatsthis" +msgid "" +"There are various options for authenticating on SMB shares.username: When authenticating within a " +"home network the username on the server is sufficientusername@domain.com: Modern corporate " +"logon names are formed like e-mail addressesDOMAIN" +"\\username: For ancient corporate networks or workgroups you " +"may need to prefix the NetBIOS domain name (pre-Windows 2000)anonymous: Anonymous logins can be " +"attempted using empty username and password. Depending on server " +"configuration non-empty usernames may be required" +msgstr "" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "請輸入下列的授權資訊:%1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"請輸入下列的授權資訊:\n" +"伺服器 = %1\n" +"分享 = %2" + +#: kio_smb_browse.cpp:56 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"不明的檔案類別,不論是目錄或檔案。" + +#: kio_smb_browse.cpp:275 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "無法在您的本地網路發現任何工作群組。這可能是由於使用了防火牆造成的。" + +#: kio_smb_browse.cpp:280 +#, kde-format +msgid "No media in device for %1" +msgstr "裝置中沒有 %1 的媒體" + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "無法為 %1 連線至主機" + +#: kio_smb_browse.cpp:298 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "當連線到伺服器回應 %1 時發生錯誤" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Share could not be found on given server" +msgstr "所指定伺服器找不到分享" + +#: kio_smb_browse.cpp:306 +#, kde-format +msgid "Bad file descriptor" +msgstr "錯誤的檔案描述" + +#: kio_smb_browse.cpp:314 +#, kde-format +msgid "" +"The given name could not be resolved to a unique server. Make sure your " +"network is setup without any name conflicts between names used by Windows " +"and by UNIX name resolution." +msgstr "" +"無法將指定的名稱解析為特定的伺服器。請確定您的網路設定跟 Windows 與 UNIX 解析" +"之間使用的名稱沒有衝突。" + +#: kio_smb_browse.cpp:321 +#, kde-format +msgctxt "" +"@info:status smb failed to reach the server (e.g. server offline or network " +"failure). %1 is an ip address or hostname" +msgid "%1: Host unreachable" +msgstr "%1:無法連線至主機" + +#: kio_smb_browse.cpp:324 +#, kde-format +msgid "" +"libsmbclient reported an error, but did not specify what the problem is. " +"This might indicate a severe problem with your network - but also might " +"indicate a problem with libsmbclient.\n" +"If you want to help us, please provide a tcpdump of the network interface " +"while you try to browse (be aware that it might contain private data, so do " +"not post it if you are unsure about that - you can send it privately to the " +"developers if they ask for it)" +msgstr "" +"libsmbclient 報告了一個錯誤,但並未指出問題為何。這有可能是您網路中的伺服器出" +"現問題─但是也可能是libsmbclient 的問題。\n" +"如果您想協助我們,請您提供您嘗試瀏覽網路的 tcpdump 資料。(請注意其中可能包含" +"私人資料,如果您不確定請勿公開散佈。如果程式開發者跟您要求相關資料,您可以私" +"底下Email給他)" + +#: kio_smb_browse.cpp:337 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "未知錯誤狀態:[%1] %2" + +#: kio_smb_browse.cpp:356 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "在嘗試存取 %1 時遇到錯誤%2" + +#: kio_smb_file.cpp:35 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient 建立快顯選單失敗" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:117 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"請確認您的系統中已適當安裝samba套件。" + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"掛載使用者「%3」於主機「%2」分享的「%1」失敗。\n" +"%4" + +#: kio_smb_mount.cpp:127 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"卸載掛載點「%1」失敗。\n" +"%2" + +#: wsdiscoverer.cpp:158 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "未知裝置 @ %1" + +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbclient 初始化快顯選單失敗" diff --git a/po/zh_TW/kio5_thumbnail.po b/po/zh_TW/kio5_thumbnail.po new file mode 100644 index 0000000..73da742 --- /dev/null +++ b/po/zh_TW/kio5_thumbnail.po @@ -0,0 +1,75 @@ +# translation of kio_thumbnail.po to Chinese Traditional +# +# Frank Weng (a.k.a. Franklin) , 2006, 2007, 2009. +# Franklin Weng , 2007. +# Franklin Weng , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2020-11-08 02:24+0100\n" +"PO-Revision-Date: 2011-03-03 09:28+0800\n" +"Last-Translator: Franklin Weng \n" +"Language-Team: Chinese Traditional \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: jpegcreator.cpp:61 +#, kde-format +msgctxt "@option:check" +msgid "Rotate the image automatically" +msgstr "自動旋轉影像" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "沒有指定 MIME 型態。" + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "沒有指定大小,或指定的大小不對。" + +#: thumbnail.cpp:229 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "無法產生目錄的縮圖" + +#: thumbnail.cpp:241 +#, kde-format +msgid "No plugin specified." +msgstr "沒有指定外掛。" + +#: thumbnail.cpp:247 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "無法載入 ThumbCreator %1" + +#: thumbnail.cpp:256 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "無法產生 %1 的 thumbnail" + +#: thumbnail.cpp:265 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "產生 thumbnail 失敗。" + +#: thumbnail.cpp:277 +#, kde-format +msgid "Could not write image." +msgstr "無法寫入影像。" + +#: thumbnail.cpp:302 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "無法連結共享記憶體區段 %1" + +#: thumbnail.cpp:306 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "影像太大無法放進共享記憶體區段" diff --git a/recentdocuments/CMakeLists.txt b/recentdocuments/CMakeLists.txt new file mode 100644 index 0000000..fee1d13 --- /dev/null +++ b/recentdocuments/CMakeLists.txt @@ -0,0 +1,20 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_recentdocuments\") + +add_library(kio_recentdocuments MODULE recentdocuments.cpp) +target_link_libraries(kio_recentdocuments KF5::KIOCore KF5::I18n Qt5::DBus Qt5::Network) +set_target_properties(kio_recentdocuments PROPERTIES OUTPUT_NAME "recentdocuments") +install(TARGETS kio_recentdocuments DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + +########### next target ############### + +add_library(kded_recentdocumentsnotifier MODULE recentdocumentsnotifier.cpp) +set_target_properties(kded_recentdocumentsnotifier PROPERTIES OUTPUT_NAME recentdocumentsnotifier) +kcoreaddons_desktop_to_json(kded_recentdocumentsnotifier recentdocumentsnotifier.desktop) + +target_link_libraries(kded_recentdocumentsnotifier KF5::KIOCore KF5::DBusAddons) + +install(TARGETS kded_recentdocumentsnotifier DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kded ) + +########### install files ############### + +install( FILES recentdocuments.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) diff --git a/recentdocuments/Messages.sh b/recentdocuments/Messages.sh new file mode 100644 index 0000000..ebdab24 --- /dev/null +++ b/recentdocuments/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp *.h -o $podir/kio5_recentdocuments.pot diff --git a/recentdocuments/recentdocuments.cpp b/recentdocuments/recentdocuments.cpp new file mode 100644 index 0000000..38aef5f --- /dev/null +++ b/recentdocuments/recentdocuments.cpp @@ -0,0 +1,187 @@ +#include "recentdocuments.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +extern "C" int Q_DECL_EXPORT kdemain(int argc, char **argv) +{ + // necessary to use other kio slaves + QCoreApplication app(argc, argv); + app.setApplicationName("kio_recentdocuments"); + if (argc != 4) { + fprintf(stderr, "Usage: kio_recentdocuments protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + // start the slave + RecentDocuments slave(argv[2], argv[3]); + slave.dispatchLoop(); + return 0; +} + +bool isRootUrl(const QUrl &url) +{ + const QString path = url.adjusted(QUrl::StripTrailingSlash).path(); + return(!url.hasQuery() && + (path.isEmpty() || path == QLatin1String("/"))); +} + +RecentDocuments::RecentDocuments(const QByteArray& pool, const QByteArray& app): + ForwardingSlaveBase("recentdocuments", pool, app) +{ + QDBusInterface kded("org.kde.kded5", "/kded", "org.kde.kded5"); + kded.call("loadModule", "recentdocumentsnotifier"); +} + +RecentDocuments::~RecentDocuments() +{ + +} + +bool RecentDocuments::rewriteUrl(const QUrl& url, QUrl& newUrl) +{ + if (isRootUrl(url)) { + return false; + } else { + const QString desktopFilePath = QString("%1/%2.desktop").arg(KRecentDocument::recentDocumentDirectory(), url.path()); + if (KDesktopFile::isDesktopFile(desktopFilePath)) { + KDesktopFile file(desktopFilePath); + if (file.hasLinkType()) + newUrl = QUrl(file.readUrl()); + } + + return !newUrl.isEmpty(); + } +} + +void RecentDocuments::listDir(const QUrl& url) +{ + if (isRootUrl(url)) { + const QStringList list = KRecentDocument::recentDocuments(); + KIO::UDSEntryList udslist; + QSet urlSet; + for (const QString& entry : list) { + if (KDesktopFile::isDesktopFile(entry)) { + QFileInfo info(entry); + KDesktopFile file(entry); + + QUrl urlInside(file.readUrl()); + QString toDisplayString = urlInside.toDisplayString(); + + // Filter out things that can't be viewed in a file manager because they don't + // meet the user definition of a file for the purpose of "recently accessed files" + if (urlInside.scheme() == "recentdocuments" + || !KProtocolManager::supportsListing(urlInside) + || urlSet.contains(toDisplayString)) + continue; + + KIO::UDSEntry uds; + if (urlInside.isLocalFile()) { + KIO::StatJob* job = KIO::stat(urlInside, KIO::HideProgressInfo); + // we do not want to wait for the event loop to delete the job + QScopedPointer sp(job); + job->setAutoDelete(false); + if (job->exec()) { + uds = job->statResult(); + } + } + + urlSet.insert(toDisplayString); + uds.replace(KIO::UDSEntry::UDS_NAME, info.completeBaseName()); + + if (urlInside.isLocalFile()) { + uds.replace(KIO::UDSEntry::UDS_DISPLAY_NAME, urlInside.toLocalFile()); + uds.replace(KIO::UDSEntry::UDS_LOCAL_PATH, urlInside.path()); + } else { + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, toDisplayString); + uds.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, file.readIcon()); + } + uds.replace(KIO::UDSEntry::UDS_TARGET_URL, toDisplayString); + udslist << uds; + } + } + listEntries(udslist); + finished(); + } + else + error(KIO::ERR_DOES_NOT_EXIST, url.toDisplayString()); +} + +void RecentDocuments::prepareUDSEntry(KIO::UDSEntry& entry, bool listing) const +{ + ForwardingSlaveBase::prepareUDSEntry(entry, listing); +} + +QString RecentDocuments::desktopFile(KIO::UDSEntry& entry) const +{ + const QString name = entry.stringValue(KIO::UDSEntry::UDS_NAME); + if (name == "." || name == "..") + return QString(); + + QUrl url = processedUrl(); + url = url.adjusted(QUrl::StripTrailingSlash); + url.setPath(url.path() + '/' + name); + + if (KDesktopFile::isDesktopFile(url.toLocalFile())) + return url.toLocalFile(); + + return QString(); +} + +void RecentDocuments::stat(const QUrl& url) +{ + if (isRootUrl(url)) { + qDebug() << "Stat root" << url; + // + // stat the root path + // + QString dirName = i18n("Recent Documents"); + KIO::UDSEntry uds; + uds.reserve(6); + uds.fastInsert(KIO::UDSEntry::UDS_NAME, dirName); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, dirName); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_TYPE, dirName); + uds.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, QString::fromLatin1("document-open-recent")); + uds.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + uds.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory")); + + statEntry(uds); + finished(); + } + // results are forwarded + else { + qDebug() << "Stat forward" << url; + ForwardingSlaveBase::stat(url); + } +} + +void RecentDocuments::mimetype(const QUrl& url) +{ + qDebug() << url; + + // the root url is always a folder + if (isRootUrl(url)) { + mimeType(QString::fromLatin1("inode/directory")); + finished(); + } + // results are forwarded + else { + ForwardingSlaveBase::mimetype(url); + } +} + +void RecentDocuments::del(const QUrl& url, bool isFile) +{ + ForwardingSlaveBase::del(url, isFile); +} diff --git a/recentdocuments/recentdocuments.h b/recentdocuments/recentdocuments.h new file mode 100644 index 0000000..5d8f23a --- /dev/null +++ b/recentdocuments/recentdocuments.h @@ -0,0 +1,26 @@ +#ifndef RECENTDOCUMENT_H +#define RECENTDOCUMENT_H + +#include + +class KDirWatch; + +class RecentDocuments : public KIO::ForwardingSlaveBase +{ +public: + RecentDocuments(const QByteArray &pool, const QByteArray &app); + ~RecentDocuments() override; + +protected: + QString desktopFile(KIO::UDSEntry&) const; + bool rewriteUrl(const QUrl &url, QUrl &newUrl) override; + void listDir(const QUrl &url) override; + void prepareUDSEntry(KIO::UDSEntry &entry, bool listing = false) const override; + void stat(const QUrl& url) override; + void mimetype(const QUrl& url) override; + void del(const QUrl& url, bool isfile) override; +private: + KDirWatch* m_recentDocWatch; +}; + +#endif diff --git a/recentdocuments/recentdocuments.protocol b/recentdocuments/recentdocuments.protocol new file mode 100644 index 0000000..dfdb7d1 --- /dev/null +++ b/recentdocuments/recentdocuments.protocol @@ -0,0 +1,14 @@ +[Protocol] +X-DocPath=kioslave5/recentdocuments/index.html +exec=kf5/kio/recentdocuments +protocol=recentdocuments +Icon=document-open-recent +input=none +output=filesystem +listing=Name,Type,Size,Date,AccessDate,Access,Owner,Group,Link +reading=true +opening=true +writing=true +deleting=true +maxInstances=1 +Class=:local diff --git a/recentdocuments/recentdocumentsnotifier.cpp b/recentdocuments/recentdocumentsnotifier.cpp new file mode 100644 index 0000000..07ddee9 --- /dev/null +++ b/recentdocuments/recentdocumentsnotifier.cpp @@ -0,0 +1,33 @@ +#include "recentdocumentsnotifier.h" + +#include +#include +#include +#include +#include +#include + +K_PLUGIN_CLASS_WITH_JSON(RecentDocumentsNotifier, "recentdocumentsnotifier.json") + +RecentDocumentsNotifier::RecentDocumentsNotifier(QObject *parent, const QList &) + : KDEDModule(parent) +{ + dirWatch = new KDirWatch(this); + dirWatch->addDir(KRecentDocument::recentDocumentDirectory(), KDirWatch::WatchFiles); + connect(dirWatch, &KDirWatch::created, this, &RecentDocumentsNotifier::dirty); + connect(dirWatch, &KDirWatch::deleted, this, &RecentDocumentsNotifier::dirty); + connect(dirWatch, &KDirWatch::dirty, this, &RecentDocumentsNotifier::dirty); +} + +void RecentDocumentsNotifier::dirty(const QString &path) +{ + if (path.endsWith(QLatin1String(".desktop"))) { + // Emitting FilesAdded forces a re-read of the dir + QUrl url("recentdocuments:/"); + QFileInfo info(path); + url.setPath(QStringLiteral("/") + info.fileName()); + org::kde::KDirNotify::emitFilesAdded(url); + } +} + +#include "recentdocumentsnotifier.moc" diff --git a/recentdocuments/recentdocumentsnotifier.desktop b/recentdocuments/recentdocumentsnotifier.desktop new file mode 100644 index 0000000..b31a4f8 --- /dev/null +++ b/recentdocuments/recentdocumentsnotifier.desktop @@ -0,0 +1,128 @@ +[Desktop Entry] +Type=Service +Name=Recent Document Watcher +Name[ar]=مراقب المستندات الحديثة +Name[bg]=Следене на скорошни документи +Name[bn]=সম্প্রতি ব্যবহৃত নথী ওয়াচার +Name[bs]=Pregled novijih dokumenata +Name[ca]=Vigilant de documents recents +Name[ca@valencia]=Vigilant de documents recents +Name[cs]=Sledování nedávných dokumentů +Name[da]=Overvågning af nylige dokumenter +Name[de]=Überwachung zuletzt geöffneter Dokumente +Name[el]=Επόπτης πρόσφατου εγγράφου +Name[en_GB]=Recent Document Watcher +Name[eo]=Kontrolilo de freŝaj dokumentoj +Name[es]=Observador de documentos recientes +Name[et]=Viimati kasutatud dokumentide jälgija +Name[eu]=Azken dokumentuen behatzailea +Name[fa]=دیدبان سندهای اخیر +Name[fi]=Viimeksi käytettyjen tiedostojen tarkkailija +Name[fr]=Observateur des documents récents +Name[ga]=Monatóir: Cáipéisí Is Déanaí +Name[gl]=Vixilante dos documentos recentes +Name[gu]=હાલનાં દસ્તાવેજો ધ્યાનરાખનાર +Name[he]=מסמכים שהיו בשימוש לאחרונה +Name[hi]=हालिया दस्तावेज़ चौकीदार +Name[hu]=Nemrég használt dokumentumok-figyelő +Name[ia]=Observator de documento recente +Name[id]=Pengawas Dokumen Baru-baru ini +Name[is]=Skoðun á nýlegum skjölum +Name[it]=Guardia dei Documenti recenti +Name[ja]=最近のドキュメントウォッチャ +Name[kk]=Жуырдағы құжаттарды бақылау +Name[km]=កម្មវិធី​មើល​ឯកសារ​ថ្មីៗ +Name[ko]=최근 문서 감시기 +Name[lt]=Paskiausiai naudotų dokumentų stebėtojas +Name[mr]=अलिकडील दस्तऐवज नोंदकर्ता +Name[nb]=Nylig brukt dokumentovervåker +Name[nds]=Tolest bruukt Dokmenten beluern +Name[nl]=Bewaker van recente documenten +Name[nn]=Overvaking av nyleg brukte dokument +Name[pa]=ਤਾਜ਼ਾ ਡੌਕੂਮੈਂਟ ਵਾਂਚਰ +Name[pl]=Obserwator ostatnich dokumentów +Name[pt]=Vigilante de Documentos Recentes +Name[pt_BR]=Monitor de documentos recentes +Name[ro]=Supraveghetor documente recente +Name[ru]=Наблюдение за последними документами +Name[sk]=Sledovanie nedávnych dokumentov +Name[sl]=Opazovalnik nedavnih dokumentov +Name[sr]=Надзорник недавних докумената +Name[sr@ijekavian]=Надзорник недавних докумената +Name[sr@ijekavianlatin]=Nadzornik nedavnih dokumenata +Name[sr@latin]=Nadzornik nedavnih dokumenata +Name[sv]=Bevakning av senaste dokument +Name[tr]=Son Kullanılan Belgeler İzleyicisi +Name[ug]=يېقىنقى پۈتۈكلەرنى كۆزەتكۈچ +Name[uk]=Наглядач за недавніми документами +Name[vi]=Trình theo dõi tài liệu gần đây +Name[wa]=Waiteu des documint eployîs dierinnmint +Name[x-test]=xxRecent Document Watcherxx +Name[zh_CN]=最近文档监视器 +Name[zh_TW]=最近文件監控器 +ServiceTypes=KDEDModule +X-KDE-ServiceTypes=KDEDModule +X-KDE-Library=recentdocumentsnotifier +X-KDE-FactoryName=recentdocumentsnotifier +X-KDE-DBus-ModuleName=recentdocumentsnotifier +X-KDE-Kded-load-on-demand=true +X-KDE-Kded-autoload=false +Comment=Monitors "Recent Documents" folder for changes +Comment[ar]=يراقب تغييرات مجلّد "المستندات الحديثة" +Comment[bg]=Следене за промени в скорошните документи +Comment[bn]=সম্প্রতি ব্যবহৃত নথীর ফোল্ডার "Recent Documents"-এ কোন পরিবর্তন হচ্ছে কি না লক্ষ্য রাখে +Comment[bs]=Prati direktorij s posljednjim dokumentima +Comment[ca]=Controla els canvis a la carpeta «Documents recents» +Comment[ca@valencia]=Controla els canvis a la carpeta «Documents recents» +Comment[cs]=Monitoruje změny ve složce nedávných dokumentů +Comment[da]=Overvåger mappen med "nylige dokumenter" for ændringer +Comment[de]=Überwacht den Ordner „Zuletzt geöffnete Dokumente“ auf Änderungen +Comment[el]=Επιβλέπει το φάκελο με τα "Πρόσφατα έγγραφα" για αλλαγές +Comment[en_GB]=Monitors "Recent Documents" folder for changes +Comment[eo]=Ĝi monitoras la dosierujon "Freŝaj dokumentoj" por ŝanĝoj +Comment[es]=Monitoriza cambios en la carpeta de «Documentos recientes» +Comment[et]="Viimati kasutatud dokumentide" kataloogi muutuste jälgimine +Comment[eu]="Azken dokumentuak" karpetako aldaketak kontrolatzen ditu +Comment[fa]=پوشه‌ها را برای تغییرات دیده‌بانی میکند +Comment[fi]=Tarkkailee viimeksi käytettyjen tiedostojen kansion muutoksia +Comment[fr]=Surveille les modifications du dossier « Documents récents » +Comment[ga]=Déan monatóireacht ar an bhfillteán "Cáipéisí Is Déanaí" le haghaidh athruithe +Comment[gl]=Monitoriza os cambios no cartafol de «Documentos recentes» +Comment[gu]=ફેરફારો માટે "હાલનાં દસ્તાવેજો" પર નજર રાખે છે +Comment[he]=מנטר אחר ספריית "מסמכים אחרונים" עבור שינויים +Comment[hi]="हालिया दस्तावेज़" में बदलाव के लिए जाँचता है +Comment[hu]=„Nemrég használt dokumentumok” mappa változásainak figyelése +Comment[ia]=Il monitora dossier de "documentos recente" pro variationes +Comment[id]=Memantau folder "Dokumen Baru-baru ini" terhadap perubahan +Comment[is]=Fylgist með breytingum á möppunni "Nýleg skjöl" +Comment[it]=Sorveglia i cambiamenti nell'area "Documenti recenti" +Comment[kk]='Жуырдағы құжатар' каталогыдағы өзгерістерін бақылау +Comment[km]=ពិនិត្យ​មើល​ថត "ឯកសារ​ថ្មី" សម្រាប់​ការ​ផ្លាស់ប្ដូរ +Comment[ko]="최근 문서" 폴더의 변경 사항 감시 +Comment[lt]=Stebi pakeitimus "Paskiausiai naudotų dokumentų" aplanke +Comment[mr]="अलिकडील दस्तऐवज" संचयीकेतील बदलावर नजर ठेवतो +Comment[nb]=Overvåker nylig brukte dokumenter etter endringer +Comment[nds]=Orner "Tolest bruukt Dokmenten" op Ännern beluern +Comment[nl]=Bewaakt map "Recente documenten" op wijzigingen +Comment[nn]=Overvakar «Nyleg brukte dokument»-mappe for endringar +Comment[pa]="ਤਾਜ਼ਾ ਦਸਤਾਵੇਜ਼" ਫੋਲਡਰ ਉੱਤੇ ਬਦਲਾਅ ਲਈ ਨਿਗਰਾਨੀ ਰੱਖੋ +Comment[pl]=Monitoruje "ostatnie dokumenty" pod kątem zmian +Comment[pt]=Vigia as alterações na pasta de "Documentos Recentes" +Comment[pt_BR]=Monitora as alterações na pasta "Documentos recentes" +Comment[ro]=Monitorizează dosarul „Documente recente” pentru modificări +Comment[ru]=Следит за изменениями последних открытых документов +Comment[sk]=Monitoruje priečinok "Nedávne dokumenty" kvôli zmenám +Comment[sl]=Nadzira mapo »Nedavni dokumenti« za spremembami +Comment[sr]=Надгледање измена у фасцикли „недавни документи“ +Comment[sr@ijekavian]=Надгледање измијена у фасцикли „недавни документи“ +Comment[sr@ijekavianlatin]=Nadgledanje izmijena u fascikli „nedavni dokumenti“ +Comment[sr@latin]=Nadgledanje izmena u fascikli „nedavni dokumenti“ +Comment[sv]=Övervakar katalogen "Senaste dokument" för ändringar +Comment[tr]="Son Kullanılan Belgeler" dizinindeki değişiklikleri izler +Comment[ug]=«يېقىنقى پۈتۈكلەر» قىسقۇچىدىكى ئۆزگىرىشلەرنى كۆزىتىدۇ +Comment[uk]=Стежить за змінами у теці недавніх документів +Comment[vi]=Theo dõi sự thay đổi của thư mục "Tài liệu gần đây" +Comment[wa]=Corwaite les candjmints e ridant « Documints d' enawaire » +Comment[x-test]=xxMonitors "Recent Documents" folder for changesxx +Comment[zh_CN]=监视“最近文档”文件夹的更改 +Comment[zh_TW]=監控最近使用的文件的改變 diff --git a/recentdocuments/recentdocumentsnotifier.h b/recentdocuments/recentdocumentsnotifier.h new file mode 100644 index 0000000..faab5ba --- /dev/null +++ b/recentdocuments/recentdocumentsnotifier.h @@ -0,0 +1,23 @@ +#ifndef RECENTDOCUMENTSNOTIFIER_H +#define RECENTDOCUMENTSNOTIFIER_H + +#include + +class KDirWatch; + +class RecentDocumentsNotifier : public KDEDModule +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.kde.RecentDocumentsNotifier") + +public: + RecentDocumentsNotifier(QObject* parent, const QList&); + +private slots: + void dirty(const QString &path); + +private: + KDirWatch *dirWatch; +}; + +#endif diff --git a/recentlyused/CMakeLists.txt b/recentlyused/CMakeLists.txt new file mode 100644 index 0000000..9afbe2f --- /dev/null +++ b/recentlyused/CMakeLists.txt @@ -0,0 +1,22 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_recentlyused\") + +set( + kio_recentlyused_SRCS + recentlyused.cpp +) + +ecm_qt_declare_logging_category(kio_recentlyused_SRCS + HEADER recentlyused-logsettings.h + IDENTIFIER KIO_RECENTLYUSED_LOG +CATEGORY_NAME log_kio_recentlyused) + +add_library(recentlyused MODULE ${kio_recentlyused_SRCS}) + +target_link_libraries(recentlyused + KF5::KIOCore + KF5::I18n + KF5::Activities + KF5::ActivitiesStats) +set_target_properties(recentlyused PROPERTIES OUTPUT_NAME "recentlyused") +set_target_properties(recentlyused PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf5/kio") +install(TARGETS recentlyused DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) diff --git a/recentlyused/recentlyused.cpp b/recentlyused/recentlyused.cpp new file mode 100644 index 0000000..b2307bc --- /dev/null +++ b/recentlyused/recentlyused.cpp @@ -0,0 +1,288 @@ +/* + * Copyright (C) 2019 Méven Car + * + * 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) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * 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, see . + */ + +#include "recentlyused-logsettings.h" +#include "recentlyused.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +namespace KAStats = KActivities::Stats; + +using namespace KAStats; +using namespace KAStats::Terms; + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.recentlyused" FILE "recentlyused.json") +}; + +extern "C" int Q_DECL_EXPORT kdemain(int argc, char **argv) +{ + // necessary to use other kio slaves + QCoreApplication app(argc, argv); + app.setApplicationName(QStringLiteral("kio_recentlyused")); + if (argc != 4) { + fprintf(stderr, "Usage: kio_recentlyused protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + // start the slave + RecentlyUsed slave(argv[2], argv[3]); + slave.dispatchLoop(); + return 0; +} + +static bool isRootUrl(const QUrl &url) +{ + const QString path = url.adjusted(QUrl::StripTrailingSlash).path(); + return path.isEmpty() || path == QLatin1String("/"); +} + +RecentlyUsed::RecentlyUsed(const QByteArray &pool, const QByteArray &app) + : SlaveBase("recentlyused", pool, app) +{ +} + +RecentlyUsed::~RecentlyUsed() +{ +} + +ResultModel *runQuery(const QUrl &url) +{ + qCDebug(KIO_RECENTLYUSED_LOG) << "runQuery for url" << url.toString(); + + auto query = UsedResources + | Limit(30); + + // Parse url query parameter + const auto urlQuery = QUrlQuery(url); + + const auto path = url.path(); + if (path == QStringLiteral("/locations")) { + query.setTypes(Type::directories()); + } else { + if (urlQuery.hasQueryItem(QStringLiteral("type"))) { + // handles type parameter aka mimetype + const auto typeValue = urlQuery.queryItemValue(QStringLiteral("type")); + const auto types = typeValue.split(QLatin1Char(',')); + query.setTypes(types); + } else if (path == QStringLiteral("/files")) { + query.setTypes(Type::files()); + } + } + + // limit parameter + if (urlQuery.hasQueryItem(QStringLiteral("limit"))) { + const auto limitValue = urlQuery.queryItemValue(QStringLiteral("limit")); + bool parseOk; + const auto limitInt = limitValue.toInt(&parseOk); + if (parseOk) { + query.setLimit(limitInt); + } + } + + // activity parameter, filter using the uuid of the activity + if (urlQuery.hasQueryItem(QStringLiteral("activity"))) { + const auto activityValue = urlQuery.queryItemValue(QStringLiteral("activity")); + if (activityValue == QStringLiteral("any")) { + query.setActivities(Activity::any()); + } else { + query.setActivities(activityValue); + } + } else { + query.setActivities(Activity::current()); + } + + // date parameter, filter using the date when an event occurred on a resource + if (urlQuery.hasQueryItem(QStringLiteral("date"))) { + const auto dateValue = urlQuery.queryItemValue(QStringLiteral("date")); + if (dateValue == QStringLiteral("today")) { + query.setDate(Date::today()); + } else if (dateValue == QStringLiteral("yesterday")) { + query.setDate(Date::yesterday()); + } else { + query.setDate(Date::fromString(dateValue)); + } + } + + // agent parameter, filter using the application name that used the resource + if (urlQuery.hasQueryItem(QStringLiteral("agent"))) { + const auto agentValue = urlQuery.queryItemValue(QStringLiteral("agent")); + const auto agents = agentValue.split(QLatin1Char(',')); + query.setAgents(agents); + } else { + query.setAgents(Agent::any()); + } + + // path parameter for exact path match or folders, supports wildcard pattern matching + if (urlQuery.hasQueryItem(QStringLiteral("path"))) { + const auto pathValue = urlQuery.queryItemValue(QStringLiteral("path")); + query.setUrlFilters(pathValue); + } else { + // only files are supported for now, because of limited support in udsEntryFromResource + query.setUrlFilters(Url::file()); + } + + // see KActivities::Stats::Terms::Order + if (urlQuery.hasQueryItem(QStringLiteral("order"))) { + const auto orderValue = urlQuery.queryItemValue(QStringLiteral("order")); + + if (orderValue == QStringLiteral("HighScoredFirst")) { + query.setOrdering(Order::HighScoredFirst); + } else if (orderValue == QStringLiteral("RecentlyCreatedFirst")) { + query.setOrdering(Order::RecentlyCreatedFirst); + } else if (orderValue == QStringLiteral("OrderByUrl")) { + query.setOrdering(Order::OrderByUrl); + } else if (orderValue == QStringLiteral("OrderByTitle")) { + query.setOrdering(Order::OrderByTitle); + } else { + query.setOrdering(Order::RecentlyUsedFirst); + } + } else { + query.setOrdering(Order::RecentlyUsedFirst); + } + + return new ResultModel(query); +} + +KIO::UDSEntry RecentlyUsed::udsEntryFromResource(const QString &resource) +{ + qCDebug(KIO_RECENTLYUSED_LOG) << "udsEntryFromResource" << resource; + + // the query only returns files and folders + QUrl resourceUrl = QUrl::fromLocalFile(resource); + + KIO::UDSEntry uds; + KIO::StatJob *job = KIO::stat(resourceUrl, KIO::HideProgressInfo); + + // we do not want to wait for the event loop to delete the job + QScopedPointer sp(job); + job->setAutoDelete(false); + if (job->exec()) { + uds = job->statResult(); + } + uds.fastInsert(KIO::UDSEntry::UDS_URL, resourceUrl.toString()); + return uds; +} + +void RecentlyUsed::listDir(const QUrl &url) +{ + if (!isRootUrl(url)) { + const auto path = url.path(); + if (path != QStringLiteral("/files") && path != QStringLiteral("/locations") ){ + error(KIO::ERR_DOES_NOT_EXIST, url.toDisplayString()); + return; + } + } + + auto model = runQuery(url); + + KIO::UDSEntryList udslist; + udslist.reserve(model->rowCount()); + + for (int r = 0; r < model->rowCount(); ++r) { + QModelIndex index = model->index(r, 0); + QString resource = model->data(index, ResultModel::ResourceRole).toString(); + + udslist << udsEntryFromResource(resource); + } + + listEntries(udslist); + finished(); +} + +KIO::UDSEntry RecentlyUsed::udsEntryForRoot(const QString &dirName, const QString &iconName) +{ + KIO::UDSEntry uds; + uds.reserve(6); + uds.fastInsert(KIO::UDSEntry::UDS_NAME, dirName); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, dirName); + uds.fastInsert(KIO::UDSEntry::UDS_DISPLAY_TYPE, dirName); + uds.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, iconName); + uds.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + uds.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory")); + return uds; +} + +void RecentlyUsed::stat(const QUrl &url) +{ + qCDebug(KIO_RECENTLYUSED_LOG) << "stating" << " " << url; + + if (isRootUrl(url)) { + // + // stat the root path + // + + const QString dirName = i18n("Recent Documents"); + + statEntry(udsEntryForRoot(dirName, QStringLiteral("document-open-recent"))); + finished(); + } else { + + const auto path = url.path(); + if (path == QStringLiteral("/files")) { + const QString dirName = i18n("Recent Files"); + statEntry(udsEntryForRoot(dirName, QStringLiteral("document-open-recent"))); + finished(); + } else if (path == QStringLiteral("/locations")) { + const QString dirName = i18n("Recent Locations"); + statEntry(udsEntryForRoot(dirName, QStringLiteral("folder-open-recent"))); + finished(); + } else { + // only / /files and /locations paths are supported + error(KIO::ERR_DOES_NOT_EXIST, url.toDisplayString()); + } + } +} + +void RecentlyUsed::mimetype(const QUrl &url) +{ + // the root url is always a folder + if (isRootUrl(url)) { + mimeType(QStringLiteral("inode/directory")); + finished(); + } else { + // only the root path is supported + error(KIO::ERR_DOES_NOT_EXIST, url.toDisplayString()); + } +} + +// needed for JSON file embedding +#include "recentlyused.moc" diff --git a/recentlyused/recentlyused.h b/recentlyused/recentlyused.h new file mode 100644 index 0000000..5274b14 --- /dev/null +++ b/recentlyused/recentlyused.h @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2019 Méven Car + * + * 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) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * 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, see . + */ + +#ifndef RECENTLYUSED_H +#define RECENTLYUSED_H + +#include +#include + +/** + * Implements recentlyused:/ ioslave + * It uses KActivitiesStats as a backend (as kickoff/kicker do) to retrieve recently accessed + * files or folders. + * It supports filtering on mimetype (option type), path, date of access or date of access range, activity and agent (meaning application). + * There are also order and limit options. + * + * There only three path allowed : / /files and /locations. + * / does not do anything special + * /files returns only files whose mimetype is known to the KActivity backend + * /locations returns only folders + * When /locations is used the option ?type, described below, cannot be used. + * + * It supports options to filter what is returned through url parameters: + * + * ?activity=[activity UUID|any] + * + * Allows to filter the resources based on the activity they were used in. + * Defaults to the current user activity. + * any value means include resources from any activity. + * Example: recentlyused:/?activity=428fa590-1920-4b3c-a7e1-1842e6164707 + * + * ?date=[ISODATE[,ISODATE]|today|yesterday] + * + * Allows to filter on event date of resources + * today and yesterday returns resource that had an event today or + * yesterday respectively. + * ISODATE must be of the form YYYY-MM-DD + * If a secondary date is passed, the filtering occurs on the date range starting + * at the first date passed and ending at the second date passed inclusively + * Example: recentlyused:/?date=2019-07-30 + * + * ?agent=[agentName1[,agentName*]* + * + * Filter on the name or names of the application that used the resource. + * Defaults to no agent filtering + * Example: recentlyused:/?agent=kate,dolphin + * + * ?path=path + * + * Filters resources based on the path of the file or directory. + * Path can contain '*', defaults to no filtering. + * Example: recentlyused:/?path=/home/meven/projects/* + * + * ?type=mimetype[,mimetype]* + * + * Filters resources based on the mimetype of files. + * Defaults to no filtering + * Example: recentlyused:/?type=video/*,audio/* + * + * ?limit=number + * + * Specify the number of resources to return. + * Defaults to 30 + * Example: recentlyused:/?limit=10 + * + * ?order=(HighScoredFirst|RecentlyCreatedFirst|OrderByUrl|OrderByTitle) + * Allow to modify the order of the returned resources. + * Defaults to RecentlyUsedFirst + * See KActivities::Stats::Terms::Order for detail + * Example: recentlyused:/?limit=HighScoredFirst + * + * Examples: + * + * - recentlyused:/?type=video/*,audio/*&order=HighScoredFirst : recently used video or audio files ordered by their scoring descending + * - recentlyused:/?url=/home/meven/kde/src/*&type=text/plain : recently used text files located in a subdir of /home/meven/kde/src/ + * + * @brief The RecentlyUsed implements an ioslave to access recently used files or directories + */ +class RecentlyUsed : public QObject, public KIO::SlaveBase +{ + Q_OBJECT +public: + RecentlyUsed(const QByteArray &pool, const QByteArray &app); + ~RecentlyUsed() override; + +protected: + void listDir(const QUrl &url) override; + void stat(const QUrl &url) override; + void mimetype(const QUrl &url) override; + +private: + KIO::UDSEntry udsEntryFromResource(const QString &resource); + KIO::UDSEntry udsEntryForRoot(const QString &dirName, const QString &iconName); +}; + +#endif diff --git a/recentlyused/recentlyused.json b/recentlyused/recentlyused.json new file mode 100644 index 0000000..ca0d52d --- /dev/null +++ b/recentlyused/recentlyused.json @@ -0,0 +1,34 @@ +{ + "KDE-KIO-Protocols": { + "recentlyused": { + "Class": ":local", + "Icon": "document-open-recent", + "ProxiedBy": "file", + "X-DocPath": "kioslave5/recentlyused/index.html", + "copyFromFile": false, + "copyToFile": false, + "deleting": false, + "exec": "kf5/kio/recentlyused", + "input": "none", + "listing": [ + "Name", + "Type", + "Size", + "Date", + "Access", + "Owner", + "Group", + "Link" + ], + "linking": false, + "makedir": false, + "maxInstances": 1, + "maxInstancesPerHost": 1, + "moving": false, + "output": "filesystem", + "protocol": "recentlyused", + "reading": false, + "writing": false + } + } +} diff --git a/settings/CMakeLists.txt b/settings/CMakeLists.txt new file mode 100644 index 0000000..0a924d0 --- /dev/null +++ b/settings/CMakeLists.txt @@ -0,0 +1,8 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_settings\") + +add_library(kio_settings MODULE kio_settings.cpp) +target_link_libraries(kio_settings KF5::KIOCore Qt5::Network) +set_target_properties(kio_settings PROPERTIES OUTPUT_NAME "settings") + +install(TARGETS kio_settings DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio ) +install( FILES settings.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) diff --git a/settings/Messages.sh b/settings/Messages.sh new file mode 100644 index 0000000..c88ecbe --- /dev/null +++ b/settings/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT `find . -name "*.cc" -o -name "*.cpp" -o -name "*.h"` -o $podir/kio5_settings.pot diff --git a/settings/kio_settings.cpp b/settings/kio_settings.cpp new file mode 100644 index 0000000..83657c5 --- /dev/null +++ b/settings/kio_settings.cpp @@ -0,0 +1,215 @@ +/* This file is part of the KDE project + Copyright (C) 2003 Joseph Wenninger + Copyright (C) 2008 David Faure + + 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 +#include + +#include +#include +#include +#include + +#include + +class SettingsProtocol : public KIO::SlaveBase +{ +public: + SettingsProtocol(const QByteArray &protocol, const QByteArray &pool, const QByteArray &app); + ~SettingsProtocol() override; + void get( const QUrl& url ) override; + void stat(const QUrl& url) override; + void listDir(const QUrl& url) override; + +private: + void initSettingsData(); + +private: + bool m_settingsDataLoaded; + KService::List m_modules; + QHash m_settingsServiceLookup; + KService::List m_categories; + QHash m_categoryLookup; +}; + +extern "C" { + Q_DECL_EXPORT int kdemain( int argc, char **argv ) + { + QCoreApplication app(argc, argv); + app.setApplicationName("kio_settings"); + qDebug() << "kdemain for settings kioslave"; + SettingsProtocol slave(argv[1], argv[2], argv[3]); + slave.dispatchLoop(); + return 0; + } +} + +static void createFileEntry(KIO::UDSEntry& entry, const KService::Ptr& service) +{ + entry.clear(); + entry.reserve(9); + entry.fastInsert(KIO::UDSEntry::UDS_NAME, KIO::encodeFileName(service->desktopEntryName())); + entry.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, service->name()); // translated name + entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG); + entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, 0500); + entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, "application/x-desktop"); + entry.fastInsert(KIO::UDSEntry::UDS_SIZE, 0); + entry.fastInsert(KIO::UDSEntry::UDS_LOCAL_PATH, QStandardPaths::locate(QStandardPaths::GenericDataLocation, QLatin1String("kservices5/") + service->entryPath())); + entry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME, time(nullptr)); + entry.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, service->icon()); +} + +static void createDirEntry(KIO::UDSEntry& entry, const QString& name, const QString& iconName) +{ + entry.clear(); + entry.reserve(6); // +1 for UDS_DISPLAY_NAME + entry.fastInsert( KIO::UDSEntry::UDS_NAME, name ); + entry.fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR ); + entry.fastInsert( KIO::UDSEntry::UDS_ACCESS, 0500 ); + entry.fastInsert( KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory" ); + entry.fastInsert( KIO::UDSEntry::UDS_ICON_NAME, iconName ); +} + +SettingsProtocol::SettingsProtocol( const QByteArray &protocol, const QByteArray &pool, const QByteArray &app) + : SlaveBase( protocol, pool, app ), + m_settingsDataLoaded(false) +{ +} + +SettingsProtocol::~SettingsProtocol() +{ +} + +void SettingsProtocol::initSettingsData() +{ + if (m_settingsDataLoaded) + return; + + // The code for settings:/ was inspired by kdebase/workspace/systemsettings/mainwindow.cpp readMenu(). + + m_modules = KServiceTypeTrader::self()->query("KCModule"); + m_categories = KServiceTypeTrader::self()->query("SystemSettingsCategory"); + + for (int i = 0; i < m_categories.size(); ++i) { + const KService::Ptr service = m_categories.at(i); + const QString category = service->property("X-KDE-System-Settings-Category").toString(); + m_categoryLookup.insert(category, service); + } + for (int i = 0; i < m_modules.size(); ++i) { + const KService::Ptr service = m_modules.at(i); + // Since modules have a unique name, we can just look them up by name, + // no need to create a real hierarchical structure just for stat(). + //const QString category = service->property("X-KDE-System-Settings-Parent-Category").toString(); + m_settingsServiceLookup.insert(service->desktopEntryName(), service); + } +} + +void SettingsProtocol::stat(const QUrl& url) +{ + initSettingsData(); + const QString fileName = url.fileName(); + qDebug() << fileName; + + KIO::UDSEntry entry; + // Root dir? + if (fileName.isEmpty()) { + createDirEntry(entry, ".", "preferences-system"); + statEntry(entry); + finished(); + return; + } + + // Is it a category? + QHash::const_iterator it = m_categoryLookup.constFind(fileName); + if (it != m_categoryLookup.constEnd()) { + const KService::Ptr service = it.value(); + const QString category = service->property("X-KDE-System-Settings-Category").toString(); + createDirEntry(entry, category, service->icon()); + entry.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, service->name()); + statEntry(entry); + finished(); + return; + } else { + // Is it a config module? + it = m_settingsServiceLookup.constFind(fileName); + if (it != m_settingsServiceLookup.constEnd()) { + const KService::Ptr service = it.value(); + createFileEntry(entry, service); + statEntry(entry); + finished(); + return; + } + } + + error(KIO::ERR_DOES_NOT_EXIST, url.url()); +} + +void SettingsProtocol::listDir(const QUrl& url) +{ + initSettingsData(); + const QString fileName = url.fileName(); + if (!fileName.isEmpty() && !m_categoryLookup.contains(fileName)) { + error(KIO::ERR_DOES_NOT_EXIST, fileName); + return; + } + + unsigned int count = 0; + KIO::UDSEntry entry; + + // scan for any categories at this level and add them + for (int i = 0; i < m_categories.size(); ++i) { + const KService::Ptr service = m_categories.at(i); + QString parentCategory = service->property("X-KDE-System-Settings-Parent-Category").toString(); + QString category = service->property("X-KDE-System-Settings-Category").toString(); + if (parentCategory == fileName) { + //KUrl dirUrl = url; + //dirUrl.addPath(category); + createDirEntry(entry, category, service->icon()); + entry.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, service->name()); + listEntry(entry); + ++count; + } + } + + // scan for any modules at this level and add them + for (int i = 0; i < m_modules.size(); ++i) { + const KService::Ptr service = m_modules.at(i); + const QString category = service->property("X-KDE-System-Settings-Parent-Category").toString(); + if (!fileName.isEmpty() && category == fileName) { + createFileEntry(entry, service); + listEntry(entry); + ++count; + } + } + + totalSize(count); + finished(); +} + +void SettingsProtocol::get( const QUrl & url ) +{ + KService::Ptr service = KService::serviceByDesktopName(url.fileName()); + if (service && service->isValid()) { + QUrl redirUrl = QUrl::fromLocalFile(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QLatin1String("kservices5/") + service->entryPath())); + redirection(redirUrl); + finished(); + } else { + error( KIO::ERR_IS_DIRECTORY, url.toDisplayString() ); + } +} diff --git a/settings/settings.protocol b/settings/settings.protocol new file mode 100644 index 0000000..002512a --- /dev/null +++ b/settings/settings.protocol @@ -0,0 +1,15 @@ +[Protocol] +exec=kf5/kio/settings +protocol=settings +input=none +output=filesystem +listing=Name,Type,Size,Date,Access,Owner,Group,Link, +reading=true +writing=false +makedir=false +deleting=false +linking=false +moving=false +Icon=preferences-system +maxInstances=2 +Class=:local diff --git a/sftp/AUTHORS b/sftp/AUTHORS new file mode 100644 index 0000000..93e5b05 --- /dev/null +++ b/sftp/AUTHORS @@ -0,0 +1,3 @@ +Andreas Schneider +Dawit Alemayehu +Lucas Fisher diff --git a/sftp/CMakeLists.txt b/sftp/CMakeLists.txt new file mode 100644 index 0000000..6c45ed8 --- /dev/null +++ b/sftp/CMakeLists.txt @@ -0,0 +1,32 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_sftp\") + +include_directories(${LIBSSH_INCLUDE_DIR}) +if(WIN32) +include_directories(${QT_MKSPECS_DIR}/default) # for SYMLINKS +endif() +set(kio_sftp_SRCS kio_sftp.cpp) + +ecm_qt_declare_logging_category(kio_sftp_SRCS + HEADER kio_sftp_debug.h + IDENTIFIER KIO_SFTP_LOG + CATEGORY_NAME log_kio_sftp) + +ecm_qt_declare_logging_category(kio_sftp_SRCS + HEADER kio_sftp_trace_debug.h + IDENTIFIER KIO_SFTP_TRACE_LOG + CATEGORY_NAME log_kio_sftp.trace) + +add_library(kio_sftp MODULE ${kio_sftp_SRCS}) +target_link_libraries(kio_sftp + KF5::KIOCore + KF5::WidgetsAddons # KMessageBox + KF5::I18n + Qt5::Network + ssh) +set_target_properties(kio_sftp PROPERTIES + OUTPUT_NAME "sftp" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf5/kio") + +install(TARGETS kio_sftp DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + +install( FILES sftp.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) diff --git a/sftp/Messages.sh b/sftp/Messages.sh new file mode 100644 index 0000000..a84a109 --- /dev/null +++ b/sftp/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kio5_sftp.pot diff --git a/sftp/kio_sftp.cpp b/sftp/kio_sftp.cpp new file mode 100644 index 0000000..d262c95 --- /dev/null +++ b/sftp/kio_sftp.cpp @@ -0,0 +1,2810 @@ +/* + * Copyright (c) 2001 Lucas Fisher + * Copyright (c) 2009 Andreas Schneider + * Copyright (c) 2020 Harald Sitter + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License (LGPL) 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 "kio_sftp.h" + +#include +#include "kio_sftp_debug.h" +#include "kio_sftp_trace_debug.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#ifdef Q_OS_WIN +#include // for permissions +using namespace std::filesystem; +#include +#else +#include +#endif + +#define KIO_SFTP_SPECIAL_TIMEOUT 30 + +// How big should each data packet be? Definitely not bigger than 64kb or +// you will overflow the 2 byte size variable in a sftp packet. +// TODO: investigate what size we should have and consider changing. +// this seems too large... +// from the RFC: +// The maximum size of a packet is in practice determined by the client +// (the maximum size of read or write requests that it sends, plus a few +// bytes of packet overhead). All servers SHOULD support packets of at +// least 34000 bytes (where the packet size refers to the full length, +// including the header above). This should allow for reads and writes of +// at most 32768 bytes. +// In practice that means we can assume that the server supports 32kb, +// it may be more or it could be less. Since there's not really a system in place to +// figure out the maximum (and at least openssh arbitrarily resets the entire +// session if it finds a packet that is too large +// [https://bugs.kde.org/show_bug.cgi?id=404890]) we ought to be more conservative! +// At the same time there's no bug reports about the 60k requests being too large so +// perhaps all popular servers effectively support at least 64k. +#define MAX_XFER_BUF_SIZE (60 * 1024) + +#define KSFTP_ISDIR(sb) (sb->type == SSH_FILEXFER_TYPE_DIRECTORY) + +// sftp_attributes must be freed. Use this ScopedPtr to ensure they always are! +struct ScopedPointerCustomDeleter +{ + static inline void cleanup(sftp_attributes attr) + { + sftp_attributes_free(attr); + } +}; +typedef QScopedPointer SFTPAttributesPtr; + +using namespace KIO; +extern "C" +{ +int Q_DECL_EXPORT kdemain( int argc, char **argv ) +{ + QCoreApplication app(argc, argv); + app.setApplicationName("kio_sftp"); + + qCDebug(KIO_SFTP_LOG) << "*** Starting kio_sftp "; + + if (argc != 4) { + qCDebug(KIO_SFTP_LOG) << "Usage: kio_sftp protocol domain-socket1 domain-socket2"; + exit(-1); + } + + SFTPSlave slave(argv[2], argv[3]); + slave.dispatchLoop(); + + qCDebug(KIO_SFTP_LOG) << "*** kio_sftp Done"; + return 0; +} +} + +// Converts SSH error into KIO error. Only must be called for error handling +// as this will always return an error state and never NoError. +static int toKIOError(const int err) +{ + switch (err) { + case SSH_FX_NO_SUCH_FILE: + case SSH_FX_NO_SUCH_PATH: + return KIO::ERR_DOES_NOT_EXIST; + case SSH_FX_PERMISSION_DENIED: + return KIO::ERR_ACCESS_DENIED; + case SSH_FX_FILE_ALREADY_EXISTS: + return KIO::ERR_FILE_ALREADY_EXIST; + case SSH_FX_INVALID_HANDLE: + return KIO::ERR_MALFORMED_URL; + case SSH_FX_OP_UNSUPPORTED: + return KIO::ERR_UNSUPPORTED_ACTION; + case SSH_FX_BAD_MESSAGE: + return KIO::ERR_UNKNOWN; + default: + return KIO::ERR_INTERNAL; + } + // We should not get here. When this function gets called we've + // encountered an error on the libssh side, this needs to be mapped to *any* + // KIO error. Not mapping is not an option at this point, even if the ssh err + // is wrong or 'ok'. + Q_UNREACHABLE(); + return KIO::ERR_UNKNOWN; +} + +// Writes 'len' bytes from 'buf' to the file handle 'fd'. +static int writeToFile(int fd, const char *buf, int len) +{ + while (len > 0) { + size_t lenSize = static_cast(len); // len is always >> 0 and, being an int, always << size_t + ssize_t written = write(fd, buf, lenSize); + + if (written >= 0) { + buf += written; + len -= written; + continue; + } + + switch(errno) { + case EINTR: + case EAGAIN: + continue; + case EPIPE: + return ERR_CONNECTION_BROKEN; + case ENOSPC: + return ERR_DISK_FULL; + default: + return ERR_CANNOT_WRITE; + } + } + return 0; +} + +static bool wasUsernameChanged(const QString &username, const KIO::AuthInfo &info) +{ + QString loginName (username); + // If username is empty, assume the current logged in username. Why ? + // Because libssh's SSH_OPTIONS_USER will default to that when it is not + // set and it won't be set unless the user explicitly typed a user user + // name as part of the request URL. + if (loginName.isEmpty()) { + KUser u; + loginName = u.loginName(); + } + return (loginName != info.username); +} + +// The callback function for libssh +static int auth_callback(const char *prompt, char *buf, size_t len, + int echo, int verify, void *userdata) +{ + if (userdata == nullptr) { + return -1; + } + + SFTPInternal *slave = static_cast(userdata); + + if (slave->auth_callback(prompt, buf, len, echo, verify, userdata) < 0) { + return -1; + } + + return 0; +} + +static void log_callback(int priority, const char *function, const char *buffer, + void *userdata) +{ + if (userdata == nullptr) { + return; + } + + SFTPInternal *slave = static_cast(userdata); + + slave->log_callback(priority, function, buffer, userdata); +} + +int SFTPInternal::auth_callback(const char *prompt, char *buf, size_t len, + int echo, int verify, void *userdata) +{ + Q_UNUSED(echo) + Q_UNUSED(verify) + Q_UNUSED(userdata) + + QString errMsg; + if (!mPublicKeyAuthInfo) { + mPublicKeyAuthInfo = new KIO::AuthInfo; + } else { + errMsg = i18n("Incorrect or invalid passphrase"); + } + + mPublicKeyAuthInfo->url.setScheme(QLatin1String("sftp")); + mPublicKeyAuthInfo->url.setHost(mHost); + if (mPort > 0 && mPort != DEFAULT_SFTP_PORT) { + mPublicKeyAuthInfo->url.setPort(mPort); + } + mPublicKeyAuthInfo->url.setUserName(mUsername); + + QUrl u (mPublicKeyAuthInfo->url); + u.setPath(QString()); + mPublicKeyAuthInfo->comment = u.url(); + mPublicKeyAuthInfo->readOnly = true; + mPublicKeyAuthInfo->prompt = QString::fromUtf8(prompt); + mPublicKeyAuthInfo->keepPassword = false; // don't save passwords for public key, + // that's the task of ssh-agent. + mPublicKeyAuthInfo->setExtraField(QLatin1String("hide-username-line"), true); + mPublicKeyAuthInfo->setModified(false); + + qCDebug(KIO_SFTP_LOG) << "Entering authentication callback, prompt=" << mPublicKeyAuthInfo->prompt; + + if (q->openPasswordDialogV2(*mPublicKeyAuthInfo, errMsg) != 0) { + qCDebug(KIO_SFTP_LOG) << "User canceled public key password dialog"; + return -1; + } + + strncpy(buf, mPublicKeyAuthInfo->password.toUtf8().constData(), len - 1); + + mPublicKeyAuthInfo->password.fill('x'); + mPublicKeyAuthInfo->password.clear(); + + return 0; +} + +void SFTPInternal::log_callback(int priority, const char *function, const char *buffer, + void *userdata) +{ + Q_UNUSED(userdata) + qCDebug(KIO_SFTP_LOG) << "[" << function << "] (" << priority << ") " << buffer; +} + +Result SFTPInternal::init() +{ + qCDebug(KIO_SFTP_LOG) << "pid = " << qApp->applicationPid(); + qCDebug(KIO_SFTP_LOG) << "debug = " << getenv("KIO_SFTP_LOG_VERBOSITY"); + + // Members are 'value initialized' to zero because of non-user defined ()! + mCallbacks = new struct ssh_callbacks_struct(); + if (mCallbacks == nullptr) { + return Result::fail(KIO::ERR_OUT_OF_MEMORY, i18n("Could not allocate callbacks")); + } + + mCallbacks->userdata = this; + mCallbacks->auth_function = ::auth_callback; + + ssh_callbacks_init(mCallbacks) + + bool ok; + int level = qEnvironmentVariableIntValue("KIO_SFTP_LOG_VERBOSITY", &ok); + if (ok) { + int rc = ssh_set_log_level(level); + if (rc != SSH_OK) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set log verbosity.")); + } + + rc = ssh_set_log_userdata(this); + if (rc != SSH_OK) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set log userdata.")); + } + + rc = ssh_set_log_callback(::log_callback); + if (rc != SSH_OK) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set log callback.")); + } + } + + return Result::pass(); +} + +void SFTPSlave::virtual_hook(int id, void *data) +{ + switch(id) { + case SlaveBase::GetFileSystemFreeSpace: { + QUrl *url = static_cast(data); + finalize(d->fileSystemFreeSpace(*url)); + return; + } + case SlaveBase::Truncate: { + auto length = static_cast(data); + maybeError(d->truncate(*length)); + return; + } + } + SlaveBase::virtual_hook(id, data); +} + +void SFTPSlave::finalize(const Result &result) +{ + if (!result.success) { + error(result.error, result.errorString); + return; + } + finished(); +} + +void SFTPSlave::maybeError(const Result &result) +{ + if (!result.success) { + error(result.error, result.errorString); + } +} + +int SFTPInternal::authenticateKeyboardInteractive(AuthInfo &info) +{ + int err = ssh_userauth_kbdint(mSession, nullptr, nullptr); + + while (err == SSH_AUTH_INFO) { + const QString name = QString::fromUtf8(ssh_userauth_kbdint_getname(mSession)); + const QString instruction = QString::fromUtf8(ssh_userauth_kbdint_getinstruction(mSession)); + const int n = ssh_userauth_kbdint_getnprompts(mSession); + + qCDebug(KIO_SFTP_LOG) << "name=" << name << " instruction=" << instruction << " prompts=" << n; + + for (int iInt = 0; iInt < n; ++iInt) { + unsigned int i = static_cast(iInt); // can only be >0 + char echo; + const char *answer = ""; + + const QString prompt = QString::fromUtf8(ssh_userauth_kbdint_getprompt(mSession, i, &echo)); + qCDebug(KIO_SFTP_LOG) << "prompt=" << prompt << " echo=" << QString::number(echo); + if (echo) { + // See RFC4256 Section 3.3 User Interface + KIO::AuthInfo infoKbdInt; + + infoKbdInt.url.setScheme("sftp"); + infoKbdInt.url.setHost(mHost); + if (mPort > 0 && mPort != DEFAULT_SFTP_PORT) { + infoKbdInt.url.setPort(mPort); + } + + if (!name.isEmpty()) { + infoKbdInt.caption = QString(i18n("SFTP Login") + " - " + name); + } else { + infoKbdInt.caption = i18n("SFTP Login"); + } + + infoKbdInt.comment = "sftp://" + mUsername + "@" + mHost; + + QString newPrompt; + if (!instruction.isEmpty()) { + newPrompt = instruction + "

        "; + } + newPrompt.append(prompt); + infoKbdInt.prompt = newPrompt; + + infoKbdInt.readOnly = false; + infoKbdInt.keepPassword = false; + + if (q->openPasswordDialogV2(infoKbdInt, i18n("Use the username input field to answer this question.")) == KJob::NoError) { + qCDebug(KIO_SFTP_LOG) << "Got the answer from the password dialog"; + answer = info.username.toUtf8().constData(); + } + + if (ssh_userauth_kbdint_setanswer(mSession, i, answer) < 0) { + qCDebug(KIO_SFTP_LOG) << "An error occurred setting the answer: " + << ssh_get_error(mSession); + return SSH_AUTH_ERROR; + } + break; + } else { + if (prompt.startsWith(QLatin1String("password:"), Qt::CaseInsensitive)) { + info.prompt = i18n("Please enter your password."); + } else { + info.prompt = prompt; + } + info.comment = info.url.url(); + info.commentLabel = i18n("Site:"); + info.setExtraField(QLatin1String("hide-username-line"), true); + + if (q->openPasswordDialogV2(info) == KJob::NoError) { + qCDebug(KIO_SFTP_LOG) << "Got the answer from the password dialog"; + answer = info.password.toUtf8().constData(); + } + + if (ssh_userauth_kbdint_setanswer(mSession, i, answer) < 0) { + qCDebug(KIO_SFTP_LOG) << "An error occurred setting the answer: " + << ssh_get_error(mSession); + return SSH_AUTH_ERROR; + } + } + } + err = ssh_userauth_kbdint(mSession, nullptr, nullptr); + } + + return err; +} + +Result SFTPInternal::reportError(const QUrl &url, const int err) +{ + qCDebug(KIO_SFTP_LOG) << "url = " << url << " - err=" << err; + + const int kioError = toKIOError(err); + Q_ASSERT(kioError != KJob::NoError); + + return Result::fail(kioError, url.toDisplayString()); +} + +bool SFTPInternal::createUDSEntry(const QString &filename, const QByteArray &path, + UDSEntry &entry, short int details) +{ + mode_t access; + char *link; + bool isBrokenLink = false; + long long fileType = QT_STAT_REG; + uint64_t size = 0U; + + Q_ASSERT(entry.count() == 0); + entry.reserve(10); + + SFTPAttributesPtr sb(sftp_lstat(mSftp, path.constData())); + if (sb == nullptr) { + qCDebug(KIO_SFTP_LOG) << "Failed to stat" << path << sftp_get_error(mSftp); + return false; + } + + entry.fastInsert(KIO::UDSEntry::UDS_NAME, filename); + + if (sb->type == SSH_FILEXFER_TYPE_SYMLINK) { + link = sftp_readlink(mSftp, path.constData()); + if (link == nullptr) { + qCDebug(KIO_SFTP_LOG) << "Failed to readlink despite this being a link!" << path << sftp_get_error(mSftp); + return false; + } + entry.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, QFile::decodeName(link)); + free(link); + // A symlink -> follow it only if details > 1 + if (details > 1) { + sftp_attributes sb2 = sftp_stat(mSftp, path.constData()); + if (sb2 == nullptr) { + isBrokenLink = true; + } else { + sb.reset(sb2); + } + } + } + + if (isBrokenLink) { + // It is a link pointing to nowhere + fileType = QT_STAT_MASK - 1; +#ifdef Q_OS_WIN + access = static_cast(perms::owner_all | perms::group_all | perms::others_all); +#else + access = S_IRWXU | S_IRWXG | S_IRWXO; +#endif + size = 0LL; + } else { + switch (sb->type) { + case SSH_FILEXFER_TYPE_REGULAR: + fileType = QT_STAT_REG; + break; + case SSH_FILEXFER_TYPE_DIRECTORY: + fileType = QT_STAT_DIR; + break; + case SSH_FILEXFER_TYPE_SYMLINK: + fileType = QT_STAT_LNK; + break; + case SSH_FILEXFER_TYPE_SPECIAL: + case SSH_FILEXFER_TYPE_UNKNOWN: + fileType = QT_STAT_MASK - 1; + break; + } + access = sb->permissions & 07777; + size = sb->size; + } + entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, fileType); + entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, access); + entry.fastInsert(KIO::UDSEntry::UDS_SIZE, size); + + if (details > 0) { + if (sb->owner) { + entry.fastInsert(KIO::UDSEntry::UDS_USER, QString::fromUtf8(sb->owner)); + } else { + entry.fastInsert(KIO::UDSEntry::UDS_USER, QString::number(sb->uid)); + } + + if (sb->group) { + entry.fastInsert(KIO::UDSEntry::UDS_GROUP, QString::fromUtf8(sb->group)); + } else { + entry.fastInsert(KIO::UDSEntry::UDS_GROUP, QString::number(sb->gid)); + } + + entry.fastInsert(KIO::UDSEntry::UDS_ACCESS_TIME, sb->atime); + entry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME, sb->mtime); + + if (sb->flags & SSH_FILEXFER_ATTR_CREATETIME) { + // Availability depends on outside factors. + // https://bugs.kde.org/show_bug.cgi?id=375305 + entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME, sb->createtime); + } + } + + return true; +} + +QString SFTPInternal::canonicalizePath(const QString &path) +{ + qCDebug(KIO_SFTP_LOG) << "Path to canonicalize: " << path; + QString cPath; + char *sPath = nullptr; + + if (path.isEmpty()) { + return cPath; + } + + sPath = sftp_canonicalize_path(mSftp, path.toUtf8().constData()); + if (sPath == nullptr) { + qCDebug(KIO_SFTP_LOG) << "Could not canonicalize path: " << path; + return cPath; + } + + cPath = QFile::decodeName(sPath); + ssh_string_free_char(sPath); + + qCDebug(KIO_SFTP_LOG) << "Canonicalized path: " << cPath; + + return cPath; +} + +SFTPInternal::SFTPInternal(SFTPSlave *qptr) + : q(qptr) +{ +} + +SFTPInternal::~SFTPInternal() { + qCDebug(KIO_SFTP_LOG) << "pid = " << qApp->applicationPid(); + closeConnection(); + + delete mCallbacks; + delete mPublicKeyAuthInfo; // for precaution + + /* cleanup and shut down cryto stuff */ + ssh_finalize(); +} + +void SFTPInternal::setHost(const QString& host, quint16 port, const QString& user, const QString& pass) { + qCDebug(KIO_SFTP_LOG) << user << "@" << host << ":" << port; + + // Close connection if the request is to another server... + if (host != mHost || port != mPort || + user != mUsername || pass != mPassword) { + closeConnection(); + } + + mHost = host; + mPort = port; + mUsername = user; + mPassword = pass; +} + +Result SFTPInternal::sftpOpenConnection(const AuthInfo &info) +{ + mSession = ssh_new(); + if (mSession == nullptr) { + return Result::fail(KIO::ERR_OUT_OF_MEMORY, i18n("Could not create a new SSH session.")); + } + + long timeout_sec = 30, timeout_usec = 0; + + qCDebug(KIO_SFTP_LOG) << "Creating the SSH session and setting options"; + + // Set timeout + int rc = ssh_options_set(mSession, SSH_OPTIONS_TIMEOUT, &timeout_sec); + if (rc < 0) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set a timeout.")); + } + rc = ssh_options_set(mSession, SSH_OPTIONS_TIMEOUT_USEC, &timeout_usec); + if (rc < 0) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set a timeout.")); + } + +#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 8, 0) + // Disable Nagle's Algorithm (TCP_NODELAY). Usually faster for sftp. + bool nodelay = true; + rc = ssh_options_set(mSession, SSH_OPTIONS_NODELAY, &nodelay); + if (rc < 0) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not disable Nagle's Algorithm.")); + } +#endif // 0.8.0 + + // Don't use any compression + rc = ssh_options_set(mSession, SSH_OPTIONS_COMPRESSION_C_S, "none"); + if (rc < 0) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set compression.")); + } + + rc = ssh_options_set(mSession, SSH_OPTIONS_COMPRESSION_S_C, "none"); + if (rc < 0) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set compression.")); + } + + // Set host and port + rc = ssh_options_set(mSession, SSH_OPTIONS_HOST, mHost.toUtf8().constData()); + if (rc < 0) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set host.")); + } + + if (mPort > 0) { + rc = ssh_options_set(mSession, SSH_OPTIONS_PORT, &mPort); + if (rc < 0) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set port.")); + } + } + + // Set the username + if (!info.username.isEmpty()) { + rc = ssh_options_set(mSession, SSH_OPTIONS_USER, info.username.toUtf8().constData()); + if (rc < 0) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not set username.")); + } + } + + // Read ~/.ssh/config + rc = ssh_options_parse_config(mSession, nullptr); + if (rc < 0) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not parse the config file.")); + } + + ssh_set_callbacks(mSession, mCallbacks); + + qCDebug(KIO_SFTP_LOG) << "Trying to connect to the SSH server"; + + unsigned int effectivePort; + if (mPort > 0) { + effectivePort = mPort; + } else { + effectivePort = DEFAULT_SFTP_PORT; + ssh_options_get_port(mSession, &effectivePort); + } + + qCDebug(KIO_SFTP_LOG) << "username=" << mUsername << ", host=" << mHost << ", port=" << effectivePort; + + q->infoMessage(xi18n("Opening SFTP connection to host %1:%2", mHost, QString::number(effectivePort))); + + /* try to connect */ + rc = ssh_connect(mSession); + if (rc < 0) { + const QString errorString = QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, errorString); + } + + return Result::pass(); +} + +#if LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 8, 3) +Result SFTPInternal::openConnection() +{ + if (mConnected) { + return Result::pass(); + } + + if (mHost.isEmpty()) { + qCDebug(KIO_SFTP_LOG) << "openConnection(): Need hostname..."; + return Result::fail(KIO::ERR_UNKNOWN_HOST, QString()); + } + + AuthInfo info; + info.url.setScheme("sftp"); + info.url.setHost(mHost); + if ( mPort > 0 && mPort != DEFAULT_SFTP_PORT ) { + info.url.setPort(mPort); + } + info.url.setUserName(mUsername); + info.username = mUsername; + + // Check for cached authentication info if no password is specified... + if (mPassword.isEmpty()) { + qCDebug(KIO_SFTP_LOG) << "checking cache: info.username =" << info.username + << ", info.url =" << info.url.toDisplayString(); + q->checkCachedAuthentication(info); + } else { + info.password = mPassword; + } + + // Start the ssh connection. + QString msg; // msg for dialog box + QString caption; // dialog box caption + unsigned char *hash = nullptr; // the server hash + size_t hlen; + ssh_key srv_pubkey = nullptr; + const char *srv_pubkey_type = nullptr; + char *fingerprint = nullptr; + enum ssh_known_hosts_e state; + int rc; + + // Attempt to start a ssh session and establish a connection with the server. + const Result openResult = sftpOpenConnection(info); + if (!openResult.success) { + return openResult; + } + + qCDebug(KIO_SFTP_LOG) << "Getting the SSH server hash"; + + /* get the hash */ + rc = ssh_get_server_publickey(mSession, &srv_pubkey); + if (rc < 0) { + const QString errorString = QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, errorString); + } + + srv_pubkey_type = ssh_key_type_to_char(ssh_key_type(srv_pubkey)); + if (srv_pubkey_type == nullptr) { + ssh_key_free(srv_pubkey); + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, + i18n("Could not get server public key type name")); + } + + rc = ssh_get_publickey_hash(srv_pubkey, + SSH_PUBLICKEY_HASH_SHA256, + &hash, + &hlen); + ssh_key_free(srv_pubkey); + if (rc != SSH_OK) { + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, + i18n("Could not create hash from server public key")); + } + + fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA256, + hash, + hlen); + ssh_string_free_char((char *)hash); + if (fingerprint == nullptr) { + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, + i18n("Could not create fingerprint for server public key")); + } + + qCDebug(KIO_SFTP_LOG) << "Checking if the SSH server is known"; + + /* check the server public key hash */ + state = ssh_session_is_known_server(mSession); + switch (state) { + case SSH_KNOWN_HOSTS_OTHER: { + ssh_string_free_char(fingerprint); + const QString errorString = i18n("An %1 host key for this server was " + "not found, but another type of key exists.\n" + "An attacker might change the default server key to confuse your " + "client into thinking the key does not exist.\n" + "Please contact your system administrator.\n" + "%2", + QString::fromUtf8(srv_pubkey_type), + QString::fromUtf8(ssh_get_error(mSession))); + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, errorString); + } + case SSH_KNOWN_HOSTS_CHANGED: { + const QString errorString = i18n("The host key for the server %1 has changed.\n" + "This could either mean that DNS SPOOFING is happening or the IP " + "address for the host and its host key have changed at the same time.\n" + "The fingerprint for the %2 key sent by the remote host is:\n" + " SHA256:%3\n" + "Please contact your system administrator.\n%4", + mHost, + QString::fromUtf8(srv_pubkey_type), + QString::fromUtf8(fingerprint), + QString::fromUtf8(ssh_get_error(mSession))); + ssh_string_free_char(fingerprint); + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, errorString); + } + case SSH_KNOWN_HOSTS_NOT_FOUND: + case SSH_KNOWN_HOSTS_UNKNOWN: { + caption = i18n("Warning: Cannot verify host's identity."); + msg = i18n("The authenticity of host %1 cannot be established.\n" + "The %2 key fingerprint is: %3\n" + "Are you sure you want to continue connecting?", + mHost, + QString::fromUtf8(srv_pubkey_type), + QString::fromUtf8(fingerprint)); + ssh_string_free_char(fingerprint); + + if (KMessageBox::Yes != q->messageBox(SlaveBase::WarningYesNo, msg, caption)) { + closeConnection(); + return Result::fail(KIO::ERR_USER_CANCELED); + } + + /* write the known_hosts file */ + qCDebug(KIO_SFTP_LOG) << "Adding server to known_hosts file."; + rc = ssh_session_update_known_hosts(mSession); + if (rc != SSH_OK) { + const QString errorString = QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_USER_CANCELED,errorString); + } + break; + } + case SSH_KNOWN_HOSTS_ERROR: + ssh_string_free_char(fingerprint); + return Result::fail(KIO::ERR_SLAVE_DEFINED, + QString::fromUtf8(ssh_get_error(mSession))); + case SSH_KNOWN_HOSTS_OK: + break; + } + + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with the server"; + + // Try to login without authentication + rc = ssh_userauth_none(mSession, nullptr); + if (rc == SSH_AUTH_ERROR) { + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + + // This NEEDS to be called after ssh_userauth_none() !!! + int method = ssh_auth_list(mSession); + if (rc != SSH_AUTH_SUCCESS && method == 0) { + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed. The server " + "didn't send any authentication methods")); + } + + // Try to authenticate with public key first + if (rc != SSH_AUTH_SUCCESS && (method & SSH_AUTH_METHOD_PUBLICKEY)) { + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with public key"; + for(;;) { + rc = ssh_userauth_publickey_auto(mSession, nullptr, nullptr); + if (rc == SSH_AUTH_ERROR) { + qCDebug(KIO_SFTP_LOG) << "Public key authentication failed:" << + QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + clearPubKeyAuthInfo(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } else if (rc != SSH_AUTH_DENIED || !mPublicKeyAuthInfo || !mPublicKeyAuthInfo->isModified()) { + clearPubKeyAuthInfo(); + break; + } + } + } + + // Try to authenticate with GSSAPI + if (rc != SSH_AUTH_SUCCESS && (method & SSH_AUTH_METHOD_GSSAPI_MIC)) { + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with GSSAPI"; + rc = ssh_userauth_gssapi(mSession); + if (rc == SSH_AUTH_ERROR) { + qCDebug(KIO_SFTP_LOG) << "Public key authentication failed:" << + QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + } + + // Try to authenticate with keyboard interactive + if (rc != SSH_AUTH_SUCCESS && (method & SSH_AUTH_METHOD_INTERACTIVE)) { + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with keyboard interactive"; + AuthInfo info2 (info); + rc = authenticateKeyboardInteractive(info2); + if (rc == SSH_AUTH_SUCCESS) { + info = info2; + } else if (rc == SSH_AUTH_ERROR) { + qCDebug(KIO_SFTP_LOG) << "Keyboard interactive authentication failed:" + << QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + } + + // Try to authenticate with password + if (rc != SSH_AUTH_SUCCESS && (method & SSH_AUTH_METHOD_PASSWORD)) { + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with password"; + + info.caption = i18n("SFTP Login"); + info.prompt = i18n("Please enter your username and password."); + info.comment = info.url.url(); + info.commentLabel = i18n("Site:"); + bool isFirstLoginAttempt = true; + + for(;;) { + if (!isFirstLoginAttempt || info.password.isEmpty()) { + info.keepPassword = true; // make the "keep Password" check box visible to the user. + info.setModified(false); + + QString username (info.username); + const QString errMsg(isFirstLoginAttempt ? QString() : i18n("Incorrect username or password")); + + qCDebug(KIO_SFTP_LOG) << "Username:" << username << "first attempt?" + << isFirstLoginAttempt << "error:" << errMsg; + + // Handle user canceled or dialog failed to open... + + int errCode = q->openPasswordDialogV2(info, errMsg); + if (errCode != 0) { + qCDebug(KIO_SFTP_LOG) << "User canceled password/retry dialog"; + closeConnection(); + return Result::fail(errCode, QString()); + } + + // If the user name changes, we have to re-establish connection again + // since the user name must always be set before calling ssh_connect. + if (wasUsernameChanged(username, info)) { + qCDebug(KIO_SFTP_LOG) << "Username changed to" << info.username; + if (!info.url.userName().isEmpty()) { + info.url.setUserName(info.username); + } + closeConnection(); + const auto result = sftpOpenConnection(info); + if (!result.success) { + return result; + } + } + } + + rc = ssh_userauth_password(mSession, info.username.toUtf8().constData(), info.password.toUtf8().constData()); + if (rc == SSH_AUTH_SUCCESS) { + break; + } else if (rc == SSH_AUTH_ERROR) { + qCDebug(KIO_SFTP_LOG) << "Password authentication failed:" + << QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + + isFirstLoginAttempt = false; // failed attempt to login. + info.password.clear(); // clear the password after failed attempts. + } + } + + // If we're still not authenticated then we need to leave. + if (rc != SSH_AUTH_SUCCESS) { + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + + // start sftp session + qCDebug(KIO_SFTP_LOG) << "Trying to request the sftp session"; + mSftp = sftp_new(mSession); + if (mSftp == nullptr) { + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Unable to request the SFTP subsystem. " + "Make sure SFTP is enabled on the server.")); + } + + qCDebug(KIO_SFTP_LOG) << "Trying to initialize the sftp session"; + if (sftp_init(mSftp) < 0) { + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Could not initialize the SFTP session.")); + } + + // Login succeeded! + q->infoMessage(i18n("Successfully connected to %1", mHost)); + if (info.keepPassword) { + qCDebug(KIO_SFTP_LOG) << "Caching info.username = " << info.username + << ", info.url = " << info.url.toDisplayString(); + q->cacheAuthentication(info); + } + + // Update the original username in case it was changed! + if (!mUsername.isEmpty()) { + mUsername = info.username; + } + + q->setTimeoutSpecialCommand(KIO_SFTP_SPECIAL_TIMEOUT); + + mConnected = true; + q->connected(); + + info.password.fill('x'); + info.password.clear(); + + return Result::pass(); +} +#else // < 0.8.0 +Result SFTPInternal::openConnection() +{ + if (mConnected) { + return Result::pass(); + } + + if (mHost.isEmpty()) { + qCDebug(KIO_SFTP_LOG) << "openConnection(): Need hostname..."; + return Result::fail(KIO::ERR_UNKNOWN_HOST); + } + + AuthInfo info; + info.url.setScheme("sftp"); + info.url.setHost(mHost); + if ( mPort > 0 && mPort != DEFAULT_SFTP_PORT ) { + info.url.setPort(mPort); + } + info.url.setUserName(mUsername); + info.username = mUsername; + + // Check for cached authentication info if no password is specified... + if (mPassword.isEmpty()) { + qCDebug(KIO_SFTP_LOG) << "checking cache: info.username =" << info.username + << ", info.url =" << info.url.toDisplayString(); + q->checkCachedAuthentication(info); + } else { + info.password = mPassword; + } + + // Start the ssh connection. + QString msg; // msg for dialog box + QString caption; // dialog box caption + unsigned char *hash = nullptr; // the server hash + ssh_key srv_pubkey; + char *hexa; + size_t hlen; + int rc, state; + + // Attempt to start a ssh session and establish a connection with the server. + const auto openResult = sftpOpenConnection(info); + if (!openResult.success) { + return openResult; + } + + qCDebug(KIO_SFTP_LOG) << "Getting the SSH server hash"; + + /* get the hash */ + rc = ssh_get_publickey(mSession, &srv_pubkey); + if (rc < 0) { + const auto result = Result::fail(KIO::ERR_SLAVE_DEFINED, QString::fromUtf8(ssh_get_error(mSession))); + closeConnection(); + return result; + } + + rc = ssh_get_publickey_hash(srv_pubkey, + SSH_PUBLICKEY_HASH_SHA1, + &hash, + &hlen); + ssh_key_free(srv_pubkey); + if (rc < 0) { + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, + i18n("Could not create hash from server public key")); + } + + qCDebug(KIO_SFTP_LOG) << "Checking if the SSH server is known"; + + /* check the server public key hash */ + state = ssh_is_server_known(mSession); + switch (state) { + case SSH_SERVER_KNOWN_OK: + break; + case SSH_SERVER_FOUND_OTHER: { + ssh_string_free_char((char *)hash); + const QString errorString = i18n("The host key for this server was " + "not found, but another type of key exists.\n" + "An attacker might change the default server key to confuse your " + "client into thinking the key does not exist.\n" + "Please contact your system administrator.\n%1", + QString::fromUtf8(ssh_get_error(mSession))); + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, errorString); + } + case SSH_SERVER_KNOWN_CHANGED: { + hexa = ssh_get_hexa(hash, hlen); + ssh_string_free_char((char *)hash); + /* TODO print known_hosts file, port? */ + const QString errorString = i18n("The host key for the server %1 has changed.\n" + "This could either mean that DNS SPOOFING is happening or the IP " + "address for the host and its host key have changed at the same time.\n" + "The fingerprint for the key sent by the remote host is:\n %2\n" + "Please contact your system administrator.\n%3", + mHost, + QString::fromUtf8(hexa), + QString::fromUtf8(ssh_get_error(mSession))); + ssh_string_free_char(hexa); + closeConnection(); + return Result::fail(KIO::ERR_SLAVE_DEFINED, errorString); + } + case SSH_SERVER_FILE_NOT_FOUND: + case SSH_SERVER_NOT_KNOWN: { + hexa = ssh_get_hexa(hash, hlen); + ssh_string_free_char((char *)hash); + caption = i18n("Warning: Cannot verify host's identity."); + msg = i18n("The authenticity of host %1 cannot be established.\n" + "The key fingerprint is: %2\n" + "Are you sure you want to continue connecting?", mHost, hexa); + ssh_string_free_char(hexa); + + if (KMessageBox::Yes != q->messageBox(SlaveBase::WarningYesNo, msg, caption)) { + closeConnection(); + return Result::fail(KIO::ERR_USER_CANCELED); + } + + /* write the known_hosts file */ + qCDebug(KIO_SFTP_LOG) << "Adding server to known_hosts file."; + if (ssh_write_knownhost(mSession) < 0) { + const QString errorString = QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_USER_CANCELED, errorString); + } + break; + } + case SSH_SERVER_ERROR: + ssh_string_free_char((char *)hash); + return Result::fail(KIO::ERR_SLAVE_DEFINED, QString::fromUtf8(ssh_get_error(mSession))); + } + + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with the server"; + + // Try to login without authentication + rc = ssh_userauth_none(mSession, nullptr); + if (rc == SSH_AUTH_ERROR) { + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + + // This NEEDS to be called after ssh_userauth_none() !!! + int method = ssh_auth_list(mSession); + if (rc != SSH_AUTH_SUCCESS && method == 0) { + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed. The server " + "didn't send any authentication methods")); + } + + // Try to authenticate with public key first + if (rc != SSH_AUTH_SUCCESS && (method & SSH_AUTH_METHOD_PUBLICKEY)) { + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with public key"; + for(;;) { + rc = ssh_userauth_publickey_auto(mSession, nullptr, nullptr); + if (rc == SSH_AUTH_ERROR) { + qCDebug(KIO_SFTP_LOG) << "Public key authentication failed:" << + QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + clearPubKeyAuthInfo(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } else if (rc != SSH_AUTH_DENIED || !mPublicKeyAuthInfo || !mPublicKeyAuthInfo->isModified()) { + clearPubKeyAuthInfo(); + break; + } + } + } + + // Try to authenticate with GSSAPI + if (rc != SSH_AUTH_SUCCESS && (method & SSH_AUTH_METHOD_GSSAPI_MIC)) { + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with GSSAPI"; + rc = ssh_userauth_gssapi(mSession); + if (rc == SSH_AUTH_ERROR) { + qCDebug(KIO_SFTP_LOG) << "Public key authentication failed:" << + QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + } + + // Try to authenticate with keyboard interactive + if (rc != SSH_AUTH_SUCCESS && (method & SSH_AUTH_METHOD_INTERACTIVE)) { + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with keyboard interactive"; + AuthInfo info2 (info); + rc = authenticateKeyboardInteractive(info2); + if (rc == SSH_AUTH_SUCCESS) { + info = info2; + } else if (rc == SSH_AUTH_ERROR) { + qCDebug(KIO_SFTP_LOG) << "Keyboard interactive authentication failed:" + << QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + } + + // Try to authenticate with password + if (rc != SSH_AUTH_SUCCESS && (method & SSH_AUTH_METHOD_PASSWORD)) { + qCDebug(KIO_SFTP_LOG) << "Trying to authenticate with password"; + + info.caption = i18n("SFTP Login"); + info.prompt = i18n("Please enter your username and password."); + info.comment = info.url.url(); + info.commentLabel = i18n("Site:"); + bool isFirstLoginAttempt = true; + + for(;;) { + if (!isFirstLoginAttempt || info.password.isEmpty()) { + info.keepPassword = true; // make the "keep Password" check box visible to the user. + info.setModified(false); + + QString username (info.username); + const QString errMsg(isFirstLoginAttempt ? QString() : i18n("Incorrect username or password")); + + qCDebug(KIO_SFTP_LOG) << "Username:" << username << "first attempt?" + << isFirstLoginAttempt << "error:" << errMsg; + + // Handle user canceled or dialog failed to open... + + int errCode = q->openPasswordDialogV2(info, errMsg); + if (errCode != KJob::NoError) { + qCDebug(KIO_SFTP_LOG) << "User canceled password/retry dialog"; + closeConnection(); + return Result::fail(errCode); + } + + // If the user name changes, we have to restablish connection again + // since the user name must always be set before calling ssh_connect. + if (wasUsernameChanged(username, info)) { + qCDebug(KIO_SFTP_LOG) << "Username changed to" << info.username; + if (!info.url.userName().isEmpty()) { + info.url.setUserName(info.username); + } + closeConnection(); + const auto result = sftpOpenConnection(info); + if (!result.success) { + return result; + } + } + } + + rc = ssh_userauth_password(mSession, info.username.toUtf8().constData(), info.password.toUtf8().constData()); + if (rc == SSH_AUTH_SUCCESS) { + break; + } else if (rc == SSH_AUTH_ERROR) { + qCDebug(KIO_SFTP_LOG) << "Password authentication failed:" + << QString::fromUtf8(ssh_get_error(mSession)); + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + + isFirstLoginAttempt = false; // failed attempt to login. + info.password.clear(); // clear the password after failed attempts. + } + } + + // If we're still not authenticated then we need to leave. + if (rc != SSH_AUTH_SUCCESS) { + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + + // start sftp session + qCDebug(KIO_SFTP_LOG) << "Trying to request the sftp session"; + mSftp = sftp_new(mSession); + if (mSftp == nullptr) { + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Unable to request the SFTP subsystem. " + "Make sure SFTP is enabled on the server.")); + } + + qCDebug(KIO_SFTP_LOG) << "Trying to initialize the sftp session"; + if (sftp_init(mSftp) < 0) { + closeConnection(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Could not initialize the SFTP session.")); + } + + // Login succeeded! + q->infoMessage(i18n("Successfully connected to %1", mHost)); + if (info.keepPassword) { + qCDebug(KIO_SFTP_LOG) << "Caching info.username = " << info.username + << ", info.url = " << info.url.toDisplayString(); + q->cacheAuthentication(info); + } + + // Update the original username in case it was changed! + if (!mUsername.isEmpty()) { + mUsername = info.username; + } + + q->setTimeoutSpecialCommand(KIO_SFTP_SPECIAL_TIMEOUT); + + mConnected = true; + q->connected(); + + info.password.fill('x'); + info.password.clear(); + + return Result::pass(); +} +#endif // 0.8.0 + +void SFTPInternal::closeConnection() { + qCDebug(KIO_SFTP_LOG); + + if (mSftp) { + sftp_free(mSftp); + mSftp = nullptr; + } + + if (mSession) { + ssh_disconnect(mSession); + ssh_free(mSession); + mSession = nullptr; + } + + mConnected = false; +} + +Result SFTPInternal::special(const QByteArray &) { + qCDebug(KIO_SFTP_LOG) << "special(): polling"; + + if (!mSftp) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Invalid sftp context")); + } + + /* + * ssh_channel_poll() returns the number of bytes that may be read on the + * channel. It does so by checking the input buffer and eventually the + * network socket for data to read. If the input buffer is not empty, it + * will not probe the network (and such not read packets nor reply to + * keepalives). + * + * As ssh_channel_poll can act on two specific buffers (a channel has two + * different stream: stdio and stderr), polling for data on the stderr + * stream has more chance of not being in the problematic case (data left + * in the buffer). Checking the return value (for >0) would be a good idea + * to debug the problem. + */ + int rc = ssh_channel_poll(mSftp->channel, 0); + if (rc > 0) { + rc = ssh_channel_poll(mSftp->channel, 1); + } + + if (rc < 0) { // first or second poll failed + qCDebug(KIO_SFTP_LOG) << "ssh_channel_poll failed: " << ssh_get_error(mSession); + } + + q->setTimeoutSpecialCommand(KIO_SFTP_SPECIAL_TIMEOUT); + + return Result::pass(); +} + +Result SFTPInternal::open(const QUrl &url, QIODevice::OpenMode mode) { + qCDebug(KIO_SFTP_LOG) << "open: " << url; + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + const QString path = url.path(); + const QByteArray path_c = path.toUtf8(); + + SFTPAttributesPtr sb(sftp_lstat(mSftp, path_c.constData())); + if (sb == nullptr) { + return reportError(url, sftp_get_error(mSftp)); + } + + switch (sb->type) { + case SSH_FILEXFER_TYPE_DIRECTORY: + return Result::fail(KIO::ERR_IS_DIRECTORY, url.toDisplayString()); + case SSH_FILEXFER_TYPE_SPECIAL: + case SSH_FILEXFER_TYPE_UNKNOWN: + return Result::fail(KIO::ERR_CANNOT_OPEN_FOR_READING, url.toDisplayString()); + case SSH_FILEXFER_TYPE_SYMLINK: + case SSH_FILEXFER_TYPE_REGULAR: + break; + } + + KIO::filesize_t fileSize = sb->size; + + int flags = 0; + + if (mode & QIODevice::ReadOnly) { + if (mode & QIODevice::WriteOnly) { + flags = O_RDWR | O_CREAT; + } else { + flags = O_RDONLY; + } + } else if (mode & QIODevice::WriteOnly) { + flags = O_WRONLY | O_CREAT; + } + + if (mode & QIODevice::Append) { + flags |= O_APPEND; + } else if (mode & QIODevice::Truncate) { + flags |= O_TRUNC; + } + + if (flags & O_CREAT) { + mOpenFile = sftp_open(mSftp, path_c.constData(), flags, 0644); + } else { + mOpenFile = sftp_open(mSftp, path_c.constData(), flags, 0); + } + + if (mOpenFile == nullptr) { + return Result::fail(toKIOError(sftp_get_error(mSftp)), path); + } + + // Determine the mimetype of the file to be retrieved, and emit it. + // This is mandatory in all slaves (for KRun/BrowserRun to work). + // If we're not opening the file ReadOnly or ReadWrite, don't attempt to + // read the file and send the mimetype. + if (mode & QIODevice::ReadOnly) { + size_t bytesRequested = 1024; + ssize_t bytesRead = 0; + QVarLengthArray buffer(bytesRequested); + + bytesRead = sftp_read(mOpenFile, buffer.data(), bytesRequested); + if (bytesRead < 0) { + close(); + return Result::fail(KIO::ERR_CANNOT_READ, mOpenUrl.toDisplayString()); + } else { + QByteArray fileData = QByteArray::fromRawData(buffer.data(), bytesRead); + QMimeDatabase db; + QMimeType mime = db.mimeTypeForFileNameAndData(mOpenUrl.fileName(), fileData); + q->mimeType(mime.name()); + + // Go back to the beginning of the file. + sftp_rewind(mOpenFile); + } + } + + mOpenUrl = url; + + openOffset = 0; + q->totalSize(fileSize); + q->position(0); + + return Result::pass(); +} + +Result SFTPInternal::read(KIO::filesize_t bytes) +{ + qCDebug(KIO_SFTP_LOG) << "read, offset = " << openOffset << ", bytes = " << bytes; + + Q_ASSERT(mOpenFile != nullptr); + + QVarLengthArray buffer(bytes); + + ssize_t bytesRead = sftp_read(mOpenFile, buffer.data(), bytes); + Q_ASSERT(bytesRead <= static_cast(bytes)); + + if (bytesRead < 0) { + qCDebug(KIO_SFTP_LOG) << "Could not read" << mOpenUrl + << sftp_get_error(mSftp) + << ssh_get_error_code(mSession) + << ssh_get_error(mSession); + close(); + return Result::fail(KIO::ERR_CANNOT_READ, mOpenUrl.toDisplayString()); + } + + const QByteArray fileData = QByteArray::fromRawData(buffer.data(), bytesRead); + q->data(fileData); + + return Result::pass(); +} + +Result SFTPInternal::write(const QByteArray &data) +{ + qCDebug(KIO_SFTP_LOG) << "write, offset = " << openOffset << ", bytes = " << data.size(); + + Q_ASSERT(mOpenFile != nullptr); + + if (!sftpWrite(mOpenFile, data, nullptr)) { + qCDebug(KIO_SFTP_LOG) << "Could not write to " << mOpenUrl; + close(); + return Result::fail(KIO::ERR_CANNOT_WRITE, mOpenUrl.toDisplayString()); + } + + q->written(data.size()); + + return Result::pass(); +} + +Result SFTPInternal::seek(KIO::filesize_t offset) +{ + qCDebug(KIO_SFTP_LOG) << "seek, offset = " << offset; + + Q_ASSERT(mOpenFile != nullptr); + + if (sftp_seek64(mOpenFile, static_cast(offset)) < 0) { + close(); + return Result::fail(KIO::ERR_CANNOT_SEEK, mOpenUrl.path()); + } + + q->position(sftp_tell64(mOpenFile)); + + return Result::pass(); +} + +Result SFTPInternal::truncate(KIO::filesize_t length) +{ + qCDebug(KIO_SFTP_LOG) << "truncate, length =" << length; + + Q_ASSERT(mOpenFile); + + int errorCode = KJob::NoError; + SFTPAttributesPtr attr(sftp_fstat(mOpenFile)); + if (attr) { + attr->size = length; + if (sftp_setstat(mSftp, mOpenUrl.path().toUtf8().constData(), attr.data()) == 0) { + q->truncated(length); + } else { + errorCode = toKIOError(sftp_get_error(mSftp)); + } + } else { + errorCode = toKIOError(sftp_get_error(mSftp)); + } + + if (errorCode) { + close(); + return Result::fail(errorCode == KIO::ERR_INTERNAL ? KIO::ERR_CANNOT_TRUNCATE : errorCode, mOpenUrl.path()); + } + + return Result::pass(); +} + +void SFTPInternal::close() +{ + sftp_close(mOpenFile); + mOpenFile = nullptr; +} + +Result SFTPInternal::get(const QUrl& url) +{ + qCDebug(KIO_SFTP_LOG) << url; + + const auto result = sftpGet(url); + if (!result.success) { + return Result::fail(result.error, url.toDisplayString()); + } + + return Result::pass(); +} + +Result SFTPInternal::sftpGet(const QUrl &url, KIO::fileoffset_t offset, int fd) +{ + qCDebug(KIO_SFTP_LOG) << url; + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + QByteArray path = url.path().toUtf8(); + + sftp_file file = nullptr; + KIO::filesize_t totalbytesread = 0; + QByteArray filedata; + + SFTPAttributesPtr sb(sftp_lstat(mSftp, path.constData())); + if (sb == nullptr) { + return Result::fail(toKIOError(sftp_get_error(mSftp)), url.toString()); + } + + switch (sb->type) { + case SSH_FILEXFER_TYPE_DIRECTORY: + return Result::fail(KIO::ERR_IS_DIRECTORY, url.toString()); + case SSH_FILEXFER_TYPE_SPECIAL: + case SSH_FILEXFER_TYPE_UNKNOWN: + return Result::fail(KIO::ERR_CANNOT_OPEN_FOR_READING, url.toString()); + case SSH_FILEXFER_TYPE_SYMLINK: + case SSH_FILEXFER_TYPE_REGULAR: + break; + } + + // Open file + file = sftp_open(mSftp, path.constData(), O_RDONLY, 0); + const auto fileFree = qScopeGuard([file]{ sftp_close(file); }); + if (file == nullptr) { + return Result::fail(KIO::ERR_CANNOT_OPEN_FOR_READING, url.toString()); + } + + char mimeTypeBuf[1024]; + ssize_t bytesread = sftp_read(file, mimeTypeBuf, sizeof(mimeTypeBuf)); + + if (bytesread < 0) { + return Result::fail(KIO::ERR_CANNOT_READ, url.toString()); + } else { + QMimeDatabase db; + QMimeType mime = db.mimeTypeForFileNameAndData(url.fileName(), QByteArray(mimeTypeBuf, bytesread)); + if (!mime.isDefault()) { + q->mimeType(mime.name()); + } else { + mime = db.mimeTypeForUrl(url); + q->mimeType(mime.name()); + } + sftp_rewind(file); + } + + // Set the total size + q->totalSize(sb->size); + + // If offset is not specified, check the "resume" meta-data. + if (offset < 0) { + const QString resumeOffsetStr = q->metaData(QLatin1String("resume")); + if (!resumeOffsetStr.isEmpty()) { + bool ok; + qlonglong resumeOffset = resumeOffsetStr.toLongLong(&ok); + if (ok) { + offset = resumeOffset; + } + } + } + + // If we can resume, offset the buffer properly. + if (offset > 0 && ((unsigned long long) offset < sb->size)) + { + if (sftp_seek64(file, offset) == 0) { + q->canResume(); + totalbytesread = offset; + qCDebug(KIO_SFTP_LOG) << "Resume offset: " << QString::number(offset); + } + } + + bytesread = 0; + SFTPInternal::GetRequest request(file, sb->size); + + for (;;) { + // Enqueue get requests + if (!request.enqueueChunks()) { + return Result::fail(KIO::ERR_CANNOT_READ, url.toString()); + } + + filedata.clear(); + bytesread = request.readChunks(filedata); + // Read pending get requests + if (bytesread == -1) { + return Result::fail(KIO::ERR_CANNOT_READ, url.toString()); + } else if (bytesread == 0) { + if (file->eof) + break; + else + continue; + } + + int error = KJob::NoError; + if (fd == -1) { + q->data(filedata); + } else if ((error = writeToFile(fd, filedata.constData(), filedata.size())) != KJob::NoError) { + return Result::fail(error, url.toString()); + } + // increment total bytes read + totalbytesread += filedata.length(); + + q->processedSize(totalbytesread); + } + + if (fd == -1) { + q->data(QByteArray()); + } + + q->processedSize(static_cast(sb->size)); + return Result::pass(); +} + +Result SFTPInternal::put(const QUrl &url, int permissions, KIO::JobFlags flags) +{ + qCDebug(KIO_SFTP_LOG) << url << ", permissions =" << permissions + << ", overwrite =" << (flags & KIO::Overwrite) + << ", resume =" << (flags & KIO::Resume); + + qCDebug(KIO_SFTP_LOG) << url; + + return sftpPut(url, permissions, flags); +} + +Result SFTPInternal::sftpPut(const QUrl &url, int permissions, JobFlags flags, int fd) +{ + qCDebug(KIO_SFTP_LOG) << url << ", permissions =" << permissions + << ", overwrite =" << (flags & KIO::Overwrite) + << ", resume =" << (flags & KIO::Resume); + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + const QString dest_orig = url.path(); + const QByteArray dest_orig_c = dest_orig.toUtf8(); + const QString dest_part = dest_orig + ".part"; + const QByteArray dest_part_c = dest_part.toUtf8(); + uid_t owner = 0; + gid_t group = 0; + + SFTPAttributesPtr sb(sftp_lstat(mSftp, dest_orig_c.constData())); + const bool bOrigExists = (sb != nullptr); + bool bPartExists = false; + const bool bMarkPartial = q->configValue(QStringLiteral("MarkPartial"), true); + + // Don't change permissions of the original file + if (bOrigExists) { + permissions = sb->permissions; + owner = sb->uid; + group = sb->gid; + } + + if (bMarkPartial) { + SFTPAttributesPtr sbPart(sftp_lstat(mSftp, dest_part_c.constData())); + bPartExists = (sbPart != nullptr); + + if (bPartExists && !(flags & KIO::Resume) && !(flags & KIO::Overwrite) && + sbPart->size > 0 && sbPart->type == SSH_FILEXFER_TYPE_REGULAR) { + + if (fd == -1) { + // Maybe we can use this partial file for resuming + // Tell about the size we have, and the app will tell us + // if it's ok to resume or not. + qCDebug(KIO_SFTP_LOG) << "calling canResume with " << sbPart->size; + flags |= q->canResume(sbPart->size) ? KIO::Resume : KIO::DefaultFlags; + qCDebug(KIO_SFTP_LOG) << "put got answer " << (flags & KIO::Resume); + + } else { + KIO::filesize_t pos = QT_LSEEK(fd, sbPart->size, SEEK_SET); + if (pos != sbPart->size) { + qCDebug(KIO_SFTP_LOG) << "Failed to seek to" << sbPart->size << "bytes in source file. Reason given:" << strerror(errno); + return Result::fail(ERR_CANNOT_SEEK, url.toString()); + } + flags |= KIO::Resume; + } + qCDebug(KIO_SFTP_LOG) << "Resuming at" << sbPart->size; + } + } + + if (bOrigExists && !(flags & KIO::Overwrite) && !(flags & KIO::Resume)) { + const int error = KSFTP_ISDIR(sb) ? KIO::ERR_DIR_ALREADY_EXIST : KIO::ERR_FILE_ALREADY_EXIST; + return Result::fail(error, url.toString()); + } + + QByteArray dest; + int result = -1; + sftp_file file = nullptr; + KIO::fileoffset_t totalBytesSent = 0; + + int errorCode = KJob::NoError; + // Loop until we got 0 (end of data) + do { + QByteArray buffer; + + if (fd == -1) { + q->dataReq(); // Request for data + result = q->readData(buffer); + if (result < 0) { + qCDebug(KIO_SFTP_LOG) << "unexpected error during readData"; + } + } else { + char buf[MAX_XFER_BUF_SIZE]; // + result = ::read(fd, buf, sizeof(buf)); + if (result < 0) { + qCDebug(KIO_SFTP_LOG) << "failed to read" << errno; + errorCode = ERR_CANNOT_READ; + break; + } + buffer = QByteArray(buf, result); + } + + if (result >= 0) { + if (dest.isEmpty()) { + if (bMarkPartial) { + qCDebug(KIO_SFTP_LOG) << "Appending .part extension to" << dest_orig; + dest = dest_part_c; + if (bPartExists && !(flags & KIO::Resume)) { + qCDebug(KIO_SFTP_LOG) << "Deleting partial file" << dest_part; + sftp_unlink(mSftp, dest_part_c.constData()); + // Catch errors when we try to open the file. + } + } else { + dest = dest_orig_c; // Will be automatically truncated below... + } // bMarkPartial + + if ((flags & KIO::Resume)) { + qCDebug(KIO_SFTP_LOG) << "Trying to append: " << dest; + file = sftp_open(mSftp, dest.constData(), O_RDWR, 0); // append if resuming + if (file) { + SFTPAttributesPtr fstat(sftp_fstat(file)); + if (fstat) { + sftp_seek64(file, fstat->size); // Seek to end TODO + totalBytesSent += fstat->size; + } + } + } else { + mode_t initialMode; + + if (permissions != -1) { +#ifdef Q_OS_WIN + initialMode = permissions | static_cast(perms::owner_write | perms::owner_read); +#else + initialMode = permissions | S_IWUSR | S_IRUSR; +#endif + } else { + initialMode = 0644; + } + + qCDebug(KIO_SFTP_LOG) << "Trying to open:" << QString(dest) << ", mode=" << QString::number(initialMode); + file = sftp_open(mSftp, dest.constData(), O_CREAT | O_TRUNC | O_WRONLY, initialMode); + } // flags & KIO::Resume + + if (file == nullptr) { + qCDebug(KIO_SFTP_LOG) << "COULD NOT WRITE " << QString(dest) + << ", permissions=" << permissions + << ", error=" << ssh_get_error(mSession); + if (sftp_get_error(mSftp) == SSH_FX_PERMISSION_DENIED) { + errorCode = KIO::ERR_WRITE_ACCESS_DENIED; + } else { + errorCode = KIO::ERR_CANNOT_OPEN_FOR_WRITING; + } + result = -1; + continue; + } // file + } // dest.isEmpty + + if (result == 0) { + // proftpd stumbles over zero size writes. + // https://bugs.kde.org/show_bug.cgi?id=419999 + // http://bugs.proftpd.org/show_bug.cgi?id=4398 + // At this point we'll have opened the file and thus created it. + // It's safe to break here as even in the ideal scenario that the server + // doesn't fall over, the write code is pointless because zero size writes + // do absolutely nothing. + break; + } + + bool success = sftpWrite(file, buffer, [this,&totalBytesSent](int bytes) { + totalBytesSent += bytes; + q->processedSize(totalBytesSent); + }); + if (!success) { + qCDebug(KIO_SFTP_LOG) << "totalBytesSent at error:" << totalBytesSent; + errorCode = KIO::ERR_CANNOT_WRITE; + result = -1; + break; + } + } // result + } while (result > 0); + + // An error occurred deal with it. + if (result < 0) { + qCDebug(KIO_SFTP_LOG) << "Error during 'put'. Aborting."; + + if (file != nullptr) { + sftp_close(file); + + SFTPAttributesPtr attr(sftp_stat(mSftp, dest.constData())); + if (bMarkPartial && attr != nullptr) { + size_t size = q->configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + if (attr->size < size) { + sftp_unlink(mSftp, dest.constData()); + } + } + } + + return errorCode == KJob::NoError ? Result::pass() : Result::fail(errorCode, url.toString()); + } + + if (file == nullptr) { // we got nothing to write out, so we never opened the file + return Result::pass(); + } + + if (sftp_close(file) < 0) { + qCWarning(KIO_SFTP_LOG) << "Error when closing file descriptor"; + return Result::fail(KIO::ERR_CANNOT_WRITE, url.toString()); + } + + // after full download rename the file back to original name + if (bMarkPartial) { + // If the original URL is a symlink and we were asked to overwrite it, + // remove the symlink first. This ensures that we do not overwrite the + // current source if the symlink points to it. + if ((flags & KIO::Overwrite)) { + sftp_unlink(mSftp, dest_orig_c.constData()); + } + + if (sftp_rename(mSftp, dest.constData(), dest_orig_c.constData()) < 0) { + qCWarning(KIO_SFTP_LOG) << " Couldn't rename " << dest << " to " << dest_orig; + return Result::fail(ERR_CANNOT_RENAME_PARTIAL, url.toString()); + } + } + + // set final permissions + if (permissions != -1 && !(flags & KIO::Resume)) { + qCDebug(KIO_SFTP_LOG) << "Trying to set final permissions of " << dest_orig << " to " << QString::number(permissions); + if (sftp_chmod(mSftp, dest_orig_c.constData(), permissions) < 0) { + q->warning(i18n("Could not change permissions for\n%1", url.toString())); + return Result::pass(); + } + } + + // set original owner and group + if (bOrigExists) { + qCDebug(KIO_SFTP_LOG) << "Trying to restore original owner and group of " << dest_orig; + if (sftp_chown(mSftp, dest_orig_c.constData(), owner, group) < 0) { + qCWarning(KIO_SFTP_LOG) << "Could not change owner and group for" << dest_orig; + // warning(i18n( "Could not change owner and group for\n%1", dest_orig)); + } + } + + // set modification time + const QString mtimeStr = q->metaData("modified"); + if (!mtimeStr.isEmpty()) { + QDateTime dt = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dt.isValid()) { + struct timeval times[2]; + + SFTPAttributesPtr attr(sftp_lstat(mSftp, dest_orig_c.constData())); + if (attr != nullptr) { + times[0].tv_sec = attr->atime; //// access time, unchanged + times[1].tv_sec = dt.toSecsSinceEpoch(); // modification time + times[0].tv_usec = times[1].tv_usec = 0; + + qCDebug(KIO_SFTP_LOG) << "Trying to restore mtime for " << dest_orig << " to: " << mtimeStr; + result = sftp_utimes(mSftp, dest_orig_c.constData(), times); + if (result < 0) { + qCWarning(KIO_SFTP_LOG) << "Failed to set mtime for" << dest_orig; + } + } + } + } + + return Result::pass(); +} + +bool SFTPInternal::sftpWrite(sftp_file file, + const QByteArray &buffer, + const std::function &onWritten) +{ + // TODO: enqueue requests. + // Similarly to reading we may enqueue a number of requests to mitigate the + // network overhead and speed up things. Serial iteration gives super poor + // performance. + + // Break up into multiple requests in case a single request would be too large. + // Servers can impose an arbitrary size limit that we don't want to hit. + // https://bugs.kde.org/show_bug.cgi?id=404890 + off_t offset = 0; + while (offset < buffer.size()) { + const auto length = qMin(MAX_XFER_BUF_SIZE, buffer.size() - offset); + ssize_t bytesWritten = sftp_write(file, buffer.data() + offset, length); + if (bytesWritten < 0) { + qCDebug(KIO_SFTP_LOG) << "Failed to sftp_write" << length << "bytes." + << "- Already written (for this call):" << offset + << "- Return of sftp_write:" << bytesWritten + << "- SFTP error:" << sftp_get_error(mSftp) + << "- SSH error:" << ssh_get_error_code(mSession) + << "- SSH errorString:" << ssh_get_error(mSession); + return false; + } else if (onWritten) { + onWritten(bytesWritten); + } + offset += bytesWritten; + } + return true; +} + +Result SFTPInternal::copy(const QUrl &src, const QUrl &dest, int permissions, KIO::JobFlags flags) +{ + qCDebug(KIO_SFTP_LOG) << src << " -> " << dest << " , permissions = " << QString::number(permissions) + << ", overwrite = " << (flags & KIO::Overwrite) + << ", resume = " << (flags & KIO::Resume); + + const bool isSourceLocal = src.isLocalFile(); + const bool isDestinationLocal = dest.isLocalFile(); + + if (!isSourceLocal && isDestinationLocal) { // sftp -> file + return sftpCopyGet(src, dest.toLocalFile(), permissions, flags); + } else if (isSourceLocal && !isDestinationLocal) { // file -> sftp + return sftpCopyPut(dest, src.toLocalFile(), permissions, flags); + } + + return Result::fail(ERR_UNSUPPORTED_ACTION); +} + +Result SFTPInternal::sftpCopyGet(const QUrl &url, const QString &sCopyFile, int permissions, KIO::JobFlags flags) +{ + qCDebug(KIO_SFTP_LOG) << url << "->" << sCopyFile << ", permissions=" << permissions; + + // check if destination is ok ... + QFileInfo copyFile(sCopyFile); + const bool bDestExists = copyFile.exists(); + if (bDestExists) { + if (copyFile.isDir()) { + return Result::fail(ERR_IS_DIRECTORY, sCopyFile); + } + + if (!(flags & KIO::Overwrite)) { + return Result::fail(ERR_FILE_ALREADY_EXIST, sCopyFile); + } + } + + bool bResume = false; + const QString sPart = sCopyFile + QLatin1String(".part"); // do we have a ".part" file? + QFileInfo partFile(sPart); + const bool bPartExists = partFile.exists(); + const bool bMarkPartial = q->configValue(QStringLiteral("MarkPartial"), true); + const QString dest = (bMarkPartial ? sPart : sCopyFile); + + if (bMarkPartial && bPartExists) { + if (partFile.isDir()) { + return Result::fail(ERR_FILE_ALREADY_EXIST, sCopyFile); + } + if (partFile.size() > 0) { + bResume = q->canResume(copyFile.size()); + } + } + + if (bPartExists && !bResume) // get rid of an unwanted ".part" file + QFile::remove(sPart); + + // WABA: Make sure that we keep writing permissions ourselves, + // otherwise we can be in for a surprise on NFS. + mode_t initialMode; + if (permissions != -1) +#ifdef Q_OS_WIN + initialMode = permissions | static_cast(perms::owner_write); +#else + initialMode = permissions | S_IWUSR; +#endif + else + initialMode = 0666; + + // open the output file ... + int fd = -1; + KIO::fileoffset_t offset = 0; + if (bResume) { + fd = QT_OPEN( QFile::encodeName(sPart), O_RDWR ); // append if resuming + offset = QT_LSEEK(fd, partFile.size(), SEEK_SET); + if (offset != partFile.size()) { + qCDebug(KIO_SFTP_LOG) << "Failed to seek to" << partFile.size() << "bytes in target file. Reason given:" << strerror(errno); + ::close(fd); + return Result::fail(ERR_CANNOT_RESUME, sCopyFile); + } + qCDebug(KIO_SFTP_LOG) << "resuming at" << offset; + } + else { + fd = QT_OPEN(QFile::encodeName(dest), O_CREAT | O_TRUNC | O_WRONLY, initialMode); + } + + if (fd == -1) { + qCDebug(KIO_SFTP_LOG) << "could not write to" << sCopyFile; + return Result::fail((errno == EACCES) ? ERR_WRITE_ACCESS_DENIED : ERR_CANNOT_OPEN_FOR_WRITING, sCopyFile); + } + + const auto getResult = sftpGet(url, offset, fd); + + // The following is a bit awkward, we'll override the internal error + // in cleanup conditions, so these are subject to change until we return. + int errorCode = getResult.error; + QString errorString = getResult.errorString; + + if (::close(fd) && getResult.success) { + errorCode = ERR_CANNOT_WRITE; + errorString = sCopyFile; + } + + // handle renaming or deletion of a partial file ... + if (bMarkPartial) { + if (getResult.success) { // rename ".part" on success + if (!QFile::rename(sPart, sCopyFile)) { + // If rename fails, try removing the destination first if it exists. + if (!bDestExists || !QFile::remove(sCopyFile) || !QFile::rename(sPart, sCopyFile)) { + qCDebug(KIO_SFTP_LOG) << "cannot rename " << sPart << " to " << sCopyFile; + errorCode = ERR_CANNOT_RENAME_PARTIAL; + errorString = sCopyFile; + } + } + } else{ + partFile.refresh(); + const int size = q->configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + if (partFile.exists() && partFile.size() < size) { // should a very small ".part" be deleted? + QFile::remove(sPart); + } + } + } + + const QString mtimeStr = q->metaData("modified"); + if (!mtimeStr.isEmpty()) { + QDateTime dt = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dt.isValid()) { + QFile receivedFile(sCopyFile); + if (receivedFile.exists()) { + if (!receivedFile.open(QIODevice::ReadWrite | QIODevice::Text)) { + QString error_msg = receivedFile.errorString(); + qCDebug(KIO_SFTP_LOG) << "Couldn't update modified time : " << error_msg; + } else { + receivedFile.setFileTime(dt, QFileDevice::FileModificationTime); + } + } + } + } + + return errorCode == KJob::NoError ? Result::pass() : Result::fail(errorCode, errorString); +} + +Result SFTPInternal::sftpCopyPut(const QUrl &url, const QString &sCopyFile, int permissions, JobFlags flags) +{ + qCDebug(KIO_SFTP_LOG) << sCopyFile << "->" << url << ", permissions=" << permissions << ", flags" << flags; + + // check if source is ok ... + QFileInfo copyFile(sCopyFile); + bool bSrcExists = copyFile.exists(); + if (bSrcExists) { + if(copyFile.isDir()) { + return Result::fail(ERR_IS_DIRECTORY, sCopyFile); + } + } else { + return Result::fail(ERR_DOES_NOT_EXIST, sCopyFile); + } + + const int fd = QT_OPEN(QFile::encodeName(sCopyFile), O_RDONLY); + if (fd == -1) { + return Result::fail(ERR_CANNOT_OPEN_FOR_READING, sCopyFile); + } + + q->totalSize(copyFile.size()); + + // delegate the real work (errorCode gets status) ... + const auto result = sftpPut(url, permissions, flags, fd); + ::close(fd); + return result; +} + +Result SFTPInternal::stat(const QUrl &url) +{ + qCDebug(KIO_SFTP_LOG) << url; + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + if (url.path().isEmpty() || QDir::isRelativePath(url.path()) || + url.path().contains("/./") || url.path().contains("/../")) { + QString cPath; + + if (!url.path().isEmpty()) { + cPath = canonicalizePath(url.path()); + } else { + cPath = canonicalizePath(QLatin1String(".")); + } + + if (cPath.isEmpty()) { + return Result::fail(KIO::ERR_MALFORMED_URL, url.toDisplayString()); + } + QUrl redir(url); + redir.setPath(cPath); + q->redirection(redir); + + qCDebug(KIO_SFTP_LOG) << "redirecting to " << redir.url(); + + return Result::pass(); + } + + QByteArray path = url.path().toUtf8(); + + const QString sDetails = q->metaData(QLatin1String("details")); + const int details = sDetails.isEmpty() ? 2 : sDetails.toInt(); + + UDSEntry entry; + entry.clear(); + if (!createUDSEntry(url.fileName(), path, entry, details)) { + return Result::fail(KIO::ERR_DOES_NOT_EXIST, url.toDisplayString()); + } + + q->statEntry(entry); + + return Result::pass(); +} + +Result SFTPInternal::mimetype(const QUrl &url) +{ + qCDebug(KIO_SFTP_LOG) << url; + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + // open() feeds the mimetype + const auto result = open(url, QIODevice::ReadOnly); + close(); + + return result; +} + +Result SFTPInternal::listDir(const QUrl &url) +{ + qCDebug(KIO_SFTP_LOG) << "list directory: " << url; + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + if (url.path().isEmpty() || QDir::isRelativePath(url.path()) || + url.path().contains("/./") || url.path().contains("/../")) { + QString cPath; + + if (!url.path().isEmpty() ) { + cPath = canonicalizePath(url.path()); + } else { + cPath = canonicalizePath(QStringLiteral(".")); + } + + if (cPath.isEmpty()) { + return Result::fail(KIO::ERR_MALFORMED_URL, url.toDisplayString()); + } + QUrl redir(url); + redir.setPath(cPath); + q->redirection(redir); + + qCDebug(KIO_SFTP_LOG) << "redirecting to " << redir.url(); + + return Result::pass(); + } + + QByteArray path = url.path().toUtf8(); + + sftp_dir dp = sftp_opendir(mSftp, path.constData()); + if (dp == nullptr) { + return reportError(url, sftp_get_error(mSftp)); + } + + SFTPAttributesPtr dirent(nullptr); + const QString sDetails = q->metaData(QLatin1String("details")); + const int details = sDetails.isEmpty() ? 2 : sDetails.toInt(); + UDSEntry entry; + + qCDebug(KIO_SFTP_LOG) << "readdir: " << path << ", details: " << QString::number(details); + + for (;;) { + mode_t access; + char *link; + bool isBrokenLink = false; + long long fileType = QT_STAT_REG; + long long size = 0LL; + + dirent.reset(sftp_readdir(mSftp, dp)); + if (dirent == nullptr) { + break; + } + + entry.clear(); + entry.reserve(10); + entry.fastInsert(KIO::UDSEntry::UDS_NAME, QFile::decodeName(dirent->name)); + + if (dirent->type == SSH_FILEXFER_TYPE_SYMLINK) { + QByteArray file = path + '/' + QFile::decodeName(dirent->name).toUtf8(); + + link = sftp_readlink(mSftp, file.constData()); + if (link == nullptr) { + return Result::fail(KIO::ERR_INTERNAL, i18n("Could not read link: %1", QString::fromUtf8(file))); + } + entry.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, QFile::decodeName(link)); + free(link); + // A symlink -> follow it only if details > 1 + if (details > 1) { + sftp_attributes sb = sftp_stat(mSftp, file.constData()); + if (sb == nullptr) { + isBrokenLink = true; + } else { + dirent.reset(sb); + } + } + } + + if (isBrokenLink) { + // It is a link pointing to nowhere + fileType = QT_STAT_MASK - 1; +#ifdef Q_OS_WIN + access = static_cast(perms::owner_all | perms::group_all | perms::others_all); +#else + access = S_IRWXU | S_IRWXG | S_IRWXO; +#endif + size = 0LL; + } else { + switch (dirent->type) { + case SSH_FILEXFER_TYPE_REGULAR: + fileType = QT_STAT_REG; + break; + case SSH_FILEXFER_TYPE_DIRECTORY: + fileType = QT_STAT_DIR; + break; + case SSH_FILEXFER_TYPE_SYMLINK: + fileType = QT_STAT_LNK; + break; + case SSH_FILEXFER_TYPE_SPECIAL: + case SSH_FILEXFER_TYPE_UNKNOWN: + break; + } + + access = dirent->permissions & 07777; + size = dirent->size; + } + entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, fileType); + entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, access); + entry.fastInsert(KIO::UDSEntry::UDS_SIZE, size); + + if (details > 0) { + if (dirent->owner) { + entry.fastInsert(KIO::UDSEntry::UDS_USER, QString::fromUtf8(dirent->owner)); + } else { + entry.fastInsert(KIO::UDSEntry::UDS_USER, QString::number(dirent->uid)); + } + + if (dirent->group) { + entry.fastInsert(KIO::UDSEntry::UDS_GROUP, QString::fromUtf8(dirent->group)); + } else { + entry.fastInsert(KIO::UDSEntry::UDS_GROUP, QString::number(dirent->gid)); + } + + entry.fastInsert(KIO::UDSEntry::UDS_ACCESS_TIME, dirent->atime); + entry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME, dirent->mtime); + entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME, dirent->createtime); + } + + q->listEntry(entry); + } // for ever + sftp_closedir(dp); + return Result::pass(); +} + +Result SFTPInternal::mkdir(const QUrl &url, int permissions) +{ + qCDebug(KIO_SFTP_LOG) << "create directory: " << url; + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + if (url.path().isEmpty()) { + return Result::fail(KIO::ERR_MALFORMED_URL, url.toDisplayString()); + } + const QString path = url.path(); + const QByteArray path_c = path.toUtf8(); + + // Remove existing file or symlink, if requested. + if (q->metaData(QLatin1String("overwrite")) == QLatin1String("true")) { + qCDebug(KIO_SFTP_LOG) << "overwrite set, remove existing file or symlink: " << url; + sftp_unlink(mSftp, path_c.constData()); + } + + qCDebug(KIO_SFTP_LOG) << "Trying to create directory: " << path; + SFTPAttributesPtr sb(sftp_lstat(mSftp, path_c.constData())); + if (sb == nullptr) { + if (sftp_mkdir(mSftp, path_c.constData(), 0777) < 0) { + return reportError(url, sftp_get_error(mSftp)); + } + + qCDebug(KIO_SFTP_LOG) << "Successfully created directory: " << url; + if (permissions != -1) { + const auto result = chmod(url, permissions); + if (!result.success) { + return result; + } + } + + return Result::pass(); + } + + auto err = KSFTP_ISDIR(sb) ? KIO::ERR_DIR_ALREADY_EXIST : KIO::ERR_FILE_ALREADY_EXIST; + return Result::fail(err, path); +} + +Result SFTPInternal::rename(const QUrl &src, const QUrl &dest, KIO::JobFlags flags) +{ + qCDebug(KIO_SFTP_LOG) << "rename " << src << " to " << dest << flags; + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + QByteArray qsrc = src.path().toUtf8(); + QByteArray qdest = dest.path().toUtf8(); + + SFTPAttributesPtr sb(sftp_lstat(mSftp, qdest.constData())); + if (sb != nullptr) { + const bool isDir = KSFTP_ISDIR(sb); + if (!(flags & KIO::Overwrite)) { + return Result::fail(isDir ? KIO::ERR_DIR_ALREADY_EXIST : KIO::ERR_FILE_ALREADY_EXIST, dest.url()); + } + + // Delete the existing destination file/dir... + if (isDir) { + if (sftp_rmdir(mSftp, qdest.constData()) < 0) { + return reportError(dest, sftp_get_error(mSftp)); + } + } else { + if (sftp_unlink(mSftp, qdest.constData()) < 0) { + return reportError(dest, sftp_get_error(mSftp)); + } + } + } + + if (sftp_rename(mSftp, qsrc.constData(), qdest.constData()) < 0) { + return reportError(dest, sftp_get_error(mSftp)); + } + + return Result::pass(); +} + +Result SFTPInternal::symlink(const QString &target, const QUrl &dest, KIO::JobFlags flags) +{ + qCDebug(KIO_SFTP_LOG) << "link " << target << "->" << dest + << ", overwrite = " << (flags & KIO::Overwrite) + << ", resume = " << (flags & KIO::Resume); + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + QByteArray t = target.toUtf8(); + QByteArray d = dest.path().toUtf8(); + + bool failed = false; + if (sftp_symlink(mSftp, t.constData(), d.constData()) < 0) { + if (flags == KIO::Overwrite) { + SFTPAttributesPtr sb(sftp_lstat(mSftp, d.constData())); + if (sb == nullptr) { + failed = true; + } else { + if (sftp_unlink(mSftp, d.constData()) < 0) { + failed = true; + } else { + if (sftp_symlink(mSftp, t.constData(), d.constData()) < 0) { + failed = true; + } + } + } + } + } + + if (failed) { + return reportError(dest, sftp_get_error(mSftp)); + } + + return Result::pass(); +} + +Result SFTPInternal::chmod(const QUrl& url, int permissions) +{ + qCDebug(KIO_SFTP_LOG) << "change permission of " << url << " to " << QString::number(permissions); + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + QByteArray path = url.path().toUtf8(); + + if (sftp_chmod(mSftp, path.constData(), permissions) < 0) { + return reportError(url, sftp_get_error(mSftp)); + } + + return Result::pass(); +} + +Result SFTPInternal::del(const QUrl &url, bool isfile) +{ + qCDebug(KIO_SFTP_LOG) << "deleting " << (isfile ? "file: " : "directory: ") << url; + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + QByteArray path = url.path().toUtf8(); + + if (isfile) { + if (sftp_unlink(mSftp, path.constData()) < 0) { + return reportError(url, sftp_get_error(mSftp)); + } + } else { + if (sftp_rmdir(mSftp, path.constData()) < 0) { + return reportError(url, sftp_get_error(mSftp)); + } + } + + return Result::pass(); +} + +void SFTPInternal::slave_status() { + qCDebug(KIO_SFTP_LOG) << "connected to " << mHost << "?: " << mConnected; + q->slaveStatus((mConnected ? mHost : QString()), mConnected); +} + +SFTPInternal::GetRequest::GetRequest(sftp_file file, uint64_t size, ushort maxPendingRequests) + : m_file(file) + , m_size(size) + , m_maxPendingRequests(maxPendingRequests) +{ +} + +bool SFTPInternal::GetRequest::enqueueChunks() +{ + SFTPInternal::GetRequest::Request request; + + qCDebug(KIO_SFTP_TRACE_LOG) << "enqueueChunks"; + + while (m_pendingRequests.count() < m_maxPendingRequests) { + request.expectedLength = MAX_XFER_BUF_SIZE; + request.startOffset = m_file->offset; + request.id = sftp_async_read_begin(m_file, request.expectedLength); + if (request.id < 0) { + if (m_pendingRequests.isEmpty()) { + return false; + } else { + break; + } + } + + m_pendingRequests.enqueue(request); + + if (m_file->offset >= m_size) { + // Do not add any more chunks if the offset is larger than the given file size. + // However this is done after adding a request as the remote file size may + // have changed in the meantime. + break; + } + } + + qCDebug(KIO_SFTP_TRACE_LOG) << "enqueueChunks done" << QString::number(m_pendingRequests.size()); + + return true; +} + +int SFTPInternal::GetRequest::readChunks(QByteArray &data) +{ + int totalRead = 0; + ssize_t bytesread = 0; + const uint64_t initialOffset = m_file->offset; + + while (!m_pendingRequests.isEmpty()) { + SFTPInternal::GetRequest::Request &request = m_pendingRequests.head(); + int dataSize = data.size() + request.expectedLength; + + data.resize(dataSize); + if (data.size() < dataSize) { + // Could not allocate enough memory - skip current chunk + data.resize(dataSize - request.expectedLength); + break; + } + + bytesread = sftp_async_read(m_file, data.data() + totalRead, request.expectedLength, request.id); + + // qCDebug(KIO_SFTP_LOG) << "bytesread=" << QString::number(bytesread); + + if (bytesread == 0 || bytesread == SSH_AGAIN) { + // Done reading or timeout + data.resize(data.size() - request.expectedLength); + + if (bytesread == 0) { + m_pendingRequests.dequeue(); // This frees QByteArray &data! + } + + break; + } else if (bytesread == SSH_ERROR) { + return -1; + } + + totalRead += bytesread; + + if (bytesread < request.expectedLength) { + int rc; + + // If less data is read than expected - requeue the request + data.resize(data.size() - (request.expectedLength - bytesread)); + + // Modify current request + request.expectedLength -= bytesread; + request.startOffset += bytesread; + + rc = sftp_seek64(m_file, request.startOffset); + if (rc < 0) { + // Failed to continue reading + return -1; + } + + request.id = sftp_async_read_begin(m_file, request.expectedLength); + + if (request.id < 0) { + // Failed to dispatch rerequest + return -1; + } + + // Move the offset back to where it was before the read. + // The way this works is that originally the offset is at the maximum of all pending requests, + // read then reduces that by the amount that it came up short, we then seek to where the short request + // left off and make another request for the remaining data. After that we need to move the offset + // back to the original value - without the reduction because we re-requested the missing data! + rc = sftp_seek64(m_file, initialOffset); + if (rc < 0) { + // Failed to continue reading + return -1; + } + + return totalRead; + } + + m_pendingRequests.dequeue(); + } + + return totalRead; +} + +SFTPInternal::GetRequest::~GetRequest() +{ + SFTPInternal::GetRequest::Request request; + char buf[MAX_XFER_BUF_SIZE]; + + // Remove pending reads to avoid memory leaks + while (!m_pendingRequests.isEmpty()) { + request = m_pendingRequests.dequeue(); + sftp_async_read(m_file, buf, request.expectedLength, request.id); + } +} + +void SFTPInternal::requiresUserNameRedirection() +{ + QUrl redirectUrl; + redirectUrl.setScheme( QLatin1String("sftp") ); + redirectUrl.setUserName( mUsername ); + redirectUrl.setPassword( mPassword ); + redirectUrl.setHost( mHost ); + if (mPort > 0 && mPort != DEFAULT_SFTP_PORT) { + redirectUrl.setPort( mPort ); + } + qCDebug(KIO_SFTP_LOG) << "redirecting to" << redirectUrl; + q->redirection(redirectUrl); +} + +Result SFTPInternal::sftpLogin() +{ + const QString origUsername = mUsername; + const auto openResult = openConnection(); + if (!openResult.success) { + return openResult; + } + qCDebug(KIO_SFTP_LOG) << "connected ?" << mConnected << "username: old=" << origUsername << "new=" << mUsername; + if (!origUsername.isEmpty() && origUsername != mUsername) { + requiresUserNameRedirection(); + return Result::fail(); + } + return mConnected ? Result::pass() : Result::fail(); +} + +void SFTPInternal::clearPubKeyAuthInfo() +{ + if (mPublicKeyAuthInfo) { + delete mPublicKeyAuthInfo; + mPublicKeyAuthInfo = nullptr; + } +} + +Result SFTPInternal::fileSystemFreeSpace(const QUrl& url) +{ + qCDebug(KIO_SFTP_LOG) << "file system free space of" << url; + + const auto loginResult = sftpLogin(); + if (!loginResult.success) { + return loginResult; + } + + if (sftp_extension_supported(mSftp, "statvfs@openssh.com", "2") == 0) { + return Result::fail(ERR_UNSUPPORTED_ACTION, QString()); + } + + const QByteArray path = url.path().isEmpty() ? QByteArrayLiteral("/") : url.path().toUtf8(); + + sftp_statvfs_t statvfs = sftp_statvfs(mSftp, path.constData()); + if (statvfs == nullptr) { + return reportError(url, sftp_get_error(mSftp)); + } + + q->setMetaData(QString::fromLatin1("total"), QString::number(statvfs->f_frsize * statvfs->f_blocks)); + q->setMetaData(QString::fromLatin1("available"), QString::number(statvfs->f_frsize * statvfs->f_bavail)); + + sftp_statvfs_free(statvfs); + + return Result::pass(); +} + +SFTPSlave::SFTPSlave(const QByteArray &pool_socket, const QByteArray &app_socket) + : SlaveBase("kio_sftp", pool_socket, app_socket) + , d(new SFTPInternal(this)) +{ + const auto result = d->init(); + if (!result.success) { + error(result.error, result.errorString); + } +} + +void SFTPSlave::setHost(const QString &host, quint16 port, const QString &user, const QString &pass) +{ + d->setHost(host, port, user, pass); +} + +void SFTPSlave::get(const QUrl &url) +{ + finalize(d->get(url)); +} + +void SFTPSlave::listDir(const QUrl &url) +{ + finalize(d->listDir(url)); +} + +void SFTPSlave::mimetype(const QUrl &url) +{ + finalize(d->mimetype(url)); +} + +void SFTPSlave::stat(const QUrl &url) +{ + finalize(d->stat(url)); +} + +void SFTPSlave::copy(const QUrl &src, const QUrl &dest, int permissions, JobFlags flags) +{ + finalize(d->copy(src, dest, permissions, flags)); +} + +void SFTPSlave::put(const QUrl &url, int permissions, JobFlags flags) +{ + finalize(d->put(url, permissions, flags)); +} + +void SFTPSlave::slave_status() +{ + d->slave_status(); +} + +void SFTPSlave::del(const QUrl &url, bool isfile) +{ + finalize(d->del(url, isfile)); +} + +void SFTPSlave::chmod(const QUrl &url, int permissions) +{ + finalize(d->chmod(url, permissions)); +} + +void SFTPSlave::symlink(const QString &target, const QUrl &dest, JobFlags flags) +{ + finalize(d->symlink(target, dest, flags)); +} + +void SFTPSlave::rename(const QUrl &src, const QUrl &dest, JobFlags flags) +{ + finalize(d->rename(src, dest, flags)); +} + +void SFTPSlave::mkdir(const QUrl &url, int permissions) +{ + finalize(d->mkdir(url, permissions)); +} + +void SFTPSlave::openConnection() +{ + const auto result = d->openConnection(); + if (!result.success) { + error(result.error, result.errorString); + return; + } + opened(); +} + +void SFTPSlave::closeConnection() +{ + d->closeConnection(); +} + +void SFTPSlave::open(const QUrl &url, QIODevice::OpenMode mode) +{ + const auto result = d->open(url, mode); + if (!result.success) { + error(result.error, result.errorString); + return; + } + opened(); +} + +void SFTPSlave::read(filesize_t size) +{ + maybeError(d->read(size)); +} + +void SFTPSlave::write(const QByteArray &data) +{ + maybeError(d->write(data)); +} + +void SFTPSlave::seek(filesize_t offset) +{ + maybeError(d->seek(offset)); +} + +void SFTPSlave::close() +{ + d->close(); // cannot error + finished(); +} + +void SFTPSlave::special(const QByteArray &data) +{ + maybeError(d->special(data)); +} diff --git a/sftp/kio_sftp.h b/sftp/kio_sftp.h new file mode 100644 index 0000000..c5cc605 --- /dev/null +++ b/sftp/kio_sftp.h @@ -0,0 +1,325 @@ +/* + * Copyright (c) 2001 Lucas Fisher + * Copyright (c) 2009 Andreas Schneider + * Copyright (c) 2020 Harald Sitter + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License (LGPL) 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 __kio_sftp_h__ +#define __kio_sftp_h__ + +#include +#include + +#include +#include +#include + +#include + +namespace KIO { +class AuthInfo; +} + +/** + * Result type for returning error context. + * + * This is meant to be returned by functions that do not have a simple + * error conditions that could be represented by returning a bool, or + * when the contextual error string can only be correctly constructed + * inside the function. When using the Result type always mark the + * function Q_REQUIRED_RESULT to enforce handling of the Result. + * + * The Result is forwarded all the way to the frontend API where it is + * turned into an error() or finished() call. + */ +struct Result +{ + bool success; + int error; + QString errorString; + + Q_REQUIRED_RESULT inline static Result fail(int _error = KIO::ERR_UNKNOWN, + const QString &_errorString = QString()) + { + return Result { false, _error, _errorString }; + } + + Q_REQUIRED_RESULT inline static Result pass() + { + return Result { true, 0, QString() }; + } +}; + +class SFTPSlave; + +class SFTPInternal +{ +public: + explicit SFTPInternal(SFTPSlave *qptr); + ~SFTPInternal(); + void setHost(const QString &h, quint16 port, const QString& user, const QString& pass); + Q_REQUIRED_RESULT Result get(const QUrl &url); + Q_REQUIRED_RESULT Result listDir(const QUrl &url); + Q_REQUIRED_RESULT Result mimetype(const QUrl &url); + Q_REQUIRED_RESULT Result stat(const QUrl &url); + Q_REQUIRED_RESULT Result copy(const QUrl &src, const QUrl &dest, int permissions, KIO::JobFlags flags); + Q_REQUIRED_RESULT Result put(const QUrl &url, int permissions, KIO::JobFlags flags); + void closeConnection(); + void slave_status(); + Q_REQUIRED_RESULT Result del(const QUrl &url, bool isfile); + Q_REQUIRED_RESULT Result chmod(const QUrl &url, int permissions); + Q_REQUIRED_RESULT Result symlink(const QString &target, const QUrl &dest, KIO::JobFlags flags); + Q_REQUIRED_RESULT Result rename(const QUrl &src, const QUrl &dest, KIO::JobFlags flags); + Q_REQUIRED_RESULT Result mkdir(const QUrl &url, int permissions); + Q_REQUIRED_RESULT Result openConnection(); + + // KIO::FileJob interface + Q_REQUIRED_RESULT Result open(const QUrl &url, QIODevice::OpenMode mode); + Q_REQUIRED_RESULT Result read(KIO::filesize_t size); + Q_REQUIRED_RESULT Result write(const QByteArray &data); + Q_REQUIRED_RESULT Result seek(KIO::filesize_t offset); + Q_REQUIRED_RESULT Result truncate(KIO::filesize_t length); + void close(); + Q_REQUIRED_RESULT Result special(const QByteArray &data); + + // libssh authentication callback (note that this is called by the + // global ::auth_callback() call. + int auth_callback(const char *prompt, char *buf, size_t len, + int echo, int verify, void *userdata); + + // libssh logging callback (note that this is called by the + // global ::log_callback() call. + void log_callback(int priority, const char *function, const char *buffer, + void *userdata); + + + // Must call after construction! + // Bit rubbish, but we need to return something on init. + Q_REQUIRED_RESULT Result init(); + + Q_REQUIRED_RESULT Result fileSystemFreeSpace(const QUrl &url); // KF6 TODO: Once a virtual fileSystemFreeSpace method in SlaveBase exists, override it +private: // Private variables + /** Fronting SlaveBase instance */ + SFTPSlave *q = nullptr; + + /** True if ioslave is connected to sftp server. */ + bool mConnected = false; + + /** Host we are connected to. */ + QString mHost; + + /** Port we are connected to. */ + int mPort = -1; + + /** The ssh session for the connection */ + ssh_session mSession = nullptr; + + /** The sftp session for the connection */ + sftp_session mSftp = nullptr; + + /** Username to use when connecting */ + QString mUsername; + + /** User's password */ + QString mPassword; + + /** The open file */ + sftp_file mOpenFile = nullptr; + + /** The open URL */ + QUrl mOpenUrl; + + ssh_callbacks mCallbacks = nullptr; + + // KIO::FileJob interface + KIO::filesize_t openOffset = 0; + + /** + * Holds public key authentication info for proper retry handling. + */ + KIO::AuthInfo *mPublicKeyAuthInfo = nullptr; + + /** + * GetRequest encapsulates several SFTP get requests into a single object. + * As SFTP messages are limited to MAX_XFER_BUF_SIZE several requests + * should be sent simultaneously in order to increase transfer speeds. + */ + class GetRequest { + public: + /** + * Creates a new GetRequest object. + * Requests do not take ownership of the SFTP pointers! The caller is + * responsible for freeing them. + * @param file the sftp_file object which should be transferred. + * @param size the total size of the file. + * @param maxPendingRequests the maximum number of parallel requests to start with. + * The more are pending the higher the potential memory + * foot print, however if the connection allows it + * we'll get better throughput. + */ + GetRequest(sftp_file file, uint64_t size, ushort maxPendingRequests = 128); + /** + * Removes all pending requests and closes the SFTP channel and attributes + * in order to avoid memory leaks. + */ + ~GetRequest(); + + /** + * Starts up to maxPendingRequests file requests. Reading is performed in the + * via the readChunks method. + */ + bool enqueueChunks(); + /** + * Attempts to read all pending chunks in the given QByteArray. + * @param data the array into which the data should be saved (it should be empty). + * @return 0 on EOF or timeout, -1 on error and the number of bytes read otherwise. + */ + int readChunks(QByteArray &data); + + private: + struct Request { + /** Identifier as returned by the sftp_async_read_begin call */ + int id; + /** The number of bytes expected to be returned */ + uint32_t expectedLength; + /** The SSH start offset when this request was made */ + uint64_t startOffset; + }; + + sftp_file m_file; + const uint64_t m_size; // size of file (max readable) + ushort m_maxPendingRequests; + QQueue m_pendingRequests; + }; + +private: // private methods + int authenticateKeyboardInteractive(KIO::AuthInfo &info); + + Q_REQUIRED_RESULT Result reportError(const QUrl &url, const int err); + + bool createUDSEntry(const QString &filename, const QByteArray &path, + KIO::UDSEntry &entry, short int details); + + QString canonicalizePath(const QString &path); + void requiresUserNameRedirection(); + void clearPubKeyAuthInfo(); + Q_REQUIRED_RESULT Result sftpLogin(); + Q_REQUIRED_RESULT Result sftpOpenConnection(const KIO::AuthInfo &); + + Q_REQUIRED_RESULT Result sftpGet(const QUrl &url, KIO::fileoffset_t offset = -1, int fd = -1); + Q_REQUIRED_RESULT Result sftpPut(const QUrl &url, int permissions, KIO::JobFlags flags, int fd = -1); + + /** + * sftp_write wrapper breaking buffer into suitable pieces + * \param onWritten acts as callback, for each written block. + */ + Q_REQUIRED_RESULT bool sftpWrite(sftp_file fd, + const QByteArray &buffer, + const std::function &onWritten); + + Q_REQUIRED_RESULT Result sftpCopyGet(const QUrl &url, const QString &src, int permissions, KIO::JobFlags flags); + Q_REQUIRED_RESULT Result sftpCopyPut(const QUrl &url, const QString &dest, int permissions, KIO::JobFlags flags); +}; + +/** + * Fronting class. + * The purpose of this is to separate the slave interface from the slave logic and force state + * convergence. + * Specifically logic code must not call finalization API error()/finished() but instead move + * a single Result object up the call chain. This is to prevent overwriting errors and/or finished + * finality states and broken-state situations those can cause. + */ +class SFTPSlave : public KIO::SlaveBase +{ +public: + SFTPSlave(const QByteArray &pool_socket, const QByteArray &app_socket); + ~SFTPSlave() override = default; + void setHost(const QString &host, quint16 port, const QString &user, const QString &pass) override; + void get(const QUrl &url) override; + void listDir(const QUrl &url) override ; + void mimetype(const QUrl &url) override; + void stat(const QUrl &url) override; + void copy(const QUrl &src, const QUrl &dest, int permissions, KIO::JobFlags flags) override; + void put(const QUrl &url, int permissions, KIO::JobFlags flags) override; + void slave_status() override; + void del(const QUrl &url, bool isfile) override; + void chmod(const QUrl &url, int permissions) override; + void symlink(const QString &target, const QUrl &dest, KIO::JobFlags flags) override; + void rename(const QUrl &src, const QUrl &dest, KIO::JobFlags flags) override; + void mkdir(const QUrl &url, int permissions) override; + void openConnection() override; + void closeConnection() override; + + // KIO::FileJob interface + void open(const QUrl &url, QIODevice::OpenMode mode) override; + void read(KIO::filesize_t size) override; + void write(const QByteArray &data) override; + void seek(KIO::filesize_t offset) override; + void truncate(KIO::filesize_t length); + void close() override; + void special(const QByteArray &data) override; + void virtual_hook(int id, void *data) override; + +private: + // WARNING: All members and all logic not confined to one of the public functions + // must go into SftpInternal! + + /** + * Overridden to prevent SftpInternal from easily calling + * q->opened(). Use a Result return type on error conditions + * instead. When there was no error Result the + * connection is considered opened. + * + * SftpInternal must not call any state-changing signals! + */ + void opened() + { + SlaveBase::opened(); + } + + /** + * @see opened() + */ + void error(int _errid, const QString &_text) + { + SlaveBase::error(_errid, _text); + } + + /** + * @see opened() + */ + void finished() + { + SlaveBase::finished(); + } + + /** + * Calls finished() or error() as appropriate + */ + void finalize(const Result &result); + + /** + * Calls error() if and only if the result is an error + */ + void maybeError(const Result &result); + + QScopedPointer d { new SFTPInternal(this) }; +}; + +#endif diff --git a/sftp/sftp.protocol b/sftp/sftp.protocol new file mode 100644 index 0000000..cc764d1 --- /dev/null +++ b/sftp/sftp.protocol @@ -0,0 +1,108 @@ +[Protocol] +exec=kf5/kio/sftp +protocol=sftp +input=none +listing=Name,Type,Size,Date,AccessDate,Access,Owner,Group,Link,MimeType +output=filesystem +reading=true +writing=true +makedir=true +deleting=true +moving=true +opening=true +truncating=true +linking=true +copyToFile=true +copyFromFile=true +Icon=folder-remote +maxInstances=20 +maxInstancesPerHost=5 +Description=A kioslave for sftp +Description[af]='n Kioslave vir sftp +Description[be]=Kioslave для sftp +Description[be@latin]=Słužba „kioslave” dla SFTP +Description[bg]=kioslave за sftp +Description[bn]=এস.এফ.টি.পি-র জন্য একটি kioslave +Description[bn_IN]=sftp-র জন্য kioslave +Description[br]=Ur kioslave evit sftp +Description[bs]=U/I zahvat za SFTP +Description[ca]=Un «kioslave» per a sftp +Description[ca@valencia]=Un «kioslave» per a sftp +Description[cs]=Protokol KDE pro sftp +Description[csb]=Wtëkôcz dlô procedurë òbsłużënkù sftp +Description[da]=En kioslave for sftp +Description[de]=Ein-/Ausgabemodul für das SFTP-Protokoll +Description[el]=Ένας kioslave για sftp +Description[en_GB]=A kioslave for sftp +Description[eo]=kioslave por sftp +Description[es]=Un kioslave para sftp +Description[et]=SFTP IO-moodul +Description[eu]=SFTPrako kioslave bat +Description[fa]=یک kioslave برای sftp +Description[fi]=Sftp:n liitin +Description[fr]=Un module d'entrées / sorties pour le protocole SFTP +Description[fy]=Een kioslave Foar sftp +Description[ga]=Sclábhaí KIO le haghaidh sftp +Description[gl]=Un kioslave para sftp +Description[gu]=sftp માટે kioslave +Description[he]=kioslave עבור sftp +Description[hi]=एसएफटीपी के लिए केआईओस्लेव +Description[hne]=एसएफटीपी बर केआईओस्लेव +Description[hr]=Kioslave za SFTP +Description[hsb]=kioslave za sftp +Description[hu]=KDE-protokoll az sftp-hez +Description[ia]=Un kioslave pro sftp +Description[id]=Sebuah kioslave untuk sftp +Description[is]=kioslave fyrir sftp +Description[it]=Un kioslave per sftp +Description[ja]=sftp のための kioslave +Description[ka]=A kioslave for sftp +Description[kk]=sftp-ке арналған енгізу-шығару модулі +Description[km]=kioslave សម្រាប់ sftp +Description[kn]=sftp ಒಂದು ಕೆಐಓ ಅಧೀನಾನ್ವಯ (ಸ್ಲೇವ್) +Description[ko]=SFTP KIO 슬레이브 +Description[ku]=Kioslaveyek ji bo sftp +Description[lt]=Kio pavaldusis, skirtas sftp +Description[lv]=KIO sftp apstrādātājs +Description[mai]=एसएफटीपी क' लेल केआईओस्लेव +Description[mk]=kio-служител за sftp +Description[ml]=എസ്എഫ്‌ടിപിയ്ക്കുള്ള കിയൊസ്ലേവു് +Description[mr]=sftp करिता kioslave +Description[ms]=Kioslave untuk sftp +Description[nb]=En kioslave for sftp +Description[nds]=En In-/Utgaavmoduul för sftp +Description[ne]=sftp का लागि एउटा किओस्लाभ +Description[nl]=Een kioslave voor sftp +Description[nn]=Ein KIO-slave for SFTP +Description[or]=sftp ପାଇଁ kioslave +Description[pa]=sftp ਲਈ kioslave +Description[pl]=Wtyczka protokołu sftp +Description[pt]=Um 'kioslave' para sftp +Description[pt_BR]=Um kioslave para sftp +Description[ro]=Un dispozitiv de I/E pentru SFTP +Description[ru]=Поддержка SFTP +Description[se]=ŠO-šláva sftp-protokolla várás +Description[si]=sftp සඳහා kioslave +Description[sk]=Kioslave pre sftp +Description[sl]=Kioslave za sftp +Description[sr]=У/И захват за СФТП +Description[sr@ijekavian]=У/И захват за СФТП +Description[sr@ijekavianlatin]=U/I zahvat za SFTP +Description[sr@latin]=U/I zahvat za SFTP +Description[sv]=En I/O-slav för SFTP +Description[ta]=sftpக்கான ஒரு க்யோஸ்லேவ் +Description[te]=ఎస్ ఎఫ్ టి పి కొరకు ఐఒ బానిస +Description[tg]=Фармонбари kioslave барои sftp +Description[th]=ตัวนำข้อมูลเข้า-ออกสำหรับ sftp +Description[tr]=Sftp için kioslave +Description[ug]=sftp نىڭ kioslave +Description[uk]=Підлеглий засіб введення-виведення для sftp +Description[uz]=SFTP uchun KCH-sleyv +Description[uz@cyrillic]=SFTP учун КЧ-слейв +Description[vi]=A kioslave cho SFTP +Description[wa]=On vårlet d' I/R pol protocole sftp +Description[x-test]=xxA kioslave for sftpxx +Description[zh_CN]=sftp 的 KIO slave +Description[zh_TW]=sftp 的 kioslave +X-DocPath=kioslave5/sftp/index.html +Class=:internet diff --git a/smb/CMakeLists.txt b/smb/CMakeLists.txt new file mode 100644 index 0000000..0626263 --- /dev/null +++ b/smb/CMakeLists.txt @@ -0,0 +1,95 @@ +option(BUILD_KDSoapWSDiscoveryClient "Automatically build WSD client if a system one isn't found." ON) +find_package(KDSoapWSDiscoveryClient QUIET) +set(INTERNAL_WSDCLIENT ${BUILD_KDSoapWSDiscoveryClient}) +if(KDSoapWSDiscoveryClient_FOUND) + set(INTERNAL_WSDCLIENT OFF) +endif() +if(INTERNAL_WSDCLIENT) + # Special internal version, mangled to be a STATIC lib. + # This is only useful and necessary until the library has + # its API finalized and gotten a stable release. + # Until then when using it as external library you should try + # to use a snapshot that matches the internal copy's git ref. + # Currently at: 14287e92e80a77aa4c0adee2871e6b87c9c3055e + add_subdirectory(kdsoap-ws-discovery-client) +endif() +add_feature_info("Internal KDSoapWSDiscoveryClient" INTERNAL_WSDCLIENT + "Building using internal client because a system-provided version could not be found.") + +add_feature_info("SMB DNS-SD Discovery" HAVE_KDNSSD_WITH_SIGNAL_RACE_PROTECTION + "Discover SMB hosts via DNS-SD/Avahi/Bonjour. KF5DNSSD >= 5.54 is required to support this.") + +find_package(Threads REQUIRED) + +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_smb\") + +include(CheckIncludeFile) +include(CheckSymbolExists) +include(CMakePushCheckState) +set(CMAKE_AUTOMAKE ON) + +cmake_push_check_state() +list(APPEND CMAKE_REQUIRED_INCLUDES ${SAMBA_INCLUDE_DIR}) +list(APPEND CMAKE_REQUIRED_LIBRARIES ${SAMBA_LIBRARIES}) +check_symbol_exists(smbc_readdirplus2 "libsmbclient.h" HAVE_READDIRPLUS2) +cmake_pop_check_state() +check_include_file(utime.h HAVE_UTIME_H) + +configure_file(config-smb.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-smb.h) + +set(kio_smb_PART_SRCS + kio_smb.cpp + kio_smb_auth.cpp + kio_smb_browse.cpp + kio_smb_config.cpp + kio_smb_dir.cpp + kio_smb_file.cpp + smburl.cpp + kio_smb_mount.cpp + wsdiscoverer.cpp + dnssddiscoverer.cpp + discovery.cpp + transfer.cpp + smbcdiscoverer.cpp + smbcontext.cpp + smbauthenticator.cpp +) + +ecm_qt_declare_logging_category(kio_smb_PART_SRCS + HEADER smb-logsettings.h + IDENTIFIER KIO_SMB_LOG + CATEGORY_NAME log_kio_smb) + +include_directories(${SAMBA_INCLUDE_DIR}) + +# Intermediate static lib target for reuse in testing. +add_library(kio_smb_static STATIC ${kio_smb_PART_SRCS}) +target_include_directories(kio_smb_static + PUBLIC + "$" +) +target_link_libraries(kio_smb_static + KF5::KIOCore + KF5::I18n + ${SAMBA_LIBRARIES} + Qt5::Network + KF5::DNSSD + KDSoap::WSDiscoveryClient + Threads::Threads # std::async +) + +# Final plugin target. +add_library(kio_smb MODULE main.cpp) +target_link_libraries(kio_smb + kio_smb_static +) + +set_target_properties(kio_smb PROPERTIES OUTPUT_NAME "smb") +set_target_properties(kio_smb PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf5/kio") + +install(TARGETS kio_smb DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) +install(FILES smb-network.desktop DESTINATION ${KDE_INSTALL_DATADIR}/konqueror/dirtree/remote) +install(FILES smb-network.desktop DESTINATION ${KDE_INSTALL_DATADIR}/remoteview) + +add_subdirectory(autotests) +add_subdirectory(kded) diff --git a/smb/Messages.sh b/smb/Messages.sh new file mode 100644 index 0000000..69acdda --- /dev/null +++ b/smb/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kio5_smb.pot diff --git a/smb/autotests/CMakeLists.txt b/smb/autotests/CMakeLists.txt new file mode 100644 index 0000000..9d4d5b7 --- /dev/null +++ b/smb/autotests/CMakeLists.txt @@ -0,0 +1,18 @@ +if(NOT BUILD_TESTING) + return() +endif() + +# allow coercing cstring to qstring, easier to write +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +find_package(Qt5Test ${QT_MIN_VERSION} CONFIG REQUIRED) + +include(ECMAddTests) + +ecm_add_tests( + smburltest + transfertest + LINK_LIBRARIES + Qt5::Test + kio_smb_static +) diff --git a/smb/autotests/smburltest.cpp b/smb/autotests/smburltest.cpp new file mode 100644 index 0000000..5e0e7e3 --- /dev/null +++ b/smb/autotests/smburltest.cpp @@ -0,0 +1,140 @@ +/* + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2020 Harald Sitter +*/ + +#include +#include + +#include "smburl.h" + +class SMBUrlTest : public QObject +{ + Q_OBJECT +private Q_SLOTS: + void testMinimalToSmbcValid() + { + // libsmbclient is a bit picky. make sure we convert to minimal applicable form + { + SMBUrl url(QUrl("smb:/")); + QCOMPARE(url.toSmbcUrl(), "smb://"); + } + + // But at the same time it will happily deal with smb: + { + SMBUrl url(QUrl("smb:")); + QCOMPARE(url.toSmbcUrl(), "smb:"); + } + } + + void testType() + { + QCOMPARE(SMBUrl(QUrl("smb://")).getType(), SMBURLTYPE_ENTIRE_NETWORK); + QCOMPARE(SMBUrl(QUrl("smb://host")).getType(), SMBURLTYPE_WORKGROUP_OR_SERVER); + QCOMPARE(SMBUrl(QUrl("smb://host/share/file")).getType(), SMBURLTYPE_SHARE_OR_PATH); + QCOMPARE(SMBUrl(QUrl()).getType(), SMBURLTYPE_UNKNOWN); + } + + void testPart() + { + SMBUrl url(QUrl("smb://host/share/file")); + QCOMPARE(url.partUrl().toString(), "smb://host/share/file.part"); + } + + void testUp() + { + SMBUrl url(QUrl("smb://host/share/file")); + url.cdUp(); + QCOMPARE(url.toSmbcUrl(), "smb://host/share"); + } + + void testAddPath() + { + SMBUrl url(QUrl("smb://host/share")); + url.addPath("file"); + QCOMPARE(url.toSmbcUrl(), "smb://host/share/file"); + } + + void testCifs() + { + // We treat cifs as an alias but need to translate it to smb. + // https://bugs.kde.org/show_bug.cgi?id=327295 + SMBUrl url(QUrl("cifs://host/share/file")); + QCOMPARE(url.toSmbcUrl(), "smb://host/share/file"); + } + + void testIPv6Literal() + { + // https://bugs.kde.org/show_bug.cgi?id=417682 + // Samba cannot deal with RFC5952 IPv6 notation (e.g. ::1%lo) + // to work around we convert to windows ipv6 literals. + + // The actual represented URL should not change! + // i.e. towards the KIO client we do not leak the IPv6 + // literal when returning an URL. + QCOMPARE(SMBUrl(QUrl("smb://[::1]/share")).toString(), + "smb://[::1]/share"); + + // The internal smbc representation should be literal though: + // :: prefix + QCOMPARE(SMBUrl(QUrl("smb://[::1]/share")).toSmbcUrl(), + "smb://0--1.ipv6-literal.net/share"); + // :: suffix + QCOMPARE(SMBUrl(QUrl("smb://[fe80::]/share")).toSmbcUrl(), + "smb://fe80--0.ipv6-literal.net/share"); + // %lo scope + QCOMPARE(SMBUrl(QUrl("smb://[::1%lo]/share")).toSmbcUrl(), + "smb://0--1slo.ipv6-literal.net/share"); + // random valid addr + QCOMPARE(SMBUrl(QUrl("smb://[fe80::9cd7:32c7:faeb:f23d]/share")).toSmbcUrl(), + "smb://fe80--9cd7-32c7-faeb-f23d.ipv6-literal.net/share"); + } + + void testWorkgroupWithSpaces() + { + // Workgroups can have spaces but QUrls cannot, so we have a hack + // that puts the workgroup info into a query. + // Only applicable to SMB1 pretty much, we do not do workgroup browsing + // for 2+. + // https://bugs.kde.org/show_bug.cgi?id=204423 + + // wg + QCOMPARE(SMBUrl(QUrl("smb://?kio-workgroup=hax max")).toSmbcUrl(), + "smb://hax max/"); + // wg and query + QCOMPARE(SMBUrl(QUrl("smb://?kio-workgroup=hax max&q=a")).toSmbcUrl(), + "smb://hax max/?q=a"); + // host and wg and query + QCOMPARE(SMBUrl(QUrl("smb://host/?kio-workgroup=hax max&q=a")).toSmbcUrl(), + "smb://hax max/host?q=a"); + // host and wg and query + QCOMPARE(SMBUrl(QUrl("smb://host/share?kio-workgroup=hax max")).toSmbcUrl(), + "smb://hax max/host/share"); + // Non-empty path. libsmbc hates unclean paths + QCOMPARE(SMBUrl(QUrl("smb:///////?kio-workgroup=hax max")).toSmbcUrl(), + "smb://hax max/"); + // % character - run through .url() to simulate behavior of our listDir() + QCOMPARE(SMBUrl(QUrl(QUrl("smb://?kio-workgroup=HAX%25MAX").url())).toSmbcUrl(), + "smb://HAX%25MAX/"); + // !ascii - run through .url() to simulate behavior of our listDir() + QCOMPARE(SMBUrl(QUrl(QUrl("smb:///?kio-workgroup=DOMÄNE A").url())).toSmbcUrl(), + "smb://DOMÄNE A/"); // works as-is with smbc. + + // Also make sure type detection knows about this + QCOMPARE(SMBUrl(QUrl("smb:/?kio-workgroup=hax max")).getType(), + SMBURLTYPE_WORKGROUP_OR_SERVER); + } + + void testNonSmb() + { + // In the kdirnotify integration we load arbitrary urls into smburl, + // make sure they get reported as unknown. + QCOMPARE(SMBUrl(QUrl("file:///")).getType(), SMBURLTYPE_UNKNOWN); + QCOMPARE(SMBUrl(QUrl("file:///home/foo/bar")).getType(), SMBURLTYPE_UNKNOWN); + QCOMPARE(SMBUrl(QUrl("sftp://me@localhost/foo/bar")).getType(), SMBURLTYPE_UNKNOWN); + } +}; + +QTEST_GUILESS_MAIN(SMBUrlTest) + +#include "smburltest.moc" diff --git a/smb/autotests/transfertest.cpp b/smb/autotests/transfertest.cpp new file mode 100644 index 0000000..bdd4707 --- /dev/null +++ b/smb/autotests/transfertest.cpp @@ -0,0 +1,151 @@ +/* + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2020 Harald Sitter +*/ + +#include + +#include + +#include "transfer.h" + +class TransferTest : public QObject +{ + Q_OBJECT +private Q_SLOTS: + void testSegmentOnSmallFile() + { + // Files smaller than our minimal segment size ought to be transferred in one go + // otherwise we have a chance of degrading performance. + QCOMPARE(TransferSegment(1).buf.size(), 1); + } + + void testMaxSegment() + { + // Large files may only use up to a given maximum. + QCOMPARE(TransferSegment(512 * 1024 * 1024).buf.size(), c_maxSegmentSize); + } + + void testIdealSegmentSize() + { + QCOMPARE(TransferSegment(64 * 1024 * 1024).buf.size(), 1342177); + } + + void testSegment() + { + TransferSegment s(8); + QCOMPARE(s.buf.size(), 8); + memset(s.buf.data(), 1, 8); + QCOMPARE(s.buf.data()[0], 1); + } + + void testRing() + { + TransferRingBuffer ring(8); + for (auto i = 0; i <= 32; ++i) { + { + auto s = ring.nextFree(); + memset(s->buf.data(), i, 8); + ring.push(); + } + { + auto s = ring.pop(); + QCOMPARE(s->buf.data()[0], static_cast(i)); + ring.unpop(); + } + } + } + + void testRingThreadedSlowPush() + { + const auto runs = 127; + const auto fileSize = 8; + TransferRingBuffer ring(fileSize); + + std::atomic abort(false); + + auto pullFuture = std::async(std::launch::async, [&ring, &abort]() -> bool { + for (auto i = 0; i <= runs && !abort; ++i) { + auto s = ring.pop(); + if (!QTest::qCompare(s->buf.data()[0], static_cast(i), + qPrintable(QStringLiteral("On pull iteration %1").arg(i)), "", + __FILE__, __LINE__)) { + abort = true; + return false; + } + ring.unpop(); + } + return true; + }); + + auto pushFuture = std::async(std::launch::async, [&ring, &abort]() -> bool { + for (auto i = 0; i <= runs && !abort; ++i) { + auto s = ring.nextFree(); + memset(s->buf.data(), i, fileSize); + ring.push(); + if (abort) { + ring.done(); + return false; + } + // Slow down this thread to simulate slow network reads. + std::this_thread::sleep_for(std::chrono::milliseconds(5)); + } + ring.done(); + return true; + }); + + pushFuture.wait(); + pullFuture.wait(); + + QVERIFY(pushFuture.get()); + QVERIFY(pullFuture.get()); + } + + void testRingThreadedSlowPull() + { + const auto runs = 127; + const auto fileSize = 8; + TransferRingBuffer ring(fileSize); + + std::atomic abort(false); + + auto pullFuture = std::async(std::launch::async, [&ring, &abort]() -> bool { + for (auto i = 0; i <= runs && !abort; ++i) { + auto s = ring.pop(); + if (!QTest::qCompare(s->buf.data()[0], static_cast(i), + qPrintable(QStringLiteral("On pull iteration %1").arg(i)), "", + __FILE__, __LINE__)) { + abort = true; + } + // Slow down this thread to simulate slow local writes. + std::this_thread::sleep_for(std::chrono::milliseconds(5)); + ring.unpop(); + } + return true; + }); + + auto pushFuture = std::async(std::launch::async, [&ring, &abort]() -> bool { + for (auto i = 0; i <= runs && !abort; ++i) { + auto s = ring.nextFree(); + memset(s->buf.data(), i, fileSize); + if (abort) { + ring.done(); + return false; + } + ring.push(); + } + ring.done(); + return true; + }); + + pushFuture.wait(); + pullFuture.wait(); + + QVERIFY(pushFuture.get()); + QVERIFY(pullFuture.get()); + } +}; + +QTEST_GUILESS_MAIN(TransferTest) + +#include "transfertest.moc" diff --git a/smb/config-smb.h.cmake b/smb/config-smb.h.cmake new file mode 100644 index 0000000..f88eac4 --- /dev/null +++ b/smb/config-smb.h.cmake @@ -0,0 +1,3 @@ +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UTIME_H 1 +#cmakedefine HAVE_READDIRPLUS2 1 diff --git a/smb/discovery.cpp b/smb/discovery.cpp new file mode 100644 index 0000000..fa1b8c8 --- /dev/null +++ b/smb/discovery.cpp @@ -0,0 +1,16 @@ +/* + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2019 Harald Sitter +*/ + +#include "discovery.h" + +Discovery::Discovery() +{ + qRegisterMetaType("Discovery::Ptr"); +} + +Discovery::~Discovery() = default; + +Discoverer::Discoverer() = default; +Discoverer::~Discoverer() = default; diff --git a/smb/discovery.h b/smb/discovery.h new file mode 100644 index 0000000..b78c1b9 --- /dev/null +++ b/smb/discovery.h @@ -0,0 +1,38 @@ +/* + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2019 Harald Sitter +*/ + +#ifndef DISCOVERY_H +#define DISCOVERY_H + +#include +#include + +class Discovery +{ +public: + typedef QSharedPointer Ptr; + + Discovery(); + virtual ~Discovery(); + virtual QString udsName() const = 0; + virtual KIO::UDSEntry toEntry() const = 0; +}; + +class Discoverer +{ +public: + Discoverer(); + virtual ~Discoverer(); + + virtual void start() = 0; + virtual void stop() = 0; + virtual bool isFinished() const = 0; + + // Implement as signal! + virtual void newDiscovery(Discovery::Ptr discovery) = 0; + virtual void finished() = 0; +}; + +#endif // DISCOVERY_H diff --git a/smb/dnssddiscoverer.cpp b/smb/dnssddiscoverer.cpp new file mode 100644 index 0000000..c2ca0e6 --- /dev/null +++ b/smb/dnssddiscoverer.cpp @@ -0,0 +1,109 @@ +/* + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2019 Harald Sitter +*/ + +#include "dnssddiscoverer.h" +#include "kio_smb.h" + +DNSSDDiscovery::DNSSDDiscovery(KDNSSD::RemoteService::Ptr service) + : m_service(service) +{ +} + +QString DNSSDDiscovery::udsName() const +{ + return m_service->serviceName(); +} + +KIO::UDSEntry DNSSDDiscovery::toEntry() const +{ + KIO::UDSEntry entry; + entry.reserve(6); + entry.fastInsert(KIO::UDSEntry::UDS_NAME, udsName()); + + entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)); + entry.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, "network-server"); + + // TODO: it may be better to resolve the host to an ip address. dnssd + // being able to find a service doesn't mean name resolution is + // properly set up for its domain. So, we may not be able to resolve + // this without help from avahi. OTOH KDNSSD doesn't have API for this + // and from a platform POV we should probably assume that if avahi + // is functional it is also set up as resolution provider. + // Given the plugin design on glibc's libnss however I am not sure + // that assumption will be true all the time. ~sitter, 2018 + QUrl u; + u.setScheme(QStringLiteral("smb")); + u.setHost(m_service->hostName()); + const int defaultPort = 445; + if (m_service->port() > 0 && m_service->port() != defaultPort) { + u.setPort(m_service->port()); + } + u.setPath("/"); // https://bugs.kde.org/show_bug.cgi?id=388922 + + entry.fastInsert(KIO::UDSEntry::UDS_URL, u.url()); + entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, + QStringLiteral("application/x-smb-server")); + return entry; +} + +DNSSDDiscoverer::DNSSDDiscoverer() +{ + connect(&m_browser, &KDNSSD::ServiceBrowser::serviceAdded, + this, [=](KDNSSD::RemoteService::Ptr service){ + qCDebug(KIO_SMB_LOG) << "DNSSD added:" + << service->serviceName() + << service->type() + << service->domain() + << service->hostName() + << service->port(); + // Manual contains check. We need to use the == of the underlying + // objects, not the pointers. The same service may have >1 + // RemoteService* instances representing it, so the == impl of + // RemoteService::Ptr is useless here. + for (const auto &servicePtr : qAsConst(m_services)) { + if (*service == *servicePtr) { + return; + } + } + + connect(service.data(), &KDNSSD::RemoteService::resolved, this, [=] { + ++m_resolvedCount; + emit newDiscovery(Discovery::Ptr(new DNSSDDiscovery(service))); + maybeFinish(); + }); + + // Schedule resolution of hostname. We'll later call resolve + // which will block until the resolution is done. This basically + // gives us a head start on discovery. + service->resolveAsync(); + m_services.append(service); + }); + connect(&m_browser, &KDNSSD::ServiceBrowser::finished, this, &DNSSDDiscoverer::stop); +} + +void DNSSDDiscoverer::start() +{ + m_browser.startBrowse(); +} + +void DNSSDDiscoverer::stop() +{ + m_browser.disconnect(); + m_disconnected = true; + maybeFinish(); +} + +bool DNSSDDiscoverer::isFinished() const +{ + return m_disconnected && m_services.count() == m_resolvedCount; +} + +void DNSSDDiscoverer::maybeFinish() +{ + if (isFinished()) { + emit finished(); + } +} diff --git a/smb/dnssddiscoverer.h b/smb/dnssddiscoverer.h new file mode 100644 index 0000000..951d18c --- /dev/null +++ b/smb/dnssddiscoverer.h @@ -0,0 +1,50 @@ +/* + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2019 Harald Sitter +*/ + +#ifndef DNSSDDISCOVERER_H +#define DNSSDDISCOVERER_H + +#include + +#include +#include + +#include "discovery.h" + +class DNSSDDiscovery : public Discovery +{ +public: + DNSSDDiscovery(KDNSSD::RemoteService::Ptr service); + QString udsName() const override; + KIO::UDSEntry toEntry() const override; + +private: + KDNSSD::RemoteService::Ptr m_service; +}; + +class DNSSDDiscoverer : public QObject, public Discoverer +{ + Q_OBJECT +public: + DNSSDDiscoverer(); + + void start() override; + bool isFinished() const override; + +signals: + void newDiscovery(Discovery::Ptr discovery) override; + void finished() override; + +private: + void stop() override; + void maybeFinish(); + + KDNSSD::ServiceBrowser m_browser {QStringLiteral("_smb._tcp")}; + QList m_services; + int m_resolvedCount = 0; + bool m_disconnected = false; +}; + +#endif // DNSSDDISCOVERER_H diff --git a/smb/kded/CMakeLists.txt b/smb/kded/CMakeLists.txt new file mode 100644 index 0000000..405d4ef --- /dev/null +++ b/smb/kded/CMakeLists.txt @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: BSD-3-Clause +# SPDX-FileCopyrightText: 2020 Harald Sitter + +configure_file(config.h.cmake config.h) + +add_executable(smbnotifier notifier.cpp) +target_link_libraries(smbnotifier KF5::KIOCore kio_smb_static) +target_link_options(smbnotifier PUBLIC "LINKER:--as-needed") # shrink to bare minimum we fork this a lot +install(TARGETS smbnotifier DESTINATION ${KDE_INSTALL_LIBEXECDIR_KF5}) + +add_library(kded-smbwatcher MODULE watcher.cpp) +target_link_libraries(kded-smbwatcher KF5::DBusAddons KF5::KIOCore kio_smb_static) +set_target_properties(kded-smbwatcher PROPERTIES OUTPUT_NAME smbwatcher) +target_link_options(kded-smbwatcher PUBLIC "LINKER:--as-needed") # shrink to bare minimum we load this into kded +kcoreaddons_desktop_to_json(kded-smbwatcher kded_smbwatcher.desktop) +install(TARGETS kded-smbwatcher DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kded) diff --git a/smb/kded/config.h.cmake b/smb/kded/config.h.cmake new file mode 100644 index 0000000..07632c6 --- /dev/null +++ b/smb/kded/config.h.cmake @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +// SPDX-FileCopyrightText: 2020 Harald Sitter + +#pragma once + +#define KDE_INSTALL_FULL_LIBEXECDIR_KF5 "${KDE_INSTALL_FULL_LIBEXECDIR_KF5}" diff --git a/smb/kded/kded_smbwatcher.desktop b/smb/kded/kded_smbwatcher.desktop new file mode 100644 index 0000000..2b9d332 --- /dev/null +++ b/smb/kded/kded_smbwatcher.desktop @@ -0,0 +1,67 @@ +[Desktop Entry] +Type=Service +X-KDE-ServiceTypes=KDEDModule +X-KDE-Kded-autoload=true +# We need this module loaded all the time, lazy loading on slave use wouldn't +# be sufficient as the kdirnotify signal is already out by the time the slave +# is initalized so the first opened dir wouldn't be watched then. +# It'd be better if we had a general monitor module that slaves can register +# with. The monitor would then listen to kdirnotify and check the schemes +# to decide which watcher to load, and then simply forward the call to the watcher +# in-process. Would also save us from having to connect to dbus in every watcher. +X-KDE-Kded-load-on-demand=true +# Delayed load +X-KDE-Kded-phase=2 +X-KDE-Library=smbwatcher +Icon=preferences-system-network-share-windows + +Name=SMB Watcher +Name[ca]=Vigilant de SMB +Name[ca@valencia]=Vigilant de SMB +Name[cs]=Sledovač SMB +Name[da]=SMB-overvåger +Name[de]=SMB-Überwachung +Name[el]=Επόπτης SMB +Name[en_GB]=SMB Watcher +Name[es]=Observador SMB +Name[et]=SMB jälgija +Name[eu]=SMB behatzailea +Name[fi]=SMB-valvoja +Name[fr]=Surveillance « Samba » +Name[ia]=Observator de SMB +Name[it]=Osservatore SMB +Name[ko]=SMB 모니터 +Name[nl]=SMB-bewaker +Name[nn]=SMB-overvaking +Name[pt]=Vigilante do SMB +Name[pt_BR]=Monitor SMB +Name[sk]=Sledovanie SMB +Name[sl]=Opazovalnik SMB +Name[sv]=SMB-övervakare +Name[uk]=Наглядач SMB +Name[x-test]=xxSMB Watcherxx +Comment=Monitors directories on the smb:/ protocol for changes +Comment[ca]=Controla els canvis als directoris en el protocol «smb:/» +Comment[ca@valencia]=Controla els canvis als directoris en el protocol «smb:/» +Comment[cs]=Monitoruje změny v adresáři protokolu smb:/ +Comment[da]=Overvåger mapper på smb:/-protokollen for ændringer +Comment[de]=Überwacht Ordner für das Protokoll „smb:/“ auf Änderungen +Comment[el]=Ελέγχει τους καταλόγους στο smb:/ πρωτόκολλο για αλλαγές +Comment[en_GB]=Monitors directories on the smb:/ protocol for changes +Comment[es]=Monitoriza cambios en directorios del protocolo smb:/ +Comment[et]=smb:/ protokolli kaudu ühendatud kataloogide muutuste jälgimine +Comment[eu]=«smb:/» protokoloko direktorioak zelatatzen ditu aldaketa bila +Comment[fi]=Tarkkailee smb:/-yhteyskäytännön kansioiden muutoksia +Comment[fr]=Surveille les modifications pour les dossiers gérés par le protocole « smb:/ » +Comment[ia]=Il monitora le directorios pro variationes sur le protocollo smb:/ +Comment[it]=Sorveglia i cambiamenti nelle cartelle del protocollo smb:/ +Comment[ko]=smb:/ 프로토콜의 디렉터리 변경 사항 감시 +Comment[nl]=Bewaakt mappen via het protocol smb:// op wijzigingen +Comment[nn]=Overvakar mapper på smb:/-protokollen for endringar +Comment[pt]=Vigia as alterações nas pastas com protocolo smb:/ +Comment[pt_BR]=Monitora as alterações nas pastas do protocolo smb:// +Comment[sk]=Sleduje zmeny adresárov protokolu smb:/ +Comment[sl]=Nadzira direktorije smb:/ za spremembami +Comment[sv]=Övervakar katalogen med protokollet smb:/ för ändringar +Comment[uk]=Стежить за змінами у теках, доступ до яких здійснюється за протоколом smb:/ +Comment[x-test]=xxMonitors directories on the smb:/ protocol for changesxx diff --git a/smb/kded/notifier.cpp b/smb/kded/notifier.cpp new file mode 100644 index 0000000..1d6357d --- /dev/null +++ b/smb/kded/notifier.cpp @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +// SPDX-FileCopyrightText: 2020 Harald Sitter + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +// Frontend implementation in place of slavebase +class Frontend : public SMBAbstractFrontend +{ + KPasswdServerClient m_passwd; +public: + bool checkCachedAuthentication(KIO::AuthInfo &info) override + { + return m_passwd.checkAuthInfo(&info, 0, 0); + } +}; + +// Trivial move action wrapper. Moves happen in two subsqeuent events so +// we need to preserve the context across one iteration. +class MoveAction +{ +public: + QUrl from; + QUrl to; + + bool isComplete() const + { + return !from.isEmpty() && !to.isEmpty(); + } +}; + +// Rate limit modification signals. SMB will send modification actions +// every time we write during a copy to the remote. This is very excessive +// signals spam so we limit the amount of actual emissions to dbus. +// This is done here in the notifier rahter than KIO because we have +// a much easier time telling which urls events are happening on. +class ModificationLimiter +{ + Q_DISABLE_COPY(ModificationLimiter) +public: + ModificationLimiter() = default; + ~ModificationLimiter() + { + qDeleteAll(m_limiter); + } + + void notify(const QUrl &url) + { + QElapsedTimer *timer = m_limiter.value(url, nullptr); + if (timer && timer->isValid() && !timer->hasExpired(m_timelimit)) { + qCDebug(KIO_SMB_LOG) << " withholding modification signal; timer hasn't expired"; + return; + } + if (!timer) { + // unknown url => make space => insert new timer + if (m_limiter.size() > m_cap) { + makeSpace(); + } + timer = new QElapsedTimer; + m_limiter.insert(url, timer); + } + timer->start(); + OrgKdeKDirNotifyInterface::emitFilesChanged({url}); + } + + // A non-move event occured on this URL. If the url is in the limiter then throw it out to reclaim the memory. + // A non-move means the url was otherwise transformed which by extension means the modification must have + // concluded. We do not emit a final change here because the current non-move event would imply a specific change + // anyway. + void forget(const QUrl &url) + { + for (auto it = m_limiter.begin(); it != m_limiter.end(); ++it) { + if (it.key() == url) { + delete it.value(); + m_limiter.erase(it); + return; + } + } + } + + void makeSpace() + { + auto oldestIt = m_limiter.begin(); + for (auto it = m_limiter.begin(); it != m_limiter.end(); ++it) { + if ((*it)->elapsed() > (*oldestIt)->elapsed()) { + oldestIt = it; + } + } + delete *oldestIt; + m_limiter.erase(oldestIt); + } + +private: + static const int m_timelimit = 8000 /* ms */; // time between modification signals + // How many urls we'll track concurrently. These may not get cleaned up until the cap is exhausted, so in the + // interested of minimal memory footprint we'll want to keep the cap low. + static const int m_cap = 4; + QHash m_limiter; +}; + +int main(int argc, char **argv) +{ + QCoreApplication app(argc, argv); + + QCommandLineParser parser; + parser.addHelpOption(); + // Intentionally not localized. This process isn't meant to be used by humans. + parser.addPositionalArgument(QStringLiteral("URI"), + QStringLiteral("smb: URI of directory to notify on (smb://host.local/share/dir)")); + parser.process(app); + + Frontend frontend; + SMBContext smbcContext(new SMBAuthenticator(frontend)); + + struct NotifyContext { + const QUrl url; + // Modification happens a lot, rate limit the notifications going through dbus. + ModificationLimiter modificationLimiter; + }; + NotifyContext context { QUrl(parser.positionalArguments().at(0)), {} }; + + auto notify = [](const struct smbc_notify_callback_action *actions, size_t num_actions, void *private_data) -> int { + auto *context = static_cast(private_data); + + // Some relevant docs for how this works under the hood + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fasod/271a36e8-c94b-4527-8735-e884f5504cd9 + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/14f9d050-27b2-49df-b009-54e08e8bf7b5 + + qCDebug(KIO_SMB_LOG) << "notifiying for n actions:" << num_actions; + + // Moves are a bit award. They arrive in two subsequent events this object helps us collect the events. + MoveAction pendingMove; + + // Values @ 2.7.1 FILE_NOTIFY_INFORMATION + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/634043d7-7b39-47e9-9e26-bda64685e4c9 + for (size_t i = 0; i < num_actions; ++i, ++actions) { + qCDebug(KIO_SMB_LOG) << " " << actions->action << actions->filename; + QUrl url(context->url); + url.setPath(url.path() + "/" + actions->filename); + + if (actions->action != SMBC_NOTIFY_ACTION_MODIFIED) { + // If the current action isn't a modification forget a possible pending modification from a previous + // action. + // NB: by default every copy is followed by a move from f.part to f + context->modificationLimiter.forget(url); + } + + switch (actions->action) { + case SMBC_NOTIFY_ACTION_ADDED: + OrgKdeKDirNotifyInterface::emitFilesAdded(context->url /* dir */); + continue; + case SMBC_NOTIFY_ACTION_REMOVED: + OrgKdeKDirNotifyInterface::emitFilesRemoved({url}); + continue; + case SMBC_NOTIFY_ACTION_MODIFIED: + context->modificationLimiter.notify(url); + continue; + case SMBC_NOTIFY_ACTION_OLD_NAME: + Q_ASSERT(!pendingMove.isComplete()); + pendingMove.from = url; + continue; + case SMBC_NOTIFY_ACTION_NEW_NAME: + pendingMove.to = url; + Q_ASSERT(pendingMove.isComplete()); + OrgKdeKDirNotifyInterface::emitFileRenamed(pendingMove.from, pendingMove.to); + pendingMove = MoveAction(); + continue; + case SMBC_NOTIFY_ACTION_ADDED_STREAM: Q_FALLTHROUGH(); + case SMBC_NOTIFY_ACTION_REMOVED_STREAM: Q_FALLTHROUGH(); + case SMBC_NOTIFY_ACTION_MODIFIED_STREAM: + // https://docs.microsoft.com/en-us/windows/win32/fileio/file-streams + // Streams have no real use for us I think. They sound like proprietary + // information an application might attach to a file. + continue; + } + qCWarning(KIO_SMB_LOG) << "Unhandled action" << actions->action << "on URL" << url; + } + + return 0; + }; + + qCDebug(KIO_SMB_LOG) << "notifying on" << context.url.toString(); + const int dh = smbc_opendir(qUtf8Printable(context.url.toString())); + auto dhClose = qScopeGuard([dh]{ smbc_closedir(dh); }); + if (dh < 0) { + qCWarning(KIO_SMB_LOG) << "-- Failed to smbc_opendir:" << strerror(errno); + return 1; + } + Q_ASSERT(dh >= 0); + + // Values @ 2.2.35 SMB2 CHANGE_NOTIFY Request + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/598f395a-e7a2-4cc8-afb3-ccb30dd2df7c + // Not subscribing to stream changes see the callback handler for details. + const int nh = smbc_notify(dh, + 0 /* not recursive */, + SMBC_NOTIFY_CHANGE_FILE_NAME | + SMBC_NOTIFY_CHANGE_DIR_NAME | + SMBC_NOTIFY_CHANGE_ATTRIBUTES | + SMBC_NOTIFY_CHANGE_SIZE | + SMBC_NOTIFY_CHANGE_LAST_WRITE | + SMBC_NOTIFY_CHANGE_LAST_ACCESS | + SMBC_NOTIFY_CHANGE_CREATION | + SMBC_NOTIFY_CHANGE_EA | + SMBC_NOTIFY_CHANGE_SECURITY, + 0 /* no eventlooping necessary */, notify, &context); + if (nh == -1) { + qCWarning(KIO_SMB_LOG) << "-- Failed to smbc_notify:" << strerror(errno); + return 2; + } + Q_ASSERT(nh == 0); + + return app.exec(); +} diff --git a/smb/kded/watcher.cpp b/smb/kded/watcher.cpp new file mode 100644 index 0000000..c0287b3 --- /dev/null +++ b/smb/kded/watcher.cpp @@ -0,0 +1,208 @@ +// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +// SPDX-FileCopyrightText: 2020 Harald Sitter + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include "config.h" + +class Notifier : public QObject +{ + Q_OBJECT +public: + explicit Notifier(const QString &url, QObject *parent) + : QObject(parent) + , m_url(url) + { + } + + ~Notifier() + { + if (m_proc) { + m_proc->disconnect(); // no need for a finished signal + m_proc->terminate(); + m_proc->waitForFinished(1000); // we'll want to proceed to kill fairly quickly + m_proc->kill(); + } + } + + // Update last event on this notifier. + // Notifiers that haven't seen activity may get dropped should we run out of capacity. + void poke() + { + m_lastEntry = QDateTime::currentDateTimeUtc(); + } + + bool operator<(const Notifier &other) const + { + return m_lastEntry < other.m_lastEntry; + } + +signals: + void finished(const QString &url); + +public slots: + void start() + { + ++m_startCounter; + // libsmbclient isn't properly thread safe and attaching a notification request to a context + // is fully blocking. So notify is blockig the current thread an we can't start more threads + // with more contexts to watch multiple directories in-process. + // To bypass this limitation we'll spawn separated notifier processes for each directory + // we want to notify on. + // https://bugzilla.samba.org/show_bug.cgi?id=11413 + m_proc = new QProcess(this); + m_proc->setProcessChannelMode(QProcess::ForwardedChannels); + m_proc->setProgram(QStringLiteral(KDE_INSTALL_FULL_LIBEXECDIR_KF5 "/smbnotifier")); + m_proc->setArguments({m_url}); + connect(m_proc, QOverload::of(&QProcess::finished), + this, &Notifier::maybeRestart); + m_proc->start(); + } + +private slots: + void maybeRestart(int code, QProcess::ExitStatus status) + { + if (code == 0 || status != QProcess::NormalExit || m_startCounter >= m_startCounterLimit) { + emit finished(m_url); + return; + } + m_proc->deleteLater(); + m_proc = nullptr; + // Try to restart if it error'd out. Notifying requires authentication, if credentials + // weren't cached by the time we attempted to register the notifier an error will + // occur and the child exits !0. + QTimer::singleShot(10000, this, &Notifier::start); + } + +private: + static const int m_startCounterLimit = 4; + int m_startCounter = 0; + const QString m_url; + QDateTime m_lastEntry { QDateTime::currentDateTimeUtc() }; + QProcess *m_proc = nullptr; +}; + +class Watcher : public QObject +{ + Q_OBJECT +public: + explicit Watcher(QObject *parent = nullptr) + : QObject(parent) + { + connect(&m_interface, &OrgKdeKDirNotifyInterface::enteredDirectory, + this, &Watcher::watchDirectory); + connect(&m_interface, &OrgKdeKDirNotifyInterface::leftDirectory, + this, &Watcher::unwatchDirectory); + } + +private slots: + void watchDirectory(const QString &url) + { + if (!isInterestingUrl(url)) { + return; + } + auto existingNotifier = m_watches.value(url, nullptr); + if (existingNotifier) { + existingNotifier->poke(); + return; + } + while (m_watches.count() >= m_capacity) { + makeSpace(); + } + + // TODO: we could keep track of all potential urls regardless of active notification. + // Then closing some tabs in dolphin could lead to more watches freeing up and + // us being able to use the free slots for still active urls. + + auto notifier = new Notifier(url, this); + connect(notifier, &Notifier::finished, this, &Watcher::unwatchDirectory); + notifier->start(); + + m_watches[url] = notifier; + qCDebug(KIO_SMB_LOG) << "entered" << url << m_watches; + } + + void unwatchDirectory(const QString &url) + { + if (!m_watches.contains(url)) { + return; + } + auto notifier = m_watches.take(url); + notifier->deleteLater(); + qCDebug(KIO_SMB_LOG) << "leftDirectory" << url << m_watches; + } + +private: + inline bool isInterestingUrl(const QString &str) + { + SMBUrl url { QUrl(str) }; + switch (url.getType()){ + case SMBURLTYPE_UNKNOWN: + case SMBURLTYPE_ENTIRE_NETWORK: + case SMBURLTYPE_WORKGROUP_OR_SERVER: + return false; + case SMBURLTYPE_SHARE_OR_PATH: + return true; + } + qCWarning(KIO_SMB_LOG) << "Unexpected url type" << url.getType() << url; + Q_UNREACHABLE(); + return false; + } + + void makeSpace() + { + auto oldestIt = m_watches.cbegin(); + for (auto it = m_watches.cbegin(); it != m_watches.cend(); ++it) { + if (*it.value() < *oldestIt.value()) { + oldestIt = it; + } + } + unwatchDirectory(oldestIt.key()); + qCDebug(KIO_SMB_LOG) << "made space:" << m_watches; + } + + // Cap the amount of notifiers we can run. Each notifier weighs about 1MiB in private heap + // depending on the linked/loaded libraries behind KIO so in the interest of staying lightweight + // we'll want to put a limit on active notifiers even when the user has a bazillion open + // tabs in dolphin or something. On top of that there's a shared weight of ~3MiB on a plasma + // session from the actual shared libraries. + // Further optimizing the notifier would require moving all KIO and qdbus linkage out of + // the notifier and have a socket pair with this process. The gains are sub 0.5MiB though + // so given the added complexity I'll deem it unreasonable for now. + // The better improvement would be to make smbc actually thread safe so we can get rid of the + // subprocess overhead entirely (and by extension the private heaps of static library objects). + static const int m_capacity = 10; + OrgKdeKDirNotifyInterface m_interface { QString(), QString(), QDBusConnection::sessionBus() }; + QHash m_watches; // watcher is parent of procs +}; + +class SMBWatcherModule : public KDEDModule +{ + Q_OBJECT +public: + explicit SMBWatcherModule(QObject *parent, const QVariantList &args) + : KDEDModule(parent) + { + Q_UNUSED(args); + } + +private: + Watcher m_watcher; +}; + +K_PLUGIN_FACTORY_WITH_JSON(SMBWatcherModuleFactory, + "kded_smbwatcher.json", + registerPlugin();) + +#include "watcher.moc" diff --git a/smb/kdsoap-ws-discovery-client/.clang-tidy b/smb/kdsoap-ws-discovery-client/.clang-tidy new file mode 100644 index 0000000..0c454a2 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/.clang-tidy @@ -0,0 +1,319 @@ +--- +Checks: | + clang-diagnostic-*, + clang-analyzer-*, + modernize-*, + -modernize-use-trailing-return-type, + bugprone-*, + readability-*, + -readability-redundant-access-specifiers, + hicpp-*, + cppcoreguidelines-* +WarningsAsErrors: | + *, + -hicpp-special-member-functions, + -readability-magic-numbers, + -cppcoreguidelines-avoid-magic-numbers, + -cppcoreguidelines-owning-memory, + -cppcoreguidelines-pro-type-reinterpret-cast, + -modernize-pass-by-value, + -bugprone-branch-clone, + -cppcoreguidelines-macro-usage, + -readability-convert-member-functions-to-static, +HeaderFilterRegex: '**/*.h' +AnalyzeTemporaryDtors: false +FormatStyle: none +User: casper +CheckOptions: + - key: bugprone-argument-comment.CommentBoolLiterals + value: '0' + - key: bugprone-argument-comment.CommentCharacterLiterals + value: '0' + - key: bugprone-argument-comment.CommentFloatLiterals + value: '0' + - key: bugprone-argument-comment.CommentIntegerLiterals + value: '0' + - key: bugprone-argument-comment.CommentNullPtrs + value: '0' + - key: bugprone-argument-comment.CommentStringLiterals + value: '0' + - key: bugprone-argument-comment.CommentUserDefinedLiterals + value: '0' + - key: bugprone-argument-comment.StrictMode + value: '0' + - key: bugprone-assert-side-effect.AssertMacros + value: assert + - key: bugprone-assert-side-effect.CheckFunctionCalls + value: '0' + - key: bugprone-dangling-handle.HandleClasses + value: 'std::basic_string_view;std::experimental::basic_string_view' + - key: bugprone-exception-escape.FunctionsThatShouldNotThrow + value: '' + - key: bugprone-exception-escape.IgnoredExceptions + value: '' + - key: bugprone-misplaced-widening-cast.CheckImplicitCasts + value: '0' + - key: bugprone-sizeof-expression.WarnOnSizeOfCompareToConstant + value: '1' + - key: bugprone-sizeof-expression.WarnOnSizeOfConstant + value: '1' + - key: bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression + value: '0' + - key: bugprone-sizeof-expression.WarnOnSizeOfThis + value: '1' + - key: bugprone-string-constructor.LargeLengthThreshold + value: '8388608' + - key: bugprone-string-constructor.WarnOnLargeLength + value: '1' + - key: bugprone-suspicious-enum-usage.StrictMode + value: '0' + - key: bugprone-suspicious-missing-comma.MaxConcatenatedTokens + value: '5' + - key: bugprone-suspicious-missing-comma.RatioThreshold + value: '0.200000' + - key: bugprone-suspicious-missing-comma.SizeThreshold + value: '5' + - key: bugprone-suspicious-string-compare.StringCompareLikeFunctions + value: '' + - key: bugprone-suspicious-string-compare.WarnOnImplicitComparison + value: '1' + - key: bugprone-suspicious-string-compare.WarnOnLogicalNotComparison + value: '0' + - key: bugprone-too-small-loop-variable.MagnitudeBitsUpperLimit + value: '16' + - key: bugprone-unhandled-self-assignment.WarnOnlyIfThisHasSuspiciousField + value: '1' + - key: bugprone-unused-return-value.CheckedFunctions + value: '::std::async;::std::launder;::std::remove;::std::remove_if;::std::unique;::std::unique_ptr::release;::std::basic_string::empty;::std::vector::empty' + - key: cert-dcl16-c.NewSuffixes + value: 'L;LL;LU;LLU' + - key: cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField + value: '0' + - key: cppcoreguidelines-avoid-magic-numbers.IgnoredFloatingPointValues + value: '1.0;100.0;' + - key: cppcoreguidelines-avoid-magic-numbers.IgnoredIntegerValues + value: '1;2;3;4;' + - key: cppcoreguidelines-explicit-virtual-functions.FinalSpelling + value: final + - key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors + value: '1' + - key: cppcoreguidelines-explicit-virtual-functions.OverrideSpelling + value: override + - key: cppcoreguidelines-macro-usage.AllowedRegexp + value: '^DEBUG_*' + - key: cppcoreguidelines-macro-usage.CheckCapsOnly + value: '0' + - key: cppcoreguidelines-macro-usage.IgnoreCommandLineMacros + value: '1' + - key: cppcoreguidelines-no-malloc.Allocations + value: '::malloc;::calloc' + - key: cppcoreguidelines-no-malloc.Deallocations + value: '::free' + - key: cppcoreguidelines-no-malloc.Reallocations + value: '::realloc' + - key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic + value: '1' + - key: cppcoreguidelines-owning-memory.LegacyResourceConsumers + value: '::free;::realloc;::freopen;::fclose' + - key: cppcoreguidelines-owning-memory.LegacyResourceProducers + value: '::malloc;::aligned_alloc;::realloc;::calloc;::fopen;::freopen;::tmpfile' + - key: cppcoreguidelines-pro-bounds-constant-array-index.GslHeader + value: '' + - key: cppcoreguidelines-pro-bounds-constant-array-index.IncludeStyle + value: '0' + - key: cppcoreguidelines-pro-type-member-init.IgnoreArrays + value: '0' + - key: cppcoreguidelines-pro-type-member-init.UseAssignment + value: '0' + - key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions + value: '0' + - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor + value: '0' + - key: google-readability-braces-around-statements.ShortStatementLines + value: '1' + - key: google-readability-function-size.StatementThreshold + value: '800' + - key: google-readability-namespace-comments.ShortNamespaceLines + value: '10' + - key: google-readability-namespace-comments.SpacesBeforeComments + value: '2' + - key: hicpp-braces-around-statements.ShortStatementLines + value: '0' + - key: hicpp-function-size.BranchThreshold + value: '4294967295' + - key: hicpp-function-size.LineThreshold + value: '4294967295' + - key: hicpp-function-size.NestingThreshold + value: '4294967295' + - key: hicpp-function-size.ParameterThreshold + value: '4294967295' + - key: hicpp-function-size.StatementThreshold + value: '800' + - key: hicpp-function-size.VariableThreshold + value: '4294967295' + - key: hicpp-member-init.IgnoreArrays + value: '0' + - key: hicpp-member-init.UseAssignment + value: '0' + - key: hicpp-move-const-arg.CheckTriviallyCopyableMove + value: '1' + - key: hicpp-multiway-paths-covered.WarnOnMissingElse + value: '0' + - key: hicpp-named-parameter.IgnoreFailedSplit + value: '0' + - key: hicpp-no-malloc.Allocations + value: '::malloc;::calloc' + - key: hicpp-no-malloc.Deallocations + value: '::free' + - key: hicpp-no-malloc.Reallocations + value: '::realloc' + - key: hicpp-special-member-functions.AllowMissingMoveFunctions + value: '0' + - key: hicpp-special-member-functions.AllowSoleDefaultDtor + value: '0' + - key: hicpp-uppercase-literal-suffix.IgnoreMacros + value: '1' + - key: hicpp-uppercase-literal-suffix.NewSuffixes + value: '' + - key: hicpp-use-auto.MinTypeNameLength + value: '5' + - key: hicpp-use-auto.RemoveStars + value: '0' + - key: hicpp-use-emplace.ContainersWithPushBack + value: '::std::vector;::std::list;::std::deque' + - key: hicpp-use-emplace.SmartPointers + value: '::std::shared_ptr;::std::unique_ptr;::std::auto_ptr;::std::weak_ptr' + - key: hicpp-use-emplace.TupleMakeFunctions + value: '::std::make_pair;::std::make_tuple' + - key: hicpp-use-emplace.TupleTypes + value: '::std::pair;::std::tuple' + - key: hicpp-use-equals-default.IgnoreMacros + value: '1' + - key: hicpp-use-equals-delete.IgnoreMacros + value: '1' + - key: hicpp-use-noexcept.ReplacementString + value: '' + - key: hicpp-use-noexcept.UseNoexceptFalse + value: '1' + - key: hicpp-use-nullptr.NullMacros + value: '' + - key: hicpp-use-override.FinalSpelling + value: final + - key: hicpp-use-override.IgnoreDestructors + value: '0' + - key: hicpp-use-override.OverrideSpelling + value: override + - key: modernize-loop-convert.MaxCopySize + value: '16' + - key: modernize-loop-convert.MinConfidence + value: reasonable + - key: modernize-loop-convert.NamingStyle + value: CamelCase + - key: modernize-make-shared.IgnoreMacros + value: '1' + - key: modernize-make-shared.IncludeStyle + value: '0' + - key: modernize-make-shared.MakeSmartPtrFunction + value: 'std::make_shared' + - key: modernize-make-shared.MakeSmartPtrFunctionHeader + value: memory + - key: modernize-make-unique.IgnoreMacros + value: '1' + - key: modernize-make-unique.IncludeStyle + value: '0' + - key: modernize-make-unique.MakeSmartPtrFunction + value: 'std::make_unique' + - key: modernize-make-unique.MakeSmartPtrFunctionHeader + value: memory + - key: modernize-pass-by-value.IncludeStyle + value: llvm + - key: modernize-pass-by-value.ValuesOnly + value: '0' + - key: modernize-raw-string-literal.ReplaceShorterLiterals + value: '0' + - key: modernize-replace-auto-ptr.IncludeStyle + value: llvm + - key: modernize-replace-random-shuffle.IncludeStyle + value: llvm + - key: modernize-use-auto.MinTypeNameLength + value: '5' + - key: modernize-use-auto.RemoveStars + value: '0' + - key: modernize-use-default-member-init.IgnoreMacros + value: '1' + - key: modernize-use-default-member-init.UseAssignment + value: '0' + - key: modernize-use-emplace.ContainersWithPushBack + value: '::std::vector;::std::list;::std::deque' + - key: modernize-use-emplace.SmartPointers + value: '::std::shared_ptr;::std::unique_ptr;::std::auto_ptr;::std::weak_ptr' + - key: modernize-use-emplace.TupleMakeFunctions + value: '::std::make_pair;::std::make_tuple' + - key: modernize-use-emplace.TupleTypes + value: '::std::pair;::std::tuple' + - key: modernize-use-equals-default.IgnoreMacros + value: '1' + - key: modernize-use-equals-delete.IgnoreMacros + value: '1' + - key: modernize-use-nodiscard.ReplacementString + value: '[[nodiscard]]' + - key: modernize-use-noexcept.ReplacementString + value: '' + - key: modernize-use-noexcept.UseNoexceptFalse + value: '1' + - key: modernize-use-nullptr.NullMacros + value: 'NULL' + - key: modernize-use-override.FinalSpelling + value: final + - key: modernize-use-override.IgnoreDestructors + value: '0' + - key: modernize-use-override.OverrideSpelling + value: override + - key: modernize-use-transparent-functors.SafeMode + value: '0' + - key: modernize-use-using.IgnoreMacros + value: '1' + - key: readability-braces-around-statements.ShortStatementLines + value: '0' + - key: readability-function-size.BranchThreshold + value: '4294967295' + - key: readability-function-size.LineThreshold + value: '4294967295' + - key: readability-function-size.NestingThreshold + value: '4294967295' + - key: readability-function-size.ParameterThreshold + value: '4294967295' + - key: readability-function-size.StatementThreshold + value: '800' + - key: readability-function-size.VariableThreshold + value: '4294967295' + - key: readability-identifier-naming.IgnoreFailedSplit + value: '0' + - key: readability-implicit-bool-conversion.AllowIntegerConditions + value: '0' + - key: readability-implicit-bool-conversion.AllowPointerConditions + value: '0' + - key: readability-inconsistent-declaration-parameter-name.IgnoreMacros + value: '1' + - key: readability-inconsistent-declaration-parameter-name.Strict + value: '0' + - key: readability-magic-numbers.IgnoredFloatingPointValues + value: '1.0;100.0;' + - key: readability-magic-numbers.IgnoredIntegerValues + value: '1;2;3;4;' + - key: readability-redundant-smartptr-get.IgnoreMacros + value: '1' + - key: readability-simplify-boolean-expr.ChainedConditionalAssignment + value: '0' + - key: readability-simplify-boolean-expr.ChainedConditionalReturn + value: '0' + - key: readability-simplify-subscript-expr.Types + value: '::std::basic_string;::std::basic_string_view;::std::vector;::std::array' + - key: readability-static-accessed-through-instance.NameSpecifierNestingThreshold + value: '3' + - key: readability-uppercase-literal-suffix.IgnoreMacros + value: '1' + - key: readability-uppercase-literal-suffix.NewSuffixes + value: '' +... + diff --git a/smb/kdsoap-ws-discovery-client/.gitlab-ci.yml b/smb/kdsoap-ws-discovery-client/.gitlab-ci.yml new file mode 100644 index 0000000..be5b613 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/.gitlab-ci.yml @@ -0,0 +1,73 @@ +# Copyright (C) 2019-2020 Casper Meijn +# +# SPDX-License-Identifier: CC0-1.0 + +fedora: + stage: build + image: registry.gitlab.com/caspermeijn/docker-images/fedora-build-onvifviewer:latest + before_script: + - cd .. + - git clone https://github.com/KDAB/KDSoap.git + - cd KDSoap && git checkout kdsoap-1.9 && cd .. + - mkdir build-KDSoap + - cd build-KDSoap/ + - cmake ../KDSoap/ -DCMAKE_INSTALL_PREFIX=/usr/local + - make + - make install + - cd .. + - mkdir build-kdsoap-ws-discovery-client + - cd build-kdsoap-ws-discovery-client + script: + - cmake $CI_PROJECT_DIR + - make + - make install + - ctest --verbose + +fedora-clang: + stage: build + image: fedora:31 + variables: + CC: clang + CXX: clang++ + before_script: + - dnf install -y 'dnf-command(copr)' + - dnf copr -y enable caspermeijn/kdsoap + - dnf install -y git cmake ninja-build clang clang-tools-extra clazy extra-cmake-modules qt5-qtbase-devel kf5-kcoreaddons-devel kdsoap-devel + - cd .. + - mkdir build + - cd build + script: + - cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON $CI_PROJECT_DIR + - ninja + - cd $CI_PROJECT_DIR && clang-tidy -p ../build/compile_commands.json **/*.cpp + - cd $CI_PROJECT_DIR && clazy-standalone -p ../build/compile_commands.json -checks=level0,level1,level2 **/*.cpp + +pages: + image: registry.gitlab.com/caspermeijn/docker-images/fedora-build-onvifviewer:latest + before_script: + - cd .. + - git clone https://github.com/KDAB/KDSoap.git + - cd KDSoap && git checkout kdsoap-1.9 && cd .. + - mkdir build-KDSoap + - cd build-KDSoap/ + - cmake ../KDSoap/ -DCMAKE_INSTALL_PREFIX=/usr/local + - make + - make install + - cd .. + - mkdir build-kdsoap-ws-discovery-client + - cd build-kdsoap-ws-discovery-client + script: + - cmake $CI_PROJECT_DIR + - make docs + - mv docs/html/ $CI_PROJECT_DIR/public/ + artifacts: + paths: + - public + only: + - master + +reuse: + stage: test + image: fsfe/reuse:latest + script: + - reuse lint || echo "Always report as successful. For now this is a informational test" diff --git a/smb/kdsoap-ws-discovery-client/CMakeLists.txt b/smb/kdsoap-ws-discovery-client/CMakeLists.txt new file mode 100644 index 0000000..cfa2c4c --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/CMakeLists.txt @@ -0,0 +1,107 @@ +# Copyright (C) 2019 Casper Meijn +# SPDX-License-Identifier: GPL-3.0-or-later +# +# 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 3 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, see . + +cmake_minimum_required(VERSION 3.7) + +project(kdsoap-ws-discovery-client VERSION 0.2) + +include(FeatureSummary) +find_package(ECM 5.54.0 NO_MODULE) +set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") +feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) + +include(CTest) +include(KDEInstallDirs) +include(KDECompilerSettings NO_POLICY_SCOPE) +include(KDECMakeSettings) + +include(GenerateExportHeader) + +set(REQUIRED_QT_VERSION 5.9.0) +find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS Core Network Test Xml) + +find_package(KDSoap 1.9.0 REQUIRED) +set_package_properties(KDSoap PROPERTIES + DESCRIPTION "A Qt-based client-side and server-side SOAP component" + URL "http://www.kdab.com/products/kd-soap" + TYPE REQUIRED + PURPOSE "Support for SOAP client protocol" +) + +include(ECMSetupVersion) +include(ECMGenerateHeaders) +include(ECMQtDeclareLoggingCategory) +include(ECMAddQch) + +option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) +add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") + +ecm_setup_version(PROJECT + VARIABLE_PREFIX WSDISCOVERY + VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kdsoap_wsdiscovery_client_version.h" + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KDSoapWSDiscoveryClientConfigVersion.cmake" +) + + +add_subdirectory(src) +# add_subdirectory(examples) +# add_subdirectory(docs) +# if(BUILD_TESTING) +# add_subdirectory(autotests) +# endif() +# +# create a Config.cmake and a ConfigVersion.cmake file and install them +# set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KDSoapWSDiscoveryClient") +# +# if (BUILD_QCH) +# ecm_install_qch_export( +# TARGETS KDSoapWSDiscoveryClient_QCH +# FILE KDSoapWSDiscoveryClientQchTargets.cmake +# DESTINATION "${CMAKECONFIG_INSTALL_DIR}" +# COMPONENT Devel +# ) +# set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KDSoapWSDiscoveryClientQchTargets.cmake\")") +# endif() +# +# include(CMakePackageConfigHelpers) +# +# configure_package_config_file( +# "${CMAKE_CURRENT_SOURCE_DIR}/KDSoapWSDiscoveryClientConfig.cmake.in" +# "${CMAKE_CURRENT_BINARY_DIR}/KDSoapWSDiscoveryClientConfig.cmake" +# INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} +# ) +# +# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kdsoap_wsdiscovery_client_version.h +# DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KDSoapWSDiscoveryClient +# COMPONENT Devel) +# +# install(FILES +# "${CMAKE_CURRENT_BINARY_DIR}/KDSoapWSDiscoveryClientConfig.cmake" +# "${CMAKE_CURRENT_BINARY_DIR}/KDSoapWSDiscoveryClientConfigVersion.cmake" +# DESTINATION "${CMAKECONFIG_INSTALL_DIR}" +# COMPONENT Devel) +# +# install(EXPORT KDSoapWSDiscoveryClientTargets +# DESTINATION "${CMAKECONFIG_INSTALL_DIR}" +# FILE KDSoapWSDiscoveryClientTargets.cmake +# NAMESPACE KDSoap::) +# +# +# feature_summary( +# WHAT ALL +# FATAL_ON_MISSING_REQUIRED_PACKAGES +# ) diff --git a/smb/kdsoap-ws-discovery-client/KDSoapWSDiscoveryClientConfig.cmake.in b/smb/kdsoap-ws-discovery-client/KDSoapWSDiscoveryClientConfig.cmake.in new file mode 100644 index 0000000..a2c572a --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/KDSoapWSDiscoveryClientConfig.cmake.in @@ -0,0 +1,9 @@ +# Copyright (C) 2019 Casper Meijn +# +# SPDX-License-Identifier: CC0-1.0 + +@PACKAGE_INIT@ + +find_dependency(Qt5Core @REQUIRED_QT_VERSION@) + +include("${CMAKE_CURRENT_LIST_DIR}/KDSoapWSDiscoveryClientTargets.cmake") diff --git a/smb/kdsoap-ws-discovery-client/LICENSES/CC0-1.0.txt b/smb/kdsoap-ws-discovery-client/LICENSES/CC0-1.0.txt new file mode 100644 index 0000000..a343ccd --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/LICENSES/CC0-1.0.txt @@ -0,0 +1,119 @@ +Creative Commons Legal Code + +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION +OR WORKS PROVIDED HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer exclusive +Copyright and Related Rights (defined below) upon the creator and subsequent +owner(s) (each and all, an "owner") of an original work of authorship and/or +a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later claims +of infringement build upon, modify, incorporate in other works, reuse and +redistribute as freely as possible in any form whatsoever and for any purposes, +including without limitation commercial purposes. These owners may contribute +to the Commons to promote the ideal of a free culture and the further production +of creative, cultural and scientific works, or to gain reputation or greater +distribution for their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or +her Copyright and Related Rights in the Work and the meaning and intended +legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be protected +by copyright and related or neighboring rights ("Copyright and Related Rights"). +Copyright and Related Rights include, but are not limited to, the following: + +i. the right to reproduce, adapt, distribute, perform, display, communicate, +and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + +iii. publicity and privacy rights pertaining to a person's image or likeness +depicted in a Work; + +iv. rights protecting against unfair competition in regards to a Work, subject +to the limitations in paragraph 4(a), below; + +v. rights protecting the extraction, dissemination, use and reuse of data +in a Work; + +vi. database rights (such as those arising under Directive 96/9/EC of the +European Parliament and of the Council of 11 March 1996 on the legal protection +of databases, and under any national implementation thereof, including any +amended or successor version of such directive); and + +vii. other similar, equivalent or corresponding rights throughout the world +based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time extensions), +(iii) in any current or future medium and for any number of copies, and (iv) +for any purpose whatsoever, including without limitation commercial, advertising +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the +benefit of each member of the public at large and to the detriment of Affirmer's +heirs and successors, fully intending that such Waiver shall not be subject +to revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account Affirmer's +express Statement of Purpose. In addition, to the extent the Waiver is so +judged Affirmer hereby grants to each affected person a royalty-free, non +transferable, non sublicensable, non exclusive, irrevocable and unconditional +license to exercise Affirmer's Copyright and Related Rights in the Work (i) +in all territories worldwide, (ii) for the maximum duration provided by applicable +law or treaty (including future time extensions), (iii) in any current or +future medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional purposes +(the "License"). The License shall be deemed effective as of the date CC0 +was applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder of +the License, and in such case Affirmer hereby affirms that he or she will +not (i) exercise any of his or her remaining Copyright and Related Rights +in the Work or (ii) assert any associated claims and causes of action with +respect to the Work, in either case contrary to Affirmer's express Statement +of Purpose. + + 4. Limitations and Disclaimers. + +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, +licensed or otherwise affected by this document. + +b. Affirmer offers the Work as-is and makes no representations or warranties +of any kind concerning the Work, express, implied, statutory or otherwise, +including without limitation warranties of title, merchantability, fitness +for a particular purpose, non infringement, or the absence of latent or other +defects, accuracy, or the present or absence of errors, whether or not discoverable, +all to the greatest extent permissible under applicable law. + +c. Affirmer disclaims responsibility for clearing rights of other persons +that may apply to the Work or any use thereof, including without limitation +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims +responsibility for obtaining any necessary consents, permissions or other +rights required for any use of the Work. + +d. Affirmer understands and acknowledges that Creative Commons is not a party +to this document and has no duty or obligation with respect to this CC0 or +use of the Work. diff --git a/smb/kdsoap-ws-discovery-client/LICENSES/GPL-3.0-or-later.txt b/smb/kdsoap-ws-discovery-client/LICENSES/GPL-3.0-or-later.txt new file mode 100644 index 0000000..a650883 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/LICENSES/GPL-3.0-or-later.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + KDSoap WS-Discovery client + Copyright (C) 2019 Casper Meijn + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + KDSoap WS-Discovery client Copyright (C) 2019 Casper Meijn + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. diff --git a/smb/kdsoap-ws-discovery-client/README.md b/smb/kdsoap-ws-discovery-client/README.md new file mode 100644 index 0000000..573f003 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/README.md @@ -0,0 +1,58 @@ + + +# KDSoap WS-Discovery client {#mainpage} + +This project is trying to create a WS-Discovery client library based on the KDSoap +library. It uses modern C++ 11 and Qt 5. The initial development is done for +[ONVIFViewer](https://gitlab.com/caspermeijn/onvifviewer), a ONVIF camera viewer. +However the library is designed to be useful as a generic WS-Discovery client. + +## Current state + +The library is not yet ready for production. There are some API changes planned and it needs [KDSoap](https://github.com/KDAB/KDSoap) 1.9.0. The [WS-Discovery 2005-04](http://schemas.xmlsoap.org/ws/2005/04/discovery/) standard is specification, but only the Probe and Resolve messages are available. + +## Contributions + +Contributions to the project are appreciated. See the +[issue tracker](https://gitlab.com/caspermeijn/kdsoap-ws-discovery-client/issues) +for open tasks and feel free to open a merge request for the changes you made. + +Compatibility testing with devices you own is also useful. These could be ONVIF +cameras, printers or other WS-Discovery devices. Open an issue in the +[issue tracker](https://gitlab.com/caspermeijn/kdsoap-ws-discovery-client/issues) +to report your test result (good and bad result are both welcome). + +## Example + +The onif-discover example will send out a Probe message for ONVIF devices and will list the properties of the responding devices. + +``` +$ onvif-discover +Starting ONVIF discovery for 5 seconds +ProbeMatch received: + Endpoint reference: "urn:uuid:5f5a69c2-e0ae-504f-829b-00AFA538AC17" + Type: "NetworkVideoTransmitter" in namespace "http://www.onvif.org/ver10/network/wsdl" + Scope: "onvif://www.onvif.org/Profile/Streaming" + Scope: "onvif://www.onvif.org/model/C6F0SiZ0N0P0L0" + Scope: "onvif://www.onvif.org/name/IPCAM" + Scope: "onvif://www.onvif.org/location/country/china" + XAddr: "http://192.168.128.248:8080/onvif/devices" +``` + +## Building + +To build this project you need to have extra-cmake-modules and the master branch of KDSoap installed. + +``` +$ sudo apt install extra-cmake-modules +$ git checkout https://github.com/KDAB/KDSoap.git +$ cd KDSoap && mkdir build && cd build +$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local && make && make install +$ git checkout https://gitlab.com/caspermeijn/kdsoap-ws-discovery-client.git +$ cd kdsoap-ws-discovery-client && mkdir build && cd build +$ cmake .. && make && make install +``` diff --git a/smb/kdsoap-ws-discovery-client/autotests/CMakeLists.txt b/smb/kdsoap-ws-discovery-client/autotests/CMakeLists.txt new file mode 100644 index 0000000..800ad77 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/autotests/CMakeLists.txt @@ -0,0 +1,24 @@ +# Copyright (C) 2019-2020 Casper Meijn +# SPDX-License-Identifier: GPL-3.0-or-later +# +# 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 3 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, see . + +cmake_minimum_required(VERSION 3.7) + +include(ECMAddTests) + +ecm_add_tests( + test_wsdiscoveryclient.cpp + LINK_LIBRARIES Qt5::Network Qt5::Test KDSoap::WSDiscoveryClient +) diff --git a/smb/kdsoap-ws-discovery-client/autotests/test_wsdiscoveryclient.cpp b/smb/kdsoap-ws-discovery-client/autotests/test_wsdiscoveryclient.cpp new file mode 100644 index 0000000..7d3f06e --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/autotests/test_wsdiscoveryclient.cpp @@ -0,0 +1,294 @@ +/* Copyright (C) 2019-2020 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ + +#include +#include +#include +#include +#include +#include +#include "wsdiscoveryclient.h" +#include "wsdiscoverytargetservice.h" + +Q_DECLARE_METATYPE(WSDiscoveryTargetService) + +class testWSDiscoveryClient: public QObject +{ + Q_OBJECT +public: + explicit testWSDiscoveryClient(QObject* parent = nullptr) : + QObject(parent) {;} + +private slots: + static void testSendProbe(); + static void testSendResolve(); + static void testReceiveProbeMatch(); + static void testReceiveResolveMatch(); + +private: + static QByteArray zeroOutUuid(const QByteArray& original); + static QByteArray expectedSendProbeData(); + static QByteArray expectedSendResolveData(); + static QByteArray toBeSendProbeMatchData(); + static QByteArray toBeSendResolveMatchData(); + static QByteArray formatXml(const QByteArray& original); +}; + +void testWSDiscoveryClient::testSendProbe() +{ + QUdpSocket testSocket; + QVERIFY(testSocket.bind(QHostAddress::Any, 3702, QAbstractSocket::ShareAddress)); + QVERIFY(testSocket.joinMulticastGroup(QHostAddress(QStringLiteral("FF02::C")))); + + KDQName type(QStringLiteral("tdn:NetworkVideoTransmitter")); + type.setNameSpace(QStringLiteral("http://www.onvif.org/ver10/network/wsdl")); + auto typeList = QList() << type; + + auto scopeList = QList() << QUrl(QStringLiteral("onvif://www.onvif.org/Profile/Streaming")); + + WSDiscoveryClient discoveryClient; + discoveryClient.start(); + discoveryClient.sendProbe(typeList, scopeList); + + QVERIFY(testSocket.hasPendingDatagrams()); + auto datagram = testSocket.receiveDatagram(); + auto zeroedDatagram = zeroOutUuid(datagram.data()); + QCOMPARE(formatXml(zeroedDatagram), formatXml(expectedSendProbeData())); +} + +QByteArray testWSDiscoveryClient::expectedSendProbeData() { + return QByteArray( + "" + "" + " " + " urn:schemas-xmlsoap-org:ws:2005:04:discovery" + " http://www.w3.org/2005/08/addressing/anonymous" + " http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe" + " urn:uuid:00000000-0000-0000-0000-000000000000" + " " + " " + " " + " tdn:NetworkVideoTransmitter" + " onvif://www.onvif.org/Profile/Streaming" + " " + " " + ""); +} + +void testWSDiscoveryClient::testSendResolve() +{ + QUdpSocket testSocket; + QVERIFY(testSocket.bind(QHostAddress::Any, 3702, QAbstractSocket::ShareAddress)); + QVERIFY(testSocket.joinMulticastGroup(QHostAddress(QStringLiteral("FF02::C")))); + + WSDiscoveryClient discoveryClient; + discoveryClient.start(); + discoveryClient.sendResolve(QStringLiteral("A_Unique_Reference")); + + QVERIFY(testSocket.hasPendingDatagrams()); + auto datagram = testSocket.receiveDatagram(); + auto zeroedDatagram = zeroOutUuid(datagram.data()); + QCOMPARE(formatXml(zeroedDatagram), formatXml(expectedSendResolveData())); +} + +QByteArray testWSDiscoveryClient::expectedSendResolveData() { + return QByteArray( + "" + "" + " " + " urn:schemas-xmlsoap-org:ws:2005:04:discovery" + " http://www.w3.org/2005/08/addressing/anonymous" + " http://schemas.xmlsoap.org/ws/2005/04/discovery/Resolve" + " urn:uuid:00000000-0000-0000-0000-000000000000" + " " + " " + " " + " " + " A_Unique_Reference" + " " + " " + " " + ""); +} + +void testWSDiscoveryClient::testReceiveProbeMatch() +{ + WSDiscoveryClient discoveryClient; + discoveryClient.start(); + + qRegisterMetaType(); + QSignalSpy spy(&discoveryClient, &WSDiscoveryClient::probeMatchReceived); + QVERIFY(spy.isValid()); + + QUdpSocket testSocket; + QVERIFY(testSocket.bind(QHostAddress::Any, 3702, QAbstractSocket::ShareAddress)); + QVERIFY(testSocket.joinMulticastGroup(QHostAddress(QStringLiteral("FF02::C")))); + testSocket.writeDatagram(toBeSendProbeMatchData(), QHostAddress(QStringLiteral("FF02::C")), 3702); + + QVERIFY(spy.wait(1000)); + + QCOMPARE(spy.count(), 1); // make sure the signal was emitted exactly one time + QList arguments = spy.takeFirst(); // take the first signal + + const WSDiscoveryTargetService& probeMatchService = qvariant_cast(arguments.at(0)); + + QCOMPARE(probeMatchService.endpointReference(), "Incomming_unique_reference"); + QCOMPARE(probeMatchService.scopeList().size(), 1); + QCOMPARE(probeMatchService.scopeList().at(0), QUrl(QStringLiteral("ldap:///ou=engineering,o=examplecom,c=us"))); + QCOMPARE(probeMatchService.typeList().size(), 1); + QCOMPARE(probeMatchService.typeList().at(0), KDQName(QStringLiteral("http://printer.example.org/2003/imaging"), QStringLiteral("PrintBasic"))); + QCOMPARE(probeMatchService.xAddrList().size(), 1); + QCOMPARE(probeMatchService.xAddrList().at(0), QUrl(QStringLiteral("http://prn-example/PRN42/b42-1668-a"))); + QVERIFY(probeMatchService.lastSeen().msecsTo(QDateTime::currentDateTime()) < 500); +} + +QByteArray testWSDiscoveryClient::toBeSendProbeMatchData() +{ + return QByteArray( + "" + "" + " " + " urn:schemas-xmlsoap-org:ws:2005:04:discovery" + " http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches" + " urn:uuid:00000000-0000-0000-0000-000000000000" + " xs:anyURI" + " " + " " + " " + " " + " " + " Incomming_unique_reference" + " i:PrintBasic" + " ldap:///ou=engineering,o=examplecom,c=us" + " http://prn-example/PRN42/b42-1668-a" + " 12" + " " + " " + " " + ""); +} + +void testWSDiscoveryClient::testReceiveResolveMatch() +{ + WSDiscoveryClient discoveryClient; + discoveryClient.start(); + + qRegisterMetaType(); + QSignalSpy spy(&discoveryClient, &WSDiscoveryClient::resolveMatchReceived); + QVERIFY(spy.isValid()); + + QUdpSocket testSocket; + QVERIFY(testSocket.bind(QHostAddress::Any, 3702, QAbstractSocket::ShareAddress)); + QVERIFY(testSocket.joinMulticastGroup(QHostAddress(QStringLiteral("FF02::C")))); + testSocket.writeDatagram(toBeSendResolveMatchData(), QHostAddress(QStringLiteral("FF02::C")), 3702); + + QVERIFY(spy.wait(1000)); + + QCOMPARE(spy.count(), 1); // make sure the signal was emitted exactly one time + QList arguments = spy.takeFirst(); // take the first signal + + const WSDiscoveryTargetService& probeMatchService = qvariant_cast(arguments.at(0)); + + QCOMPARE(probeMatchService.endpointReference(), "Incomming_resolve_reference"); + QCOMPARE(probeMatchService.scopeList().size(), 1); + QCOMPARE(probeMatchService.scopeList().at(0), QUrl(QStringLiteral("ldap:///ou=floor1,ou=b42,ou=anytown,o=examplecom,c=us"))); + QCOMPARE(probeMatchService.typeList().size(), 1); + QCOMPARE(probeMatchService.typeList().at(0), KDQName(QStringLiteral("http://printer.example.org/2003/imaging"), QStringLiteral("PrintAdvanced"))); + QCOMPARE(probeMatchService.xAddrList().size(), 1); + QCOMPARE(probeMatchService.xAddrList().at(0), QUrl(QStringLiteral("http://printer.local:8080"))); + QVERIFY(probeMatchService.lastSeen().msecsTo(QDateTime::currentDateTime()) < 500); +} + +QByteArray testWSDiscoveryClient::toBeSendResolveMatchData() +{ + return QByteArray( + "" + "" + " " + " urn:schemas-xmlsoap-org:ws:2005:04:discovery" + " http://schemas.xmlsoap.org/ws/2005/04/discovery/ResolveMatches" + " urn:uuid:00000000-0000-0000-0000-000000000000" + " xs:anyURI" + " " + " " + " " + " " + " " + " Incomming_resolve_reference" + " i:PrintAdvanced" + " ldap:///ou=floor1,ou=b42,ou=anytown,o=examplecom,c=us" + " http://printer.local:8080" + " 12" + " " + " " + " " + ""); +} + + +QByteArray testWSDiscoveryClient::formatXml(const QByteArray& original) +{ + QByteArray xmlOut; + + QXmlStreamReader reader(original); + QXmlStreamWriter writer(&xmlOut); + writer.setAutoFormatting(true); + + while (!reader.atEnd()) { + reader.readNext(); + if (!reader.isWhitespace()) { + writer.writeCurrentToken(reader); + } + } + + return xmlOut; +} + +QByteArray testWSDiscoveryClient::zeroOutUuid(const QByteArray& original) +{ + QString originalString = original; + originalString.replace(QRegExp("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"), QStringLiteral("00000000-0000-0000-0000-000000000000")); + return originalString.toLatin1(); +} + +QTEST_MAIN(testWSDiscoveryClient) + +#include "test_wsdiscoveryclient.moc" diff --git a/smb/kdsoap-ws-discovery-client/docs/CMakeLists.txt b/smb/kdsoap-ws-discovery-client/docs/CMakeLists.txt new file mode 100644 index 0000000..c6dc40e --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/docs/CMakeLists.txt @@ -0,0 +1,37 @@ +# Copyright (C) 2019 Casper Meijn +# SPDX-License-Identifier: GPL-3.0-or-later +# +# 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 3 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, see . + +cmake_minimum_required(VERSION 3.7) + +find_package(Doxygen + OPTIONAL_COMPONENTS dot mscgen dia) + +if(DOXYGEN_FOUND) + doxygen_add_docs(docs + "README.md" + "src/wsdiscoveryclient.h" + "src/wsdiscoveryprobejob.h" + "src/wsdiscoverytargetservice.h" + "src/wsdiscoveryserviceaggrigator.h" + ALL + USE_STAMP_FILE + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/.. + ) + install(DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}/html/ + DESTINATION ${KDE_INSTALL_DATADIR}/doc/KDSoapWSDiscoveryClient + COMPONENT Devel) +endif() diff --git a/smb/kdsoap-ws-discovery-client/examples/CMakeLists.txt b/smb/kdsoap-ws-discovery-client/examples/CMakeLists.txt new file mode 100644 index 0000000..e1d9502 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/examples/CMakeLists.txt @@ -0,0 +1,17 @@ +# Copyright (C) 2019 Casper Meijn +# SPDX-License-Identifier: GPL-3.0-or-later +# +# 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 3 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, see . + +add_subdirectory(onvif-discover) diff --git a/smb/kdsoap-ws-discovery-client/examples/onvif-discover/CMakeLists.txt b/smb/kdsoap-ws-discovery-client/examples/onvif-discover/CMakeLists.txt new file mode 100644 index 0000000..7686649 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/examples/onvif-discover/CMakeLists.txt @@ -0,0 +1,25 @@ +# Copyright (C) 2019 Casper Meijn +# SPDX-License-Identifier: GPL-3.0-or-later +# +# 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 3 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, see . + +cmake_minimum_required(VERSION 3.7) + +project(onvif-discover) + +add_executable(${PROJECT_NAME} + "main.cpp" + "onvifdiscover.cpp" +) +target_link_libraries(${PROJECT_NAME} KDSoapWSDiscoveryClient) diff --git a/smb/kdsoap-ws-discovery-client/examples/onvif-discover/main.cpp b/smb/kdsoap-ws-discovery-client/examples/onvif-discover/main.cpp new file mode 100644 index 0000000..cc52d18 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/examples/onvif-discover/main.cpp @@ -0,0 +1,33 @@ +/* Copyright (C) 2019 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ +#include +#include +#include +#include "onvifdiscover.h" + +Q_DECL_EXPORT int main(int argc, char *argv[]) +{ + QCoreApplication app(argc, argv); + + qDebug() << "Starting ONVIF discovery for 5 seconds"; + QTimer::singleShot(5000, &app, &QCoreApplication::quit); + + auto onvifDiscover = new OnvifDiscover(&app); + onvifDiscover->start(); + + return QCoreApplication::exec(); +} diff --git a/smb/kdsoap-ws-discovery-client/examples/onvif-discover/onvifdiscover.cpp b/smb/kdsoap-ws-discovery-client/examples/onvif-discover/onvifdiscover.cpp new file mode 100644 index 0000000..527d7af --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/examples/onvif-discover/onvifdiscover.cpp @@ -0,0 +1,66 @@ +/* Copyright (C) 2019 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ +#include "onvifdiscover.h" + +#include +#include +#include +#include +#include +#include + +OnvifDiscover::OnvifDiscover(QObject *parent) : QObject(parent) +{ + m_client = new WSDiscoveryClient(this); + + m_probeJob = new WSDiscoveryProbeJob(m_client); + + m_aggrigator = new WSDiscoveryServiceAggrigator(this); + + connect(m_probeJob, &WSDiscoveryProbeJob::matchReceived, m_aggrigator, &WSDiscoveryServiceAggrigator::updateService); + connect(m_aggrigator, &WSDiscoveryServiceAggrigator::serviceUpdated, this, &OnvifDiscover::matchReceived); + + KDQName type("tdn:NetworkVideoTransmitter"); + type.setNameSpace("http://www.onvif.org/ver10/network/wsdl"); + m_probeJob->addType(type); +} + +OnvifDiscover::~OnvifDiscover() = default; + +void OnvifDiscover::start() +{ + m_client->start(); + m_probeJob->start(); +} + +void OnvifDiscover::matchReceived(const QSharedPointer &matchedService) +{ + qDebug() << "ProbeMatch received:"; + qDebug() << " Endpoint reference:" << matchedService->endpointReference(); + const auto& typeList = matchedService->typeList(); + for(const auto& type : typeList) { + qDebug() << " Type:" << type.localName() << "in namespace" << type.nameSpace(); + } + const auto& scopeList = matchedService->scopeList(); + for(const auto& scope : scopeList) { + qDebug() << " Scope:" << scope.toString(); + } + const auto& xAddrList = matchedService->xAddrList(); + for(const auto& xAddr : xAddrList) { + qDebug() << " XAddr:" << xAddr.toString(); + } +} diff --git a/smb/kdsoap-ws-discovery-client/examples/onvif-discover/onvifdiscover.h b/smb/kdsoap-ws-discovery-client/examples/onvif-discover/onvifdiscover.h new file mode 100644 index 0000000..2a53307 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/examples/onvif-discover/onvifdiscover.h @@ -0,0 +1,46 @@ +/* Copyright (C) 2019 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ +#ifndef ONVIFDISCOVER_H +#define ONVIFDISCOVER_H + +#include + +class WSDiscoveryClient; +class WSDiscoveryProbeJob; +class WSDiscoveryTargetService; +class WSDiscoveryServiceAggrigator; + +class OnvifDiscover : public QObject +{ + Q_OBJECT +public: + explicit OnvifDiscover(QObject *parent = nullptr); + ~OnvifDiscover(); + +public slots: + void start(); + +private slots: + void matchReceived(const QSharedPointer& matchedService); + +private: + WSDiscoveryClient * m_client; + WSDiscoveryProbeJob * m_probeJob; + WSDiscoveryServiceAggrigator * m_aggrigator; +}; + +#endif // ONVIFDISCOVER_H diff --git a/smb/kdsoap-ws-discovery-client/src/CMakeLists.txt b/smb/kdsoap-ws-discovery-client/src/CMakeLists.txt new file mode 100644 index 0000000..229b007 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/CMakeLists.txt @@ -0,0 +1,103 @@ +# Copyright (C) 2019 Casper Meijn +# SPDX-License-Identifier: GPL-3.0-or-later +# +# 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 3 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, see . + +cmake_minimum_required(VERSION 3.7) + +set(GLOBAL_KSWSDL2CPP_OPTION) +get_filename_component(KDWSDL_IMPORT_PATH ../wsdl/ ABSOLUTE) +set(GLOBAL_KSWSDL2CPP_OPTION -import-path ${KDWSDL_IMPORT_PATH} -use-local-files-only) + +set(KSWSDL2CPP_OPTION -namespace WSDiscovery200901 ${GLOBAL_KSWSDL2CPP_OPTION}) +KDSOAP_GENERATE_WSDL(KDSoapWSDiscoveryClient_WSDL ${KDWSDL_IMPORT_PATH}/docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-wsdl-os.wsdl) +set(KSWSDL2CPP_OPTION -namespace WSDiscovery200504 ${GLOBAL_KSWSDL2CPP_OPTION}) +KDSOAP_GENERATE_WSDL(KDSoapWSDiscoveryClient_WSDL ${KDWSDL_IMPORT_PATH}/schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.wsdl) + +set(KDSoapWSDiscoveryClient_SRCS + "wsdiscoveryclient.cpp" + "wsdiscoveryprobejob.cpp" + "wsdiscoverytargetservice.cpp" + "wsdiscoveryserviceaggrigator.cpp" +) + +ecm_qt_declare_logging_category(KDSoapWSDiscoveryClient_SRCS + HEADER loggingcategory.h + IDENTIFIER KDSoapWSDiscoveryClient + CATEGORY_NAME kdsoap.wsdiscoveryclient + DEFAULT_SEVERITY Warning +) + +add_library(KDSoapWSDiscoveryClient STATIC ${KDSoapWSDiscoveryClient_SRCS} ${KDSoapWSDiscoveryClient_WSDL}) +generate_export_header(KDSoapWSDiscoveryClient BASE_NAME WSDiscoveryClient) +add_library(KDSoap::WSDiscoveryClient ALIAS KDSoapWSDiscoveryClient) + +target_include_directories(KDSoapWSDiscoveryClient + INTERFACE "$" +) + +target_link_libraries(KDSoapWSDiscoveryClient + PUBLIC + Qt5::Core + KDSoap::kdsoap + PRIVATE +) + +set_target_properties(KDSoapWSDiscoveryClient PROPERTIES + VERSION ${WSDISCOVERY_VERSION_STRING} + SOVERSION ${WSDISCOVERY_SOVERSION} + EXPORT_NAME "WSDiscoveryClient" +) + +ecm_generate_headers(KDSoapWSDiscoveryClient_HEADERS + HEADER_NAMES + WSDiscoveryClient + WSDiscoveryProbeJob + WSDiscoveryTargetService + WSDiscoveryServiceAggrigator + + REQUIRED_HEADERS KDSoapWSDiscoveryClient_HEADERS +) + +# install(TARGETS KDSoapWSDiscoveryClient +# EXPORT KDSoapWSDiscoveryClientTargets +# ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) +# +# install(FILES +# ${CMAKE_CURRENT_BINARY_DIR}/wsdiscoveryclient_export.h +# ${KDSoapWSDiscoveryClient_HEADERS} +# DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KDSoapWSDiscoveryClient +# COMPONENT Devel) +# +# if(BUILD_QCH) +# ecm_add_qch( +# KDSoapWSDiscoveryClient_QCH +# NAME KDSoapWSDiscoveryClient +# BASE_NAME KDSoapWSDiscoveryClient +# VERSION ${WSDISCOVERY_VERSION} +# ORG_DOMAIN net.meijn +# SOURCES # using only public headers, to cover only public API +# ${KDSoapWSDiscoveryClient_HEADERS} +# MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" +# LINK_QCHS +# Qt5Core_QCH +# KDSoap_QCH +# BLANK_MACROS +# KARCHIVE_EXPORT +# KARCHIVE_DEPRECATED +# TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} +# QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} +# COMPONENT Devel +# ) +# endif() diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoveryclient.cpp b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryclient.cpp new file mode 100644 index 0000000..f103805 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryclient.cpp @@ -0,0 +1,155 @@ +/* Copyright (C) 2019 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ +#include "wsdiscoveryclient.h" + +#include "loggingcategory.h" +#include "wsdiscoverytargetservice.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "wsdl_wsdd-discovery-1.h" +#include "wsdl_ws-discovery.h" + +static const int DISCOVERY_PORT = 3702; +#define DISCOVERY_ADDRESS_IPV4 (QHostAddress(QStringLiteral("239.255.255.250"))) +#define DISCOVERY_ADDRESS_IPV6 (QHostAddress(QStringLiteral("FF02::C"))) + +WSDiscoveryClient::WSDiscoveryClient(QObject *parent) : + QObject(parent) +{ + m_soapUdpClient = new KDSoapUdpClient(this); + connect(m_soapUdpClient, &KDSoapUdpClient::receivedMessage, this, &WSDiscoveryClient::receivedMessage); +} + +WSDiscoveryClient::~WSDiscoveryClient() = default; + +void WSDiscoveryClient::start() +{ + bool rc = m_soapUdpClient->bind(DISCOVERY_PORT, QAbstractSocket::ShareAddress); + Q_ASSERT(rc); +} + +void WSDiscoveryClient::sendProbe(const QList &typeList, const QList &scopeList) +{ + WSDiscovery200504::TNS__ProbeType probe; + if(!typeList.isEmpty()) { + WSDiscovery200504::TNS__QNameListType types; + types.setEntries(typeList); + probe.setTypes(types); + } + if(!scopeList.isEmpty()) { + WSDiscovery200504::TNS__UriListType scopeValues; + scopeValues.setEntries(QUrl::toStringList(scopeList)); + WSDiscovery200504::TNS__ScopesType scopes; + scopes.setValue(scopeValues); + probe.setScopes(scopes); + } + + KDSoapMessage message; + message = probe.serialize(QStringLiteral("Probe")); + message.setUse(KDSoapMessage::LiteralUse); + message.setNamespaceUri(QStringLiteral("http://schemas.xmlsoap.org/ws/2005/04/discovery")); + + KDSoapMessageAddressingProperties addressing; + addressing.setAddressingNamespace(KDSoapMessageAddressingProperties::Addressing200408); + addressing.setAction(QStringLiteral("http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe")); + addressing.setMessageID(QStringLiteral("urn:uuid:") + QUuid::createUuid().toString(QUuid::WithoutBraces)); + addressing.setDestination(QStringLiteral("urn:schemas-xmlsoap-org:ws:2005:04:discovery")); + addressing.setReplyEndpointAddress(KDSoapMessageAddressingProperties::predefinedAddressToString(KDSoapMessageAddressingProperties::Anonymous)); + message.setMessageAddressingProperties(addressing); + + auto rc = m_soapUdpClient->sendMessage(message, KDSoapHeaders(), DISCOVERY_ADDRESS_IPV4, DISCOVERY_PORT); + Q_ASSERT(rc); + rc = m_soapUdpClient->sendMessage(message, KDSoapHeaders(), DISCOVERY_ADDRESS_IPV6, DISCOVERY_PORT); + Q_ASSERT(rc); +} + +void WSDiscoveryClient::sendResolve(const QString &endpointReferenceString) +{ + WSDiscovery200504::TNS__ResolveType resolve; + + WSDiscovery200504::WSA__AttributedURI endpointReferenceAddress; + endpointReferenceAddress.setValue(endpointReferenceString); + WSDiscovery200504::WSA__EndpointReferenceType endpointReference; + endpointReference.setAddress(endpointReferenceAddress); + resolve.setEndpointReference(endpointReference); + + KDSoapMessage message; + message = resolve.serialize(QStringLiteral("Resolve")); + message.setUse(KDSoapMessage::LiteralUse); + message.setNamespaceUri(QStringLiteral("http://schemas.xmlsoap.org/ws/2005/04/discovery")); + + KDSoapMessageAddressingProperties addressing; + addressing.setAddressingNamespace(KDSoapMessageAddressingProperties::Addressing200408); + addressing.setAction(QStringLiteral("http://schemas.xmlsoap.org/ws/2005/04/discovery/Resolve")); + addressing.setMessageID(QStringLiteral("urn:uuid:") + QUuid::createUuid().toString(QUuid::WithoutBraces)); + addressing.setDestination(QStringLiteral("urn:schemas-xmlsoap-org:ws:2005:04:discovery")); + addressing.setReplyEndpointAddress(KDSoapMessageAddressingProperties::predefinedAddressToString(KDSoapMessageAddressingProperties::Anonymous)); + message.setMessageAddressingProperties(addressing); + + auto rc = m_soapUdpClient->sendMessage(message, KDSoapHeaders(), DISCOVERY_ADDRESS_IPV4, DISCOVERY_PORT); + Q_ASSERT(rc); + rc = m_soapUdpClient->sendMessage(message, KDSoapHeaders(), DISCOVERY_ADDRESS_IPV6, DISCOVERY_PORT); + Q_ASSERT(rc); +} + +void WSDiscoveryClient::receivedMessage(const KDSoapMessage &replyMessage, const KDSoapHeaders &replyHeaders, const QHostAddress &senderAddress, quint16 senderPort) +{ + Q_UNUSED(replyHeaders); + Q_UNUSED(senderAddress); + Q_UNUSED(senderPort); + if(replyMessage.messageAddressingProperties().action() == QStringLiteral("http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe")) { + // NO-OP + } else if(replyMessage.messageAddressingProperties().action() == QStringLiteral("http://schemas.xmlsoap.org/ws/2005/04/discovery/Resolve")) { + // NO-OP + } else if(replyMessage.messageAddressingProperties().action() == QStringLiteral("http://schemas.xmlsoap.org/ws/2005/04/discovery/ResolveMatches")) { + WSDiscovery200504::TNS__ResolveMatchesType resolveMatches; + resolveMatches.deserialize(replyMessage); + + auto resolveMatch = resolveMatches.resolveMatch(); + const QString& endpointReference = resolveMatch.endpointReference().address(); + auto service = WSDiscoveryTargetService(endpointReference); + service.setTypeList(resolveMatch.types().entries()); + service.setScopeList(QUrl::fromStringList(resolveMatch.scopes().value().entries())); + service.setXAddrList(QUrl::fromStringList(resolveMatch.xAddrs().entries())); + service.updateLastSeen(); + emit resolveMatchReceived(service); + } else if(replyMessage.messageAddressingProperties().action() == QStringLiteral("http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches")) { + WSDiscovery200504::TNS__ProbeMatchesType probeMatches; + probeMatches.deserialize(replyMessage); + + const QList& probeMatchList = probeMatches.probeMatch(); + for(const WSDiscovery200504::TNS__ProbeMatchType& probeMatch : probeMatchList) { + const QString& endpointReference = probeMatch.endpointReference().address(); + auto service = WSDiscoveryTargetService(endpointReference); + service.setTypeList(probeMatch.types().entries()); + service.setScopeList(QUrl::fromStringList(probeMatch.scopes().value().entries())); + service.setXAddrList(QUrl::fromStringList(probeMatch.xAddrs().entries())); + service.updateLastSeen(); + emit probeMatchReceived(service); + } + } else { + qCDebug(KDSoapWSDiscoveryClient) << "Received message with unknown action:" << replyMessage.messageAddressingProperties().action(); + } +} + diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoveryclient.h b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryclient.h new file mode 100644 index 0000000..de6eb29 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryclient.h @@ -0,0 +1,97 @@ +/* Copyright (C) 2019 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ +#ifndef WSDISCOVERYCLIENT_H +#define WSDISCOVERYCLIENT_H + +#include "wsdiscoveryclient_export.h" +#include +#include + +class KDSoapHeaders; +class KDSoapMessage; +class KDQName; +class KDSoapUdpClient; +class QHostAddress; +class WSDiscoveryTargetService; + +/*! + * \brief WSDiscoveryClient is a low-level helper for sending and receiving WS-Discovery messages. + * + * start() will bind to the network and start receveing messages. + * When a message is received, it will trigger the signals probeMatchReceived() and + * resolveMatchReceived(). You can send messages using sendProbe() and sendResolve(). + * + * \see WSDiscoveryProbeJob for a more high level interface + */ +class WSDISCOVERYCLIENT_EXPORT WSDiscoveryClient : public QObject +{ + Q_OBJECT +public: + /*! + * Create a WSDiscoveryClient + * \param parent The QObject parent + */ + explicit WSDiscoveryClient(QObject *parent = nullptr); + ~WSDiscoveryClient(); + +signals: + /*! + * Emitted when a WS-Discovery probe match message is received. When a single message is reveived + * with multiple matches, then multiple signals are emitted. + * \param probeMatchService The service as described in the match + */ + void probeMatchReceived(const WSDiscoveryTargetService& probeMatchService); + + /*! + * Emitted when a WS-Discovery resolve match message is received. + * \param probeMatchService The service as described in the match + */ + //TODO: Rename parameter + void resolveMatchReceived(const WSDiscoveryTargetService& probeMatchService); + +public slots: + /*! + * Bind to the WS-Discovery network ports. After binding messages will be + * received. It binds on both IPv4 and IPv6. + */ + //TODO: Rename to bind() + void start(); + + /*! + * Send a WS-Discovery probe message. This will cause all devices in the network + * that match to \p typeList and \p scopeList to send a probeMatch back. + * \param typeList List of types that a device should match + * \param scopeList List of scoped that a device should match + */ + void sendProbe(const QList& typeList, const QList &scopeList); + + /*! + * Send a WS-Discovery resolve message. This will cause a specific device + * in the network to send a resolveMatch back. + * \param endpointReference The identifier of the device of interest + */ + void sendResolve(const QString& endpointReference); + +private slots: + //TODO: Make implementation private + void receivedMessage(const KDSoapMessage& replyMessage, const KDSoapHeaders& replyHeaders, const QHostAddress& senderAddress, quint16 senderPort); + +private: + KDSoapUdpClient * m_soapUdpClient; +}; + +#endif // WSDISCOVERYCLIENT_H diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoveryprobejob.cpp b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryprobejob.cpp new file mode 100644 index 0000000..fc0f828 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryprobejob.cpp @@ -0,0 +1,105 @@ +/* Copyright (C) 2019 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ +#include "wsdiscoveryprobejob.h" + +#include "loggingcategory.h" +#include "wsdiscoveryclient.h" +#include "wsdiscoverytargetservice.h" +#include +#include + +WSDiscoveryProbeJob::WSDiscoveryProbeJob(WSDiscoveryClient *parent) : + QObject(parent), + m_client(parent) +{ + connect(m_client, &WSDiscoveryClient::probeMatchReceived, this, &WSDiscoveryProbeJob::probeMatchReceived); + + m_timer.setInterval(30000); + connect(&m_timer, &QTimer::timeout, this, &WSDiscoveryProbeJob::timeout); +} + +QList WSDiscoveryProbeJob::typeList() const +{ + return m_typeList; +} + +void WSDiscoveryProbeJob::setTypeList(const QList &typeList) +{ + m_typeList = typeList; +} + +void WSDiscoveryProbeJob::addType(const KDQName &type) +{ + m_typeList.append(type); +} + +QList WSDiscoveryProbeJob::scopeList() const +{ + return m_scopeList; +} + +void WSDiscoveryProbeJob::setScopeList(const QList &scopeList) +{ + m_scopeList = scopeList; +} + +void WSDiscoveryProbeJob::addScope(const QUrl &scope) +{ + m_scopeList.append(scope); +} + +int WSDiscoveryProbeJob::interval() const +{ + return m_timer.interval(); +} + +void WSDiscoveryProbeJob::setInterval(int interval) +{ + m_timer.setInterval(interval); +} + +void WSDiscoveryProbeJob::start() +{ + timeout(); + m_timer.start(); +} + +void WSDiscoveryProbeJob::stop() +{ + m_timer.stop(); +} + +void WSDiscoveryProbeJob::timeout() +{ + m_client->sendProbe(m_typeList, m_scopeList); +} + +void WSDiscoveryProbeJob::probeMatchReceived(const WSDiscoveryTargetService &probeMatchService) +{ + bool isMatch = true; + for(const KDQName& type : qAsConst(m_typeList)) { + isMatch = probeMatchService.isMatchingType(type) && isMatch; + } + for(const QUrl& scope : qAsConst(m_scopeList)) { + isMatch = probeMatchService.isMatchingScope(scope) && isMatch; + } + if(isMatch) { + emit matchReceived(probeMatchService); + } else { + qCDebug(KDSoapWSDiscoveryClient) << "Received probe match that didn't match the probe job"; + } +} diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoveryprobejob.h b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryprobejob.h new file mode 100644 index 0000000..11277f5 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryprobejob.h @@ -0,0 +1,111 @@ +/* Copyright (C) 2019 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ +#ifndef WSDISCOVERYPROBEJOB_H +#define WSDISCOVERYPROBEJOB_H + +#include "wsdiscoveryclient_export.h" +#include +#include +#include +#include + +class WSDiscoveryClient; +class WSDiscoveryTargetService; + +/*! + * \brief Periodically probe the network for WS-Discovery devices. + * + * You can set a filter for interested types and scopes, only devices that match + * the filter will be reported. After starting it will probe the network and + * report any matches. + */ +class WSDISCOVERYCLIENT_EXPORT WSDiscoveryProbeJob : public QObject +{ + Q_OBJECT +public: + /*! + * Creates a WSDiscoveryProbeJob + * \param parent is both the QObject parent as the WSDiscoveryClient + * used for sending and receiving messages + */ + explicit WSDiscoveryProbeJob(WSDiscoveryClient *parent); + + /*! + * \return List of types to filter devices with + */ + QList typeList() const; + /*! + * \param typeList List of types to filter devices with + */ + void setTypeList(const QList &typeList); + /*! + * \param type Adds a type to the list to filter devices with + */ + void addType(const KDQName& type); + + /*! + * \return List of scopes to filter devices with + */ + QList scopeList() const; + /*! + * \param scopeList List of scopes to filter devices with + */ + void setScopeList(const QList &scopeList); + /*! + * \param scope Adds a scopes to the list to filter devices with + */ + void addScope(const QUrl& scope); + + /*! + * \return The interval between probes + */ + int interval() const; + /*! + * \param interval Sets the interval between probes + */ + void setInterval(int interval); + +signals: + /*! + * Emitted when a match is received + * \param matchedService The service as described in the match + */ + void matchReceived(const WSDiscoveryTargetService& matchedService); + +public slots: + /*! + * Start sending periodic probes + */ + void start(); + /*! + * Stop sending periodic probes + */ + void stop(); + +//TODO: Hide private interface +private slots: + void timeout(); + void probeMatchReceived(const WSDiscoveryTargetService& probeMatchService); + +private: + WSDiscoveryClient * m_client; + QList m_typeList; + QList m_scopeList; + QTimer m_timer; +}; + +#endif // WSDISCOVERYPROBEJOB_H diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggrigator.cpp b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggrigator.cpp new file mode 100644 index 0000000..63fd15f --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggrigator.cpp @@ -0,0 +1,47 @@ +/* Copyright (C) 2020 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ + +#include "wsdiscoveryserviceaggrigator.h" +#include "wsdiscoveryserviceaggrigator_p.h" + +WSDiscoveryServiceAggrigator::WSDiscoveryServiceAggrigator(QObject* parent) + : QObject(parent), + d_ptr(new WSDiscoveryServiceAggrigatorPrivate()) +{ +} + +WSDiscoveryServiceAggrigator::~WSDiscoveryServiceAggrigator() +{ + delete d_ptr; +} + +void WSDiscoveryServiceAggrigator::updateService(const WSDiscoveryTargetService& receivedService) +{ + Q_D(WSDiscoveryServiceAggrigator); + auto endpointReference = receivedService.endpointReference(); + auto aggrigatedService = d->targetServiceMap.value(endpointReference); + if(aggrigatedService.isNull()) { + aggrigatedService = QSharedPointer::create(endpointReference); + d->targetServiceMap.insert(endpointReference, aggrigatedService); + } + aggrigatedService->setTypeList(receivedService.typeList()); + aggrigatedService->setScopeList(receivedService.scopeList()); + aggrigatedService->setXAddrList(receivedService.xAddrList()); + aggrigatedService->setLastSeen(receivedService.lastSeen());; + emit serviceUpdated(aggrigatedService); +} + diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggrigator.h b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggrigator.h new file mode 100644 index 0000000..0c95395 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggrigator.h @@ -0,0 +1,71 @@ +/* Copyright (C) 2020 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ + +#ifndef WSDISCOVERYSERVICEAGGRIGATOR_H +#define WSDISCOVERYSERVICEAGGRIGATOR_H + +#include "wsdiscoveryclient_export.h" +#include + +class WSDiscoveryTargetService; +class WSDiscoveryServiceAggrigatorPrivate; + +/*! + * \brief Aggrigates multiple updates from the same WSDiscoveryTargetService + * + * When receiving multiple probe and resolve matches of the same service, this + * class will aggrigate those into a single shared instance. This eases the + * administration needed by the application. + */ +class WSDISCOVERYCLIENT_EXPORT WSDiscoveryServiceAggrigator : public QObject +{ + Q_OBJECT + +public: + /*! + * Create a WSDiscoveryClient + * \param parent The QObject parent + */ + WSDiscoveryServiceAggrigator(QObject* parent = nullptr); + + /*! + * Destructor + */ + ~WSDiscoveryServiceAggrigator(); + +signals: + /*! + * Emitted when a service has new information. The service instance is + * reused, when a new update is received. Therefore you can compare the + * pointers when looking for updates of a previous received service. + * \param updatedService A pointer to the updated service + */ + void serviceUpdated(const QSharedPointer& updatedService); + +public slots: + /*! + * Provides a new service update. + * \param receivedService The service with updated information + */ + void updateService(const WSDiscoveryTargetService& receivedService); + +private: + WSDiscoveryServiceAggrigatorPrivate* const d_ptr; + Q_DECLARE_PRIVATE(WSDiscoveryServiceAggrigator) +}; + +#endif // WSDISCOVERYSERVICEAGGRIGATOR_H diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggrigator_p.h b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggrigator_p.h new file mode 100644 index 0000000..92a516c --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggrigator_p.h @@ -0,0 +1,31 @@ +/* Copyright (C) 2020 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ + +#ifndef WSDISCOVERYSERVICEAGGRIGATOR_P_H +#define WSDISCOVERYSERVICEAGGRIGATOR_P_H + +#include +#include +#include "wsdiscoverytargetservice.h" + +class WSDiscoveryServiceAggrigatorPrivate +{ +public: + QHash> targetServiceMap; +}; + +#endif // WSDISCOVERYSERVICEAGGRIGATOR_P_H diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoverytargetservice.cpp b/smb/kdsoap-ws-discovery-client/src/wsdiscoverytargetservice.cpp new file mode 100644 index 0000000..1b8d03a --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoverytargetservice.cpp @@ -0,0 +1,118 @@ +/* Copyright (C) 2019 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ +#include "wsdiscoverytargetservice.h" + +class WSDiscoveryTargetServiceData : public QSharedData +{ + public: + QString endpointReference; + QList typeList; + QList scopeList; + QList xAddrList; + QDateTime lastSeen; +}; + +WSDiscoveryTargetService::WSDiscoveryTargetService() +{ + d = new WSDiscoveryTargetServiceData(); +} + +WSDiscoveryTargetService::WSDiscoveryTargetService(const QString &endpointReference) +{ + d = new WSDiscoveryTargetServiceData(); + d->endpointReference = endpointReference; +} + +WSDiscoveryTargetService::WSDiscoveryTargetService(const WSDiscoveryTargetService &other) = default; +WSDiscoveryTargetService::~WSDiscoveryTargetService() = default; + +QDateTime WSDiscoveryTargetService::lastSeen() const +{ + return d->lastSeen; +} + +void WSDiscoveryTargetService::setLastSeen(const QDateTime &lastSeen) +{ + d->lastSeen = lastSeen; +} + +void WSDiscoveryTargetService::updateLastSeen() +{ + setLastSeen(QDateTime::currentDateTime()); +} + +bool WSDiscoveryTargetService::isMatchingType(const KDQName &matchingType) const +{ + for(const KDQName &type : d->typeList) { + if(matchingType.nameSpace() == type.nameSpace() && + matchingType.localName() == type.localName()) { + return true; + } + } + return false; +} + +bool WSDiscoveryTargetService::isMatchingScope(const QUrl &matchingScope) const +{ + for(const QUrl &scope : d->scopeList) { + if(matchingScope == scope) { + return true; + } + } + return false; +} + +QList WSDiscoveryTargetService::xAddrList() const +{ + return d->xAddrList; +} + +void WSDiscoveryTargetService::setXAddrList(const QList &xAddrList) +{ + d->xAddrList = xAddrList; +} + +QList WSDiscoveryTargetService::scopeList() const +{ + return d->scopeList; +} + +void WSDiscoveryTargetService::setScopeList(const QList &scopeList) +{ + d->scopeList = scopeList; +} + +QList WSDiscoveryTargetService::typeList() const +{ + return d->typeList; +} + +void WSDiscoveryTargetService::setTypeList(const QList &typeList) +{ + d->typeList = typeList; +} + +QString WSDiscoveryTargetService::endpointReference() const +{ + return d->endpointReference; +} + +void WSDiscoveryTargetService::setEndpointReference(const QString& endpointReference) +{ + d->endpointReference = endpointReference; +} + diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoverytargetservice.h b/smb/kdsoap-ws-discovery-client/src/wsdiscoverytargetservice.h new file mode 100644 index 0000000..cfbdbdd --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoverytargetservice.h @@ -0,0 +1,54 @@ +/* Copyright (C) 2019 Casper Meijn + * SPDX-License-Identifier: GPL-3.0-or-later + * + * 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 3 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, see . + */ +#ifndef WSDISCOVERYTARGETSERVICE_H +#define WSDISCOVERYTARGETSERVICE_H + +#include "wsdiscoveryclient_export.h" +#include +#include +#include + +class WSDiscoveryTargetServiceData; + +class WSDISCOVERYCLIENT_EXPORT WSDiscoveryTargetService +{ +public: + explicit WSDiscoveryTargetService(); + explicit WSDiscoveryTargetService(const QString &endpointReference); + WSDiscoveryTargetService(const WSDiscoveryTargetService &other); + ~WSDiscoveryTargetService(); + + void setEndpointReference(const QString &endpointReference); + QString endpointReference() const; + QList typeList() const; + void setTypeList(const QList &typeList); + QList scopeList() const; + void setScopeList(const QList &scopeList); + QList xAddrList() const; + void setXAddrList(const QList &xAddrList); + QDateTime lastSeen() const; + void setLastSeen(const QDateTime &lastSeen); + void updateLastSeen(); + + bool isMatchingType(const KDQName &matchingType) const; + bool isMatchingScope(const QUrl &matchingScope) const; + +private: + QSharedDataPointer d; +}; + +#endif // WSDISCOVERYTARGETSERVICE_H diff --git a/smb/kdsoap-ws-discovery-client/wsdl/docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-schema-os.xsd b/smb/kdsoap-ws-discovery-client/wsdl/docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-schema-os.xsd new file mode 100644 index 0000000..d53e179 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/wsdl/docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-schema-os.xsd @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/smb/kdsoap-ws-discovery-client/wsdl/docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-wsdl-os.wsdl b/smb/kdsoap-ws-discovery-client/wsdl/docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-wsdl-os.wsdl new file mode 100644 index 0000000..e17169b --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/wsdl/docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-wsdl-os.wsdl @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/smb/kdsoap-ws-discovery-client/wsdl/download.sh b/smb/kdsoap-ws-discovery-client/wsdl/download.sh new file mode 100755 index 0000000..ca7c7a4 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/wsdl/download.sh @@ -0,0 +1,31 @@ +#!/bin/bash +set -eu + +# Copyright (C) 2019 Casper Meijn +# SPDX-License-Identifier: GPL-3.0-or-later +# +# 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 3 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, see . + +# First download WS-Discovery 2005-04 +wget --no-verbose -r http://schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.xsd +wget --no-verbose -r http://schemas.xmlsoap.org/ws/2004/08/addressing +# Apperently the original file is not available anymore: http://schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.wsdl +wget --no-verbose https://web.archive.org/web/20070225062601/http://schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.wsdl +mv -v ws-discovery.wsdl schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.wsdl + +# Then download OASIS WS-Discovery 2009-01 +wget --no-verbose -r http://docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-wsdl-os.wsdl +wget --no-verbose -r http://docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-schema-os.xsd +wget --no-verbose -r http://www.w3.org/2006/03/addressing/ws-addr.xsd + diff --git a/smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2004/08/addressing b/smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2004/08/addressing new file mode 100644 index 0000000..50bab46 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2004/08/addressing @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + If "Policy" elements from namespace "http://schemas.xmlsoap.org/ws/2002/12/policy#policy" are used, they must appear first (before any extensibility elements). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.wsdl b/smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.wsdl new file mode 100644 index 0000000..fb308b2 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.wsdl @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.xsd b/smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.xsd new file mode 100644 index 0000000..4a7e08c --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.xsd @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/smb/kdsoap-ws-discovery-client/wsdl/www.w3.org/2006/03/addressing/ws-addr.xsd b/smb/kdsoap-ws-discovery-client/wsdl/www.w3.org/2006/03/addressing/ws-addr.xsd new file mode 100644 index 0000000..47362ed --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/wsdl/www.w3.org/2006/03/addressing/ws-addr.xsd @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/smb/kio_smb.cpp b/smb/kio_smb.cpp new file mode 100644 index 0000000..17d75dd --- /dev/null +++ b/smb/kio_smb.cpp @@ -0,0 +1,80 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileContributor: Matthew Peterson +*/ + +#include "kio_smb.h" +#include "smburl.h" +#include +#include + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.smb" FILE "smb.json") +}; + +bool needsEEXISTWorkaround() +{ + /* There is an issue with some libsmbclient versions that return EEXIST + * return code from smbc_opendir() instead of EPERM when the user + * tries to access a resource that requires login authetification. + * We are working around the issue by treating EEXIST as a special case + * of "invalid/unavailable credentials" if we detect that we are using + * the affected versions of libsmbclient + * + * Upstream bug report: https://bugzilla.samba.org/show_bug.cgi?id=13050 + */ + static const QVersionNumber firstBrokenVer {4, 7, 0}; + static const QVersionNumber lastBrokenVer {4, 7, 6}; + + const QVersionNumber currentVer = QVersionNumber::fromString(smbc_version()); + qCDebug(KIO_SMB_LOG) << "Using libsmbclient library version" << currentVer; + + if (currentVer >= firstBrokenVer && currentVer <= lastBrokenVer) { + qCDebug(KIO_SMB_LOG) << "Detected broken libsmbclient version" << currentVer; + return true; + } + + return false; +} + +SMBSlave::SMBSlave(const QByteArray &pool, const QByteArray &app) + : SlaveBase("smb", pool, app) + , m_openFd(-1) + , m_enableEEXISTWorkaround(needsEEXISTWorkaround()) +{ +} + +SMBSlave::~SMBSlave() = default; + +void SMBSlave::virtual_hook(int id, void *data) +{ + switch (id) { + case SlaveBase::GetFileSystemFreeSpace: { + QUrl *url = static_cast(data); + fileSystemFreeSpace(*url); + } break; + case SlaveBase::Truncate: { + auto length = static_cast(data); + truncate(*length); + } break; + default: { + SlaveBase::virtual_hook(id, data); + } break; + } +} + +SlaveFrontend::SlaveFrontend(SMBSlave &slave) + : m_slave(slave) +{ +} + +bool SlaveFrontend::checkCachedAuthentication(AuthInfo &info) +{ + return m_slave.checkCachedAuthentication(info); +} + +#include "kio_smb.moc" diff --git a/smb/kio_smb.h b/smb/kio_smb.h new file mode 100644 index 0000000..5e7e3a7 --- /dev/null +++ b/smb/kio_smb.h @@ -0,0 +1,259 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileContributor: Matthew Peterson +*/ + +#ifndef KIO_SMB_H_INCLUDED +#define KIO_SMB_H_INCLUDED + +#include + +#include "smb-logsettings.h" + +//-------------- +// KDE includes +//-------------- +#include +#include + +//----------------------------- +// Standard C library includes +//----------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//----------------------------- +// Qt includes +//----------------------------- + +#include +#include +#include + +//------------------------------- +// Samba client library includes +//------------------------------- +extern "C" { +#include +} + +//--------------------------- +// kio_smb internal includes +//--------------------------- +#include "smburl.h" +#include "smbauthenticator.h" +#include "smbcontext.h" + +using namespace KIO; +class SMBSlave; + +class SlaveFrontend : public SMBAbstractFrontend +{ +public: + SlaveFrontend(SMBSlave &slave); + bool checkCachedAuthentication(AuthInfo &info) override; +private: + SMBSlave &m_slave; +}; + +class SMBSlave : public QObject, public KIO::SlaveBase +{ + Q_OBJECT + friend class SMBCDiscoverer; + SlaveFrontend m_frontend { *this }; + SMBContext m_context { new SMBAuthenticator(m_frontend) }; + +private: + + class SMBError + { + public: + int kioErrorId; + QString errorString; + }; + + /** + * we store the current url, it's needed for + * callback authorization method + */ + SMBUrl m_current_url; + + /** + * From Controlcenter, show SHARE$ or not + */ + // bool m_showHiddenShares; //currently unused, Alex + + /** + * libsmbclient need global variables to store in, + * else it crashes on exit next method after use cache_stat, + * looks like gcc (C/C++) failure + */ + struct stat st { + }; + +protected: + //--------------------------------------------- + // Authentication functions (kio_smb_auth.cpp) + //--------------------------------------------- + // (please prefix functions with auth) + + /** + * Description : Initializes the libsmbclient + * Return : true on success false with errno set on error + */ + bool auth_initialize_smbc(); + + int checkPassword(SMBUrl &url); + + //--------------------------------------------- + // Cache functions (kio_smb_auth.cpp) + //--------------------------------------------- + + // Stat methods + + //----------------------------------------- + // Browsing functions (kio_smb_browse.cpp) + //----------------------------------------- + // (please prefix functions with browse) + + /** + * Description : Return a stat of given SMBUrl. Calls cache_stat and + * pack it in UDSEntry. UDSEntry will not be cleared + * Parameter : SMBUrl the url to stat + * Return : cache_stat() return code + */ + int browse_stat_path(const SMBUrl &url, UDSEntry &udsentry); + + /** + * Description : call smbc_stat and return stats of the url + * Parameter : SMBUrl the url to stat + * Return : stat* of the url + * Note : it has some problems with stat in method, looks like + * something leave(or removed) on the stack. If your + * method segfault on returning try to change the stat* + * variable + */ + static int cache_stat(const SMBUrl &url, struct stat *st); + + //--------------------------------------------- + // Configuration functions (kio_smb_config.cpp) + //--------------------------------------------- + // (please prefix functions with config) + + //--------------------------------------- + // Directory functions (kio_smb_dir.cpp) + //--------------------------------------- + // (please prefix functions with dir) + + //-------------------------------------- + // File IO functions (kio_smb_file.cpp) + //-------------------------------------- + // (please prefix functions with file) + + //---------------------------- + // Misc functions (this file) + //---------------------------- + + /** + * Description : correct a given URL + * valid URL's are + * + * smb://[[domain;]user[:password]@]server[:port][/share[/path[/file]]] + * smb:/[[domain;]user[:password]@][group/[server[/share[/path[/file]]]]] + * domain = workgroup(domain) of the user + * user = username + * password = password of useraccount + * group = workgroup(domain) of server + * server = host to connect + * share = a share of the server (host) + * path = a path of the share + * Parameter : QUrl the url to check + * Return : new QUrl if it is corrected. else the same QUrl + */ + QUrl checkURL(const QUrl &kurl) const; + + void reportError(const SMBUrl &url, const int errNum); + void reportWarning(const SMBUrl &url, const int errNum); + +public: + //----------------------------------------------------------------------- + // Overwritten functions from the base class that define the operation of + // this slave. (See the base class headerfile slavebase.h for more + // details) + //----------------------------------------------------------------------- + + // Functions overwritten in kio_smb.cpp + SMBSlave(const QByteArray &pool, const QByteArray &app); + ~SMBSlave() override; + + // Functions overwritten in kio_smb_browse.cpp + void listDir(const QUrl &url) override; + void stat(const QUrl &url) override; + + // Functions overwritten in kio_smb_config.cpp + void reparseConfiguration() override; + + // Functions overwritten in kio_smb_dir.cpp + void copy(const QUrl &src, const QUrl &dst, int permissions, KIO::JobFlags flags) override; + void del(const QUrl &kurl, bool isfile) override; + void mkdir(const QUrl &kurl, int permissions) override; + void rename(const QUrl &src, const QUrl &dest, KIO::JobFlags flags) override; + + // Functions overwritten in kio_smb_file.cpp + void get(const QUrl &kurl) override; + void put(const QUrl &kurl, int permissions, KIO::JobFlags flags) override; + void open(const QUrl &kurl, QIODevice::OpenMode mode) override; + void read(KIO::filesize_t bytesRequested) override; + void write(const QByteArray &fileData) override; + void seek(KIO::filesize_t offset) override; + void truncate(KIO::filesize_t length); + void close() override; + + // Functions not implemented (yet) + // virtual void setHost(const QString& host, int port, const QString& user, const QString& pass); + // virtual void openConnection(); + // virtual void closeConnection(); + // virtual void slave_status(); + void special(const QByteArray &) override; + +protected: + void virtual_hook(int id, void *data) override; + +private: + SMBError errnumToKioError(const SMBUrl &url, const int errNum); + void smbCopy(const QUrl &src, const QUrl &dst, int permissions, KIO::JobFlags flags); + void smbCopyGet(const QUrl &ksrc, const QUrl &kdst, int permissions, KIO::JobFlags flags); + void smbCopyPut(const QUrl &ksrc, const QUrl &kdst, int permissions, KIO::JobFlags flags); + bool workaroundEEXIST(const int errNum) const; + int statToUDSEntry(const QUrl &url, const struct stat &st, KIO::UDSEntry &udsentry); + void fileSystemFreeSpace(const QUrl &url); + + /** + * Used in open(), read(), write(), and close() + * FIXME Placing these in the private section above causes m_openUrl = kurl + * to fail in SMBSlave::open. Need to find out why this is. + */ + int m_openFd; + SMBUrl m_openUrl; + + const bool m_enableEEXISTWorkaround; /* Enables a workaround for some broken libsmbclient versions */ + // Close without calling finish(). Use this to close after error. + void closeWithoutFinish(); +}; + +//=========================================================================== +// Main slave entrypoint (see kio_smb.cpp) +extern "C" { +int kdemain(int argc, char **argv); +} + +#endif //#endif KIO_SMB_H_INCLUDED diff --git a/smb/kio_smb_auth.cpp b/smb/kio_smb_auth.cpp new file mode 100644 index 0000000..70b95b5 --- /dev/null +++ b/smb/kio_smb_auth.cpp @@ -0,0 +1,75 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#include "kio_smb.h" +#include "smburl.h" + +#include +#include +#include +#include + +int SMBSlave::checkPassword(SMBUrl &url) +{ + qCDebug(KIO_SMB_LOG) << "checkPassword for " << url; + + KIO::AuthInfo info; + info.url = QUrl("smb:///"); + info.url.setHost(url.host()); + + QString share = url.path(); + int index = share.indexOf('/', 1); + if (index > 1) + share = share.left(index); + if (share.at(0) == '/') + share = share.mid(1); + info.url.setPath('/' + share); + info.verifyPath = true; + info.keepPassword = true; + + // By suggestion from upstream we do not split login variants through the UI but rather expect different + // username inputs. This is also more in line with how logon works in windows. + // https://bugzilla.samba.org/show_bug.cgi?id=14326 + // https://docs.microsoft.com/en-us/windows/win32/secauthn/user-name-formats + info.setExtraField(QStringLiteral("username-context-help"), + xi18nc("@info:whatsthis", + "There are various options for authenticating on SMB shares." + "username: When authenticating within a home network the username on the server is sufficient" + "username@domain.com: Modern corporate logon names are formed like e-mail addresses" + "DOMAIN\\username: For ancient corporate networks or workgroups you may need to prefix the NetBIOS domain name (pre-Windows 2000)" + "anonymous: Anonymous logins can be attempted using empty username and password. Depending on server configuration non-empty usernames may be required" + )); + + if (share.isEmpty()) + info.prompt = i18n("Please enter authentication information for %1", url.host()); + else + info.prompt = i18n( + "Please enter authentication information for:\n" + "Server = %1\n" + "Share = %2", + url.host(), + share); + + info.username = url.userName(); + qCDebug(KIO_SMB_LOG) << "call openPasswordDialog for " << info.url; + + const int passwordDialogErrorCode = openPasswordDialogV2(info); + if (passwordDialogErrorCode == KJob::NoError) { + qCDebug(KIO_SMB_LOG) << "openPasswordDialog returned " << info.username; + url.setUser(info.username); + + if (info.keepPassword) { + qCDebug(KIO_SMB_LOG) << "Caching info.username = " << info.username + << ", info.url = " << info.url.toDisplayString(); + cacheAuthentication(info); + } + + return KJob::NoError; + } + qCDebug(KIO_SMB_LOG) << "no value from openPasswordDialog; error:" << passwordDialogErrorCode; + return passwordDialogErrorCode; +} diff --git a/smb/kio_smb_browse.cpp b/smb/kio_smb_browse.cpp new file mode 100644 index 0000000..91a4e9f --- /dev/null +++ b/smb/kio_smb_browse.cpp @@ -0,0 +1,557 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileCopyrightText: 2018-2020 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#include "kio_smb.h" +#include "smburl.h" + +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include "dnssddiscoverer.h" +#include "smbcdiscoverer.h" +#include "wsdiscoverer.h" +#include + +using namespace KIO; + +int SMBSlave::cache_stat(const SMBUrl &url, struct stat *st) +{ + int cacheStatErr = 0; + int result = smbc_stat(url.toSmbcUrl(), st); + if (result == 0) { + cacheStatErr = 0; + } else { + cacheStatErr = errno; + } + qCDebug(KIO_SMB_LOG) << "size " << static_cast(st->st_size); + return cacheStatErr; +} + +int SMBSlave::browse_stat_path(const SMBUrl &url, UDSEntry &udsentry) +{ + int cacheStatErr = cache_stat(url, &st); + if (cacheStatErr == 0) { + return statToUDSEntry(url, st, udsentry); + } + + return cacheStatErr; +} + +int SMBSlave::statToUDSEntry(const QUrl &url, const struct stat &st, KIO::UDSEntry &udsentry) +{ + if (!S_ISDIR(st.st_mode) && !S_ISREG(st.st_mode)) { + qCDebug(KIO_SMB_LOG) << "mode: "<< st.st_mode; + warning(i18n("%1:\n" + "Unknown file type, neither directory or file.", + url.toDisplayString())); + return EINVAL; + } + + if (!S_ISDIR(st.st_mode)) { + // Awkwardly documented at + // https://www.samba.org/samba/docs/using_samba/ch08.html + // libsmb_stat.c assigns special meaning to +x permissions + // (obviously only on files, all dirs are +x so this hacky representation + // wouldn't work!): + // - S_IXUSR = DOS archive: This file has been touched since the last DOS backup was performed on it. + // - S_IXGRP = DOS system: This file has a specific purpose required by the operating system. + // - S_IXOTH = DOS hidden: This file has been marked to be invisible to the user, unless the operating system is explicitly set to show it. + // Only hiding has backing through KIO right now. + if (st.st_mode & S_IXOTH) { // DOS hidden + udsentry.fastInsert(KIO::UDSEntry::UDS_HIDDEN, true); + } + } + + // UID and GID **must** not be mapped. The values returned by libsmbclient are + // simply the getuid/getgid of the process. They mean absolutely nothing. + // Also see libsmb_stat.c. + // Related: https://bugs.kde.org/show_bug.cgi?id=212801 + + // POSIX Access mode must not be mapped either! + // It's meaningless for smb shares and downright disadvantagous. + // The mode attributes outside the ones used and document above are + // useless. The only one actively set is readonlyness. + // + // BUT the READONLY attribute does nothing on NT systems: + // https://support.microsoft.com/en-us/help/326549/you-cannot-view-or-change-the-read-only-or-the-system-attributes-of-fo + // The Read-only and System attributes is only used by Windows Explorer to determine + // whether the folder is a special folder, such as a system folder that has its view + // customized by Windows (for example, My Documents, Favorites, Fonts, Downloaded Program Files), + // or a folder that you customized by using the Customize tab of the folder's Properties dialog box. + // + // As such respecting it on a KIO level is actually wrong as it doesn't indicate actual + // readonlyness since the 90s and causes us to show readonly UI states when in fact + // the directory is perfectly writable. + // https://bugs.kde.org/show_bug.cgi?id=414482 + // + // Should we ever want to parse desktop.ini like we do .directory we'd only want to when a + // dir is readonly as per the above microsoft support article. + // Also see: + // https://docs.microsoft.com/en-us/windows/win32/shell/how-to-customize-folders-with-desktop-ini + + udsentry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, st.st_mode & S_IFMT); + udsentry.fastInsert(KIO::UDSEntry::UDS_SIZE, st.st_size); + udsentry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME, st.st_mtime); + udsentry.fastInsert(KIO::UDSEntry::UDS_ACCESS_TIME, st.st_atime); + // No, st_ctime is not UDS_CREATION_TIME... + + return 0; +} + +void SMBSlave::stat(const QUrl &kurl) +{ + qCDebug(KIO_SMB_LOG) << kurl; + // make a valid URL + QUrl url = checkURL(kurl); + + // if URL is not valid we have to redirect to correct URL + if (url != kurl) { + qCDebug(KIO_SMB_LOG) << "redirection " << url; + redirection(url); + finished(); + return; + } + + m_current_url = url; + + UDSEntry udsentry; + // Set name + udsentry.fastInsert(KIO::UDSEntry::UDS_NAME, kurl.fileName()); + + switch (m_current_url.getType()) { + case SMBURLTYPE_UNKNOWN: + error(ERR_MALFORMED_URL, url.toDisplayString()); + return; + + case SMBURLTYPE_ENTIRE_NETWORK: + case SMBURLTYPE_WORKGROUP_OR_SERVER: + udsentry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + statEntry(udsentry); + finished(); + return; + + case SMBURLTYPE_SHARE_OR_PATH: { + int ret = browse_stat_path(m_current_url, udsentry); + + if (ret == EPERM || ret == EACCES || workaroundEEXIST(ret)) { + SMBUrl smbUrl(url); + + const int passwordError = checkPassword(smbUrl); + if (passwordError == KJob::NoError) { + redirection(smbUrl); + finished(); + } else if (passwordError == KIO::ERR_USER_CANCELED) { + reportError(url, ret); + } else { + error(passwordError, url.toString()); + } + + return; + } else if (ret != 0) { + qCDebug(KIO_SMB_LOG) << "stat() error" << ret << url; + reportError(url, ret); + return; + } + + statEntry(udsentry); + finished(); + return; + } + } + + qCDebug(KIO_SMB_LOG) << "UNKNOWN " << url; + finished(); +} + +// TODO: complete checking <-- what does that even mean? +// TODO: why is this not part of SMBUrl or at the very least URL validation should +// be 100% shared between this and SMBUrl. Notably SMBUrl has code that looks +// to do a similar thing but is much less complete. +QUrl SMBSlave::checkURL(const QUrl &kurl_) const +{ + qCDebug(KIO_SMB_LOG) << "checkURL " << kurl_; + + QUrl kurl(kurl_); + // We treat cifs as an alias but need to translate it to smb. + // https://bugs.kde.org/show_bug.cgi?id=327295 + // It's not IANA registered and also libsmbc internally expects + // smb URIs so we do very broadly coerce cifs to smb. + // Also see SMBUrl. + if (kurl.scheme() == "cifs") { + kurl.setScheme("smb"); + } + + // For WS-Discovered hosts we assume they'll respond to DNSSD names on .local but + // they may only respond to llmnr/netbios names. Transparently fall back. + // + // Desktop linuxes tend to have llmnr disabled, by contrast win10 has dnssd enabled, + // so chances are we'll be able to find a host.local more reliably. + // Attempt to resolve foo.local natively, if that works use it, otherwise default to + // the presumed LLMNR/netbios name found during discovery. + // This should then yield reasonable results with any combination of WSD/DNSSD/LLMNR support. + // - WSD+Avahi (on linux) + // - WSD+Win10 (i.e. dnssd + llmnr) + // - WSD+CrappyNAS (e.g. llmnr or netbios only) + // + // NB: smbc has no way to resolve a name without also triggering auth etc.: we must + // rely on the system's ability to resolve DNSSD for this check. + const QLatin1String wsdSuffix(".kio-discovery-wsd"); + if (kurl.host().endsWith(wsdSuffix)) { + QString host = kurl.host(); + host.chop(wsdSuffix.size()); + const QString dnssd(host + ".local"); + auto dnssdHost = KDNSSD::ServiceBrowser::resolveHostName(dnssd); + if (!dnssdHost.isNull()) { + qCDebug(KIO_SMB_LOG) << "Resolved DNSSD name:" << dnssd; + host = dnssd; + } else { + qCDebug(KIO_SMB_LOG) << "Failed to resolve DNSSD name:" << dnssd; + qCDebug(KIO_SMB_LOG) << "Falling back to LLMNR name:" << host; + } + kurl.setHost(host); + } + + QString surl = kurl.url(); + // transform any links in the form smb:/ into smb:// + if (surl.startsWith(QLatin1String("smb:/"))) { + if (surl.length() == 5) { + return QUrl("smb://"); + } + if (surl.at(5) != '/') { + surl = "smb://" + surl.mid(5); + qCDebug(KIO_SMB_LOG) << "checkURL return1 " << surl << " " << QUrl(surl); + return QUrl(surl); + } + } + if (surl == QLatin1String("smb://")) { + return kurl; // unchanged + } + + // smb:// normally have no userinfo + // we must redirect ourself to remove the username and password + if (surl.contains('@') && !surl.contains("smb://")) { + QUrl url(kurl); + url.setPath('/' + kurl.url().right(kurl.url().length() - kurl.url().indexOf('@') - 1)); + QString userinfo = kurl.url().mid(5, kurl.url().indexOf('@') - 5); + if (userinfo.contains(':')) { + url.setUserName(userinfo.left(userinfo.indexOf(':'))); + url.setPassword(userinfo.right(userinfo.length() - userinfo.indexOf(':') - 1)); + } else { + url.setUserName(userinfo); + } + qCDebug(KIO_SMB_LOG) << "checkURL return2 " << url; + return url; + } + + // if there's a valid host, don't have an empty path + QUrl url(kurl); + + if (url.path().isEmpty()) + url.setPath("/"); + + qCDebug(KIO_SMB_LOG) << "checkURL return3 " << url; + return url; +} + +SMBSlave::SMBError SMBSlave::errnumToKioError(const SMBUrl &url, const int errNum) +{ + qCDebug(KIO_SMB_LOG) << "errNum" << errNum; + + switch (errNum) { + case ENOENT: + if (url.getType() == SMBURLTYPE_ENTIRE_NETWORK) + return SMBError {ERR_SLAVE_DEFINED, i18n("Unable to find any workgroups in your local network. This might be caused by an enabled firewall.")}; + else + return SMBError {ERR_DOES_NOT_EXIST, url.toDisplayString()}; +#ifdef ENOMEDIUM + case ENOMEDIUM: + return SMBError {ERR_SLAVE_DEFINED, i18n("No media in device for %1", url.toDisplayString())}; +#endif +#ifdef EHOSTDOWN + case EHOSTDOWN: +#endif + case ECONNREFUSED: + return SMBError {ERR_SLAVE_DEFINED, i18n("Could not connect to host for %1", url.toDisplayString())}; + case ENOTDIR: + return SMBError {ERR_CANNOT_ENTER_DIRECTORY, url.toDisplayString()}; + case EFAULT: + case EINVAL: + return SMBError {ERR_DOES_NOT_EXIST, url.toDisplayString()}; + case EPERM: + case EACCES: + return SMBError {ERR_ACCESS_DENIED, url.toDisplayString()}; + case EIO: + case ENETUNREACH: + if (url.getType() == SMBURLTYPE_ENTIRE_NETWORK || url.getType() == SMBURLTYPE_WORKGROUP_OR_SERVER) + return SMBError {ERR_SLAVE_DEFINED, i18n("Error while connecting to server responsible for %1", url.toDisplayString())}; + else + return SMBError {ERR_CONNECTION_BROKEN, url.toDisplayString()}; + case ENOMEM: + return SMBError {ERR_OUT_OF_MEMORY, url.toDisplayString()}; + case ENODEV: + return SMBError {ERR_SLAVE_DEFINED, i18n("Share could not be found on given server")}; + case EBADF: + return SMBError {ERR_INTERNAL, i18n("Bad file descriptor")}; + case ETIMEDOUT: + return SMBError {ERR_SERVER_TIMEOUT, url.host()}; + case ENOTEMPTY: + return SMBError {ERR_CANNOT_RMDIR, url.toDisplayString()}; +#ifdef ENOTUNIQ + case ENOTUNIQ: + return SMBError {ERR_SLAVE_DEFINED, + i18n("The given name could not be resolved to a unique server. " + "Make sure your network is setup without any name conflicts " + "between names used by Windows and by UNIX name resolution.")}; +#endif + case ECONNABORTED: + return SMBError {ERR_CONNECTION_BROKEN, url.host()}; + case EHOSTUNREACH: + return SMBError {ERR_CANNOT_CONNECT, i18nc("@info:status smb failed to reach the server (e.g. server offline or network failure). %1 is an ip address or hostname", "%1: Host unreachable", url.host())}; + case 0: // success + return SMBError {ERR_INTERNAL, + i18n("libsmbclient reported an error, but did not specify " + "what the problem is. This might indicate a severe problem " + "with your network - but also might indicate a problem with " + "libsmbclient.\n" + "If you want to help us, please provide a tcpdump of the " + "network interface while you try to browse (be aware that " + "it might contain private data, so do not post it if you are " + "unsure about that - you can send it privately to the developers " + "if they ask for it)")}; + default: + return SMBError { + ERR_INTERNAL, + i18nc("%1 is an error number, %2 either a pretty string or the number", + "Unknown error condition: [%1] %2", + QString::number(errNum), + QString::fromLocal8Bit(strerror(errNum))) + }; + } +} + +void SMBSlave::reportError(const SMBUrl &url, const int errNum) +{ + const SMBError smbErr = errnumToKioError(url, errNum); + + error(smbErr.kioErrorId, smbErr.errorString); +} + +void SMBSlave::reportWarning(const SMBUrl &url, const int errNum) +{ + const SMBError smbErr = errnumToKioError(url, errNum); + const QString errorString = buildErrorString(smbErr.kioErrorId, smbErr.errorString); + + warning(xi18n("Error occurred while trying to access %1%2", url.url(), errorString)); +} + +void SMBSlave::listDir(const QUrl &kurl) +{ + qCDebug(KIO_SMB_LOG) << kurl; + + // check (correct) URL + QUrl url = checkURL(kurl); + // if URL is not valid we have to redirect to correct URL + if (url != kurl) { + redirection(url); + finished(); + return; + } + + m_current_url = kurl; + + QEventLoop e; + + UDSEntryList list; + QStringList discoveredNames; + + const auto flushEntries = [this, &list]() { + if (list.isEmpty()) { + return; + } + listEntries(list); + list.clear(); + }; + + // Since slavebase has no eventloop it wont publish results + // on a timer, since we do not know how long our discovery + // will take this is super meh because we may appear + // stuck for a while. Implement our own listing system + // based on QTimer to mitigate. + QTimer sendTimer; + sendTimer.setInterval(300); + connect(&sendTimer, &QTimer::timeout, this, flushEntries); + sendTimer.start(); + + QSharedPointer smbc(new SMBCDiscoverer(m_current_url, &e, this)); + + QVector> discoverers; + discoverers << smbc; + + auto appendDiscovery = [&](const Discovery::Ptr &discovery) { + if (discoveredNames.contains(discovery->udsName(), Qt::CaseInsensitive)) { + return; + } + // Not tracking hosts. Tracking hosts means **guessing** if foo.local + // and foo and foo.kio-discovery-wsd will actually resolve to the same + // IP address, which is tricky to do at best. In the interest of efficency + // I'd rather have the de-duplication requirement be that the name of + // two competing service discovery systems needs to be the same. + discoveredNames << discovery->udsName(); + list.append(discovery->toEntry()); + }; + + auto maybeFinished = [&] { // finishes if all discoveries finished + bool allFinished = true; + for (const auto &discoverer : discoverers) { + allFinished = allFinished && discoverer->isFinished(); + } + if (allFinished) { + flushEntries(); + e.quit(); + } + }; + + connect(smbc.data(), &SMBCDiscoverer::newDiscovery, this, appendDiscovery); + connect(smbc.data(), &SMBCDiscoverer::finished, this, maybeFinished); + + // Run service discovery if the path is root. This augments + // "native" results from libsmbclient. + // Also, should native resolution have encountered an error it will not matter. + if (m_current_url.getType() == SMBURLTYPE_ENTIRE_NETWORK) { + QSharedPointer dnssd(new DNSSDDiscoverer); + QSharedPointer wsd(new WSDiscoverer); + discoverers << dnssd << wsd; + + qCDebug(KIO_SMB_LOG) << "Adding modern discovery (dnssd/wsdiscovery)"; + + connect(dnssd.data(), &DNSSDDiscoverer::newDiscovery, this, appendDiscovery); + connect(wsd.data(), &WSDiscoverer::newDiscovery, this, appendDiscovery); + + connect(dnssd.data(), &DNSSDDiscoverer::finished, this, maybeFinished); + connect(wsd.data(), &WSDiscoverer::finished, this, maybeFinished); + + dnssd->start(); + wsd->start(); + + qCDebug(KIO_SMB_LOG) << "Modern discovery set up."; + } + + qCDebug(KIO_SMB_LOG) << "Starting discovery."; + smbc->start(); + e.exec(); + + qCDebug(KIO_SMB_LOG) << "Discovery finished."; + + if (m_current_url.getType() != SMBURLTYPE_ENTIRE_NETWORK && smbc->error() != 0) { + // not smb:// and had an error -> handle it + const int err = smbc->error(); + if (err == EPERM || err == EACCES || workaroundEEXIST(err)) { + qCDebug(KIO_SMB_LOG) << "trying checkPassword"; + const int passwordError = checkPassword(m_current_url); + if (passwordError == KJob::NoError) { + redirection(m_current_url); + finished(); + } else if (passwordError == KIO::ERR_USER_CANCELED) { + qCDebug(KIO_SMB_LOG) << "user cancelled password request"; + reportError(m_current_url, err); + } else { + qCDebug(KIO_SMB_LOG) << "generic password error:" << passwordError; + error(passwordError, m_current_url.toString()); + } + + return; + } + + qCDebug(KIO_SMB_LOG) << "reporting generic error:" << err; + reportError(m_current_url, err); + return; + } + + UDSEntry udsentry; + if (smbc->dirWasRoot()) { + udsentry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + udsentry.fastInsert(KIO::UDSEntry::UDS_NAME, "."); + udsentry.fastInsert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH)); + } else { + udsentry.fastInsert(KIO::UDSEntry::UDS_NAME, "."); + const int statErr = browse_stat_path(m_current_url, udsentry); + if (statErr != 0) { + if (statErr == ENOENT || statErr == ENOTDIR) { + reportWarning(m_current_url, statErr); + } + // Create a default UDSEntry if we could not stat the actual directory + udsentry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + udsentry.fastInsert(KIO::UDSEntry::UDS_ACCESS, (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)); + } + } + listEntry(udsentry); + + finished(); +} + +void SMBSlave::fileSystemFreeSpace(const QUrl &url) +{ + if (url.host().endsWith("kio-discovery-wsd")) { + error(KIO::ERR_UNKNOWN_HOST, url.url()); + return; + } + qCDebug(KIO_SMB_LOG) << url; + + // Avoid crashing in smbc_fstatvfs below when + // requesting free space for smb:// which doesn't + // make sense to do to begin with + if (url.host().isEmpty()) { + error(KIO::ERR_CANNOT_STAT, url.url()); + return; + } + + SMBUrl smbcUrl = url; + + struct statvfs dirStat { + }; + memset(&dirStat, 0, sizeof(struct statvfs)); + const int err = smbc_statvfs(smbcUrl.toSmbcUrl().data(), &dirStat); + if (err < 0) { + error(KIO::ERR_CANNOT_STAT, url.url()); + return; + } + + // libsmb_stat.c has very awkward conditional branching that results + // in data meaning different things based on context: + // A samba host with unix extensions has f_frsize==0 and the f_bsize is + // the actual block size. Any other server (such as windows) has a non-zero + // f_frsize denoting the amount of sectors in a block and the f_bsize is + // the amount of bytes in a sector. As such frsize*bsize is the actual + // block size. + // This was also broken in different ways throughout history, so depending + // on the specific libsmbc versions the milage will vary. 4.7 to 4.11 are + // at least behaving as described though. + // https://bugs.kde.org/show_bug.cgi?id=298801 + const auto frames = (dirStat.f_frsize == 0) ? 1 : dirStat.f_frsize; + const auto blockSize = dirStat.f_bsize * frames; + // Further more on older versions of samba f_bavail may not be set... + const auto total = blockSize * dirStat.f_blocks; + const auto available = blockSize * ((dirStat.f_bavail != 0) ? dirStat.f_bavail : dirStat.f_bfree); + + setMetaData("total", QString::number(total)); + setMetaData("available", QString::number(available)); + + finished(); +} + +bool SMBSlave::workaroundEEXIST(const int errNum) const +{ + return (errNum == EEXIST) && m_enableEEXISTWorkaround; +} diff --git a/smb/kio_smb_config.cpp b/smb/kio_smb_config.cpp new file mode 100644 index 0000000..11d268d --- /dev/null +++ b/smb/kio_smb_config.cpp @@ -0,0 +1,17 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileContributor: Matthew Peterson +*/ + +#include "kio_smb.h" +#include "smburl.h" +#include +#include + +#include + +void SMBSlave::reparseConfiguration() +{ + m_context.authenticator()->loadConfiguration(); +} diff --git a/smb/kio_smb_dir.cpp b/smb/kio_smb_dir.cpp new file mode 100644 index 0000000..ef01626 --- /dev/null +++ b/smb/kio_smb_dir.cpp @@ -0,0 +1,710 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileContributor: Matthew Peterson +*/ + +#include "kio_smb.h" +#include "smburl.h" + +#include +#include +#include + +#include +#include + +#include + +#include "transfer.h" + +void SMBSlave::copy(const QUrl &src, const QUrl &dst, int permissions, KIO::JobFlags flags) +{ + const bool isSourceLocal = src.isLocalFile(); + const bool isDestinationLocal = dst.isLocalFile(); + + if (!isSourceLocal && isDestinationLocal) { + smbCopyGet(src, dst, permissions, flags); + } else if (isSourceLocal && !isDestinationLocal) { + smbCopyPut(src, dst, permissions, flags); + } else { + smbCopy(src, dst, permissions, flags); + } +} + +void SMBSlave::smbCopy(const QUrl &ksrc, const QUrl &kdst, int permissions, KIO::JobFlags flags) +{ + qCDebug(KIO_SMB_LOG) << "SMBSlave::copy with src = " << ksrc << "and dest = " << kdst; + + // setup urls + SMBUrl src = ksrc; + SMBUrl dst = kdst; + + // Obtain information about source + int errNum = cache_stat(src, &st); + if (errNum != 0) { + if (errNum == EACCES) { + error(KIO::ERR_ACCESS_DENIED, src.toDisplayString()); + } else { + error(KIO::ERR_DOES_NOT_EXIST, src.toDisplayString()); + } + return; + } + if (S_ISDIR(st.st_mode)) { + error(KIO::ERR_IS_DIRECTORY, src.toDisplayString()); + return; + } + const auto srcSize = st.st_size; + totalSize(srcSize); + + // Check to se if the destination exists + errNum = cache_stat(dst, &st); + if (errNum == 0) { + if (S_ISDIR(st.st_mode)) { + error(KIO::ERR_DIR_ALREADY_EXIST, dst.toDisplayString()); + return; + } + if (!(flags & KIO::Overwrite)) { + error(KIO::ERR_FILE_ALREADY_EXIST, dst.toDisplayString()); + return; + } + } + + // Open the source file + int srcfd = smbc_open(src.toSmbcUrl(), O_RDONLY, 0); + if (srcfd < 0) { + errNum = errno; + } else { + errNum = 0; + } + + if (srcfd < 0) { + if (errNum == EACCES) { + error(KIO::ERR_ACCESS_DENIED, src.toDisplayString()); + } else { + error(KIO::ERR_DOES_NOT_EXIST, src.toDisplayString()); + } + return; + } + + + mode_t initialmode = 0; + // Determine initial creation mode + if (permissions != -1) { + initialmode = permissions | S_IWUSR; + } else { + initialmode = 0 | S_IWUSR; // 0666; + } + + // Open the destination file + int dstflags = O_CREAT | O_TRUNC | O_WRONLY; + if (!(flags & KIO::Overwrite)) { + dstflags |= O_EXCL; + } + int dstfd = smbc_open(dst.toSmbcUrl(), dstflags, initialmode); + if (dstfd < 0) { + errNum = errno; + } else { + errNum = 0; + } + + if (dstfd < 0) { + if (errNum == EACCES) { + error(KIO::ERR_WRITE_ACCESS_DENIED, dst.toDisplayString()); + } else { + error(KIO::ERR_CANNOT_OPEN_FOR_READING, dst.toDisplayString()); + } + + if (srcfd >= 0) { + smbc_close(srcfd); + } + return; + } + + // Perform copy + // TODO: if and when smb_context becomes thread-safe, use two contexts connected with + // a ring buffer to optimize transfer speed (also see smbCopyGet) + // https://bugzilla.samba.org/show_bug.cgi?id=11413 + KIO::filesize_t processed_size = 0; + TransferSegment segment(srcSize); + while (true) { + ssize_t n = smbc_read(srcfd, segment.buf.data(), segment.buf.size()); + if (n > 0) { + n = smbc_write(dstfd, segment.buf.data(), n); + if (n == -1) { + qCDebug(KIO_SMB_LOG) << "SMBSlave::copy copy now KIO::ERR_CANNOT_WRITE"; + error(KIO::ERR_CANNOT_WRITE, dst.toDisplayString()); + break; + } + + processed_size += n; + processedSize(processed_size); + } else if (n == 0) { + break; // finished + } else { + error(KIO::ERR_CANNOT_READ, src.toDisplayString()); + break; + } + } + + // FINISHED: + + if (srcfd >= 0) { + smbc_close(srcfd); + } + + if (dstfd >= 0) { + if (smbc_close(dstfd) == 0) { + // TODO: set final permissions + } else { + error(KIO::ERR_CANNOT_WRITE, dst.toDisplayString()); + return; + } + } + + finished(); +} + +void SMBSlave::smbCopyGet(const QUrl &ksrc, const QUrl &kdst, int permissions, KIO::JobFlags flags) +{ + qCDebug(KIO_SMB_LOG) << "src = " << ksrc << ", dest = " << kdst; + + // check if destination is ok ... + const QString dstFile = kdst.toLocalFile(); + const QFileInfo dstInfo(dstFile); + + if (dstInfo.exists()) { + if (dstInfo.isDir()) { + error(ERR_IS_DIRECTORY, kdst.toDisplayString()); + return; + } + + if (!(flags & KIO::Overwrite)) { + error(ERR_FILE_ALREADY_EXIST, kdst.toDisplayString()); + return; + } + } + + bool bResume = false; + const QFileInfo partInfo(dstFile + QLatin1String(".part")); + const bool bPartExists = partInfo.exists(); + const bool bMarkPartial = configValue(QStringLiteral("MarkPartial"), true); + + if (bMarkPartial && bPartExists && partInfo.size() > 0) { + if (partInfo.isDir()) { + error(ERR_IS_DIRECTORY, partInfo.absoluteFilePath()); + return; + } + bResume = canResume(partInfo.size()); + } + + if (bPartExists && !bResume) // get rid of an unwanted ".part" file + QFile::remove(partInfo.absoluteFilePath()); + + // open the output file... + QFile::OpenMode mode; + QString filename; + if (bResume) { + filename = partInfo.absoluteFilePath(); + mode = QFile::WriteOnly | QFile::Append; + } else { + filename = (bMarkPartial ? partInfo.absoluteFilePath() : dstFile); + mode = QFile::WriteOnly | QFile::Truncate; + } + + QFile file(filename); + if (!bResume) { + QFile::Permissions perms; + if (permissions == -1) { + perms = QFile::ReadOwner | QFile::WriteOwner; + } else { + perms = KIO::convertPermissions(permissions | QFile::WriteOwner); + } + file.setPermissions(perms); + } + + if (!file.open(mode)) { + qCDebug(KIO_SMB_LOG) << "could not write to" << dstFile; + switch (file.error()) { + case QFile::OpenError: + if (bResume) { + error(ERR_CANNOT_RESUME, kdst.toDisplayString()); + } else { + error(ERR_CANNOT_OPEN_FOR_WRITING, kdst.toDisplayString()); + } + break; + case QFile::PermissionsError: + error(ERR_WRITE_ACCESS_DENIED, kdst.toDisplayString()); + break; + default: + error(ERR_CANNOT_OPEN_FOR_WRITING, kdst.toDisplayString()); + break; + } + return; + } + + // setup the source urls + const SMBUrl src(ksrc); + + // Obtain information about source + int errNum = cache_stat(src, &st); + if (errNum != 0) { + if (errNum == EACCES) { + error(KIO::ERR_ACCESS_DENIED, src.toDisplayString()); + } else { + error(KIO::ERR_DOES_NOT_EXIST, src.toDisplayString()); + } + return; + } + + if (S_ISDIR(st.st_mode)) { + error(KIO::ERR_IS_DIRECTORY, src.toDisplayString()); + return; + } + totalSize(st.st_size); + + // Open the source file + KIO::filesize_t processed_size = 0; + int srcfd = smbc_open(src.toSmbcUrl(), O_RDONLY, 0); + if (srcfd < 0) { + errNum = errno; + } else { + errNum = 0; + if (bResume) { + qCDebug(KIO_SMB_LOG) << "seeking to size" << partInfo.size(); + off_t offset = smbc_lseek(srcfd, partInfo.size(), SEEK_SET); + if (offset == -1) { + error(KIO::ERR_CANNOT_SEEK, src.toDisplayString()); + smbc_close(srcfd); + return; + } else { + processed_size += offset; + } + } + } + + if (srcfd < 0) { + if (errNum == EACCES) { + error(KIO::ERR_ACCESS_DENIED, src.toDisplayString()); + } else { + error(KIO::ERR_DOES_NOT_EXIST, src.toDisplayString()); + } + return; + } + + std::atomic isErr(false); + TransferRingBuffer buffer(st.st_size); + auto future = std::async(std::launch::async, [&buffer, &srcfd, &isErr]() -> int { + while (!isErr) { + TransferSegment *segment = buffer.nextFree(); + segment->size = smbc_read(srcfd, segment->buf.data(), segment->buf.capacity()); + if (segment->size <= 0) { + buffer.push(); + buffer.done(); + if (segment->size < 0) { + return KIO::ERR_COULD_NOT_READ; + } + break; + } + buffer.push(); + } + return KJob::NoError; + }); + + while (true) { + TransferSegment *segment = buffer.pop(); + if (!segment) { // done, no more segments pending + break; + } + + const qint64 bytesWritten = file.write(segment->buf.data(), segment->size); + if (bytesWritten == -1) { + qCDebug(KIO_SMB_LOG) << "copy now KIO::ERR_CANNOT_WRITE"; + error(KIO::ERR_CANNOT_WRITE, kdst.toDisplayString()); + isErr = true; + buffer.unpop(); + break; + } + + processed_size += bytesWritten; + processedSize(processed_size); + buffer.unpop(); + } + if (isErr) { // writing failed + future.wait(); + } else if (future.get() != KJob::NoError) { // check if read had an error + error(future.get(), ksrc.toDisplayString()); + isErr = true; + } + + // FINISHED + smbc_close(srcfd); + + // Handle error condition. + if (isErr) { + const QString sPart = partInfo.absoluteFilePath(); + if (bMarkPartial) { + const int size = configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + if (partInfo.size() < size) { + QFile::remove(sPart); + } + } + return; + } + + // Rename partial file to its original name. + if (bMarkPartial) { + const QString sPart = partInfo.absoluteFilePath(); + // Remove old dest file if it exists.. + if (dstInfo.exists()) { + QFile::remove(dstFile); + } + if (!QFile::rename(sPart, dstFile)) { + qCDebug(KIO_SMB_LOG) << "failed to rename" << sPart << "to" << dstFile; + error(ERR_CANNOT_RENAME_PARTIAL, sPart); + return; + } + } + + // Restore the mtime on the file. + const QString mtimeStr = metaData("modified"); + qCDebug(KIO_SMB_LOG) << "modified:" << mtimeStr; + if (!mtimeStr.isEmpty()) { + QDateTime dt = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dt.isValid()) { + struct utimbuf utbuf { + }; + utbuf.actime = QFileInfo(dstFile).lastRead().toSecsSinceEpoch(); // access time, unchanged + utbuf.modtime = dt.toSecsSinceEpoch(); // modification time + utime(QFile::encodeName(dstFile).constData(), &utbuf); + } + } + + finished(); +} + +void SMBSlave::smbCopyPut(const QUrl &ksrc, const QUrl &kdst, int permissions, KIO::JobFlags flags) +{ + qCDebug(KIO_SMB_LOG) << "src = " << ksrc << ", dest = " << kdst; + + QFile srcFile(ksrc.toLocalFile()); + const QFileInfo srcInfo(srcFile); + + if (srcInfo.exists()) { + if (srcInfo.isDir()) { + error(KIO::ERR_IS_DIRECTORY, ksrc.toDisplayString()); + return; + } + } else { + error(KIO::ERR_DOES_NOT_EXIST, ksrc.toDisplayString()); + return; + } + + if (!srcFile.open(QFile::ReadOnly)) { + qCDebug(KIO_SMB_LOG) << "could not read from" << ksrc; + switch (srcFile.error()) { + case QFile::PermissionsError: + error(KIO::ERR_WRITE_ACCESS_DENIED, ksrc.toDisplayString()); + break; + case QFile::OpenError: + default: + error(KIO::ERR_CANNOT_OPEN_FOR_READING, ksrc.toDisplayString()); + break; + } + return; + } + + totalSize(static_cast(srcInfo.size())); + + bool bResume = false; + bool bPartExists = false; + const bool bMarkPartial = configValue(QStringLiteral("MarkPartial"), true); + const SMBUrl dstOrigUrl(kdst); + + if (bMarkPartial) { + const int errNum = cache_stat(dstOrigUrl.partUrl(), &st); + bPartExists = (errNum == 0); + if (bPartExists) { + if (!(flags & KIO::Overwrite) && !(flags & KIO::Resume)) { + bResume = canResume(st.st_size); + } else { + bResume = (flags & KIO::Resume); + } + } + } + + int dstfd = -1; + int errNum = cache_stat(dstOrigUrl, &st); + + if (errNum == 0 && !(flags & KIO::Overwrite) && !(flags & KIO::Resume)) { + if (S_ISDIR(st.st_mode)) { + error(KIO::ERR_IS_DIRECTORY, dstOrigUrl.toDisplayString()); + } else { + error(KIO::ERR_FILE_ALREADY_EXIST, dstOrigUrl.toDisplayString()); + } + return; + } + + KIO::filesize_t processed_size = 0; + const SMBUrl dstUrl(bMarkPartial ? dstOrigUrl.partUrl() : dstOrigUrl); + + if (bResume) { + // append if resuming + qCDebug(KIO_SMB_LOG) << "resume" << dstUrl; + dstfd = smbc_open(dstUrl.toSmbcUrl(), O_RDWR, 0); + if (dstfd < 0) { + errNum = errno; + } else { + const off_t offset = smbc_lseek(dstfd, 0, SEEK_END); + if (offset == (off_t)-1) { + error(KIO::ERR_CANNOT_SEEK, dstUrl.toDisplayString()); + smbc_close(dstfd); + return; + } else { + processed_size = offset; + } + } + } else { + mode_t mode; + if (permissions == -1) { + mode = 600; + } else { + mode = permissions | S_IRUSR | S_IWUSR; + } + + qCDebug(KIO_SMB_LOG) << "NO resume" << dstUrl; + dstfd = smbc_open(dstUrl.toSmbcUrl(), O_CREAT | O_TRUNC | O_WRONLY, mode); + if (dstfd < 0) { + errNum = errno; + } + } + + if (dstfd < 0) { + if (errNum == EACCES) { + qCDebug(KIO_SMB_LOG) << "access denied"; + error(KIO::ERR_WRITE_ACCESS_DENIED, dstUrl.toDisplayString()); + } else { + qCDebug(KIO_SMB_LOG) << "can not open for writing"; + error(KIO::ERR_CANNOT_OPEN_FOR_WRITING, dstUrl.toDisplayString()); + } + return; + } + + bool isErr = false; + + if (processed_size == 0 || srcFile.seek(processed_size)) { + // Perform the copy + TransferSegment segment(srcInfo.size()); + while (true) { + const ssize_t bytesRead = srcFile.read(segment.buf.data(), segment.buf.size()); + if (bytesRead <= 0) { + if (bytesRead < 0) { + error(KIO::ERR_CANNOT_READ, ksrc.toDisplayString()); + isErr = true; + } + break; + } + + const qint64 bytesWritten = smbc_write(dstfd, segment.buf.data(), bytesRead); + if (bytesWritten == -1) { + error(KIO::ERR_CANNOT_WRITE, kdst.toDisplayString()); + isErr = true; + break; + } + + processed_size += bytesWritten; + processedSize(processed_size); + } + } else { + isErr = true; + error(KIO::ERR_CANNOT_SEEK, ksrc.toDisplayString()); + } + + // FINISHED + if (smbc_close(dstfd) < 0) { + qCDebug(KIO_SMB_LOG) << dstUrl << "could not write"; + error(KIO::ERR_CANNOT_WRITE, dstUrl.toDisplayString()); + return; + } + + // Handle error condition. + if (isErr) { + if (bMarkPartial) { + const int size = configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + const int errNum = cache_stat(dstUrl, &st); + if (errNum == 0 && st.st_size < size) { + smbc_unlink(dstUrl.toSmbcUrl()); + } + } + return; + } + + // Rename partial file to its original name. + if (bMarkPartial) { + smbc_unlink(dstOrigUrl.toSmbcUrl()); + if (smbc_rename(dstUrl.toSmbcUrl(), dstOrigUrl.toSmbcUrl()) < 0) { + qCDebug(KIO_SMB_LOG) << "failed to rename" << dstUrl << "to" << dstOrigUrl << "->" << strerror(errno); + error(ERR_CANNOT_RENAME_PARTIAL, dstUrl.toDisplayString()); + return; + } + } + +#ifdef HAVE_UTIME_H + // set modification time + const QString mtimeStr = metaData("modified"); + if (!mtimeStr.isEmpty()) { + QDateTime dt = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dt.isValid()) { + struct utimbuf utbuf { + }; + utbuf.actime = st.st_atime; // access time, unchanged + utbuf.modtime = dt.toSecsSinceEpoch(); // modification time + smbc_utime(dstOrigUrl.toSmbcUrl(), &utbuf); + } + } +#endif + + // We have done our job => finish + finished(); +} + +void SMBSlave::del(const QUrl &kurl, bool isfile) +{ + qCDebug(KIO_SMB_LOG) << kurl; + m_current_url = kurl; + int errNum = 0; + int retVal = 0; + + if (isfile) { + // Delete file + qCDebug(KIO_SMB_LOG) << "Deleting file" << kurl; + retVal = smbc_unlink(m_current_url.toSmbcUrl()); + if (retVal < 0) { + errNum = errno; + } else { + errNum = 0; + } + } else { + qCDebug(KIO_SMB_LOG) << "Deleting directory" << kurl; + // Delete directory + retVal = smbc_rmdir(m_current_url.toSmbcUrl()); + if (retVal < 0) { + errNum = errno; + } else { + errNum = 0; + } + } + + if (errNum != 0) { + reportError(kurl, errNum); + } else { + finished(); + } +} + +void SMBSlave::mkdir(const QUrl &kurl, int permissions) +{ + qCDebug(KIO_SMB_LOG) << kurl; + int errNum = 0; + int retVal = 0; + m_current_url = kurl; + + retVal = smbc_mkdir(m_current_url.toSmbcUrl(), 0777); + if (retVal < 0) { + errNum = errno; + } else { + errNum = 0; + } + + if (retVal < 0) { + if (errNum == EEXIST) { + errNum = cache_stat(m_current_url, &st); + if (errNum == 0 && S_ISDIR(st.st_mode)) { + error(KIO::ERR_DIR_ALREADY_EXIST, m_current_url.toDisplayString()); + } else { + error(KIO::ERR_FILE_ALREADY_EXIST, m_current_url.toDisplayString()); + } + } else { + reportError(kurl, errNum); + } + qCDebug(KIO_SMB_LOG) << "exit with error " << kurl; + } else // success + { + if (permissions != -1) { + // TODO enable the following when complete + // smbc_chmod( url.toSmbcUrl(), permissions ); + } + finished(); + } +} + +void SMBSlave::rename(const QUrl &ksrc, const QUrl &kdest, KIO::JobFlags flags) +{ + SMBUrl src; + SMBUrl dst; + int errNum = 0; + int retVal = 0; + + qCDebug(KIO_SMB_LOG) << "old name = " << ksrc << ", new name = " << kdest; + + src = ksrc; + dst = kdest; + + // Check to se if the destination exists + + qCDebug(KIO_SMB_LOG) << "stat dst"; + errNum = cache_stat(dst, &st); + if (errNum == 0) { + if (S_ISDIR(st.st_mode)) { + qCDebug(KIO_SMB_LOG) << "KIO::ERR_DIR_ALREADY_EXIST"; + error(KIO::ERR_DIR_ALREADY_EXIST, dst.toDisplayString()); + return; + } + if (!(flags & KIO::Overwrite)) { + qCDebug(KIO_SMB_LOG) << "KIO::ERR_FILE_ALREADY_EXIST"; + error(KIO::ERR_FILE_ALREADY_EXIST, dst.toDisplayString()); + return; + } + } + qCDebug(KIO_SMB_LOG) << "smbc_rename " << src.toSmbcUrl() << " " << dst.toSmbcUrl(); + retVal = smbc_rename(src.toSmbcUrl(), dst.toSmbcUrl()); + if (retVal < 0) { + errNum = errno; + } else { + errNum = 0; + } + + if (retVal < 0) { + qCDebug(KIO_SMB_LOG) << "failed "; + switch (errNum) { + case ENOENT: + errNum = cache_stat(src, &st); + if (errNum != 0) { + if (errNum == EACCES) { + qCDebug(KIO_SMB_LOG) << "KIO::ERR_ACCESS_DENIED"; + error(KIO::ERR_ACCESS_DENIED, src.toDisplayString()); + } else { + qCDebug(KIO_SMB_LOG) << "KIO::ERR_DOES_NOT_EXIST"; + error(KIO::ERR_DOES_NOT_EXIST, src.toDisplayString()); + } + } + break; + + case EACCES: + case EPERM: + qCDebug(KIO_SMB_LOG) << "KIO::ERR_ACCESS_DENIED"; + error(KIO::ERR_ACCESS_DENIED, dst.toDisplayString()); + break; + + default: + qCDebug(KIO_SMB_LOG) << "KIO::ERR_CANNOT_RENAME"; + error(KIO::ERR_CANNOT_RENAME, src.toDisplayString()); + } + + qCDebug(KIO_SMB_LOG) << "exit with error"; + return; + } + + qCDebug(KIO_SMB_LOG) << "everything fine\n"; + finished(); +} diff --git a/smb/kio_smb_file.cpp b/smb/kio_smb_file.cpp new file mode 100644 index 0000000..5396fb5 --- /dev/null +++ b/smb/kio_smb_file.cpp @@ -0,0 +1,426 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileCopyrightText: 2018-2020 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#include "kio_smb.h" +#include "smburl.h" + +#include +#include +#include +#include +#include + +#include + +#include "transfer.h" + +void SMBSlave::get(const QUrl &kurl) +{ + qCDebug(KIO_SMB_LOG) << kurl; + + // check (correct) URL + QUrl kvurl = checkURL(kurl); + // if URL is not valid we have to redirect to correct URL + if (kvurl != kurl) { + redirection(kvurl); + finished(); + return; + } + + if (!m_context.isValid()) { + SlaveBase::error(ERR_INTERNAL, i18n("libsmbclient failed to create context")); + return; + } + + // Stat + SMBUrl url = kurl; + int errNum = cache_stat(url, &st); + if (errNum != 0) { + if (errNum == EACCES) + error(KIO::ERR_ACCESS_DENIED, url.toDisplayString()); + else + error(KIO::ERR_DOES_NOT_EXIST, url.toDisplayString()); + return; + } + if (S_ISDIR(st.st_mode)) { + error(KIO::ERR_IS_DIRECTORY, url.toDisplayString()); + return; + } + + // Set the total size + totalSize(st.st_size); + + // Open and read the file + int filefd = smbc_open(url.toSmbcUrl(), O_RDONLY, 0); + if (filefd < 0) { + error(KIO::ERR_CANNOT_OPEN_FOR_READING, url.toDisplayString()); + return; + } + + KIO::filesize_t totalbytesread = 0; + QByteArray filedata; + bool isFirstPacket = true; + + TransferRingBuffer buffer(st.st_size); + auto future = std::async(std::launch::async, [&buffer, &filefd]() -> int { + while (true) { + TransferSegment *s = buffer.nextFree(); + s->size = smbc_read(filefd, s->buf.data(), s->buf.capacity()); + if (s->size <= 0) { + buffer.push(); + buffer.done(); + if (s->size < 0) { + return KIO::ERR_COULD_NOT_READ; + } + break; + } + buffer.push(); + } + return KJob::NoError; + }); + + while (true) { + TransferSegment *s = buffer.pop(); + if (!s) { // done, no more segments pending + break; + } + + filedata = QByteArray::fromRawData(s->buf.data(), s->size); + if (isFirstPacket) { + QMimeDatabase db; + QMimeType type = db.mimeTypeForFileNameAndData(url.fileName(), filedata); + mimeType(type.name()); + isFirstPacket = false; + } + data(filedata); + filedata.clear(); + + // increment total bytes read + totalbytesread += s->size; + + processedSize(totalbytesread); + buffer.unpop(); + } + if (future.get() != KJob::NoError) { // check if read had an error + error(future.get(), url.toDisplayString()); + } + + smbc_close(filefd); + data(QByteArray()); + if (totalbytesread != static_cast(st.st_size)) { + qCWarning(KIO_SMB_LOG) << "Got" << totalbytesread << "bytes but expected" << st.st_size; + } + processedSize(static_cast(st.st_size)); + + finished(); +} + +void SMBSlave::open(const QUrl &kurl, QIODevice::OpenMode mode) +{ + int errNum = 0; + qCDebug(KIO_SMB_LOG) << kurl; + + // check (correct) URL + QUrl kvurl = checkURL(kurl); + + // if URL is not valid we have to redirect to correct URL + if (kvurl != kurl) { + redirection(kvurl); + finished(); + return; + } + + if (!m_context.isValid()) { + error(KIO::ERR_ACCESS_DENIED, kurl.toDisplayString()); + return; + } + + // Save the URL as a private member + // FIXME For some reason m_openUrl has be be declared in bottom private + // section of the class SMBSlave declaration instead of the top section + // or else this assignment fails + m_openUrl = kurl; + + // Stat + errNum = cache_stat(m_openUrl, &st); + if (errNum != 0) { + if (errNum == EACCES) + error(KIO::ERR_ACCESS_DENIED, m_openUrl.toDisplayString()); + else + error(KIO::ERR_DOES_NOT_EXIST, m_openUrl.toDisplayString()); + return; + } + if (S_ISDIR(st.st_mode)) { + error(KIO::ERR_IS_DIRECTORY, m_openUrl.toDisplayString()); + return; + } + + // Set the total size + totalSize(st.st_size); + + // Convert permissions + int flags = 0; + if (mode & QIODevice::ReadOnly) { + if (mode & QIODevice::WriteOnly) { + flags = O_RDWR | O_CREAT; + } else { + flags = O_RDONLY; + } + } else if (mode & QIODevice::WriteOnly) { + flags = O_WRONLY | O_CREAT; + } + + if (mode & QIODevice::Append) { + flags |= O_APPEND; + } else if (mode & QIODevice::Truncate) { + flags |= O_TRUNC; + } + + // Open the file + m_openFd = smbc_open(m_openUrl.toSmbcUrl(), flags, 0); + if (m_openFd < 0) { + error(KIO::ERR_CANNOT_OPEN_FOR_READING, m_openUrl.toDisplayString()); + return; + } + + // Determine the mimetype of the file to be retrieved, and emit it. + // This is mandatory in all slaves (for KRun/BrowserRun to work). + // If we're not opening the file ReadOnly or ReadWrite, don't attempt to + // read the file and send the mimetype. + if (mode & QIODevice::ReadOnly) { + ssize_t bytesRequested = 1024; + ssize_t bytesRead = 0; + QVarLengthArray buffer(bytesRequested); + bytesRead = smbc_read(m_openFd, buffer.data(), bytesRequested); + if (bytesRead < 0) { + error(KIO::ERR_CANNOT_READ, m_openUrl.toDisplayString()); + closeWithoutFinish(); + return; + } else { + QByteArray fileData = QByteArray::fromRawData(buffer.data(), bytesRead); + QMimeDatabase db; + QMimeType type = db.mimeTypeForFileNameAndData(m_openUrl.fileName(), fileData); + mimeType(type.name()); + + off_t res = smbc_lseek(m_openFd, 0, SEEK_SET); + if (res == (off_t)-1) { + error(KIO::ERR_CANNOT_SEEK, m_openUrl.path()); + closeWithoutFinish(); + return; + } + } + } + + position(0); + opened(); +} + +void SMBSlave::read(KIO::filesize_t bytesRequested) +{ + Q_ASSERT(m_openFd != -1); + + QVarLengthArray buffer(bytesRequested); + ssize_t bytesRead = 0; + + bytesRead = smbc_read(m_openFd, buffer.data(), bytesRequested); + Q_ASSERT(bytesRead <= static_cast(bytesRequested)); + + if (bytesRead < 0) { + qCDebug(KIO_SMB_LOG) << "Could not read " << m_openUrl; + error(KIO::ERR_CANNOT_READ, m_openUrl.toDisplayString()); + closeWithoutFinish(); + return; + } + + QByteArray fileData = QByteArray::fromRawData(buffer.data(), bytesRead); + data(fileData); +} + +void SMBSlave::write(const QByteArray &fileData) +{ + Q_ASSERT(m_openFd != -1); + + QByteArray buf(fileData); + + ssize_t size = smbc_write(m_openFd, buf.data(), buf.size()); + if (size < 0) { + qCDebug(KIO_SMB_LOG) << "Could not write to " << m_openUrl; + error(KIO::ERR_CANNOT_WRITE, m_openUrl.toDisplayString()); + closeWithoutFinish(); + return; + } + + written(size); +} + +void SMBSlave::seek(KIO::filesize_t offset) +{ + off_t res = smbc_lseek(m_openFd, static_cast(offset), SEEK_SET); + if (res == (off_t)-1) { + error(KIO::ERR_CANNOT_SEEK, m_openUrl.path()); + closeWithoutFinish(); + } else { + qCDebug(KIO_SMB_LOG) << "res" << res; + position(res); + } +} + +void SMBSlave::truncate(KIO::filesize_t length) +{ + off_t res = smbc_ftruncate(m_openFd, static_cast(length)); + if (res < 0) { + error(KIO::ERR_CANNOT_TRUNCATE, m_openUrl.path()); + closeWithoutFinish(); + } else { + qCDebug(KIO_SMB_LOG) << "res" << res; + truncated(length); + } +} + +void SMBSlave::closeWithoutFinish() +{ + smbc_close(m_openFd); +} + +void SMBSlave::close() +{ + closeWithoutFinish(); + finished(); +} + +void SMBSlave::put(const QUrl &kurl, int permissions, KIO::JobFlags flags) +{ + void *buf; + size_t bufsize; + + m_current_url = kurl; + + int filefd; + bool exists; + int errNum = 0; + off_t retValLSeek = 0; + mode_t mode; + QByteArray filedata; + + qCDebug(KIO_SMB_LOG) << kurl; + + errNum = cache_stat(m_current_url, &st); + exists = (errNum == 0); + if (exists && !(flags & KIO::Overwrite) && !(flags & KIO::Resume)) { + if (S_ISDIR(st.st_mode)) { + qCDebug(KIO_SMB_LOG) << kurl << " already isdir !!"; + error(KIO::ERR_DIR_ALREADY_EXIST, m_current_url.toDisplayString()); + } else { + qCDebug(KIO_SMB_LOG) << kurl << " already exist !!"; + error(KIO::ERR_FILE_ALREADY_EXIST, m_current_url.toDisplayString()); + } + return; + } + + if (exists && !(flags & KIO::Resume) && (flags & KIO::Overwrite)) { + qCDebug(KIO_SMB_LOG) << "exists try to remove " << m_current_url.toSmbcUrl(); + // remove(m_current_url.url().toLocal8Bit()); + } + + if (flags & KIO::Resume) { + // append if resuming + qCDebug(KIO_SMB_LOG) << "resume " << m_current_url.toSmbcUrl(); + filefd = smbc_open(m_current_url.toSmbcUrl(), O_RDWR, 0); + if (filefd < 0) { + errNum = errno; + } else { + errNum = 0; + } + + retValLSeek = smbc_lseek(filefd, 0, SEEK_END); + if (retValLSeek == (off_t)-1) { + errNum = errno; + } else { + errNum = 0; + } + } else { + if (permissions != -1) { + mode = permissions | S_IWUSR | S_IRUSR; + } else { + mode = 600; // 0666; + } + + qCDebug(KIO_SMB_LOG) << "NO resume " << m_current_url.toSmbcUrl(); + filefd = smbc_open(m_current_url.toSmbcUrl(), O_CREAT | O_TRUNC | O_WRONLY, mode); + if (filefd < 0) { + errNum = errno; + } else { + errNum = 0; + } + } + + if (filefd < 0) { + if (errNum == EACCES) { + qCDebug(KIO_SMB_LOG) << "error " << kurl << " access denied !!"; + error(KIO::ERR_WRITE_ACCESS_DENIED, m_current_url.toDisplayString()); + } else { + qCDebug(KIO_SMB_LOG) << "error " << kurl << " can not open for writing !!"; + error(KIO::ERR_CANNOT_OPEN_FOR_WRITING, m_current_url.toDisplayString()); + } + return; + } + + // Loop until we got 0 (end of data) + while (true) { + qCDebug(KIO_SMB_LOG) << "request data "; + dataReq(); // Request for data + qCDebug(KIO_SMB_LOG) << "write " << m_current_url.toSmbcUrl(); + + if (readData(filedata) <= 0) { + qCDebug(KIO_SMB_LOG) << "readData <= 0"; + break; + } + qCDebug(KIO_SMB_LOG) << "write " << m_current_url.toSmbcUrl(); + buf = filedata.data(); + bufsize = filedata.size(); + ssize_t size = smbc_write(filefd, buf, bufsize); + if (size < 0) { + qCDebug(KIO_SMB_LOG) << "error " << kurl << "could not write !!"; + error(KIO::ERR_CANNOT_WRITE, m_current_url.toDisplayString()); + return; + } + qCDebug(KIO_SMB_LOG) << "wrote " << size; + } + qCDebug(KIO_SMB_LOG) << "close " << m_current_url.toSmbcUrl(); + + if (smbc_close(filefd) < 0) { + qCDebug(KIO_SMB_LOG) << kurl << "could not write !!"; + error(KIO::ERR_CANNOT_WRITE, m_current_url.toDisplayString()); + return; + } + + // set final permissions, if the file was just created + if (permissions != -1 && !exists) { + // TODO: did the smbc_chmod fail? + // TODO: put in call to chmod when it is working! + // smbc_chmod(url.toSmbcUrl(),permissions); + } +#ifdef HAVE_UTIME_H + // set modification time + const QString mtimeStr = metaData("modified"); + if (!mtimeStr.isEmpty()) { + QDateTime dt = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dt.isValid()) { + if (cache_stat(m_current_url, &st) == 0) { + struct utimbuf utbuf { + }; + utbuf.actime = st.st_atime; // access time, unchanged + utbuf.modtime = dt.toSecsSinceEpoch(); // modification time + smbc_utime(m_current_url.toSmbcUrl(), &utbuf); + } + } + } +#endif + + // We have done our job => finish + finished(); +} diff --git a/smb/kio_smb_mount.cpp b/smb/kio_smb_mount.cpp new file mode 100644 index 0000000..b0caf2a --- /dev/null +++ b/smb/kio_smb_mount.cpp @@ -0,0 +1,153 @@ +/* + SPDX-License-Identifier: LGPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Alexander Neundorf +*/ + +#include "kio_smb.h" + +#include +#include +#include +#include +#include +#include +#include + +void SMBSlave::special(const QByteArray &data) +{ + qCDebug(KIO_SMB_LOG) << "Smb::special()"; + int tmp; + QDataStream stream(data); + stream >> tmp; + // mounting and umounting are both blocking, "guarded" by a SIGALARM in the future + switch (tmp) { + case 1: + case 3: { + QString remotePath; + QString mountPoint; + QString user; + stream >> remotePath >> mountPoint; + + QStringList sl = remotePath.split('/'); + QString share; + QString host; + if (sl.count() >= 2) { + host = sl.at(0).mid(2); + share = sl.at(1); + qCDebug(KIO_SMB_LOG) << "special() host -" << host << "- share -" << share << "-"; + } + + remotePath.replace('\\', '/'); // smbmounterplugin sends \\host/share + + qCDebug(KIO_SMB_LOG) << "mounting: " << remotePath.toLocal8Bit() << " to " << mountPoint.toLocal8Bit(); + + if (tmp == 3) { + if (!QDir().mkpath(mountPoint)) { + error(KIO::ERR_CANNOT_MKDIR, mountPoint); + return; + } + } + + SMBUrl smburl(QUrl("smb:///")); + smburl.setHost(host); + smburl.setPath('/' + share); + + const int passwordError = checkPassword(smburl); + if (passwordError != KJob::NoError && passwordError != KIO::ERR_USER_CANCELED) { + error(passwordError, smburl.toString()); + return; + } + + // using smbmount instead of "mount -t smbfs", because mount does not allow a non-root + // user to do a mount, but a suid smbmnt does allow this + + KProcess proc; + proc.setOutputChannelMode(KProcess::SeparateChannels); + proc << "smbmount"; + + QString options; + + if (smburl.userName().isEmpty()) { + user = "guest"; + options = "guest"; + } else { + options = "username=" + smburl.userName(); + user = smburl.userName(); + + if (!smburl.password().isEmpty()) + options += ",password=" + smburl.password(); + } + + // TODO: check why the control center uses encodings with a blank char, e.g. "cp 1250" + // if ( ! m_default_encoding.isEmpty() ) + // options += ",codepage=" + KShell::quoteArg(m_default_encoding); + + proc << remotePath; + proc << mountPoint; + proc << "-o" << options; + + proc.start(); + if (!proc.waitForFinished()) { + error(KIO::ERR_CANNOT_LAUNCH_PROCESS, "smbmount" + i18n("\nMake sure that the samba package is installed properly on your system.")); + return; + } + + QString mybuf = QString::fromLocal8Bit(proc.readAllStandardOutput()); + QString mystderr = QString::fromLocal8Bit(proc.readAllStandardError()); + + qCDebug(KIO_SMB_LOG) << "mount exit " << proc.exitCode() << "stdout:" << mybuf << "\nstderr:" << mystderr; + + if (proc.exitCode() != 0) { + error(KIO::ERR_CANNOT_MOUNT, i18n("Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n%4", share, host, user, mybuf + '\n' + mystderr)); + return; + } + } break; + case 2: + case 4: { + QString mountPoint; + stream >> mountPoint; + + KProcess proc; + proc.setOutputChannelMode(KProcess::SeparateChannels); + proc << "smbumount"; + proc << mountPoint; + + proc.start(); + if (!proc.waitForFinished()) { + error(KIO::ERR_CANNOT_LAUNCH_PROCESS, "smbumount" + i18n("\nMake sure that the samba package is installed properly on your system.")); + return; + } + + QString mybuf = QString::fromLocal8Bit(proc.readAllStandardOutput()); + QString mystderr = QString::fromLocal8Bit(proc.readAllStandardError()); + + qCDebug(KIO_SMB_LOG) << "smbumount exit " << proc.exitCode() << "stdout:" << mybuf << "\nstderr:" << mystderr; + + if (proc.exitCode() != 0) { + error(KIO::ERR_CANNOT_UNMOUNT, i18n("Unmounting of mountpoint \"%1\" failed.\n%2", mountPoint, mybuf + '\n' + mystderr)); + return; + } + + if (tmp == 4) { + bool ok; + + QDir dir(mountPoint); + dir.cdUp(); + ok = dir.rmdir(mountPoint); + if (ok) { + QString p = dir.path(); + dir.cdUp(); + ok = dir.rmdir(p); + } + + if (!ok) { + error(KIO::ERR_CANNOT_RMDIR, mountPoint); + return; + } + } + } break; + default: + break; + } + finished(); +} diff --git a/smb/main.cpp b/smb/main.cpp new file mode 100644 index 0000000..157f3f9 --- /dev/null +++ b/smb/main.cpp @@ -0,0 +1,25 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#include + +#include "kio_smb.h" + +extern "C" int Q_DECL_EXPORT kdemain(int argc, char **argv) +{ + QCoreApplication app(argc, argv); + if (argc != 4) { + qCDebug(KIO_SMB_LOG) << "Usage: kio_smb protocol domain-socket1 domain-socket2"; + return -1; + } + + SMBSlave slave(argv[2], argv[3]); + slave.dispatchLoop(); + + return 0; +} + diff --git a/smb/smb-network.desktop b/smb/smb-network.desktop new file mode 100644 index 0000000..a8f8c36 --- /dev/null +++ b/smb/smb-network.desktop @@ -0,0 +1,38 @@ +[Desktop Entry] +Icon=network-workgroup +Name=Shared Folders (SMB) +Name[ca]=Carpetes compartides (SMB) +Name[ca@valencia]=Carpetes compartides (SMB) +Name[cs]=Sdílené složky (SMB) +Name[da]=Delte mapper (SMB) +Name[de]=Freigegebene Ordner (SMB) +Name[el]=Κοινόχρηστοι φάκελοι (SMB) +Name[en_GB]=Shared Folders (SMB) +Name[es]=Carpetas compartidas (SMB) +Name[et]=Jagatud kataloogid (SMB) +Name[eu]=Karpeta partekatuak (SMB) +Name[fi]=Jaetut kansiot (SMB) +Name[fr]=Dossiers partagés (SMB) +Name[gl]=Cartafoles compartidos (SMB) +Name[ia]=Dossieres compartite (SMB) +Name[id]=Folder-folder Yang Dibagikan (SMB) +Name[it]=Cartelle condivise (SMB) +Name[ja]=共有フォルダ (SMB) +Name[ko]=공유 폴더(SMB) +Name[lt]=Bendrinami aplankai (SMB) +Name[nl]=Gedeelde mappen (SMB) +Name[nn]=Delte mapper (SMB) +Name[pl]=Katalogi współdzielone (SMB) +Name[pt]=Pastas Partilhadas (SMB) +Name[pt_BR]=Pastas compartilhadas (SMB) +Name[ru]=Общие папки (SMB) +Name[sk]=Zdieľané priečinky (SMB) +Name[sl]=Deljene mape (SMB) +Name[sv]=Delade kataloger (SMB) +Name[uk]=Спільні теки (SMB) +Name[x-test]=xxShared Folders (SMB)xx +Name[zh_CN]=共享文件夹 (SMB) +Name[zh_TW]=分享的資料夾 (SMB) +# Open=false +Type=Link +URL=smb:/ diff --git a/smb/smb.json b/smb/smb.json new file mode 100644 index 0000000..d66629b --- /dev/null +++ b/smb/smb.json @@ -0,0 +1,64 @@ +{ + "KDE-KIO-Protocols": { + "smb": { + "Class": ":internet", + "Icon": "network-workgroup", + "X-DocPath": "kioslave5/smb/index.html", + "copyFromFile": true, + "copyToFile": true, + "deleting": true, + "exec": "kf5/kio/smb", + "input": "none", + "listing": [ + "Name", + "Type", + "Size", + "Date", + "Access", + "Owner", + "Group" + ], + "linking": false, + "makedir": true, + "maxInstances": 20, + "maxInstancesPerHost": 5, + "moving": true, + "output": "filesystem", + "protocol": "smb", + "opening": true, + "truncating": true, + "reading": true, + "writing": true + }, + "cifs": { + "Class": ":internet", + "Icon": "network-workgroup", + "X-DocPath": "kioslave5/smb/index.html", + "copyFromFile": true, + "copyToFile": true, + "deleting": true, + "exec": "kf5/kio/smb", + "input": "none", + "listing": [ + "Name", + "Type", + "Size", + "Date", + "Access", + "Owner", + "Group" + ], + "linking": false, + "makedir": true, + "maxInstances": 20, + "maxInstancesPerHost": 5, + "moving": true, + "output": "filesystem", + "protocol": "cifs", + "opening": true, + "truncating": true, + "reading": true, + "writing": true + } + } +} diff --git a/smb/smbauthenticator.cpp b/smb/smbauthenticator.cpp new file mode 100644 index 0000000..4386e82 --- /dev/null +++ b/smb/smbauthenticator.cpp @@ -0,0 +1,111 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#include "smbauthenticator.h" + +#include +#include +#include +#include +#include + +#include "smburl.h" +#include "smb-logsettings.h" + +SMBAuthenticator::SMBAuthenticator(SMBAbstractFrontend &frontend) + : m_frontend(frontend) +{ +} + +void SMBAuthenticator::loadConfiguration() +{ + KConfig cfg("kioslaverc", KConfig::NoGlobals); + const KConfigGroup group = cfg.group("Browser Settings/SMBro"); + m_defaultUser = group.readEntry("User"); + // m_default_workgroup=group.readEntry("Workgroup"); + // m_showHiddenShares=group.readEntry("ShowHiddenShares", QVariant(false)).toBool(); + + QString m_encoding = QTextCodec::codecForLocale()->name(); + m_defaultEncoding = group.readEntry("Encoding", m_encoding.toLower()); + + // unscramble, taken from Nicola Brodu's smb ioslave + // not really secure, but better than storing the plain password + QString scrambled = group.readEntry("Password"); + m_defaultPassword = ""; + for (int i = 0; i < scrambled.length() / 3; i++) { + QChar qc1 = scrambled[i * 3]; + QChar qc2 = scrambled[i * 3 + 1]; + QChar qc3 = scrambled[i * 3 + 2]; + unsigned int a1 = qc1.toLatin1() - '0'; + unsigned int a2 = qc2.toLatin1() - 'A'; + unsigned int a3 = qc3.toLatin1() - '0'; + unsigned int num = ((a1 & 0x3F) << 10) | ((a2 & 0x1F) << 5) | (a3 & 0x1F); + m_defaultPassword[i] = QChar((uchar)((num - 17) ^ 173)); // restore + } +} + +QString SMBAuthenticator::defaultWorkgroup() const +{ + return m_defaultWorkgroup; +} + +void SMBAuthenticator::setDefaultWorkgroup(const QString &workGroup) +{ + m_defaultWorkgroup = workGroup; +} + +void SMBAuthenticator::auth(const char *server, const char *share, char *workgroup, int wgmaxlen, char *username, int unmaxlen, char *password, int pwmaxlen) +{ + qCDebug(KIO_SMB_LOG) << "auth_smbc_get_dat: set user=" << username << ", workgroup=" << workgroup + << " server=" << server << ", share=" << share; + + QString s_server = QString::fromUtf8(server); + QString s_share = QString::fromUtf8(share); + workgroup[wgmaxlen - 1] = 0; + QString s_workgroup = QString::fromUtf8(workgroup); + username[unmaxlen - 1] = 0; + QString s_username = QString::fromUtf8(username); + password[pwmaxlen - 1] = 0; + QString s_password = QString::fromUtf8(password); + + KIO::AuthInfo info; + info.url = QUrl("smb:///"); + info.url.setHost(s_server); + info.url.setPath('/' + s_share); + + // check this to see if we "really" need to authenticate... + if (SMBUrl(info.url).getType() == SMBURLTYPE_ENTIRE_NETWORK) { + qCDebug(KIO_SMB_LOG) << "we don't really need to authenticate for this top level url, returning"; + return; + } + + info.username = s_username; + info.password = s_password; + info.verifyPath = true; + + qCDebug(KIO_SMB_LOG) << "libsmb-auth-callback URL:" << info.url; + + // NOTE: By suggestion from upstream we do not default to any amount of + // anonymous/guest logins as it's not safe to do in many environments: + // https://bugzilla.samba.org/show_bug.cgi?id=14326 + + if (m_frontend.checkCachedAuthentication(info)) { + qCDebug(KIO_SMB_LOG) << "got password through cache" << info.username << info.password; + } else if (!m_defaultUser.isEmpty()) { + // user defined a default username/password in kcontrol; try this + info.username = m_defaultUser; + info.password = m_defaultPassword; + qCDebug(KIO_SMB_LOG) << "trying defaults for user" << info.username; + } + + // Make sure it'll be safe to cast to size_t (unsigned) + Q_ASSERT(unmaxlen > 0); + Q_ASSERT(pwmaxlen > 0); + + strncpy(username, info.username.toUtf8(), static_cast(unmaxlen - 1)); + strncpy(password, info.password.toUtf8(), static_cast(pwmaxlen - 1)); +} diff --git a/smb/smbauthenticator.h b/smb/smbauthenticator.h new file mode 100644 index 0000000..6a9ed0b --- /dev/null +++ b/smb/smbauthenticator.h @@ -0,0 +1,51 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Harald Sitter +*/ + +#pragma once + +#include + +namespace KIO { +class AuthInfo; +} + +// Abstracts SlaveBase API so Authenticator may be used without +// a SlaveBase for the KDirNotify implementation) +class SMBAbstractFrontend +{ +public: + virtual ~SMBAbstractFrontend() = default; + virtual bool checkCachedAuthentication(KIO::AuthInfo &info) = 0; +}; + +// Base class for SMBC management + basic authentication +class SMBAuthenticator +{ +public: + SMBAuthenticator(SMBAbstractFrontend &frontend); + + QString defaultWorkgroup() const; + void setDefaultWorkgroup(const QString &workGroup); + + // (Re)loads default values from configuration + void loadConfiguration(); + + // Callback for authentication requests. + void auth(const char *server, const char *share, + char *workgroup, int wgmaxlen, + char *username, int unmaxlen, + char *password, int pwmaxlen); + +private: + // Frontend for authentication requests. + SMBAbstractFrontend &m_frontend; + + QString m_defaultUser; + QString m_defaultPassword; + QString m_defaultEncoding; + QString m_defaultWorkgroup = QStringLiteral("WORKGROUP"); // overwritten with value from smbc + + Q_DISABLE_COPY(SMBAuthenticator) +}; diff --git a/smb/smbcdiscoverer.cpp b/smb/smbcdiscoverer.cpp new file mode 100644 index 0000000..f40e977 --- /dev/null +++ b/smb/smbcdiscoverer.cpp @@ -0,0 +1,301 @@ +/* + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2020 Harald Sitter +*/ + +#include +#include +#include + +#include "smbcdiscoverer.h" + +static QEvent::Type LoopEvent = QEvent::User; + +class SMBCServerDiscovery : public SMBCDiscovery +{ +public: + SMBCServerDiscovery(const UDSEntry &entry) + : SMBCDiscovery(entry) + { + m_entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + m_entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)); + m_entry.fastInsert(KIO::UDSEntry::UDS_URL, url()); + m_entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("application/x-smb-server")); + m_entry.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, "network-server"); + } + + QString url() + { + QUrl u("smb://"); + u.setHost(udsName()); + return u.url(); + } +}; + +class SMBCShareDiscovery : public SMBCDiscovery +{ +public: + SMBCShareDiscovery(const UDSEntry &entry) + : SMBCDiscovery(entry) + { + m_entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + m_entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)); + } +}; + +class SMBCWorkgroupDiscovery : public SMBCDiscovery +{ +public: + SMBCWorkgroupDiscovery(const UDSEntry &entry) + : SMBCDiscovery(entry) + { + m_entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + m_entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH)); + m_entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("application/x-smb-workgroup")); + m_entry.fastInsert(KIO::UDSEntry::UDS_URL, url()); + } + + QString url() + { + QUrl u("smb://"); + u.setHost(udsName()); + if (!u.isValid()) { + // In the event that the workgroup contains bad characters, put it in a query instead. + // This is transparently handled by SMBUrl when we get this as input again. + // Also see documentation there. + // https://bugs.kde.org/show_bug.cgi?id=204423 + u.setHost(QString()); + QUrlQuery q; + q.addQueryItem("kio-workgroup", udsName()); + u.setQuery(q); + } + return u.url(); + } +}; + +SMBCDiscovery::SMBCDiscovery(const UDSEntry &entry) + : m_entry(entry) + // cache the name, it may get accessed more than once + , m_name(entry.stringValue(KIO::UDSEntry::UDS_NAME)) +{ +} + +QString SMBCDiscovery::udsName() const +{ + return m_name; +} + +KIO::UDSEntry SMBCDiscovery::toEntry() const +{ + return m_entry; +} + +SMBCDiscoverer::SMBCDiscoverer(const SMBUrl &url, QEventLoop *loop, SMBSlave *slave) + : m_url(url) + , m_loop(loop) + , m_slave(slave) +{ +} + +SMBCDiscoverer::~SMBCDiscoverer() +{ + if (m_dirFd > 0) { + smbc_closedir(m_dirFd); + } +} + +void SMBCDiscoverer::start() +{ + queue(); +} + + +bool SMBCDiscoverer::discoverNextFileInfo() +{ +#ifdef HAVE_READDIRPLUS2 + // Readdirplus2 dir/file listing. Becomes noop when at end of data associated with dirfd. + // If readdirplus2 isn't available the regular dirent listing is done. + // readdirplus2 improves performance by giving us a stat without separate call (Samba>=4.12) + struct stat st; + const struct libsmb_file_info *fileInfo = smbc_readdirplus2(m_dirFd, &st); + if (fileInfo) { + const QString name = QString::fromUtf8(fileInfo->name); + qCDebug(KIO_SMB_LOG) << "fileInfo" << "name:" << name; + if (name == ".") { + return true; + } else if (name == "..") { + m_dirWasRoot = false; + return true; + } + UDSEntry entry; + entry.reserve(5); // Minimal size. stat will set at least 4 fields. + entry.fastInsert(KIO::UDSEntry::UDS_NAME, name); + + m_url.addPath(name); + m_slave->statToUDSEntry(m_url, st, entry); // won't produce useful error + emit newDiscovery(Discovery::Ptr(new SMBCDiscovery(entry))); + m_url.cdUp(); + return true; + } +#endif // HAVE_READDIRPLUS2 + return false; +} + +void SMBCDiscoverer::discoverNext() +{ + // Poor man's concurrency. smbc isn't thread safe so we'd hold up other + // discoverers until we are done. While that will likely happen anyway + // because smbc_opendir (usually?) blocks until it actually has all + // the data to loop on, meaning the actual looping after open is fairly + // fast. Even so, there's benefit in letting other discoverers do + // their work in the meantime because they may do more atomic + // requests that are async and can take a while due to network latency. + // To get somewhat reasonable behavior we simulate an async smbc discovery + // by posting loop events to the eventloop and each loop run we process + // a single dirent. + // This effectively unblocks the eventloop between iterations. + // Once we are out of entries this discoverer is considered finished. + + // Always queue a new iteration when returning so we don't forget to. + auto autoQueue = qScopeGuard([this] { + queue(); + }); + + if (m_dirFd == -1) { + init(); + Q_ASSERT(m_dirFd || m_finished); + return; + } + + if (discoverNextFileInfo()) { + return; + } + + qCDebug(KIO_SMB_LOG) << "smbc_readdir "; + struct smbc_dirent *dirp = smbc_readdir(m_dirFd); + if (dirp == nullptr) { + qCDebug(KIO_SMB_LOG) << "done with smbc"; + stop(); + return; + } + + const QString name = QString::fromUtf8(dirp->name); + // We cannot trust dirp->commentlen has it might be with or without the NUL character + // See KDE bug #111430 and Samba bug #3030 + const QString comment = QString::fromUtf8(dirp->comment); + + qCDebug(KIO_SMB_LOG) << "dirent " + << "name:" << name + << "comment:" << comment + << "type:" << dirp->smbc_type; + + UDSEntry entry; + // Minimal potential size. The actual size depends on this function, + // possibly the stat function, and lastly the Discovery objects themselves. + // The smallest will be a ShareDiscovery with 5 fields. + entry.reserve(5); + entry.fastInsert(KIO::UDSEntry::UDS_NAME, name); + entry.fastInsert(KIO::UDSEntry::UDS_COMMENT, comment); + // Ensure system shares are marked hidden. + if (name.endsWith(QLatin1Char('$'))) { + entry.fastInsert(KIO::UDSEntry::UDS_HIDDEN, 1); + } + +#if !defined(HAVE_READDIRPLUS2) + // . and .. are always of the dir type so they are of no consequence outside + // actual dir listing and that'd be done by readdirplus2 already + if (name == ".") { + // Skip the "." entry + // Mind the way m_currentUrl is handled in the loop + } else if (name == "..") { + m_dirWasRoot = false; + } else if (dirp->smbc_type == SMBC_FILE || dirp->smbc_type == SMBC_DIR) { + // Set stat information + m_url.addPath(name); + const int statErr = m_slave->browse_stat_path(m_url, entry); + if (statErr != 0) { + // The entry can disappear in the time span between + // listing and the stat call. There's nothing we or the user + // can do about it. Log the incident and move on with listing. + qCWarning(KIO_SMB_LOG) << "Failed to stat" << m_url << statErr; + } else { + emit newDiscovery(Discovery::Ptr(new SMBCDiscovery(entry))); + } + m_url.cdUp(); + } +#endif // HAVE_READDIRPLUS2 + + if (dirp->smbc_type == SMBC_SERVER) { + emit newDiscovery(Discovery::Ptr(new SMBCServerDiscovery(entry))); + } else if (dirp->smbc_type == SMBC_FILE_SHARE) { + emit newDiscovery(Discovery::Ptr(new SMBCShareDiscovery(entry))); + } else if (dirp->smbc_type == SMBC_WORKGROUP) { + emit newDiscovery(Discovery::Ptr(new SMBCWorkgroupDiscovery(entry))); + } else { + qCDebug(KIO_SMB_LOG) << "SMBC_UNKNOWN :" << name; + } +} + +void SMBCDiscoverer::customEvent(QEvent *event) +{ + if (event->type() == LoopEvent) { + if (!m_finished) { + discoverNext(); + } + return; + } + QObject::customEvent(event); +} + +void SMBCDiscoverer::stop() +{ + m_finished = true; + emit finished(); +} + +bool SMBCDiscoverer::isFinished() const +{ + return m_finished; +} + +bool SMBCDiscoverer::dirWasRoot() const +{ + return m_dirWasRoot; +} + +int SMBCDiscoverer::error() const +{ + return m_error; +} + +void SMBCDiscoverer::init() +{ + Q_ASSERT(m_dirFd < 0); + + m_dirFd = smbc_opendir(m_url.toSmbcUrl()); + if (m_dirFd >= 0) { + m_error = 0; + } else { + m_error = errno; + stop(); + } + + qCDebug(KIO_SMB_LOG) << "open" << m_url.toSmbcUrl() + << "url-type:" << m_url.getType() + << "dirfd:" << m_dirFd + << "errNum:" << m_error; + + return; +} + +void SMBCDiscoverer::queue() +{ + if (m_finished) { + return; + } + + // Queue low priority events. For server discovery (that is: other discoverers run as well) + // we want the modern discoverers to be peferred. For other discoveries only + // SMBC is running on the loop and so the priority has no negative impact. + QCoreApplication::postEvent(this, new QEvent(LoopEvent), Qt::LowEventPriority); +} diff --git a/smb/smbcdiscoverer.h b/smb/smbcdiscoverer.h new file mode 100644 index 0000000..b0b3de8 --- /dev/null +++ b/smb/smbcdiscoverer.h @@ -0,0 +1,82 @@ +/* + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +*/ + +#ifndef SMBCDISCOVERER_H +#define SMBCDISCOVERER_H + +#include + +#include "discovery.h" +#include "kio_smb.h" + +class QEventLoop; + +class SMBCDiscovery : public Discovery +{ +public: + SMBCDiscovery(const UDSEntry &entry); + QString udsName() const override; + KIO::UDSEntry toEntry() const override; + +protected: + UDSEntry m_entry; + +private: + const QString m_name; +}; + +class SMBCDiscoverer : public QObject, public Discoverer +{ + Q_OBJECT +public: + SMBCDiscoverer(const SMBUrl &url, QEventLoop *discoverNext, SMBSlave *slave); + virtual ~SMBCDiscoverer(); + + void start() override; + bool isFinished() const override; + + bool dirWasRoot() const; + int error() const; + +signals: + void newDiscovery(Discovery::Ptr discovery) override; + void finished() override; + +private slots: + /** + * Process one dirent, queue a new loop event and return. + * @see customEvent + * @see queue + */ + void discoverNext(); + +protected: + void customEvent(QEvent *event) override; + +private: + void stop() override; + + /** + * readdirplus2 based file_info looping + * @returns whether a file info was looped on + */ + bool discoverNextFileInfo(); + + /// init discoverer (calls opendir) + void init(); + + /// queue new loop run + inline void queue(); + + SMBUrl m_url; + QEventLoop *m_loop = nullptr; + SMBSlave *m_slave = nullptr; + bool m_finished = false; + int m_error = 0; + bool m_dirWasRoot = true; + int m_dirFd = -1; +}; + +#endif // SMBCDISCOVERER_H diff --git a/smb/smbcontext.cpp b/smb/smbcontext.cpp new file mode 100644 index 0000000..6a5adbc --- /dev/null +++ b/smb/smbcontext.cpp @@ -0,0 +1,98 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#include "smbcontext.h" + +#include +#include + +#include "smbauthenticator.h" +#include "smb-logsettings.h" + +SMBContext::SMBContext(SMBAuthenticator *authenticator) + : m_context(smbc_new_context(), &freeContext) + , m_authenticator(authenticator) +{ + Q_ASSERT(m_context); + if (!m_context) { + return; + } + + authenticator->loadConfiguration(); + + qCDebug(KIO_SMB_LOG) << "auth_initialize_smbc"; + + KConfig cfg("kioslaverc", KConfig::SimpleConfig); + int debugLevel = cfg.group("SMB").readEntry("DebugLevel", 0); + qCDebug(KIO_SMB_LOG) << "Setting debug level to:" << debugLevel; + +#ifdef DEPRECATED_SMBC_INTERFACE // defined by libsmbclient.h of Samba 3.2 + smbc_setOptionUserData(m_context.get(), this); + smbc_setFunctionAuthDataWithContext(m_context.get(), auth_cb); + + /* New libsmbclient interface of Samba 3.2 */ + smbc_setDebug(m_context.get(), debugLevel); + + /* Enable Kerberos support */ + smbc_setOptionUseKerberos(m_context.get(), 1); + smbc_setOptionFallbackAfterKerberos(m_context.get(), 1); +#else + smbc_option_set(m_context.get(), "user_data", this); + m_context->callbacks.auth_fn = NULL; + smbc_option_set(m_context.get(), "auth_function", (void *)auth_cb); + + m_context->debug = debug_level; + +#if defined(SMB_CTX_FLAG_USE_KERBEROS) && defined(SMB_CTX_FLAG_FALLBACK_AFTER_KERBEROS) + m_context->flags |= SMB_CTX_FLAG_USE_KERBEROS | SMB_CTX_FLAG_FALLBACK_AFTER_KERBEROS; +#endif +#endif /* DEPRECATED_SMBC_INTERFACE */ + + if (!smbc_init_context(m_context.get())) { + m_context.reset(); + return; + } + + smbc_set_context(m_context.get()); + + // TODO: refactor; checkPassword should query this on + // demand to not run into situations where we may have cached + // the workgroup early on and it changed since. Needs context + // being held in the slave though, which opens us up to nullptr + // problems should checkPassword be called without init first. + authenticator->setDefaultWorkgroup(smbc_getWorkgroup(*this)); + + return; +} + +bool SMBContext::isValid() const +{ + return smbcctx() && authenticator(); +} + +void SMBContext::auth_cb(SMBCCTX *context, const char *server, const char *share, char *workgroup, int wgmaxlen, char *username, int unmaxlen, char *password, int pwmaxlen) +{ + // Unfortunately because the callback API doesn't support callback specific user_data we need + // to route all auths through our context object otherwise the authenticator would have + // to twiddle the global context user_data and that seems much worse :| + if (context != nullptr) { +#ifdef DEPRECATED_SMBC_INTERFACE + auto *that = static_cast(smbc_getOptionUserData(context)); +#else + auto *that = static_cast(smbc_option_get(context, "user_data")); +#endif + that->m_authenticator->auth(server, share, + workgroup,wgmaxlen, + username, unmaxlen, + password, pwmaxlen); + } +} + +void SMBContext::freeContext(SMBCCTX *ptr) +{ + smbc_free_context(ptr, 1); +} diff --git a/smb/smbcontext.h b/smb/smbcontext.h new file mode 100644 index 0000000..22f0c2c --- /dev/null +++ b/smb/smbcontext.h @@ -0,0 +1,52 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2020 Harald Sitter +*/ + +#pragma once + +extern "C" { +#include +} + +#include + +class SMBAuthenticator; + +// Encapsulates an SMBC context +class SMBContext +{ +public: + SMBContext(SMBAuthenticator *authenticator); + + bool isValid() const; + + SMBCCTX *smbcctx() const + { + return m_context.get(); + } + + operator SMBCCTX *() const + { + return smbcctx(); + } + + // Authenticator associated with this context. + // TODO: getter only used in checkpassword, could be refactored away maybe + SMBAuthenticator *authenticator() const + { + return m_authenticator.get(); + } + +private: + static void auth_cb(SMBCCTX *context, + const char *server,const char *share, + char *workgroup, int wgmaxlen, + char *username, int unmaxlen, + char *password, int pwmaxlen); + + static void freeContext(SMBCCTX *ptr); + + std::unique_ptr m_context; + std::unique_ptr m_authenticator; +}; diff --git a/smb/smburl.cpp b/smb/smburl.cpp new file mode 100644 index 0000000..313744e --- /dev/null +++ b/smb/smburl.cpp @@ -0,0 +1,189 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems, Inc. + SPDX-FileCopyrightText: 2020 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#include "smburl.h" +#include "smb-logsettings.h" + +#include +#include +#include +#include +#include + +SMBUrl::SMBUrl(const QUrl &kurl) + : QUrl(kurl) +{ + // We treat cifs as an alias but need to translate it to smb. + // https://bugs.kde.org/show_bug.cgi?id=327295 + // It's not IANA registered and also libsmbc internally expects + // smb URIs so we do very broadly coerce cifs to smb. + // Also see SMBSlave::checkURL. + if (scheme() == "cifs") { + setScheme("smb"); + } + updateCache(); +} + +SMBUrl::SMBUrl() = default; +SMBUrl::SMBUrl(const SMBUrl &other) = default; +SMBUrl::~SMBUrl() = default; +SMBUrl &SMBUrl::operator=(const SMBUrl &) = default; + +void SMBUrl::addPath(const QString &filedir) +{ + if (path().length() > 0 && path().at(path().length() - 1) != QLatin1Char('/')) { + QUrl::setPath(path() + QLatin1Char('/') + filedir); + } else { + QUrl::setPath(path() + filedir); + } + updateCache(); +} + +void SMBUrl::cdUp() +{ + setUrl(KIO::upUrl(*this).url()); + updateCache(); +} + +void SMBUrl::updateCache() +{ + QUrl::setPath(QDir::cleanPath(path())); + + // SMB URLs are UTF-8 encoded + qCDebug(KIO_SMB_LOG) << "updateCache " << QUrl::path(); + + QUrl sambaUrl(*this); + + const QHostAddress address(sambaUrl.host()); + switch (address.protocol()) { + case QAbstractSocket::IPv6Protocol: { + // Convert to Windows IPv6 literal to bypass limitations in samba. + // https://bugzilla.samba.org/show_bug.cgi?id=14297 + // https://docs.microsoft.com/en-us/windows/win32/api/winnetwk/nf-winnetwk-wnetaddconnection2a + // https://devblogs.microsoft.com/oldnewthing/20100915-00/?p=12863 + // https://www.samba.org/~idra/code/nss-ipv6literal/README.html + // https://ipv6-literal.com + QString literal = address.toString(); + literal.replace(':', '-'); // address + literal.replace('%', 's'); // scope + if (literal.front() == '-') { + // Special prefix for [::f] so it doesn't start with a dash. + literal.prepend('0'); + } + if (literal.back() == '-') { + // Special suffix, also cannot end with a dash. + literal.append('0'); + } + literal += ".ipv6-literal.net"; // reserved host host + qCDebug(KIO_SMB_LOG) << "converting IPv6 to literal " << host() << literal; + sambaUrl.setHost(literal); + break; + } + case QAbstractSocket::IPv4Protocol: + case QAbstractSocket::AnyIPProtocol: + case QAbstractSocket::UnknownNetworkLayerProtocol: + break; + } + + // NetBios workgroup names may contain characters that QUrl will not + // allow in a host. Yet the SMB URI requires us to have the workgroup + // in the host field when browsing a workgroup. + // As a hacky workaround we'll not set a host but use a query param + // when encountering a workgroup that causes QUrl to error out. + // For libsmbc we then need to translate the query back to SMB URI. + // Since this is super daft string construction it will doubltlessly + // be imperfect and so we do still prefer deferring the string + // construction to QUrl whenever possible. + // https://support.microsoft.com/en-gb/help/909264/naming-conventions-in-active-directory-for-computers-domains-sites-and + // https://bugs.kde.org/show_bug.cgi?id=204423 + // + // Should we ever stop supporting workgroup browsing this entire + // hack can be removed. + QUrlQuery query(sambaUrl); + const QString workgroup = query.queryItemValue("kio-workgroup"); + if (workgroup.isEmpty()) { + // If we don't have a hack to apply we can simply defer to QUrl + if (sambaUrl.url() == "smb:/") { + m_surl = "smb://"; + } else { + m_surl = sambaUrl.toString(QUrl::PrettyDecoded).toUtf8(); + } + } else { + // If we have a workgroup hack to apply we need to manually construct + // the stringy URI. + query.removeQueryItem("kio-workgroup"); + sambaUrl.setQuery(query); + + QString url; + url = "smb://"; + if (!sambaUrl.userInfo().isEmpty()) { + url += sambaUrl.userInfo() + "@"; + } + url += workgroup; + // Workgroups can have ports per the IANA definition of smb. + if (sambaUrl.port() != -1) { + url += ':' + QString::number(sambaUrl.port()); + } + + // Make sure to only use clear paths. libsmbc is allergic to excess slashes. + QString path('/'); + if (!sambaUrl.host().isEmpty()) { + path += sambaUrl.host(); + } + if (!sambaUrl.path().isEmpty()) { + path += sambaUrl.path(); + } + url += QDir::cleanPath(path); + + if (!sambaUrl.query().isEmpty()) { + url += '?' + sambaUrl.query(); + } + if (!sambaUrl.fragment().isEmpty()) { + url += '#' + sambaUrl.fragment(); + } + m_surl = url.toUtf8(); + } + + m_type = SMBURLTYPE_UNKNOWN; + // update m_type + (void)getType(); +} + +SMBUrlType SMBUrl::getType() const +{ + if (m_type != SMBURLTYPE_UNKNOWN) + return m_type; + + if (scheme() != "smb") { + m_type = SMBURLTYPE_UNKNOWN; + return m_type; + } + + if (path().isEmpty() || path(QUrl::FullyDecoded) == "/") { + if (host().isEmpty() && !query().contains("kio-workgroup")) + m_type = SMBURLTYPE_ENTIRE_NETWORK; + else + m_type = SMBURLTYPE_WORKGROUP_OR_SERVER; + return m_type; + } + + // Check for the path if we get this far + m_type = SMBURLTYPE_SHARE_OR_PATH; + + return m_type; +} + +SMBUrl SMBUrl::partUrl() const +{ + if (m_type == SMBURLTYPE_SHARE_OR_PATH && !fileName().isEmpty()) { + SMBUrl url(*this); + url.setPath(path() + QLatin1String(".part")); + return url; + } + + return SMBUrl(); +} diff --git a/smb/smburl.h b/smb/smburl.h new file mode 100644 index 0000000..6f64ac9 --- /dev/null +++ b/smb/smburl.h @@ -0,0 +1,108 @@ +///////////////////////////////////////////////////////////////////////////// +// +// Project: SMB kioslave for KDE2 +// +// File: smburl.h +// +// Abstract: Utility classes used by SMBSlave +// +// Author(s): Matthew Peterson +// Frank Schwanz +//--------------------------------------------------------------------------- +// +// Copyright (c) 2000 Caldera Systems, Inc. +// +// 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.1 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 Lesser General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; see the file COPYING. If not, please obtain +// a copy from https://www.gnu.org/copyleft/gpl.html +// +///////////////////////////////////////////////////////////////////////////// + +#ifndef KIO_SMB_INTERNAL_H_INCLUDED +#define KIO_SMB_INTERNAL_H_INCLUDED + +#include +#include + +/** + * Types of a SMBURL : + * SMBURLTYPE_UNKNOWN - Type could not be determined. Bad SMB Url. + * SMBURLTYPE_ENTIRE_NETWORK - "smb:/" is entire network + * SMBURLTYPE_WORKGROUP_OR_SERVER - "smb:/mygroup" or "smb:/myserver" + * URLTYPE_SHARE_OR_PATH - "smb:/mygroupe/mymachine/myshare/mydir" + */ +enum SMBUrlType { + SMBURLTYPE_UNKNOWN = 0, SMBURLTYPE_ENTIRE_NETWORK = 1, + SMBURLTYPE_WORKGROUP_OR_SERVER = 2, SMBURLTYPE_SHARE_OR_PATH = 3 +}; + +/** + * Class to handle URL's + * it can convert QUrl to smbUrl + * and Handle UserInfo + * it also check the correctness of the URL + */ +class SMBUrl : public QUrl +{ +public: + SMBUrl(); + SMBUrl(const SMBUrl &); + SMBUrl(const QUrl &kurl); + ~SMBUrl(); + + SMBUrl &operator=(const SMBUrl &); + + /** + * Appends the specified file and dir to this SMBUrl + * "smb://server/share" --> "smb://server/share/filedir" + */ + void addPath(const QString &filedir); + + void cdUp(); + + /** + * Returns the type of this SMBUrl: + * SMBURLTYPE_UNKNOWN - Type could not be determined. Bad SMB Url. + * SMBURLTYPE_ENTIRE_NETWORK - "smb:/" is entire network + * SMBURLTYPE_WORKGROUP_OR_SERVER - "smb:/mygroup" or "smb:/myserver" + * URLTYPE_SHARE_OR_PATH - "smb:/mygroupe/mymachine/myshare/mydir" + */ + SMBUrlType getType() const; + + void setPass(const QString &_txt) { QUrl::setPassword(_txt); updateCache(); } + void setUser(const QString &_txt) { QUrl::setUserName(_txt); updateCache(); } + void setHost(const QString &_txt) { QUrl::setHost(_txt); updateCache(); } + void setPath(const QString &_txt) { QUrl::setPath(_txt); updateCache(); } + + /** + * Return a URL that is suitable for libsmbclient + */ + QByteArray toSmbcUrl() const { return m_surl; } + + /** + * Returns the partial URL. + */ + SMBUrl partUrl() const; + +private: + void updateCache(); + QByteArray m_surl; + + /** + * Type of URL + * @see _SMBUrlType + */ + mutable SMBUrlType m_type = SMBURLTYPE_UNKNOWN; +}; + +#endif diff --git a/smb/transfer.cpp b/smb/transfer.cpp new file mode 100644 index 0000000..52c6c44 --- /dev/null +++ b/smb/transfer.cpp @@ -0,0 +1,105 @@ +/* + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2020 Harald Sitter +*/ + +#include "transfer.h" + +#include + +TransferSegment::TransferSegment(const off_t fileSize) + : buf(segmentSizeForFileSize(fileSize)) +{ +} + +off_t TransferSegment::segmentSizeForFileSize(const off_t fileSize_) +{ + const off_t fileSize = qMax(0, fileSize_); + + // read() internally splits our read requests into multiple server + // requests and then assembles the responses into our buffer. + // The larger the chunks we request the better the performance. + // At the same time we'll want a semblence of progress reporting + // and also not eat too much RAM. It's a balancing act :| + off_t segmentSize = c_minSegmentSize; + // The segment size is largely arbitrary and sacrifices better throughput for + // greater memory use. + // This only goes up to a maxiumum because bigger transfer blobs directly + // translate to more RAM use. Mind that the effective RAM use will + // be (segmentSize * (segments + 1)). The +1 is because smbc internally will also + // allocate up to a full segment for one read() call. + // + // Unfortunately we have no way of knowing what size smbc will use for the + // network requests, so we can't use a multiple of that. Which means we'll + // almost never reach best performance. + // + // TODO: perhaps it would actually make sense to read at a multiple of + // the target drive's block size? + const off_t idealSegmentSize = qMin(fileSize / 50, c_maxSegmentSize); + segmentSize = qMax(segmentSize, idealSegmentSize); + // If the segment size is larger than the file size it appears we can + // actually degrade performance, so pick the smaller of the two. + if (fileSize != 0) { + segmentSize = qMin(segmentSize, fileSize); + } + return segmentSize; +} + +TransferRingBuffer::TransferRingBuffer(const off_t fileSize) +{ + for (size_t i = 0; i < m_capacity; ++i) { + m_buffer[i] = std::unique_ptr(new TransferSegment(fileSize)); + } +} + +TransferSegment *TransferRingBuffer::pop() +{ + std::unique_lock lock(m_mutex); + + while (head == tail) { + if (!m_done) { + m_cond.wait(lock); + } else { + return nullptr; + } + } + + auto segment = m_buffer[tail].get(); + m_cond.notify_all(); + return segment; +} + +void TransferRingBuffer::unpop() +{ + std::unique_lock lock(m_mutex); + tail = (tail + 1) % m_capacity; + m_cond.notify_all(); +} + +TransferSegment *TransferRingBuffer::nextFree() +{ + // This does not require synchronization. As soon + // as we pushed the last item we gained exclusive lock + // on the new item. + m_cond.notify_all(); + return m_buffer[head].get(); +} + +void TransferRingBuffer::push() +{ + const auto newHead = (head + 1) % m_capacity; + std::unique_lock lock(m_mutex); + while (newHead == tail) { + // do not move to the item the reading thread is on + m_cond.wait(lock); + } + head = newHead; + m_cond.notify_all(); +} + +void TransferRingBuffer::done() +{ + std::unique_lock lock(m_mutex); + m_done = true; + m_cond.notify_all(); +} diff --git a/smb/transfer.h b/smb/transfer.h new file mode 100644 index 0000000..e5941c4 --- /dev/null +++ b/smb/transfer.h @@ -0,0 +1,76 @@ +/* + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2020 Harald Sitter +*/ + +#ifndef TRANSFER_H +#define TRANSFER_H + +#include +#include + +#include +#include +#include + +constexpr off_t c_minSegmentSize = 64 * 1024; // minimal size on stack +constexpr off_t c_maxSegmentSize = 4L * 1024 * 1024; // 4MiB is the largest request we make + +struct TransferSegment +{ + explicit TransferSegment(const off_t fileSize); + + ssize_t size = 0; // current size (i.e. the size that was put into buf) + QVarLengthArray buf; // data buffer, only filled up to size! + +private: + static off_t segmentSizeForFileSize(const off_t fileSize_); +}; + +// Naive ring buffer. +// Segment instances are held in the buffer, i.e. only alloc'd once at +// beginning of the operation. Kind of a mix between ring and pool. +// +// The popping thread cannot pop while the pushing thread is still on +// an element. As such we need at least 3 elements to prevent dead locks. +class TransferRingBuffer +{ +public: + // fileSize is the stat'd file size of the source file. + explicit TransferRingBuffer(const off_t fileSize_); + ~TransferRingBuffer() = default; + + // Pops an item into the pull thread. This blocks + // when the push thread is also currently on that index. + // This can return nullptr if the push thread set the done state. + // @note once done unpop() needs calling + TransferSegment *pop(); + + // Frees the item used by the pull thread. So it may be used by the + // push thread. + void unpop(); + + // Simply returns a ptr to the item the current push thread marker is + // at. i.e. the item "locked" for reading. + // @note once done push() needs calling + TransferSegment *nextFree(); + + // Pushes ahead from the item obtained by nextFree. + // This effectively allows the pull thread to pop() this item again. + void push(); + + // Only called by push thread to mark the buffer done and wake waiting + // threads. + void done(); + +private: + bool m_done = false; + std::mutex m_mutex; + std::condition_variable m_cond; + static const size_t m_capacity = 4; + std::array, m_capacity> m_buffer; + size_t head = 0; // index of push thread (prevents pop() from pull thread) + size_t tail = 0; // index of pull thread (prevents push() from push thread) +}; + +#endif // TRANSFER_H diff --git a/smb/wsdiscoverer.cpp b/smb/wsdiscoverer.cpp new file mode 100644 index 0000000..4f81708 --- /dev/null +++ b/smb/wsdiscoverer.cpp @@ -0,0 +1,316 @@ +/* + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2019-2020 Harald Sitter +*/ + +#include "wsdiscoverer.h" + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "kio_smb.h" + +// Publication service data resolver! +// Specifically we'll ask the endpoint for PBSData via ws-transfer/Get. +// The implementation is the bare minimum for our purposes! +// https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-pbsd +class PBSDResolver : public QObject +{ + Q_OBJECT +signals: + void resolved(Discovery::Ptr discovery); + +public: + /** + * @param endpointUrl valid xaddr as advertised over ws-discovery (http://$ip/$referenceUuid) + * @param destination endpoint reference urn as sent over ws-discovery ($referenceUuid) + */ + PBSDResolver(const QUrl &endpointUrl, const QString &destination, QObject *parent = nullptr) + : QObject(parent) + , m_endpointUrl(endpointUrl) + , m_destination(destination) + { + } + + static QString nameFromComputerInfo(const QString &info) + { + // NB: spec says to use \ or / based on context, but in reality they are used + // interchangibly in implementations. + static QRegularExpression domainExpression("(?.+)[\\/]Domain:(?.+)"); + static QRegularExpression workgroupExpression("(?.+)[\\/]Workgroup:(?.+)"); + static QRegularExpression notJoinedExpression("(?.+)[\\/]NotJoined"); + + // We don't do anything with WG or domain info because windows10 doesn't seem to either. + const auto joinedMatch = notJoinedExpression.match(info); + if (joinedMatch.hasMatch()) { + return joinedMatch.captured("name"); + } + + const auto domainMatch = domainExpression.match(info); + if (domainMatch.hasMatch()) { + return domainMatch.captured("name"); + } + + const auto workgroupMatch = workgroupExpression.match(info); + if (workgroupMatch.hasMatch()) { + return workgroupMatch.captured("name"); + } + + return info; + } + + // This must always set m_discovery and it must also time out on its own! + void run() + { + // NB: when windows talks to windows they use lms:LargeMetadataSupport we probably don't + // need this for the data we want, so it's left out. The actual messagse a windows + // machine creates would be using "http://schemas.microsoft.com/windows/lms/2007/08" + // as messageNamespace and set an additional header on the message. + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dpwssn/f700463d-cbbf-4545-ab47-b9a6fbf1ac7b + + KDSoapClientInterface client(m_endpointUrl.toString(), + QStringLiteral("http://schemas.xmlsoap.org/ws/2004/09/transfer")); + client.setSoapVersion(KDSoapClientInterface::SoapVersion::SOAP1_2); + client.setTimeout(8000); + + KDSoapMessage message; + KDSoapMessageAddressingProperties addressing; + addressing.setAddressingNamespace(KDSoapMessageAddressingProperties::Addressing200408); + addressing.setAction(QStringLiteral("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get")); + addressing.setMessageID(QStringLiteral("urn:uuid:") + QUuid::createUuid().toString(QUuid::WithoutBraces)); + addressing.setDestination(m_destination); + addressing.setReplyEndpointAddress(KDSoapMessageAddressingProperties::predefinedAddressToString( + KDSoapMessageAddressingProperties::Anonymous, + KDSoapMessageAddressingProperties::Addressing200408)); + addressing.setSourceEndpointAddress(QStringLiteral("urn:uuid:") + + QUuid::createUuid().toString(QUuid::WithoutBraces)); + message.setMessageAddressingProperties(addressing); + + QString computer; + + KDSoapMessage response = client.call(QString(), message); + if (response.isFault()) { + qCDebug(KIO_SMB_LOG) << "Failed to obtain PBSD response" + << m_endpointUrl.host() + << m_destination + << response.arguments() + << response.faultAsString(); + // No return! We'd disqualify systems that do not implement pbsd. + } else { + // The response xml would be nesting Metdata%1
        ", + host); + } else { + // If we got a DNSSD name, use that, otherwise redirect to on-demand resolution. + host = computer.endsWith(".local") ? computer : computer + ".kio-discovery-wsd"; + } + + m_discovery.reset(new WSDiscovery(computer, host)); + emit resolved(m_discovery); + } + +private: + const QUrl m_endpointUrl; + const QString m_destination; + Discovery::Ptr m_discovery; +}; + +// Utilizes WSDiscoveryClient to probe and resolve WSD services. +WSDiscoverer::WSDiscoverer() + : m_client(new WSDiscoveryClient(this)) +{ + connect(m_client, &WSDiscoveryClient::probeMatchReceived, + this, &WSDiscoverer::matchReceived); + connect(m_client, &WSDiscoveryClient::resolveMatchReceived, + this, &WSDiscoverer::resolveReceived); + + // If we haven't had a probematch in some seconds there's likely no more replies + // coming and all hosts are known. Naturally resolvers may still be running and + // get blocked on during stop(). Resolvers themselves have a timeout via + // kdsoap. + // NB: only started after first match! If we have no matches the slave will + // stop us eventually anyway. + m_probeMatchTimer.setInterval(2000); + m_probeMatchTimer.setSingleShot(true); + connect(&m_probeMatchTimer, &QTimer::timeout, this, &WSDiscoverer::stop); +} + +void WSDiscoverer::start() +{ + m_client->start(); + + // We only want devices. + // We technically would probably also want to filter pub:Computer. + // But! I am not sure if e.g. a NAS would publish itself as computer. + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-pbsd + KDQName type("wsdp:Device"); + type.setNameSpace("http://schemas.xmlsoap.org/ws/2006/02/devprof"); + m_client->sendProbe({type}, {}); +} + +void WSDiscoverer::stop() +{ + m_startedTimer = true; + disconnect(&m_probeMatchTimer); + m_probeMatchTimer.stop(); + maybeFinish(); +} + +bool WSDiscoverer::isFinished() const +{ + return m_startedTimer && !m_probeMatchTimer.isActive() && m_resolvers.count() == m_resolvedCount; +} + +void WSDiscoverer::matchReceived(const WSDiscoveryTargetService &matchedService) +{ + // (re)start match timer to finish-early if at all possible. + m_probeMatchTimer.start(); + m_startedTimer = true; + + if (matchedService.xAddrList().isEmpty()) { + // Has no addresses -> needs resolving still + m_client->sendResolve(matchedService.endpointReference()); + return; + } + + resolveReceived(matchedService); +} + +void WSDiscoverer::resolveReceived(const WSDiscoveryTargetService &service) +{ + // (re)start match timer to finish-early if at all possible. + m_probeMatchTimer.start(); + m_startedTimer = true; + + if (m_seenEndpoints.contains(service.endpointReference())) { + return; + } + m_seenEndpoints << service.endpointReference(); + + QUrl addr; + for (const auto &xAddr : service.xAddrList()) { + // https://docs.microsoft.com/en-us/windows/win32/wsdapi/xaddr-validation-rules + // "At least one IP address included in the XAddrs (or IP address resolved from + // a hostname included in the XAddrs) must be on the same subnet as the adapter + // over which the ProbeMatches or ResolveMatches message was received." + const auto hostInfo = QHostInfo::fromName(xAddr.host()); + if (hostInfo.error() == QHostInfo::NoError) { + addr = xAddr; + break; + } + } + + if (addr.isEmpty()) { + qCWarning(KIO_SMB_LOG) << "Failed to resolve any WS transport address." + << "This suggests that DNS resolution may be broken." + << service.xAddrList(); + return; + } + + PBSDResolver *resolver = new PBSDResolver(addr, service.endpointReference(), this); + connect(resolver, &PBSDResolver::resolved, this, [this](Discovery::Ptr discovery) { + ++m_resolvedCount; + emit newDiscovery(discovery); + maybeFinish(); + }); + QTimer::singleShot(0, resolver, &PBSDResolver::run); + m_resolvers << resolver; +} + +void WSDiscoverer::maybeFinish() +{ + if (isFinished()) { + emit finished(); + } +} + +WSDiscovery::WSDiscovery(const QString &computer, const QString &remote) + : m_computer(computer) + , m_remote(remote) +{ +} + +QString WSDiscovery::udsName() const +{ + return m_computer; +} + +KIO::UDSEntry WSDiscovery::toEntry() const +{ + KIO::UDSEntry entry; + entry.reserve(6); + entry.fastInsert(KIO::UDSEntry::UDS_NAME, udsName()); + + entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)); + entry.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, "network-server"); + + QUrl u; + u.setScheme(QStringLiteral("smb")); + u.setHost(m_remote); + u.setPath("/"); // https://bugs.kde.org/show_bug.cgi?id=388922 + + entry.fastInsert(KIO::UDSEntry::UDS_URL, u.url()); + entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, + QStringLiteral("application/x-smb-server")); + return entry; +} + +#include "wsdiscoverer.moc" diff --git a/smb/wsdiscoverer.h b/smb/wsdiscoverer.h new file mode 100644 index 0000000..20f230c --- /dev/null +++ b/smb/wsdiscoverer.h @@ -0,0 +1,62 @@ +/* + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2019-2020 Harald Sitter +*/ + +#ifndef WSDISCOVERER_H +#define WSDISCOVERER_H + +#include "discovery.h" +#include +#include + +class WSDiscoveryClient; +class WSDiscoveryTargetService; +class PBSDResolver; + +namespace KIO +{ +class UDSEntry; +} + +class WSDiscovery : public Discovery +{ + const QString m_computer; + const QString m_remote; + +public: + WSDiscovery(const QString &computer, const QString &remote); + QString udsName() const override; + KIO::UDSEntry toEntry() const override; +}; + +class WSDiscoverer : public QObject, public Discoverer +{ + Q_OBJECT +public: + WSDiscoverer(); + + void start() override; + bool isFinished() const override; + +signals: + void newDiscovery(Discovery::Ptr discovery) override; + void finished() override; + +private slots: + void matchReceived(const WSDiscoveryTargetService &matchedService); + void resolveReceived(const WSDiscoveryTargetService &matchedService); + +private: + void stop() override; + void maybeFinish(); + + WSDiscoveryClient *m_client = nullptr; + bool m_startedTimer = false; + QTimer m_probeMatchTimer; + QStringList m_seenEndpoints; + QList m_resolvers; + int m_resolvedCount = 0; +}; + +#endif // WSDISCOVERER_H diff --git a/smoketest/README.md b/smoketest/README.md new file mode 100644 index 0000000..9fa3797 --- /dev/null +++ b/smoketest/README.md @@ -0,0 +1,9 @@ +Perform smoke test against live server via kioclient. This attempts all +file operations kioclient can perform against a server you pass as argument +when calling the script. +This of course only makes sense for slaves which are readwritable. + +Example invocation: +``` +./smoke.sh sftp://me@localhost/tmp +``` diff --git a/smoketest/file1 b/smoketest/file1 new file mode 100644 index 0000000..ac3e272 --- /dev/null +++ b/smoketest/file1 @@ -0,0 +1 @@ +content1 diff --git a/smoketest/kio_smoke_test/.keep b/smoketest/kio_smoke_test/.keep new file mode 100644 index 0000000..e69de29 diff --git a/smoketest/smoke.sh b/smoketest/smoke.sh new file mode 100755 index 0000000..56c666a --- /dev/null +++ b/smoketest/smoke.sh @@ -0,0 +1,83 @@ +#!/bin/bash +# +# Copyright (C) 2019 Harald Sitter +# +# 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 3 of +# the License or any later version accepted by the membership of +# KDE e.V. (or its successor approved by the membership of KDE +# e.V.), which shall act as a proxy defined in Section 14 of +# version 3 of the license. +# +# 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, see . + +set -e + +export KDE_FORK_SLAVES=1 + +# enter a valid localhost login here +host=$1 +if [ "$host" = "" ]; then + echo "Need to pass base uri as argument... e.g. smb://foo/srv" + exit 1 +fi +dir='kio_smoke_test' +uri="$host/$dir" + +kioclient5 remove $uri || true +kioclient5 copy $dir $uri + +# upload +kioclient5 copy file1 $uri/file1 +if [ "$(kioclient5 cat $uri/file1)" != "content1" ]; then + echo "Reading file1 failed!" + exit 1 +fi + +# remote rename +kioclient5 move $uri/file1 $uri/file2 +if [ "$(kioclient5 cat $uri/file2)" != "content1" ]; then + echo "Moving to file2 failed!" + exit 1 +fi + +if kioclient5 cat $uri/file1; then + echo "Tried to move file1 to file2 but now both exist!" + exit 1 +fi + +# remote copy +kioclient5 copy $uri/file2 $uri/file1 + +# both exist +kioclient5 cat $uri/file1 +kioclient5 cat $uri/file2 + +# remote remove +kioclient5 remove $uri/file1 +if kioclient5 cat $uri/file1; then + echo "Tried to remove file1 but still exists!" + exit 1 +fi + +# ls +kioclient5 ls $uri # not checking output, too lazy + +# download +rm -rfv file2 +kioclient5 copy $uri/file2 file://`pwd`/file2 # download +if [ ! -e file2 ]; then + echo "failed to download :(" + exit 1 +fi +rm -rfv file2 + +# delete remote dir again +kioclient5 remove $uri diff --git a/thumbnail/CMakeLists.txt b/thumbnail/CMakeLists.txt new file mode 100644 index 0000000..04c254b --- /dev/null +++ b/thumbnail/CMakeLists.txt @@ -0,0 +1,301 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_thumbnail\") + +find_package(OpenEXR) +set_package_properties(OpenEXR PROPERTIES DESCRIPTION "API for accessing OpenEXR formatted images" + URL "https://www.openexr.com" + TYPE OPTIONAL + PURPOSE "Provides support for OpenEXR formatted images in the thumbnail kioslave" + ) + +find_package(libappimage 0.1.10 CONFIG) +set_package_properties(libappimage PROPERTIES DESCRIPTION "Core library of the AppImage project" + URL "https://github.com/AppImage/libappimage" + TYPE OPTIONAL + PURPOSE "Provides support for AppImage thumbnails" + ) + +find_package(X11) +set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries" + URL "https://www.x.org" + TYPE OPTIONAL + PURPOSE "Provides support for XCursor thumbnails" + ) + +include_directories(${CMAKE_BINARY_DIR}) + +########### next target ############### + +set(kio_thumbnail_PART_SRCS thumbnail.cpp imagefilter.cpp) + +ecm_qt_declare_logging_category(kio_thumbnail_PART_SRCS + HEADER thumbnail-logsettings.h + IDENTIFIER KIO_THUMBNAIL_LOG + CATEGORY_NAME log_kio_thumbnail) + +add_library(kio_thumbnail MODULE ${kio_thumbnail_PART_SRCS}) + +target_link_libraries(kio_thumbnail + KF5::CoreAddons + KF5::KIOCore + KF5::KIOWidgets + KF5::Solid + KF5::IconThemes + KF5::I18n +) + +set_target_properties(kio_thumbnail PROPERTIES OUTPUT_NAME "thumbnail") + +install(TARGETS kio_thumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + +########### next target ############### + +set(imagethumbnail_PART_SRCS imagecreator.cpp) + +add_library(imagethumbnail MODULE ${imagethumbnail_PART_SRCS}) + +target_link_libraries(imagethumbnail + KF5::KIOWidgets +) + +install(TARGETS imagethumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + +########### next target ############### + +install( FILES directorythumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +########### next target ############### + +set(jpegthumbnail_PART_SRCS jpegcreator.cpp) +kconfig_add_kcfg_files(jpegthumbnail_PART_SRCS jpegcreatorsettings5.kcfgc) +add_library(jpegthumbnail MODULE ${jpegthumbnail_PART_SRCS}) + +target_link_libraries(jpegthumbnail + Qt5::Core + Qt5::Gui + KF5::KIOCore + KF5::KIOWidgets + KF5::I18n + KF5::ConfigCore + KF5::ConfigGui +) + +install(FILES jpegcreatorsettings5.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) +install(TARGETS jpegthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + +########### next target ############### + +set(svgthumbnail_PART_SRCS svgcreator.cpp) + +add_library(svgthumbnail MODULE ${svgthumbnail_PART_SRCS}) + +target_link_libraries(svgthumbnail + Qt5::Gui + Qt5::Svg + KF5::KIOCore + KF5::KIOWidgets +) + +install(TARGETS svgthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + +########### next target ############### + +set(textthumbnail_PART_SRCS textcreator.cpp) + +add_library(textthumbnail MODULE ${textthumbnail_PART_SRCS}) + +target_link_libraries(textthumbnail + Qt5::Gui + KF5::KIOWidgets + KF5::SyntaxHighlighting +) + +install(TARGETS textthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + +########### next target ############### + +if(NOT WIN32) +set(djvuthumbnail_PART_SRCS djvucreator.cpp) + +ecm_qt_declare_logging_category(djvuthumbnail_PART_SRCS + HEADER thumbnail-djvu-logsettings.h + IDENTIFIER KIO_THUMBNAIL_DJVU_LOG + CATEGORY_NAME log_kio_thumbnail.djvu) + +add_library(djvuthumbnail MODULE ${djvuthumbnail_PART_SRCS}) + +target_link_libraries(djvuthumbnail KF5::KIOWidgets) + +install(TARGETS djvuthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES djvuthumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +endif() + +########### next target ############### + +if(OpenEXR_FOUND) + + set(exrthumbnail_PART_SRCS exrcreator.cpp) + ecm_qt_declare_logging_category(exrthumbnail_PART_SRCS + HEADER thumbnail-exr-logsettings.h + IDENTIFIER KIO_THUMBNAIL_EXR_LOG + CATEGORY_NAME log_kio_thumbnail.exr) + + add_library(exrthumbnail MODULE ${exrthumbnail_PART_SRCS}) + target_link_libraries(exrthumbnail + KF5::KIOCore + KF5::KIOWidgets + ${OpenEXR_LIBRARIES} + ) + target_include_directories(exrthumbnail SYSTEM PRIVATE ${OpenEXR_INCLUDE_DIRS}) + + # OpenEXR headers use exceptions; at least clang refuses to build the target + # when exceptions are not enabled. + kde_source_files_enable_exceptions(exrcreator.cpp) + + install(TARGETS exrthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + install( FILES exrthumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +endif() + +########### next target ############### + +if(X11_Xcursor_FOUND) + + set(cursorthumbnail_PART_SRCS cursorcreator.cpp) + + add_library(cursorthumbnail MODULE ${cursorthumbnail_PART_SRCS}) + + target_link_libraries(cursorthumbnail + KF5::KIOCore + KF5::KIOWidgets + ${X11_Xcursor_LIB} + ) + + install(TARGETS cursorthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + install( FILES cursorthumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +endif() + +########### next target ############### + +set ( windowsexethumbnail_SRCS windowsexecreator.cpp icoutils_common.cpp) +set ( windowsimagethumbnail_SRCS windowsimagecreator.cpp icoutils_common.cpp) + +if(WIN32) + set ( windowsexethumbnail_SRCS ${windowsexethumbnail_SRCS} icoutils_win.cpp ) + set ( windowsimagethumbnail_SRCS ${windowsimagethumbnail_SRCS} icoutils_win.cpp ) +else() + set ( windowsexethumbnail_SRCS ${windowsexethumbnail_SRCS} icoutils_wrestool.cpp ) + set ( windowsimagethumbnail_SRCS ${windowsimagethumbnail_SRCS} icoutils_wrestool.cpp ) +endif() + +add_library(windowsexethumbnail MODULE ${windowsexethumbnail_SRCS} ) +target_link_libraries ( windowsexethumbnail KF5::KIOWidgets ) +install ( TARGETS windowsexethumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR} ) +install ( FILES windowsexethumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) + +add_library(windowsimagethumbnail MODULE ${windowsimagethumbnail_SRCS} ) +target_link_libraries ( windowsimagethumbnail KF5::KIOWidgets ) +install ( TARGETS windowsimagethumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR} ) +install ( FILES windowsimagethumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR} ) + +########### next target ############### + +set(comicbookthumbnail_SRCS comiccreator.cpp) +ecm_qt_declare_logging_category(comicbookthumbnail_SRCS + HEADER thumbnail-comic-logsettings.h + IDENTIFIER KIO_THUMBNAIL_COMIC_LOG + CATEGORY_NAME log_kio_thumbnail.comic) + +add_library(comicbookthumbnail MODULE ${comicbookthumbnail_SRCS}) +target_link_libraries(comicbookthumbnail + Qt5::Gui + KF5::Archive + KF5::KIOWidgets +) +install(TARGETS comicbookthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + +# ########### next target ############### + +set(kritathumbnail_SRCS kritacreator.cpp) +add_library(kritathumbnail MODULE ${kritathumbnail_SRCS}) + +target_link_libraries(kritathumbnail + KF5::KIOWidgets + KF5::Archive + Qt5::Gui +) + +install(TARGETS kritathumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + +########### next target ################# + +find_package(Taglib 1.11) + +if(Taglib_FOUND) + add_library(audiothumbnail MODULE audiocreator.cpp) + target_link_libraries(audiothumbnail Taglib::Taglib KF5::KIOWidgets) + install(TARGETS audiothumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + set(audiothumbnail_desktop audiothumbnail.desktop) +endif() + +# ########### next target ############### + +set(opendocumentthumbnail_SRCS opendocumentcreator.cpp) +add_library(opendocumentthumbnail MODULE ${opendocumentthumbnail_SRCS}) + +target_link_libraries(opendocumentthumbnail + Qt5::Gui + KF5::KIOWidgets + KF5::Archive +) + +install(TARGETS opendocumentthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + +# ########### next target ############### + +if(libappimage_FOUND) + +set(appimagethumbnail_SRCS appimagecreator.cpp) +add_library(appimagethumbnail MODULE ${appimagethumbnail_SRCS}) +target_link_libraries(appimagethumbnail + KF5::KIOWidgets + Qt5::Gui + libappimage +) + +install(TARGETS appimagethumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES appimagethumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +endif() + +# ########### next target ############### + +set(ebookthumbnail_SRCS ebookcreator.cpp) +add_library(ebookthumbnail MODULE ${ebookthumbnail_SRCS}) + +target_link_libraries(ebookthumbnail + Qt5::Gui + KF5::KIOWidgets + KF5::Archive +) + +install(TARGETS ebookthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + +########### install files ############### + +install(FILES thumbcreator.desktop DESTINATION ${KDE_INSTALL_KSERVICETYPES5DIR}) +install(FILES + thumbnail.protocol + svgthumbnail.desktop + imagethumbnail.desktop + jpegthumbnail.desktop + textthumbnail.desktop +# desktopthumbnail.desktop + comicbookthumbnail.desktop + kraorathumbnail.desktop + opendocumentthumbnail.desktop + ebookthumbnail.desktop + ${audiothumbnail_desktop} + DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + diff --git a/thumbnail/Messages.sh b/thumbnail/Messages.sh new file mode 100644 index 0000000..8732fda --- /dev/null +++ b/thumbnail/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kio5_thumbnail.pot diff --git a/thumbnail/appimagecreator.cpp b/thumbnail/appimagecreator.cpp new file mode 100644 index 0000000..0f3bb82 --- /dev/null +++ b/thumbnail/appimagecreator.cpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2018 Kai Uwe Broulik + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#include "appimagecreator.h" + +#include +#include + +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new AppImageCreator; + } +} + +AppImageCreator::AppImageCreator() = default; +AppImageCreator::~AppImageCreator() = default; + +bool AppImageCreator::create(const QString &path, int width, int height, QImage &image) +{ + // We just load the .DirIcon verbatim and let the PreviewJob figure out scaling to required size if needed + Q_UNUSED(width); + Q_UNUSED(height); + + unsigned long size = 0L; + char *buf = nullptr; + + bool ok = appimage_read_file_into_buffer_following_symlinks(qUtf8Printable(path), + ".DirIcon", + &buf, + &size); + + QScopedPointer cleanup(buf); + Q_UNUSED(cleanup); + + if (!ok) { + return false; + } + + return image.loadFromData(reinterpret_cast(buf), size); +} diff --git a/thumbnail/appimagecreator.h b/thumbnail/appimagecreator.h new file mode 100644 index 0000000..0fc2db8 --- /dev/null +++ b/thumbnail/appimagecreator.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018 Kai Uwe Broulik + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +#pragma once + +#include + +class AppImageCreator : public ThumbCreator +{ +public: + AppImageCreator(); + ~AppImageCreator() override; + + bool create(const QString &path, int width, int height, QImage &image) override; +}; diff --git a/thumbnail/appimagethumbnail.desktop b/thumbnail/appimagethumbnail.desktop new file mode 100644 index 0000000..95e1463 --- /dev/null +++ b/thumbnail/appimagethumbnail.desktop @@ -0,0 +1,37 @@ +[Desktop Entry] +Type=Service +Name=AppImage +Name[ca]=AppImage +Name[ca@valencia]=AppImage +Name[cs]=AppImage +Name[da]=AppImage +Name[de]=AppImage +Name[el]=AppImage +Name[en_GB]=AppImage +Name[es]=AppImage +Name[et]=AppImage +Name[eu]=AppIrudia +Name[fi]=AppImage +Name[fr]=AppImage +Name[gl]=AppImage +Name[ia]=AppImage +Name[it]=AppImage +Name[ko]=AppImage +Name[lt]=AppImage failai +Name[nl]=AppImage +Name[nn]=AppImage +Name[pl]=AppImage +Name[pt]=AppImage +Name[pt_BR]=AppImage +Name[ru]=AppImage +Name[sk]=AppImage +Name[sl]=AppImage +Name[sv]=AppImage +Name[uk]=AppImage +Name[x-test]=xxAppImagexx +Name[zh_CN]=AppImage +Name[zh_TW]=AppImage +X-KDE-ServiceTypes=ThumbCreator +MimeType=application/x-iso9660-appimage;application/vnd.appimage; +X-KDE-Library=appimagethumbnail +CacheThumbnail=true diff --git a/thumbnail/audiocreator.cpp b/thumbnail/audiocreator.cpp new file mode 100644 index 0000000..6a1a94c --- /dev/null +++ b/thumbnail/audiocreator.cpp @@ -0,0 +1,210 @@ + +/*************************************************************************** + * This file is part of the KDE KIO-Extras project * + * Copyright (C) 2009 Vytautas Mickus * + * Copyright (C) 2016 Anthony Fieroni * + * * + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * 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 Street, Fifth Floor, Boston, * + * MA 02110-1301 USA * + ***************************************************************************/ + +#include "audiocreator.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator* new_creator() + { + return new AudioCreator; + } +} + +AudioCreator::AudioCreator() +{ +} + +AudioCreator::~AudioCreator() +{ +} + +namespace TagLib +{ + namespace RIFF + { + namespace AIFF + { + struct FileExt : public File + { + using File::File; + ID3v2::Tag* ID3v2Tag() const + { + return tag(); + } + }; + } + } +} + +template static +bool parseID3v2Tag(T &file, QImage &img) +{ + if (!file.hasID3v2Tag()) { + return false; + } + const auto &map = file.ID3v2Tag()->frameListMap(); + if (map["APIC"].isEmpty()) { + return false; + } + auto apicFrame = dynamic_cast(map["APIC"].front()); + if (!apicFrame) { + return false; + } + const auto coverData = apicFrame->picture(); + img.loadFromData((uchar *)coverData.data(), coverData.size()); + return true; +} + +template static +bool parseFlacTag(T &file, QImage &img) +{ + const auto pictureList = file.pictureList(); + for (const auto &picture : pictureList) { + if (picture->type() != TagLib::FLAC::Picture::FrontCover) { + continue; + } + const auto coverData = picture->data(); + img.loadFromData((uchar *)coverData.data(), coverData.size()); + return true; + } + return false; +} + +template static +bool parseMP4Tag(T &file, QImage &img) +{ + if (!file.hasMP4Tag()) { + return false; + } + const auto &map = file.tag()->itemMap(); + for (const auto &coverList : map) { + auto coverArtList = coverList.second.toCoverArtList(); + if (coverArtList.isEmpty()) { + continue; + } + const auto coverData = coverArtList[0].data(); + img.loadFromData((uchar *)coverData.data(), coverData.size()); + return true; + } + return false; +} + +template static +bool parseAPETag(T &file, QImage &img) +{ + if (!file.hasAPETag()) { + return false; + } + const auto &map = file.APETag()->itemListMap(); + for (const auto &item : map) { + if (item.second.type() != TagLib::APE::Item::Binary) { + continue; + } + const auto coverData = item.second.binaryData(); + const auto data = coverData.data(); + const auto size = coverData.size(); + for (size_t i=0; i(fileRef.tag()); + if (!xiphComment || xiphComment->isEmpty()) { + return false; + } + return parseFlacTag(*xiphComment, img); + } + if (type.inherits("audio/x-aiff") || type.inherits("audio/x-aifc")) { + TagLib::RIFF::AIFF::FileExt file(QFile::encodeName(path).data()); + return parseID3v2Tag(file, img); + } + if (type.inherits("audio/x-wav")) { + TagLib::RIFF::WAV::File file(QFile::encodeName(path).data()); + return parseID3v2Tag(file, img); + } + return false; +} diff --git a/thumbnail/audiocreator.h b/thumbnail/audiocreator.h new file mode 100644 index 0000000..0013633 --- /dev/null +++ b/thumbnail/audiocreator.h @@ -0,0 +1,37 @@ + +/*************************************************************************** + * This file is part of the KDE KIO-Extras project * + * Copyright (C) 2009 Vytautas Mickus * + * Copyright (C) 2016 Anthony Fieroni * + * * + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * 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 Street, Fifth Floor, Boston, * + * MA 02110-1301 USA * + ***************************************************************************/ + +#ifndef _AUDIO_CREATOR_H_ +#define _AUDIO_CREATOR_H_ + +#include +#include + +class AudioCreator : public QObject, public ThumbCreator +{ + Q_OBJECT +public: + AudioCreator(); + ~AudioCreator() override; + bool create(const QString &path, int w, int h, QImage &img) override; +}; + +#endif // _AUDIO_CREATOR_H_ diff --git a/thumbnail/audiothumbnail.desktop b/thumbnail/audiothumbnail.desktop new file mode 100644 index 0000000..bad8735 --- /dev/null +++ b/thumbnail/audiothumbnail.desktop @@ -0,0 +1,44 @@ +[Desktop Entry] +Type=Service +Name=Audio files +Name[ca]=Fitxers d'àudio +Name[ca@valencia]=Fitxers d'àudio +Name[cs]=Audio soubory +Name[da]=Lydfiler +Name[de]=Audio-Dateien +Name[el]=Αρχεία ήχου +Name[en_GB]=Audio files +Name[es]=Archivos de sonido +Name[et]=Helifailid +Name[eu]=Audio fitxategiak +Name[fi]=Äänitiedostot +Name[fr]=Fichiers audio +Name[gl]=Ficheiros de son +Name[ia]=Files Audio +Name[id]=File audio +Name[it]=File audio +Name[ja]=音声ファイル +Name[ko]=오디오 파일 +Name[lt]=Garso failai +Name[nl]=Geluidsbestanden +Name[nn]=Lydfiler +Name[pl]=Pliki dźwiękowe +Name[pt]=Ficheiros de áudio +Name[pt_BR]=Arquivos de áudio +Name[ru]=Аудиофайлы +Name[sk]=Audio súbory +Name[sl]=Zvočne datoteke +Name[sr]=Звучни фајлови +Name[sr@ijekavian]=Звучни фајлови +Name[sr@ijekavianlatin]=Zvučni fajlovi +Name[sr@latin]=Zvučni fajlovi +Name[sv]=Ljudfiler +Name[tr]=Ses dosyaları +Name[uk]=Звукові файли +Name[x-test]=xxAudio filesxx +Name[zh_CN]=音频文件 +Name[zh_TW]=音訊檔案 +ServiceTypes=ThumbCreator +MimeType=audio/*; +CacheThumbnail=true +X-KDE-Library=audiothumbnail diff --git a/thumbnail/comicbookthumbnail.desktop b/thumbnail/comicbookthumbnail.desktop new file mode 100644 index 0000000..121341e --- /dev/null +++ b/thumbnail/comicbookthumbnail.desktop @@ -0,0 +1,77 @@ +[Desktop Entry] +Type=Service +Name=Comic Books +Name[ar]=الكتب الهزليّة +Name[bg]=Комикси +Name[bn]=কমিক্‌স বই +Name[bs]=Stripovi +Name[ca]=Llibres de còmics +Name[ca@valencia]=Llibres de còmics +Name[cs]=Komiksy +Name[csb]=Kòmiksë +Name[da]=Tegneserier +Name[de]=Comic-Buch +Name[el]=Βιβλία κόμικ +Name[en_GB]=Comic Books +Name[eo]=Komiksoj +Name[es]=Libros de cómics +Name[et]=Koomiksid +Name[eu]=Komiki-liburuak +Name[fa]=کتابهای خنده‌دار +Name[fi]=Sarjakuvakirjat +Name[fr]=Bandes dessinées +Name[fy]=Stripboeken +Name[ga]=Greannán +Name[gl]=Libros de cómic +Name[gu]=કોમિક ચોપડીઓ +Name[he]=חוברות קומיקס +Name[hi]=कॉमिक पुस्तक +Name[hr]=Stripovi +Name[hu]=Képregények +Name[ia]=Libros de Comic +Name[id]=Buku Komik +Name[is]=Myndasögur +Name[it]=Fumetti +Name[ja]=コミックブックス +Name[kk]=Комикстер +Name[km]=សៀវភៅ​កំ​ប្លែង +Name[kn]=ಕಾಮಿಕ್ ಪುಸ್ತಕಗಳು +Name[ko]=만화책 +Name[lt]=Komiksų knygos +Name[lv]=Komiksu grāmatas +Name[mai]=कॉमिक पुस्तक +Name[mk]=Стрипови +Name[ml]=കോമിക് പുസ്തകങ്ങള്‍ +Name[mr]=कोमिक पुस्तके +Name[nb]=Tegneserier +Name[nds]=Comic-Böker +Name[nl]=Stripboeken +Name[nn]=Teikneseriar +Name[pa]=ਹਾਸਰਸ ਕਿਤਾਬਾਂ +Name[pl]=Komiksy +Name[pt]=Livros de Banda Desenhada +Name[pt_BR]=Comic Books +Name[ro]=Cărți cu benzi desenate +Name[ru]=Комиксы +Name[si]=විහිළු පොත් +Name[sk]=Knihy komiksov +Name[sl]=Stripi Commic books +Name[sr]=Стрипови +Name[sr@ijekavian]=Стрипови +Name[sr@ijekavianlatin]=Stripovi +Name[sr@latin]=Stripovi +Name[sv]=Serietidningar +Name[tg]=Китобҳои хандаовар +Name[th]=หนังสือการ์ตูนต่าง ๆ +Name[tr]=Çizgi Romanlar +Name[ug]=ھەجۋىي كىتابلار +Name[uk]=Комікси +Name[vi]=Truyện tranh +Name[wa]=Binde d' imÃ¥djes +Name[x-test]=xxComic Booksxx +Name[zh_CN]=漫画书 +Name[zh_TW]=漫畫書 +ServiceTypes=ThumbCreator +MimeType=application/x-cbz;application/x-cbr;application/x-cbt;application/vnd.comicbook+zip;application/vnd.comicbook-rar;application/vnd.comicbook+tar;application/x-cb7; +X-KDE-Library=comicbookthumbnail +CacheThumbnail=true diff --git a/thumbnail/comiccreator.cpp b/thumbnail/comiccreator.cpp new file mode 100644 index 0000000..89caf6f --- /dev/null +++ b/thumbnail/comiccreator.cpp @@ -0,0 +1,264 @@ +/** + * This file is part of the KDE libraries + * + * Comic Book Thumbnailer for KDE 4 v0.1 + * Creates cover page previews for comic-book files (.cbr/z/t). + * Copyright (c) 2009 Harsh J + * + * Some code borrowed from Okular's comicbook generators, + * by Tobias Koenig + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +// comiccreator.cpp + +#include "comiccreator.h" +#include "thumbnail-comic-logsettings.h" + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new ComicCreator; + } +} + +ComicCreator::ComicCreator() {} + +bool ComicCreator::create(const QString& path, int width, int height, QImage& img) +{ + Q_UNUSED(width); + Q_UNUSED(height); + + QImage cover; + + // Detect mime type. + QMimeDatabase db; + db.mimeTypeForFile(path, QMimeDatabase::MatchContent); + const QMimeType mime = db.mimeTypeForFile(path, QMimeDatabase::MatchContent); + + if (mime.inherits("application/x-cbz") || mime.inherits("application/zip")) { + // ZIP archive. + cover = extractArchiveImage(path, ZIP); + } else if (mime.inherits("application/x-cbt") || + mime.inherits("application/x-gzip") || + mime.inherits("application/x-tar")) { + // TAR archive + cover = extractArchiveImage(path, TAR); + } else if (mime.inherits("application/x-cb7") || mime.inherits("application/x-7z-compressed")) { + cover = extractArchiveImage(path, SEVENZIP); + } else if (mime.inherits("application/x-cbr") || mime.inherits("application/x-rar")) { + // RAR archive. + cover = extractRARImage(path); + } + + if (cover.isNull()) { + qCDebug(KIO_THUMBNAIL_COMIC_LOG) << "Error creating the comic book thumbnail for" << path; + return false; + } + + // Copy the extracted cover to KIO::ThumbCreator's img reference. + img = cover; + + return true; +} + +void ComicCreator::filterImages(QStringList& entries) +{ + /// Sort case-insensitive, then remove non-image entries. + QMap entryMap; + for (const QString& entry : qAsConst(entries)) { + // Skip MacOS resource forks + if (entry.startsWith(QLatin1String("__MACOSX"), Qt::CaseInsensitive) || + entry.startsWith(QLatin1String(".DS_Store"), Qt::CaseInsensitive)) { + continue; + } + if (entry.endsWith(QLatin1String(".gif"), Qt::CaseInsensitive) || + entry.endsWith(QLatin1String(".jpg"), Qt::CaseInsensitive) || + entry.endsWith(QLatin1String(".jpeg"), Qt::CaseInsensitive) || + entry.endsWith(QLatin1String(".png"), Qt::CaseInsensitive)) { + entryMap.insert(entry.toLower(), entry); + } + } + entries = entryMap.values(); +} + +QImage ComicCreator::extractArchiveImage(const QString& path, const ComicCreator::Type type) +{ + /// Extracts the cover image out of the .cbz or .cbt file. + QScopedPointer cArchive; + + if (type==ZIP) { + // Open the ZIP archive. + cArchive.reset(new KZip(path)); + } else if (type==TAR) { + // Open the TAR archive. + cArchive.reset(new KTar(path)); + } else if (type==SEVENZIP) { + // Open the 7z archive. + cArchive.reset(new K7Zip(path)); + } else { + // Reject all other types for this method. + return QImage(); + } + + // Can our archive be opened? + if (!cArchive->open(QIODevice::ReadOnly)) { + return QImage(); + } + + // Get the archive's directory. + const KArchiveDirectory* cArchiveDir = nullptr; + cArchiveDir = cArchive->directory(); + if (!cArchiveDir) { + return QImage(); + } + + QStringList entries; + + // Get and filter the entries from the archive. + getArchiveFileList(entries, QString(), cArchiveDir); + filterImages(entries); + if (entries.isEmpty()) { + return QImage(); + } + + // Extract the cover file. + const KArchiveFile *coverFile = static_cast + (cArchiveDir->entry(entries[0])); + if (!coverFile) { + return QImage(); + } + + return QImage::fromData(coverFile->data()); +} + + + +void ComicCreator::getArchiveFileList(QStringList& entries, const QString& prefix, + const KArchiveDirectory *dir) +{ + /// Recursively list all files in the ZIP archive into 'entries'. + const auto dirEntries = dir->entries(); + for (const QString& entry : dirEntries) { + const KArchiveEntry *e = dir->entry(entry); + if (e->isDirectory()) { + getArchiveFileList(entries, prefix + entry + '/', + static_cast(e)); + } else if (e->isFile()) { + entries.append(prefix + entry); + } + } +} + +QImage ComicCreator::extractRARImage(const QString& path) +{ + /// Extracts the cover image out of the .cbr file. + + // Check if unrar is available. Get its path in 'unrarPath'. + static const QString unrar = unrarPath(); + if (unrar.isEmpty()) { + return QImage(); + } + + // Get the files and filter the images out. + QStringList entries = getRARFileList(path, unrar); + filterImages(entries); + if (entries.isEmpty()) { + return QImage(); + } + + // Extract the cover file alone. Use verbose paths. + // unrar x -n path/to/archive /path/to/temp + QTemporaryDir cUnrarTempDir; + runProcess(unrar, {"x", "-n" + entries[0], path, cUnrarTempDir.path()}); + + // Load cover file data into image. + QImage cover; + cover.load(cUnrarTempDir.path() + QDir::separator() + entries[0]); + + return cover; +} + +QStringList ComicCreator::getRARFileList(const QString& path, + const QString& unrarPath) +{ + /// Get a verbose unrar listing so we can extract a single file later. + // CMD: unrar vb /path/to/archive + QStringList entries; + runProcess(unrarPath, {"vb", path}); + entries = QString::fromLocal8Bit(m_stdOut).split('\n', QString::SkipEmptyParts); + return entries; +} + +QString ComicCreator::unrarPath() const +{ + /// Check the standard paths to see if a suitable unrar is available. + QString unrar = QStandardPaths::findExecutable("unrar"); + if (unrar.isEmpty()) { + unrar = QStandardPaths::findExecutable("unrar-nonfree"); + } + if (unrar.isEmpty()) { + unrar = QStandardPaths::findExecutable("rar"); + } + if (!unrar.isEmpty()) { + QProcess proc; + proc.start(unrar, {"-version"}); + proc.waitForFinished(-1); + const QStringList lines = QString::fromLocal8Bit(proc.readAllStandardOutput()).split + ('\n', QString::SkipEmptyParts); + if (!lines.isEmpty()) { + if (lines.first().startsWith(QLatin1String("RAR ")) || lines.first().startsWith(QLatin1String("UNRAR "))) { + return unrar; + } + } + } + qCWarning(KIO_THUMBNAIL_COMIC_LOG) << "A suitable version of unrar is not available."; + return QString(); +} + +int ComicCreator::runProcess(const QString& processPath, const QStringList& args) +{ + /// Run a process and store stdout data in a buffer. + + QProcess process; + process.setProcessChannelMode(QProcess::SeparateChannels); + + process.setProgram(processPath); + process.setArguments(args); + process.start(QIODevice::ReadWrite | QIODevice::Unbuffered); + + auto ret = process.waitForFinished(-1); + m_stdOut = process.readAllStandardOutput(); + + return ret; +} diff --git a/thumbnail/comiccreator.h b/thumbnail/comiccreator.h new file mode 100644 index 0000000..28ac787 --- /dev/null +++ b/thumbnail/comiccreator.h @@ -0,0 +1,75 @@ +/** + * This file is part of the KDE libraries + * + * Comic Book Thumbnailer for KDE 4 v0.1 + * Creates cover page previews for comic-book files (.cbr/z/t). + * Copyright (c) 2009 Harsh J + * + * Some code borrowed from Okular's comicbook generators, + * by Tobias Koenig + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +// comiccreator.h + +#ifndef COMIC_CREATOR_H +#define COMIC_CREATOR_H + +#include + +#include +#include +#include + +class KArchiveDirectory; +class QEventLoop; + +class ComicCreator : public QObject, public ThumbCreator +{ + Q_OBJECT + public: + ComicCreator(); + bool create(const QString& path, int width, int height, QImage& img) override; + + private: + enum Type { + ZIP, + TAR, + RAR, + SEVENZIP + }; + void filterImages(QStringList& entries); + int runProcess(const QString& processPath, const QStringList& args); + + // For "zip" and "tar" type files. + // Uses KDE's internal archive classes. + QImage extractArchiveImage(const QString& path, const ComicCreator::Type); + void getArchiveFileList(QStringList& entries, const QString& prefix, + const KArchiveDirectory* dir); + + // For "rar" type files. + // Uses the non-free 'unrar' executable, if available. + QImage extractRARImage(const QString& path); + QString unrarPath() const; + QStringList getRARFileList(const QString& path, const QString& unrarPath); + + private: + QByteArray m_stdOut; +}; + +#endif diff --git a/thumbnail/cursorcreator.cpp b/thumbnail/cursorcreator.cpp new file mode 100644 index 0000000..0dd8403 --- /dev/null +++ b/thumbnail/cursorcreator.cpp @@ -0,0 +1,54 @@ +/* This file is part of the KDE libraries + Copyright (C) 2003 Fredrik Höglund + + 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 "cursorcreator.h" + +#include +#include + +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new CursorCreator; + } +} + +bool CursorCreator::create( const QString &path, int width, int height, QImage &img ) +{ + XcursorImage *cursor = XcursorFilenameLoadImage( + QFile::encodeName( path ).data(), + width > height ? height : width ); + + if ( cursor ) { + img = QImage( reinterpret_cast( cursor->pixels ), + cursor->width, cursor->height, QImage::Format_ARGB32_Premultiplied ); + + // Create a deep copy of the image so the image data is preserved + img = img.copy(); + XcursorImageDestroy( cursor ); + return true; + } + + return false; +} + diff --git a/thumbnail/cursorcreator.h b/thumbnail/cursorcreator.h new file mode 100644 index 0000000..662f2d8 --- /dev/null +++ b/thumbnail/cursorcreator.h @@ -0,0 +1,33 @@ +/* This file is part of the KDE libraries + Copyright (C) 2003 Fredrik Höglund + + 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 _CURSORCREATOR_H_ +#define _CURSORCREATOR_H_ + +#include + +class CursorCreator : public ThumbCreator +{ + public: + CursorCreator() {} + bool create( const QString &path, int, int, QImage &img ); +}; + +#endif + diff --git a/thumbnail/cursorthumbnail.desktop b/thumbnail/cursorthumbnail.desktop new file mode 100644 index 0000000..7f9462f --- /dev/null +++ b/thumbnail/cursorthumbnail.desktop @@ -0,0 +1,95 @@ +[Desktop Entry] +Type=Service +Name=Cursor Files +Name[af]=Muis wyser Lêers +Name[ar]=ملفّات المؤشّرات +Name[be]=Файлы курсораў +Name[be@latin]=Fajły kursoraÅ­ +Name[bg]=Файлове с показалци на мишката +Name[bn]=কার্সর ফাইল +Name[bn_IN]=কার্সারের ফাইল +Name[br]=Restroù reti +Name[bs]=Datoteke pokazivača +Name[ca]=Fitxers de cursor +Name[ca@valencia]=Fitxers de cursor +Name[cs]=Soubory s kurzory +Name[csb]=Lopczi kùrsorów +Name[cy]=Ffeiliau Cyrchydd +Name[da]=Markørfiler +Name[de]=Cursor-Dateien +Name[el]=Αρχεία δρομέα +Name[en_GB]=Cursor Files +Name[eo]=Kursoraj dosieroj +Name[es]=Archivos de cursores +Name[et]=Kursorifailid +Name[eu]=Kurtsore-fitxategiak +Name[fa]=پرونده‌های مکان‌نما +Name[fi]=Osoitintiedostot +Name[fr]=Fichiers de curseurs +Name[fy]=Rinnerke-triemmen +Name[ga]=Comhaid Chúrsóra +Name[gl]=Ficheiros de cursor +Name[gu]=કર્સર ફાઇલો +Name[he]=קבצי Cursor +Name[hi]=संकेतक फ़ाइलें +Name[hne]=संकेतक फाइल मन ल +Name[hr]=Datoteke pokazivača +Name[hsb]=Cursorowe dataje +Name[hu]=Kurzorfájlok +Name[ia]=Files de cursor +Name[id]=File Kursor +Name[is]=Bendilsskrár +Name[it]=File dei puntatori +Name[ja]=カーソルファイル +Name[ka]=კურსორთა ფაილები +Name[kk]=Меңзер файлдары +Name[km]=ឯកសារ​ទស្សន៍​ទ្រនិច +Name[kn]=ಸ್ಥಳಸೂಚಕ (ಕರ್ಸರ್) ಕಡತಗಳು +Name[ko]=커서 파일 +Name[ku]=Pelên Kursorê +Name[lt]=Žymeklių failai +Name[lv]=Kursoru faili +Name[mai]=संकेतक फाइलसभ +Name[mk]=Датотеки со покажувачи +Name[ml]=കര്‍സര്‍ ഫയലുകള്‍ +Name[mr]=संकेतक फाईल +Name[ms]=Fail Kursor +Name[nb]=Pekerfiler +Name[nds]=Blinker-Dateien +Name[ne]=कर्सर फाइल +Name[nl]=Cursorbestanden +Name[nn]=Peikarfiler +Name[or]=ସୂଚକ ଫାଇଲଗୁଡ଼ିକ +Name[pa]=ਕਰਸਰ ਫਾਈਲਾਂ +Name[pl]=Pliki kursorów +Name[pt]=Ficheiros de Cursores +Name[pt_BR]=Arquivos de cursor +Name[ro]=Fișiere cursor +Name[ru]=Файлы курсоров +Name[se]=Sievánfiillat +Name[si]=කර්සර ගොනු +Name[sk]=Súbory s kurzormi +Name[sl]=Datoteke s kazalkami +Name[sr]=Фајлови показивача +Name[sr@ijekavian]=Фајлови показивача +Name[sr@ijekavianlatin]=Fajlovi pokazivača +Name[sr@latin]=Fajlovi pokazivača +Name[sv]=Muspekarfiler +Name[ta]=நிலைகாட்டி கோப்புகள் +Name[te]=ములుకు దస్త్రాలు +Name[tg]=Файлҳои курсор +Name[th]=แฟ้มเคอร์เซอร์ต่าง ๆ +Name[tr]=İmleç Dosyaları +Name[ug]=نۇربەلگە ھۆججەتلەر +Name[uk]=Файли курсорів +Name[uz]=Kursor fayllari +Name[uz@cyrillic]=Курсор файллари +Name[vi]=Tệp con trỏ +Name[wa]=Fitchîs cursoe +Name[x-test]=xxCursor Filesxx +Name[zh_CN]=光标文件 +Name[zh_TW]=游標檔案 +X-KDE-ServiceTypes=ThumbCreator +MimeType=image/x-xcursor; +X-KDE-Library=cursorthumbnail +CacheThumbnail=true diff --git a/thumbnail/desktopthumbnail.desktop b/thumbnail/desktopthumbnail.desktop new file mode 100644 index 0000000..be09fc0 --- /dev/null +++ b/thumbnail/desktopthumbnail.desktop @@ -0,0 +1,77 @@ +[Desktop Entry] +Type=Service +Name=Desktop Files +Name[ar]=ملفّات سطح المكتب +Name[bg]=Файлове на работния плот +Name[bn]=ডেস্কটপ ফাইল +Name[bs]=Datoteke povrÅ¡i +Name[ca]=Fitxers «desktop» +Name[ca@valencia]=Fitxers «desktop» +Name[cs]=Soubory plochy +Name[csb]=Lopczi pùltu +Name[da]=Desktop-filer +Name[de]=Desktop-Dateien +Name[el]=Αρχεία επιφάνειας εργασίας +Name[en_GB]=Desktop Files +Name[eo]=Labortablaj dosieroj +Name[es]=Archivos del escritorio +Name[et]=Töölauafailid +Name[eu]=Mahaigaineko fitxategiak +Name[fa]=پرونده‌های رومیزی +Name[fi]=Työpöytätiedostot +Name[fr]=Fichiers du bureau +Name[fy]=Buroblêd triemmen +Name[ga]=Comhaid Deisce +Name[gl]=Ficheiros do escritorio +Name[gu]=ડેસ્કટોપ ફાઇલો +Name[he]=קבצי שולחן עבודה +Name[hi]=डेस्कटॉप फ़इलें +Name[hr]=Datoteke radne povrÅ¡ine +Name[hu]=Asztali fájlok +Name[ia]=Files de scriptorio +Name[id]=File Desktop +Name[is]=Skjáborðsskrár +Name[it]=File desktop +Name[ja]=デスクトップファイル +Name[kk]=Үстел файлы +Name[km]=ឯកសារ​ផ្ទៃតុ​ +Name[kn]=ಗಣಕತೆರೆ ಕಡತಗಳು +Name[ko]=데스크톱 파일 +Name[lt]=Darbalaukio failai +Name[lv]=Darbvirsmas faili +Name[mai]=डेस्कटाप फाइल +Name[mk]=Датотеки на раб. површина +Name[ml]=പണിയിട ഫയലുകള്‍ +Name[mr]=डेस्कटॉप फाईल्स +Name[nb]=Skrivebordsfiler +Name[nds]=Schriefdisch-Dateien +Name[nl]=Bureaubladbestanden +Name[nn]=Skrivebordsfiler +Name[pa]=ਡੈਸਕਟਾਪ ਫਾਈਲਾਂ +Name[pl]=Pliki pulpitu +Name[pt]=Ficheiros 'Desktop' +Name[pt_BR]=Arquivos desktop +Name[ro]=Fișiere de birou +Name[ru]=Файлы описаний (.desktop) +Name[si]=වැඩතල ගොනු +Name[sk]=Súbory plochy +Name[sl]=Datoteke za namizje +Name[sr]=Фајлови површи +Name[sr@ijekavian]=Фајлови површи +Name[sr@ijekavianlatin]=Fajlovi povrÅ¡i +Name[sr@latin]=Fajlovi povrÅ¡i +Name[sv]=Skrivbordsfiler +Name[tg]=Файлҳои мизи корӣ +Name[th]=แฟ้มพื้นที่ทำงานต่าง ๆ +Name[tr]=Masaüstü Dosyaları +Name[ug]=ئۈستەلئۈستى ھۆججەتلەر +Name[uk]=Стільничні файли +Name[vi]=Tệp desktop +Name[wa]=Fitchîs di scribannes +Name[x-test]=xxDesktop Filesxx +Name[zh_CN]=桌面文件 +Name[zh_TW]=桌面檔 +X-KDE-ServiceTypes=ThumbCreator +MimeType=application/x-desktop; +X-KDE-Library=textthumbnail +CacheThumbnail=false diff --git a/thumbnail/directorythumbnail.desktop b/thumbnail/directorythumbnail.desktop new file mode 100644 index 0000000..efaab2f --- /dev/null +++ b/thumbnail/directorythumbnail.desktop @@ -0,0 +1,62 @@ +[Desktop Entry] +Type=Service +Name=Folders +Name[ar]=المجلّدات +Name[bg]=Папки +Name[bs]=Direktoriji +Name[ca]=Carpetes +Name[ca@valencia]=Carpetes +Name[cs]=Složky +Name[da]=Mapper +Name[de]=Ordner +Name[el]=Φάκελοι +Name[en_GB]=Folders +Name[es]=Carpetas +Name[et]=Kataloogid +Name[eu]=Karpetak +Name[fa]=پوشه +Name[fi]=Kansiot +Name[fr]=Dossiers +Name[gl]=Cartafoles +Name[gu]=ફોલ્ડરો +Name[he]=תיקיות +Name[hi]=फ़ोल्डर +Name[hu]=Mappák +Name[ia]=Dossieres +Name[id]=Folder +Name[is]=Möppur +Name[it]=Cartelle +Name[ja]=フォルダ +Name[kk]=Қапшықтар +Name[ko]=폴더 +Name[lt]=Aplankai +Name[mr]=संचयीका +Name[nb]=Mapper +Name[nds]=Ornern +Name[nl]=Mappen +Name[nn]=Mapper +Name[pa]=ਫੋਲਡਰ +Name[pl]=Katalogi +Name[pt]=Pastas +Name[pt_BR]=Pastas +Name[ro]=Dosare +Name[ru]=Папки +Name[sk]=Priečinky +Name[sl]=Mape +Name[sr]=Фасцикле +Name[sr@ijekavian]=Фасцикле +Name[sr@ijekavianlatin]=Fascikle +Name[sr@latin]=Fascikle +Name[sv]=Kataloger +Name[tr]=Klasörler +Name[ug]=قىسقۇچلار +Name[uk]=Теки +Name[vi]=Thư mục +Name[wa]=Ridants +Name[x-test]=xxFoldersxx +Name[zh_CN]=文件夹 +Name[zh_TW]=資料夾 +X-KDE-ServiceTypes=ThumbCreator +MimeType=inode/directory; +CacheThumbnail=false +HandleSequences=true diff --git a/thumbnail/djvucreator.cpp b/thumbnail/djvucreator.cpp new file mode 100644 index 0000000..71a8342 --- /dev/null +++ b/thumbnail/djvucreator.cpp @@ -0,0 +1,47 @@ +/* + SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2020 Stefan Brüns +*/ + +#include "djvucreator.h" +#include "thumbnail-djvu-logsettings.h" + +#include +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new DjVuCreator; + } +} + +bool DjVuCreator::create(const QString &path, int width, int height, QImage &img) +{ + QProcess ddjvu; + + const QStringList args{ + QStringLiteral("-page=1"), + QStringLiteral("-size=") + QString::number(width) + QChar('x') + QString::number(height), + QStringLiteral("-format=ppm"), + path + }; + + ddjvu.start(QStringLiteral("ddjvu"), args); + ddjvu.waitForFinished(); + + static bool warnOnce = true; + if (ddjvu.exitCode() != 0) { + if (warnOnce) { + qCWarning(KIO_THUMBNAIL_DJVU_LOG) << ddjvu.error() + << ddjvu.readAllStandardError(); + warnOnce = false; + } + return false; + } + + img.load(&ddjvu, "ppm"); + return true; +} diff --git a/thumbnail/djvucreator.h b/thumbnail/djvucreator.h new file mode 100644 index 0000000..b29bc48 --- /dev/null +++ b/thumbnail/djvucreator.h @@ -0,0 +1,18 @@ +/* + SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2020 Stefan Brüns +*/ + +#ifndef DJVUCREATOR_H__ +#define DJVUCREATOR_H__ + +#include + +class DjVuCreator : public ThumbCreator +{ +public: + DjVuCreator() {} + bool create(const QString &path, int, int, QImage &img) override; +}; + +#endif diff --git a/thumbnail/djvuthumbnail.desktop b/thumbnail/djvuthumbnail.desktop new file mode 100644 index 0000000..ddb4826 --- /dev/null +++ b/thumbnail/djvuthumbnail.desktop @@ -0,0 +1,96 @@ +[Desktop Entry] +Type=Service +Name=DjVu Files +Name[af]=DjVu Lêers +Name[ar]=ملفّات DjVu +Name[be]=DjVu файлы +Name[be@latin]=Fajły DjVu +Name[bg]=DjVu файлове +Name[bn]=DjVu ফাইল +Name[bn_IN]=DjVu ফাইল +Name[br]=Restr DjVu +Name[bs]=DjVu datoteke +Name[ca]=Fitxers DjVu +Name[ca@valencia]=Fitxers DjVu +Name[cs]=DjVu soubory +Name[csb]=Lopczi DjVu +Name[cy]=Ffeiliau DjVu +Name[da]=DjVu-filer +Name[de]=DjVu-Dateien +Name[el]=Αρχεία DjVu +Name[en_GB]=DjVu Files +Name[eo]=DjVu-dosieroj +Name[es]=Archivos DjVu +Name[et]=DjVu failid +Name[eu]=DjVu fitxategiak +Name[fa]=پرونده‌های DjVu +Name[fi]=DjVu-tiedostot +Name[fr]=Fichiers DjVu +Name[fy]=DjVu-triemmen +Name[ga]=Comhaid DjVu +Name[gl]=Ficheiros DjVu +Name[gu]=DjVu ફાઇલો +Name[he]=קבצי DjVu +Name[hi]=DjVu फ़ाइलें +Name[hne]=DjVu फाइल मन ल +Name[hr]=DjVu datoteke +Name[hsb]=DjVu dataje +Name[hu]=DjVu-fájlok +Name[ia]=Files DjVu +Name[id]=File DjVu +Name[is]=DjVu skrár +Name[it]=File DjVu +Name[ja]=DjVu ファイル +Name[ka]=DjVu ფაილები +Name[kk]=DjVu файлдары +Name[km]=ឯកសារ DjVu +Name[kn]=ಡಿಜೆವ್ಯೂ ಕಡತಗಳು +Name[ko]=DjVu 파일 +Name[ku]=Pelên DjVu +Name[lt]=DjVu failai +Name[lv]=DjVu faili +Name[mai]=DjVu फाइलसभ +Name[mk]=DjVu-датотеки +Name[ml]=ഡിജെവ്യു ഫയലുകള്‍ +Name[mr]=DjVu फाईल +Name[ms]=Fail DjVu +Name[nb]=DjVu-filer +Name[nds]=DjVu-Dateien +Name[ne]=DjVu फाइल +Name[nl]=DjVu-bestanden +Name[nn]=DjVu-filer +Name[or]=DjVu ଫାଇଲଗୁଡ଼ିକୁ +Name[pa]=DjVu ਫਾਈਲਾਂ +Name[pl]=Pliki DjVu +Name[pt]=Ficheiros DjVu +Name[pt_BR]=Arquivos DjVu +Name[ro]=Fișiere DjVu +Name[ru]=Файлы DjVu +Name[se]=DjVu-fiilat +Name[si]=DjVu ගොනු +Name[sk]=Súbory DjVu +Name[sl]=Datoteke DjVu +Name[sr]=ДјВу фајлови +Name[sr@ijekavian]=ДјВу фајлови +Name[sr@ijekavianlatin]=DjVu fajlovi +Name[sr@latin]=DjVu fajlovi +Name[sv]=DjVu-filer +Name[ta]=DjVu கோப்புகள் +Name[te]=డెజావు దస్త్రాలు +Name[tg]=Файлҳои DjVu +Name[th]=แฟ้ม DjVu +Name[tr]=DjVu Dosyaları +Name[ug]=DjVu ھۆججەتلەر +Name[uk]=Файли DjVu +Name[uz]=DjVu-fayllari +Name[uz@cyrillic]=DjVu-файллари +Name[vi]=Tệp DjVu +Name[wa]=Fitchîs DjVu +Name[x-test]=xxDjVu Filesxx +Name[zh_CN]=DjVu 文件 +Name[zh_TW]=DjVu 檔案 +X-KDE-ServiceTypes=ThumbCreator +MimeType=image/vnd.djvu;image/x.djvu;image/vnd.djvu; +X-KDE-Library=djvuthumbnail +CacheThumbnail=true +IgnoreMaximumSize=true diff --git a/thumbnail/ebookcreator.cpp b/thumbnail/ebookcreator.cpp new file mode 100644 index 0000000..35bda38 --- /dev/null +++ b/thumbnail/ebookcreator.cpp @@ -0,0 +1,333 @@ +/* + * Copyright (c) 2019 Kai Uwe Broulik + * + * 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) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * 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, see . + */ + +#include "ebookcreator.h" + +#include +#include +#include +#include + +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new EbookCreator; + } +} + +EbookCreator::EbookCreator() = default; + +EbookCreator::~EbookCreator() = default; + +bool EbookCreator::create(const QString &path, int width, int height, QImage &image) +{ + Q_UNUSED(width); + Q_UNUSED(height); + + QMimeType mimeType = QMimeDatabase().mimeTypeForFile(path); + + if (mimeType.name() == QLatin1String("application/epub+zip")) { + return createEpub(path, image); + + } else if (mimeType.name() == QLatin1String("application/x-fictionbook+xml")) { + QFile file(path); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + return false; + } + + return createFb2(&file, image); + + } else if (mimeType.name() == QLatin1String("application/x-zip-compressed-fb2")) { + KZip zip(path); + if (!zip.open(QIODevice::ReadOnly)) { + return false; + } + + QScopedPointer zipDevice; + + const auto entries = zip.directory()->entries(); + for (const QString &entryPath : entries) { + if (entries.count() > 1 && !entryPath.endsWith(QLatin1String(".fb2"))) { // can this done a bit more cleverly? + continue; + } + + const auto *entry = zip.directory()->entry(entryPath); + if (!entry || !entry->isFile()) { + return false; + } + + zipDevice.reset(static_cast(entry)->createDevice()); + } + + return createFb2(zipDevice.data(), image); + } + + return false; +} + +bool EbookCreator::createEpub(const QString &path, QImage &image) +{ + KZip zip(path); + if (!zip.open(QIODevice::ReadOnly)) { + return false; + } + + QScopedPointer zipDevice; + QString opfPath; + QString coverId; + QString coverHref; + + // First figure out where the OPF file with metadata is + const auto *entry = zip.directory()->entry(QStringLiteral("META-INF/container.xml")); + + if (!entry || !entry->isFile()) { + return false; + } + + const auto *zipEntry = static_cast(entry); + + zipDevice.reset(zipEntry->createDevice()); + + QXmlStreamReader xml(zipDevice.data()); + while (!xml.atEnd() && !xml.hasError()) { + xml.readNext(); + + if (xml.isStartElement() && xml.name() == QLatin1String("rootfile")) { + opfPath = xml.attributes().value(QStringLiteral("full-path")).toString(); + } + } + + if (opfPath.isEmpty()) { + return false; + } + + // Now read the OPF file and look for a + entry = zip.directory()->entry(opfPath); + if (!entry || !entry->isFile()) { + return false; + } + + zipEntry = static_cast(entry); + + zipDevice.reset(zipEntry->createDevice()); + + xml.setDevice(zipDevice.data()); + + bool inMetadata = false; + + while (!xml.atEnd() && !xml.hasError()) { + xml.readNext(); + + if (xml.name() == QLatin1String("metadata")) { + if (xml.isStartElement()) { + inMetadata = true; + } else if (xml.isEndElement()) { + break; + } + } + + if (!inMetadata) { + continue; + } + + if (xml.isStartElement() && xml.name() == QLatin1String("meta")) { + const auto attributes = xml.attributes(); + if (attributes.value(QStringLiteral("name")) == QLatin1String("cover")) { + coverId = attributes.value(QStringLiteral("content")).toString(); + break; + } + } + } + + if (coverId.isEmpty()) { + // Maybe we're lucky and the archive contains an iTunesArtwork file from iBooks + entry = zip.directory()->entry(QStringLiteral("iTunesArtwork")); + if (entry && entry->isFile()) { + return image.loadFromData(static_cast(entry)->data()); + } + + // Maybe there's a file called "cover" somewhere + const QStringList entries = getEntryList(zip.directory(), QString()); + + for (const QString &name : entries) { + if (!name.contains(QLatin1String("cover"), Qt::CaseInsensitive)) { + continue; + } + + entry = zip.directory()->entry(name); + if (!entry || !entry->isFile()) { + continue; + } + + if (image.loadFromData(static_cast(entry)->data())) { + return true; + } + } + } + + // Read OPF file again from beginning and look for + zipDevice->seek(0); + xml.setDevice(zipDevice.data()); + + bool inManifest = false; + + while (!xml.atEnd() && !xml.hasError()) { + xml.readNext(); + + if (xml.name() == QLatin1String("manifest")) { + if (xml.isStartElement()) { + inManifest = true; + } else if (xml.isEndElement()) { + break; + } + } + + if (!inManifest) { + continue; + } + + if (xml.isStartElement() && xml.name() == QLatin1String("item")) { + const auto attributes = xml.attributes(); + if (attributes.value(QStringLiteral("id")).compare(coverId, Qt::CaseInsensitive) == 0) { + coverHref = attributes.value(QStringLiteral("href")).toString(); + break; + } + } + } + + if (coverHref.isEmpty()) { + return false; + } + + // Make coverHref relative to OPF location + const int lastOpfSlash = opfPath.lastIndexOf(QLatin1Char('/')); + if (lastOpfSlash > -1) { + QString basePath = opfPath.left(lastOpfSlash + 1); + coverHref.prepend(basePath); + } + + // Finally, just load the cover image file + entry = zip.directory()->entry(coverHref); + if (!entry || !entry->isFile()) { + return false; + } + + return image.loadFromData(static_cast(entry)->data()); +} + +bool EbookCreator::createFb2(QIODevice *device, QImage &image) +{ + QString coverId; + + QXmlStreamReader xml(device); + + bool inFictionBook = false; + bool inDescription = false; + bool inTitleInfo = false; + bool inCoverPage = false; + + while (!xml.atEnd() && !xml.hasError()) { + xml.readNext(); + + if (xml.name() == QLatin1String("FictionBook")) { + if (xml.isStartElement()) { + inFictionBook = true; + } else if (xml.isEndElement()) { + break; + } + } else if (xml.name() == QLatin1String("description")) { + if (xml.isStartElement()) { + inDescription = true; + } else if (xml.isEndElement()) { + inDescription = false; + } + } else if (xml.name() == QLatin1String("title-info")) { + if (xml.isStartElement()) { + inTitleInfo = true; + } else if (xml.isEndElement()) { + inTitleInfo = false; + } + } else if (xml.name() == QLatin1String("coverpage")) { + if (xml.isStartElement()) { + inCoverPage = true; + } else if (xml.isEndElement()) { + inCoverPage = false; + } + } + + if (!inFictionBook) { + continue; + } + + if (inDescription) { + if (inTitleInfo && inCoverPage) { + if (xml.isStartElement() && xml.name() == QLatin1String("image")) { + const auto attributes = xml.attributes(); + + // value() wants a namespace but we don't care, so iterate until we find any "href" + for (const auto &attribute : attributes) { + if (attribute.name() == QLatin1String("href")) { + coverId = attribute.value().toString(); + if (coverId.startsWith(QLatin1Char('#'))) { + coverId = coverId.mid(1); + } + } + } + } + } + } else { + if (!coverId.isEmpty() && xml.isStartElement() && xml.name() == QLatin1String("binary")) { + if (xml.attributes().value(QStringLiteral("id")) == coverId) { + return image.loadFromData(QByteArray::fromBase64(xml.readElementText().toLatin1())); + } + } + } + } + + return false; +} + +QStringList EbookCreator::getEntryList(const KArchiveDirectory *dir, const QString &path) +{ + QStringList list; + + const QStringList entries = dir->entries(); + for (const QString &name : entries) { + const KArchiveEntry *entry = dir->entry(name); + + QString fullPath = name; + + if (!path.isEmpty()) { + fullPath.prepend(QLatin1Char('/')); + fullPath.prepend(path); + } + + if (entry->isFile()) { + list << fullPath; + } else { + list << getEntryList(static_cast(entry), fullPath); + } + } + + return list; +} diff --git a/thumbnail/ebookcreator.h b/thumbnail/ebookcreator.h new file mode 100644 index 0000000..72bf89f --- /dev/null +++ b/thumbnail/ebookcreator.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2019 Kai Uwe Broulik + * + * 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) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * 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, see . + */ + +#pragma once + +#include + +#include + +class QIODevice; + +class KArchiveDirectory; + +class EbookCreator : public ThumbCreator +{ +public: + EbookCreator(); + ~EbookCreator() override; + + bool create(const QString &path, int width, int height, QImage &image) override; + + bool createEpub(const QString &path, QImage &image); + // either a QFile or a KZipFileEntry + bool createFb2(QIODevice *device, QImage &image); + + static QStringList getEntryList(const KArchiveDirectory *dir, const QString &path); + +}; diff --git a/thumbnail/ebookthumbnail.desktop b/thumbnail/ebookthumbnail.desktop new file mode 100644 index 0000000..089b61a --- /dev/null +++ b/thumbnail/ebookthumbnail.desktop @@ -0,0 +1,39 @@ +[Desktop Entry] +Type=Service +Name=eBooks +Name[ca]=eBooks +Name[ca@valencia]=eBooks +Name[cs]=eKnihy +Name[da]=E-bøger +Name[de]=eBooks +Name[el]=eBooks +Name[en_GB]=eBooks +Name[es]=eBooks +Name[et]=E-raamatud +Name[eu]=eLiburukiak +Name[fi]=eBooks +Name[fr]=Livres électroniques +Name[gl]=Libros electrónicos +Name[ia]=eLibros (eBooks) +Name[it]=eBook +Name[ko]=전자책 +Name[lt]=El. knygos +Name[nl]=eBooks +Name[nn]=E-bøker +Name[pl]=eBooki +Name[pt]=eBooks +Name[pt_BR]=eBooks +Name[ru]=Электронные книги +Name[sk]=eKnihy +Name[sl]=elektronske knjige +Name[sv]=e-böcker +Name[uk]=Електронні книги +Name[x-test]=xxeBooksxx +Name[zh_CN]=电子书 +Name[zh_TW]=eBooks + +X-KDE-ServiceTypes=ThumbCreator +MimeType=application/epub+zip;application/x-fictionbook+xml;application/x-zip-compressed-fb2; + +X-KDE-Library=ebookthumbnail +CacheThumbnail=true diff --git a/thumbnail/exrcreator.cpp b/thumbnail/exrcreator.cpp new file mode 100644 index 0000000..db032f1 --- /dev/null +++ b/thumbnail/exrcreator.cpp @@ -0,0 +1,79 @@ +/* This file is part of the KDE libraries + Copyright (C) 2004 Brad Hards + + 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 "exrcreator.h" +#include "thumbnail-exr-logsettings.h" + +#include +#include + +#include +#include + +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new EXRCreator; + } +} + +bool EXRCreator::create(const QString &path, int, int, QImage &img) +{ + Imf::InputFile in ( QFile::encodeName( path ) ); + const Imf::Header &h = in.header(); + + if ( h.hasPreviewImage() ) { + qCDebug(KIO_THUMBNAIL_EXR_LOG) << "EXRcreator - using preview"; + const Imf::PreviewImage &preview = in.header().previewImage(); + QImage qpreview(preview.width(), preview.height(), QImage::Format_RGB32); + for ( unsigned int y=0; y < preview.height(); y++ ) { + for ( unsigned int x=0; x < preview.width(); x++ ) { + const Imf::PreviewRgba &q = preview.pixels()[x+(y*preview.width())]; + qpreview.setPixel( x, y, qRgba(q.r, q.g, q.b, q.a) ); + } + } + img = qpreview; + return true; + } else { + // do it the hard way + // We ignore maximum size when just extracting the thumbnail + // from the header, but it is very expensive to render large + // EXR images just to turn it into an icon, so we go back + // to honoring it in here. + qCDebug(KIO_THUMBNAIL_EXR_LOG) << "EXRcreator - using original image"; + KSharedConfig::Ptr config = KSharedConfig::openConfig(); + KConfigGroup configGroup( config, "PreviewSettings" ); + unsigned long long maxSize = configGroup.readEntry( "MaximumSize", 1024*1024 /* 1MB */ ); + unsigned long long fileSize = QFile( path ).size(); + if ( (fileSize > 0) && (fileSize < maxSize) ) { + if (!img.load( path )) { + return false; + } + if (img.depth() != 32) + img = img.convertToFormat( QImage::Format_RGB32 ); + return true; + } else { + return false; + } + } +} diff --git a/thumbnail/exrcreator.h b/thumbnail/exrcreator.h new file mode 100644 index 0000000..81fe41c --- /dev/null +++ b/thumbnail/exrcreator.h @@ -0,0 +1,32 @@ +/* This file is part of the KDE libraries + Copyright (C) 2004 Brad Hards + + 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 _EXRCREATOR_H_ +#define _EXRCREATOR_H_ + +#include + +class EXRCreator : public ThumbCreator +{ +public: + EXRCreator() {}; + bool create(const QString &path, int, int, QImage &img) override; +}; + +#endif diff --git a/thumbnail/exrthumbnail.desktop b/thumbnail/exrthumbnail.desktop new file mode 100644 index 0000000..b78683a --- /dev/null +++ b/thumbnail/exrthumbnail.desktop @@ -0,0 +1,95 @@ +[Desktop Entry] +Type=Service +Name=EXR Images +Name[af]=EXR Beelde +Name[ar]=صور EXR +Name[be]=Відарысы EXR +Name[be@latin]=Vyjavy EXR +Name[bg]=EXR образи +Name[bn]=ই-এক্স-আর ছবি +Name[bn_IN]=EXR ছবি +Name[br]=Skeudennoù EXR +Name[bs]=EIksR slike +Name[ca]=Imatges EXR +Name[ca@valencia]=Imatges EXR +Name[cs]=EXR obrázky +Name[csb]=Òbrôzczi EXR +Name[da]=EXR-billeder +Name[de]=EXR-Bilder +Name[el]=Εικόνες EXR +Name[en_GB]=EXR Images +Name[eo]=EXR-bildoj +Name[es]=Imágenes EXR +Name[et]=EXR pildifailid +Name[eu]=EXR irudiak +Name[fa]=تصاویر EXR +Name[fi]=EXR-kuvat +Name[fr]=Images EXR +Name[fy]=EXR-ôfbyldings +Name[ga]=Íomhánna EXR +Name[gl]=Imaxes EXR +Name[gu]=EXR ચિત્રો +Name[he]=תמונות EXR +Name[hi]=ईएक्सआर छवियाँ +Name[hne]=ईएक्सआर फोटू +Name[hr]=EXR slike +Name[hsb]=EXR wobrazy +Name[hu]=EXR-képek +Name[ia]=Imagines EXR +Name[id]=Citra EXR +Name[is]=EXR myndir +Name[it]=Immagini EXR +Name[ja]=EXR 画像 +Name[ka]=EXR გამოსახულებები +Name[kk]=EXR кескіндері +Name[km]=រូបភាព EXR +Name[kn]=ಇಕ್ಸರ್ ಚಿತ್ರಗಳು +Name[ko]=EXR 그림 +Name[ku]=Wêneyên EXR +Name[lt]=EXR paveikslai +Name[lv]=EXR attēli +Name[mai]=ईएक्सआर छविसभ +Name[mk]=EXR-слики +Name[ml]=ഇഎക്സ്ആര്‍ ചിത്രങ്ങള്‍ +Name[mr]=EXR प्रतिमा +Name[ms]=Imej EXR +Name[nb]=EXR-bilder +Name[nds]=EXR-Biller +Name[ne]=EXR छवि +Name[nl]=EXR-afbeeldingen +Name[nn]=EXR-bilete +Name[or]=EXR ପ୍ରତିଛବିଗୁଡ଼ିକ +Name[pa]=EXR ਚਿੱਤਰ +Name[pl]=Obrazy EXR +Name[pt]=Imagens EXR +Name[pt_BR]=Imagens EXR +Name[ro]=Imagini EXR +Name[ru]=Изображения EXR +Name[se]=EXR-govat +Name[si]=EXR පිංතූර +Name[sk]=Obrázky EXR +Name[sl]=Slike EXR +Name[sr]=ЕИксР слике +Name[sr@ijekavian]=ЕИксР слике +Name[sr@ijekavianlatin]=EXR slike +Name[sr@latin]=EXR slike +Name[sv]=EXR-bilder +Name[ta]=இ எக்ஸ் ஆர் பிம்பங்கள் +Name[te]=ఈఎక్స్ ఆర్ చిత్రాలు +Name[tg]=Тасвирҳои EXR +Name[th]=แฟ้มภาพประเภท EXR +Name[tr]=EXR Resimleri +Name[ug]=EXR سۈرەتلەر +Name[uk]=Зображення EXR +Name[uz]=EXR-rasmlar +Name[uz@cyrillic]=EXR-расмлар +Name[vi]=Ảnh EXR +Name[wa]=ImÃ¥djes EXR +Name[x-test]=xxEXR Imagesxx +Name[zh_CN]=EXR 图像 +Name[zh_TW]=EXR 影像 +X-KDE-ServiceTypes=ThumbCreator +MimeType=image/x-exr; +X-KDE-Library=exrthumbnail +CacheThumbnail=true +IgnoreMaximumSize=true diff --git a/thumbnail/icoutils.h b/thumbnail/icoutils.h new file mode 100644 index 0000000..5acaf32 --- /dev/null +++ b/thumbnail/icoutils.h @@ -0,0 +1,40 @@ +/* + icoutils.h - Extract Microsoft Window icons and images using icoutils package + + Copyright (c) 2009-2010 by Pali Rohár + Copyright (c) 2013 by Andrius da Costa Ribas + + ************************************************************************* + * * + * This library 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. * + * * + ************************************************************************* +*/ + +#ifndef ICO_UTILS_H +#define ICO_UTILS_H + +#include + +class QString; +class QIODevice; +class QImage; +class QImageReader; + +namespace IcoUtils +{ + + bool loadIcoImageFromExe(QIODevice * inputDevice, QImage &image, int needWidth=512, int needHeight=512); + bool loadIcoImageFromExe(const QString &inputPath, QImage &image, int needWidth=512, int needHeight=512); + bool loadIcoImageFromExe(const QString &inputFileName, QIODevice *outputDevice); + + bool loadIcoImage(QIODevice * inputDevice, QImage &image, int needWidth=512, int needHeight=512); + bool loadIcoImage(const QString &inputFileName, QImage &image, int needWidth=512, int needHeight=512); + bool loadIcoImage(QImageReader &reader, QImage &image, int needWidth, int needHeight); + +} + +#endif //ICO_UTILS_H diff --git a/thumbnail/icoutils_common.cpp b/thumbnail/icoutils_common.cpp new file mode 100644 index 0000000..b7a7139 --- /dev/null +++ b/thumbnail/icoutils_common.cpp @@ -0,0 +1,138 @@ +/* + icoutils_common.cpp - Extract Microsoft Window icons and images using icoutils package + + Copyright (c) 2009-2010 by Pali Rohár + + ************************************************************************* + * * + * This library 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. * + * * + ************************************************************************* +*/ + +#include "icoutils.h" + +#include +#include +#include +#include +#include +#include + +#include + +qreal distance(int width, int height, int desiredWidth, int desiredHeight, int depth) +{ + // We want as high of a depth as possible (32-bit) + auto targetSamples = desiredWidth * desiredHeight * 32; + auto xscale = (1.0 * desiredWidth) / width; + auto yscale = (1.0 * desiredHeight) / height; + + // clamp to the lower of the two scales + // also clamp to one, as scaling up adds no effective + // samples, only interpolated samples + auto sampleScale = std::min(1.0, std::min(xscale, yscale)); + + // number of effective source samples in the target + auto effectiveSamples = width * height * sampleScale * sampleScale * depth; + // scale down another time, to account for loss of fidelity when + // using a downscaled image, biases towards smaller downscaling ratios + effectiveSamples *= sampleScale; + + return targetSamples - effectiveSamples; +} + +bool IcoUtils::loadIcoImageFromExe(QIODevice * inputDevice, QImage &image, int needWidth, int needHeight) +{ + + QTemporaryFile inputFile; + + if ( ! inputFile.open() ) + return false; + + QByteArray data = inputDevice->readAll(); + + if ( inputFile.write(data) == -1 ) + return false; + + return IcoUtils::loadIcoImageFromExe(inputFile.fileName(), image, needWidth, needHeight); + +} + +bool IcoUtils::loadIcoImageFromExe(const QString &inputFileName, QImage &image, int needWidth, int needHeight) +{ + QBuffer iconData; + if (!iconData.open(QIODevice::ReadWrite)) { + return false; + } + + if ( ! IcoUtils::loadIcoImageFromExe(inputFileName, &iconData) ) + return false; + + if (!iconData.seek(0)) { + return false; + } + + return IcoUtils::loadIcoImage(&iconData, image, needWidth, needHeight); +} + +bool IcoUtils::loadIcoImage(QImageReader &reader, QImage &image, int needWidth, int needHeight) +{ + // QTBUG-70812: for files with incorrect bits per pixel, QImageReader::canRead() returns + // false but it can still correctly determine the imageCount() and read the icon just fine. + if (reader.imageCount() == 0) { + return false; + } + + QList icons; + do icons << reader.read(); + while ( reader.jumpToNextImage() ); + + if ( icons.empty() ) + return false; + + int index = icons.size() - 1; + qreal best = std::numeric_limits::max(); + + for (int i = 0; i < icons.size(); ++i) { + const QImage &icon = icons.at(i); + + // QtIcoHandler converts all images to 32-bit depth, + // but it stores the actual depth of the icon extracted in custom text: + // qtbase/src/plugins/imageformats/ico/qicohandler.cpp:455 + int depth = icon.text(QStringLiteral("_q_icoOrigDepth")).toInt(); + if (depth == 0 || depth > 32) { + depth = icon.depth(); + } + + const qreal dist = distance(icon.width(), icon.height(), needWidth, needHeight, depth); + + if (dist < best) { + index = i; + best = dist; + } + } + + image = icons.at(index); + return true; + +} + +bool IcoUtils::loadIcoImage(QIODevice * inputDevice, QImage &image, int needWidth, int needHeight) +{ + + QImageReader reader(inputDevice, "ico"); + return IcoUtils::loadIcoImage(reader, image, needWidth, needHeight); + +} + +bool IcoUtils::loadIcoImage(const QString &inputFileName, QImage &image, int needWidth, int needHeight) +{ + + QImageReader reader(inputFileName, "ico"); + return IcoUtils::loadIcoImage(reader, image, needWidth, needHeight); + +} diff --git a/thumbnail/icoutils_win.cpp b/thumbnail/icoutils_win.cpp new file mode 100644 index 0000000..7038322 --- /dev/null +++ b/thumbnail/icoutils_win.cpp @@ -0,0 +1,193 @@ +/* + icoutils_win.cpp - Extract Microsoft Window icons and images using icoutils package + + Copyright (c) 2013 by Andrius da Costa Ribas + + ************************************************************************* + * * + * This library 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. * + * * + ************************************************************************* +*/ + +#include "icoutils.h" + +#include + +#include +#include +#include +#include + +extern "C" +{ + // icon structs, as per https://msdn.microsoft.com/en-us/library/ms997538.aspx +#pragma pack( push ) +#pragma pack( 2 ) + typedef struct + { + BYTE bWidth; // Width, in pixels, of the image + BYTE bHeight; // Height, in pixels, of the image + BYTE bColorCount; // Number of colors in image (0 if >=8bpp) + BYTE bReserved; // Reserved ( must be 0) + WORD wPlanes; // Color Planes + WORD wBitCount; // Bits per pixel + DWORD dwBytesInRes; // How many bytes in this resource? + DWORD dwImageOffset; // Where in the file is this image? + } ICONDIRENTRY, *LPICONDIRENTRY; + + typedef struct + { + WORD idReserved; // Reserved (must be 0) + WORD idType; // Resource Type (1 for icons) + WORD idCount; // How many images? + ICONDIRENTRY idEntries[1]; // An entry for each image (idCount of 'em) + } ICONDIR, *LPICONDIR; + + typedef struct + { + BYTE bWidth; // Width, in pixels, of the image + BYTE bHeight; // Height, in pixels, of the image + BYTE bColorCount; // Number of colors in image (0 if >=8bpp) + BYTE bReserved; // Reserved + WORD wPlanes; // Color Planes + WORD wBitCount; // Bits per pixel + DWORD dwBytesInRes; // how many bytes in this resource? + WORD nID; // the ID + } GRPICONDIRENTRY, *LPGRPICONDIRENTRY; + + typedef struct + { + WORD idReserved; // Reserved (must be 0) + WORD idType; // Resource type (1 for icons) + WORD idCount; // How many images? + GRPICONDIRENTRY idEntries[1]; // The entries for each image + } GRPICONDIR, *LPGRPICONDIR; +#pragma pack( pop ) +} + + +BOOL CALLBACK enumResNameCallback( HMODULE hModule, LPCTSTR lpszType, LPTSTR lpszName, LONG_PTR lParam ) +{ + QList* iconResources = (QList*) lParam; + LPTSTR copyString; + if ( IS_INTRESOURCE(lpszName) ) + { + copyString = lpszName; + } + else + { + copyString = new WCHAR[lstrlen(lpszName) + 1]; + lstrcpy(copyString, lpszName); + } + + if ( lpszType == RT_GROUP_ICON ) + { + (*iconResources) << copyString; + } + return TRUE; +} + +bool IcoUtils::loadIcoImageFromExe(const QString &inputFileName, QIODevice *outputDevice) +{ + + HMODULE hModule; + LPCTSTR fileName; + QList iconResources; + + fileName = (TCHAR*) QDir::toNativeSeparators( inputFileName ).utf16(); + + hModule = LoadLibraryEx ( fileName, 0, LOAD_LIBRARY_AS_DATAFILE ); + + if ( !hModule ) + { + return false; + } + + EnumResourceNames ( hModule, RT_GROUP_ICON, enumResNameCallback, (LONG_PTR) &iconResources ); + + if (!iconResources.isEmpty() ) + { + HRSRC resourceInfo = FindResourceW ( hModule, (LPCTSTR) iconResources.at(0), RT_GROUP_ICON ); + if ( resourceInfo == 0 ) + { + FreeLibrary( hModule ); + return false; + } + + // we can get rid of the iconResources list now + for (LPTSTR iconRes : qAsConst(iconResources)) { + if ( !IS_INTRESOURCE(iconRes) ) + { + delete [] iconRes; + } + } + + HGLOBAL resourceData = LoadResource ( hModule, resourceInfo ); + LPVOID resourcePointer = LockResource ( resourceData ); + int resourceSize = SizeofResource( hModule, resourceInfo ); + if ( resourceSize == 0 ) + { + FreeLibrary( hModule ); + return false; + } + + LPGRPICONDIR grpIconDir = (LPGRPICONDIR) resourcePointer; + + QBuffer outBuffer; + outBuffer.open(QIODevice::ReadWrite); + + // helper + const int iconDirHeaderSize = sizeof(grpIconDir->idReserved) + sizeof(grpIconDir->idType) + sizeof(grpIconDir->idCount); + + // copy the common part of GRPICONDIR and ICONDIR structures to the file + outBuffer.write( (char*) resourcePointer, iconDirHeaderSize ); + + DWORD imageOffset = iconDirHeaderSize + (grpIconDir->idCount) * sizeof(ICONDIRENTRY) ; + + for ( int i = 0 ; i < (grpIconDir->idCount) ; ++i ) + { + // copy the common part of GRPICONDIRENTRY and ICONDIRENTRY structures to the respective ICONDIRENTRY's position + LPGRPICONDIRENTRY grpIconDirEntry = &(grpIconDir->idEntries[i]); + outBuffer.seek( iconDirHeaderSize + i * sizeof(ICONDIRENTRY) ); + outBuffer.write( (char*) grpIconDirEntry, sizeof(GRPICONDIRENTRY) - sizeof(grpIconDirEntry->nID) ); + + // now, instead of nID, write the image offset + outBuffer.write( (char*) &imageOffset, sizeof(DWORD) ); + + // find the icon resource + resourceInfo = FindResourceW ( hModule, MAKEINTRESOURCE(grpIconDirEntry->nID), RT_ICON ); + if ( resourceInfo == 0 ) + { + FreeLibrary( hModule ); + return false; + } + resourceData = LoadResource ( hModule, resourceInfo ); + resourcePointer = LockResource ( resourceData ); + resourceSize = SizeofResource( hModule, resourceInfo ); + if ( resourceSize == 0 ) + { + FreeLibrary( hModule ); + return false; + } + + // seek to imageOffset + outBuffer.seek(imageOffset); + // write the icon data + outBuffer.write( (char*) resourcePointer, resourceSize ); + // increment imageOffset + imageOffset += resourceSize; + } + + const bool ok = (outputDevice->write(outBuffer.data()) == outBuffer.size()); + + FreeLibrary( hModule ); + return ok; + } + + FreeLibrary( hModule ); + return false; +} diff --git a/thumbnail/icoutils_wrestool.cpp b/thumbnail/icoutils_wrestool.cpp new file mode 100644 index 0000000..44d468e --- /dev/null +++ b/thumbnail/icoutils_wrestool.cpp @@ -0,0 +1,65 @@ +/* + icoutils_wrestool.cpp - Extract Microsoft Window icons and images using icoutils package + + Copyright (c) 2009-2010 by Pali Rohár + + ************************************************************************* + * * + * This library 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. * + * * + ************************************************************************* +*/ + +#include "icoutils.h" + +#include +#include +#include + +bool IcoUtils::loadIcoImageFromExe(const QString &inputFileName, QIODevice *outputDevice) +{ + QProcess wrestool; + + // list all resources with type RT_GROUP_ICON=14 + wrestool.start(QStringLiteral("wrestool"), {QStringLiteral("-t14"), QStringLiteral("-l"), inputFileName}); + wrestool.waitForFinished(); + + if (wrestool.exitCode() != 0) { + return false; + } + + const QString output = QString::fromUtf8(wrestool.readAll()); + + // 16 bit binaries don't have "--language" + const QRegularExpression regExp(QStringLiteral("--type=\\d+ --name=(\\S+) (?:--language=.* )?\\[.*\\]")); + + // https://docs.microsoft.com/en-us/windows/win32/menurc/about-icons#icon-display + // "Select the RT_GROUP_ICON resource. If more than one such resource exists, + // the system uses the first resource listed in the resource scrip." + auto match = regExp.match(output); + if (!match.hasMatch()) { + return false; + } + + QString name = match.captured(1); + if (name.at(0) == '\'') { + name = name.mid(1, name.size()-2); + } + + wrestool.start(QStringLiteral("wrestool"), {QStringLiteral("-x"), QStringLiteral("-t14"), QStringLiteral("-n"), name, inputFileName}); + wrestool.waitForFinished(); + + if (wrestool.exitCode() != 0) { + return false; + } + + const QByteArray iconData = wrestool.readAllStandardOutput(); + if (outputDevice->write(iconData) != iconData.size()) { + return false; + } + + return true; +} diff --git a/thumbnail/imagecreator.cpp b/thumbnail/imagecreator.cpp new file mode 100644 index 0000000..3054079 --- /dev/null +++ b/thumbnail/imagecreator.cpp @@ -0,0 +1,44 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000 Carsten Pfeiffer + 2000 Malte Starostik + + 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 "imagecreator.h" + +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new ImageCreator; + } +} + +bool ImageCreator::create(const QString &path, int, int, QImage &img) +{ + // create image preview + QImageReader ir(path); + ir.setDecideFormatFromContent(true); + img = ir.read(); + if (img.isNull()) + return false; + if (img.depth() != 32) + img = img.convertToFormat(img.hasAlphaChannel() ? QImage::Format_ARGB32 : QImage::Format_RGB32); + return true; +} diff --git a/thumbnail/imagecreator.h b/thumbnail/imagecreator.h new file mode 100644 index 0000000..f7887b9 --- /dev/null +++ b/thumbnail/imagecreator.h @@ -0,0 +1,34 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000 Malte Starostik + + 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 _IMAGECREATOR_H_ +#define _IMAGECREATOR_H_ + +#include + +#include + +class ImageCreator : public ThumbCreator +{ +public: + ImageCreator() {} + bool create(const QString &path, int, int, QImage &img) override; +}; + +#endif diff --git a/thumbnail/imagefilter.cpp b/thumbnail/imagefilter.cpp new file mode 100644 index 0000000..62ec730 --- /dev/null +++ b/thumbnail/imagefilter.cpp @@ -0,0 +1,264 @@ +//krazy:exclude=copyright (email of Maxim is missing) +/* + This file is a part of the KDE project + + Copyright © 2006 Zack Rusin + Copyright © 2006-2007, 2008 Fredrik Höglund + + The stack blur algorithm was invented by Mario Klingemann + + This implementation is based on the version in Anti-Grain Geometry Version 2.4, + Copyright © 2002-2005 Maxim Shemanarev (http://www.antigrain.com) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "imagefilter.h" + +#include +#include +#include + +#include +#include + +static const quint32 stack_blur8_mul[255] = +{ + 512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512, + 454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512, + 482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456, + 437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512, + 497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328, + 320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456, + 446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335, + 329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512, + 505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405, + 399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328, + 324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271, + 268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456, + 451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388, + 385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335, + 332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292, + 289,287,285,282,280,278,275,273,271,269,267,265,263,261,259 +}; + +static const quint32 stack_blur8_shr[255] = +{ + 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, + 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 +}; + +inline static void blurHorizontal(QImage &image, unsigned int *stack, int div, int radius) +{ + int stackindex; + int stackstart; + + quint32 * const pixels = reinterpret_cast(image.bits()); + quint32 pixel; + + int w = image.width(); + int h = image.height(); + int wm = w - 1; + + unsigned int mul_sum = stack_blur8_mul[radius]; + unsigned int shr_sum = stack_blur8_shr[radius]; + + unsigned int sum, sum_in, sum_out; + + for (int y = 0; y < h; y++) + { + sum = 0; + sum_in = 0; + sum_out = 0; + + const int yw = y * w; + pixel = pixels[yw]; + for (int i = 0; i <= radius; i++) + { + stack[i] = qAlpha(pixel); + + sum += stack[i] * (i + 1); + sum_out += stack[i]; + } + + for (int i = 1; i <= radius; i++) + { + pixel = pixels[yw + qMin(i, wm)]; + + unsigned int *stackpix = &stack[i + radius]; + *stackpix = qAlpha(pixel); + + sum += *stackpix * (radius + 1 - i); + sum_in += *stackpix; + } + + stackindex = radius; + for (int x = 0, i = yw; x < w; x++) + { + pixels[i++] = (((sum * mul_sum) >> shr_sum) << 24) & 0xff000000; + + sum -= sum_out; + + stackstart = stackindex + div - radius; + if (stackstart >= div) + stackstart -= div; + + unsigned int *stackpix = &stack[stackstart]; + + sum_out -= *stackpix; + + pixel = pixels[yw + qMin(x + radius + 1, wm)]; + + *stackpix = qAlpha(pixel); + + sum_in += *stackpix; + sum += sum_in; + + if (++stackindex >= div) + stackindex = 0; + + stackpix = &stack[stackindex]; + + sum_out += *stackpix; + sum_in -= *stackpix; + } // for (x = 0, ...) + } // for (y = 0, ...) +} + +inline static void blurVertical(QImage &image, unsigned int *stack, int div, int radius) +{ + int stackindex; + int stackstart; + + quint32 * const pixels = reinterpret_cast(image.bits()); + quint32 pixel; + + int w = image.width(); + int h = image.height(); + int hm = h - 1; + + int mul_sum = stack_blur8_mul[radius]; + int shr_sum = stack_blur8_shr[radius]; + + unsigned int sum, sum_in, sum_out; + + for (int x = 0; x < w; x++) + { + sum = 0; + sum_in = 0; + sum_out = 0; + + pixel = pixels[x]; + for (int i = 0; i <= radius; i++) + { + stack[i] = qAlpha(pixel); + + sum += stack[i] * (i + 1); + sum_out += stack[i]; + } + + for (int i = 1; i <= radius; i++) + { + pixel = pixels[qMin(i, hm) * w + x]; + + unsigned int *stackpix = &stack[i + radius]; + *stackpix = qAlpha(pixel); + + sum += *stackpix * (radius + 1 - i); + sum_in += *stackpix; + } + + stackindex = radius; + for (int y = 0, i = x; y < h; y++, i += w) + { + pixels[i] = (((sum * mul_sum) >> shr_sum) << 24) & 0xff000000; + + sum -= sum_out; + + stackstart = stackindex + div - radius; + if (stackstart >= div) + stackstart -= div; + + unsigned int *stackpix = &stack[stackstart]; + + sum_out -= *stackpix; + + pixel = pixels[qMin(y + radius + 1, hm) * w + x]; + + *stackpix = qAlpha(pixel); + + sum_in += *stackpix; + sum += sum_in; + + if (++stackindex >= div) + stackindex = 0; + + stackpix = &stack[stackindex]; + + sum_out += *stackpix; + sum_in -= *stackpix; + } // for (y = 0, ...) + } // for (x = 0, ...) +} + +static void stackBlur(QImage &image, float radius) +{ + radius = qRound(radius); + + int div = int(radius * 2) + 1; + unsigned int *stack = new unsigned int[div]; + + blurHorizontal(image, stack, div, radius); + blurVertical(image, stack, div, radius); + + delete [] stack; +} + +void ImageFilter::shadowBlur(QImage &image, float radius, const QColor &color) +{ + if (radius < 0) + return; + + if (radius > 0) + stackBlur(image, radius); + + // Correct the color and opacity of the shadow + QPainter p(&image); + p.setCompositionMode(QPainter::CompositionMode_SourceIn); + p.fillRect(image.rect(), color); +} + +// kate: space-indent on; indent-width 4; replace-tabs on; diff --git a/thumbnail/imagefilter.h b/thumbnail/imagefilter.h new file mode 100644 index 0000000..b1d0ed8 --- /dev/null +++ b/thumbnail/imagefilter.h @@ -0,0 +1,50 @@ +//krazy:exclude=copyright (email of Maxim is missing) +/* + This file is a part of the KDE project + + Copyright © 2006 Zack Rusin + Copyright © 2006-2007, 2008 Fredrik Höglund + + The stack blur algorithm was invented by Mario Klingemann + + This implementation is based on the version in Anti-Grain Geometry Version 2.4, + Copyright © 2002-2005 Maxim Shemanarev (http://www.antigrain.com) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef IMAGEFILTER_H +#define IMAGEFILTER_H + +class QImage; +class QColor; + +class ImageFilter +{ +public: + // Blurs the alpha channel of the image and recolors it to the specified color. + // The image must have transparent padding on all sides, or the shadow will be clipped. + static void shadowBlur(QImage &image, float radius, const QColor &color); +}; + +#endif + diff --git a/thumbnail/imagethumbnail.desktop b/thumbnail/imagethumbnail.desktop new file mode 100644 index 0000000..55df835 --- /dev/null +++ b/thumbnail/imagethumbnail.desktop @@ -0,0 +1,74 @@ +[Desktop Entry] +Type=Service +Name=Images (GIF, PNG, BMP, ...) +Name[ar]=الصّور (GIF،‏ PNG،‏ BMP، ...) +Name[bg]=Изображения (GIF, PNG, BMP, ...) +Name[bn]=ছবি (GIF, PNG, BMP, ...) +Name[bs]=Slike (GIF, PNG, BMP...) +Name[ca]=Imatges (GIF, PNG, BMP...) +Name[ca@valencia]=Imatges (GIF, PNG, BMP...) +Name[cs]=Obrázky (GIF, PNG, BMP, ...) +Name[da]=Billeder (GIF, PNG, BMP, ...) +Name[de]=Bilder (GIF, PNG, BMP ...) +Name[el]=Εικόνες (GIF, PNG, BMP, ...) +Name[en_GB]=Images (GIF, PNG, BMP, ...) +Name[eo]=Bildoj (GIF, PNG, BMP, ...) +Name[es]=Imágenes (GIF, PNG, BMP...) +Name[et]=Pildid (GIF, PNG, BMP...) +Name[eu]=Irudiak (GIF, PNG, BMP, ...) +Name[fa]=تصاویر (GIF, PNG, BMP, ...) +Name[fi]=Kuvat (GIF, PNG, BMP, …) +Name[fr]=Images (GIF, PNG, BMP, etc.) +Name[ga]=Íomhánna (GIF, PNG, BMP, ...) +Name[gl]=Imaxes (GIF, PNG, BMP, …) +Name[gu]=ચિત્રો (GIF, PNG, BMP, ...) +Name[he]=תמונות (GIF, PNG, BMP, ...) +Name[hi]=छवियाँ (GIF, PNG, BMP, ...) +Name[hr]=Slike (GIF, PNG, BMP, …) +Name[hu]=Képek (GIF, PNG, BMP, …) +Name[ia]=Imagines (GIF, PNG, BMP, ...) +Name[id]=Citra (GIF, PNG, BMP, ...) +Name[is]=Myndir (GIF, PNG, BMP, ...) +Name[it]=Immagini (GIF, PNG, BMP, ...) +Name[ja]=画像 (GIF、PNG、BMP など) +Name[ka]=გამოსახულებები (GIF, PNG, BMP, ...) +Name[kk]=Кескіндер (GIF, PNG, BMP, ...) +Name[km]=រូបភាព (GIF, PNG, BMP, ...) +Name[kn]=ಚಿತ್ರಗಳು,(GIF, PNG, BMP, ...) +Name[ko]=그림 (GIF, PNG, BMP, ...) +Name[lt]=Atvaizdai (GIF, PNG, BMP, ...) +Name[lv]=Attēli (GIF, PNG, BMP, ...) +Name[mai]=चित्र (GIF, PNG, BMP, ...) +Name[mr]=प्रतिमा (GIF, PNG, BMP, ...) +Name[nb]=Bilder (GIF, PNG, BMP, …) +Name[nds]=Biller (GIF, PNG, BMP, ...) +Name[nl]=Afbeeldingen (GIF, PNG, BMP, ...) +Name[nn]=Bilete (GIF, PNG, BMP, …) +Name[pa]=ਚਿੱਤਰ (GIF, PNG, BMP, ...) +Name[pl]=Obrazy (GIF, PNG, BMP, ...) +Name[pt]=Imagens (GIF, PNG, BMP, ...) +Name[pt_BR]=Imagens (GIF, PNG, BMP, ...) +Name[ro]=Imagini (GIF, PNG, BMP, ...) +Name[ru]=Изображения (GIF, PNG, BMP, ...) +Name[si]=පින්තූර (GIF, PNG, BMP, ...) +Name[sk]=Obrázky (GIF, PNG, BMP, ...) +Name[sl]=Slike (GIF, PNG, BMP, ...) +Name[sr]=Слике (ГИФ, ПНГ, БМП...) +Name[sr@ijekavian]=Слике (ГИФ, ПНГ, БМП...) +Name[sr@ijekavianlatin]=Slike (GIF, PNG, BMP...) +Name[sr@latin]=Slike (GIF, PNG, BMP...) +Name[sv]=Bilder (GIF, PNG, BMP, ...) +Name[tg]=Тасвирҳо (GIF, PNG, BMP, ...) +Name[th]=แฟ้มภาพต่าง ๆ (GIF, PNG, BMP, ...) +Name[tr]=Resimler (GIF, PNG, BMP, ...) +Name[ug]=سۈرەتلەر (GIF, PNG, BMP, ...) +Name[uk]=Зображення (GIF, PNG, BMP…) +Name[vi]=Ảnh (GIF, PNG, BMP,... ) +Name[wa]=ImÃ¥djes (GIF, PNG, BMP...) +Name[x-test]=xxImages (GIF, PNG, BMP, ...)xx +Name[zh_CN]=图像 (GIF、PNG、BMP ...) +Name[zh_TW]=影像(GIF、PNG、BMP...) +X-KDE-ServiceTypes=ThumbCreator +MimeType=image/cgm;image/fax-g3;image/gif;image/jp2;image/png;image/tiff;image/bmp;image/x-dds;image/x-jng;image/x-pcx;image/vnd.zbrush.pcx;image/x-photo-cd;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-rgb;image/x-tga;image/x-xbitmap;image/x-xcf;image/x-xpixmap;image/x-sun-raster;image/vnd.adobe.photoshop;image/x-psd;image/x-hdr;image/x-pic;image/x-icon;image/x-webp;image/webp;image/x-icns;video/x-mng;image/rle; +X-KDE-Library=imagethumbnail +CacheThumbnail=true diff --git a/thumbnail/jpegcreator.cpp b/thumbnail/jpegcreator.cpp new file mode 100644 index 0000000..7eeedb5 --- /dev/null +++ b/thumbnail/jpegcreator.cpp @@ -0,0 +1,74 @@ +/* This file is part of the KDE libraries + Copyright (C) 2008 Andre Gemünd + Copyright (C) 2016 Alexander Volkov + + 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 "jpegcreator.h" +#include "jpegcreatorsettings5.h" + +#include +#include +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new JpegCreator; + } +} + +JpegCreator::JpegCreator() +{ +} + +bool JpegCreator::create(const QString &path, int width, int height, QImage &image) +{ + QImageReader imageReader(path, "jpeg"); + + const QSize imageSize = imageReader.size(); + if (imageSize.isValid() && (imageSize.width() > width || imageSize.height() > height)) { + const QSize thumbnailSize = imageSize.scaled(width, height, Qt::KeepAspectRatio); + imageReader.setScaledSize(thumbnailSize); // fast downscaling + } + imageReader.setQuality(75); // set quality so that the jpeg handler will use a high quality downscaler + + JpegCreatorSettings* settings = JpegCreatorSettings::self(); + settings->load(); + imageReader.setAutoTransform(settings->rotate()); + + return imageReader.read(&image); +} + +QWidget *JpegCreator::createConfigurationWidget() +{ + QCheckBox *rotateCheckBox = new QCheckBox(i18nc("@option:check", "Rotate the image automatically")); + rotateCheckBox->setChecked(JpegCreatorSettings::rotate()); + return rotateCheckBox; +} + +void JpegCreator::writeConfiguration(const QWidget *configurationWidget) +{ + const QCheckBox *rotateCheckBox = qobject_cast(configurationWidget); + if (rotateCheckBox) { + JpegCreatorSettings* settings = JpegCreatorSettings::self(); + settings->setRotate(rotateCheckBox->isChecked()); + settings->save(); + } +} diff --git a/thumbnail/jpegcreator.h b/thumbnail/jpegcreator.h new file mode 100644 index 0000000..08dcbdb --- /dev/null +++ b/thumbnail/jpegcreator.h @@ -0,0 +1,36 @@ +/* This file is part of the KDE libraries + Copyright (C) 2008 Andre Gemünd + + 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 _JPEGCREATOR_H_ +#define _JPEGCREATOR_H_ + +#include + +class QTransform; + +class JpegCreator : public ThumbCreator +{ +public: + JpegCreator(); + bool create(const QString &path, int, int, QImage &img) override; + QWidget *createConfigurationWidget() override; + void writeConfiguration(const QWidget *configurationWidget) override; +}; + +#endif diff --git a/thumbnail/jpegcreatorsettings5.kcfg b/thumbnail/jpegcreatorsettings5.kcfg new file mode 100644 index 0000000..a716216 --- /dev/null +++ b/thumbnail/jpegcreatorsettings5.kcfg @@ -0,0 +1,13 @@ + + + + + + + true + + + diff --git a/thumbnail/jpegcreatorsettings5.kcfgc b/thumbnail/jpegcreatorsettings5.kcfgc new file mode 100644 index 0000000..4842421 --- /dev/null +++ b/thumbnail/jpegcreatorsettings5.kcfgc @@ -0,0 +1,4 @@ +File=jpegcreatorsettings5.kcfg +ClassName=JpegCreatorSettings +Singleton=true +Mutators=true diff --git a/thumbnail/jpegthumbnail.desktop b/thumbnail/jpegthumbnail.desktop new file mode 100644 index 0000000..ea238e5 --- /dev/null +++ b/thumbnail/jpegthumbnail.desktop @@ -0,0 +1,79 @@ +[Desktop Entry] +Type=Service +Name=JPEG Images +Name[ar]=صور JPEG +Name[bg]=Изображения JPEG +Name[bn]=JPEG ছবি +Name[bs]=JPEG slike +Name[ca]=Imatges JPEG +Name[ca@valencia]=Imatges JPEG +Name[cs]=JPEG obrázky +Name[csb]=Òbrôzczi JPEG +Name[da]=JPEG-billeder +Name[de]=JPEG-Bilder +Name[el]=Εικόνες JPEG +Name[en_GB]=JPEG Images +Name[eo]=JPEG-bildoj +Name[es]=Imágenes JPEG +Name[et]=JPEG pildid +Name[eu]=JPEG irudiak +Name[fa]=تصاویر JPEG +Name[fi]=JPEG-kuvat +Name[fr]=Images JPEG +Name[fy]=JPEG-ôfbyldings +Name[ga]=Íomhánna JPEG +Name[gl]=Imaxes JPEG +Name[gu]=JPEG ચિત્રો +Name[he]=תמונות JPEG +Name[hi]=जेपीजी छवियाँ +Name[hr]=JPEG slike +Name[hu]=JPEG-képek +Name[ia]=Imagines JPEG +Name[id]=Citra JPEG +Name[is]=JPEG myndir +Name[it]=Immagini JPEG +Name[ja]=JPEG 画像 +Name[kk]=JPEG кескіндері +Name[km]=រូបភាព JPEG +Name[kn]=JPEG ಚಿತ್ರಗಳು +Name[ko]=JPEG 그림 +Name[lt]=JPEG paveikslai +Name[lv]=JPEG attēli +Name[mai]=JPEG चित्र +Name[mk]=JPEG-слики +Name[ml]=ജെപെഗ് ചിത്രങ്ങള്‍ +Name[mr]=JPEG प्रतिमा +Name[nb]=JPEG-bilder +Name[nds]=JPEG-Biller +Name[nl]=JPEG-afbeeldingen +Name[nn]=JPEG-bilete +Name[pa]=JPEG ਚਿੱਤਰ +Name[pl]=Obrazy JPEG +Name[pt]=Imagens JPEG +Name[pt_BR]=Imagens JPEG +Name[ro]=Imagini JPEG +Name[ru]=Изображения JPEG +Name[si]=JPEG පින්තූර +Name[sk]=Obrázky JPEG +Name[sl]=Slike JPEG +Name[sr]=ЈПЕГ слике +Name[sr@ijekavian]=ЈПЕГ слике +Name[sr@ijekavianlatin]=JPEG slike +Name[sr@latin]=JPEG slike +Name[sv]=JPEG-bilder +Name[tg]=Тасвирҳои JPEG +Name[th]=แฟ้มภาพประเภท JPEG +Name[tr]=JPEG Resimleri +Name[ug]=JPEG سۈرەتلەر +Name[uk]=Зображення JPEG +Name[vi]=Ảnh JPEG +Name[wa]=ImÃ¥djes JPEG +Name[x-test]=xxJPEG Imagesxx +Name[zh_CN]=JPEG 图像 +Name[zh_TW]=JPEG 影像 +X-KDE-ServiceTypes=ThumbCreator +MimeType=image/jpeg; +X-KDE-Library=jpegthumbnail +CacheThumbnail=true +Configurable=true +ThumbnailerVersion=2 diff --git a/thumbnail/kraorathumbnail.desktop b/thumbnail/kraorathumbnail.desktop new file mode 100644 index 0000000..f8f4310 --- /dev/null +++ b/thumbnail/kraorathumbnail.desktop @@ -0,0 +1,48 @@ +[Desktop Entry] +Type=Service +Name=Krita Documents +Name[ca]=Documents del Krita +Name[ca@valencia]=Documents del Krita +Name[cs]=Dokumenty Krita +Name[da]=Krita-dokumenter +Name[de]=Krita-Dokumente +Name[el]=Τεκμηρίωση Krita +Name[en_GB]=Krita Documents +Name[es]=Documentos de Krita +Name[et]=Krita dokumendid +Name[eu]=Krita dokumentuak +Name[fi]=Krita-tiedostot +Name[fr]=Documents Krita +Name[gl]=Documentos de Krita +Name[hu]=Krita dokumentumok +Name[ia]=Documentos de Krita +Name[id]=Dokumen Krita +Name[is]=Krita skjöl +Name[it]=Documenti di Krita +Name[ko]=Krita 문서 +Name[lt]=Krita dokumentai +Name[nb]=Krita-dokumenter +Name[nl]=Krita-documenten +Name[nn]=Krita-dokument +Name[pl]=Dokumenty Krita +Name[pt]=Documentos do Krita +Name[pt_BR]=Documentos do Krita +Name[ru]=Документы Krita +Name[sk]=Dokumenty Krita +Name[sl]=Dokumenti za Krito +Name[sr]=Критини документи +Name[sr@ijekavian]=Критини документи +Name[sr@ijekavianlatin]=Kritini dokumenti +Name[sr@latin]=Kritini dokumenti +Name[sv]=Krita-dokument +Name[tr]=Krita Belgeleri +Name[uk]=Документи Krita +Name[x-test]=xxKrita Documentsxx +Name[zh_CN]=Krita 文档 +Name[zh_TW]=Krita 文件 + +X-KDE-ServiceTypes=ThumbCreator +MimeType=application/x-krita;image/openraster; + +X-KDE-Library=kritathumbnail +CacheThumbnail=true diff --git a/thumbnail/kritacreator.cpp b/thumbnail/kritacreator.cpp new file mode 100644 index 0000000..4509276 --- /dev/null +++ b/thumbnail/kritacreator.cpp @@ -0,0 +1,103 @@ +/* This file is part of the Calligra project. + Copyright 2015 Friedrich W. H. Kossebau + + 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 "kritacreator.h" + +#include + +// Qt +#include +#include +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new KritaCreator; + } +} + +KritaCreator::KritaCreator() +{ +} + +KritaCreator::~KritaCreator() +{ +} + +bool KritaCreator::create(const QString &path, int width, int height, QImage &image) +{ + // for now just rely on the rendered data inside the file, + // do not load Krita code for rendering ourselves, as that currently (2.9) + // means loading all plugins, resources etc. + KZip zip(path); + if (!zip.open(QIODevice::ReadOnly)) { + return false; + } + + QImage thumbnail; + bool biggerSizeNeeded = true; + + // first check if normal thumbnail is good enough + // ORA thumbnail? + const KArchiveEntry *entry = zip.directory()->entry(QLatin1String("Thumbnails/thumbnail.png")); + // KRA thumbnail + if (!entry || !entry->isFile()) { + entry = zip.directory()->entry(QLatin1String("preview.png")); + } + + if (!entry || !entry->isFile()) { + return false; + } + + const KZipFileEntry* fileZipEntry = static_cast(entry); + bool thumbLoaded = thumbnail.loadFromData(fileZipEntry->data(), "PNG"); + if (thumbLoaded) { + biggerSizeNeeded = (thumbnail.width() < width || thumbnail.height() < height); + } + + if (biggerSizeNeeded || !thumbLoaded) { + entry = zip.directory()->entry(QLatin1String("mergedimage.png")); + } + + if (entry && entry->isFile()) { + fileZipEntry = static_cast(entry); + thumbLoaded = thumbnail.loadFromData(fileZipEntry->data(), "PNG"); + if (thumbLoaded) { + thumbnail = thumbnail.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation); + } else { + return false; + } + } + + if (!thumbnail.isNull()) { + // transparent areas put a white background behind the thumbnail + // (or better checkerboard?) + image = QImage(thumbnail.size(), QImage::Format_RGB32); + image.fill(QColor(Qt::white).rgb()); + QPainter p(&image); + p.drawImage(QPoint(0, 0), thumbnail); + + return true; + } + + return false; +} diff --git a/thumbnail/kritacreator.h b/thumbnail/kritacreator.h new file mode 100644 index 0000000..1108132 --- /dev/null +++ b/thumbnail/kritacreator.h @@ -0,0 +1,40 @@ +/* This file is part of the Calligra project. + Copyright 2015 Friedrich W. H. Kossebau + + 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 _KRITACREATOR_H_ +#define _KRITACREATOR_H_ + +#include + +// KDE +#include + +/** + * The Krita thumbnail creator can create thumbnails for krita and openraster images + */ +class KritaCreator : public ThumbCreator +{ +public: + KritaCreator(); + ~KritaCreator() override; + + bool create(const QString &path, int width, int height, QImage &image) override; +}; + +#endif diff --git a/thumbnail/opendocumentcreator.cpp b/thumbnail/opendocumentcreator.cpp new file mode 100644 index 0000000..0bc558c --- /dev/null +++ b/thumbnail/opendocumentcreator.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2018-2019 Kai Uwe Broulik + * + * 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) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * 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, see . + */ + +#include "opendocumentcreator.h" + +#include +#include +#include + +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new OpenDocumentCreator; + } +} + +OpenDocumentCreator::OpenDocumentCreator() = default; + +OpenDocumentCreator::~OpenDocumentCreator() = default; + +bool OpenDocumentCreator::create(const QString &path, int width, int height, QImage &image) +{ + Q_UNUSED(width); + Q_UNUSED(height); + + KZip zip(path); + if (!zip.open(QIODevice::ReadOnly)) { + return false; + } + + // Open Document + const KArchiveEntry *entry = zip.directory()->entry(QStringLiteral("Thumbnails/thumbnail.png")); + + if (entry && entry->isFile()) { + const KZipFileEntry *zipFileEntry = static_cast(entry); + + if (image.loadFromData(zipFileEntry->data(), "PNG")) { + return true; + } + } + + // Open Packaging Conventions (e.g. Office "Open" XML) + const KArchiveEntry *relsEntry = zip.directory()->entry(QStringLiteral("_rels/.rels")); + if (relsEntry && relsEntry->isFile()) { + const auto *relsFileEntry = static_cast(relsEntry); + + QScopedPointer relsDevice(relsFileEntry->createDevice()); + + QString thumbnailPath; + + QXmlStreamReader xml(relsDevice.data()); + while (!xml.atEnd() && !xml.hasError()) { + xml.readNext(); + if (xml.isStartElement() && xml.name() == QLatin1String("Relationship")) { + const auto attributes = xml.attributes(); + if (attributes.value(QStringLiteral("Type")) == QLatin1String("http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail")) { + thumbnailPath = attributes.value(QStringLiteral("Target")).toString(); + break; + } + } + } + + if (!thumbnailPath.isEmpty()) { + const auto *thumbnailEntry = zip.directory()->entry(thumbnailPath); + if (thumbnailEntry && thumbnailEntry->isFile()) { + return image.loadFromData(static_cast(thumbnailEntry)->data()); + } + } + } + + return false; +} diff --git a/thumbnail/opendocumentcreator.h b/thumbnail/opendocumentcreator.h new file mode 100644 index 0000000..a58afe9 --- /dev/null +++ b/thumbnail/opendocumentcreator.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2018 Kai Uwe Broulik + * + * 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) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * 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, see . + */ + +#pragma once + +#include + +class OpenDocumentCreator : public ThumbCreator +{ +public: + OpenDocumentCreator(); + ~OpenDocumentCreator() override; + + bool create(const QString &path, int width, int height, QImage &image) override; + +}; diff --git a/thumbnail/opendocumentthumbnail.desktop b/thumbnail/opendocumentthumbnail.desktop new file mode 100644 index 0000000..7413f48 --- /dev/null +++ b/thumbnail/opendocumentthumbnail.desktop @@ -0,0 +1,40 @@ +[Desktop Entry] +Type=Service +Name=Office Documents +Name[ca]=Documents de l'Office +Name[ca@valencia]=Documents de l'Office +Name[cs]=Kancelářské dokumenty +Name[da]=Office-dokumenter +Name[de]=Office-Dokumente +Name[el]=Έγγραφα Office +Name[en_GB]=Office Documents +Name[es]=Documentos de Office +Name[et]=Kontoritöö rakenduste dokumendid +Name[eu]=Bulegotika dokumentuak +Name[fi]=Toimistotiedostot +Name[fr]=Documents Office +Name[gl]=Documentos de oficina +Name[ia]=Documentos de Office +Name[it]=Documenti d'ufficio +Name[ja]=Office ドキュメント +Name[ko]=오피스 문서 +Name[lt]=RaÅ¡tinės dokumentai +Name[nl]=Kantoordocumenten +Name[nn]=Kontordokument +Name[pl]=Dokumenty biurowe +Name[pt]=Documentos de Escritório +Name[pt_BR]=Documentos de escritório +Name[ru]=Документы +Name[sk]=Kancelárske dokumenty +Name[sl]=PisarniÅ¡ki dokumenti +Name[sv]=Kontorsdokument +Name[uk]=Офісні документи +Name[x-test]=xxOffice Documentsxx +Name[zh_CN]=Office 文档 +Name[zh_TW]=Office 文件 + +X-KDE-ServiceTypes=ThumbCreator +MimeType=application/vnd.oasis.opendocument.text;application/vnd.oasis.opendocument.text-template;application/vnd.oasis.opendocument.text-master;application/vnd.oasis.opendocument.text-master-template;application/vnd.oasis.opendocument.spreadsheet;application/vnd.oasis.opendocument.spreadsheet-template;application/vnd.oasis.opendocument.graphics;application/vnd.oasis.opendocument.graphics-template;application/vnd.oasis.opendocument.presentation;application/vnd.oasis.opendocument.presentation-template;application/vnd.oasis.opendocument.formula;application/vnd.oasis.opendocument.formula-template;application/vnd.oasis.opendocument.chart;application/vnd.oasis.opendocument.chart-template;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.openxmlformats-officedocument.wordprocessingml.template;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/vnd.openxmlformats-officedocument.presentationml.template;application/vnd.openxmlformats-officedocument.presentationml.slideshow;vnd.openxmlformats-officedocument.presentationml.slide;application/oxps;application/vnd.ms-xpsdocument;application/vnd.ms-printing.printticket+xml + +X-KDE-Library=opendocumentthumbnail +CacheThumbnail=true diff --git a/thumbnail/svgcreator.cpp b/thumbnail/svgcreator.cpp new file mode 100644 index 0000000..83eb64c --- /dev/null +++ b/thumbnail/svgcreator.cpp @@ -0,0 +1,54 @@ +/* This file is part of the KDE libraries + Copyright (c) 2006 Pascal Létourneau + + 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 "svgcreator.h" + +#include +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new SvgCreator; + } +} + +bool SvgCreator::create(const QString &path, int w, int h, QImage &img) +{ + QSvgRenderer r(path); + if ( !r.isValid() ) + return false; + + // render using the correct ratio + const double ratio = static_cast(r.defaultSize().height()) / + static_cast(r.defaultSize().width()); + if (w < h) + h = qRound(ratio * w); + else + w = qRound(h / ratio); + + QImage i(w, h, QImage::Format_ARGB32_Premultiplied); + i.fill(0); + QPainter p(&i); + r.render(&p); + img = i; + return true; +} diff --git a/thumbnail/svgcreator.h b/thumbnail/svgcreator.h new file mode 100644 index 0000000..ae11d94 --- /dev/null +++ b/thumbnail/svgcreator.h @@ -0,0 +1,32 @@ +/* This file is part of the KDE libraries + Copyright (c) 2006 Pascal Létourneau + + 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 _SVGCREATOR_H_ +#define _SVGCREATOR_H_ + +#include + +class SvgCreator : public ThumbCreator +{ +public: + SvgCreator() {} + bool create(const QString &path, int w, int h, QImage &img) override; +}; + +#endif diff --git a/thumbnail/svgthumbnail.desktop b/thumbnail/svgthumbnail.desktop new file mode 100644 index 0000000..30a34c0 --- /dev/null +++ b/thumbnail/svgthumbnail.desktop @@ -0,0 +1,77 @@ +[Desktop Entry] +Type=Service +Name=SVG Images +Name[ar]=صور SVG +Name[bg]=Изображения SVG +Name[bn]=SVG ছবি +Name[bs]=SVG slike +Name[ca]=Imatges SVG +Name[ca@valencia]=Imatges SVG +Name[cs]=SVG obrázky +Name[csb]=Òbrôzczi SVG +Name[da]=SVG-billeder +Name[de]=SVG-Bilder +Name[el]=Εικόνες SVG +Name[en_GB]=SVG Images +Name[eo]=SVG-bildoj +Name[es]=Imágenes SVG +Name[et]=SVG pildid +Name[eu]=SVG irudiak +Name[fa]=تصاویر SVG +Name[fi]=SVG-kuvat +Name[fr]=Images SVG +Name[fy]=SVG-ôfbyldings +Name[ga]=Íomhánna SVG +Name[gl]=Imaxes SVG +Name[gu]=SVG ચિત્રો +Name[he]=תמונות SVG +Name[hi]=एसवीजी छवियाँ +Name[hr]=SVG slike +Name[hu]=SVG-képek +Name[ia]=Imagines SVG +Name[id]=Citra SVG +Name[is]=SVG myndir +Name[it]=Immagini SVG +Name[ja]=SVG 画像 +Name[kk]=SVG кескіндері +Name[km]=រូបភាព SVG +Name[kn]=SVG ಚಿತ್ರಗಳು +Name[ko]=SVG 그림 +Name[lt]=SVG paveikslai +Name[lv]=SVG attēli +Name[mai]=SVG चित्र +Name[mk]=SVG-слики +Name[ml]=എസ്‌വിജി ചിത്രങ്ങള്‍ +Name[mr]=SVG प्रतिमा +Name[nb]=SVG-bilder +Name[nds]=SVG-Biller +Name[nl]=SVG-afbeeldingen +Name[nn]=SVG-bilete +Name[pa]=SVG ਚਿੱਤਰ +Name[pl]=Obrazy SVG +Name[pt]=Imagens SVG +Name[pt_BR]=Imagens SVG +Name[ro]=Imagini SVG +Name[ru]=Изображения SVG +Name[si]=SVG පින්තූර +Name[sk]=Obrázky SVG +Name[sl]=Slike SVG +Name[sr]=СВГ слике +Name[sr@ijekavian]=СВГ слике +Name[sr@ijekavianlatin]=SVG slike +Name[sr@latin]=SVG slike +Name[sv]=SVG-bilder +Name[tg]=Тасвирҳои SVG +Name[th]=แฟ้มภาพประเภท SVG +Name[tr]=SVG Resimleri +Name[ug]=SVG سۈرەتلەر +Name[uk]=Зображення SVG +Name[vi]=Ảnh SVG +Name[wa]=ImÃ¥djes SVG +Name[x-test]=xxSVG Imagesxx +Name[zh_CN]=SVG 图像 +Name[zh_TW]=SVG 影像 +X-KDE-ServiceTypes=ThumbCreator +MimeType=image/svg+xml;image/svg+xml-compressed; +X-KDE-Library=svgthumbnail +CacheThumbnail=true diff --git a/thumbnail/textcreator.cpp b/thumbnail/textcreator.cpp new file mode 100644 index 0000000..f6671f9 --- /dev/null +++ b/thumbnail/textcreator.cpp @@ -0,0 +1,180 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000,2002 Carsten Pfeiffer + 2000 Malte Starostik + + 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 "textcreator.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +// TODO Fix or remove kencodingprober code +// #include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new TextCreator; + } +} + +TextCreator::TextCreator() + : m_data(nullptr), + m_dataSize(0) +{ +} + +TextCreator::~TextCreator() +{ + delete [] m_data; +} + +static QTextCodec *codecFromContent(const char *data, int dataSize) +{ +#if 0 // ### Use this when KEncodingProber does not return junk encoding for UTF-8 data) + KEncodingProber prober; + prober.feed(data, dataSize); + return QTextCodec::codecForName(prober.encoding()); +#else + QByteArray ba = QByteArray::fromRawData(data, dataSize); + // try to detect UTF text, fall back to locale default (which is usually UTF-8) + return QTextCodec::codecForUtfText(ba, QTextCodec::codecForLocale()); +#endif +} + +bool TextCreator::create(const QString &path, int width, int height, QImage &img) +{ + // Desktop files, .directory files, and flatpakrefs aren't traditional + // text files, so their icons should be shown instead + if (KDesktopFile::isDesktopFile(path) + || path.endsWith(QStringLiteral(".directory")) + || path.endsWith(QStringLiteral(".flatpakref")) + ) { + return false; + } + + bool ok = false; + + // determine some sizes... + // example: width: 60, height: 64 + QSize pixmapSize( width, height ); + if (height * 3 > width * 4) + pixmapSize.setHeight( width * 4 / 3 ); + else + pixmapSize.setWidth( height * 3 / 4 ); + + if ( pixmapSize != m_pixmap.size() ) + m_pixmap = QPixmap( pixmapSize ); + + // one pixel for the rectangle, the rest. whitespace + int xborder = 1 + pixmapSize.width()/16; // minimum x-border + int yborder = 1 + pixmapSize.height()/16; // minimum y-border + + // this font is supposed to look good at small sizes + QFont font = QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont); + + font.setPixelSize( qMax(7, qMin( 10, ( pixmapSize.height() - 2 * yborder ) / 16 ) ) ); + QFontMetrics fm( font ); + + // calculate a better border so that the text is centered + const QSizeF canvasSize(pixmapSize.width() - 2 * xborder, pixmapSize.height() - 2 * yborder); + const int numLines = (int) (canvasSize.height() / fm.height()); + + // assumes an average line length of <= 120 chars + const int bytesToRead = 120 * numLines; + + // create text-preview + QFile file( path ); + if ( file.open( QIODevice::ReadOnly )) + { + if ( !m_data || m_dataSize < bytesToRead + 1 ) + { + delete [] m_data; + m_data = new char[bytesToRead+1]; + m_dataSize = bytesToRead + 1; + } + + int read = file.read( m_data, bytesToRead ); + if ( read > 0 ) + { + ok = true; + m_data[read] = '\0'; + QString text = codecFromContent( m_data, read )->toUnicode( m_data, read ).trimmed(); + // FIXME: maybe strip whitespace and read more? + + // If the text contains tabs or consecutive spaces, it is probably + // formatted using white space. Use a fixed pitch font in this case. + const auto textLines = text.splitRef(QLatin1Char('\n')); + for (const auto& line : textLines) { + const auto trimmedLine = line.trimmed(); + if ( trimmedLine.contains( '\t' ) || trimmedLine.contains( " " ) ) { + font.setFamily( QFontDatabase::systemFont(QFontDatabase::FixedFont).family()); + break; + } + } + + QColor bgColor = QColor ( 245, 245, 245 ); // light-grey background + m_pixmap.fill( bgColor ); + + QPainter painter( &m_pixmap ); + + QTextDocument textDocument(text); + + // QTextDocument only supports one margin value for all borders, + // so we do a page-in-page behind its back, and do our own borders + textDocument.setDocumentMargin(0); + textDocument.setPageSize(canvasSize); + textDocument.setDefaultFont(font); + + QTextOption textOption( Qt::AlignTop | Qt::AlignLeft ); + textOption.setTabStopDistance(8 * painter.fontMetrics().horizontalAdvance(QLatin1Char(' '))); + textOption.setWrapMode( QTextOption::WrapAtWordBoundaryOrAnywhere ); + textDocument.setDefaultTextOption(textOption); + + KSyntaxHighlighting::SyntaxHighlighter syntaxHighlighter; + syntaxHighlighter.setDefinition(m_highlightingRepository.definitionForFileName(path)); + const auto highlightingTheme = m_highlightingRepository.defaultTheme(KSyntaxHighlighting::Repository::LightTheme); + syntaxHighlighter.setTheme(highlightingTheme); + syntaxHighlighter.setDocument(&textDocument); + syntaxHighlighter.rehighlight(); + + // draw page-in-page, with clipping as needed + painter.translate(xborder, yborder); + textDocument.drawContents(&painter, QRectF(QPointF(0, 0), canvasSize)); + + painter.end(); + + img = m_pixmap.toImage(); + } + + file.close(); + } + return ok; +} diff --git a/thumbnail/textcreator.h b/thumbnail/textcreator.h new file mode 100644 index 0000000..172ab3a --- /dev/null +++ b/thumbnail/textcreator.h @@ -0,0 +1,42 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000 Malte Starostik + + 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 _TEXTCREATOR_H_ +#define _TEXTCREATOR_H_ + +#include +#include +#include + +class TextCreator : public ThumbCreator +{ +public: + TextCreator(); + ~TextCreator() override; + bool create(const QString &path, int width, int height, QImage &img) override; + +private: + char *m_data; + int m_dataSize; + QPixmap m_pixmap; + + KSyntaxHighlighting::Repository m_highlightingRepository; +}; + +#endif diff --git a/thumbnail/textthumbnail.desktop b/thumbnail/textthumbnail.desktop new file mode 100644 index 0000000..ed302a7 --- /dev/null +++ b/thumbnail/textthumbnail.desktop @@ -0,0 +1,97 @@ +[Desktop Entry] +Type=Service +Name=Text Files +Name[af]=Tekslêers +Name[ar]=ملفّات نصّيّة +Name[be]=Тэкставыя файлы +Name[be@latin]=Tekstavyja fajły +Name[bg]=Текстови файлове +Name[bn]=টেক্সট ফাইল +Name[bn_IN]=টেক্সট ফাইল +Name[br]=Restroù testenn +Name[bs]=Tekstualni datoteke +Name[ca]=Fitxers de text +Name[ca@valencia]=Fitxers de text +Name[cs]=Textové soubory +Name[csb]=Tekstowé lopczi +Name[cy]=Ffeiliau Testun +Name[da]=Tekstfiler +Name[de]=Textdateien +Name[el]=Αρχεία κειμένου +Name[en_GB]=Text Files +Name[eo]=Tekstaj dosieroj +Name[es]=Archivos de texto +Name[et]=Tekstifailid +Name[eu]=Testu-fitxategiak +Name[fa]=پرونده‌های متنی +Name[fi]=Tekstitiedostot +Name[fr]=Fichiers de texte +Name[fy]=Teksttriemmen +Name[ga]=Téacschomhaid +Name[gl]=Ficheiros de texto +Name[gu]=લખાણ ફાઇલો +Name[he]=קבצי טקסט +Name[hi]=पाठ फ़ाइलें +Name[hne]=पाठ फाइल मन ल +Name[hr]=Tekstualne datoteke +Name[hsb]=Tekstowe dataje +Name[hu]=Szöveges fájlok +Name[ia]=Files de texto +Name[id]=File Teks +Name[is]=Textaskrár +Name[it]=File di testo +Name[ja]=テキストファイル +Name[ka]=ტექსტური ფაილები +Name[kk]=Мәтін файлдары +Name[km]=ឯកសារ​អត្ថបទ +Name[kn]=ಪಠ್ಯ ಕಡತಗಳು +Name[ko]=텍스트 파일 +Name[ku]=Pelê Nivîsarê +Name[lt]=Tekstiniai failai +Name[lv]=Teksta faili +Name[mai]=पाठ फाइल +Name[mk]=Текстуални датотеки +Name[ml]=ടെക്സ്റ്റ് ഫയലുകള്‍ +Name[mr]=पाठ्य फाईल +Name[ms]=Fail Teks +Name[nb]=Tekstfiler +Name[nds]=Textdateien +Name[ne]=पाठ फाइल +Name[nl]=Tekstbestanden +Name[nn]=Tekstfiler +Name[oc]=Fichièrs tèxt +Name[or]=ପାଠ୍ୟ ଫାଇଲଗୁଡ଼ିକ +Name[pa]=ਟੈਕਸਟ ਫਾਈਲਾਂ +Name[pl]=Pliki tekstowe +Name[pt]=Ficheiros de Texto +Name[pt_BR]=Arquivos de texto +Name[ro]=Fișiere textuale +Name[ru]=Текстовые файлы +Name[se]=Teakstafiilat +Name[si]=පෙළ ගොනු +Name[sk]=Textové súbory +Name[sl]=Besedilne datoteke +Name[sr]=Текстуални фајлови +Name[sr@ijekavian]=Текстуални фајлови +Name[sr@ijekavianlatin]=Tekstualni fajlovi +Name[sr@latin]=Tekstualni fajlovi +Name[sv]=Textfiler +Name[ta]=உரை கோப்புகள் +Name[te]=వచన దస్త్రాలు +Name[tg]=Файлҳои матнӣ +Name[th]=แฟ้มข้อความ +Name[tr]=Metin Dosyaları +Name[ug]=تېكىست ھۆججەتلەر +Name[uk]=Текстові файли +Name[uz]=Matn fayllari +Name[uz@cyrillic]=Матн файллари +Name[vi]=Tệp Văn bản +Name[wa]=Fitchîs tecse +Name[xh]=Iifayile Zombhalo +Name[x-test]=xxText Filesxx +Name[zh_CN]=文本文件 +Name[zh_TW]=文字檔案 +X-KDE-ServiceTypes=ThumbCreator +MimeType=text/plain; +X-KDE-Library=textthumbnail +CacheThumbnail=false diff --git a/thumbnail/thumbcreator.desktop b/thumbnail/thumbcreator.desktop new file mode 100644 index 0000000..ba15047 --- /dev/null +++ b/thumbnail/thumbcreator.desktop @@ -0,0 +1,96 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=ThumbCreator +Comment=Thumbnail Handler +Comment[af]=Duimnaelhandteerder +Comment[ar]=المتعامل مع المصغّرات +Comment[be]=Апрацоўшчык мініяцюраў +Comment[be@latin]=Stvareńnie padhladaÅ­ +Comment[bg]=Манипулатор на мини изображения +Comment[bn]=থাম্বনেইল হ্যাণ্ডলার +Comment[bn_IN]=থাম্‌ব-নেইল হ্যান্ডলার +Comment[bs]=Rukovalac sličicama +Comment[ca]=Gestor de miniatures +Comment[ca@valencia]=Gestor de miniatures +Comment[cs]=Ovladač miniatur +Comment[csb]=Programa òbsłùżënkù miniaturków +Comment[cy]=Trinydd Lluniau Cryno +Comment[da]=MiniaturehÃ¥ndtering +Comment[de]=Minibild-Verwaltung +Comment[el]=Χειριστής εικόνας επισκόπησης +Comment[en_GB]=Thumbnail Handler +Comment[eo]=Traktilo de miniaturoj +Comment[es]=Manejador de miniaturas +Comment[et]=Pisipiltide käsitlemine +Comment[eu]=Koadro txikien maneiatzailea +Comment[fa]=گرداننده ریزنقش +Comment[fi]=Pienoiskuvien hallinta +Comment[fr]=Gestionnaire de vignettes +Comment[fy]=Miniatueren ôfhanneler +Comment[ga]=Láimhseálaí na Mionsamhlacha +Comment[gl]=Xestor de miniaturas +Comment[gu]=થમ્બનીલ સંભાળનાર +Comment[he]=מטפל בתמונות ממוזערות +Comment[hi]=थम्बनेल हैंडलर +Comment[hne]=थम्बनेल हेंडलर +Comment[hr]=Rukovatelj sličicama +Comment[hsb]=Thumbnail Handler +Comment[hu]=A gyorsnézeti ikonok kezelője +Comment[ia]=Manipulator de miniatura +Comment[id]=Penanganan Gambar-mini +Comment[is]=Smámyndameðhöndlun +Comment[it]=Gestore delle miniature +Comment[ja]=サムネイルハンドラ +Comment[ka]=მინი-გამოსახულების დამმუშავებელი +Comment[kk]=Нобай өңдеуші +Comment[km]=កម្មវិធី​គ្រប់គ្រង​​រូបភាព​តូចៗ +Comment[kn]=ಸೂಚ್ಯಚಿತ್ರ ನಿಭಾರಕ +Comment[ko]=축소판 처리기 +Comment[ku]=Karkerê Serpêçiyê +Comment[lt]=MiniatiÅ«rų doroklė +Comment[lv]=SÄ«ktēlu apstrādātājs +Comment[mai]=थम्बनेल हैंडलर +Comment[mk]=Ракувач со сликички +Comment[ml]=നഖചിത്രങ്ങളെ കൈകാര്യം ച്ചെയ്യാം +Comment[mr]=थम्बनेल आहेंडलर +Comment[ms]=Pengendali Thumbnail +Comment[nb]=HÃ¥ndtering av minibilder +Comment[nds]=Minibildmaker +Comment[ne]=थम्बनेल ह्यान्डलर +Comment[nl]=Miniafbeeldingenmaker +Comment[nn]=Handtering av miniatyrbilete +Comment[or]=କ୍ଷୁଦ୍ରଚିତ୍ର ନିୟନ୍ତ୍ରକ +Comment[pa]=ਥੰਮਨੇਲ ਹੈਂਡਲਰ +Comment[pl]=Program obsługujący miniaturki +Comment[pt]=Tratamento de Miniaturas +Comment[pt_BR]=Manipulador de miniaturas +Comment[ro]=Manipulator miniaturi +Comment[ru]=Показ миниатюр +Comment[se]=Gieđahala ovdačájehemiid +Comment[si]=සිගිති රූ හැසිරුම +Comment[sk]=Podpora náhľadu obrázkov +Comment[sl]=Obdelovalnik sličic +Comment[sr]=Руковалац сличицама +Comment[sr@ijekavian]=Руковалац сличицама +Comment[sr@ijekavianlatin]=Rukovalac sličicama +Comment[sr@latin]=Rukovalac sličicama +Comment[sv]=Hanterar miniatyrbilder +Comment[ta]=சிறிய பிம்ப கையாளுதல் +Comment[te]=Thumbnail సంభాలిక +Comment[tg]=Иҷрокунандаи тасвирчаҳо +Comment[th]=ตัวจัดการภาพตัวอย่าง +Comment[tr]=Küçük Resim Dosyaları Görüntüleyici +Comment[ug]=كىچىك سۈرەت بىر تەرەپ قىلغۇچ +Comment[uk]=Маніпулятор мініатюр +Comment[vi]=Thao tác Hình nhỏ +Comment[wa]=Apougneu des prévoeyaedjes +Comment[xh]=Umqheba Wozipho lobhontsi +Comment[x-test]=xxThumbnail Handlerxx +Comment[zh_CN]=缩略图处理程序 +Comment[zh_TW]=縮圖處理器 + +[PropertyDef::CacheThumbnail] +Type=bool + +[PropertyDef::IgnoreMaximumSize] +Type=bool diff --git a/thumbnail/thumbnail.cpp b/thumbnail/thumbnail.cpp new file mode 100644 index 0000000..f2fbce7 --- /dev/null +++ b/thumbnail/thumbnail.cpp @@ -0,0 +1,730 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000 Malte Starostik + 2000 Carsten Pfeiffer + + 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 "thumbnail.h" +#include "thumbnail-logsettings.h" + +#include +#ifdef __FreeBSD__ + #include +#endif +#include +#ifndef Q_OS_WIN +#include +#include +#include // nice() +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include + +// Use correctly KComponentData instead of KApplication (but then no QPixmap) +#undef USE_KINSTANCE +// Fix thumbnail: protocol +#define THUMBNAIL_HACK (1) + +#ifdef THUMBNAIL_HACK +# include +#endif + +#include "imagefilter.h" + +// Recognized metadata entries: +// mimeType - the mime type of the file, used for the overlay icon if any +// width - maximum width for the thumbnail +// height - maximum height for the thumbnail +// iconSize - the size of the overlay icon to use if any (deprecated, ignored) +// iconAlpha - the transparency value used for icon overlays (deprecated, ignored) +// plugin - the name of the plugin library to be used for thumbnail creation. +// Provided by the application to save an addition KTrader +// query here. +// enabledPlugins - a list of enabled thumbnailer plugins. PreviewJob does not call +// this thumbnail slave when a given plugin isn't enabled. However, +// for directory thumbnails it doesn't know that the thumbnailer +// internally also loads the plugins. +// shmid - the shared memory segment id to write the image's data to. +// The segment is assumed to provide enough space for a 32-bit +// image sized width x height pixels. +// If this is given, the data returned by the slave will be: +// int width +// int height +// int depth +// Otherwise, the data returned is the image in PNG format. + +using namespace KIO; +//using namespace KCodecs; + +extern "C" Q_DECL_EXPORT int kdemain( int argc, char **argv ) +{ +#ifdef HAVE_NICE + nice( 5 ); +#endif + +#ifdef USE_KINSTANCE + KComponentData componentData("kio_thumbnail"); +#else + + QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts); + + // creating KApplication in a slave in not a very good idea, + // as dispatchLoop() doesn't allow it to process its messages, + // so it for example wouldn't reply to ksmserver - on the other + // hand, this slave uses QPixmaps for some reason, and they + // need QApplication + // and HTML previews need even KApplication :( + putenv(strdup("SESSION_MANAGER=")); + + // some thumbnail plugins reuse QWidget-tainted code for the rendering, + // so use QApplication here, not just QGuiApplication + QApplication app(argc, argv); +#endif + + + if (argc != 4) { + qCritical() << "Usage: kio_thumbnail protocol domain-socket1 domain-socket2"; + exit(-1); + } + + ThumbnailProtocol slave(argv[2], argv[3]); + slave.dispatchLoop(); + + return 0; +} + + +ThumbnailProtocol::ThumbnailProtocol(const QByteArray &pool, const QByteArray &app) + : SlaveBase("thumbnail", pool, app), + m_maxFileSize(0) +{ + +} + +ThumbnailProtocol::~ThumbnailProtocol() +{ + qDeleteAll( m_creators ); + m_creators.clear(); +} + +void ThumbnailProtocol::get(const QUrl &url) +{ + m_mimeType = metaData("mimeType"); + m_enabledPlugins = metaData("enabledPlugins").split(QLatin1Char(','), QString::SkipEmptyParts); + if (m_enabledPlugins.isEmpty()) { + const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings"); + m_enabledPlugins = globalConfig.readEntry("Plugins", KIO::PreviewJob::defaultPlugins()); + } + + Q_ASSERT(url.scheme() == "thumbnail"); + QFileInfo info(url.path()); + Q_ASSERT(info.isAbsolute()); + + if (!info.exists()) { + // The file does not exist + error(KIO::ERR_DOES_NOT_EXIST, url.path()); + return; + } else if (!info.isReadable()) { + // The file is not readable! + error(KIO::ERR_CANNOT_READ, url.path()); + return; + } + + //qDebug() << "Wanting MIME Type:" << m_mimeType; +#ifdef THUMBNAIL_HACK + // ### HACK + bool direct=false; + if (m_mimeType.isEmpty()) { + //qDebug() << "PATH: " << url.path() << "isDir:" << info.isDir(); + if (info.isDir()) { + m_mimeType = "inode/directory"; + } else { + const QMimeDatabase db; + + m_mimeType = db.mimeTypeForFile(info).name(); + } + + //qDebug() << "Guessing MIME Type:" << m_mimeType; + direct=true; // thumbnail: URL was probably typed in Konqueror + } +#endif + + if (m_mimeType.isEmpty()) { + error(KIO::ERR_INTERNAL, i18n("No MIME Type specified.")); + return; + } + + m_width = metaData("width").toInt(); + m_height = metaData("height").toInt(); + + if (m_width < 0 || m_height < 0) { + error(KIO::ERR_INTERNAL, i18n("No or invalid size specified.")); + return; + } +#ifdef THUMBNAIL_HACK + else if (!m_width || !m_height) { + //qDebug() << "Guessing height, width, icon size!"; + m_width = 128; + m_height = 128; + } +#endif + + QImage img; + + KConfigGroup group( KSharedConfig::openConfig(), "PreviewSettings" ); + bool kfmiThumb = false; // TODO Figure out if we can use KFileMetadata as a last resource + + if (!kfmiThumb) { + QString plugin = metaData("plugin"); + if ((plugin.isEmpty() || plugin == "directorythumbnail") && m_mimeType == "inode/directory") { + img = thumbForDirectory(info.canonicalFilePath()); + if(img.isNull()) { + error(KIO::ERR_INTERNAL, i18n("Cannot create thumbnail for directory")); + return; + } + } else { +#ifdef THUMBNAIL_HACK + if (plugin.isEmpty()) { + plugin = pluginForMimeType(m_mimeType); + } + + //qDebug() << "Guess plugin: " << plugin; +#endif + if (plugin.isEmpty()) { + error(KIO::ERR_INTERNAL, i18n("No plugin specified.")); + return; + } + + ThumbCreator* creator = getThumbCreator(plugin); + if(!creator) { + error(KIO::ERR_INTERNAL, i18n("Cannot load ThumbCreator %1", plugin)); + return; + } + + ThumbSequenceCreator* sequenceCreator = dynamic_cast(creator); + if(sequenceCreator) + sequenceCreator->setSequenceIndex(sequenceIndex()); + + if (!creator->create(info.canonicalFilePath(), m_width, m_height, img)) { + error(KIO::ERR_INTERNAL, i18n("Cannot create thumbnail for %1", info.canonicalFilePath())); + return; + } + } + } + + scaleDownImage(img, m_width, m_height); + + if (img.isNull()) { + error(KIO::ERR_INTERNAL, i18n("Failed to create a thumbnail.")); + return; + } + + const QString shmid = metaData("shmid"); + if (shmid.isEmpty()) { +#ifdef THUMBNAIL_HACK + if (direct) { + // If thumbnail was called directly from Konqueror, then the image needs to be raw + //qDebug() << "RAW IMAGE TO STREAM"; + QBuffer buf; + if (!buf.open(QIODevice::WriteOnly)) { + error(KIO::ERR_INTERNAL, i18n("Could not write image.")); + return; + } + img.save(&buf,"PNG"); + buf.close(); + mimeType("image/png"); + data(buf.buffer()); + } + else +#endif + { + QByteArray imgData; + QDataStream stream( &imgData, QIODevice::WriteOnly ); + //qDebug() << "IMAGE TO STREAM"; + stream << img; + mimeType("application/octet-stream"); + data(imgData); + } + } else { +#ifndef Q_OS_WIN + QByteArray imgData; + QDataStream stream( &imgData, QIODevice::WriteOnly ); + //qDebug() << "IMAGE TO SHMID"; + void *shmaddr = shmat(shmid.toInt(), nullptr, 0); + if (shmaddr == (void *)-1) { + error(KIO::ERR_INTERNAL, i18n("Failed to attach to shared memory segment %1", shmid)); + return; + } + if (img.width() * img.height() > m_width * m_height) { + error(KIO::ERR_INTERNAL, i18n("Image is too big for the shared memory segment")); + shmdt((char*)shmaddr); + return; + } + if( img.format() != QImage::Format_ARGB32 ) { // KIO::PreviewJob and this code below completely ignores colortable :-/, + img = img.convertToFormat(QImage::Format_ARGB32); // so make sure there is none + } + // Keep in sync with kdelibs/kio/kio/previewjob.cpp + stream << img.width() << img.height() << quint8(img.format()); + memcpy(shmaddr, img.bits(), img.sizeInBytes()); + shmdt((char*)shmaddr); + mimeType("application/octet-stream"); + data(imgData); +#endif + } + finished(); +} + +QString ThumbnailProtocol::pluginForMimeType(const QString& mimeType) { + KService::List offers = KMimeTypeTrader::self()->query( mimeType, QLatin1String("ThumbCreator")); + if (!offers.isEmpty()) { + KService::Ptr serv; + serv = offers.first(); + return serv->library(); + } + + //Match group mimetypes + ///@todo Move this into some central location together with the related matching code in previewjob.cpp. This doesn't handle inheritance and such + const KService::List plugins = KServiceTypeTrader::self()->query("ThumbCreator"); + for (const KService::Ptr& plugin : plugins) { + const QStringList mimeTypes = plugin->serviceTypes(); + for (const QString& mime : mimeTypes) { + if(mime.endsWith('*')) { + const auto mimeGroup = mime.leftRef(mime.length()-1); + if(mimeType.startsWith(mimeGroup)) + return plugin->library(); + } + } + } + + return QString(); +} + +float ThumbnailProtocol::sequenceIndex() const { + return metaData("sequence-index").toFloat(); +} + +bool ThumbnailProtocol::isOpaque(const QImage &image) const +{ + // Test the corner pixels + return qAlpha(image.pixel(QPoint(0, 0))) == 255 && + qAlpha(image.pixel(QPoint(image.width()-1, 0))) == 255 && + qAlpha(image.pixel(QPoint(0, image.height()-1))) == 255 && + qAlpha(image.pixel(QPoint(image.width()-1, image.height()-1))) == 255; +} + +void ThumbnailProtocol::drawPictureFrame(QPainter *painter, const QPoint ¢erPos, + const QImage &image, int frameWidth, QSize imageTargetSize) const +{ + // Scale the image down so it matches the aspect ratio + float scaling = 1.0; + + if ((image.size().width() > imageTargetSize.width()) && (imageTargetSize.width() != 0)) { + scaling = float(imageTargetSize.width()) / float(image.size().width()); + } else if ((image.size().height() > imageTargetSize.height()) && (imageTargetSize.height() != 0)) { + scaling = float(imageTargetSize.height()) / float(image.size().height()); + } + + QImage frame(imageTargetSize + QSize(frameWidth * 2, frameWidth * 2), + QImage::Format_ARGB32); + frame.fill(0); + + float scaledFrameWidth = frameWidth / scaling; + + QTransform m; + m.rotate(qrand() % 17 - 8); // Random rotation ±8° + m.scale(scaling, scaling); + + QRectF frameRect(QPointF(0, 0), QPointF(image.width() + scaledFrameWidth*2, image.height() + scaledFrameWidth*2)); + + QRect r = m.mapRect(QRectF(frameRect)).toAlignedRect(); + + QImage transformed(r.size(), QImage::Format_ARGB32); + transformed.fill(0); + QPainter p(&transformed); + p.setRenderHint(QPainter::SmoothPixmapTransform); + p.setCompositionMode(QPainter::CompositionMode_Source); + + p.translate(-r.topLeft()); + p.setWorldTransform(m, true); + + if (isOpaque(image)) { + p.setRenderHint(QPainter::Antialiasing); + p.setPen(Qt::NoPen); + p.setBrush(Qt::white); + p.drawRoundedRect(frameRect, scaledFrameWidth / 2, scaledFrameWidth / 2); + } + p.drawImage(scaledFrameWidth, scaledFrameWidth, image); + p.end(); + + int radius = qMax(frameWidth, 1); + + QImage shadow(r.size() + QSize(radius * 2, radius * 2), QImage::Format_ARGB32); + shadow.fill(0); + + p.begin(&shadow); + p.setCompositionMode(QPainter::CompositionMode_Source); + p.drawImage(radius, radius, transformed); + p.end(); + + ImageFilter::shadowBlur(shadow, radius, QColor(0, 0, 0, 128)); + + r.moveCenter(centerPos); + + painter->drawImage(r.topLeft() - QPoint(radius / 2, radius / 2), shadow); + painter->drawImage(r.topLeft(), transformed); +} + +QImage ThumbnailProtocol::thumbForDirectory(const QString& directory) +{ + QImage img; + if (m_propagationDirectories.isEmpty()) { + // Directories that the directory preview will be propagated into if there is no direct sub-directories + const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings"); + m_propagationDirectories = globalConfig.readEntry("PropagationDirectories", QStringList() << "VIDEO_TS").toSet(); + m_maxFileSize = globalConfig.readEntry("MaximumSize", std::numeric_limits::max()); + } + + const int tiles = 2; //Count of items shown on each dimension + const int spacing = 1; + const int visibleCount = tiles * tiles; + + // TODO: the margins are optimized for the Oxygen iconset + // Provide a fallback solution for other iconsets (e. g. draw folder + // only as small overlay, use no margins) + + KFileItem item(QUrl::fromLocalFile(directory)); + const int extent = qMin(m_width, m_height); + QPixmap folder = QIcon::fromTheme(item.iconName()).pixmap(extent); + + // Scale up base icon to ensure overlays are rendered with + // the best quality possible even for low-res custom folder icons + if (qMax(folder.width(), folder.height()) < extent) { + folder = folder.scaled(extent, extent, Qt::KeepAspectRatio, Qt::SmoothTransformation); + } + + const int folderWidth = folder.width(); + const int folderHeight = folder.height(); + + const int topMargin = folderHeight * 30 / 100; + const int bottomMargin = folderHeight / 6; + const int leftMargin = folderWidth / 13; + const int rightMargin = leftMargin; + + const int segmentWidth = (folderWidth - leftMargin - rightMargin + spacing) / tiles - spacing; + const int segmentHeight = (folderHeight - topMargin - bottomMargin + spacing) / tiles - spacing; + if ((segmentWidth < 5) || (segmentHeight < 5)) { + // the segment size is too small for a useful preview + return img; + } + + // Advance to the next tile page each second + int skipValidItems = ((int)sequenceIndex()) * visibleCount; + + img = QImage(QSize(folderWidth, folderHeight), QImage::Format_ARGB32); + img.fill(0); + + QPainter p; + p.begin(&img); + + p.setCompositionMode(QPainter::CompositionMode_Source); + p.drawPixmap(0, 0, folder); + p.setCompositionMode(QPainter::CompositionMode_SourceOver); + + int xPos = leftMargin; + int yPos = topMargin; + + int frameWidth = qRound(folderWidth / 85.); + + int iterations = 0; + QString hadFirstThumbnail; + QImage firstThumbnail; + + int validThumbnails = 0; + + while (true) { + QDirIterator dir(directory, QDir::Files | QDir::Readable); + int skipped = 0; + + // Seed the random number generator so that it always returns the same result + // for the same directory and sequence-item + qsrand(qHash(directory) + skipValidItems); + + while (dir.hasNext()) { + ++iterations; + if (iterations > 500) { + skipValidItems = skipped = 0; + break; + } + + dir.next(); + + auto fileSize = dir.fileInfo().size(); + if ((fileSize == 0) || (fileSize > m_maxFileSize)) { + // don't create thumbnails for files that exceed + // the maximum set file size or are empty + continue; + } + + QImage subThumbnail; + if (!createSubThumbnail(subThumbnail, dir.filePath(), segmentWidth, segmentHeight)) { + continue; + } + + if (skipped < skipValidItems) { + ++skipped; + continue; + } + + if (!drawSubThumbnail(p, subThumbnail, segmentWidth, segmentHeight, xPos, yPos, frameWidth)) { + continue; + } + + if (hadFirstThumbnail.isEmpty()) { + hadFirstThumbnail = dir.filePath(); + firstThumbnail = subThumbnail; + } + + ++validThumbnails; + if (validThumbnails >= visibleCount) { + break; + } + + xPos += segmentWidth + spacing; + if (xPos > folderWidth - rightMargin - segmentWidth) { + xPos = leftMargin; + yPos += segmentHeight + spacing; + } + } + + if (validThumbnails > 0) { + break; + } + + if (skipped == 0) { + break; // No valid items were found + } + + // Calculate number of (partial) pages for all valid items in the directory + auto skippedPages = (skipped + visibleCount - 1) / visibleCount; + + // The sequence is continously repeated after all valid items, calculate remainder + skipValidItems = (((int)sequenceIndex()) % skippedPages) * visibleCount; + } + + p.end(); + + if (validThumbnails == 0) { + // Eventually propagate the contained items from a sub-directory + QDirIterator dir(directory, QDir::Dirs); + int max = 50; + while (dir.hasNext() && max > 0) { + --max; + dir.next(); + if (m_propagationDirectories.contains(dir.fileName())) { + return thumbForDirectory(dir.filePath()); + } + } + + // If no thumbnail could be found, return an empty image which indicates + // that no preview for the directory is available. + img = QImage(); + } + + // If only for one file a thumbnail could be generated then paint an image with only one tile + if (validThumbnails == 1) { + QImage oneTileImg(folder.size(), QImage::Format_ARGB32); + oneTileImg.fill(0); + + QPainter oneTilePainter(&oneTileImg); + oneTilePainter.setCompositionMode(QPainter::CompositionMode_Source); + oneTilePainter.drawPixmap(0, 0, folder); + oneTilePainter.setCompositionMode(QPainter::CompositionMode_SourceOver); + + const int oneTileWidth = folderWidth - leftMargin - rightMargin; + const int oneTileHeight = folderHeight - topMargin - bottomMargin; + + if (firstThumbnail.width() < oneTileWidth && firstThumbnail.height() < oneTileHeight) { + createSubThumbnail(firstThumbnail, hadFirstThumbnail, oneTileWidth, oneTileHeight); + } + drawSubThumbnail(oneTilePainter, firstThumbnail, oneTileWidth, oneTileHeight, leftMargin, topMargin, frameWidth); + return oneTileImg; + } + + return img; +} + +ThumbCreator* ThumbnailProtocol::getThumbCreator(const QString& plugin) +{ + auto it = m_creators.constFind(plugin); + if (it != m_creators.constEnd()) { + return *it; + } + + ThumbCreator *creator = nullptr; + // Don't use KPluginFactory here, this is not a QObject and + // neither is ThumbCreator + QLibrary library(KPluginLoader::findPlugin((plugin))); + if (library.load()) { + auto createFn = (newCreator)library.resolve("new_creator"); + if (createFn) { + creator = createFn(); + } + } + if (!creator) { + qCWarning(KIO_THUMBNAIL_LOG) << "Failed to load" << plugin << library.errorString(); + } + + m_creators.insert(plugin, creator); + + return creator; +} + +bool ThumbnailProtocol::createSubThumbnail(QImage& thumbnail, const QString& filePath, + int segmentWidth, int segmentHeight) +{ + auto getSubCreator = [&filePath, this]() -> ThumbCreator* { + const QMimeDatabase db; + const QString subPlugin = pluginForMimeType(db.mimeTypeForFile(filePath).name()); + if (subPlugin.isEmpty() || !m_enabledPlugins.contains(subPlugin)) { + return nullptr; + } + return getThumbCreator(subPlugin); + }; + + if ((segmentWidth <= 256) && (segmentHeight <= 256)) { + // check whether a cached version of the file is available for + // 128 x 128 or 256 x 256 pixels + int cacheSize = 0; + QCryptographicHash md5(QCryptographicHash::Md5); + const QByteArray fileUrl = QUrl::fromLocalFile(filePath).toEncoded(); + md5.addData(fileUrl); + const QString thumbName = QString::fromLatin1(md5.result().toHex()).append(".png"); + + if (m_thumbBasePath.isEmpty()) { + m_thumbBasePath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/thumbnails/"); + QDir basePath(m_thumbBasePath); + basePath.mkpath("normal/"); + QFile::setPermissions(basePath.absoluteFilePath("normal"), QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner); + basePath.mkpath("large/"); + QFile::setPermissions(basePath.absoluteFilePath("large"), QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner); + } + + QDir thumbPath(m_thumbBasePath); + if ((segmentWidth <= 128) && (segmentHeight <= 128)) { + cacheSize = 128; + thumbPath.cd("normal"); + } else { + cacheSize = 256; + thumbPath.cd("large"); + } + + QFile thumbFile(thumbPath.absoluteFilePath(thumbName)); + if (thumbFile.open(QIODevice::ReadOnly) && thumbnail.load(&thumbFile, "png")) { + return true; + } else if (cacheSize == 128) { + QDir fallbackPath(m_thumbBasePath); + fallbackPath.cd("large"); + QFile fallbackThumbFile(fallbackPath.absoluteFilePath(thumbName)); + if (fallbackThumbFile.open(QIODevice::ReadOnly) && thumbnail.load(&fallbackThumbFile, "png")) { + return true; + } + } + + // no cached version is available, a new thumbnail must be created + ThumbCreator* subCreator = getSubCreator(); + if (subCreator && subCreator->create(filePath, cacheSize, cacheSize, thumbnail)) { + scaleDownImage(thumbnail, cacheSize, cacheSize); + + // The thumbnail has been created successfully. Store the thumbnail + // to the cache for future access. + QSaveFile thumbnailfile(thumbPath.absoluteFilePath(thumbName)); + if (thumbnailfile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { + QFileInfo fi(filePath); + thumbnail.setText(QStringLiteral("Thumb::URI"), QString::fromUtf8(fileUrl)); + thumbnail.setText(QStringLiteral("Thumb::MTime"), QString::number(fi.lastModified().toSecsSinceEpoch())); + thumbnail.setText(QStringLiteral("Thumb::Size"), QString::number(fi.size())); + + if (thumbnail.save(&thumbnailfile, "png")) { + thumbnailfile.commit(); + } + } + } else { + return false; + } + } else { + ThumbCreator* subCreator = getSubCreator(); + return subCreator && subCreator->create(filePath, segmentWidth, segmentHeight, thumbnail); + } + return true; +} + +void ThumbnailProtocol::scaleDownImage(QImage& img, int maxWidth, int maxHeight) +{ + if (img.width() > maxWidth || img.height() > maxHeight) { + img = img.scaled(maxWidth, maxHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation); + } +} + +bool ThumbnailProtocol::drawSubThumbnail(QPainter& p, QImage subThumbnail, int width, int height, int xPos, int yPos, int frameWidth) +{ + // Apply fake smooth scaling, as seen on several blogs + if (subThumbnail.width() > width * 4 || subThumbnail.height() > height * 4) { + subThumbnail = subThumbnail.scaled(width*4, height*4, Qt::KeepAspectRatio, Qt::FastTransformation); + } + + QSize targetSize(subThumbnail.size()); + targetSize.scale(width, height, Qt::KeepAspectRatio); + + // center the image inside the segment boundaries + const QPoint centerPos(xPos + (width/ 2), yPos + (height / 2)); + drawPictureFrame(&p, centerPos, subThumbnail, frameWidth, targetSize); + + return true; +} diff --git a/thumbnail/thumbnail.h b/thumbnail/thumbnail.h new file mode 100644 index 0000000..9bb894c --- /dev/null +++ b/thumbnail/thumbnail.h @@ -0,0 +1,83 @@ +/* This file is part of the KDE libraries + Copyright (C) 2000 Malte Starostik + + 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 _THUMBNAIL_H_ +#define _THUMBNAIL_H_ + +#include +#include +#include + +#include + +class ThumbCreator; +class QImage; + +class ThumbnailProtocol : public KIO::SlaveBase +{ +public: + ThumbnailProtocol(const QByteArray &pool, const QByteArray &app); + ~ThumbnailProtocol() override; + + void get(const QUrl &url) override; + +protected: + ThumbCreator* getThumbCreator(const QString& plugin); + bool isOpaque(const QImage &image) const; + void drawPictureFrame(QPainter *painter, const QPoint &pos, const QImage &image, + int frameWidth, QSize imageTargetSize) const; + QImage thumbForDirectory(const QString& directory); + QString pluginForMimeType(const QString& mimeType); + + float sequenceIndex() const; + +private: + /** + * Creates a sub thumbnail for the directory thumbnail. If a cached + * version of the sub thumbnail is available, the cached version will be used. + * If no cached version is available, the created sub thumbnail will be + * added to the cache for later use. + */ + bool createSubThumbnail(QImage& thumbnail, const QString& filePath, + int segmentWidth, int segmentHeight); + + /** + * Scales down the image \p img in a way that it fits into the + * given maximum width and height. + */ + void scaleDownImage(QImage& img, int maxWidth, int maxHeight); + + /** + * Draw the SubThumbnail + **/ + bool drawSubThumbnail(QPainter& p, QImage subThumbnail, int width, int height, + int xPos, int yPos, int frameWidth); +private: + QString m_mimeType; + int m_width; + int m_height; + // Thumbnail creators + QHash m_creators; + QStringList m_enabledPlugins; + QSet m_propagationDirectories; + QString m_thumbBasePath; + qint64 m_maxFileSize; +}; + +#endif diff --git a/thumbnail/thumbnail.protocol b/thumbnail/thumbnail.protocol new file mode 100644 index 0000000..360e68f --- /dev/null +++ b/thumbnail/thumbnail.protocol @@ -0,0 +1,9 @@ +[Protocol] +exec=kf5/kio/thumbnail +protocol=thumbnail +input=stream +output=stream +reading=true +source=false +X-DocPath=kioslave5/thumbnail/index.html +Icon=view-preview diff --git a/thumbnail/windowsexecreator.cpp b/thumbnail/windowsexecreator.cpp new file mode 100644 index 0000000..4ced88f --- /dev/null +++ b/thumbnail/windowsexecreator.cpp @@ -0,0 +1,35 @@ +/* + windowsexecreator.cpp - Thumbnail Creator for Microsoft Windows Executables + + Copyright (c) 2009 by Pali Rohár + + ************************************************************************* + * * + * This library 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. * + * * + ************************************************************************* +*/ + +#include "windowsexecreator.h" +#include "icoutils.h" + +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new WindowsExeCreator; + } +} + +bool WindowsExeCreator::create(const QString &path, int width, int height, QImage &img) +{ + + return IcoUtils::loadIcoImageFromExe(path, img, width, height); + +} diff --git a/thumbnail/windowsexecreator.h b/thumbnail/windowsexecreator.h new file mode 100644 index 0000000..9f087d3 --- /dev/null +++ b/thumbnail/windowsexecreator.h @@ -0,0 +1,29 @@ +/* + windowsexecreator.h - Thumbnail Creator for Microsoft Windows Executables + + Copyright (c) 2009-2010 by Pali Rohár + + ************************************************************************* + * * + * This library 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. * + * * + ************************************************************************* +*/ + + +#ifndef WINDOWS_EXE_CREATOR_H +#define WINDOWS_EXE_CREATOR_H + +#include + +class WindowsExeCreator : public ThumbCreator +{ +public: + WindowsExeCreator() {} + bool create(const QString &path, int width, int height, QImage &img) override; +}; + +#endif // WINDOWS_EXE_CREATOR_H diff --git a/thumbnail/windowsexethumbnail.desktop b/thumbnail/windowsexethumbnail.desktop new file mode 100644 index 0000000..2be43ca --- /dev/null +++ b/thumbnail/windowsexethumbnail.desktop @@ -0,0 +1,76 @@ +[Desktop Entry] +Type=Service +Name=Microsoft Windows Executables +Name[ar]=تنفيذيّات مايكروسوفت وندوز +Name[bg]=Програми за Microsoft Windows +Name[bn]=মাইক্রোসফ্ট উইন্ডোজ একজিকিউটেবল +Name[bs]=IzvrÅ¡ni datoteke s Vindouza +Name[ca]=Executables de Microsoft Windows +Name[ca@valencia]=Executables de Microsoft Windows +Name[cs]=Spustitelné soubory MS Windows +Name[csb]=Rozszérzenia Microsoft Windows +Name[da]=Kørbare filer til Microsoft Windows +Name[de]=Ausführbare Datei (Microsoft Windows) +Name[el]=Εκτελέσιμα Microsoft Windows +Name[en_GB]=Microsoft Windows Executables +Name[eo]=Plenumeblaj dosieroj de Mikrosofto Vindozo +Name[es]=Ejecutables de Microsoft Windows +Name[et]=Microsoft Windowsi täitmisfailid +Name[eu]=Microsoft Windows exekutagarriak +Name[fa]=اجراشونده‌های مایکروسافت ویندوز +Name[fi]=Microsoft Windows -suoritettavat tiedostot +Name[fr]=Exécutables Microsoft Windows +Name[fy]=Microsoft Windows útfierbere items +Name[ga]=Cláir Inrite MS Windows +Name[gl]=Executábeis de Microsoft Windows +Name[gu]=માઈક્રોસોફ્ટ વિન્ડોઝ ચલાવનારાઓ +Name[he]=קבצי הרצה של Microsoft Windows +Name[hi]=फ़ाइल या डॉयरेक्ट्री चाल्यक +Name[hr]=Microsoft Windows IzvrÅ¡ne datoteke +Name[hu]=Windows-os programfájlok +Name[ia]=Executabiles de Microsoft Windows +Name[id]=Dapat Dieksekusi Microsoft Windows +Name[is]=Microsoft Windows keyrsluskrár +Name[it]=Eseguibili di Microsoft Windows +Name[ja]=Microsoft Windows 実行ファイル +Name[kk]=Microsoft Windows-тың орындалатын файлы +Name[km]=ឯកសារ​ដែលអាច​ប្រតិបត្តិបាន​របស់ Microsoft Windows +Name[kn]=ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಂಡೋಸ್ ಎಕ್ಸಿಕ್ಯುಟೇಬಲ್ +Name[ko]=Microsoft Windows 실행 파일 +Name[lt]=Microsoft Windows vykdomieji failai +Name[lv]=Microsoft Windows izpildfaili +Name[mk]=Microsoft Windows-извршни програми +Name[ml]=മൈക്രോസോഫ്റ്റ് വിന്‍ഡോസില്‍ പ്രവര്‍ത്തിപ്പിയ്ക്കുന്നവ +Name[mr]=माइक्रोसॉफ्ट विंडोज एक्झिक्युटेबल्स +Name[nb]=Microsoft Windows kjørbare filer +Name[nds]=Microsoft-Windows-Programmen +Name[nl]=Uitvoerbare programma's voor Microsoft Windows +Name[nn]=Microsoft Windows-programfiler +Name[pa]=ਮਾਈਕਰੋਸਾਫਟ ਵਿੰਡੋਜ਼ ਚੱਲਣਯੋਗ +Name[pl]=Pliki wykonywalne Microsoft Windows +Name[pt]=Executáveis do Microsoft Windows +Name[pt_BR]=Executáveis do Microsoft Windows +Name[ro]=Executabile Microsoft Windows +Name[ru]=Исполняемые файлы Microsoft Windows +Name[si]=Microsoft Windows විධානීයන් +Name[sk]=Spustiteľné súbory Microsoft Windows +Name[sl]=Programi za Microsoft Windows +Name[sr]=Извршни фајлови с Виндоуза +Name[sr@ijekavian]=Извршни фајлови с Виндоуза +Name[sr@ijekavianlatin]=IzvrÅ¡ni fajlovi s Windowsa +Name[sr@latin]=IzvrÅ¡ni fajlovi s Windowsa +Name[sv]=Körbara Microsoft Windows program +Name[tg]=Иҷрошавандаҳои Microsoft Windows +Name[th]=แฟ้มประมวลผลได้ของระบบวินโดวส์ +Name[tr]=Microsoft Windows Çalıştırılabilir Dosyaları +Name[ug]=Microsoft Windows ئىجراچان ھۆججەتلەر +Name[uk]=Виконувані файли Microsoft Windows +Name[vi]=Tệp thá»±c thi Microsoft Windows +Name[wa]=Fitchîs enondÃ¥ves Microsoft Windows +Name[x-test]=xxMicrosoft Windows Executablesxx +Name[zh_CN]=Microsoft Windows 可执行文件 +Name[zh_TW]=Microsoft Windows 執行檔 +ServiceTypes=ThumbCreator +MimeType=application/x-ms-dos-executable;application/x-msdownload;application/x-wine-extension-cpl; +CacheThumbnail=true +X-KDE-Library=windowsexethumbnail diff --git a/thumbnail/windowsimagecreator.cpp b/thumbnail/windowsimagecreator.cpp new file mode 100644 index 0000000..109b9af --- /dev/null +++ b/thumbnail/windowsimagecreator.cpp @@ -0,0 +1,35 @@ +/* + windowsimagecreator.cpp - Thumbnail Creator for Microsoft Windows Images + + Copyright (c) 2009 by Pali Rohár + + ************************************************************************* + * * + * This library 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. * + * * + ************************************************************************* +*/ + +#include "windowsimagecreator.h" +#include "icoutils.h" + +#include +#include + +extern "C" +{ + Q_DECL_EXPORT ThumbCreator *new_creator() + { + return new WindowsImageCreator; + } +} + +bool WindowsImageCreator::create(const QString &path, int width, int height, QImage &img) +{ + + return IcoUtils::loadIcoImage(path, img, width, height); + +} diff --git a/thumbnail/windowsimagecreator.h b/thumbnail/windowsimagecreator.h new file mode 100644 index 0000000..d0028ba --- /dev/null +++ b/thumbnail/windowsimagecreator.h @@ -0,0 +1,28 @@ +/* + windowsimagecreator.h - Thumbnail Creator for Microsoft Windows Images + + Copyright (c) 2009-2010 by Pali Rohár + + ************************************************************************* + * * + * This library 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. * + * * + ************************************************************************* +*/ + +#ifndef WINDOWS_IMAGE_CREATOR_H +#define WINDOWS_IMAGE_CREATOR_H + +#include + +class WindowsImageCreator : public ThumbCreator +{ +public: + WindowsImageCreator() {} + bool create(const QString &path, int width, int height, QImage &img) override; +}; + +#endif // WINDOWS_IMAGE_CREATOR_H diff --git a/thumbnail/windowsimagethumbnail.desktop b/thumbnail/windowsimagethumbnail.desktop new file mode 100644 index 0000000..91d5491 --- /dev/null +++ b/thumbnail/windowsimagethumbnail.desktop @@ -0,0 +1,76 @@ +[Desktop Entry] +Type=Service +Name=Microsoft Windows Images +Name[ar]=صور مايكروسوفت وندوز +Name[bg]=Изображения за Microsoft Windows +Name[bn]=মাইক্রোসফ্ট উইন্ডোজ ইমেজ +Name[bs]=Slike s Vindouza +Name[ca]=Imatges de Microsoft Windows +Name[ca@valencia]=Imatges de Microsoft Windows +Name[cs]=Obrázky Microsoft Windows +Name[csb]=Òbrôzczi Microsoft Windows +Name[da]=Microsoft Windows-billeder +Name[de]=Microsoft-Windows-Bilder +Name[el]=Εικόνες Microsoft Windows +Name[en_GB]=Microsoft Windows Images +Name[eo]=Bildoj de Mikrosofto Vindozo +Name[es]=Imágenes de Microsoft Windows +Name[et]=Microsoft Windowsi pildid +Name[eu]=Microsoft Windows irudiak +Name[fa]=تصویر مایکروسافت ویندوز +Name[fi]=Microsoft Windows -vedokset +Name[fr]=Images Microsoft Windows +Name[fy]=Microsoft Windows ôfbyldings +Name[ga]=Íomhánna MS Windows +Name[gl]=Imaxes de Microsoft Windows +Name[gu]=માઈક્રોસોફ્ટ વિન્ડોઝ છબીઓ +Name[he]=תמונות של Microsoft Windows +Name[hi]=माइक्रोसॉफ़्ट विंडो छवियाँ +Name[hr]=Microsoft Windows Slike +Name[hu]=Windows-os képek +Name[ia]=Imagines de Microsoft Windows +Name[id]=Citra Microsoft Windows +Name[is]=Microsoft Windows myndir +Name[it]=Immagini di Microsoft Windows +Name[ja]=Microsoft Windows 画像 +Name[kk]=Microsoft Windows-тың кескіндері +Name[km]=រូបភាព​របស់ Microsoft Windows +Name[kn]=ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಂಡೋಸ್ ಚಿತ್ರಗಳು +Name[ko]=Microsoft Windows 그림 +Name[lt]=Microsoft Windows atvaizdžiai +Name[lv]=Microsoft Windows attēli +Name[mk]=Microsoft Windows-слики +Name[ml]=മൈക്രോസോഫ്റ്റ് വിന്‍ഡോസ് ചിത്രങ്ങള്‍ +Name[mr]=माइक्रोसॉफ्ट विंडोज प्रतिमा +Name[nb]=Microsoft Windows-bilder +Name[nds]=Microsoft-Windows-Biller +Name[nl]=Afbeeldingen van Microsoft Windows +Name[nn]=Microsoft Windows-bilete +Name[pa]=ਮਾਈਕਰੋਸਾਫਟ ਵਿੰਡੋਜ਼ ਚਿੱਤਰ +Name[pl]=Obrazy Microsoft Windows +Name[pt]=Imagens do Microsoft Windows +Name[pt_BR]=Imagens do Microsoft Windows +Name[ro]=Imagini Microsoft Windows +Name[ru]=Изображения Microsoft Windows +Name[si]=Microsoft Windows පිළිබිඹු +Name[sk]=Obrázky Microsoft Windows +Name[sl]=Slike Microsoft Windows +Name[sr]=Слике с Виндоуза +Name[sr@ijekavian]=Слике с Виндоуза +Name[sr@ijekavianlatin]=Slike s Windowsa +Name[sr@latin]=Slike s Windowsa +Name[sv]=Microsoft Windows avbilder +Name[tg]=Тасвирҳои Microsoft Windows +Name[th]=แฟ้มภาพต่าง ๆ ของระบบวินโดวส์ +Name[tr]=Microsoft Windows Resimleri +Name[ug]=Microsoft Windows سۈرەتلەر +Name[uk]=Зображення Microsoft Windows +Name[vi]=Ảnh Microsoft Windows +Name[wa]=ImÃ¥djes Microsoft Windows +Name[x-test]=xxMicrosoft Windows Imagesxx +Name[zh_CN]=Microsoft Windows 图像 +Name[zh_TW]=Microsoft Windows 影像 +ServiceTypes=ThumbCreator +MimeType=image/x-ico;image/vnd.microsoft.icon;image/x-win-bitmap;application/x-navi-animation; +CacheThumbnail=true +X-KDE-Library=windowsimagethumbnail