From 72337e988c553b8d037f9a5b125123850116a499 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Sat, 5 Mar 2022 15:39:16 +0000 Subject: [PATCH] Import kio-extras_21.12.3.orig.tar.xz [dgit import orig kio-extras_21.12.3.orig.tar.xz] --- .git-blame-ignore-revs | 2 + .gitignore | 27 + .gitlab-ci.yml | 6 + .kde-ci.yml | 22 + .reuse/dep5 | 12 + CMakeLists.txt | 225 + DEBUG.howto | 4 + DESIGN | 34 + LICENSES/BSD-2-Clause.txt | 22 + LICENSES/BSD-3-Clause.txt | 26 + LICENSES/CC0-1.0.txt | 119 + LICENSES/GPL-2.0-only.txt | 319 + LICENSES/GPL-2.0-or-later.txt | 319 + LICENSES/GPL-3.0-only.txt | 625 ++ LICENSES/GPL-3.0-or-later.txt | 625 ++ LICENSES/LGPL-2.0-only.txt | 444 ++ LICENSES/LGPL-2.0-or-later.txt | 446 ++ LICENSES/LGPL-2.1-only.txt | 462 ++ LICENSES/LGPL-2.1-or-later.txt | 462 ++ LICENSES/LGPL-3.0-only.txt | 144 + LICENSES/LicenseRef-KDE-Accepted-GPL.txt | 12 + LICENSES/LicenseRef-KDE-Accepted-LGPL.txt | 12 + LICENSES/MIT.txt | 19 + about/CMakeLists.txt | 13 + about/Messages.sh | 2 + about/about.json | 14 + about/kio_about.cpp | 70 + about/kio_about.h | 27 + activities/CMakeLists.txt | 41 + activities/KioActivities.cpp | 358 + activities/KioActivities.h | 33 + activities/Messages.sh | 2 + activities/activities.json | 31 + activities/common/database/Database.cpp | 278 + activities/common/database/Database.h | 135 + .../schema/ResourcesDatabaseSchema.cpp | 191 + .../database/schema/ResourcesDatabaseSchema.h | 29 + activities/common/dbus/common.h | 45 + activities/common/specialvalues.h | 24 + activities/fileitemplugin/CMakeLists.txt | 23 + .../fileitemplugin/FileItemLinkingPlugin.cpp | 208 + .../fileitemplugin/FileItemLinkingPlugin.h | 33 + .../FileItemLinkingPluginActionLoader.cpp | 195 + .../FileItemLinkingPluginActionLoader.h | 41 + .../fileitemplugin/FileItemLinkingPlugin_p.h | 63 + ...ivitymanagerd_fileitem_linking_plugin.json | 47 + activities/utils/d_ptr.h | 39 + activities/utils/d_ptr_implementation.h | 42 + activities/utils/qsqlquery_iterator.cpp | 21 + activities/utils/qsqlquery_iterator.h | 68 + archive/CMakeLists.txt | 87 + archive/KioArchiveConfig.cmake.in | 7 + archive/Messages.sh | 2 + archive/archive.json | 125 + archive/autotests/CMakeLists.txt | 6 + archive/autotests/testkioarchive.cpp | 163 + archive/autotests/testkioarchive.h | 44 + archive/kio_archive.cpp | 86 + archive/kio_archive.h | 21 + archive/kio_archivebase.cpp | 662 ++ archive/kio_archivebase.h | 55 + bookmarks/CMakeLists.txt | 20 + bookmarks/Messages.sh | 2 + bookmarks/bookmarks.json | 14 + bookmarks/kio_bookmarks.cpp | 226 + bookmarks/kio_bookmarks.css | 105 + bookmarks/kio_bookmarks.h | 52 + bookmarks/kio_bookmarks_html.cpp | 202 + bookmarks/kio_bookmarks_pixmap.cpp | 65 + cmake/FindLibmtp.cmake | 74 + cmake/FindSamba.cmake | 61 + cmake/FindTIRPC.cmake | 35 + cmake/Findlibssh.cmake | 109 + config-runtime.h.cmake | 16 + doc/CMakeLists.txt | 1 + doc/kioslave/CMakeLists.txt | 22 + doc/kioslave/bookmarks/CMakeLists.txt | 2 + doc/kioslave/bookmarks/index.docbook | 29 + doc/kioslave/bzip2/CMakeLists.txt | 2 + doc/kioslave/bzip2/index.docbook | 40 + doc/kioslave/fish/CMakeLists.txt | 2 + doc/kioslave/fish/index.docbook | 73 + doc/kioslave/gzip/CMakeLists.txt | 2 + doc/kioslave/gzip/index.docbook | 37 + doc/kioslave/info/CMakeLists.txt | 2 + doc/kioslave/info/index.docbook | 43 + doc/kioslave/man/CMakeLists.txt | 2 + doc/kioslave/man/index.docbook | 93 + doc/kioslave/nfs/CMakeLists.txt | 2 + doc/kioslave/nfs/index.docbook | 46 + doc/kioslave/recentdocuments/CMakeLists.txt | 1 + doc/kioslave/recentdocuments/index.docbook | 35 + doc/kioslave/sftp/CMakeLists.txt | 2 + doc/kioslave/sftp/index.docbook | 26 + doc/kioslave/smb/CMakeLists.txt | 2 + doc/kioslave/smb/index.docbook | 58 + doc/kioslave/tar/CMakeLists.txt | 2 + doc/kioslave/tar/index.docbook | 25 + doc/kioslave/thumbnail/CMakeLists.txt | 2 + doc/kioslave/thumbnail/index.docbook | 36 + doc/kioslave/xz/CMakeLists.txt | 2 + doc/kioslave/xz/index.docbook | 37 + doc/kioslave/zstd/CMakeLists.txt | 2 + doc/kioslave/zstd/index.docbook | 37 + docfilter/CMakeLists.txt | 3 + docfilter/kio_docfilter.css | 96 + filenamesearch/CMakeLists.txt | 15 + filenamesearch/filenamesearch.json | 32 + filenamesearch/kded/CMakeLists.txt | 14 + filenamesearch/kded/filenamesearchmodule.cpp | 104 + .../kded/filenamesearchmodule.desktop | 96 + filenamesearch/kded/filenamesearchmodule.h | 35 + filenamesearch/kio_filenamesearch.cpp | 239 + filenamesearch/kio_filenamesearch.h | 53 + filenamesearch/kio_filenamesearch_p.h | 79 + filter/CMakeLists.txt | 22 + filter/filter.cpp | 186 + filter/filter.h | 34 + filter/filter.json | 88 + fish/CMakeLists.txt | 76 + fish/FAQ | 37 + fish/Messages.sh | 2 + fish/README | 252 + fish/config-fish.h.cmake | 27 + fish/fish.cpp | 1714 +++++ fish/fish.h | 209 + fish/fish.json | 31 + fish/fish.pl | 367 + fish/generate_fishcode.bat | 1 + fish/generate_fishcode.py | 37 + fish/generate_fishcode.sh | 13 + fish/tests/CMakeLists.txt | 5 + fish/tests/README | 14 + fish/tests/copytester.cpp | 49 + fish/tests/copytester.h | 21 + fish/tests/main.cpp | 21 + info/CMakeLists.txt | 24 + info/Messages.sh | 4 + info/info.cpp | 268 + info/info.h | 37 + info/info.json | 16 + info/kde-info2html | 1088 +++ info/kde-info2html.conf | 43 + kfileaudiopreview/CMakeLists.txt | 19 + kfileaudiopreview/Messages.sh | 2 + kfileaudiopreview/README | 2 + kfileaudiopreview/kfileaudiopreview.cpp | 138 + kfileaudiopreview/kfileaudiopreview.h | 46 + kfileaudiopreview/mediacontrols.cpp | 126 + kfileaudiopreview/mediacontrols.h | 89 + kfileaudiopreview/mediacontrols_p.h | 77 + man/CMakeLists.txt | 63 + man/LICENSE | 16 + man/Messages.sh | 2 + man/kio_man.cpp | 1395 ++++ man/kio_man.h | 75 + man/man.json | 20 + man/man2html.cpp | 6313 +++++++++++++++++ man/man2html.h | 44 + man/request_hash.cpp | 18 + man/request_hash.h | 186 + man/requests.gperf | 165 + man/tests/CMakeLists.txt | 50 + man/tests/kio_man_test.cpp | 35 + mtp/CMakeLists.txt | 33 + mtp/Messages.sh | 2 + mtp/README | 32 + mtp/kio_mtp.cpp | 874 +++ mtp/kio_mtp.h | 86 + mtp/kiod_module/CMakeLists.txt | 31 + mtp/kiod_module/kmtpd.cpp | 160 + mtp/kiod_module/kmtpd.h | 50 + mtp/kiod_module/kmtpd.json | 79 + mtp/kiod_module/mtpdevice.cpp | 111 + mtp/kiod_module/mtpdevice.h | 64 + mtp/kiod_module/mtpstorage.cpp | 625 ++ mtp/kiod_module/mtpstorage.h | 131 + mtp/mtp-network.desktop | 51 + mtp/mtp.json | 27 + mtp/shared/CMakeLists.txt | 22 + mtp/shared/kmtpdeviceinterface.cpp | 56 + mtp/shared/kmtpdeviceinterface.h | 50 + mtp/shared/kmtpdinterface.cpp | 71 + mtp/shared/kmtpdinterface.h | 56 + mtp/shared/kmtpfile.cpp | 133 + mtp/shared/kmtpfile.h | 76 + mtp/shared/kmtpstorageinterface.cpp | 84 + mtp/shared/kmtpstorageinterface.h | 63 + mtp/shared/org.kde.kmtp.daemon.xml | 36 + mtp/shared/org.kde.kmtp.device.xml | 48 + mtp/shared/org.kde.kmtp.storage.xml | 140 + mtp/solid_mtp.desktop | 45 + nfs/CMakeLists.txt | 84 + nfs/Messages.sh | 2 + nfs/README | 78 + nfs/kio_nfs.cpp | 1120 +++ nfs/kio_nfs.h | 214 + nfs/nfs.json | 35 + nfs/nfsv2.cpp | 1721 +++++ nfs/nfsv2.h | 81 + nfs/nfsv3.cpp | 2033 ++++++ nfs/nfsv3.h | 93 + nfs/rpc_nfs2_prot.h | 660 ++ nfs/rpc_nfs2_prot.x | 574 ++ nfs/rpc_nfs2_prot_xdr.c | 936 +++ nfs/rpc_nfs3_prot.h | 1482 ++++ nfs/rpc_nfs3_prot.x | 920 +++ nfs/rpc_nfs3_prot_xdr.c | 2060 ++++++ po/ar/kfileaudiopreview5.po | 43 + po/ar/kio5_activities.po | 175 + po/ar/kio5_archive.po | 37 + po/ar/kio5_bookmarks.po | 81 + po/ar/kio5_fish.po | 54 + po/ar/kio5_info.po | 27 + po/ar/kio5_man.po | 225 + po/ar/kio5_mtp.po | 37 + po/ar/kio5_nfs.po | 71 + po/ar/kio5_recentdocuments.po | 23 + po/ar/kio5_sftp.po | 447 ++ po/ar/kio5_smb.po | 200 + po/ar/kio5_thumbnail.po | 86 + po/ast/kio5_fish.po | 43 + po/ast/kio5_info.po | 25 + po/ast/kio5_mtp.po | 32 + po/ast/kio5_recentdocuments.po | 23 + po/be/kfileaudiopreview5.po | 37 + po/be/kio5_archive.po | 38 + po/be/kio5_fish.po | 44 + po/be/kio5_man.po | 235 + po/be/kio5_nfs.po | 67 + po/be/kio5_sftp.po | 265 + po/be/kio5_smb.po | 195 + po/be/kio5_thumbnail.po | 81 + po/bg/kfileaudiopreview5.po | 42 + po/bg/kio5_activities.po | 86 + po/bg/kio5_archive.po | 37 + po/bg/kio5_bookmarks.po | 79 + po/bg/kio5_fish.po | 51 + po/bg/kio5_info.po | 32 + po/bg/kio5_man.po | 233 + po/bg/kio5_nfs.po | 72 + po/bg/kio5_recentdocuments.po | 23 + po/bg/kio5_sftp.po | 408 ++ po/bg/kio5_smb.po | 193 + po/bg/kio5_thumbnail.po | 84 + po/bs/kfileaudiopreview5.po | 36 + po/bs/kio5_activities.po | 195 + po/bs/kio5_archive.po | 40 + po/bs/kio5_bookmarks.po | 74 + po/bs/kio5_fish.po | 46 + po/bs/kio5_info.po | 35 + po/bs/kio5_man.po | 239 + po/bs/kio5_mtp.po | 33 + po/bs/kio5_nfs.po | 70 + po/bs/kio5_recentdocuments.po | 26 + po/bs/kio5_sftp.po | 305 + po/bs/kio5_smb.po | 193 + po/bs/kio5_thumbnail.po | 77 + po/ca/docs/kioslave5/bookmarks/index.docbook | 47 + po/ca/docs/kioslave5/bzip2/index.docbook | 50 + po/ca/docs/kioslave5/fish/index.docbook | 151 + po/ca/docs/kioslave5/gzip/index.docbook | 45 + po/ca/docs/kioslave5/info/index.docbook | 58 + po/ca/docs/kioslave5/man/index.docbook | 141 + po/ca/docs/kioslave5/nfs/index.docbook | 47 + .../kioslave5/recentdocuments/index.docbook | 60 + po/ca/docs/kioslave5/sftp/index.docbook | 35 + po/ca/docs/kioslave5/smb/index.docbook | 92 + po/ca/docs/kioslave5/tar/index.docbook | 27 + po/ca/docs/kioslave5/thumbnail/index.docbook | 43 + po/ca/docs/kioslave5/xz/index.docbook | 51 + po/ca/docs/kioslave5/zstd/index.docbook | 51 + po/ca/kfileaudiopreview5.po | 37 + po/ca/kio5_activities.po | 71 + po/ca/kio5_archive.po | 42 + po/ca/kio5_bookmarks.po | 65 + po/ca/kio5_fish.po | 48 + po/ca/kio5_info.po | 31 + po/ca/kio5_man.po | 209 + po/ca/kio5_mtp.po | 36 + po/ca/kio5_nfs.po | 62 + po/ca/kio5_recentdocuments.po | 26 + po/ca/kio5_sftp.po | 246 + po/ca/kio5_smb.po | 201 + po/ca/kio5_thumbnail.po | 73 + po/ca@valencia/kfileaudiopreview5.po | 37 + po/ca@valencia/kio5_activities.po | 71 + po/ca@valencia/kio5_archive.po | 42 + po/ca@valencia/kio5_bookmarks.po | 65 + po/ca@valencia/kio5_fish.po | 48 + po/ca@valencia/kio5_info.po | 31 + po/ca@valencia/kio5_man.po | 209 + po/ca@valencia/kio5_mtp.po | 36 + po/ca@valencia/kio5_nfs.po | 62 + po/ca@valencia/kio5_recentdocuments.po | 26 + po/ca@valencia/kio5_sftp.po | 246 + po/ca@valencia/kio5_smb.po | 201 + po/ca@valencia/kio5_thumbnail.po | 73 + po/cs/kfileaudiopreview5.po | 32 + po/cs/kio5_activities.po | 67 + po/cs/kio5_archive.po | 38 + po/cs/kio5_bookmarks.po | 63 + po/cs/kio5_fish.po | 43 + po/cs/kio5_info.po | 28 + po/cs/kio5_man.po | 196 + po/cs/kio5_mtp.po | 30 + po/cs/kio5_nfs.po | 59 + po/cs/kio5_recentdocuments.po | 23 + po/cs/kio5_sftp.po | 222 + po/cs/kio5_smb.po | 182 + po/cs/kio5_thumbnail.po | 68 + po/da/kfileaudiopreview5.po | 43 + po/da/kio5_activities.po | 247 + po/da/kio5_archive.po | 36 + po/da/kio5_bookmarks.po | 79 + po/da/kio5_fish.po | 52 + po/da/kio5_info.po | 27 + po/da/kio5_man.po | 222 + po/da/kio5_mtp.po | 34 + po/da/kio5_nfs.po | 74 + po/da/kio5_recentdocuments.po | 23 + po/da/kio5_sftp.po | 440 ++ po/da/kio5_smb.po | 202 + po/da/kio5_thumbnail.po | 85 + po/de/docs/kioslave5/bookmarks/index.docbook | 59 + po/de/docs/kioslave5/bzip2/index.docbook | 64 + po/de/docs/kioslave5/fish/index.docbook | 163 + po/de/docs/kioslave5/gzip/index.docbook | 59 + po/de/docs/kioslave5/info/index.docbook | 76 + po/de/docs/kioslave5/man/index.docbook | 161 + po/de/docs/kioslave5/nfs/index.docbook | 69 + .../kioslave5/recentdocuments/index.docbook | 74 + po/de/docs/kioslave5/sftp/index.docbook | 49 + po/de/docs/kioslave5/smb/index.docbook | 106 + po/de/docs/kioslave5/tar/index.docbook | 47 + po/de/docs/kioslave5/thumbnail/index.docbook | 57 + po/de/docs/kioslave5/xz/index.docbook | 63 + po/de/docs/kioslave5/zstd/index.docbook | 65 + po/de/kfileaudiopreview5.po | 40 + po/de/kio5_activities.po | 81 + po/de/kio5_archive.po | 35 + po/de/kio5_bookmarks.po | 77 + po/de/kio5_fish.po | 49 + po/de/kio5_info.po | 23 + po/de/kio5_man.po | 239 + po/de/kio5_mtp.po | 35 + po/de/kio5_nfs.po | 72 + po/de/kio5_recentdocuments.po | 19 + po/de/kio5_sftp.po | 477 ++ po/de/kio5_smb.po | 203 + po/de/kio5_thumbnail.po | 81 + po/el/kfileaudiopreview5.po | 43 + po/el/kio5_activities.po | 234 + po/el/kio5_archive.po | 38 + po/el/kio5_bookmarks.po | 163 + po/el/kio5_fish.po | 56 + po/el/kio5_info.po | 28 + po/el/kio5_man.po | 227 + po/el/kio5_mtp.po | 37 + po/el/kio5_nfs.po | 77 + po/el/kio5_recentdocuments.po | 23 + po/el/kio5_sftp.po | 468 ++ po/el/kio5_smb.po | 211 + po/el/kio5_thumbnail.po | 85 + po/en_GB/kfileaudiopreview5.po | 42 + po/en_GB/kio5_activities.po | 250 + po/en_GB/kio5_archive.po | 36 + po/en_GB/kio5_bookmarks.po | 80 + po/en_GB/kio5_fish.po | 52 + po/en_GB/kio5_info.po | 28 + po/en_GB/kio5_man.po | 220 + po/en_GB/kio5_mtp.po | 35 + po/en_GB/kio5_nfs.po | 74 + po/en_GB/kio5_recentdocuments.po | 30 + po/en_GB/kio5_sftp.po | 442 ++ po/en_GB/kio5_smb.po | 202 + po/en_GB/kio5_thumbnail.po | 83 + po/eo/kfileaudiopreview5.po | 37 + po/eo/kio5_archive.po | 37 + po/eo/kio5_bookmarks.po | 80 + po/eo/kio5_fish.po | 51 + po/eo/kio5_info.po | 33 + po/eo/kio5_man.po | 233 + po/eo/kio5_nfs.po | 66 + po/eo/kio5_sftp.po | 393 + po/eo/kio5_smb.po | 193 + po/eo/kio5_thumbnail.po | 84 + po/es/docs/kioslave5/bookmarks/index.docbook | 61 + po/es/docs/kioslave5/bzip2/index.docbook | 64 + po/es/docs/kioslave5/fish/index.docbook | 165 + po/es/docs/kioslave5/gzip/index.docbook | 59 + po/es/docs/kioslave5/info/index.docbook | 72 + po/es/docs/kioslave5/man/index.docbook | 155 + po/es/docs/kioslave5/nfs/index.docbook | 61 + .../kioslave5/recentdocuments/index.docbook | 74 + po/es/docs/kioslave5/sftp/index.docbook | 49 + po/es/docs/kioslave5/smb/index.docbook | 106 + po/es/docs/kioslave5/tar/index.docbook | 41 + po/es/docs/kioslave5/thumbnail/index.docbook | 57 + po/es/docs/kioslave5/xz/index.docbook | 65 + po/es/docs/kioslave5/zstd/index.docbook | 65 + po/es/kfileaudiopreview5.po | 35 + po/es/kio5_activities.po | 85 + po/es/kio5_archive.po | 39 + po/es/kio5_bookmarks.po | 72 + po/es/kio5_fish.po | 43 + po/es/kio5_info.po | 28 + po/es/kio5_man.po | 220 + po/es/kio5_mtp.po | 40 + po/es/kio5_nfs.po | 79 + po/es/kio5_recentdocuments.po | 23 + po/es/kio5_sftp.po | 283 + po/es/kio5_smb.po | 212 + po/es/kio5_thumbnail.po | 87 + po/et/docs/kioslave5/bookmarks/index.docbook | 61 + po/et/docs/kioslave5/bzip2/index.docbook | 64 + po/et/docs/kioslave5/fish/index.docbook | 165 + po/et/docs/kioslave5/gzip/index.docbook | 59 + po/et/docs/kioslave5/info/index.docbook | 72 + po/et/docs/kioslave5/man/index.docbook | 155 + po/et/docs/kioslave5/nfs/index.docbook | 63 + po/et/docs/kioslave5/sftp/index.docbook | 49 + po/et/docs/kioslave5/smb/index.docbook | 109 + po/et/docs/kioslave5/tar/index.docbook | 41 + po/et/docs/kioslave5/thumbnail/index.docbook | 57 + po/et/docs/kioslave5/xz/index.docbook | 65 + po/et/kfileaudiopreview5.po | 43 + po/et/kio5_activities.po | 188 + po/et/kio5_archive.po | 36 + po/et/kio5_bookmarks.po | 159 + po/et/kio5_fish.po | 52 + po/et/kio5_info.po | 33 + po/et/kio5_man.po | 239 + po/et/kio5_mtp.po | 37 + po/et/kio5_nfs.po | 74 + po/et/kio5_recentdocuments.po | 23 + po/et/kio5_sftp.po | 449 ++ po/et/kio5_smb.po | 191 + po/et/kio5_thumbnail.po | 83 + po/eu/kfileaudiopreview5.po | 46 + po/eu/kio5_activities.po | 178 + po/eu/kio5_archive.po | 41 + po/eu/kio5_bookmarks.po | 86 + po/eu/kio5_fish.po | 46 + po/eu/kio5_info.po | 33 + po/eu/kio5_man.po | 225 + po/eu/kio5_mtp.po | 36 + po/eu/kio5_nfs.po | 80 + po/eu/kio5_recentdocuments.po | 24 + po/eu/kio5_sftp.po | 292 + po/eu/kio5_smb.po | 208 + po/eu/kio5_thumbnail.po | 88 + po/fa/kfileaudiopreview5.po | 42 + po/fa/kio5_archive.po | 39 + po/fa/kio5_bookmarks.po | 79 + po/fa/kio5_fish.po | 44 + po/fa/kio5_info.po | 32 + po/fa/kio5_man.po | 251 + po/fa/kio5_nfs.po | 67 + po/fa/kio5_recentdocuments.po | 23 + po/fa/kio5_sftp.po | 390 + po/fa/kio5_smb.po | 193 + po/fa/kio5_thumbnail.po | 85 + po/fi/kfileaudiopreview5.po | 44 + po/fi/kio5_activities.po | 254 + po/fi/kio5_archive.po | 38 + po/fi/kio5_bookmarks.po | 81 + po/fi/kio5_fish.po | 57 + po/fi/kio5_info.po | 29 + po/fi/kio5_man.po | 223 + po/fi/kio5_mtp.po | 39 + po/fi/kio5_nfs.po | 78 + po/fi/kio5_recentdocuments.po | 23 + po/fi/kio5_sftp.po | 456 ++ po/fi/kio5_smb.po | 203 + po/fi/kio5_thumbnail.po | 89 + po/fr/docs/kioslave5/bookmarks/index.docbook | 47 + po/fr/docs/kioslave5/bzip2/index.docbook | 50 + po/fr/docs/kioslave5/fish/index.docbook | 149 + po/fr/docs/kioslave5/gzip/index.docbook | 45 + po/fr/docs/kioslave5/info/index.docbook | 58 + po/fr/docs/kioslave5/man/index.docbook | 141 + po/fr/docs/kioslave5/nfs/index.docbook | 49 + po/fr/docs/kioslave5/sftp/index.docbook | 35 + po/fr/docs/kioslave5/tar/index.docbook | 27 + po/fr/docs/kioslave5/thumbnail/index.docbook | 43 + po/fr/docs/kioslave5/xz/index.docbook | 51 + po/fr/kfileaudiopreview5.po | 46 + po/fr/kio5_activities.po | 257 + po/fr/kio5_archive.po | 43 + po/fr/kio5_bookmarks.po | 88 + po/fr/kio5_fish.po | 57 + po/fr/kio5_info.po | 32 + po/fr/kio5_man.po | 233 + po/fr/kio5_mtp.po | 46 + po/fr/kio5_nfs.po | 82 + po/fr/kio5_recentdocuments.po | 26 + po/fr/kio5_sftp.po | 480 ++ po/fr/kio5_smb.po | 226 + po/fr/kio5_thumbnail.po | 88 + po/ga/kfileaudiopreview5.po | 43 + po/ga/kio5_activities.po | 152 + po/ga/kio5_archive.po | 39 + po/ga/kio5_bookmarks.po | 79 + po/ga/kio5_fish.po | 51 + po/ga/kio5_info.po | 32 + po/ga/kio5_man.po | 235 + po/ga/kio5_nfs.po | 68 + po/ga/kio5_recentdocuments.po | 23 + po/ga/kio5_sftp.po | 472 ++ po/ga/kio5_smb.po | 191 + po/ga/kio5_thumbnail.po | 83 + po/gl/docs/kioslave5/bookmarks/index.docbook | 61 + po/gl/docs/kioslave5/bzip2/index.docbook | 64 + po/gl/docs/kioslave5/fish/index.docbook | 165 + po/gl/docs/kioslave5/gzip/index.docbook | 59 + po/gl/docs/kioslave5/info/index.docbook | 72 + po/gl/docs/kioslave5/man/index.docbook | 155 + po/gl/docs/kioslave5/nfs/index.docbook | 63 + po/gl/docs/kioslave5/sftp/index.docbook | 49 + po/gl/docs/kioslave5/tar/index.docbook | 41 + po/gl/docs/kioslave5/xz/index.docbook | 65 + po/gl/kfileaudiopreview5.po | 34 + po/gl/kio5_activities.po | 252 + po/gl/kio5_archive.po | 41 + po/gl/kio5_bookmarks.po | 81 + po/gl/kio5_fish.po | 47 + po/gl/kio5_info.po | 35 + po/gl/kio5_man.po | 253 + po/gl/kio5_mtp.po | 38 + po/gl/kio5_nfs.po | 79 + po/gl/kio5_recentdocuments.po | 22 + po/gl/kio5_sftp.po | 289 + po/gl/kio5_smb.po | 194 + po/gl/kio5_thumbnail.po | 88 + po/he/kfileaudiopreview5.po | 38 + po/he/kio5_activities.po | 68 + po/he/kio5_archive.po | 38 + po/he/kio5_bookmarks.po | 63 + po/he/kio5_fish.po | 53 + po/he/kio5_info.po | 33 + po/he/kio5_man.po | 240 + po/he/kio5_nfs.po | 73 + po/he/kio5_recentdocuments.po | 24 + po/he/kio5_sftp.po | 306 + po/he/kio5_smb.po | 198 + po/he/kio5_thumbnail.po | 73 + po/hi/kfileaudiopreview5.po | 37 + po/hi/kio5_activities.po | 87 + po/hi/kio5_archive.po | 39 + po/hi/kio5_bookmarks.po | 80 + po/hi/kio5_fish.po | 45 + po/hi/kio5_info.po | 32 + po/hi/kio5_man.po | 220 + po/hi/kio5_nfs.po | 68 + po/hi/kio5_recentdocuments.po | 23 + po/hi/kio5_sftp.po | 304 + po/hi/kio5_smb.po | 183 + po/hi/kio5_thumbnail.po | 85 + po/hr/kfileaudiopreview5.po | 45 + po/hr/kio5_activities.po | 89 + po/hr/kio5_archive.po | 39 + po/hr/kio5_bookmarks.po | 82 + po/hr/kio5_fish.po | 55 + po/hr/kio5_info.po | 35 + po/hr/kio5_man.po | 237 + po/hr/kio5_nfs.po | 70 + po/hr/kio5_sftp.po | 470 ++ po/hr/kio5_smb.po | 198 + po/hr/kio5_thumbnail.po | 86 + po/hu/kfileaudiopreview5.po | 32 + po/hu/kio5_activities.po | 191 + po/hu/kio5_archive.po | 35 + po/hu/kio5_bookmarks.po | 80 + po/hu/kio5_fish.po | 43 + po/hu/kio5_info.po | 28 + po/hu/kio5_man.po | 218 + po/hu/kio5_mtp.po | 32 + po/hu/kio5_nfs.po | 74 + po/hu/kio5_recentdocuments.po | 24 + po/hu/kio5_sftp.po | 438 ++ po/hu/kio5_smb.po | 206 + po/hu/kio5_thumbnail.po | 82 + po/ia/kfileaudiopreview5.po | 42 + po/ia/kio5_activities.po | 203 + po/ia/kio5_archive.po | 39 + po/ia/kio5_bookmarks.po | 79 + po/ia/kio5_fish.po | 51 + po/ia/kio5_info.po | 27 + po/ia/kio5_man.po | 220 + po/ia/kio5_mtp.po | 37 + po/ia/kio5_nfs.po | 73 + po/ia/kio5_recentdocuments.po | 23 + po/ia/kio5_sftp.po | 285 + po/ia/kio5_smb.po | 201 + po/ia/kio5_thumbnail.po | 83 + po/id/kfileaudiopreview5.po | 43 + po/id/kio5_archive.po | 40 + po/id/kio5_bookmarks.po | 81 + po/id/kio5_fish.po | 52 + po/id/kio5_info.po | 33 + po/id/kio5_man.po | 236 + po/id/kio5_nfs.po | 76 + po/id/kio5_recentdocuments.po | 24 + po/id/kio5_sftp.po | 302 + po/id/kio5_smb.po | 191 + po/id/kio5_thumbnail.po | 84 + po/is/kfileaudiopreview5.po | 46 + po/is/kio5_activities.po | 132 + po/is/kio5_archive.po | 38 + po/is/kio5_bookmarks.po | 82 + po/is/kio5_fish.po | 55 + po/is/kio5_info.po | 35 + po/is/kio5_man.po | 237 + po/is/kio5_nfs.po | 72 + po/is/kio5_recentdocuments.po | 26 + po/is/kio5_sftp.po | 235 + po/is/kio5_smb.po | 195 + po/is/kio5_thumbnail.po | 84 + po/it/docs/kioslave5/bookmarks/index.docbook | 61 + po/it/docs/kioslave5/bzip2/index.docbook | 64 + po/it/docs/kioslave5/fish/index.docbook | 161 + po/it/docs/kioslave5/gzip/index.docbook | 59 + po/it/docs/kioslave5/info/index.docbook | 72 + po/it/docs/kioslave5/man/index.docbook | 155 + po/it/docs/kioslave5/nfs/index.docbook | 61 + .../kioslave5/recentdocuments/index.docbook | 74 + po/it/docs/kioslave5/sftp/index.docbook | 49 + po/it/docs/kioslave5/smb/index.docbook | 114 + po/it/docs/kioslave5/tar/index.docbook | 41 + po/it/docs/kioslave5/thumbnail/index.docbook | 57 + po/it/docs/kioslave5/xz/index.docbook | 65 + po/it/docs/kioslave5/zstd/index.docbook | 65 + po/it/kfileaudiopreview5.po | 42 + po/it/kio5_activities.po | 248 + po/it/kio5_archive.po | 36 + po/it/kio5_bookmarks.po | 79 + po/it/kio5_fish.po | 53 + po/it/kio5_info.po | 29 + po/it/kio5_man.po | 224 + po/it/kio5_mtp.po | 38 + po/it/kio5_nfs.po | 75 + po/it/kio5_recentdocuments.po | 22 + po/it/kio5_sftp.po | 458 ++ po/it/kio5_smb.po | 206 + po/it/kio5_thumbnail.po | 81 + po/ja/kfileaudiopreview5.po | 34 + po/ja/kio5_activities.po | 67 + po/ja/kio5_archive.po | 40 + po/ja/kio5_bookmarks.po | 64 + po/ja/kio5_fish.po | 48 + po/ja/kio5_info.po | 31 + po/ja/kio5_man.po | 220 + po/ja/kio5_mtp.po | 27 + po/ja/kio5_nfs.po | 61 + po/ja/kio5_recentdocuments.po | 20 + po/ja/kio5_sftp.po | 307 + po/ja/kio5_smb.po | 188 + po/ja/kio5_thumbnail.po | 74 + po/kk/kfileaudiopreview5.po | 43 + po/kk/kio5_activities.po | 199 + po/kk/kio5_archive.po | 37 + po/kk/kio5_bookmarks.po | 79 + po/kk/kio5_fish.po | 51 + po/kk/kio5_info.po | 32 + po/kk/kio5_man.po | 233 + po/kk/kio5_nfs.po | 67 + po/kk/kio5_recentdocuments.po | 23 + po/kk/kio5_sftp.po | 477 ++ po/kk/kio5_smb.po | 191 + po/kk/kio5_thumbnail.po | 83 + po/km/kfileaudiopreview5.po | 34 + po/km/kio5_activities.po | 176 + po/km/kio5_archive.po | 36 + po/km/kio5_bookmarks.po | 82 + po/km/kio5_fish.po | 51 + po/km/kio5_info.po | 32 + po/km/kio5_man.po | 231 + po/km/kio5_nfs.po | 66 + po/km/kio5_recentdocuments.po | 24 + po/km/kio5_sftp.po | 302 + po/km/kio5_smb.po | 188 + po/km/kio5_thumbnail.po | 84 + po/ko/kfileaudiopreview5.po | 33 + po/ko/kio5_activities.po | 244 + po/ko/kio5_archive.po | 38 + po/ko/kio5_bookmarks.po | 80 + po/ko/kio5_fish.po | 43 + po/ko/kio5_info.po | 27 + po/ko/kio5_man.po | 220 + po/ko/kio5_mtp.po | 35 + po/ko/kio5_nfs.po | 74 + po/ko/kio5_recentdocuments.po | 22 + po/ko/kio5_sftp.po | 276 + po/ko/kio5_smb.po | 195 + po/ko/kio5_thumbnail.po | 84 + po/lt/kfileaudiopreview5.po | 33 + po/lt/kio5_activities.po | 185 + po/lt/kio5_archive.po | 37 + po/lt/kio5_bookmarks.po | 63 + po/lt/kio5_fish.po | 43 + po/lt/kio5_info.po | 28 + po/lt/kio5_man.po | 236 + po/lt/kio5_mtp.po | 34 + po/lt/kio5_nfs.po | 71 + po/lt/kio5_recentdocuments.po | 26 + po/lt/kio5_sftp.po | 306 + po/lt/kio5_smb.po | 200 + po/lt/kio5_thumbnail.po | 74 + po/lv/kfileaudiopreview5.po | 46 + po/lv/kio5_activities.po | 87 + po/lv/kio5_archive.po | 37 + po/lv/kio5_bookmarks.po | 82 + po/lv/kio5_fish.po | 55 + po/lv/kio5_info.po | 34 + po/lv/kio5_man.po | 233 + po/lv/kio5_nfs.po | 69 + po/lv/kio5_recentdocuments.po | 25 + po/lv/kio5_sftp.po | 310 + po/lv/kio5_smb.po | 194 + po/lv/kio5_thumbnail.po | 86 + po/ml/kfileaudiopreview5.po | 36 + po/ml/kio5_archive.po | 34 + po/ml/kio5_bookmarks.po | 80 + po/ml/kio5_fish.po | 45 + po/ml/kio5_info.po | 33 + po/ml/kio5_man.po | 231 + po/ml/kio5_nfs.po | 68 + po/ml/kio5_sftp.po | 325 + po/ml/kio5_smb.po | 194 + po/ml/kio5_thumbnail.po | 81 + po/mr/kfileaudiopreview5.po | 33 + po/mr/kio5_activities.po | 194 + po/mr/kio5_archive.po | 39 + po/mr/kio5_bookmarks.po | 85 + po/mr/kio5_fish.po | 45 + po/mr/kio5_info.po | 32 + po/mr/kio5_man.po | 236 + po/mr/kio5_nfs.po | 69 + po/mr/kio5_recentdocuments.po | 23 + po/mr/kio5_sftp.po | 410 ++ po/mr/kio5_smb.po | 189 + po/mr/kio5_thumbnail.po | 89 + po/nb/docs/kioslave5/man/index.docbook | 155 + po/nb/docs/kioslave5/thumbnail/index.docbook | 57 + po/nb/kfileaudiopreview5.po | 36 + po/nb/kio5_activities.po | 69 + po/nb/kio5_archive.po | 40 + po/nb/kio5_bookmarks.po | 64 + po/nb/kio5_fish.po | 47 + po/nb/kio5_info.po | 27 + po/nb/kio5_man.po | 192 + po/nb/kio5_nfs.po | 60 + po/nb/kio5_recentdocuments.po | 25 + po/nb/kio5_sftp.po | 225 + po/nb/kio5_smb.po | 183 + po/nb/kio5_thumbnail.po | 71 + po/nds/kfileaudiopreview5.po | 43 + po/nds/kio5_activities.po | 193 + po/nds/kio5_archive.po | 41 + po/nds/kio5_bookmarks.po | 160 + po/nds/kio5_fish.po | 53 + po/nds/kio5_info.po | 33 + po/nds/kio5_man.po | 235 + po/nds/kio5_nfs.po | 69 + po/nds/kio5_recentdocuments.po | 24 + po/nds/kio5_sftp.po | 476 ++ po/nds/kio5_smb.po | 195 + po/nds/kio5_thumbnail.po | 83 + po/nl/docs/kioslave5/bookmarks/index.docbook | 47 + po/nl/docs/kioslave5/bzip2/index.docbook | 50 + po/nl/docs/kioslave5/fish/index.docbook | 151 + po/nl/docs/kioslave5/gzip/index.docbook | 45 + po/nl/docs/kioslave5/info/index.docbook | 58 + po/nl/docs/kioslave5/man/index.docbook | 141 + po/nl/docs/kioslave5/nfs/index.docbook | 49 + .../kioslave5/recentdocuments/index.docbook | 60 + po/nl/docs/kioslave5/sftp/index.docbook | 35 + po/nl/docs/kioslave5/smb/index.docbook | 88 + po/nl/docs/kioslave5/tar/index.docbook | 27 + po/nl/docs/kioslave5/thumbnail/index.docbook | 43 + po/nl/docs/kioslave5/xz/index.docbook | 51 + po/nl/docs/kioslave5/zstd/index.docbook | 51 + po/nl/kfileaudiopreview5.po | 33 + po/nl/kio5_activities.po | 82 + po/nl/kio5_archive.po | 39 + po/nl/kio5_bookmarks.po | 63 + po/nl/kio5_fish.po | 43 + po/nl/kio5_info.po | 27 + po/nl/kio5_man.po | 219 + po/nl/kio5_mtp.po | 35 + po/nl/kio5_nfs.po | 70 + po/nl/kio5_recentdocuments.po | 23 + po/nl/kio5_sftp.po | 280 + po/nl/kio5_smb.po | 200 + po/nl/kio5_thumbnail.po | 72 + po/nn/kfileaudiopreview5.po | 36 + po/nn/kio5_activities.po | 69 + po/nn/kio5_archive.po | 39 + po/nn/kio5_bookmarks.po | 66 + po/nn/kio5_fish.po | 47 + po/nn/kio5_info.po | 30 + po/nn/kio5_man.po | 201 + po/nn/kio5_mtp.po | 35 + po/nn/kio5_nfs.po | 61 + po/nn/kio5_recentdocuments.po | 25 + po/nn/kio5_sftp.po | 242 + po/nn/kio5_smb.po | 193 + po/nn/kio5_thumbnail.po | 71 + po/pa/kfileaudiopreview5.po | 35 + po/pa/kio5_activities.po | 189 + po/pa/kio5_archive.po | 37 + po/pa/kio5_bookmarks.po | 79 + po/pa/kio5_fish.po | 52 + po/pa/kio5_info.po | 32 + po/pa/kio5_man.po | 213 + po/pa/kio5_mtp.po | 33 + po/pa/kio5_nfs.po | 66 + po/pa/kio5_recentdocuments.po | 23 + po/pa/kio5_sftp.po | 337 + po/pa/kio5_smb.po | 192 + po/pa/kio5_thumbnail.po | 83 + po/pl/kfileaudiopreview5.po | 44 + po/pl/kio5_activities.po | 255 + po/pl/kio5_archive.po | 39 + po/pl/kio5_bookmarks.po | 82 + po/pl/kio5_fish.po | 54 + po/pl/kio5_info.po | 29 + po/pl/kio5_man.po | 221 + po/pl/kio5_mtp.po | 37 + po/pl/kio5_nfs.po | 76 + po/pl/kio5_recentdocuments.po | 24 + po/pl/kio5_sftp.po | 448 ++ po/pl/kio5_smb.po | 211 + po/pl/kio5_thumbnail.po | 85 + po/pt/docs/kioslave5/bookmarks/index.docbook | 61 + po/pt/docs/kioslave5/bzip2/index.docbook | 64 + po/pt/docs/kioslave5/fish/index.docbook | 165 + po/pt/docs/kioslave5/gzip/index.docbook | 59 + po/pt/docs/kioslave5/info/index.docbook | 72 + po/pt/docs/kioslave5/man/index.docbook | 155 + po/pt/docs/kioslave5/nfs/index.docbook | 63 + .../kioslave5/recentdocuments/index.docbook | 74 + po/pt/docs/kioslave5/sftp/index.docbook | 51 + po/pt/docs/kioslave5/smb/index.docbook | 100 + po/pt/docs/kioslave5/tar/index.docbook | 41 + po/pt/docs/kioslave5/thumbnail/index.docbook | 57 + po/pt/docs/kioslave5/xz/index.docbook | 65 + po/pt/kfileaudiopreview5.po | 33 + po/pt/kio5_activities.po | 217 + po/pt/kio5_archive.po | 34 + po/pt/kio5_bookmarks.po | 58 + po/pt/kio5_fish.po | 39 + po/pt/kio5_info.po | 22 + po/pt/kio5_man.po | 202 + po/pt/kio5_mtp.po | 29 + po/pt/kio5_nfs.po | 54 + po/pt/kio5_recentdocuments.po | 23 + po/pt/kio5_sftp.po | 277 + po/pt/kio5_smb.po | 189 + po/pt/kio5_thumbnail.po | 79 + .../docs/kioslave5/bookmarks/index.docbook | 61 + po/pt_BR/docs/kioslave5/bzip2/index.docbook | 64 + po/pt_BR/docs/kioslave5/fish/index.docbook | 179 + po/pt_BR/docs/kioslave5/gzip/index.docbook | 59 + po/pt_BR/docs/kioslave5/info/index.docbook | 72 + po/pt_BR/docs/kioslave5/man/index.docbook | 155 + po/pt_BR/docs/kioslave5/nfs/index.docbook | 63 + po/pt_BR/docs/kioslave5/sftp/index.docbook | 49 + po/pt_BR/docs/kioslave5/smb/index.docbook | 109 + po/pt_BR/docs/kioslave5/tar/index.docbook | 41 + .../docs/kioslave5/thumbnail/index.docbook | 57 + po/pt_BR/docs/kioslave5/xz/index.docbook | 65 + po/pt_BR/kfileaudiopreview5.po | 34 + po/pt_BR/kio5_activities.po | 68 + po/pt_BR/kio5_archive.po | 41 + po/pt_BR/kio5_bookmarks.po | 64 + po/pt_BR/kio5_fish.po | 46 + po/pt_BR/kio5_info.po | 29 + po/pt_BR/kio5_man.po | 227 + po/pt_BR/kio5_mtp.po | 40 + po/pt_BR/kio5_nfs.po | 75 + po/pt_BR/kio5_recentdocuments.po | 23 + po/pt_BR/kio5_sftp.po | 288 + po/pt_BR/kio5_smb.po | 204 + po/pt_BR/kio5_thumbnail.po | 85 + po/ro/kfileaudiopreview5.po | 44 + po/ro/kio5_activities.po | 189 + po/ro/kio5_archive.po | 40 + po/ro/kio5_bookmarks.po | 72 + po/ro/kio5_fish.po | 50 + po/ro/kio5_info.po | 28 + po/ro/kio5_man.po | 238 + po/ro/kio5_mtp.po | 37 + po/ro/kio5_nfs.po | 70 + po/ro/kio5_recentdocuments.po | 23 + po/ro/kio5_sftp.po | 461 ++ po/ro/kio5_smb.po | 197 + po/ro/kio5_thumbnail.po | 86 + po/ru/docs/kioslave5/gzip/index.docbook | 59 + po/ru/docs/kioslave5/nfs/index.docbook | 63 + po/ru/docs/kioslave5/sftp/index.docbook | 49 + po/ru/docs/kioslave5/tar/index.docbook | 41 + po/ru/docs/kioslave5/thumbnail/index.docbook | 57 + po/ru/kfileaudiopreview5.po | 48 + po/ru/kio5_activities.po | 236 + po/ru/kio5_archive.po | 42 + po/ru/kio5_bookmarks.po | 86 + po/ru/kio5_fish.po | 57 + po/ru/kio5_info.po | 32 + po/ru/kio5_man.po | 251 + po/ru/kio5_mtp.po | 40 + po/ru/kio5_nfs.po | 81 + po/ru/kio5_recentdocuments.po | 24 + po/ru/kio5_sftp.po | 458 ++ po/ru/kio5_smb.po | 218 + po/ru/kio5_thumbnail.po | 88 + po/se/kfileaudiopreview5.po | 35 + po/se/kio5_activities.po | 69 + po/se/kio5_fish.po | 45 + po/se/kio5_man.po | 189 + po/se/kio5_nfs.po | 60 + po/se/kio5_sftp.po | 218 + po/se/kio5_smb.po | 169 + po/se/kio5_thumbnail.po | 70 + po/sk/kfileaudiopreview5.po | 31 + po/sk/kio5_activities.po | 250 + po/sk/kio5_archive.po | 35 + po/sk/kio5_bookmarks.po | 70 + po/sk/kio5_fish.po | 43 + po/sk/kio5_info.po | 26 + po/sk/kio5_man.po | 222 + po/sk/kio5_mtp.po | 34 + po/sk/kio5_nfs.po | 73 + po/sk/kio5_recentdocuments.po | 21 + po/sk/kio5_sftp.po | 278 + po/sk/kio5_smb.po | 202 + po/sk/kio5_thumbnail.po | 71 + po/sl/kfileaudiopreview5.po | 36 + po/sl/kio5_activities.po | 252 + po/sl/kio5_archive.po | 38 + po/sl/kio5_bookmarks.po | 82 + po/sl/kio5_fish.po | 47 + po/sl/kio5_info.po | 30 + po/sl/kio5_man.po | 213 + po/sl/kio5_mtp.po | 38 + po/sl/kio5_nfs.po | 80 + po/sl/kio5_recentdocuments.po | 24 + po/sl/kio5_sftp.po | 288 + po/sl/kio5_smb.po | 205 + po/sl/kio5_thumbnail.po | 84 + po/sq/kfileaudiopreview5.po | 35 + po/sq/kio5_archive.po | 40 + po/sq/kio5_bookmarks.po | 81 + po/sq/kio5_fish.po | 54 + po/sq/kio5_info.po | 34 + po/sq/kio5_man.po | 203 + po/sq/kio5_nfs.po | 69 + po/sq/kio5_sftp.po | 220 + po/sq/kio5_smb.po | 173 + po/sq/kio5_thumbnail.po | 81 + po/sr/docs/kioslave5/bookmarks/index.docbook | 63 + po/sr/docs/kioslave5/bzip2/index.docbook | 74 + po/sr/docs/kioslave5/fish/index.docbook | 159 + po/sr/docs/kioslave5/gzip/index.docbook | 71 + po/sr/docs/kioslave5/info/index.docbook | 84 + po/sr/docs/kioslave5/man/index.docbook | 163 + po/sr/docs/kioslave5/nfs/index.docbook | 57 + .../kioslave5/recentdocuments/index.docbook | 88 + po/sr/docs/kioslave5/sftp/index.docbook | 57 + po/sr/docs/kioslave5/smb/index.docbook | 112 + po/sr/docs/kioslave5/tar/index.docbook | 49 + po/sr/docs/kioslave5/thumbnail/index.docbook | 69 + po/sr/docs/kioslave5/xz/index.docbook | 79 + po/sr/kfileaudiopreview5.po | 37 + po/sr/kio5_activities.po | 68 + po/sr/kio5_archive.po | 39 + po/sr/kio5_bookmarks.po | 55 + po/sr/kio5_fish.po | 45 + po/sr/kio5_info.po | 31 + po/sr/kio5_man.po | 188 + po/sr/kio5_mtp.po | 36 + po/sr/kio5_nfs.po | 65 + po/sr/kio5_recentdocuments.po | 24 + po/sr/kio5_sftp.po | 308 + po/sr/kio5_smb.po | 175 + po/sr/kio5_thumbnail.po | 77 + po/sv/docs/kioslave5/bookmarks/index.docbook | 61 + po/sv/docs/kioslave5/bzip2/index.docbook | 64 + po/sv/docs/kioslave5/fish/index.docbook | 161 + po/sv/docs/kioslave5/gzip/index.docbook | 59 + po/sv/docs/kioslave5/info/index.docbook | 72 + po/sv/docs/kioslave5/man/index.docbook | 155 + po/sv/docs/kioslave5/nfs/index.docbook | 63 + .../kioslave5/recentdocuments/index.docbook | 74 + po/sv/docs/kioslave5/sftp/index.docbook | 49 + po/sv/docs/kioslave5/smb/index.docbook | 106 + po/sv/docs/kioslave5/tar/index.docbook | 41 + po/sv/docs/kioslave5/thumbnail/index.docbook | 57 + po/sv/docs/kioslave5/xz/index.docbook | 65 + po/sv/kfileaudiopreview5.po | 33 + po/sv/kio5_activities.po | 82 + po/sv/kio5_archive.po | 38 + po/sv/kio5_bookmarks.po | 63 + po/sv/kio5_fish.po | 43 + po/sv/kio5_info.po | 27 + po/sv/kio5_man.po | 218 + po/sv/kio5_mtp.po | 35 + po/sv/kio5_nfs.po | 70 + po/sv/kio5_recentdocuments.po | 23 + po/sv/kio5_sftp.po | 279 + po/sv/kio5_smb.po | 199 + po/sv/kio5_thumbnail.po | 72 + po/ta/kfileaudiopreview5.po | 37 + po/ta/kio5_activities.po | 67 + po/ta/kio5_archive.po | 38 + po/ta/kio5_bookmarks.po | 63 + po/ta/kio5_fish.po | 43 + po/ta/kio5_info.po | 27 + po/ta/kio5_man.po | 208 + po/ta/kio5_mtp.po | 32 + po/ta/kio5_nfs.po | 66 + po/ta/kio5_recentdocuments.po | 23 + po/ta/kio5_sftp.po | 391 + po/ta/kio5_smb.po | 190 + po/ta/kio5_thumbnail.po | 84 + po/tg/kfileaudiopreview5.po | 40 + po/tg/kio5_activities.po | 72 + po/tg/kio5_archive.po | 37 + po/tg/kio5_bookmarks.po | 79 + po/tg/kio5_fish.po | 48 + po/tg/kio5_info.po | 34 + po/tg/kio5_man.po | 222 + po/tg/kio5_nfs.po | 72 + po/tg/kio5_sftp.po | 322 + po/tg/kio5_smb.po | 191 + po/tg/kio5_thumbnail.po | 80 + po/tr/kfileaudiopreview5.po | 45 + po/tr/kio5_activities.po | 230 + po/tr/kio5_archive.po | 37 + po/tr/kio5_bookmarks.po | 131 + po/tr/kio5_fish.po | 54 + po/tr/kio5_info.po | 32 + po/tr/kio5_man.po | 236 + po/tr/kio5_mtp.po | 39 + po/tr/kio5_nfs.po | 78 + po/tr/kio5_recentdocuments.po | 23 + po/tr/kio5_sftp.po | 455 ++ po/tr/kio5_smb.po | 197 + po/tr/kio5_thumbnail.po | 85 + po/ug/kfileaudiopreview5.po | 33 + po/ug/kio5_activities.po | 198 + po/ug/kio5_archive.po | 37 + po/ug/kio5_bookmarks.po | 79 + po/ug/kio5_fish.po | 43 + po/ug/kio5_info.po | 32 + po/ug/kio5_man.po | 206 + po/ug/kio5_nfs.po | 67 + po/ug/kio5_recentdocuments.po | 23 + po/ug/kio5_sftp.po | 227 + po/ug/kio5_smb.po | 176 + po/ug/kio5_thumbnail.po | 83 + po/uk/docs/kioslave5/bookmarks/index.docbook | 63 + po/uk/docs/kioslave5/bzip2/index.docbook | 64 + po/uk/docs/kioslave5/fish/index.docbook | 165 + po/uk/docs/kioslave5/gzip/index.docbook | 59 + po/uk/docs/kioslave5/info/index.docbook | 72 + po/uk/docs/kioslave5/man/index.docbook | 155 + po/uk/docs/kioslave5/nfs/index.docbook | 63 + .../kioslave5/recentdocuments/index.docbook | 74 + po/uk/docs/kioslave5/sftp/index.docbook | 49 + po/uk/docs/kioslave5/smb/index.docbook | 106 + po/uk/docs/kioslave5/tar/index.docbook | 41 + po/uk/docs/kioslave5/thumbnail/index.docbook | 57 + po/uk/docs/kioslave5/xz/index.docbook | 67 + po/uk/docs/kioslave5/zstd/index.docbook | 65 + po/uk/kfileaudiopreview5.po | 36 + po/uk/kio5_activities.po | 85 + po/uk/kio5_archive.po | 43 + po/uk/kio5_bookmarks.po | 65 + po/uk/kio5_fish.po | 55 + po/uk/kio5_info.po | 30 + po/uk/kio5_man.po | 228 + po/uk/kio5_mtp.po | 39 + po/uk/kio5_nfs.po | 78 + po/uk/kio5_recentdocuments.po | 26 + po/uk/kio5_sftp.po | 453 ++ po/uk/kio5_smb.po | 207 + po/uk/kio5_thumbnail.po | 75 + po/vi/kfileaudiopreview5.po | 35 + po/vi/kio5_activities.po | 67 + po/vi/kio5_archive.po | 38 + po/vi/kio5_bookmarks.po | 63 + po/vi/kio5_fish.po | 44 + po/vi/kio5_info.po | 28 + po/vi/kio5_man.po | 205 + po/vi/kio5_mtp.po | 32 + po/vi/kio5_nfs.po | 66 + po/vi/kio5_recentdocuments.po | 23 + po/vi/kio5_sftp.po | 277 + po/vi/kio5_smb.po | 192 + po/vi/kio5_thumbnail.po | 74 + po/wa/kfileaudiopreview5.po | 37 + po/wa/kio5_activities.po | 86 + po/wa/kio5_archive.po | 39 + po/wa/kio5_bookmarks.po | 79 + po/wa/kio5_fish.po | 53 + po/wa/kio5_info.po | 32 + po/wa/kio5_man.po | 210 + po/wa/kio5_nfs.po | 67 + po/wa/kio5_sftp.po | 309 + po/wa/kio5_smb.po | 193 + po/wa/kio5_thumbnail.po | 79 + po/zh_CN/kfileaudiopreview5.po | 37 + po/zh_CN/kio5_activities.po | 73 + po/zh_CN/kio5_archive.po | 40 + po/zh_CN/kio5_bookmarks.po | 67 + po/zh_CN/kio5_fish.po | 48 + po/zh_CN/kio5_info.po | 30 + po/zh_CN/kio5_man.po | 204 + po/zh_CN/kio5_mtp.po | 35 + po/zh_CN/kio5_nfs.po | 62 + po/zh_CN/kio5_recentdocuments.po | 27 + po/zh_CN/kio5_sftp.po | 239 + po/zh_CN/kio5_smb.po | 188 + po/zh_CN/kio5_thumbnail.po | 73 + po/zh_TW/kfileaudiopreview5.po | 33 + po/zh_TW/kio5_activities.po | 67 + po/zh_TW/kio5_archive.po | 37 + po/zh_TW/kio5_bookmarks.po | 63 + po/zh_TW/kio5_fish.po | 45 + po/zh_TW/kio5_info.po | 32 + po/zh_TW/kio5_man.po | 227 + po/zh_TW/kio5_mtp.po | 33 + po/zh_TW/kio5_nfs.po | 72 + po/zh_TW/kio5_recentdocuments.po | 23 + po/zh_TW/kio5_sftp.po | 274 + po/zh_TW/kio5_smb.po | 182 + po/zh_TW/kio5_thumbnail.po | 73 + recentdocuments/CMakeLists.txt | 20 + recentdocuments/Messages.sh | 2 + recentdocuments/recentdocuments.cpp | 204 + recentdocuments/recentdocuments.h | 26 + recentdocuments/recentdocuments.json | 29 + recentdocuments/recentdocumentsnotifier.cpp | 33 + .../recentdocumentsnotifier.desktop | 129 + recentdocuments/recentdocumentsnotifier.h | 23 + recentlyused/CMakeLists.txt | 38 + recentlyused/recentlyused.cpp | 273 + recentlyused/recentlyused.h | 98 + recentlyused/recentlyused.json | 34 + sftp/AUTHORS | 3 + sftp/CMakeLists.txt | 42 + sftp/Messages.sh | 2 + sftp/kio_sftp.cpp | 2427 +++++++ sftp/kio_sftp.h | 323 + sftp/sftp.json | 37 + smb/CMakeLists.txt | 106 + smb/Messages.sh | 2 + smb/autotests/CMakeLists.txt | 19 + smb/autotests/fixtures/resume/thing.part | 0 smb/autotests/fixtures/resumeInPlace/thing | 0 smb/autotests/shouldresumetest.cpp | 164 + smb/autotests/smburltest.cpp | 150 + smb/autotests/transfertest.cpp | 152 + smb/config-smb.h.cmake | 3 + smb/discovery.cpp | 16 + smb/discovery.h | 38 + smb/dnssddiscoverer.cpp | 109 + smb/dnssddiscoverer.h | 56 + smb/kded/CMakeLists.txt | 16 + smb/kded/config.h.cmake | 6 + smb/kded/kded_smbwatcher.desktop | 85 + smb/kded/notifier.cpp | 316 + smb/kded/watcher.cpp | 208 + smb/kdsoap-ws-discovery-client/.clang-format | 3 + smb/kdsoap-ws-discovery-client/.clang-tidy | 319 + smb/kdsoap-ws-discovery-client/.gitlab-ci.yml | 75 + smb/kdsoap-ws-discovery-client/CMakeLists.txt | 115 + .../KDSoapWSDiscoveryClientConfig.cmake.in | 10 + .../LICENSES/CC0-1.0.txt | 119 + .../LICENSES/GPL-3.0-or-later.txt | 674 ++ smb/kdsoap-ws-discovery-client/README.md | 58 + .../autotests/CMakeLists.txt | 24 + .../autotests/test_wsdiscoveryclient.cpp | 294 + .../docs/CMakeLists.txt | 37 + .../examples/CMakeLists.txt | 17 + .../examples/onvif-discover/CMakeLists.txt | 25 + .../examples/onvif-discover/main.cpp | 33 + .../examples/onvif-discover/onvifdiscover.cpp | 66 + .../examples/onvif-discover/onvifdiscover.h | 46 + .../src/CMakeLists.txt | 103 + .../src/wsdiscoveryclient.cpp | 163 + .../src/wsdiscoveryclient.h | 97 + .../src/wsdiscoveryprobejob.cpp | 105 + .../src/wsdiscoveryprobejob.h | 111 + .../src/wsdiscoveryserviceaggregator.cpp | 47 + .../src/wsdiscoveryserviceaggregator.h | 71 + .../src/wsdiscoveryserviceaggregator_p.h | 31 + .../src/wsdiscoverytargetservice.cpp | 118 + .../src/wsdiscoverytargetservice.h | 54 + .../1.1/os/wsdd-discovery-1.1-schema-os.xsd | 230 + .../1.1/os/wsdd-discovery-1.1-wsdl-os.wsdl | 136 + .../wsdl/download.sh | 31 + .../schemas.xmlsoap.org/ws/2004/08/addressing | 149 + .../ws/2005/04/discovery/ws-discovery.wsdl | 140 + .../ws/2005/04/discovery/ws-discovery.xsd | 272 + .../www.w3.org/2006/03/addressing/ws-addr.xsd | 137 + smb/kio_smb.cpp | 83 + smb/kio_smb.h | 296 + smb/kio_smb_auth.cpp | 75 + smb/kio_smb_browse.cpp | 563 ++ smb/kio_smb_config.cpp | 17 + smb/kio_smb_dir.cpp | 646 ++ smb/kio_smb_file.cpp | 411 ++ smb/kio_smb_mount.cpp | 155 + smb/main.cpp | 25 + smb/smb-network.desktop | 43 + smb/smb.json | 64 + smb/smbauthenticator.cpp | 111 + smb/smbauthenticator.h | 51 + smb/smbcdiscoverer.cpp | 301 + smb/smbcdiscoverer.h | 82 + smb/smbcontext.cpp | 98 + smb/smbcontext.h | 52 + smb/smburl.cpp | 192 + smb/smburl.h | 122 + smb/transfer.cpp | 105 + smb/transfer.h | 76 + smb/transfer_resume.h | 189 + smb/wsdiscoverer.cpp | 397 ++ smb/wsdiscoverer.h | 68 + smoketest/README.md | 9 + smoketest/file1 | 1 + smoketest/kio_smoke_test/.keep | 0 smoketest/smoke.sh | 69 + thumbnail/CMakeLists.txt | 327 + thumbnail/Messages.sh | 2 + thumbnail/appimagecreator.cpp | 47 + thumbnail/appimagecreator.h | 18 + thumbnail/appimagethumbnail.desktop | 42 + thumbnail/audiocreator.cpp | 198 + thumbnail/audiocreator.h | 25 + thumbnail/audiothumbnail.desktop | 49 + thumbnail/comicbookthumbnail.desktop | 78 + thumbnail/comiccreator.cpp | 251 + thumbnail/comiccreator.h | 61 + thumbnail/cursorcreator.cpp | 41 + thumbnail/cursorcreator.h | 20 + thumbnail/cursorthumbnail.desktop | 95 + thumbnail/directorythumbnail.desktop | 63 + thumbnail/djvucreator.cpp | 47 + thumbnail/djvucreator.h | 18 + thumbnail/djvuthumbnail.desktop | 96 + thumbnail/ebookcreator.cpp | 322 + thumbnail/ebookcreator.h | 31 + thumbnail/ebookthumbnail.desktop | 44 + thumbnail/exrcreator.cpp | 71 + thumbnail/exrcreator.h | 19 + thumbnail/exrthumbnail.desktop | 95 + thumbnail/icoutils.h | 33 + thumbnail/icoutils_common.cpp | 131 + thumbnail/icoutils_win.cpp | 186 + thumbnail/icoutils_wrestool.cpp | 58 + thumbnail/imagecreator.cpp | 31 + thumbnail/imagecreator.h | 21 + thumbnail/imagefilter.cpp | 245 + thumbnail/imagefilter.h | 31 + thumbnail/imagethumbnail.desktop | 75 + thumbnail/jpegcreator.cpp | 43 + thumbnail/jpegcreator.h | 21 + thumbnail/jpegcreatorsettings5.kcfg | 13 + thumbnail/jpegcreatorsettings5.kcfgc | 4 + thumbnail/jpegthumbnail.desktop | 79 + thumbnail/kraorathumbnail.desktop | 52 + thumbnail/kritacreator.cpp | 72 + thumbnail/kritacreator.h | 27 + thumbnail/opendocumentcreator.cpp | 78 + thumbnail/opendocumentcreator.h | 19 + thumbnail/opendocumentthumbnail.desktop | 45 + thumbnail/svgcreator.cpp | 41 + thumbnail/svgcreator.h | 19 + thumbnail/svgthumbnail.desktop | 78 + thumbnail/textcreator.cpp | 168 + thumbnail/textcreator.h | 29 + thumbnail/textthumbnail.desktop | 98 + thumbnail/thumbcreator.desktop | 99 + thumbnail/thumbnail.cpp | 860 +++ thumbnail/thumbnail.h | 77 + thumbnail/thumbnail.json | 14 + thumbnail/windowsexecreator.cpp | 28 + thumbnail/windowsexecreator.h | 23 + thumbnail/windowsexethumbnail.desktop | 77 + thumbnail/windowsimagecreator.cpp | 39 + thumbnail/windowsimagecreator.h | 21 + thumbnail/windowsimagethumbnail.desktop | 77 + 1296 files changed, 151690 insertions(+) create mode 100644 .git-blame-ignore-revs create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 .kde-ci.yml create mode 100644 .reuse/dep5 create mode 100644 CMakeLists.txt create mode 100644 DEBUG.howto create mode 100644 DESIGN create mode 100644 LICENSES/BSD-2-Clause.txt create mode 100644 LICENSES/BSD-3-Clause.txt create mode 100644 LICENSES/CC0-1.0.txt create mode 100644 LICENSES/GPL-2.0-only.txt create mode 100644 LICENSES/GPL-2.0-or-later.txt create mode 100644 LICENSES/GPL-3.0-only.txt create mode 100644 LICENSES/GPL-3.0-or-later.txt create mode 100644 LICENSES/LGPL-2.0-only.txt create mode 100644 LICENSES/LGPL-2.0-or-later.txt create mode 100644 LICENSES/LGPL-2.1-only.txt create mode 100644 LICENSES/LGPL-2.1-or-later.txt create mode 100644 LICENSES/LGPL-3.0-only.txt create mode 100644 LICENSES/LicenseRef-KDE-Accepted-GPL.txt create mode 100644 LICENSES/LicenseRef-KDE-Accepted-LGPL.txt create mode 100644 LICENSES/MIT.txt create mode 100644 about/CMakeLists.txt create mode 100644 about/Messages.sh create mode 100644 about/about.json create mode 100644 about/kio_about.cpp create mode 100644 about/kio_about.h create mode 100644 activities/CMakeLists.txt create mode 100644 activities/KioActivities.cpp create mode 100644 activities/KioActivities.h create mode 100755 activities/Messages.sh create mode 100644 activities/activities.json create mode 100644 activities/common/database/Database.cpp create mode 100644 activities/common/database/Database.h create mode 100644 activities/common/database/schema/ResourcesDatabaseSchema.cpp create mode 100644 activities/common/database/schema/ResourcesDatabaseSchema.h create mode 100644 activities/common/dbus/common.h create mode 100644 activities/common/specialvalues.h create mode 100644 activities/fileitemplugin/CMakeLists.txt create mode 100644 activities/fileitemplugin/FileItemLinkingPlugin.cpp create mode 100644 activities/fileitemplugin/FileItemLinkingPlugin.h create mode 100644 activities/fileitemplugin/FileItemLinkingPluginActionLoader.cpp create mode 100644 activities/fileitemplugin/FileItemLinkingPluginActionLoader.h create mode 100644 activities/fileitemplugin/FileItemLinkingPlugin_p.h create mode 100644 activities/fileitemplugin/kactivitymanagerd_fileitem_linking_plugin.json create mode 100644 activities/utils/d_ptr.h create mode 100644 activities/utils/d_ptr_implementation.h create mode 100644 activities/utils/qsqlquery_iterator.cpp create mode 100644 activities/utils/qsqlquery_iterator.h create mode 100644 archive/CMakeLists.txt create mode 100644 archive/KioArchiveConfig.cmake.in create mode 100644 archive/Messages.sh create mode 100644 archive/archive.json create mode 100644 archive/autotests/CMakeLists.txt create mode 100644 archive/autotests/testkioarchive.cpp create mode 100644 archive/autotests/testkioarchive.h create mode 100644 archive/kio_archive.cpp create mode 100644 archive/kio_archive.h create mode 100644 archive/kio_archivebase.cpp create mode 100644 archive/kio_archivebase.h create mode 100644 bookmarks/CMakeLists.txt create mode 100755 bookmarks/Messages.sh create mode 100644 bookmarks/bookmarks.json create mode 100644 bookmarks/kio_bookmarks.cpp create mode 100644 bookmarks/kio_bookmarks.css create mode 100644 bookmarks/kio_bookmarks.h create mode 100644 bookmarks/kio_bookmarks_html.cpp create mode 100644 bookmarks/kio_bookmarks_pixmap.cpp create mode 100644 cmake/FindLibmtp.cmake create mode 100644 cmake/FindSamba.cmake create mode 100644 cmake/FindTIRPC.cmake create mode 100644 cmake/Findlibssh.cmake create mode 100644 config-runtime.h.cmake create mode 100644 doc/CMakeLists.txt create mode 100644 doc/kioslave/CMakeLists.txt create mode 100644 doc/kioslave/bookmarks/CMakeLists.txt create mode 100644 doc/kioslave/bookmarks/index.docbook create mode 100644 doc/kioslave/bzip2/CMakeLists.txt create mode 100644 doc/kioslave/bzip2/index.docbook create mode 100644 doc/kioslave/fish/CMakeLists.txt create mode 100644 doc/kioslave/fish/index.docbook create mode 100644 doc/kioslave/gzip/CMakeLists.txt create mode 100644 doc/kioslave/gzip/index.docbook create mode 100644 doc/kioslave/info/CMakeLists.txt create mode 100644 doc/kioslave/info/index.docbook create mode 100644 doc/kioslave/man/CMakeLists.txt create mode 100644 doc/kioslave/man/index.docbook create mode 100644 doc/kioslave/nfs/CMakeLists.txt create mode 100644 doc/kioslave/nfs/index.docbook create mode 100644 doc/kioslave/recentdocuments/CMakeLists.txt create mode 100644 doc/kioslave/recentdocuments/index.docbook create mode 100644 doc/kioslave/sftp/CMakeLists.txt create mode 100644 doc/kioslave/sftp/index.docbook create mode 100644 doc/kioslave/smb/CMakeLists.txt create mode 100644 doc/kioslave/smb/index.docbook create mode 100644 doc/kioslave/tar/CMakeLists.txt create mode 100644 doc/kioslave/tar/index.docbook create mode 100644 doc/kioslave/thumbnail/CMakeLists.txt create mode 100644 doc/kioslave/thumbnail/index.docbook create mode 100644 doc/kioslave/xz/CMakeLists.txt create mode 100644 doc/kioslave/xz/index.docbook create mode 100644 doc/kioslave/zstd/CMakeLists.txt create mode 100644 doc/kioslave/zstd/index.docbook create mode 100644 docfilter/CMakeLists.txt create mode 100644 docfilter/kio_docfilter.css create mode 100644 filenamesearch/CMakeLists.txt create mode 100644 filenamesearch/filenamesearch.json create mode 100644 filenamesearch/kded/CMakeLists.txt create mode 100644 filenamesearch/kded/filenamesearchmodule.cpp create mode 100644 filenamesearch/kded/filenamesearchmodule.desktop create mode 100644 filenamesearch/kded/filenamesearchmodule.h create mode 100644 filenamesearch/kio_filenamesearch.cpp create mode 100644 filenamesearch/kio_filenamesearch.h create mode 100644 filenamesearch/kio_filenamesearch_p.h create mode 100644 filter/CMakeLists.txt create mode 100644 filter/filter.cpp create mode 100644 filter/filter.h create mode 100644 filter/filter.json create mode 100644 fish/CMakeLists.txt create mode 100644 fish/FAQ create mode 100644 fish/Messages.sh create mode 100644 fish/README create mode 100644 fish/config-fish.h.cmake create mode 100644 fish/fish.cpp create mode 100644 fish/fish.h create mode 100644 fish/fish.json create mode 100755 fish/fish.pl create mode 100644 fish/generate_fishcode.bat create mode 100644 fish/generate_fishcode.py create mode 100755 fish/generate_fishcode.sh create mode 100644 fish/tests/CMakeLists.txt create mode 100644 fish/tests/README create mode 100644 fish/tests/copytester.cpp create mode 100644 fish/tests/copytester.h create mode 100644 fish/tests/main.cpp create mode 100644 info/CMakeLists.txt create mode 100755 info/Messages.sh create mode 100644 info/info.cpp create mode 100644 info/info.h create mode 100644 info/info.json create mode 100755 info/kde-info2html create mode 100644 info/kde-info2html.conf create mode 100644 kfileaudiopreview/CMakeLists.txt create mode 100644 kfileaudiopreview/Messages.sh create mode 100644 kfileaudiopreview/README create mode 100644 kfileaudiopreview/kfileaudiopreview.cpp create mode 100644 kfileaudiopreview/kfileaudiopreview.h create mode 100644 kfileaudiopreview/mediacontrols.cpp create mode 100644 kfileaudiopreview/mediacontrols.h create mode 100644 kfileaudiopreview/mediacontrols_p.h create mode 100644 man/CMakeLists.txt create mode 100644 man/LICENSE create mode 100644 man/Messages.sh create mode 100644 man/kio_man.cpp create mode 100644 man/kio_man.h create mode 100644 man/man.json create mode 100644 man/man2html.cpp create mode 100644 man/man2html.h create mode 100644 man/request_hash.cpp create mode 100644 man/request_hash.h create mode 100644 man/requests.gperf create mode 100644 man/tests/CMakeLists.txt create mode 100644 man/tests/kio_man_test.cpp create mode 100644 mtp/CMakeLists.txt create mode 100644 mtp/Messages.sh create mode 100644 mtp/README create mode 100644 mtp/kio_mtp.cpp create mode 100644 mtp/kio_mtp.h create mode 100644 mtp/kiod_module/CMakeLists.txt create mode 100644 mtp/kiod_module/kmtpd.cpp create mode 100644 mtp/kiod_module/kmtpd.h create mode 100644 mtp/kiod_module/kmtpd.json create mode 100644 mtp/kiod_module/mtpdevice.cpp create mode 100644 mtp/kiod_module/mtpdevice.h create mode 100644 mtp/kiod_module/mtpstorage.cpp create mode 100644 mtp/kiod_module/mtpstorage.h create mode 100644 mtp/mtp-network.desktop create mode 100644 mtp/mtp.json create mode 100644 mtp/shared/CMakeLists.txt create mode 100644 mtp/shared/kmtpdeviceinterface.cpp create mode 100644 mtp/shared/kmtpdeviceinterface.h create mode 100644 mtp/shared/kmtpdinterface.cpp create mode 100644 mtp/shared/kmtpdinterface.h create mode 100644 mtp/shared/kmtpfile.cpp create mode 100644 mtp/shared/kmtpfile.h create mode 100644 mtp/shared/kmtpstorageinterface.cpp create mode 100644 mtp/shared/kmtpstorageinterface.h create mode 100644 mtp/shared/org.kde.kmtp.daemon.xml create mode 100644 mtp/shared/org.kde.kmtp.device.xml create mode 100644 mtp/shared/org.kde.kmtp.storage.xml create mode 100644 mtp/solid_mtp.desktop create mode 100644 nfs/CMakeLists.txt create mode 100644 nfs/Messages.sh create mode 100644 nfs/README create mode 100644 nfs/kio_nfs.cpp create mode 100644 nfs/kio_nfs.h create mode 100644 nfs/nfs.json create mode 100644 nfs/nfsv2.cpp create mode 100644 nfs/nfsv2.h create mode 100644 nfs/nfsv3.cpp create mode 100644 nfs/nfsv3.h create mode 100644 nfs/rpc_nfs2_prot.h create mode 100644 nfs/rpc_nfs2_prot.x create mode 100644 nfs/rpc_nfs2_prot_xdr.c create mode 100644 nfs/rpc_nfs3_prot.h create mode 100644 nfs/rpc_nfs3_prot.x create mode 100644 nfs/rpc_nfs3_prot_xdr.c create mode 100644 po/ar/kfileaudiopreview5.po create mode 100644 po/ar/kio5_activities.po create mode 100644 po/ar/kio5_archive.po create mode 100644 po/ar/kio5_bookmarks.po create mode 100644 po/ar/kio5_fish.po create mode 100644 po/ar/kio5_info.po create mode 100644 po/ar/kio5_man.po create mode 100644 po/ar/kio5_mtp.po create mode 100644 po/ar/kio5_nfs.po create mode 100644 po/ar/kio5_recentdocuments.po create mode 100644 po/ar/kio5_sftp.po create mode 100644 po/ar/kio5_smb.po create mode 100644 po/ar/kio5_thumbnail.po create mode 100644 po/ast/kio5_fish.po create mode 100644 po/ast/kio5_info.po create mode 100644 po/ast/kio5_mtp.po create mode 100644 po/ast/kio5_recentdocuments.po create mode 100644 po/be/kfileaudiopreview5.po create mode 100644 po/be/kio5_archive.po create mode 100644 po/be/kio5_fish.po create mode 100644 po/be/kio5_man.po create mode 100644 po/be/kio5_nfs.po create mode 100644 po/be/kio5_sftp.po create mode 100644 po/be/kio5_smb.po create mode 100644 po/be/kio5_thumbnail.po create mode 100644 po/bg/kfileaudiopreview5.po create mode 100644 po/bg/kio5_activities.po create mode 100644 po/bg/kio5_archive.po create mode 100644 po/bg/kio5_bookmarks.po create mode 100644 po/bg/kio5_fish.po create mode 100644 po/bg/kio5_info.po create mode 100644 po/bg/kio5_man.po create mode 100644 po/bg/kio5_nfs.po create mode 100644 po/bg/kio5_recentdocuments.po create mode 100644 po/bg/kio5_sftp.po create mode 100644 po/bg/kio5_smb.po create mode 100644 po/bg/kio5_thumbnail.po create mode 100644 po/bs/kfileaudiopreview5.po create mode 100644 po/bs/kio5_activities.po create mode 100644 po/bs/kio5_archive.po create mode 100644 po/bs/kio5_bookmarks.po create mode 100644 po/bs/kio5_fish.po create mode 100644 po/bs/kio5_info.po create mode 100644 po/bs/kio5_man.po create mode 100644 po/bs/kio5_mtp.po create mode 100644 po/bs/kio5_nfs.po create mode 100644 po/bs/kio5_recentdocuments.po create mode 100644 po/bs/kio5_sftp.po create mode 100644 po/bs/kio5_smb.po create mode 100644 po/bs/kio5_thumbnail.po create mode 100644 po/ca/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/ca/docs/kioslave5/bzip2/index.docbook create mode 100644 po/ca/docs/kioslave5/fish/index.docbook create mode 100644 po/ca/docs/kioslave5/gzip/index.docbook create mode 100644 po/ca/docs/kioslave5/info/index.docbook create mode 100644 po/ca/docs/kioslave5/man/index.docbook create mode 100644 po/ca/docs/kioslave5/nfs/index.docbook create mode 100644 po/ca/docs/kioslave5/recentdocuments/index.docbook create mode 100644 po/ca/docs/kioslave5/sftp/index.docbook create mode 100644 po/ca/docs/kioslave5/smb/index.docbook create mode 100644 po/ca/docs/kioslave5/tar/index.docbook create mode 100644 po/ca/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/ca/docs/kioslave5/xz/index.docbook create mode 100644 po/ca/docs/kioslave5/zstd/index.docbook create mode 100644 po/ca/kfileaudiopreview5.po create mode 100644 po/ca/kio5_activities.po create mode 100644 po/ca/kio5_archive.po create mode 100644 po/ca/kio5_bookmarks.po create mode 100644 po/ca/kio5_fish.po create mode 100644 po/ca/kio5_info.po create mode 100644 po/ca/kio5_man.po create mode 100644 po/ca/kio5_mtp.po create mode 100644 po/ca/kio5_nfs.po create mode 100644 po/ca/kio5_recentdocuments.po create mode 100644 po/ca/kio5_sftp.po create mode 100644 po/ca/kio5_smb.po create mode 100644 po/ca/kio5_thumbnail.po create mode 100644 po/ca@valencia/kfileaudiopreview5.po create mode 100644 po/ca@valencia/kio5_activities.po create mode 100644 po/ca@valencia/kio5_archive.po create mode 100644 po/ca@valencia/kio5_bookmarks.po create mode 100644 po/ca@valencia/kio5_fish.po create mode 100644 po/ca@valencia/kio5_info.po create mode 100644 po/ca@valencia/kio5_man.po create mode 100644 po/ca@valencia/kio5_mtp.po create mode 100644 po/ca@valencia/kio5_nfs.po create mode 100644 po/ca@valencia/kio5_recentdocuments.po create mode 100644 po/ca@valencia/kio5_sftp.po create mode 100644 po/ca@valencia/kio5_smb.po create mode 100644 po/ca@valencia/kio5_thumbnail.po create mode 100644 po/cs/kfileaudiopreview5.po create mode 100644 po/cs/kio5_activities.po create mode 100644 po/cs/kio5_archive.po create mode 100644 po/cs/kio5_bookmarks.po create mode 100644 po/cs/kio5_fish.po create mode 100644 po/cs/kio5_info.po create mode 100644 po/cs/kio5_man.po create mode 100644 po/cs/kio5_mtp.po create mode 100644 po/cs/kio5_nfs.po create mode 100644 po/cs/kio5_recentdocuments.po create mode 100644 po/cs/kio5_sftp.po create mode 100644 po/cs/kio5_smb.po create mode 100644 po/cs/kio5_thumbnail.po create mode 100644 po/da/kfileaudiopreview5.po create mode 100644 po/da/kio5_activities.po create mode 100644 po/da/kio5_archive.po create mode 100644 po/da/kio5_bookmarks.po create mode 100644 po/da/kio5_fish.po create mode 100644 po/da/kio5_info.po create mode 100644 po/da/kio5_man.po create mode 100644 po/da/kio5_mtp.po create mode 100644 po/da/kio5_nfs.po create mode 100644 po/da/kio5_recentdocuments.po create mode 100644 po/da/kio5_sftp.po create mode 100644 po/da/kio5_smb.po create mode 100644 po/da/kio5_thumbnail.po create mode 100644 po/de/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/de/docs/kioslave5/bzip2/index.docbook create mode 100644 po/de/docs/kioslave5/fish/index.docbook create mode 100644 po/de/docs/kioslave5/gzip/index.docbook create mode 100644 po/de/docs/kioslave5/info/index.docbook create mode 100644 po/de/docs/kioslave5/man/index.docbook create mode 100644 po/de/docs/kioslave5/nfs/index.docbook create mode 100644 po/de/docs/kioslave5/recentdocuments/index.docbook create mode 100644 po/de/docs/kioslave5/sftp/index.docbook create mode 100644 po/de/docs/kioslave5/smb/index.docbook create mode 100644 po/de/docs/kioslave5/tar/index.docbook create mode 100644 po/de/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/de/docs/kioslave5/xz/index.docbook create mode 100644 po/de/docs/kioslave5/zstd/index.docbook create mode 100644 po/de/kfileaudiopreview5.po create mode 100644 po/de/kio5_activities.po create mode 100644 po/de/kio5_archive.po create mode 100644 po/de/kio5_bookmarks.po create mode 100644 po/de/kio5_fish.po create mode 100644 po/de/kio5_info.po create mode 100644 po/de/kio5_man.po create mode 100644 po/de/kio5_mtp.po create mode 100644 po/de/kio5_nfs.po create mode 100644 po/de/kio5_recentdocuments.po create mode 100644 po/de/kio5_sftp.po create mode 100644 po/de/kio5_smb.po create mode 100644 po/de/kio5_thumbnail.po create mode 100644 po/el/kfileaudiopreview5.po create mode 100644 po/el/kio5_activities.po create mode 100644 po/el/kio5_archive.po create mode 100644 po/el/kio5_bookmarks.po create mode 100644 po/el/kio5_fish.po create mode 100644 po/el/kio5_info.po create mode 100644 po/el/kio5_man.po create mode 100644 po/el/kio5_mtp.po create mode 100644 po/el/kio5_nfs.po create mode 100644 po/el/kio5_recentdocuments.po create mode 100644 po/el/kio5_sftp.po create mode 100644 po/el/kio5_smb.po create mode 100644 po/el/kio5_thumbnail.po create mode 100644 po/en_GB/kfileaudiopreview5.po create mode 100644 po/en_GB/kio5_activities.po create mode 100644 po/en_GB/kio5_archive.po create mode 100644 po/en_GB/kio5_bookmarks.po create mode 100644 po/en_GB/kio5_fish.po create mode 100644 po/en_GB/kio5_info.po create mode 100644 po/en_GB/kio5_man.po create mode 100644 po/en_GB/kio5_mtp.po create mode 100644 po/en_GB/kio5_nfs.po create mode 100644 po/en_GB/kio5_recentdocuments.po create mode 100644 po/en_GB/kio5_sftp.po create mode 100644 po/en_GB/kio5_smb.po create mode 100644 po/en_GB/kio5_thumbnail.po create mode 100644 po/eo/kfileaudiopreview5.po create mode 100644 po/eo/kio5_archive.po create mode 100644 po/eo/kio5_bookmarks.po create mode 100644 po/eo/kio5_fish.po create mode 100644 po/eo/kio5_info.po create mode 100644 po/eo/kio5_man.po create mode 100644 po/eo/kio5_nfs.po create mode 100644 po/eo/kio5_sftp.po create mode 100644 po/eo/kio5_smb.po create mode 100644 po/eo/kio5_thumbnail.po create mode 100644 po/es/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/es/docs/kioslave5/bzip2/index.docbook create mode 100644 po/es/docs/kioslave5/fish/index.docbook create mode 100644 po/es/docs/kioslave5/gzip/index.docbook create mode 100644 po/es/docs/kioslave5/info/index.docbook create mode 100644 po/es/docs/kioslave5/man/index.docbook create mode 100644 po/es/docs/kioslave5/nfs/index.docbook create mode 100644 po/es/docs/kioslave5/recentdocuments/index.docbook create mode 100644 po/es/docs/kioslave5/sftp/index.docbook create mode 100644 po/es/docs/kioslave5/smb/index.docbook create mode 100644 po/es/docs/kioslave5/tar/index.docbook create mode 100644 po/es/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/es/docs/kioslave5/xz/index.docbook create mode 100644 po/es/docs/kioslave5/zstd/index.docbook create mode 100644 po/es/kfileaudiopreview5.po create mode 100644 po/es/kio5_activities.po create mode 100644 po/es/kio5_archive.po create mode 100644 po/es/kio5_bookmarks.po create mode 100644 po/es/kio5_fish.po create mode 100644 po/es/kio5_info.po create mode 100644 po/es/kio5_man.po create mode 100644 po/es/kio5_mtp.po create mode 100644 po/es/kio5_nfs.po create mode 100644 po/es/kio5_recentdocuments.po create mode 100644 po/es/kio5_sftp.po create mode 100644 po/es/kio5_smb.po create mode 100644 po/es/kio5_thumbnail.po create mode 100644 po/et/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/et/docs/kioslave5/bzip2/index.docbook create mode 100644 po/et/docs/kioslave5/fish/index.docbook create mode 100644 po/et/docs/kioslave5/gzip/index.docbook create mode 100644 po/et/docs/kioslave5/info/index.docbook create mode 100644 po/et/docs/kioslave5/man/index.docbook create mode 100644 po/et/docs/kioslave5/nfs/index.docbook create mode 100644 po/et/docs/kioslave5/sftp/index.docbook create mode 100644 po/et/docs/kioslave5/smb/index.docbook create mode 100644 po/et/docs/kioslave5/tar/index.docbook create mode 100644 po/et/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/et/docs/kioslave5/xz/index.docbook create mode 100644 po/et/kfileaudiopreview5.po create mode 100644 po/et/kio5_activities.po create mode 100644 po/et/kio5_archive.po create mode 100644 po/et/kio5_bookmarks.po create mode 100644 po/et/kio5_fish.po create mode 100644 po/et/kio5_info.po create mode 100644 po/et/kio5_man.po create mode 100644 po/et/kio5_mtp.po create mode 100644 po/et/kio5_nfs.po create mode 100644 po/et/kio5_recentdocuments.po create mode 100644 po/et/kio5_sftp.po create mode 100644 po/et/kio5_smb.po create mode 100644 po/et/kio5_thumbnail.po create mode 100644 po/eu/kfileaudiopreview5.po create mode 100644 po/eu/kio5_activities.po create mode 100644 po/eu/kio5_archive.po create mode 100644 po/eu/kio5_bookmarks.po create mode 100644 po/eu/kio5_fish.po create mode 100644 po/eu/kio5_info.po create mode 100644 po/eu/kio5_man.po create mode 100644 po/eu/kio5_mtp.po create mode 100644 po/eu/kio5_nfs.po create mode 100644 po/eu/kio5_recentdocuments.po create mode 100644 po/eu/kio5_sftp.po create mode 100644 po/eu/kio5_smb.po create mode 100644 po/eu/kio5_thumbnail.po create mode 100644 po/fa/kfileaudiopreview5.po create mode 100644 po/fa/kio5_archive.po create mode 100644 po/fa/kio5_bookmarks.po create mode 100644 po/fa/kio5_fish.po create mode 100644 po/fa/kio5_info.po create mode 100644 po/fa/kio5_man.po create mode 100644 po/fa/kio5_nfs.po create mode 100644 po/fa/kio5_recentdocuments.po create mode 100644 po/fa/kio5_sftp.po create mode 100644 po/fa/kio5_smb.po create mode 100644 po/fa/kio5_thumbnail.po create mode 100644 po/fi/kfileaudiopreview5.po create mode 100644 po/fi/kio5_activities.po create mode 100644 po/fi/kio5_archive.po create mode 100644 po/fi/kio5_bookmarks.po create mode 100644 po/fi/kio5_fish.po create mode 100644 po/fi/kio5_info.po create mode 100644 po/fi/kio5_man.po create mode 100644 po/fi/kio5_mtp.po create mode 100644 po/fi/kio5_nfs.po create mode 100644 po/fi/kio5_recentdocuments.po create mode 100644 po/fi/kio5_sftp.po create mode 100644 po/fi/kio5_smb.po create mode 100644 po/fi/kio5_thumbnail.po create mode 100644 po/fr/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/fr/docs/kioslave5/bzip2/index.docbook create mode 100644 po/fr/docs/kioslave5/fish/index.docbook create mode 100644 po/fr/docs/kioslave5/gzip/index.docbook create mode 100644 po/fr/docs/kioslave5/info/index.docbook create mode 100644 po/fr/docs/kioslave5/man/index.docbook create mode 100644 po/fr/docs/kioslave5/nfs/index.docbook create mode 100644 po/fr/docs/kioslave5/sftp/index.docbook create mode 100644 po/fr/docs/kioslave5/tar/index.docbook create mode 100644 po/fr/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/fr/docs/kioslave5/xz/index.docbook create mode 100644 po/fr/kfileaudiopreview5.po create mode 100644 po/fr/kio5_activities.po create mode 100644 po/fr/kio5_archive.po create mode 100644 po/fr/kio5_bookmarks.po create mode 100644 po/fr/kio5_fish.po create mode 100644 po/fr/kio5_info.po create mode 100644 po/fr/kio5_man.po create mode 100644 po/fr/kio5_mtp.po create mode 100644 po/fr/kio5_nfs.po create mode 100644 po/fr/kio5_recentdocuments.po create mode 100644 po/fr/kio5_sftp.po create mode 100644 po/fr/kio5_smb.po create mode 100644 po/fr/kio5_thumbnail.po create mode 100644 po/ga/kfileaudiopreview5.po create mode 100644 po/ga/kio5_activities.po create mode 100644 po/ga/kio5_archive.po create mode 100644 po/ga/kio5_bookmarks.po create mode 100644 po/ga/kio5_fish.po create mode 100644 po/ga/kio5_info.po create mode 100644 po/ga/kio5_man.po create mode 100644 po/ga/kio5_nfs.po create mode 100644 po/ga/kio5_recentdocuments.po create mode 100644 po/ga/kio5_sftp.po create mode 100644 po/ga/kio5_smb.po create mode 100644 po/ga/kio5_thumbnail.po create mode 100644 po/gl/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/gl/docs/kioslave5/bzip2/index.docbook create mode 100644 po/gl/docs/kioslave5/fish/index.docbook create mode 100644 po/gl/docs/kioslave5/gzip/index.docbook create mode 100644 po/gl/docs/kioslave5/info/index.docbook create mode 100644 po/gl/docs/kioslave5/man/index.docbook create mode 100644 po/gl/docs/kioslave5/nfs/index.docbook create mode 100644 po/gl/docs/kioslave5/sftp/index.docbook create mode 100644 po/gl/docs/kioslave5/tar/index.docbook create mode 100644 po/gl/docs/kioslave5/xz/index.docbook create mode 100644 po/gl/kfileaudiopreview5.po create mode 100644 po/gl/kio5_activities.po create mode 100644 po/gl/kio5_archive.po create mode 100644 po/gl/kio5_bookmarks.po create mode 100644 po/gl/kio5_fish.po create mode 100644 po/gl/kio5_info.po create mode 100644 po/gl/kio5_man.po create mode 100644 po/gl/kio5_mtp.po create mode 100644 po/gl/kio5_nfs.po create mode 100644 po/gl/kio5_recentdocuments.po create mode 100644 po/gl/kio5_sftp.po create mode 100644 po/gl/kio5_smb.po create mode 100644 po/gl/kio5_thumbnail.po create mode 100644 po/he/kfileaudiopreview5.po create mode 100644 po/he/kio5_activities.po create mode 100644 po/he/kio5_archive.po create mode 100644 po/he/kio5_bookmarks.po create mode 100644 po/he/kio5_fish.po create mode 100644 po/he/kio5_info.po create mode 100644 po/he/kio5_man.po create mode 100644 po/he/kio5_nfs.po create mode 100644 po/he/kio5_recentdocuments.po create mode 100644 po/he/kio5_sftp.po create mode 100644 po/he/kio5_smb.po create mode 100644 po/he/kio5_thumbnail.po create mode 100644 po/hi/kfileaudiopreview5.po create mode 100644 po/hi/kio5_activities.po create mode 100644 po/hi/kio5_archive.po create mode 100644 po/hi/kio5_bookmarks.po create mode 100644 po/hi/kio5_fish.po create mode 100644 po/hi/kio5_info.po create mode 100644 po/hi/kio5_man.po create mode 100644 po/hi/kio5_nfs.po create mode 100644 po/hi/kio5_recentdocuments.po create mode 100644 po/hi/kio5_sftp.po create mode 100644 po/hi/kio5_smb.po create mode 100644 po/hi/kio5_thumbnail.po create mode 100644 po/hr/kfileaudiopreview5.po create mode 100644 po/hr/kio5_activities.po create mode 100644 po/hr/kio5_archive.po create mode 100644 po/hr/kio5_bookmarks.po create mode 100644 po/hr/kio5_fish.po create mode 100644 po/hr/kio5_info.po create mode 100644 po/hr/kio5_man.po create mode 100644 po/hr/kio5_nfs.po create mode 100644 po/hr/kio5_sftp.po create mode 100644 po/hr/kio5_smb.po create mode 100644 po/hr/kio5_thumbnail.po create mode 100644 po/hu/kfileaudiopreview5.po create mode 100644 po/hu/kio5_activities.po create mode 100644 po/hu/kio5_archive.po create mode 100644 po/hu/kio5_bookmarks.po create mode 100644 po/hu/kio5_fish.po create mode 100644 po/hu/kio5_info.po create mode 100644 po/hu/kio5_man.po create mode 100644 po/hu/kio5_mtp.po create mode 100644 po/hu/kio5_nfs.po create mode 100644 po/hu/kio5_recentdocuments.po create mode 100644 po/hu/kio5_sftp.po create mode 100644 po/hu/kio5_smb.po create mode 100644 po/hu/kio5_thumbnail.po create mode 100644 po/ia/kfileaudiopreview5.po create mode 100644 po/ia/kio5_activities.po create mode 100644 po/ia/kio5_archive.po create mode 100644 po/ia/kio5_bookmarks.po create mode 100644 po/ia/kio5_fish.po create mode 100644 po/ia/kio5_info.po create mode 100644 po/ia/kio5_man.po create mode 100644 po/ia/kio5_mtp.po create mode 100644 po/ia/kio5_nfs.po create mode 100644 po/ia/kio5_recentdocuments.po create mode 100644 po/ia/kio5_sftp.po create mode 100644 po/ia/kio5_smb.po create mode 100644 po/ia/kio5_thumbnail.po create mode 100644 po/id/kfileaudiopreview5.po create mode 100644 po/id/kio5_archive.po create mode 100644 po/id/kio5_bookmarks.po create mode 100644 po/id/kio5_fish.po create mode 100644 po/id/kio5_info.po create mode 100644 po/id/kio5_man.po create mode 100644 po/id/kio5_nfs.po create mode 100644 po/id/kio5_recentdocuments.po create mode 100644 po/id/kio5_sftp.po create mode 100644 po/id/kio5_smb.po create mode 100644 po/id/kio5_thumbnail.po create mode 100644 po/is/kfileaudiopreview5.po create mode 100644 po/is/kio5_activities.po create mode 100644 po/is/kio5_archive.po create mode 100644 po/is/kio5_bookmarks.po create mode 100644 po/is/kio5_fish.po create mode 100644 po/is/kio5_info.po create mode 100644 po/is/kio5_man.po create mode 100644 po/is/kio5_nfs.po create mode 100644 po/is/kio5_recentdocuments.po create mode 100644 po/is/kio5_sftp.po create mode 100644 po/is/kio5_smb.po create mode 100644 po/is/kio5_thumbnail.po create mode 100644 po/it/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/it/docs/kioslave5/bzip2/index.docbook create mode 100644 po/it/docs/kioslave5/fish/index.docbook create mode 100644 po/it/docs/kioslave5/gzip/index.docbook create mode 100644 po/it/docs/kioslave5/info/index.docbook create mode 100644 po/it/docs/kioslave5/man/index.docbook create mode 100644 po/it/docs/kioslave5/nfs/index.docbook create mode 100644 po/it/docs/kioslave5/recentdocuments/index.docbook create mode 100644 po/it/docs/kioslave5/sftp/index.docbook create mode 100644 po/it/docs/kioslave5/smb/index.docbook create mode 100644 po/it/docs/kioslave5/tar/index.docbook create mode 100644 po/it/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/it/docs/kioslave5/xz/index.docbook create mode 100644 po/it/docs/kioslave5/zstd/index.docbook create mode 100644 po/it/kfileaudiopreview5.po create mode 100644 po/it/kio5_activities.po create mode 100644 po/it/kio5_archive.po create mode 100644 po/it/kio5_bookmarks.po create mode 100644 po/it/kio5_fish.po create mode 100644 po/it/kio5_info.po create mode 100644 po/it/kio5_man.po create mode 100644 po/it/kio5_mtp.po create mode 100644 po/it/kio5_nfs.po create mode 100644 po/it/kio5_recentdocuments.po create mode 100644 po/it/kio5_sftp.po create mode 100644 po/it/kio5_smb.po create mode 100644 po/it/kio5_thumbnail.po create mode 100644 po/ja/kfileaudiopreview5.po create mode 100644 po/ja/kio5_activities.po create mode 100644 po/ja/kio5_archive.po create mode 100644 po/ja/kio5_bookmarks.po create mode 100644 po/ja/kio5_fish.po create mode 100644 po/ja/kio5_info.po create mode 100644 po/ja/kio5_man.po create mode 100644 po/ja/kio5_mtp.po create mode 100644 po/ja/kio5_nfs.po create mode 100644 po/ja/kio5_recentdocuments.po create mode 100644 po/ja/kio5_sftp.po create mode 100644 po/ja/kio5_smb.po create mode 100644 po/ja/kio5_thumbnail.po create mode 100644 po/kk/kfileaudiopreview5.po create mode 100644 po/kk/kio5_activities.po create mode 100644 po/kk/kio5_archive.po create mode 100644 po/kk/kio5_bookmarks.po create mode 100644 po/kk/kio5_fish.po create mode 100644 po/kk/kio5_info.po create mode 100644 po/kk/kio5_man.po create mode 100644 po/kk/kio5_nfs.po create mode 100644 po/kk/kio5_recentdocuments.po create mode 100644 po/kk/kio5_sftp.po create mode 100644 po/kk/kio5_smb.po create mode 100644 po/kk/kio5_thumbnail.po create mode 100644 po/km/kfileaudiopreview5.po create mode 100644 po/km/kio5_activities.po create mode 100644 po/km/kio5_archive.po create mode 100644 po/km/kio5_bookmarks.po create mode 100644 po/km/kio5_fish.po create mode 100644 po/km/kio5_info.po create mode 100644 po/km/kio5_man.po create mode 100644 po/km/kio5_nfs.po create mode 100644 po/km/kio5_recentdocuments.po create mode 100644 po/km/kio5_sftp.po create mode 100644 po/km/kio5_smb.po create mode 100644 po/km/kio5_thumbnail.po create mode 100644 po/ko/kfileaudiopreview5.po create mode 100644 po/ko/kio5_activities.po create mode 100644 po/ko/kio5_archive.po create mode 100644 po/ko/kio5_bookmarks.po create mode 100644 po/ko/kio5_fish.po create mode 100644 po/ko/kio5_info.po create mode 100644 po/ko/kio5_man.po create mode 100644 po/ko/kio5_mtp.po create mode 100644 po/ko/kio5_nfs.po create mode 100644 po/ko/kio5_recentdocuments.po create mode 100644 po/ko/kio5_sftp.po create mode 100644 po/ko/kio5_smb.po create mode 100644 po/ko/kio5_thumbnail.po create mode 100644 po/lt/kfileaudiopreview5.po create mode 100644 po/lt/kio5_activities.po create mode 100644 po/lt/kio5_archive.po create mode 100644 po/lt/kio5_bookmarks.po create mode 100644 po/lt/kio5_fish.po create mode 100644 po/lt/kio5_info.po create mode 100644 po/lt/kio5_man.po create mode 100644 po/lt/kio5_mtp.po create mode 100644 po/lt/kio5_nfs.po create mode 100644 po/lt/kio5_recentdocuments.po create mode 100644 po/lt/kio5_sftp.po create mode 100644 po/lt/kio5_smb.po create mode 100644 po/lt/kio5_thumbnail.po create mode 100644 po/lv/kfileaudiopreview5.po create mode 100644 po/lv/kio5_activities.po create mode 100644 po/lv/kio5_archive.po create mode 100644 po/lv/kio5_bookmarks.po create mode 100644 po/lv/kio5_fish.po create mode 100644 po/lv/kio5_info.po create mode 100644 po/lv/kio5_man.po create mode 100644 po/lv/kio5_nfs.po create mode 100644 po/lv/kio5_recentdocuments.po create mode 100644 po/lv/kio5_sftp.po create mode 100644 po/lv/kio5_smb.po create mode 100644 po/lv/kio5_thumbnail.po create mode 100644 po/ml/kfileaudiopreview5.po create mode 100644 po/ml/kio5_archive.po create mode 100644 po/ml/kio5_bookmarks.po create mode 100644 po/ml/kio5_fish.po create mode 100644 po/ml/kio5_info.po create mode 100644 po/ml/kio5_man.po create mode 100644 po/ml/kio5_nfs.po create mode 100644 po/ml/kio5_sftp.po create mode 100644 po/ml/kio5_smb.po create mode 100644 po/ml/kio5_thumbnail.po create mode 100644 po/mr/kfileaudiopreview5.po create mode 100644 po/mr/kio5_activities.po create mode 100644 po/mr/kio5_archive.po create mode 100644 po/mr/kio5_bookmarks.po create mode 100644 po/mr/kio5_fish.po create mode 100644 po/mr/kio5_info.po create mode 100644 po/mr/kio5_man.po create mode 100644 po/mr/kio5_nfs.po create mode 100644 po/mr/kio5_recentdocuments.po create mode 100644 po/mr/kio5_sftp.po create mode 100644 po/mr/kio5_smb.po create mode 100644 po/mr/kio5_thumbnail.po create mode 100644 po/nb/docs/kioslave5/man/index.docbook create mode 100644 po/nb/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/nb/kfileaudiopreview5.po create mode 100644 po/nb/kio5_activities.po create mode 100644 po/nb/kio5_archive.po create mode 100644 po/nb/kio5_bookmarks.po create mode 100644 po/nb/kio5_fish.po create mode 100644 po/nb/kio5_info.po create mode 100644 po/nb/kio5_man.po create mode 100644 po/nb/kio5_nfs.po create mode 100644 po/nb/kio5_recentdocuments.po create mode 100644 po/nb/kio5_sftp.po create mode 100644 po/nb/kio5_smb.po create mode 100644 po/nb/kio5_thumbnail.po create mode 100644 po/nds/kfileaudiopreview5.po create mode 100644 po/nds/kio5_activities.po create mode 100644 po/nds/kio5_archive.po create mode 100644 po/nds/kio5_bookmarks.po create mode 100644 po/nds/kio5_fish.po create mode 100644 po/nds/kio5_info.po create mode 100644 po/nds/kio5_man.po create mode 100644 po/nds/kio5_nfs.po create mode 100644 po/nds/kio5_recentdocuments.po create mode 100644 po/nds/kio5_sftp.po create mode 100644 po/nds/kio5_smb.po create mode 100644 po/nds/kio5_thumbnail.po create mode 100644 po/nl/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/nl/docs/kioslave5/bzip2/index.docbook create mode 100644 po/nl/docs/kioslave5/fish/index.docbook create mode 100644 po/nl/docs/kioslave5/gzip/index.docbook create mode 100644 po/nl/docs/kioslave5/info/index.docbook create mode 100644 po/nl/docs/kioslave5/man/index.docbook create mode 100644 po/nl/docs/kioslave5/nfs/index.docbook create mode 100644 po/nl/docs/kioslave5/recentdocuments/index.docbook create mode 100644 po/nl/docs/kioslave5/sftp/index.docbook create mode 100644 po/nl/docs/kioslave5/smb/index.docbook create mode 100644 po/nl/docs/kioslave5/tar/index.docbook create mode 100644 po/nl/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/nl/docs/kioslave5/xz/index.docbook create mode 100644 po/nl/docs/kioslave5/zstd/index.docbook create mode 100644 po/nl/kfileaudiopreview5.po create mode 100644 po/nl/kio5_activities.po create mode 100644 po/nl/kio5_archive.po create mode 100644 po/nl/kio5_bookmarks.po create mode 100644 po/nl/kio5_fish.po create mode 100644 po/nl/kio5_info.po create mode 100644 po/nl/kio5_man.po create mode 100644 po/nl/kio5_mtp.po create mode 100644 po/nl/kio5_nfs.po create mode 100644 po/nl/kio5_recentdocuments.po create mode 100644 po/nl/kio5_sftp.po create mode 100644 po/nl/kio5_smb.po create mode 100644 po/nl/kio5_thumbnail.po create mode 100644 po/nn/kfileaudiopreview5.po create mode 100644 po/nn/kio5_activities.po create mode 100644 po/nn/kio5_archive.po create mode 100644 po/nn/kio5_bookmarks.po create mode 100644 po/nn/kio5_fish.po create mode 100644 po/nn/kio5_info.po create mode 100644 po/nn/kio5_man.po create mode 100644 po/nn/kio5_mtp.po create mode 100644 po/nn/kio5_nfs.po create mode 100644 po/nn/kio5_recentdocuments.po create mode 100644 po/nn/kio5_sftp.po create mode 100644 po/nn/kio5_smb.po create mode 100644 po/nn/kio5_thumbnail.po create mode 100644 po/pa/kfileaudiopreview5.po create mode 100644 po/pa/kio5_activities.po create mode 100644 po/pa/kio5_archive.po create mode 100644 po/pa/kio5_bookmarks.po create mode 100644 po/pa/kio5_fish.po create mode 100644 po/pa/kio5_info.po create mode 100644 po/pa/kio5_man.po create mode 100644 po/pa/kio5_mtp.po create mode 100644 po/pa/kio5_nfs.po create mode 100644 po/pa/kio5_recentdocuments.po create mode 100644 po/pa/kio5_sftp.po create mode 100644 po/pa/kio5_smb.po create mode 100644 po/pa/kio5_thumbnail.po create mode 100644 po/pl/kfileaudiopreview5.po create mode 100644 po/pl/kio5_activities.po create mode 100644 po/pl/kio5_archive.po create mode 100644 po/pl/kio5_bookmarks.po create mode 100644 po/pl/kio5_fish.po create mode 100644 po/pl/kio5_info.po create mode 100644 po/pl/kio5_man.po create mode 100644 po/pl/kio5_mtp.po create mode 100644 po/pl/kio5_nfs.po create mode 100644 po/pl/kio5_recentdocuments.po create mode 100644 po/pl/kio5_sftp.po create mode 100644 po/pl/kio5_smb.po create mode 100644 po/pl/kio5_thumbnail.po create mode 100644 po/pt/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/pt/docs/kioslave5/bzip2/index.docbook create mode 100644 po/pt/docs/kioslave5/fish/index.docbook create mode 100644 po/pt/docs/kioslave5/gzip/index.docbook create mode 100644 po/pt/docs/kioslave5/info/index.docbook create mode 100644 po/pt/docs/kioslave5/man/index.docbook create mode 100644 po/pt/docs/kioslave5/nfs/index.docbook create mode 100644 po/pt/docs/kioslave5/recentdocuments/index.docbook create mode 100644 po/pt/docs/kioslave5/sftp/index.docbook create mode 100644 po/pt/docs/kioslave5/smb/index.docbook create mode 100644 po/pt/docs/kioslave5/tar/index.docbook create mode 100644 po/pt/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/pt/docs/kioslave5/xz/index.docbook create mode 100644 po/pt/kfileaudiopreview5.po create mode 100644 po/pt/kio5_activities.po create mode 100644 po/pt/kio5_archive.po create mode 100644 po/pt/kio5_bookmarks.po create mode 100644 po/pt/kio5_fish.po create mode 100644 po/pt/kio5_info.po create mode 100644 po/pt/kio5_man.po create mode 100644 po/pt/kio5_mtp.po create mode 100644 po/pt/kio5_nfs.po create mode 100644 po/pt/kio5_recentdocuments.po create mode 100644 po/pt/kio5_sftp.po create mode 100644 po/pt/kio5_smb.po create mode 100644 po/pt/kio5_thumbnail.po create mode 100644 po/pt_BR/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/bzip2/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/fish/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/gzip/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/info/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/man/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/nfs/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/sftp/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/smb/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/tar/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/pt_BR/docs/kioslave5/xz/index.docbook create mode 100644 po/pt_BR/kfileaudiopreview5.po create mode 100644 po/pt_BR/kio5_activities.po create mode 100644 po/pt_BR/kio5_archive.po create mode 100644 po/pt_BR/kio5_bookmarks.po create mode 100644 po/pt_BR/kio5_fish.po create mode 100644 po/pt_BR/kio5_info.po create mode 100644 po/pt_BR/kio5_man.po create mode 100644 po/pt_BR/kio5_mtp.po create mode 100644 po/pt_BR/kio5_nfs.po create mode 100644 po/pt_BR/kio5_recentdocuments.po create mode 100644 po/pt_BR/kio5_sftp.po create mode 100644 po/pt_BR/kio5_smb.po create mode 100644 po/pt_BR/kio5_thumbnail.po create mode 100644 po/ro/kfileaudiopreview5.po create mode 100644 po/ro/kio5_activities.po create mode 100644 po/ro/kio5_archive.po create mode 100644 po/ro/kio5_bookmarks.po create mode 100644 po/ro/kio5_fish.po create mode 100644 po/ro/kio5_info.po create mode 100644 po/ro/kio5_man.po create mode 100644 po/ro/kio5_mtp.po create mode 100644 po/ro/kio5_nfs.po create mode 100644 po/ro/kio5_recentdocuments.po create mode 100644 po/ro/kio5_sftp.po create mode 100644 po/ro/kio5_smb.po create mode 100644 po/ro/kio5_thumbnail.po create mode 100644 po/ru/docs/kioslave5/gzip/index.docbook create mode 100644 po/ru/docs/kioslave5/nfs/index.docbook create mode 100644 po/ru/docs/kioslave5/sftp/index.docbook create mode 100644 po/ru/docs/kioslave5/tar/index.docbook create mode 100644 po/ru/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/ru/kfileaudiopreview5.po create mode 100644 po/ru/kio5_activities.po create mode 100644 po/ru/kio5_archive.po create mode 100644 po/ru/kio5_bookmarks.po create mode 100644 po/ru/kio5_fish.po create mode 100644 po/ru/kio5_info.po create mode 100644 po/ru/kio5_man.po create mode 100644 po/ru/kio5_mtp.po create mode 100644 po/ru/kio5_nfs.po create mode 100644 po/ru/kio5_recentdocuments.po create mode 100644 po/ru/kio5_sftp.po create mode 100644 po/ru/kio5_smb.po create mode 100644 po/ru/kio5_thumbnail.po create mode 100644 po/se/kfileaudiopreview5.po create mode 100644 po/se/kio5_activities.po create mode 100644 po/se/kio5_fish.po create mode 100644 po/se/kio5_man.po create mode 100644 po/se/kio5_nfs.po create mode 100644 po/se/kio5_sftp.po create mode 100644 po/se/kio5_smb.po create mode 100644 po/se/kio5_thumbnail.po create mode 100644 po/sk/kfileaudiopreview5.po create mode 100644 po/sk/kio5_activities.po create mode 100644 po/sk/kio5_archive.po create mode 100644 po/sk/kio5_bookmarks.po create mode 100644 po/sk/kio5_fish.po create mode 100644 po/sk/kio5_info.po create mode 100644 po/sk/kio5_man.po create mode 100644 po/sk/kio5_mtp.po create mode 100644 po/sk/kio5_nfs.po create mode 100644 po/sk/kio5_recentdocuments.po create mode 100644 po/sk/kio5_sftp.po create mode 100644 po/sk/kio5_smb.po create mode 100644 po/sk/kio5_thumbnail.po create mode 100644 po/sl/kfileaudiopreview5.po create mode 100644 po/sl/kio5_activities.po create mode 100644 po/sl/kio5_archive.po create mode 100644 po/sl/kio5_bookmarks.po create mode 100644 po/sl/kio5_fish.po create mode 100644 po/sl/kio5_info.po create mode 100644 po/sl/kio5_man.po create mode 100644 po/sl/kio5_mtp.po create mode 100644 po/sl/kio5_nfs.po create mode 100644 po/sl/kio5_recentdocuments.po create mode 100644 po/sl/kio5_sftp.po create mode 100644 po/sl/kio5_smb.po create mode 100644 po/sl/kio5_thumbnail.po create mode 100644 po/sq/kfileaudiopreview5.po create mode 100644 po/sq/kio5_archive.po create mode 100644 po/sq/kio5_bookmarks.po create mode 100644 po/sq/kio5_fish.po create mode 100644 po/sq/kio5_info.po create mode 100644 po/sq/kio5_man.po create mode 100644 po/sq/kio5_nfs.po create mode 100644 po/sq/kio5_sftp.po create mode 100644 po/sq/kio5_smb.po create mode 100644 po/sq/kio5_thumbnail.po create mode 100644 po/sr/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/sr/docs/kioslave5/bzip2/index.docbook create mode 100644 po/sr/docs/kioslave5/fish/index.docbook create mode 100644 po/sr/docs/kioslave5/gzip/index.docbook create mode 100644 po/sr/docs/kioslave5/info/index.docbook create mode 100644 po/sr/docs/kioslave5/man/index.docbook create mode 100644 po/sr/docs/kioslave5/nfs/index.docbook create mode 100644 po/sr/docs/kioslave5/recentdocuments/index.docbook create mode 100644 po/sr/docs/kioslave5/sftp/index.docbook create mode 100644 po/sr/docs/kioslave5/smb/index.docbook create mode 100644 po/sr/docs/kioslave5/tar/index.docbook create mode 100644 po/sr/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/sr/docs/kioslave5/xz/index.docbook create mode 100644 po/sr/kfileaudiopreview5.po create mode 100644 po/sr/kio5_activities.po create mode 100644 po/sr/kio5_archive.po create mode 100644 po/sr/kio5_bookmarks.po create mode 100644 po/sr/kio5_fish.po create mode 100644 po/sr/kio5_info.po create mode 100644 po/sr/kio5_man.po create mode 100644 po/sr/kio5_mtp.po create mode 100644 po/sr/kio5_nfs.po create mode 100644 po/sr/kio5_recentdocuments.po create mode 100644 po/sr/kio5_sftp.po create mode 100644 po/sr/kio5_smb.po create mode 100644 po/sr/kio5_thumbnail.po create mode 100644 po/sv/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/sv/docs/kioslave5/bzip2/index.docbook create mode 100644 po/sv/docs/kioslave5/fish/index.docbook create mode 100644 po/sv/docs/kioslave5/gzip/index.docbook create mode 100644 po/sv/docs/kioslave5/info/index.docbook create mode 100644 po/sv/docs/kioslave5/man/index.docbook create mode 100644 po/sv/docs/kioslave5/nfs/index.docbook create mode 100644 po/sv/docs/kioslave5/recentdocuments/index.docbook create mode 100644 po/sv/docs/kioslave5/sftp/index.docbook create mode 100644 po/sv/docs/kioslave5/smb/index.docbook create mode 100644 po/sv/docs/kioslave5/tar/index.docbook create mode 100644 po/sv/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/sv/docs/kioslave5/xz/index.docbook create mode 100644 po/sv/kfileaudiopreview5.po create mode 100644 po/sv/kio5_activities.po create mode 100644 po/sv/kio5_archive.po create mode 100644 po/sv/kio5_bookmarks.po create mode 100644 po/sv/kio5_fish.po create mode 100644 po/sv/kio5_info.po create mode 100644 po/sv/kio5_man.po create mode 100644 po/sv/kio5_mtp.po create mode 100644 po/sv/kio5_nfs.po create mode 100644 po/sv/kio5_recentdocuments.po create mode 100644 po/sv/kio5_sftp.po create mode 100644 po/sv/kio5_smb.po create mode 100644 po/sv/kio5_thumbnail.po create mode 100644 po/ta/kfileaudiopreview5.po create mode 100644 po/ta/kio5_activities.po create mode 100644 po/ta/kio5_archive.po create mode 100644 po/ta/kio5_bookmarks.po create mode 100644 po/ta/kio5_fish.po create mode 100644 po/ta/kio5_info.po create mode 100644 po/ta/kio5_man.po create mode 100644 po/ta/kio5_mtp.po create mode 100644 po/ta/kio5_nfs.po create mode 100644 po/ta/kio5_recentdocuments.po create mode 100644 po/ta/kio5_sftp.po create mode 100644 po/ta/kio5_smb.po create mode 100644 po/ta/kio5_thumbnail.po create mode 100644 po/tg/kfileaudiopreview5.po create mode 100644 po/tg/kio5_activities.po create mode 100644 po/tg/kio5_archive.po create mode 100644 po/tg/kio5_bookmarks.po create mode 100644 po/tg/kio5_fish.po create mode 100644 po/tg/kio5_info.po create mode 100644 po/tg/kio5_man.po create mode 100644 po/tg/kio5_nfs.po create mode 100644 po/tg/kio5_sftp.po create mode 100644 po/tg/kio5_smb.po create mode 100644 po/tg/kio5_thumbnail.po create mode 100644 po/tr/kfileaudiopreview5.po create mode 100644 po/tr/kio5_activities.po create mode 100644 po/tr/kio5_archive.po create mode 100644 po/tr/kio5_bookmarks.po create mode 100644 po/tr/kio5_fish.po create mode 100644 po/tr/kio5_info.po create mode 100644 po/tr/kio5_man.po create mode 100644 po/tr/kio5_mtp.po create mode 100644 po/tr/kio5_nfs.po create mode 100644 po/tr/kio5_recentdocuments.po create mode 100644 po/tr/kio5_sftp.po create mode 100644 po/tr/kio5_smb.po create mode 100644 po/tr/kio5_thumbnail.po create mode 100644 po/ug/kfileaudiopreview5.po create mode 100644 po/ug/kio5_activities.po create mode 100644 po/ug/kio5_archive.po create mode 100644 po/ug/kio5_bookmarks.po create mode 100644 po/ug/kio5_fish.po create mode 100644 po/ug/kio5_info.po create mode 100644 po/ug/kio5_man.po create mode 100644 po/ug/kio5_nfs.po create mode 100644 po/ug/kio5_recentdocuments.po create mode 100644 po/ug/kio5_sftp.po create mode 100644 po/ug/kio5_smb.po create mode 100644 po/ug/kio5_thumbnail.po create mode 100644 po/uk/docs/kioslave5/bookmarks/index.docbook create mode 100644 po/uk/docs/kioslave5/bzip2/index.docbook create mode 100644 po/uk/docs/kioslave5/fish/index.docbook create mode 100644 po/uk/docs/kioslave5/gzip/index.docbook create mode 100644 po/uk/docs/kioslave5/info/index.docbook create mode 100644 po/uk/docs/kioslave5/man/index.docbook create mode 100644 po/uk/docs/kioslave5/nfs/index.docbook create mode 100644 po/uk/docs/kioslave5/recentdocuments/index.docbook create mode 100644 po/uk/docs/kioslave5/sftp/index.docbook create mode 100644 po/uk/docs/kioslave5/smb/index.docbook create mode 100644 po/uk/docs/kioslave5/tar/index.docbook create mode 100644 po/uk/docs/kioslave5/thumbnail/index.docbook create mode 100644 po/uk/docs/kioslave5/xz/index.docbook create mode 100644 po/uk/docs/kioslave5/zstd/index.docbook create mode 100644 po/uk/kfileaudiopreview5.po create mode 100644 po/uk/kio5_activities.po create mode 100644 po/uk/kio5_archive.po create mode 100644 po/uk/kio5_bookmarks.po create mode 100644 po/uk/kio5_fish.po create mode 100644 po/uk/kio5_info.po create mode 100644 po/uk/kio5_man.po create mode 100644 po/uk/kio5_mtp.po create mode 100644 po/uk/kio5_nfs.po create mode 100644 po/uk/kio5_recentdocuments.po create mode 100644 po/uk/kio5_sftp.po create mode 100644 po/uk/kio5_smb.po create mode 100644 po/uk/kio5_thumbnail.po create mode 100644 po/vi/kfileaudiopreview5.po create mode 100644 po/vi/kio5_activities.po create mode 100644 po/vi/kio5_archive.po create mode 100644 po/vi/kio5_bookmarks.po create mode 100644 po/vi/kio5_fish.po create mode 100644 po/vi/kio5_info.po create mode 100644 po/vi/kio5_man.po create mode 100644 po/vi/kio5_mtp.po create mode 100644 po/vi/kio5_nfs.po create mode 100644 po/vi/kio5_recentdocuments.po create mode 100644 po/vi/kio5_sftp.po create mode 100644 po/vi/kio5_smb.po create mode 100644 po/vi/kio5_thumbnail.po create mode 100644 po/wa/kfileaudiopreview5.po create mode 100644 po/wa/kio5_activities.po create mode 100644 po/wa/kio5_archive.po create mode 100644 po/wa/kio5_bookmarks.po create mode 100644 po/wa/kio5_fish.po create mode 100644 po/wa/kio5_info.po create mode 100644 po/wa/kio5_man.po create mode 100644 po/wa/kio5_nfs.po create mode 100644 po/wa/kio5_sftp.po create mode 100644 po/wa/kio5_smb.po create mode 100644 po/wa/kio5_thumbnail.po create mode 100644 po/zh_CN/kfileaudiopreview5.po create mode 100644 po/zh_CN/kio5_activities.po create mode 100644 po/zh_CN/kio5_archive.po create mode 100644 po/zh_CN/kio5_bookmarks.po create mode 100644 po/zh_CN/kio5_fish.po create mode 100644 po/zh_CN/kio5_info.po create mode 100644 po/zh_CN/kio5_man.po create mode 100644 po/zh_CN/kio5_mtp.po create mode 100644 po/zh_CN/kio5_nfs.po create mode 100644 po/zh_CN/kio5_recentdocuments.po create mode 100644 po/zh_CN/kio5_sftp.po create mode 100644 po/zh_CN/kio5_smb.po create mode 100644 po/zh_CN/kio5_thumbnail.po create mode 100644 po/zh_TW/kfileaudiopreview5.po create mode 100644 po/zh_TW/kio5_activities.po create mode 100644 po/zh_TW/kio5_archive.po create mode 100644 po/zh_TW/kio5_bookmarks.po create mode 100644 po/zh_TW/kio5_fish.po create mode 100644 po/zh_TW/kio5_info.po create mode 100644 po/zh_TW/kio5_man.po create mode 100644 po/zh_TW/kio5_mtp.po create mode 100644 po/zh_TW/kio5_nfs.po create mode 100644 po/zh_TW/kio5_recentdocuments.po create mode 100644 po/zh_TW/kio5_sftp.po create mode 100644 po/zh_TW/kio5_smb.po create mode 100644 po/zh_TW/kio5_thumbnail.po create mode 100644 recentdocuments/CMakeLists.txt create mode 100644 recentdocuments/Messages.sh create mode 100644 recentdocuments/recentdocuments.cpp create mode 100644 recentdocuments/recentdocuments.h create mode 100644 recentdocuments/recentdocuments.json create mode 100644 recentdocuments/recentdocumentsnotifier.cpp create mode 100644 recentdocuments/recentdocumentsnotifier.desktop create mode 100644 recentdocuments/recentdocumentsnotifier.h create mode 100644 recentlyused/CMakeLists.txt create mode 100644 recentlyused/recentlyused.cpp create mode 100644 recentlyused/recentlyused.h create mode 100644 recentlyused/recentlyused.json create mode 100644 sftp/AUTHORS create mode 100644 sftp/CMakeLists.txt create mode 100644 sftp/Messages.sh create mode 100644 sftp/kio_sftp.cpp create mode 100644 sftp/kio_sftp.h create mode 100644 sftp/sftp.json create mode 100644 smb/CMakeLists.txt create mode 100644 smb/Messages.sh create mode 100644 smb/autotests/CMakeLists.txt create mode 100644 smb/autotests/fixtures/resume/thing.part create mode 100644 smb/autotests/fixtures/resumeInPlace/thing create mode 100644 smb/autotests/shouldresumetest.cpp create mode 100644 smb/autotests/smburltest.cpp create mode 100644 smb/autotests/transfertest.cpp create mode 100644 smb/config-smb.h.cmake create mode 100644 smb/discovery.cpp create mode 100644 smb/discovery.h create mode 100644 smb/dnssddiscoverer.cpp create mode 100644 smb/dnssddiscoverer.h create mode 100644 smb/kded/CMakeLists.txt create mode 100644 smb/kded/config.h.cmake create mode 100644 smb/kded/kded_smbwatcher.desktop create mode 100644 smb/kded/notifier.cpp create mode 100644 smb/kded/watcher.cpp create mode 100644 smb/kdsoap-ws-discovery-client/.clang-format create mode 100644 smb/kdsoap-ws-discovery-client/.clang-tidy create mode 100644 smb/kdsoap-ws-discovery-client/.gitlab-ci.yml create mode 100644 smb/kdsoap-ws-discovery-client/CMakeLists.txt create mode 100644 smb/kdsoap-ws-discovery-client/KDSoapWSDiscoveryClientConfig.cmake.in create mode 100644 smb/kdsoap-ws-discovery-client/LICENSES/CC0-1.0.txt create mode 100644 smb/kdsoap-ws-discovery-client/LICENSES/GPL-3.0-or-later.txt create mode 100644 smb/kdsoap-ws-discovery-client/README.md create mode 100644 smb/kdsoap-ws-discovery-client/autotests/CMakeLists.txt create mode 100644 smb/kdsoap-ws-discovery-client/autotests/test_wsdiscoveryclient.cpp create mode 100644 smb/kdsoap-ws-discovery-client/docs/CMakeLists.txt create mode 100644 smb/kdsoap-ws-discovery-client/examples/CMakeLists.txt create mode 100644 smb/kdsoap-ws-discovery-client/examples/onvif-discover/CMakeLists.txt create mode 100644 smb/kdsoap-ws-discovery-client/examples/onvif-discover/main.cpp create mode 100644 smb/kdsoap-ws-discovery-client/examples/onvif-discover/onvifdiscover.cpp create mode 100644 smb/kdsoap-ws-discovery-client/examples/onvif-discover/onvifdiscover.h create mode 100644 smb/kdsoap-ws-discovery-client/src/CMakeLists.txt create mode 100644 smb/kdsoap-ws-discovery-client/src/wsdiscoveryclient.cpp create mode 100644 smb/kdsoap-ws-discovery-client/src/wsdiscoveryclient.h create mode 100644 smb/kdsoap-ws-discovery-client/src/wsdiscoveryprobejob.cpp create mode 100644 smb/kdsoap-ws-discovery-client/src/wsdiscoveryprobejob.h create mode 100644 smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator.cpp create mode 100644 smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator.h create mode 100644 smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator_p.h create mode 100644 smb/kdsoap-ws-discovery-client/src/wsdiscoverytargetservice.cpp create mode 100644 smb/kdsoap-ws-discovery-client/src/wsdiscoverytargetservice.h create mode 100644 smb/kdsoap-ws-discovery-client/wsdl/docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-schema-os.xsd create mode 100644 smb/kdsoap-ws-discovery-client/wsdl/docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-wsdl-os.wsdl create mode 100755 smb/kdsoap-ws-discovery-client/wsdl/download.sh create mode 100644 smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2004/08/addressing create mode 100644 smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.wsdl create mode 100644 smb/kdsoap-ws-discovery-client/wsdl/schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.xsd create mode 100644 smb/kdsoap-ws-discovery-client/wsdl/www.w3.org/2006/03/addressing/ws-addr.xsd create mode 100644 smb/kio_smb.cpp create mode 100644 smb/kio_smb.h create mode 100644 smb/kio_smb_auth.cpp create mode 100644 smb/kio_smb_browse.cpp create mode 100644 smb/kio_smb_config.cpp create mode 100644 smb/kio_smb_dir.cpp create mode 100644 smb/kio_smb_file.cpp create mode 100644 smb/kio_smb_mount.cpp create mode 100644 smb/main.cpp create mode 100644 smb/smb-network.desktop create mode 100644 smb/smb.json create mode 100644 smb/smbauthenticator.cpp create mode 100644 smb/smbauthenticator.h create mode 100644 smb/smbcdiscoverer.cpp create mode 100644 smb/smbcdiscoverer.h create mode 100644 smb/smbcontext.cpp create mode 100644 smb/smbcontext.h create mode 100644 smb/smburl.cpp create mode 100644 smb/smburl.h create mode 100644 smb/transfer.cpp create mode 100644 smb/transfer.h create mode 100644 smb/transfer_resume.h create mode 100644 smb/wsdiscoverer.cpp create mode 100644 smb/wsdiscoverer.h create mode 100644 smoketest/README.md create mode 100644 smoketest/file1 create mode 100644 smoketest/kio_smoke_test/.keep create mode 100755 smoketest/smoke.sh create mode 100644 thumbnail/CMakeLists.txt create mode 100644 thumbnail/Messages.sh create mode 100644 thumbnail/appimagecreator.cpp create mode 100644 thumbnail/appimagecreator.h create mode 100644 thumbnail/appimagethumbnail.desktop create mode 100644 thumbnail/audiocreator.cpp create mode 100644 thumbnail/audiocreator.h create mode 100644 thumbnail/audiothumbnail.desktop create mode 100644 thumbnail/comicbookthumbnail.desktop create mode 100644 thumbnail/comiccreator.cpp create mode 100644 thumbnail/comiccreator.h create mode 100644 thumbnail/cursorcreator.cpp create mode 100644 thumbnail/cursorcreator.h create mode 100644 thumbnail/cursorthumbnail.desktop create mode 100644 thumbnail/directorythumbnail.desktop create mode 100644 thumbnail/djvucreator.cpp create mode 100644 thumbnail/djvucreator.h create mode 100644 thumbnail/djvuthumbnail.desktop create mode 100644 thumbnail/ebookcreator.cpp create mode 100644 thumbnail/ebookcreator.h create mode 100644 thumbnail/ebookthumbnail.desktop create mode 100644 thumbnail/exrcreator.cpp create mode 100644 thumbnail/exrcreator.h create mode 100644 thumbnail/exrthumbnail.desktop create mode 100644 thumbnail/icoutils.h create mode 100644 thumbnail/icoutils_common.cpp create mode 100644 thumbnail/icoutils_win.cpp create mode 100644 thumbnail/icoutils_wrestool.cpp create mode 100644 thumbnail/imagecreator.cpp create mode 100644 thumbnail/imagecreator.h create mode 100644 thumbnail/imagefilter.cpp create mode 100644 thumbnail/imagefilter.h create mode 100644 thumbnail/imagethumbnail.desktop create mode 100644 thumbnail/jpegcreator.cpp create mode 100644 thumbnail/jpegcreator.h create mode 100644 thumbnail/jpegcreatorsettings5.kcfg create mode 100644 thumbnail/jpegcreatorsettings5.kcfgc create mode 100644 thumbnail/jpegthumbnail.desktop create mode 100644 thumbnail/kraorathumbnail.desktop create mode 100644 thumbnail/kritacreator.cpp create mode 100644 thumbnail/kritacreator.h create mode 100644 thumbnail/opendocumentcreator.cpp create mode 100644 thumbnail/opendocumentcreator.h create mode 100644 thumbnail/opendocumentthumbnail.desktop create mode 100644 thumbnail/svgcreator.cpp create mode 100644 thumbnail/svgcreator.h create mode 100644 thumbnail/svgthumbnail.desktop create mode 100644 thumbnail/textcreator.cpp create mode 100644 thumbnail/textcreator.h create mode 100644 thumbnail/textthumbnail.desktop create mode 100644 thumbnail/thumbcreator.desktop create mode 100644 thumbnail/thumbnail.cpp create mode 100644 thumbnail/thumbnail.h create mode 100644 thumbnail/thumbnail.json create mode 100644 thumbnail/windowsexecreator.cpp create mode 100644 thumbnail/windowsexecreator.h create mode 100644 thumbnail/windowsexethumbnail.desktop create mode 100644 thumbnail/windowsimagecreator.cpp create mode 100644 thumbnail/windowsimagecreator.h create mode 100644 thumbnail/windowsimagethumbnail.desktop diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000..9c19133 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# clang-format +4267888935d765152002592e6475d0856595b767 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2255e08 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Ignore the following files +.vscode +*~ +*.[oa] +*.diff +*.kate-swp +*.kdev4 +.kdev_include_paths +*.kdevelop.pcs +*.moc +*.moc.cpp +*.orig +*.user +.*.swp +.swp.* +Doxyfile +Makefile +avail +random_seed +/build*/ +CMakeLists.txt.user* +.clang-format +/compile_commands.json +.clangd +.idea +/cmake-build* +.cache diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..f9680a1 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,6 @@ +# SPDX-FileCopyrightText: None +# SPDX-License-Identifier: CC0-1.0 + +include: + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml diff --git a/.kde-ci.yml b/.kde-ci.yml new file mode 100644 index 0000000..32bd215 --- /dev/null +++ b/.kde-ci.yml @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: None +# SPDX-License-Identifier: CC0-1.0 + +Dependencies: +- 'on': ['@all'] + 'require': + 'frameworks/extra-cmake-modules': '@stable' + 'frameworks/karchive': '@stable' + 'frameworks/kconfig': '@stable' + 'frameworks/kconfigwidgets': '@stable' + 'frameworks/kcoreaddons': '@stable' + 'frameworks/kdbusaddons': '@stable' + 'frameworks/kdoctools': '@stable' + 'frameworks/kdnssd': '@stable' + 'frameworks/ki18n': '@stable' + 'frameworks/kio': '@stable' + 'frameworks/solid': '@stable' + 'frameworks/kbookmarks': '@stable' + 'frameworks/kguiaddons': '@stable' + 'frameworks/syntax-highlighting': '@stable' + 'frameworks/kactivities': '@stable' + 'libraries/phonon': '@stable' diff --git a/.reuse/dep5 b/.reuse/dep5 new file mode 100644 index 0000000..78915a3 --- /dev/null +++ b/.reuse/dep5 @@ -0,0 +1,12 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: kio-extras +Upstream-Contact: KDE +Source: https://invent.kde.org/network/kio-extras + +Files: smb/kdsoap-ws-discovery-client/* +Copyright: Casper Meijn +License: GPL-3.0-or-later + +Files: smb/autotests/fixtures/* +Copyright: none +License: CC0-1.0 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..bb80aa4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,225 @@ +cmake_minimum_required(VERSION 3.16) + +# KDE Applications Version, managed by release script +set (RELEASE_SERVICE_VERSION_MAJOR "21") +set (RELEASE_SERVICE_VERSION_MINOR "12") +set (RELEASE_SERVICE_VERSION_MICRO "3") +set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") +project(kio-extras VERSION ${RELEASE_SERVICE_VERSION}) + +set(QT_MIN_VERSION "5.15.0") +set(KF5_MIN_VERSION "5.82.0") + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${ECM_MODULE_PATH}) + +include(KDEInstallDirs) +include(KDECMakeSettings) +include(KDECompilerSettings NO_POLICY_SCOPE) + +include(ECMMarkNonGuiExecutable) +include(ECMMarkAsTest) +include(ECMOptionalAddSubdirectory) +include(ECMQtDeclareLoggingCategory) +include(CheckIncludeFile) +include(CMakePackageConfigHelpers) +include(FeatureSummary) + +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(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS + Archive + Config + ConfigWidgets + CoreAddons + DBusAddons + DocTools + DNSSD + I18n + KIO + Solid + Bookmarks + GuiAddons + SyntaxHighlighting +) + +include(KDEClangFormat) +file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h) +kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) + +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.8.3 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(Libmtp 1.1.2) +set_package_properties(Libmtp PROPERTIES + 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_definitions( + -DQT_NO_URL_CAST_FROM_STRING + -DQT_NO_CAST_TO_ASCII + -DQT_NO_CAST_FROM_ASCII + -DQT_NO_CAST_FROM_BYTEARRAY + -DQT_NO_KEYWORDS + -DQT_NO_FOREACH + -DQT_USE_QSTRINGBUILDER + -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT + -DQT_DISABLE_DEPRECATED_BEFORE=0x050F00 + -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 + -DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055200 + -DKF_DEPRECATED_WARNINGS_SINCE=0x060000 +) + +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 ) +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( filenamesearch ) +if (Libmtp_FOUND) + add_subdirectory(mtp) +endif() + +if(NOT WIN32) + if(Gperf_FOUND) + add_subdirectory( man ) + endif() + if(TIRPC_FOUND) + add_subdirectory( nfs ) + endif() +endif() + +if(SAMBA_FOUND) + add_subdirectory(smb) +endif() + +configure_file (config-runtime.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-runtime.h ) + +ecm_qt_install_logging_categories( + EXPORT KIO_EXTRAS + FILE 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/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-2-Clause.txt b/LICENSES/BSD-2-Clause.txt new file mode 100644 index 0000000..baa80b5 --- /dev/null +++ b/LICENSES/BSD-2-Clause.txt @@ -0,0 +1,22 @@ +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. + +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/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-only.txt b/LICENSES/LGPL-2.0-only.txt new file mode 100644 index 0000000..ec9eedc --- /dev/null +++ b/LICENSES/LGPL-2.0-only.txt @@ -0,0 +1,444 @@ +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/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/LGPL-2.1-only.txt b/LICENSES/LGPL-2.1-only.txt new file mode 100644 index 0000000..aaaba16 --- /dev/null +++ b/LICENSES/LGPL-2.1-only.txt @@ -0,0 +1,462 @@ +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. + +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. + + 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 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. + +signature of Ty Coon, 1 April 1990 +Ty Coon, President of Vice +That's all there is to it! diff --git a/LICENSES/LGPL-2.1-or-later.txt b/LICENSES/LGPL-2.1-or-later.txt new file mode 100644 index 0000000..aaaba16 --- /dev/null +++ b/LICENSES/LGPL-2.1-or-later.txt @@ -0,0 +1,462 @@ +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. + +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. + + 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 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. + +signature of Ty Coon, 1 April 1990 +Ty Coon, President of Vice +That's all there is to it! diff --git a/LICENSES/LGPL-3.0-only.txt b/LICENSES/LGPL-3.0-only.txt new file mode 100644 index 0000000..9e2e9f7 --- /dev/null +++ b/LICENSES/LGPL-3.0-only.txt @@ -0,0 +1,144 @@ +GNU LESSER 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. + +This version of the GNU Lesser General Public License incorporates the terms +and conditions of version 3 of the GNU General Public License, supplemented +by the additional permissions listed below. + +0. Additional Definitions. + +As used herein, "this License" refers to version 3 of the GNU Lesser General +Public License, and the "GNU GPL" refers to version 3 of the GNU General Public +License. + +"The Library" refers to a covered work governed by this License, other than +an Application or a Combined Work as defined below. + +An "Application" is any work that makes use of an interface provided by the +Library, but which is not otherwise based on the Library. Defining a subclass +of a class defined by the Library is deemed a mode of using an interface provided +by the Library. + +A "Combined Work" is a work produced by combining or linking an Application +with the Library. The particular version of the Library with which the Combined +Work was made is also called the "Linked Version". + +The "Minimal Corresponding Source" for a Combined Work means the Corresponding +Source for the Combined Work, excluding any source code for portions of the +Combined Work that, considered in isolation, are based on the Application, +and not on the Linked Version. + +The "Corresponding Application Code" for a Combined Work means the object +code and/or source code for the Application, including any data and utility +programs needed for reproducing the Combined Work from the Application, but +excluding the System Libraries of the Combined Work. + +1. Exception to Section 3 of the GNU GPL. +You may convey a covered work under sections 3 and 4 of this License without +being bound by section 3 of the GNU GPL. + +2. Conveying Modified Versions. +If you modify a copy of the Library, and, in your modifications, a facility +refers to a function or data to be supplied by an Application that uses the +facility (other than as an argument passed when the facility is invoked), +then you may convey a copy of the modified version: + +a) under this License, provided that you make a good faith effort to ensure +that, in the event an Application does not supply the function or data, the +facility still operates, and performs whatever part of its purpose remains +meaningful, or + +b) under the GNU GPL, with none of the additional permissions of this License +applicable to that copy. + +3. Object Code Incorporating Material from Library Header Files. +The object code form of an Application may incorporate material from a header +file that is part of the Library. You may convey such object code under terms +of your choice, provided that, if the incorporated material is not limited +to numerical parameters, data structure layouts and accessors, or small macros, +inline functions and templates (ten or fewer lines in length), you do both +of the following: + +a) Give prominent notice with each copy of the object code that the Library +is used in it and that the Library and its use are covered by this License. + +b) Accompany the object code with a copy of the GNU GPL and this license document. + +4. Combined Works. +You may convey a Combined Work under terms of your choice that, taken together, +effectively do not restrict modification of the portions of the Library contained +in the Combined Work and reverse engineering for debugging such modifications, +if you also do each of the following: + +a) Give prominent notice with each copy of the Combined Work that the Library +is used in it and that the Library and its use are covered by this License. + +b) Accompany the Combined Work with a copy of the GNU GPL and this license +document. + +c) For a Combined Work that displays copyright notices during execution, include +the copyright notice for the Library among these notices, as well as a reference +directing the user to the copies of the GNU GPL and this license document. + + d) Do one of the following: + +0) Convey the Minimal Corresponding Source under the terms of this License, +and the Corresponding Application Code in a form suitable for, and under terms +that permit, the user to recombine or relink the Application with a modified +version of the Linked Version to produce a modified Combined Work, in the +manner specified by section 6 of the GNU GPL for conveying Corresponding Source. + +1) Use a suitable shared library mechanism for linking with the Library. +A suitable mechanism is one that (a) uses at run time a copy of the Library +already present on the user's computer system, and (b) will operate properly +with a modified version of the Library that is interface-compatible with the +Linked Version. + +e) Provide Installation Information, but only if you would otherwise be required +to provide such information under section 6 of the GNU GPL, and only to the +extent that such information is necessary to install and execute a modified +version of the Combined Work produced by recombining or relinking the Application +with a modified version of the Linked Version. (If you use option 4d0, the +Installation Information must accompany the Minimal Corresponding Source and +Corresponding Application Code. If you use option 4d1, you must provide the +Installation Information in the manner specified by section 6 of the GNU GPL +for conveying Corresponding Source.) + +5. Combined Libraries. +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 that are +not Applications and are not covered by this License, and convey such a combined +library under terms of your choice, if you do both of the following: + +a) Accompany the combined library with a copy of the same work based on the +Library, uncombined with any other library facilities, conveyed under the +terms of this License. + +b) Give prominent notice with the combined library that part of it is a work +based on the Library, and explaining where to find the accompanying uncombined +form of the same work. + +6. Revised Versions of the GNU Lesser General Public License. +The Free Software Foundation may publish revised and/or new versions of the +GNU 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 as you +received it specifies that a certain numbered version of the GNU Lesser General +Public License "or any later version" applies to it, you have the option of +following the terms and conditions either of that published version or of +any later version published by the Free Software Foundation. If the Library +as you received it does not specify a version number of the GNU Lesser General +Public License, you may choose any version of the GNU Lesser General Public +License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide whether +future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is permanent +authorization for you to choose that version for the Library. 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/LicenseRef-KDE-Accepted-LGPL.txt b/LICENSES/LicenseRef-KDE-Accepted-LGPL.txt new file mode 100644 index 0000000..232b3c5 --- /dev/null +++ b/LICENSES/LicenseRef-KDE-Accepted-LGPL.txt @@ -0,0 +1,12 @@ +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 3 of the license or (at your option) 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 6 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..5b6d5ce --- /dev/null +++ b/about/CMakeLists.txt @@ -0,0 +1,13 @@ +add_library(kio_about MODULE) +set_target_properties(kio_about PROPERTIES + OUTPUT_NAME "about" +) + +target_sources(kio_about PRIVATE kio_about.cpp) + +target_link_libraries(kio_about + KF5::KIOCore + Qt5::Network +) + +install(TARGETS kio_about DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio ) 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.json b/about/about.json new file mode 100644 index 0000000..9c7d66c --- /dev/null +++ b/about/about.json @@ -0,0 +1,14 @@ +{ + "KDE-KIO-Protocols": { + "about": { + "Class": ":local", + "Icon": "help-about", + "defaultMimetype": "text/html", + "exec": "kf5/kio/about", + "input": "none", + "output": "filesystem", + "protocol": "about", + "reading": true + } + } +} diff --git a/about/kio_about.cpp b/about/kio_about.cpp new file mode 100644 index 0000000..6741c2d --- /dev/null +++ b/about/kio_about.cpp @@ -0,0 +1,70 @@ +/* This file is part of the KDE libraries + + SPDX-FileCopyrightText: 2002 John Firebaugh + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include "kio_about.h" + +#include +#include + +using namespace KIO; + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.about" FILE "about.json") +}; + +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(QStringLiteral("text/html")); + data( output ); + finished(); +} + +void AboutProtocol::mimetype( const QUrl& ) +{ + mimeType(QStringLiteral("text/html")); + finished(); +} + +extern "C" Q_DECL_EXPORT int kdemain( int argc, char **argv ) +{ + QCoreApplication app(argc, argv); + + app.setApplicationName(QStringLiteral("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; +} + +#include "kio_about.moc" diff --git a/about/kio_about.h b/about/kio_about.h new file mode 100644 index 0000000..0c193cb --- /dev/null +++ b/about/kio_about.h @@ -0,0 +1,27 @@ +/* This file is part of the KDE libraries + + SPDX-FileCopyrightText: 2002 John Firebaugh + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ +#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..3f336de --- /dev/null +++ b/activities/CMakeLists.txt @@ -0,0 +1,41 @@ +# vim:set softtabstop=3 shiftwidth=3 tabstop=3 expandtab: + +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_activities\") + +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +include_directories ( + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ) + +add_subdirectory(fileitemplugin) + +########### next target ############### + +add_library(kio_activities MODULE) +set_target_properties(kio_activities PROPERTIES + OUTPUT_NAME "activities" +) + +target_sources(kio_activities PRIVATE + KioActivities.cpp + utils/qsqlquery_iterator.cpp + common/database/Database.cpp + common/database/schema/ResourcesDatabaseSchema.cpp + ) + +target_link_libraries ( + kio_activities + Qt5::Sql + KF5::KIOCore + KF5::DBusAddons + KF5::Activities + KF5::I18n + Qt5::Network + ) + +install ( + TARGETS kio_activities + DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio + ) diff --git a/activities/KioActivities.cpp b/activities/KioActivities.cpp new file mode 100644 index 0000000..4c88cba --- /dev/null +++ b/activities/KioActivities.cpp @@ -0,0 +1,358 @@ +/* + * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#include "KioActivities.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.activities" FILE "activities.json") +}; + +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); +} + +#include "KioActivities.moc" diff --git a/activities/KioActivities.h b/activities/KioActivities.h new file mode 100644 index 0000000..7a906b8 --- /dev/null +++ b/activities/KioActivities.h @@ -0,0 +1,33 @@ +/* + * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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.json b/activities/activities.json new file mode 100644 index 0000000..08d6919 --- /dev/null +++ b/activities/activities.json @@ -0,0 +1,31 @@ +{ + "KDE-KIO-Protocols": { + "activities": { + "Class": ":local", + "Icon": "folder-activities", + "deleting": true, + "exec": "kf5/kio/activities", + "input": "none", + "linking": false, + "listing": [ + "Name", + "Type", + "Size", + "Date", + "AccessDate", + "Access", + "Owner", + "Group", + "Link" + ], + "makedir": false, + "maxInstances": 100, + "moving": false, + "output": "filesystem", + "protocol": "activities", + "reading": true, + "source": false, + "writing": true + } + } +} diff --git a/activities/common/database/Database.cpp b/activities/common/database/Database.cpp new file mode 100644 index 0000000..3c2580d --- /dev/null +++ b/activities/common/database/Database.cpp @@ -0,0 +1,278 @@ +/* + * SPDX-FileCopyrightText: 2014-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..0001d63 --- /dev/null +++ b/activities/common/database/Database.h @@ -0,0 +1,135 @@ +/* + * SPDX-FileCopyrightText: 2014-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..45eb138 --- /dev/null +++ b/activities/common/database/schema/ResourcesDatabaseSchema.cpp @@ -0,0 +1,191 @@ +/* + * SPDX-FileCopyrightText: 2015-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..f3ebbe5 --- /dev/null +++ b/activities/common/database/schema/ResourcesDatabaseSchema.h @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2011-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..c6b40cf --- /dev/null +++ b/activities/common/dbus/common.h @@ -0,0 +1,45 @@ +/* + * SPDX-FileCopyrightText: 2010-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..565252e --- /dev/null +++ b/activities/common/specialvalues.h @@ -0,0 +1,24 @@ +/* + * SPDX-FileCopyrightText: 2015-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..aec1840 --- /dev/null +++ b/activities/fileitemplugin/CMakeLists.txt @@ -0,0 +1,23 @@ +# vim:set softtabstop=3 shiftwidth=3 tabstop=3 expandtab: + +add_library(kactivitymanagerd_fileitem_linking_plugin MODULE) + +target_sources(kactivitymanagerd_fileitem_linking_plugin PRIVATE + FileItemLinkingPlugin.cpp + FileItemLinkingPluginActionLoader.cpp + ../utils/qsqlquery_iterator.cpp + ) + +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..a6d8428 --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPlugin.cpp @@ -0,0 +1,208 @@ +/* + * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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() +{ + 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() +{ + if (status != Status::LoadingBlocked) { + return; + } + status = Status::ShouldLoad; + 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) +{ + if (root) { + return root; + } + + // If we are showing Loading... text, this means the submenu + // is not opened yet, so activities should not be loaded + status = Status::LoadingBlocked; + + root = new QAction(QIcon::fromTheme("activities"), + i18n("Activities"), parentWidget); + + rootMenu = new QMenu(parentWidget); + rootMenu->addAction(new QAction(i18n("Loading..."), this)); + + connect(root, &QAction::hovered, + this, &Private::rootActionHovered); + + root->setMenu(rootMenu); + + return root; +} + +void FileItemLinkingPlugin::Private::loadAllActions() +{ + if (status != Status::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 (status != Status::Loaded) { + status = Status::Loaded; // loading is async, we don't want to slin two threads + + auto loader = FileItemLinkingPluginActionLoader::create(items); + + static FileItemLinkingPluginActionStaticInit init; + + connect(loader, &FileItemLinkingPluginActionLoader::result, + this, &Private::setActions, + Qt::QueuedConnection); + + loader->start(); + } +} + +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..1d5923d --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPlugin.h @@ -0,0 +1,33 @@ +/* + * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..a38ea5a --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPluginActionLoader.cpp @@ -0,0 +1,195 @@ +/* + * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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 { + const QString 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); + } + + Q_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..bf2dc23 --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPluginActionLoader.h @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..4f5f815 --- /dev/null +++ b/activities/fileitemplugin/FileItemLinkingPlugin_p.h @@ -0,0 +1,63 @@ +/* + * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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(); + + QPointer 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: + enum class Status { + LoadingBlocked, + ShouldLoad, + Loaded + }; + Status status = Status::LoadingBlocked; +}; + +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..bdd5cae --- /dev/null +++ b/activities/fileitemplugin/kactivitymanagerd_fileitem_linking_plugin.json @@ -0,0 +1,47 @@ +{ + "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[hu]": "Fájlok linkelése aktivitásokhoz", + "Name[ia]": "Liga files a Activitates", + "Name[it]": "Collega file alle attività", + "Name[ko]": "파일과 활동 연결", + "Name[lt]": "Susieti failus su veiklomis", + "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[ro]": "Leagă fișiere de activități", + "Name[ru]": "Связывание файлов с комнатами", + "Name[sk]": "PrepojiÅ¥ súbory s Aktivitami", + "Name[sl]": "Poveži datoteke z aktivnostmi", + "Name[sv]": "Länkar filer till aktiviteter", + "Name[ta]": "கோப்புகளை செயல்பாடுகளுடன் இணை", + "Name[uk]": "Пов'язування файлів із просторами дій", + "Name[vi]": "Liên kết tệp với Hoạt động", + "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..3c102f0 --- /dev/null +++ b/activities/utils/d_ptr.h @@ -0,0 +1,39 @@ +/* + * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..76482f0 --- /dev/null +++ b/activities/utils/d_ptr_implementation.h @@ -0,0 +1,42 @@ +/* + * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..10ac04b --- /dev/null +++ b/activities/utils/qsqlquery_iterator.cpp @@ -0,0 +1,21 @@ +/* + * SPDX-FileCopyrightText: 2013-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..839e756 --- /dev/null +++ b/activities/utils/qsqlquery_iterator.h @@ -0,0 +1,68 @@ +/* + * SPDX-FileCopyrightText: 2013-2016 Ivan Cukic + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..14f1cf0 --- /dev/null +++ b/archive/CMakeLists.txt @@ -0,0 +1,87 @@ +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 +) + +ecm_qt_declare_logging_category(kio_archive_debug_SRCS + HEADER kio_archive_debug.h + IDENTIFIER KIO_ARCHIVE_LOG + CATEGORY_NAME kf.kio.slaves.archive + OLD_CATEGORY_NAMES log_kio_archive + DESCRIPTION "KIO archive" + EXPORT KIO_EXTRAS +) + +############### ArchiveProtocolBase library ########### + +add_library(kioarchive kio_archivebase.cpp ${kio_archive_debug_SRCS}) + +include(GenerateExportHeader) +generate_export_header(kioarchive BASE_NAME libkioarchive EXPORT_FILE_NAME libkioarchive_export.h) + +target_compile_definitions(kioarchive + PRIVATE + -DKIOCORE_DISABLE_DEPRECATED_BEFORE_AND_AT=0x054400 # need to support KIO::detailsToStatDetails +) + +target_link_libraries(kioarchive + PUBLIC + KF5::Archive + KF5::KIOCore + PRIVATE + KF5::I18n + Qt5::Network + Qt5::DBus +) + +set_target_properties(kioarchive PROPERTIES + VERSION ${KIOARCHIVE_VERSION} + SOVERSION ${KIOARCHIVE_SOVERSION} + EXPORT_NAME KioArchive +) + +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_SRCS}) +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..4acca81 --- /dev/null +++ b/archive/archive.json @@ -0,0 +1,125 @@ +{ + "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", + "application/x-zstd-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..e2368dc --- /dev/null +++ b/archive/autotests/CMakeLists.txt @@ -0,0 +1,6 @@ +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +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..ea010e9 --- /dev/null +++ b/archive/autotests/testkioarchive.cpp @@ -0,0 +1,163 @@ +/* This file is part of the KDE project + SPDX-FileCopyrightText: 2007 David Faure + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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::statDetails(src, KIO::StatJob::SourceSide, KIO::StatNoDetails, 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..5e6fcf0 --- /dev/null +++ b/archive/autotests/testkioarchive.h @@ -0,0 +1,44 @@ +/* This file is part of the KDE project + SPDX-FileCopyrightText: 2007 David Faure + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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..a00b8db --- /dev/null +++ b/archive/kio_archive.cpp @@ -0,0 +1,86 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 David Faure + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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 == QLatin1String("ar") ) { + qCDebug(KIO_ARCHIVE_LOG) << "Opening KAr on " << archiveFile; + return new KAr( archiveFile ); + } + else if ( proto == QLatin1String("tar") ) { + qCDebug(KIO_ARCHIVE_LOG) << "Opening KTar on " << archiveFile; + return new KTar( archiveFile ); + } + else if ( proto == QLatin1String("zip") ) { + qCDebug(KIO_ARCHIVE_LOG) << "Opening KZip on " << archiveFile; + return new KZip( archiveFile ); + } + else if ( proto == QLatin1String("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..1d3e94b --- /dev/null +++ b/archive/kio_archive.h @@ -0,0 +1,21 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 David Faure + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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_archivebase.cpp b/archive/kio_archivebase.cpp new file mode 100644 index 0000000..1f1a90d --- /dev/null +++ b/archive/kio_archivebase.cpp @@ -0,0 +1,662 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 David Faure + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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).constData(), &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(); + + if (!fullPath.isEmpty() && !fullPath.endsWith(QLatin1Char('/'))) + fullPath += QLatin1Char('/'); + + 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(QLatin1Char('/'), pos+1 )) != -1 ) + { + QString tryPath = fullPath.left( pos ); + qCDebug(KIO_ARCHIVE_LOG) << fullPath << "trying" << tryPath; + if ( QT_STAT( QFile::encodeName(tryPath).constData(), &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; + if ( path.length() > 1 ) + { + if (path.endsWith(QLatin1Char('/'))) + path.chop(1); + } + else + path = QStringLiteral("/"); + 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")); + // silence deprecation warning for KIO::detailsToStatDetails + QT_WARNING_PUSH + QT_WARNING_DISABLE_CLANG("-Wdeprecated-declarations") + QT_WARNING_DISABLE_GCC("-Wdeprecated-declarations") + details = sDetails.isEmpty() ? KIO::StatDefaultDetails : KIO::detailsToStatDetails(sDetails.toInt()); + QT_WARNING_POP + } +#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, QStringLiteral(".") ); + 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() + QLatin1Char('/') ); + 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 != QLatin1String("/")) + { + 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(QLatin1String("."))) { + 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).constData(), &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 = QStringLiteral("/"); + 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..91dd1c7 --- /dev/null +++ b/archive/kio_archivebase.h @@ -0,0 +1,55 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 David Faure + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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..8e72e32 --- /dev/null +++ b/bookmarks/CMakeLists.txt @@ -0,0 +1,20 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_bookmarks\") + +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +add_library(kio_bookmarks MODULE) +set_target_properties(kio_bookmarks PROPERTIES + OUTPUT_NAME "bookmarks" +) + +target_sources(kio_bookmarks PRIVATE + kio_bookmarks.cpp + kio_bookmarks_html.cpp + kio_bookmarks_pixmap.cpp +) + +target_link_libraries(kio_bookmarks KF5::KIOCore KF5::I18n KF5::Bookmarks KF5::Solid KF5::GuiAddons KF5::KIOFileWidgets) + +install(TARGETS kio_bookmarks DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + +install( FILES kio_bookmarks.css DESTINATION ${KDE_INSTALL_DATADIR}/kio_bookmarks ) 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.json b/bookmarks/bookmarks.json new file mode 100644 index 0000000..2e2a291 --- /dev/null +++ b/bookmarks/bookmarks.json @@ -0,0 +1,14 @@ +{ + "KDE-KIO-Protocols": { + "bookmarks": { + "Class": ":local", + "Icon": "bookmarks", + "X-DocPath": "kioslave5/bookmarks/index.html", + "exec": "kf5/kio/bookmarks", + "input": "none", + "output": "stream", + "protocol": "bookmarks", + "reading": true + } + } +} diff --git a/bookmarks/kio_bookmarks.cpp b/bookmarks/kio_bookmarks.cpp new file mode 100644 index 0000000..07471e4 --- /dev/null +++ b/bookmarks/kio_bookmarks.cpp @@ -0,0 +1,226 @@ +/* + SPDX-FileCopyrightText: 2008 Xavier Vello + + SPDX-License-Identifier: GPL-2.0-or-later + +*/ + +#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; + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.bookmarks" FILE "bookmarks.json") +}; + +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; +} + +#include "kio_bookmarks.moc" diff --git a/bookmarks/kio_bookmarks.css b/bookmarks/kio_bookmarks.css new file mode 100644 index 0000000..935e1d2 --- /dev/null +++ b/bookmarks/kio_bookmarks.css @@ -0,0 +1,105 @@ +/* +SPDX-FileCopyrightText: 2008 Xavier Vello + +SPDX-License-Identifier: GPL-2.0-or-later +*/ + +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..67d4d78 --- /dev/null +++ b/bookmarks/kio_bookmarks.h @@ -0,0 +1,52 @@ +/* + SPDX-FileCopyrightText: 2008 Xavier Vello + + SPDX-License-Identifier: GPL-2.0-or-later +*/ +#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..3c71895 --- /dev/null +++ b/bookmarks/kio_bookmarks_html.cpp @@ -0,0 +1,202 @@ +/* +SPDX-FileCopyrightText: 2008 Xavier Vello + +SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#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..25563c8 --- /dev/null +++ b/bookmarks/kio_bookmarks_pixmap.cpp @@ -0,0 +1,65 @@ +/* +SPDX-FileCopyrightText: 2008 Xavier Vello + +SPDX-License-Identifier: GPL-2.0-or-later + +*/ + +#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/FindLibmtp.cmake b/cmake/FindLibmtp.cmake new file mode 100644 index 0000000..2267048 --- /dev/null +++ b/cmake/FindLibmtp.cmake @@ -0,0 +1,74 @@ +# SPDX-FileCopyrightText: 2014 Jan Grulich +# SPDX-FileCopyrightText: 2021 Friedrich W. H. Kossebau +# +# SPDX-License-Identifier: BSD-3-Clause + +#[=======================================================================[.rst: +FindLibmtp +---------- + +Try to find the libmtp library. + +This will define the following variables: + +``Libmtp_FOUND`` + TRUE if (the requested version of) libmtp is available +``Libmtp_VERSION`` + The version of libmtp +``Libmtp_LIBRARIES`` + The libraries of libmtp for use with target_link_libraries() +``Libmtp_INCLUDE_DIRS`` + The include dirs of libmtp for use with target_include_directories() +``Libmtp_DEFINITIONS`` + Compiler switches required for using libmtp + +If ``Libmtp_FOUND`` is TRUE, it will also define the following imported +target: + +``Libmtp::Libmtp`` + The libmtp library +#]=======================================================================] + +find_package(PkgConfig QUIET) +pkg_check_modules(PC_Libmtp PC_MTP QUIET libmtp>=${Libmtp_FIND_VERSION}) + +find_library(Libmtp_LIBRARIES + NAMES mtp + HINTS ${PC_Libmtp_LIBRARY_DIRS} +) + +find_path(Libmtp_INCLUDE_DIRS + NAMES libmtp.h + HINTS ${PC_Libmtp_INCLUDE_DIRS} +) + +set(Libmtp_VERSION ${PC_Libmtp_VERSION}) +set(Libmtp_DEFINITIONS ${PC_Libmtp_CFLAGS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Libmtp + FOUND_VAR + Libmtp_FOUND + REQUIRED_VARS + Libmtp_LIBRARIES + Libmtp_INCLUDE_DIRS + VERSION_VAR + Libmtp_VERSION +) + +if(Libmtp_FOUND AND NOT TARGET Libmtp::Libmtp) + add_library(Libmtp::Libmtp UNKNOWN IMPORTED) + set_target_properties(Libmtp::Libmtp PROPERTIES + IMPORTED_LOCATION "${Libmtp_LIBRARIES}" + INTERFACE_COMPILE_OPTIONS "${Libmtp_DEFINITIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${Libmtp_INCLUDE_DIRS}" + ) +endif() + +mark_as_advanced(Libmtp_LIBRARIES Libmtp_INCLUDE_DIRS Libmtp_VERSION Libmtp_DEFINITIONS) + +include(FeatureSummary) +set_package_properties(Libmtp PROPERTIES + DESCRIPTION "libmtp, an Initiator implementation of the Media Transfer Protocol (MTP)" + URL "http://libmtp.sourceforge.net/" +) diff --git a/cmake/FindSamba.cmake b/cmake/FindSamba.cmake new file mode 100644 index 0000000..8ddff68 --- /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/Findlibssh.cmake b/cmake/Findlibssh.cmake new file mode 100644 index 0000000..c0f4f38 --- /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_DIR - 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_DIR 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..9c8c60a --- /dev/null +++ b/config-runtime.h.cmake @@ -0,0 +1,16 @@ +/* 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@" 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..c34453a --- /dev/null +++ b/doc/kioslave/CMakeLists.txt @@ -0,0 +1,22 @@ +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(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() +if(KArchive_HAVE_ZSTD) + add_subdirectory(zstd) +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/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/doc/kioslave/zstd/CMakeLists.txt b/doc/kioslave/zstd/CMakeLists.txt new file mode 100644 index 0000000..3a03c12 --- /dev/null +++ b/doc/kioslave/zstd/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kioslave5/zstd) diff --git a/doc/kioslave/zstd/index.docbook b/doc/kioslave/zstd/index.docbook new file mode 100644 index 0000000..3784b6e --- /dev/null +++ b/doc/kioslave/zstd/index.docbook @@ -0,0 +1,37 @@ + + + +]> + +
        +zstd + + +FriedrichW. H.Kossebau + + + + +zstd is a compression program. + +The zstd kioslave is not directly usable, and is intended for use +as a filter. For example, the tar kioslave can filter a file through +the zstd kioslave, in order to display the contents of a tar.zst file directly in a &konqueror; +window. + +If you click on a file compressed with a zst 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 zstd filter, you +can find documentation on using kioslaves at http://techbase.kde.org + + See the manual: zstd. + + +
        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..6b6aa5d --- /dev/null +++ b/filenamesearch/CMakeLists.txt @@ -0,0 +1,15 @@ +kcoreaddons_add_plugin(kio_filenamesearch INSTALL_NAMESPACE "kf5/kio") + +target_link_libraries(kio_filenamesearch KF5::KIOCore KF5::DBusAddons Qt5::Network KF5::KIOCore KF5::I18n) +target_sources(kio_filenamesearch PRIVATE kio_filenamesearch.cpp) + +ecm_qt_declare_logging_category(kio_filenamesearch + HEADER kio_filenamesearch_debug.h + IDENTIFIER KIO_FILENAMESEARCH + CATEGORY_NAME kf.kio.slaves.filenamesearch + OLD_CATEGORY_NAMES kio_filenamesearch + DESCRIPTION "KIO filenamesearch" + EXPORT KIO_EXTRAS +) + +add_subdirectory(kded) diff --git a/filenamesearch/filenamesearch.json b/filenamesearch/filenamesearch.json new file mode 100644 index 0000000..17e1204 --- /dev/null +++ b/filenamesearch/filenamesearch.json @@ -0,0 +1,32 @@ +{ + "KDE-KIO-Protocols": { + "filenamesearch": { + "Class": ":local", + "Icon": "edit-find", + "deleting": true, + "determineMimetypeFromExtension": false, + "exec": "kf5/kio/filenamesearch", + "input": "none", + "linking": false, + "listing": [ + "Name", + "Type", + "Size", + "Date", + "AccessDate", + "Access", + "Owner", + "Group", + "Link" + ], + "makedir": false, + "maxInstances": 10, + "moving": false, + "output": "filesystem", + "protocol": "filenamesearch", + "reading": true, + "source": false, + "writing": false + } + } +} diff --git a/filenamesearch/kded/CMakeLists.txt b/filenamesearch/kded/CMakeLists.txt new file mode 100644 index 0000000..4d39180 --- /dev/null +++ b/filenamesearch/kded/CMakeLists.txt @@ -0,0 +1,14 @@ +add_library(filenamesearchmodule MODULE) + +target_sources(filenamesearchmodule PRIVATE + filenamesearchmodule.cpp +) + +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..c02aa0d --- /dev/null +++ b/filenamesearch/kded/filenamesearchmodule.cpp @@ -0,0 +1,104 @@ +/* + * This file is part of the KDE KIO-extras Project + * SPDX-FileCopyrightText: 2016 Anthony Fieroni + * + * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + * + */ + +#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..019f350 --- /dev/null +++ b/filenamesearch/kded/filenamesearchmodule.desktop @@ -0,0 +1,96 @@ +[Desktop Entry] +Type=Service +Icon=edit-find +ServiceTypes=KDEDModule +X-KDE-ServiceTypes=KDEDModule +X-KDE-Library=filenamesearchmodule +X-KDE-FactoryName=filenamesearchmodule +X-KDE-Kded-load-on-demand=true +X-KDE-Kded-autoload=false + +Name=Search Folder Updater +Name[ar]=مُحدّث مجلدات البحث +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]=Uaktualnianie katalogów wyszukiwania +Name[pt]=Actualização das Pastas de Pesquisa +Name[pt_BR]=Atualização das pastas de pesquisa +Name[ro]=Actualizator pentru dosare de căutare +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[ta]=தேடல் அடைவு புதுப்பிப்பு சேவை +Name[tr]=Arama Klasörü Güncelleyici +Name[uk]=Засіб оновлення тек пошуку +Name[vi]=Trình cập nhật thư mục tìm kiếm +Name[x-test]=xxSearch Folder Updaterxx +Name[zh_CN]=搜索文件夹更新程序 +Name[zh_TW]=搜尋資料夾更新器 +Comment=Allows automatic updates of Search Folders +Comment[ar]=يُتيح التحديثات التلقائية لمجلدات البحث +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]=Sam uaktualnia katalogi 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[ro]=Permite actualizări automate ale dosarelor de căutare +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[ta]=தேடல் அடைவுகளை தானாக புதுப்பிக்கும் +Comment[tr]=Arama Klasörlerinin otomatik güncellenmelerine izin verir +Comment[uk]=Надає змогу автоматично оновлювати теки пошуку +Comment[vi]=Cho phép tá»± động cập nhật các thư mục tìm kiếm +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..4ec68c6 --- /dev/null +++ b/filenamesearch/kded/filenamesearchmodule.h @@ -0,0 +1,35 @@ +/* + * This file is part of the KDE KIO-extras Project + * SPDX-FileCopyrightText: 2016 Anthony Fieroni + * + * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + * + */ + +#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..74cccc0 --- /dev/null +++ b/filenamesearch/kio_filenamesearch.cpp @@ -0,0 +1,239 @@ +/* + * SPDX-FileCopyrightText: 2010 Peter Penz + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "kio_filenamesearch.h" +#include "kio_filenamesearch_p.h" + +#include "kio_filenamesearch_debug.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.filenamesearch" FILE "filenamesearch.json") +}; + +static bool contentContainsPattern(const QUrl &url, const QRegularExpression ®ex) +{ + auto fileContainsPattern = [&](const QString &path) { + QFile file(path); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + return false; + } + + QTextStream in(&file); + while (!in.atEnd()) { + const QString line = in.readLine(); + if (regex.match(line).hasMatch()) { + return true; + } + } + + return false; + }; + + if (url.isLocalFile()) { + return fileContainsPattern(url.toLocalFile()); + } else { + QTemporaryFile tempFile; + if (tempFile.open()) { + const QString tempName = tempFile.fileName(); + KIO::Job *getJob = KIO::file_copy(url, QUrl::fromLocalFile(tempName), -1, KIO::Overwrite | KIO::HideProgressInfo); + if (getJob->exec()) { + // The non-local file was downloaded successfully. + return fileContainsPattern(tempName); + } + } + } + + return false; +} + +static bool match(const KIO::UDSEntry &entry, const QRegularExpression ®ex, bool searchContents) +{ + if (!searchContents) { + return regex.match(entry.stringValue(KIO::UDSEntry::UDS_NAME)).hasMatch(); + } else { + const QUrl entryUrl(entry.stringValue(KIO::UDSEntry::UDS_URL)); + QMimeDatabase mdb; + QMimeType mimetype = mdb.mimeTypeForUrl(entryUrl); + if (mimetype.inherits(QStringLiteral("text/plain"))) { + return contentContainsPattern(entryUrl, regex); + } + } + + return false; +} + +FileNameSearchProtocol::FileNameSearchProtocol(const QByteArray &pool, const QByteArray &app) + : QObject() + , SlaveBase("search", pool, app) +{ + QDBusInterface kded(QStringLiteral("org.kde.kded5"), QStringLiteral("/kded"), QStringLiteral("org.kde.kded5")); + kded.call(QStringLiteral("loadModule"), QStringLiteral("filenamesearchmodule")); +} + +FileNameSearchProtocol::~FileNameSearchProtocol() = default; + +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(); +} + +// Create a UDSEntry for "." +void FileNameSearchProtocol::listRootEntry() +{ + 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); +} + +void FileNameSearchProtocol::listDir(const QUrl &url) +{ + listRootEntry(); + + const QUrlQuery urlQuery(url); + const QString search = urlQuery.queryItemValue(QStringLiteral("search")); + if (search.isEmpty()) { + finished(); + return; + } + + const QRegularExpression regex(search, QRegularExpression::CaseInsensitiveOption); + if (!regex.isValid()) { + qCWarning(KIO_FILENAMESEARCH) << "Invalid QRegularExpression/PCRE search pattern:" << search; + finished(); + return; + } + + const QUrl dirUrl = QUrl(urlQuery.queryItemValue(QStringLiteral("url"))); + + // Don't try to iterate the /proc directory of Linux + if (dirUrl.isLocalFile() && dirUrl.toLocalFile() == QLatin1String("/proc")) { + finished(); + return; + } + + const bool isContent = urlQuery.queryItemValue(QStringLiteral("checkContent")) == QLatin1String("yes"); + + std::set iteratedDirs; + std::vector pendingDirs; + + searchDir(dirUrl, regex, isContent, iteratedDirs, pendingDirs); + + for (auto it = pendingDirs.begin(); it != pendingDirs.end(); /* */) { + const QUrl pendingUrl = *it; + it = pendingDirs.erase(it); + searchDir(pendingUrl, regex, isContent, iteratedDirs, pendingDirs); + } + + finished(); +} + +void FileNameSearchProtocol::searchDir(const QUrl &dirUrl, + const QRegularExpression ®ex, + bool searchContents, + std::set &iteratedDirs, + std::vector &pendingDirs) +{ + KIO::ListJob *listJob = KIO::listRecursive(dirUrl, KIO::HideProgressInfo, false /* hidden */); + + connect(this, &QObject::destroyed, listJob, [listJob]() { + listJob->kill(); + }); + + connect(listJob, &KIO::ListJob::entries, this, [&](KJob *, const KIO::UDSEntryList &list) { + if (listJob->error()) { + qCWarning(KIO_FILENAMESEARCH) << "Searching failed:" << listJob->errorText(); + return; + } + + for (auto entry : list) { + QUrl entryUrl(dirUrl); + QString path = entryUrl.path(); + if (!path.endsWith(QLatin1Char('/'))) { + path += QLatin1Char('/'); + } + // UDS_NAME is e.g. "foo/bar/somefile.txt" + entryUrl.setPath(path + entry.stringValue(KIO::UDSEntry::UDS_NAME)); + + const QString urlStr = entryUrl.toDisplayString(); + entry.replace(KIO::UDSEntry::UDS_URL, urlStr); + + const QString fileName = entryUrl.fileName(); + entry.replace(KIO::UDSEntry::UDS_NAME, fileName); + + if (entry.isDir()) { + // Also search the target of a dir symlink + if (const QString linkDest = entry.stringValue(KIO::UDSEntry::UDS_LINK_DEST); !linkDest.isEmpty()) { + // Remember the dir to prevent endless loops + if (const auto [it, isInserted] = iteratedDirs.insert(linkDest); isInserted) { + pendingDirs.push_back(entryUrl.resolved(QUrl(linkDest))); + } + } + + iteratedDirs.insert(urlStr); + } + + if (match(entry, regex, searchContents)) { + // UDS_DISPLAY_NAME is e.g. "foo/bar/somefile.txt" + entry.replace(KIO::UDSEntry::UDS_DISPLAY_NAME, fileName); + listEntry(entry); + } + } + }); + + listJob->exec(); +} + +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; +} + +#include "kio_filenamesearch.moc" diff --git a/filenamesearch/kio_filenamesearch.h b/filenamesearch/kio_filenamesearch.h new file mode 100644 index 0000000..11cf003 --- /dev/null +++ b/filenamesearch/kio_filenamesearch.h @@ -0,0 +1,53 @@ +/* + * SPDX-FileCopyrightText: 2010 Peter Penz + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef KIO_FILENAMESEARCH_H +#define KIO_FILENAMESEARCH_H + +#include + +#include + +#include +#include + +/** + * @brief Lists files that match a specific search pattern. + * + * For example, an application could create a url: + * filenamesearch:?search=sometext&url=file:///home/foo/bar&title=Query Results from 'sometext' + * + * - The pattern to search for, @c sometext is the value of the "search" query + * item of the URL + * - The directory where the search is performed, @c file:///home/foo/bar, is the value + * of the "url" query item. + * + * By default the files with names matching the search pattern are listed. + * Alternatively if the query item "checkContent" is set to "yes", the contents + * of files with a text MimeType will be searched for the given pattern and + * the matching files will be listed. + */ +class FileNameSearchProtocol : public QObject, public KIO::SlaveBase +{ + Q_OBJECT + +public: + FileNameSearchProtocol(const QByteArray &pool, const QByteArray &app); + ~FileNameSearchProtocol() override; + + void stat(const QUrl &url) override; + void listDir(const QUrl &url) override; + +private: + void listRootEntry(); + void searchDir(const QUrl &dirUrl, + const QRegularExpression ®ex, + bool searchContents, + std::set &iteratedDirs, + std::vector &pendingDirs); +}; + +#endif diff --git a/filenamesearch/kio_filenamesearch_p.h b/filenamesearch/kio_filenamesearch_p.h new file mode 100644 index 0000000..c31a518 --- /dev/null +++ b/filenamesearch/kio_filenamesearch_p.h @@ -0,0 +1,79 @@ +/* + SPDX-FileCopyrightText: 2014 Alex Richardson + + SPDX-License-Identifier: LGPL-2.0-only +*/ + +#ifndef FILENAMESEARCH_P_H +#define FILENAMESEARCH_P_H + +// Copied from kio/src/core/kiogloba_p.h + +#include + +#ifdef Q_OS_WIN +// windows just sets the mode_t access rights bits to the same value for user+group+other. +// This means using the Linux values here is fine. +#ifndef S_IRUSR +#define S_IRUSR 0400 +#endif +#ifndef S_IRGRP +#define S_IRGRP 0040 +#endif +#ifndef S_IROTH +#define S_IROTH 0004 +#endif + +#ifndef S_IWUSR +#define S_IWUSR 0200 +#endif +#ifndef S_IWGRP +#define S_IWGRP 0020 +#endif +#ifndef S_IWOTH +#define S_IWOTH 0002 +#endif + +#ifndef S_IXUSR +#define S_IXUSR 0100 +#endif +#ifndef S_IXGRP +#define S_IXGRP 0010 +#endif +#ifndef S_IXOTH +#define S_IXOTH 0001 +#endif + +#ifndef S_IRWXU +#define S_IRWXU S_IRUSR | S_IWUSR | S_IXUSR +#endif +#ifndef S_IRWXG +#define S_IRWXG S_IRGRP | S_IWGRP | S_IXGRP +#endif +#ifndef S_IRWXO +#define S_IRWXO S_IROTH | S_IWOTH | S_IXOTH +#endif +Q_STATIC_ASSERT(S_IRUSR == _S_IREAD && S_IWUSR == _S_IWRITE && S_IXUSR == _S_IEXEC); + +// these three will never be set in st_mode +#ifndef S_ISUID +#define S_ISUID 04000 // SUID bit does not exist on windows +#endif +#ifndef S_ISGID +#define S_ISGID 02000 // SGID bit does not exist on windows +#endif +#ifndef S_ISVTX +#define S_ISVTX 01000 // sticky bit does not exist on windows +#endif + +// Windows does not have S_IFBLK and S_IFSOCK, just use the Linux values, they won't conflict +#ifndef S_IFBLK +#define S_IFBLK 0060000 +#endif +#ifndef S_IFSOCK +#define S_IFSOCK 0140000 +#endif + +#endif // Q_OS_WIN + +#endif // FILENAMESEARCH_P_H \ No newline at end of file diff --git a/filter/CMakeLists.txt b/filter/CMakeLists.txt new file mode 100644 index 0000000..8711d33 --- /dev/null +++ b/filter/CMakeLists.txt @@ -0,0 +1,22 @@ +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +add_library(kio_filter MODULE) +set_target_properties(kio_filter PROPERTIES + OUTPUT_NAME "filter" +) + +target_sources(kio_filter PRIVATE filter.cpp) + +ecm_qt_declare_logging_category(kio_filter + HEADER loggingcategory.h + IDENTIFIER KIO_FILTER_DEBUG + CATEGORY_NAME kf.kio.slaves.filter + OLD_CATEGORY_NAMES kio_filter + DEFAULT_SEVERITY Debug + DESCRIPTION "KIO filter" + EXPORT KIO_EXTRAS +) + +target_link_libraries(kio_filter KF5::Archive KF5::KIOCore Qt5::Network) + +install(TARGETS kio_filter DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) diff --git a/filter/filter.cpp b/filter/filter.cpp new file mode 100644 index 0000000..8bf8b0b --- /dev/null +++ b/filter/filter.cpp @@ -0,0 +1,186 @@ +/* +This file is part of KDE + + SPDX-FileCopyrightText: 1999-2000 Waldo Bastian + SPDX-FileCopyrightText: 2008 David Faure + +SPDX-License-Identifier: MIT +*/ + +#include "filter.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#if KARCHIVE_VERSION >= QT_VERSION_CHECK(5, 85, 0) +#include +#else +#include +#endif + +#include "loggingcategory.h" + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.filter" FILE "filter.json") +}; + +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 ) +{ + const QString mimetype = + (protocol == "zstd") ? QStringLiteral("application/zstd") : + QLatin1String("application/x-") + QLatin1String(protocol.constData()); + +#if KARCHIVE_VERSION >= QT_VERSION_CHECK(5, 85, 0) + filter = KCompressionDevice::filterForCompressionType(KCompressionDevice::compressionTypeForMimeType( mimetype )); +#else + filter = KCompressionDevice::filterForCompressionType(KFilterDev::compressionTypeForMimeType( mimetype )); +#endif + 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"|| extension == "zst") { + 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 +} + +#include "filter.moc" diff --git a/filter/filter.h b/filter/filter.h new file mode 100644 index 0000000..1f20fb0 --- /dev/null +++ b/filter/filter.h @@ -0,0 +1,34 @@ +/* +This file is part of KDE + + SPDX-FileCopyrightText: 2000 Waldo Bastian + SPDX-FileCopyrightText: 2008 David Faure + +SPDX-License-Identifier: MIT +*/ + +#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/filter.json b/filter/filter.json new file mode 100644 index 0000000..0899f83 --- /dev/null +++ b/filter/filter.json @@ -0,0 +1,88 @@ +{ + "KDE-KIO-Protocols": { + "bzip": { + "Icon": "package-x-generic", + "X-DocPath": "kioslave5/bzip2/index.html", + "archiveMimetype": [ + "application/x-bzip" + ], + "determineMimetypeFromExtension": false, + "exec": "kf5/kio/filter", + "input": "stream", + "output": "stream", + "protocol": "bzip", + "reading": true, + "source": false + }, + "bzip2": { + "Icon": "package-x-generic", + "X-DocPath": "kioslave5/bzip2/index.html", + "archiveMimetype": [ + "application/x-bzip2" + ], + "determineMimetypeFromExtension": false, + "exec": "kf5/kio/filter", + "input": "stream", + "output": "stream", + "protocol": "bzip2", + "reading": true, + "source": false + }, + "gzip": { + "Icon": "package-x-generic", + "X-DocPath": "kioslave5/gzip/index.html", + "archiveMimetype": [ + "application/gzip" + ], + "determineMimetypeFromExtension": false, + "exec": "kf5/kio/filter", + "input": "stream", + "output": "stream", + "protocol": "gzip", + "reading": true, + "source": false + }, + "lzma": { + "Icon": "package-x-generic", + "X-DocPath": "kioslave5/xz/index.html", + "archiveMimetype": [ + "application/x-lzma" + ], + "determineMimetypeFromExtension": true, + "exec": "kf5/kio/filter", + "input": "stream", + "output": "stream", + "protocol": "lzma", + "reading": true, + "source": false + }, + "xz": { + "Icon": "package-x-generic", + "X-DocPath": "kioslave5/xz/index.html", + "archiveMimetype": [ + "application/x-xz" + ], + "determineMimetypeFromExtension": false, + "exec": "kf5/kio/filter", + "input": "stream", + "output": "stream", + "protocol": "xz", + "reading": true, + "source": false + }, + "zstd": { + "Icon": "package-x-generic", + "X-DocPath": "kioslave5/zstd/index.html", + "archiveMimetype": [ + "application/zstd" + ], + "determineMimetypeFromExtension": true, + "exec": "kf5/kio/filter", + "input": "stream", + "output": "stream", + "protocol": "zstd", + "reading": true, + "source": false + } + } +} diff --git a/fish/CMakeLists.txt b/fish/CMakeLists.txt new file mode 100644 index 0000000..28f4cd9 --- /dev/null +++ b/fish/CMakeLists.txt @@ -0,0 +1,76 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_fish\") + +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +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) + + add_library(kio_fish MODULE) + set_target_properties(kio_fish PROPERTIES + OUTPUT_NAME "fish" + ) + + 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) + + target_sources(kio_fish PRIVATE + fish.cpp + ${fishcode_HDR} + ) + + ecm_qt_declare_logging_category(kio_fish + HEADER loggingcategory.h + IDENTIFIER KIO_FISH_DEBUG + CATEGORY_NAME kf.kio.slaves.fish + OLD_CATEGORY_NAMES kio_fish + DEFAULT_SEVERITY Info + DESCRIPTION "KIO fish" + EXPORT KIO_EXTRAS + ) + + target_link_libraries(kio_fish KF5::KIOCore KF5::WidgetsAddons KF5::I18n Qt5::Network) + + if (UTIL_LIBRARIES) + target_link_libraries(kio_fish ${UTIL_LIBRARIES}) + endif () + + install(TARGETS kio_fish DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio ) + +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..2c972f9 --- /dev/null +++ b/fish/fish.cpp @@ -0,0 +1,1714 @@ +/* + fish.cpp - a FISH kioslave + SPDX-FileCopyrightText: 2001 Jörg Walter + SPDX-License-Identifier: GPL-2.0-only +*/ + +/* + 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()) + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.fish" FILE "fish.json") +}; + +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")).constData()); +#else + sshPath = strdup(QFile::encodeName(QStandardPaths::findExecutable("ssh")).constData()); +#endif + } + if (suPath == nullptr) { + suPath = strdup(QFile::encodeName(QStandardPaths::findExecutable("su")).constData()); + } + 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().constData(),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().constData(),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().constData(), 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().constData(),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); +} + +#include "fish.moc" diff --git a/fish/fish.h b/fish/fish.h new file mode 100644 index 0000000..9fa0b7e --- /dev/null +++ b/fish/fish.h @@ -0,0 +1,209 @@ +/* + fish.h - a FISH kioslave + SPDX-FileCopyrightText: 2001 Jörg Walter + SPDX-License-Identifier: GPL-2.0-only +*/ + +#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.json b/fish/fish.json new file mode 100644 index 0000000..0fc35d2 --- /dev/null +++ b/fish/fish.json @@ -0,0 +1,31 @@ +{ + "KDE-KIO-Protocols": { + "fish": { + "Icon": "folder-remote", + "X-DocPath": "kioslave5/fish/index.html", + "deleting": true, + "exec": "kf5/kio/fish", + "input": "none", + "linking": true, + "listing": [ + "Name", + "Type", + "Size", + "Date", + "Access", + "Owner", + "Group", + "Link", + "" + ], + "makedir": true, + "maxInstances": 20, + "maxInstancesPerHost": 5, + "moving": true, + "output": "filesystem", + "protocol": "fish", + "reading": true, + "writing": true + } + } +} diff --git a/fish/fish.pl b/fish/fish.pl new file mode 100755 index 0000000..2dd5587 --- /dev/null +++ b/fish/fish.pl @@ -0,0 +1,367 @@ +#!/usr/bin/perl +# SPDX-License-Identifier: GPL-2.0-only +=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/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..1d7c740 --- /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..09fd715 --- /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 Q_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..615442f --- /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..b2a2c97 --- /dev/null +++ b/info/CMakeLists.txt @@ -0,0 +1,24 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_info\") + +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +add_library(kio_info MODULE info.cpp) +target_link_libraries(kio_info + KF5::I18n + KF5::KIOCore + Qt5::Network +) +set_target_properties(kio_info PROPERTIES OUTPUT_NAME "info") + +ecm_qt_declare_logging_category(kio_info + HEADER kio_info_debug.h + IDENTIFIER LOG_KIO_INFO + CATEGORY_NAME kf.kio.slaves.info + OLD_CATEGORY_NAMES kio_info + DESCRIPTION "KIO info" + EXPORT KIO_EXTRAS +) + +install(TARGETS kio_info DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) +install( FILES kde-info2html.conf DESTINATION ${KDE_INSTALL_DATADIR}/kio_info ) +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..cbc60f5 --- /dev/null +++ b/info/Messages.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env bash +# SPDX-License-Identifier: MIT + +$XGETTEXT *.cpp -o $podir/kio5_info.pot diff --git a/info/info.cpp b/info/info.cpp new file mode 100644 index 0000000..400d538 --- /dev/null +++ b/info/info.cpp @@ -0,0 +1,268 @@ +// 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 + +using namespace KIO; + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.info" FILE "info.json") +}; + +InfoProtocol::InfoProtocol( const QByteArray &pool, const QByteArray &app ) + : SlaveBase( "info", pool, app ) +{ + qCDebug(LOG_KIO_INFO); + + QStringList missingFiles; + m_cssLocation = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kio_docfilter/kio_docfilter.css"); + if (m_cssLocation.isEmpty()) missingFiles.append("kio_docfilter/kio_docfilter.css"); + m_perl = QStandardPaths::findExecutable( "perl" ); + if (m_perl.isEmpty()) missingFiles.append("perl"); + m_infoScript = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kio_info/kde-info2html" ); + if (m_infoScript.isEmpty()) missingFiles.append("kio_info/kde-info2html"); + m_infoConf = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kio_info/kde-info2html.conf"); + if (m_infoConf.isEmpty()) missingFiles.append("kio_info/kde-info2html.conf"); + + if (!missingFiles.isEmpty()) + { + qCCritical(LOG_KIO_INFO) << "Cannot locate files for HTML conversion," << qPrintable(missingFiles.join(' ')); + QString errorStr = i18n("Unable to locate files which are necessary to run this service:
        %1
        " + "Please check your software installation.", missingFiles.join(' ')); + error(KIO::ERR_SLAVE_DEFINED, errorStr); + exit(); + } + + qCDebug(LOG_KIO_INFO) << "done"; +} + + +void InfoProtocol::get( const QUrl& url ) +{ + 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_MALFORMED_URL, 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).constData(), "r" ); + if ( !file ) { + qCDebug(LOG_KIO_INFO) << "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 + qCWarning(LOG_KIO_INFO) << "read error!"; + pclose( file ); + return; + } + + empty = false; + data( QByteArray::fromRawData( buffer, n ) ); + } + + pclose( file ); + + finished(); + + qCDebug(LOG_KIO_INFO) << "done"; +} + +void InfoProtocol::mimetype( const QUrl& /* url */ ) +{ + qCDebug(LOG_KIO_INFO); + + // to get rid of those "Open with" dialogs... + mimeType( "text/html" ); + + // finish action + finished(); +} + +void InfoProtocol::decodeURL( const QUrl &url ) +{ + qCDebug(LOG_KIO_INFO) << url; + + /* 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() ); +} + +void InfoProtocol::decodePath( QString path ) +{ + qCDebug(LOG_KIO_INFO) << path; + + m_page = "dir"; //default + m_node = ""; + + // remove leading slash + if ('/' == path[0]) { + path = path.mid( 1 ); + } + //qCDebug(LOG_KIO_INFO) << "Path: " << path; + + int slashPos = path.indexOf( "/" ); + + if( slashPos < 0 ) + { + m_page = path; + m_node = "Top"; + return; + } + + m_page = path.left( slashPos ); + + // remove leading+trailing whitespace + m_node = path.right( path.length() - slashPos - 1).trimmed (); + + qCDebug(LOG_KIO_INFO) << "-> page" << m_page << "node" << m_node; +} + +// A minimalistic stat with only the file type +// This seems to be enough for konqueror +void InfoProtocol::stat( const QUrl & ) +{ + UDSEntry uds_entry; + +#ifdef Q_OS_WIN + // Regular file with rwx permission for all + uds_entry.fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG ); +#else + // Regular file with rwx permission for all + uds_entry.fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO ); +#endif + + statEntry( uds_entry ); + finished(); +} + + +extern "C" { + int Q_DECL_EXPORT kdemain( int argc, char **argv ); +} + +int kdemain( int argc, char **argv ) +{ + QCoreApplication app(argc, argv); // needed for QSocketNotifier + app.setApplicationName(QLatin1String("kio_info")); + + qCDebug(LOG_KIO_INFO) << "kio_info starting" << getpid(); + + if (argc != 4) + { + fprintf(stderr, "Usage: kio_info protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + + InfoProtocol slave( argv[2], argv[3] ); + slave.dispatchLoop(); + + return 0; +} + +#include "info.moc" diff --git a/info/info.h b/info/info.h new file mode 100644 index 0000000..77d3f91 --- /dev/null +++ b/info/info.h @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT + +#ifndef __info_h__ +#define __info_h__ + +#include "kio_info_debug.h" + +#include + +class InfoProtocol : public KIO::SlaveBase +{ +public: + + InfoProtocol( const QByteArray &pool, const QByteArray &app ); + ~InfoProtocol() override = default; + + 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.json b/info/info.json new file mode 100644 index 0000000..126ef8f --- /dev/null +++ b/info/info.json @@ -0,0 +1,16 @@ +{ + "KDE-KIO-Protocols": { + "info": { + "Class": ":local", + "Icon": "help-contents", + "X-DocPath": "kioslave5/info/index.html", + "defaultMimetype": "text/html", + "determineMimetypeFromExtension": false, + "exec": "kf5/kio/info", + "input": "none", + "output": "filesystem", + "protocol": "info", + "reading": true + } + } +} diff --git a/info/kde-info2html b/info/kde-info2html new file mode 100755 index 0000000..6e4a80b --- /dev/null +++ b/info/kde-info2html @@ -0,0 +1,1088 @@ +#!/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/); + } + + # Avoid a noisy "Broken pipe" message from bzcat + while () {} + close INFOFILE; + + if ($empty) { $filedesc .= 'no description available'; } + $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 a 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; + } + + // There is no need to accumulate a list of UDSEntry's and deliver + // them all in one block with SlaveBase::listEntries(), because + // SlaveBase::listEntry() batches the entries and delivers them + // timed to maximise application performance. + + UDSEntry uds_entry; + uds_entry.reserve(4); + + uds_entry.fastInsert(KIO::UDSEntry::UDS_NAME, "."); + uds_entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + listEntry(uds_entry); + + if (section.isEmpty()) // list the top level directory + { + for (const QString § : m_sectionNames) + { + uds_entry.clear(); // sectionName() is already I18N'ed + uds_entry.fastInsert( KIO::UDSEntry::UDS_NAME, (sect + " - " + sectionName(sect)) ); + uds_entry.fastInsert( KIO::UDSEntry::UDS_URL, ("man:/(" + sect + ')') ); + uds_entry.fastInsert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR ); + listEntry(uds_entry); + } + } + else // list all pages in a section + { + const QStringList list = findPages(section, QString()); + for (const QString &page : list) + { + // Remove any compression suffix present + QString name = stripCompression(page); + // Remove any preceding pathname components, just leave the base name + int pos = name.lastIndexOf('/'); + if (pos>0) name = name.mid(pos+1); + // Reformat the section suffix into the standard form + pos = name.lastIndexOf('.'); + if (pos>0) name = name.left(pos)+" ("+name.mid(pos+1)+')'; + + uds_entry.clear(); + uds_entry.fastInsert(KIO::UDSEntry::UDS_NAME, name); + uds_entry.fastInsert(KIO::UDSEntry::UDS_URL, ("man:" + page)); + uds_entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG); + uds_entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("text/html")); + listEntry(uds_entry); + } + } + + finished(); +} + + +bool MANProtocol::getProgramPath() +{ + if (!mySgml2RoffPath.isEmpty()) + return true; + + mySgml2RoffPath = QStandardPaths::findExecutable(SGML2ROFF_EXECUTABLE); + if (!mySgml2RoffPath.isEmpty()) + return true; + + /* sgml2roff isn't found in PATH. Check some possible locations where it may be found. */ + mySgml2RoffPath = QStandardPaths::findExecutable(SGML2ROFF_EXECUTABLE, QStringList(QLatin1String(SGML2ROFF_DIRS))); + if (!mySgml2RoffPath.isEmpty()) + return true; + + /* Cannot find sgml2roff program: */ + outputError(xi18nc("@info", "Could not find the %1 program on your system. " + "Please install it if necessary, and ensure that it can be found using " + "the environment variable PATH.", SGML2ROFF_EXECUTABLE)); + return false; +} + +#include "kio_man.moc" diff --git a/man/kio_man.h b/man/kio_man.h new file mode 100644 index 0000000..e097b43 --- /dev/null +++ b/man/kio_man.h @@ -0,0 +1,75 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 Matthias Hoelzer-Kluepfel + + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ +#ifndef __kio_man_h__ +#define __kio_man_h__ + +#include + +#include +#include + +class MANProtocol : public QObject, public KIO::SlaveBase +{ + Q_OBJECT + +public: + explicit 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; + + // the following two functions are the interface to man2html + void output(const char *insert); + char *readManPage(const char *filename); + + static MANProtocol *self(); + + void showIndex(const QString& section); + +private: + void outputError(const QString& errmsg); + void outputMatchingPages(const QStringList &matchingPages); + + void showMainIndex(); + + 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); + QStringList findManPagesInSection(const QString &dir, const QString &title, bool full_path); + + void outputHeader(QTextStream &os, const QString &header, const QString &title = QString()); + + bool getProgramPath(); + +private: + static MANProtocol *s_self; + QByteArray lastdir; + + QStringList m_manpath; ///< Path of man directories + QStringList m_mandbpath; ///< Path of catman directories + QStringList m_sectionNames; + + QString mySgml2RoffPath; + + QBuffer m_outputBuffer; ///< Buffer for the output + QByteArray m_manCSSFile; ///< Path to kio_man.css +}; + + +#endif diff --git a/man/man.json b/man/man.json new file mode 100644 index 0000000..16257ba --- /dev/null +++ b/man/man.json @@ -0,0 +1,20 @@ +{ + "KDE-KIO-Protocols": { + "man": { + "Class": ":local", + "Icon": "help-contents", + "X-DocPath": "kioslave5/man/index.html", + "defaultMimetype": "text/html", + "determineMimetypeFromExtension": false, + "exec": "kf5/kio/man", + "input": "none", + "listing": [ + "Name" + ], + "maxInstances": 10, + "output": "filesystem", + "protocol": "man", + "reading": true + } + } +} diff --git a/man/man2html.cpp b/man/man2html.cpp new file mode 100644 index 0000000..7362889 --- /dev/null +++ b/man/man2html.cpp @@ -0,0 +1,6313 @@ +/* + This file is part of the KDE libraries + + SPDX-FileCopyrightText: 2000 Stephan Kulow + SPDX-FileCopyrightText: 2005 Nicolas GOUTTE + SPDX-FileCopyrightText: 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 
        +# if KARCHIVE_VERSION >= QT_VERSION_CHECK(5, 85, 0)
        +# include 
        +# else
        +# include 
        +# endif
        +# 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;
        +                }
        +                Q_FALLTHROUGH();
        +            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;
        +                Q_FALLTHROUGH();
        +            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; + } + 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();
        +                    int sign = 0;
        +                    i = 0;
        +                    if (*h == '-')
        +                    {
        +                        sign = -1;
        +                        h++;
        +                    }
        +                    else if (*h == '+') {
        +                        sign = 1;
        +                        h++;
        +                    }
        +                    scan_expression(h, &i);
        +                    if (sign == 0)
        +                    {
        +                        sign = 1;
        +                        if (i > 5) i = i - 10;
        +                    }
        +                    out_html(change_to_size(sign * i));
        +                }
        +                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 = true; + Q_FALLTHROUGH(); + 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; + Q_FALLTHROUGH(); + case REQ_SS: // mdoc(7) "Sub Section" + mode = true; + Q_FALLTHROUGH(); + case REQ_Sh: // mdoc(7) "Sub Header" + /* hack for fallthru from above */ + mandoc_command = !mode || mandoc_command; + Q_FALLTHROUGH(); + 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; + Q_FALLTHROUGH(); + 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(" Manual Page"); + 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; + Q_FALLTHROUGH(); + 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; + Q_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++; + Q_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; + Q_FALLTHROUGH(); + 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) +{ +#if KARCHIVE_VERSION >= QT_VERSION_CHECK(5, 85, 0) + KCompressionDevice fd(QFile::decodeName(filename)); +#else + KFilterDev fd(QFile::decodeName(filename)); +#endif + 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..15af38f --- /dev/null +++ b/man/request_hash.cpp @@ -0,0 +1,18 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2011 Martin Koller + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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..28c7d14 --- /dev/null +++ b/man/request_hash.h @@ -0,0 +1,186 @@ +#ifndef RequestHash_H +#define RequestHash_H + +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2011 Martin Koller + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +// 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..6cb0900 --- /dev/null +++ b/man/tests/CMakeLists.txt @@ -0,0 +1,50 @@ +include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/.. ) +include_directories( ${CMAKE_CURRENT_BINARY_DIR}/.. ) + +########### next target ############### + +add_executable(kio_man_test) +ecm_mark_as_test(kio_man_test) +set_target_properties(kio_man_test PROPERTIES + COMPILE_FLAGS "-DSIMPLE_MAN2HTML -DKIO_MAN_TEST" +) + +set(kio_man_test_generated_SRCS) +ecm_gperf_generate(../requests.gperf ${CMAKE_CURRENT_BINARY_DIR}/request_gperf.h kio_man_test_generated_SRCS) + +target_sources(kio_man_test PRIVATE + ${kio_man_test_generated_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 +) + +target_link_libraries(kio_man_test Qt5::Widgets KF5::I18n KF5::KIOCore KF5::Archive KF5::Codecs Qt5::Network kio_man_debug) +if (AVOID_NULLPTR_WARNING_FLAG) + target_compile_options(kio_man_test PRIVATE ${AVOID_NULLPTR_WARNING_FLAG}) +endif() + + + +########### next target ############### + +add_executable(man2html ) +ecm_mark_as_test(man2html) +set_target_properties(man2html PROPERTIES + COMPILE_FLAGS -DSIMPLE_MAN2HTML +) + +set(man2html_generated_SRCS) +ecm_gperf_generate(../requests.gperf ${CMAKE_CURRENT_BINARY_DIR}/request_gperf.h man2html_generated_SRCS) + +target_sources(man2html PRIVATE + ${man2html_generated_SRCS} + ${CMAKE_CURRENT_SOURCE_DIR}/../request_hash.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/../man2html.cpp +) + +target_link_libraries(man2html Qt5::Core KF5::Codecs KF5::Archive kio_man_debug) +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..568fd22 --- /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..1aa70c1 --- /dev/null +++ b/mtp/CMakeLists.txt @@ -0,0 +1,33 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_mtp\") + +add_subdirectory(shared) +add_subdirectory(kiod_module) + +add_library(kio_mtp MODULE) +set_target_properties(kio_mtp PROPERTIES + OUTPUT_NAME "mtp" +) + +target_sources(kio_mtp PRIVATE + kio_mtp.cpp +) + +target_include_directories(kio_mtp PRIVATE shared) +target_link_libraries(kio_mtp kmtp Qt5::Core KF5::KIOCore KF5::I18n KF5::DBusAddons) + +ecm_qt_declare_logging_category(kio_mtp + HEADER kio_mtp_debug.h + IDENTIFIER LOG_KIO_MTP + CATEGORY_NAME kf.kio.slaves.mtp + OLD_CATEGORY_NAMES kde.kio-mtp + DESCRIPTION "KIO mtp" + EXPORT KIO_EXTRAS +) + +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-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..1f8744f --- /dev/null +++ b/mtp/kio_mtp.cpp @@ -0,0 +1,874 @@ +/* + * Main implementation for KIO-MTP + * SPDX-FileCopyrightText: 2012 Philipp Schmidt + * SPDX-FileCopyrightText: 2018 Andreas Krutzler + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "kio_mtp.h" +#include "kio_mtp_debug.h" + +// #include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "kmtpdeviceinterface.h" +#include "kmtpstorageinterface.h" + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.mtp" FILE "mtp.json") +}; + +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 /////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +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('/'), Qt::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('/'), Qt::SkipEmptyParts); + UDSEntry entry; + // root + if (pathItems.size() < 1) { + entry.reserve(4); + entry.fastInsert(UDSEntry::UDS_NAME, QStringLiteral("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('/'), Qt::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('/'), Qt::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('/'), Qt::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('/'), Qt::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('/'), Qt::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('/'), Qt::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('/'), Qt::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('/'), Qt::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('/'), Qt::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(); +} + +#include "kio_mtp.moc" diff --git a/mtp/kio_mtp.h b/mtp/kio_mtp.h new file mode 100644 index 0000000..bdf1e89 --- /dev/null +++ b/mtp/kio_mtp.h @@ -0,0 +1,86 @@ +/* + * Main implementation for KIO-MTP + * SPDX-FileCopyrightText: 2012 Philipp Schmidt + * SPDX-FileCopyrightText: 2018 Andreas Krutzler + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef KIO_MTP_H +#define KIO_MTP_H + +#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; + +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 Q_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..5b73572 --- /dev/null +++ b/mtp/kiod_module/CMakeLists.txt @@ -0,0 +1,31 @@ +set(kiod_kmtpd_SRCS + kmtpd.cpp + mtpdevice.cpp + mtpstorage.cpp +) + +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" SOURCES ${kiod_kmtpd_SRCS}) + +target_link_libraries(kmtpd + kmtp + KF5::CoreAddons + KF5::DBusAddons + KF5::Solid + Qt5::Core + Libmtp::Libmtp +) + +ecm_qt_declare_logging_category(kmtpd + HEADER kiod_kmtpd_debug.h + IDENTIFIER LOG_KIOD_KMTPD + CATEGORY_NAME kf.kiod.kmtpd. + OLD_CATEGORY_NAMES kf5.kiod.kmtpd + DESCRIPTION "KIO mtp (demon)" + EXPORT KIO_EXTRAS +) + +kdbusaddons_generate_dbus_service_file(kiod5 org.kde.kmtpd5 ${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..1eb5d0f --- /dev/null +++ b/mtp/kiod_module/kmtpd.cpp @@ -0,0 +1,160 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "kmtpd.h" + +#include +#include + +#include +#include +#include + +#include "daemonadaptor.h" +#include "kiod_kmtpd_debug.h" +#include "mtpdevice.h" + +K_PLUGIN_CLASS_WITH_JSON(KMTPd, "kmtpd.json") + +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); + Q_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; + Q_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..9a3e91c --- /dev/null +++ b/mtp/kiod_module/kmtpd.h @@ -0,0 +1,50 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef KMTPD_H +#define KMTPD_H + +#include +#include + +#include + +class MTPDevice; + +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 Q_SLOTS: + // D-Bus methods + QList listDevices() const; + +private Q_SLOTS: + void deviceAdded(const QString &udi); + void deviceRemoved(const QString &udi); + +Q_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..7564751 --- /dev/null +++ b/mtp/kiod_module/kmtpd.json @@ -0,0 +1,79 @@ +{ + "KPlugin": { + "Description": "TODO", + "Description[ca@valencia]": "Per fer", + "Description[ca]": "Per fer", + "Description[cs]": "Úlohy", + "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[hu]": "Tennivaló", + "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[ro]": "De făcut", + "Description[ru]": "TODO", + "Description[sk]": "Úlohy", + "Description[sl]": "Za narediti", + "Description[sv]": "ATT GÖRA", + "Description[uk]": "ЩЕ НЕ НАПИСАНО", + "Description[vi]": "TODO", + "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[hu]": "KDE MTP démon", + "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[ro]": "Demon KDE pentru MTP", + "Name[ru]": "Служба KDE MTP", + "Name[sk]": "KDE MTP démon", + "Name[sl]": "KDE demon MTP", + "Name[sv]": "KDE:s MTP-demon", + "Name[ta]": "கே.டீ.யீ. MTP பின்னணி சேவை", + "Name[uk]": "Фонова служба MTP KDE", + "Name[vi]": "Trình nền MTP cá»§a KDE", + "Name[x-test]": "xxKDE MTP daemonxx", + "Name[zh_CN]": "KDE MTP 守护程序", + "Name[zh_TW]": "KDE MTP 守護程式", + "ServiceTypes": [ + "KDEDModule" + ] + }, + "X-KDE-DBus-ServiceName": "org.kde.kmtpd5", + "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..f32cd1a --- /dev/null +++ b/mtp/kiod_module/mtpdevice.cpp @@ -0,0 +1,111 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "mtpdevice.h" + +#include + +#include +#include +#include + +#include "mtpstorage.h" +#include "kiod_kmtpd_debug.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 || strlen(deviceName) == 0) { + 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; + Q_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..283fc04 --- /dev/null +++ b/mtp/kiod_module/mtpdevice.h @@ -0,0 +1,64 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef MTPDEVICE_H +#define MTPDEVICE_H + +#include + +#include + +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 Q_SLOTS: + // D-Bus methods + + int setFriendlyName(const QString &friendlyName); + QList listStorages() const; + +Q_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..27238a4 --- /dev/null +++ b/mtp/kiod_module/mtpstorage.cpp @@ -0,0 +1,625 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "mtpstorage.h" + +#include +#include + +#include "kiod_kmtpd_debug.h" +#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); + Q_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)); + Q_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('/'), Qt::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()); + } + Q_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()); + } + Q_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('/'), Qt::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()); + } + } + Q_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('/'), Qt::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..b98ea45 --- /dev/null +++ b/mtp/kiod_module/mtpstorage.h @@ -0,0 +1,131 @@ +/* + This file is part of the MTP KIOD module, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#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 Q_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); + +Q_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..fff7ddb --- /dev/null +++ b/mtp/mtp-network.desktop @@ -0,0 +1,51 @@ +[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[ro]=Dispozitive 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[ta]=MTP சாதனங்கள் +Name[tr]=MTP Aygıtları +Name[uk]=Пристрої MTP +Name[vi]=Thiết bị 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.json b/mtp/mtp.json new file mode 100644 index 0000000..8eb5c23 --- /dev/null +++ b/mtp/mtp.json @@ -0,0 +1,27 @@ +{ + "KDE-KIO-Protocols": { + "mtp": { + "Icon": "network-workgroup", + "copyFromFile": true, + "copyToFile": true, + "deleting": true, + "exec": "kf5/kio/mtp", + "input": "none", + "linking": false, + "listing": [ + "Name", + "Type", + "Size", + "Access" + ], + "makedir": true, + "maxInstances": 1, + "moving": false, + "opening": true, + "output": "filesystem", + "protocol": "mtp", + "reading": true, + "writing": true + } + } +} diff --git a/mtp/shared/CMakeLists.txt b/mtp/shared/CMakeLists.txt new file mode 100644 index 0000000..658cfb6 --- /dev/null +++ b/mtp/shared/CMakeLists.txt @@ -0,0 +1,22 @@ +add_library(kmtp STATIC) + +set_source_files_properties(org.kde.kmtp.storage.xml PROPERTIES + INCLUDE kmtpfile.h +) + +set(kmtp_dbus_SRCS) +qt5_add_dbus_interfaces(kmtp_dbus_SRCS + org.kde.kmtp.daemon.xml + org.kde.kmtp.device.xml + org.kde.kmtp.storage.xml +) + +target_sources(kmtp PRIVATE + kmtpdinterface.cpp + kmtpdeviceinterface.cpp + kmtpstorageinterface.cpp + kmtpfile.cpp + ${kmtp_dbus_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..feb7764 --- /dev/null +++ b/mtp/shared/kmtpdeviceinterface.cpp @@ -0,0 +1,56 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#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..b137565 --- /dev/null +++ b/mtp/shared/kmtpdeviceinterface.h @@ -0,0 +1,50 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#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 Q_SLOTS: + int setFriendlyName(const QString &friendlyName); + +Q_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..2748fed --- /dev/null +++ b/mtp/shared/kmtpdinterface.cpp @@ -0,0 +1,71 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#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.kmtpd5"), + 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..409aaba --- /dev/null +++ b/mtp/shared/kmtpdinterface.h @@ -0,0 +1,56 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#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 Q_SLOTS: + // D-Bus methods + QList listDevices(); + +Q_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..e3e1977 --- /dev/null +++ b/mtp/shared/kmtpfile.cpp @@ -0,0 +1,133 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#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..b3b03fa --- /dev/null +++ b/mtp/shared/kmtpfile.h @@ -0,0 +1,76 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#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..8308b15 --- /dev/null +++ b/mtp/shared/kmtpstorageinterface.cpp @@ -0,0 +1,84 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#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..db98d5d --- /dev/null +++ b/mtp/shared/kmtpstorageinterface.h @@ -0,0 +1,63 @@ +/* + This file is part of the KMTP framework, part of the KDE project. + + SPDX-FileCopyrightText: 2018 Andreas Krutzler + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#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 Q_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; + +Q_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..d655240 --- /dev/null +++ b/mtp/shared/org.kde.kmtp.daemon.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/mtp/shared/org.kde.kmtp.device.xml b/mtp/shared/org.kde.kmtp.device.xml new file mode 100644 index 0000000..f8ddd3c --- /dev/null +++ b/mtp/shared/org.kde.kmtp.device.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mtp/shared/org.kde.kmtp.storage.xml b/mtp/shared/org.kde.kmtp.storage.xml new file mode 100644 index 0000000..fef1c26 --- /dev/null +++ b/mtp/shared/org.kde.kmtp.storage.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mtp/solid_mtp.desktop b/mtp/solid_mtp.desktop new file mode 100644 index 0000000..831ab0a --- /dev/null +++ b/mtp/solid_mtp.desktop @@ -0,0 +1,45 @@ +[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[ar]=تصفح الملفات بمدير الملفّات +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[hu]=Fájlok böngészése a fájlkezelővel +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[ro]=Răsfoiește fișiere cu gestionarul de fișiere +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[ta]=கோப்பு உலாவியில் கோப்புகளை பார் +Name[uk]=Переглянути файли у програмі для керування файлами +Name[vi]=Duyệt tệp bằng trình quản lí tệp +Name[x-test]=xxBrowse Files with File Managerxx +Name[zh_CN]=用文件管理器浏览文件 +Name[zh_TW]=使用檔案管理員瀏覽檔案 diff --git a/nfs/CMakeLists.txt b/nfs/CMakeLists.txt new file mode 100644 index 0000000..e1e0d75 --- /dev/null +++ b/nfs/CMakeLists.txt @@ -0,0 +1,84 @@ +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +## 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) + +# silence warnings for rpcgen generated code having lots of unused variables +set(AVOID_UNUSED_VARIABLE_WARNING_FLAG) +if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang") + set(_flag "-Wno-unused-variable") + check_c_compiler_flag(${_flag} _flag_present) + if(_flag_present) + set(AVOID_UNUSED_VARIABLE_WARNING_FLAG ${_flag}) + endif() +endif() + +# silence warnings for use of xdr_void as no-op method in calls of clnt_call() +# It's method signature "bool_t xdr_void(void)" does not match the xdrproc_t definition +# which is "bool_t (*)(XDR*, ...)", and the compiler correctly points that out as issue. +# While no-one has come up so far with a nice way to tell the compiler that cast is fine, +# for now just disable the warning completely for the compilation unit. +set(AVOID_CAST_FUNCTION_TYPE_WARNING_FLAG) +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(_flag "-Wno-cast-function-type") + check_cxx_compiler_flag(${_flag} _flag_present) + if(_flag_present) + set(AVOID_CAST_FUNCTION_TYPE_WARNING_FLAG ${_flag}) + endif() +endif() + +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") + +if(AVOID_UNUSED_VARIABLE_WARNING_FLAG) + set_source_files_properties(rpc_nfs2_prot_xdr.c rpc_nfs3_prot_xdr.c PROPERTIES + COMPILE_OPTIONS "${AVOID_UNUSED_VARIABLE_WARNING_FLAG}" + ) +endif() + +if(AVOID_CAST_FUNCTION_TYPE_WARNING_FLAG) + set_source_files_properties(nfsv2.cpp nfsv3.cpp PROPERTIES + COMPILE_OPTIONS "${AVOID_CAST_FUNCTION_TYPE_WARNING_FLAG}" + ) +endif() + +ecm_qt_declare_logging_category(kio_nfs + HEADER kio_nfs_debug.h + IDENTIFIER LOG_KIO_NFS + CATEGORY_NAME kf.kio.slaves.nfs + OLD_CATEGORY_NAMES kde.kio_nfs + DESCRIPTION "KIO nfs" + EXPORT KIO_EXTRAS +) + +install(TARGETS kio_nfs DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + +########### install files ############### 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..acafbbb --- /dev/null +++ b/nfs/README @@ -0,0 +1,78 @@ +README for the NFS ioslave +========================== + +This ioslave provides read and write access to exported filesystems +on NFS servers. Any KDE file manager or application that uses KIO +can access them using an URL of the form + + nfs://servername/path + +The server name is required. + +Non-KDE applications can also open files via NFS, edit them and write +them back, as long as their desktop files are set up correctly. KIO +handles all of this transparently. + +It does not use the normal method of mounting remote filesystems on a +mount point on the client, but communicates directly with the NFS +server using RPC calls. Because of this it does not need root access +or any administrator configuration on the client, but see "Security" +below. + +The ioslave supports NFS protocol versions 2 and 3. Normally NFSv3 is +tried first but, if the server does not support NFSv3, then NFSv2 is +then tried. See "Configuration" below for settings that control the +protocol version. + + +Security +-------- + +Because the ioslave runs as an ordinary (non-root) user, requests to +the NFS server originate from a non-privileged source network port. +Some NFS servers reject requests which do not originate from a +privileged port - the Linux NFS server with the default configuration +does this. To access such servers the filesystem must be exported +with the 'insecure' option, see exports(5). + +Warning: Because it is trivial to impersonate any user, and the need +to export filesystems 'insecure', NFS servers should be configured for +access using this ioslave only within private and secure network +environments. + + +Configuration +------------- + +Normally the ioslave does not require any special configuration. If +advanced control over its operation is required then settings can be +configured in the 'kionfsrc' configuration file, normally located at +'$XDG_CONFIG_HOME/kionfsrc'. There is no GUI, but this file can be +edited with any text editor. + +Settings in the [Default] section apply to all NFS server hosts, +unless overridden by host-specific settings in a [Host SERVERNAME] +section. + +The configuration keys and their values available are: + +maxproto (int) The highest NFS protocol version that will be + attempted. The default is 4 (although NFSv4 is + not actually supported yet). + +minproto (int) The lowest NFS protocol version that will be + attempted. The default is 2. + +usedirplus3 (bool) If set and using NFSv3, then the READDIRPLUS3 + call will be used for directory listings. This + is more efficient, but some NFS servers do not + support it properly so if the option is set to + false then READDIR3 followed by lookup calls + will be used instead. The default is true. + + +Bugs +---- + +Please report any problems using bugs.kde.org, in the "nfs" category of the +"kio-extras" product. diff --git a/nfs/kio_nfs.cpp b/nfs/kio_nfs.cpp new file mode 100644 index 0000000..26b439e --- /dev/null +++ b/nfs/kio_nfs.cpp @@ -0,0 +1,1120 @@ +/* This file is part of the KDE project + + SPDX-FileCopyrightText: 2000 Alexander Neundorf + SPDX-FileCopyrightText: 2014 Mathias Tillman + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include "kio_nfs.h" + +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "kio_nfs_debug.h" +#include "nfsv2.h" +#include "nfsv3.h" + +using namespace KIO; +using namespace std; + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.nfs" FILE "nfs.json") +}; + +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_nfs")); + + if (argc != 4) { + fprintf(stderr, "Usage: kio_nfs protocol domain-socket1 domain-socket2\n"); + exit(-1); + } + + NFSSlave slave(argv[2], argv[3]); + slave.dispatchLoop(); + + return 0; +} + + +// Both the insertion and lookup in the file handle cache (managed by +// NFSProtocol), and the use of QFileInfo to locate a parent directory, +// are sensitive to paths having trailing slashes. In order to keep +// everything consistent, any URLs passed in must be cleaned before using +// them as a fileystem or NFS protocol path. + +static QUrl cleanPath(const QUrl &url) +{ + return (url.adjusted(QUrl::StripTrailingSlash|QUrl::NormalizePathSegments)); +} + + +NFSSlave::NFSSlave(const QByteArray& pool, const QByteArray& app) + : KIO::SlaveBase("nfs", pool, app), + m_protocol(nullptr), + m_usedirplus3(true), + m_errorId(KIO::Error(0)) +{ + qCDebug(LOG_KIO_NFS) << pool << app; +} + +NFSSlave::~NFSSlave() +{ + delete m_protocol; +} + +void NFSSlave::openConnection() +{ + qCDebug(LOG_KIO_NFS); + + if (m_protocol != nullptr) + { + m_protocol->openConnection(); + return; + } + + const KSharedConfig::Ptr cfg = KSharedConfig::openConfig("kionfsrc"); + + const KConfigGroup grp1 = cfg->group("Default"); // default for all hosts + int minproto = grp1.readEntry("minproto", 2); // minimum NFS version to accept + int maxproto = grp1.readEntry("maxproto", 4); // maximum NFS version to try + m_usedirplus3 = grp1.readEntry("usedirplus3", true); // use READDIRPLUS3 for listing + + const KConfigGroup grp2 = cfg->group("Host "+m_host); + if (grp2.exists()) // look for host-specific settings + { // with default values from above + minproto = grp2.readEntry("minproto", minproto); + maxproto = grp2.readEntry("maxproto", maxproto); + m_usedirplus3 = grp2.readEntry("usedirplus3", m_usedirplus3); + } + + minproto = qBound(2, minproto, 4); // enforce limits + maxproto = qBound(minproto, maxproto, 4); + qCDebug(LOG_KIO_NFS) << "configuration for" << m_host; + qCDebug(LOG_KIO_NFS) << "minproto" << minproto << "maxproto" << maxproto << "usedirplus3" << m_usedirplus3; + + bool connectionError = false; + + int version = maxproto; + while (version >= minproto) + { + qCDebug(LOG_KIO_NFS) << "Trying NFS version" << version; + + // Try to create an NFS protocol handler for that version + 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; + } + + if (m_protocol != nullptr) // created protocol for that version + { + m_protocol->setHost(m_host, m_user); // try to make initial connection + if (m_protocol->isCompatible(connectionError)) break; + } + + delete m_protocol; // no point using that protocol + --version; // try the next lower + m_protocol = nullptr; // try again with new protocol + } + + if (m_protocol == nullptr) // failed to find a protocol + { + if (!connectionError) // but connection was possible + { + setError(KIO::ERR_SLAVE_DEFINED, i18n("Cannot find an NFS version that host '%1' supports", m_host)); + } + else // connection failed + { + setError(KIO::ERR_CANNOT_CONNECT, m_host); + } + } + else // usable protocol was created + { + m_protocol->openConnection(); // open the connection + } +} + + +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) << "host" << host << "user" << user; + + if (m_protocol != nullptr) + { + // New host or user? New protocol! + if (host != m_host || user != m_user) + { + qCDebug(LOG_KIO_NFS) << "Deleting old protocol"; + delete m_protocol; + m_protocol = nullptr; + } + else + { + // TODO: Doing this is pointless if nothing has changed + m_protocol->setHost(host, user); + } + } + + m_host = host; + m_user = user; +} + + +void NFSSlave::put(const QUrl& url, int _mode, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol(url)) { + m_protocol->put(cleanPath(url), _mode, _flags); + } + finishOperation(); +} + +void NFSSlave::get(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol(url)) { + m_protocol->get(cleanPath(url)); + } + finishOperation(); +} + +void NFSSlave::listDir(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + if (verifyProtocol(url)) { + m_protocol->listDir(cleanPath(url)); + } + finishOperation(); +} + +void NFSSlave::symlink(const QString& target, const QUrl& dest, KIO::JobFlags _flags) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol(dest)) { + m_protocol->symlink(target, cleanPath(dest), _flags); + } + finishOperation(); +} + +void NFSSlave::stat(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol(url)) { + m_protocol->stat(cleanPath(url)); + } + finishOperation(); +} + +void NFSSlave::mkdir(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol(url)) { + m_protocol->mkdir(cleanPath(url), permissions); + } + finishOperation(); +} + +void NFSSlave::del(const QUrl& url, bool isfile) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol(url)) { + m_protocol->del(cleanPath(url), isfile); + } + finishOperation(); +} + +void NFSSlave::chmod(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol(url)) { + m_protocol->chmod(cleanPath(url), permissions); + } + finishOperation(); +} + +void NFSSlave::rename(const QUrl& src, const QUrl& dest, KIO::JobFlags flags) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol(src) && verifyProtocol(dest)) { + m_protocol->rename(cleanPath(src), cleanPath(dest), flags); + } + finishOperation(); +} + +void NFSSlave::copy(const QUrl& src, const QUrl& dest, int mode, KIO::JobFlags flags) +{ + qCDebug(LOG_KIO_NFS); + + if (verifyProtocol(src) && verifyProtocol(dest)) { + m_protocol->copy(cleanPath(src), cleanPath(dest), mode, flags); + } + finishOperation(); +} + + +// Perform initial URL and host checks before starting any operation. +// This means any KIO::SlaveBase action which is expected to end by +// calling either error() or finished(). +bool NFSSlave::verifyProtocol(const QUrl &url) +{ + m_errorId = KIO::Error(0); // ensure reset before starting + m_errorText.clear(); + + // The NFS protocol definition includes copyToFile=true and copyFromFile=true, + // so the URL scheme here can also be "file". No URL or protocol checking + // is required in this case. + if (url.scheme() != "nfs") return true; + + if (!url.isValid()) // also checks for empty + { + setError(KIO::ERR_MALFORMED_URL, url.toDisplayString()); + return (false); + } + + // A NFS URL must include a host name, if it does not then nothing + // sensible can be done. Doing the check here and returning immediately + // avoids multiple calls of SlaveBase::error() as each protocol is tried + // in NFSSlave::openConnection(). + + const QString host = url.host(); + if (host.isEmpty()) + { + // KIO::ERR_UNKNOWN_HOST with a blank host name results in the + // error message "No hostname specified", but Konqueror does not + // report it properly. Return our own message. + setError(KIO::ERR_SLAVE_DEFINED, i18n("The NFS protocol requires a server host name.")); + return (false); + } + else + { + // There is a host name, so check that it can be resolved. If it + // can't, return an error now and don't bother trying the protocol. + QHostInfo hostInfo = QHostInfo::fromName(host); + if (hostInfo.error() != QHostInfo::NoError) + { + qCDebug(LOG_KIO_NFS) << "host lookup of" << host << "error" << hostInfo.errorString(); + setError(KIO::ERR_UNKNOWN_HOST, host); + return (false); + } + } + + if (m_protocol==nullptr) // no protocol connection yet + { + openConnection(); // create and open connection + if (m_protocol==nullptr) // if that failed, then + { // no more can be done + qCDebug(LOG_KIO_NFS) << "Could not resolve a compatible protocol version!"; + goto fail; + } + } + else if (!m_protocol->isConnected()) // already have a protocol + { + m_protocol->openConnection(); // open its connection + } + + if (m_protocol->isConnected()) return true; // connection succeeded + +fail: // default error if none already + setError(KIO::ERR_INTERNAL, i18n("Failed to initialise protocol")); + return false; +} + + +// These two functions keep track of errors found during any operation, +// and return the error or finish the operation appropriately when +// the operation is complete. +// +// NFSProtocol and classes derived from it, and anything that they call, +// should call setError() instead of SlaveBase::error(). When the +// operation is complete, just return and do not call SlaveBase::finished(). + +// Record the error information, but do not call SlaveBase::error(). +// If there has been an error, finishOperation() will report it when +// the protocol operation is complete. + +void NFSSlave::setError(KIO::Error errid, const QString &text) +{ + if (m_errorId!=0) + { + qCDebug(LOG_KIO_NFS) << errid << "ignored due to previous error"; + return; + } + + qCDebug(LOG_KIO_NFS) << errid << text; + m_errorId = errid; + m_errorText = text; +} + + +// An operation is complete. If there has been an error, then report it. +void NFSSlave::finishOperation() +{ + if (m_errorId==0) { // no error encountered + SlaveBase::finished(); + } else { // there was an error + SlaveBase::error(m_errorId, m_errorText); + } +} + + +NFSFileHandle::NFSFileHandle() + : m_handle(nullptr), + m_size(0), + m_linkHandle(nullptr), + m_linkSize(0), + 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_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); + 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); + 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); + 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); + 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) +{ + // See whether the path is an exported directory: that is, a prefix + // of but not identical to any of the server exports. If it is, then + // it can be virtually listed and some operations are forbidden. + // For example, if the server exports "/export/nfs/dir" then the root, + // "/export" and "/export/nfs" are considered to be exported directories, + // but "/export/nfs/dir" is not because it needs a server mount in order + // to be listed. + // + // This function looks similar to, but is not the same as, isValidPath() + // below. This tests for "is the given path a prefix of any exported + // directory", but isValidPath() tests for "is any exported directory equal + // to or a prefix of the given path". + + // The root is always considered to be exported. + if (path.isEmpty() || path == "/" || QFileInfo(path).isRoot()) + { + qCDebug(LOG_KIO_NFS) << path << "is root"; + return true; + } + + const QString dirPath = path+QDir::separator(); + for (QStringList::const_iterator it = m_exportedDirs.constBegin(); + it != m_exportedDirs.constEnd(); ++it) { + const QString &exportedDir = (*it); + // We know that both 'path' and the contents of m_exportedDirs + // have been cleaned of any trailing slashes. + if (exportedDir.startsWith(dirPath)) + { + qCDebug(LOG_KIO_NFS) << path << "is exported"; + return true; + } + } + + return false; +} + + +void NFSProtocol::removeExportedDir(const QString& path) +{ + m_exportedDirs.removeOne(path); +} + +void NFSProtocol::addFileHandle(const QString& path, NFSFileHandle fh) +{ + if (fh.isInvalid()) qCDebug(LOG_KIO_NFS) << "not adding" << path << "with invalid NFSFileHandle"; + else m_handleCache.insert(path, fh); +} + +NFSFileHandle NFSProtocol::getFileHandle(const QString& path) +{ + if (!isConnected()) { + return NFSFileHandle(); + } + + if (m_exportedDirs.contains(path)) + { + // All exported directories should have already been stored in + // m_handleCache by the protocol's openConnection(). If any + // exported directory could not be mounted, then it will be in + // m_exportedDirs but not in m_handleCache. There is nothing more + // that can be done in this case. + if (!m_handleCache.contains(path)) { + m_slave->setError(KIO::ERR_CANNOT_MOUNT, path); + return NFSFileHandle(); + } + } + + if (!isValidPath(path)) { + qCDebug(LOG_KIO_NFS) << path << "is not a valid path"; + m_slave->setError(KIO::ERR_CANNOT_ENTER_DIRECTORY, path); + return NFSFileHandle(); + } + + // In theory the root ("/") is a valid path but matches here. + // However, it should never be seen unless the NFS server is + // exporting its entire filesystem (which is very unlikely). + if (path.endsWith('/')) { + qCWarning(LOG_KIO_NFS) << "Passed a path ending with '/'. Fix the caller."; + } + + // The handle may already be in the cache, check it now. + // The exported dirs are always in the cache, unless there was a + // problem mounting them which will have been checked above. + 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()) { + addFileHandle(path, childFH); + } + + return childFH; +} + +void NFSProtocol::removeFileHandle(const QString& path) +{ + m_handleCache.remove(path); +} + + +bool NFSProtocol::isValidPath(const QString& path) +{ + // See whether the path is or below an exported directory: + // that is, any of the server exports is identical to or a prefix + // of the path. If it does not start with an exported prefix, + // then it is not a valid NFS file path on the server. + + // This function looks similar to, but is not the same as, + // isExportedDir() above. This tests for "is any exported directory + // equal to or is a prefix of the given path", but isExportedDir() + // tests for "is the given path a prefix of any exported + // directory". + + // The root is always considered to be valid. + if (path.isEmpty() || path == "/" || QFileInfo(path).isRoot()) + { + return true; + } + + for (QStringList::const_iterator it = m_exportedDirs.constBegin(); + it != m_exportedDirs.constEnd(); ++it) + { + const QString &exportedDir = (*it); + // We know that both 'path' and the contents of m_exportedDirs + // have been cleaned of any trailing slashes. + if (path == exportedDir) return true; + if (path.startsWith(exportedDir+QDir::separator())) return true; + } + + return false; +} + + +bool NFSProtocol::isValidLink(const QString &parentDir, const QString &linkDest) +{ + qCDebug(LOG_KIO_NFS) << "checking" << linkDest << "in" << parentDir; + + if (linkDest.isEmpty()) return false; // ensure link is absolute + const QString absDest = QFileInfo(parentDir, linkDest).absoluteFilePath(); + + // The link target may not be valid on the NFS server (i.e. it may + // point outside of the exported directories). Check for this before + // calling getFileHandle() for the target of the link, as otherwise + // the isValidPath() check in getFileHandle() will set the error + // ERR_CANNOT_ENTER_DIRECTORY which will be taken as the result of + // the NFS operation. This is not an error condition if just checking + // the target of a link, so do the same check here but ignore any error. + if (!isValidPath(absDest)) + { + qCDebug(LOG_KIO_NFS) << "target" << absDest << "is invalid"; + return false; + } + + // It is now safe to call getFileHandle() on the link target. + return (!getFileHandle(absDest).isInvalid()); +} + + +KIO::Error NFSProtocol::openConnection(const QString& host, int prog, int vers, CLIENT*& client, int& sock) +{ + // NFSSlave::verifyProtocol() should already have checked that + // the host name is not blank and is resolveable, so the two + // KIO::ERR_UNKNOWN_HOST failures here should never happen. + + 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().constData()); + } else { + struct hostent* hp = gethostbyname(host.toLatin1().constData()); + 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; + } + + uid_t uid = geteuid(); + if (!m_currentUser.isEmpty()) + { + bool ok; + uid_t num = m_currentUser.toUInt(&ok); + if (ok) uid = num; + else + { + const struct passwd *pwd = getpwnam(m_currentUser.toLocal8Bit().constData()); + if (pwd != nullptr) uid = pwd->pw_uid; + } + } + + client->cl_auth = authunix_create(hostName.toUtf8().data(), uid, getegid(), 0, nullptr); + return KIO::Error(0); +} + + +bool NFSProtocol::checkForError(int clientStat, int nfsStat, const QString& text) +{ + if (clientStat!=RPC_SUCCESS) + { + const char *errstr = clnt_sperrno(static_cast(clientStat)); + qCDebug(LOG_KIO_NFS) << "RPC error" << clientStat << errstr << "on" << text; + m_slave->setError(KIO::ERR_INTERNAL_SERVER, + i18n("RPC error %1, %2", QString::number(clientStat), errstr)); + return false; + } + + if (nfsStat != NFS_OK) + { + qCDebug(LOG_KIO_NFS) << "NFS error" << nfsStat << text; + switch (nfsStat) { + case NFSERR_PERM: + m_slave->setError(KIO::ERR_ACCESS_DENIED, text); + break; + case NFSERR_NOENT: + m_slave->setError(KIO::ERR_DOES_NOT_EXIST, text); + break; + //does this mapping make sense ? + case NFSERR_IO: + m_slave->setError(KIO::ERR_INTERNAL_SERVER, text); + break; + //does this mapping make sense ? + case NFSERR_NXIO: + m_slave->setError(KIO::ERR_DOES_NOT_EXIST, text); + break; + case NFSERR_ACCES: + m_slave->setError(KIO::ERR_ACCESS_DENIED, text); + break; + case NFSERR_EXIST: + m_slave->setError(KIO::ERR_FILE_ALREADY_EXIST, text); + break; + //does this mapping make sense ? + case NFSERR_NODEV: + m_slave->setError(KIO::ERR_DOES_NOT_EXIST, text); + break; + case NFSERR_NOTDIR: + m_slave->setError(KIO::ERR_IS_FILE, text); + break; + case NFSERR_ISDIR: + m_slave->setError(KIO::ERR_IS_DIRECTORY, text); + break; + //does this mapping make sense ? + case NFSERR_FBIG: + m_slave->setError(KIO::ERR_INTERNAL_SERVER, text); + break; + //does this mapping make sense ? + case NFSERR_NOSPC: + m_slave->setError(KIO::ERR_DISK_FULL, text); + break; + case NFSERR_ROFS: + m_slave->setError(KIO::ERR_WRITE_ACCESS_DENIED, text); + break; + case NFSERR_NAMETOOLONG: + m_slave->setError(KIO::ERR_INTERNAL_SERVER, i18n("Filename too long")); + break; + case NFSERR_NOTEMPTY: + m_slave->setError(KIO::ERR_CANNOT_RMDIR, text); + break; + //does this mapping make sense ? + case NFSERR_DQUOT: + m_slave->setError(KIO::ERR_INTERNAL_SERVER, i18n("Disk quota exceeded")); + break; + case NFSERR_STALE: + m_slave->setError(KIO::ERR_DOES_NOT_EXIST, text); + break; + default: + m_slave->setError(KIO::ERR_UNKNOWN, i18n("NFS error %1, %2", QString::number(nfsStat), text)); + break; + } + return false; + } + return true; +} + + +// Perform checks and, if so indicated, list a virtual (exported) +// directory that will not actually involve accessing the NFS server. +// Return the directory path, or a null string if there is a problem +// or if the URL refers to a virtual directory which has been listed. + +QString NFSProtocol::listDirInternal(const QUrl &url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + // Is the path part of an exported (virtual) directory? + if (isExportedDir(path)) + { + qCDebug(LOG_KIO_NFS) << "Listing virtual dir" << path; + + QString dirPrefix = path; + if (dirPrefix!="/") dirPrefix += QDir::separator(); + + QStringList virtualList; + const QStringList exportedDirs = getExportedDirs(); + for (QStringList::const_iterator it = exportedDirs.constBegin(); it != exportedDirs.constEnd(); ++it) + { + // When an export is multiple levels deep (for example "/export/nfs/dir" + // where "/export" is being listed), we only want to display one level + // ("nfs") at a time. Find all of the exported directories that are + // below the 'dirPrefix', and list the first (or only) path component + // of each. + + QString name = (*it); // this exported directory + if (!name.startsWith(dirPrefix)) continue; // not below this prefix + + name = name.mid(dirPrefix.length()); // remainder after the prefix + + const int idx = name.indexOf(QDir::separator()); + if (idx!=-1) name = name.left(idx); // take first path component + + if (!virtualList.contains(name)) { + qCDebug(LOG_KIO_NFS) << "Found exported" << name; + virtualList.append(name); + } + } + + KIO::UDSEntry entry; + createVirtualDirEntry(entry); + entry.fastInsert(KIO::UDSEntry::UDS_NAME, "."); + entry.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, "folder-network"); + m_slave->listEntry(entry); + + for (QStringList::const_iterator it = virtualList.constBegin(); it != virtualList.constEnd(); ++it) + { + const QString &name = (*it); // this listed directory + + entry.replace(KIO::UDSEntry::UDS_NAME, name); + if (isExportedDir(dirPrefix+name)) entry.replace(KIO::UDSEntry::UDS_ICON_NAME, "folder-network"); + else entry.replace(KIO::UDSEntry::UDS_ICON_NAME, "folder"); + + m_slave->listEntry(entry); + } + + return (QString()); // listed, no more to do + } + + // For the listing we now actually need to access the NFS server. + // We should always be connected at this point, but better safe than sorry! + if (!isConnected()) return (QString()); + + return (path); // the path to list +} + + +// Perform checks and, if so indicated, return information for +// a virtual (exported) directory. Return the entry path, or a +// null string if there is a problem or if the URL refers to a +// virtual directory which has been processed. + +QString NFSProtocol::statInternal(const QUrl &url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + if (path.isEmpty()) + { + // Displaying a location with an empty path (e.g. "nfs://server") + // seems to confuse Konqueror, it shows the directory but will not + // descend into any subdirectories. The same location with a root + // path ("nfs://server/") works, so redirect to that. + QUrl redir = url.resolved(QUrl("/")); + qDebug() << "root with empty path, redirecting to" << redir; + slave()->redirection(redir); + return (QString()); + } + + // We can't stat an exported directory on the NFS server, + // but we know that it must be a directory. + if (isExportedDir(path)) + { + KIO::UDSEntry entry; + entry.fastInsert(KIO::UDSEntry::UDS_NAME, "."); + entry.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, "folder-network"); + createVirtualDirEntry(entry); + + slave()->statEntry(entry); + return (QString()); + } + + return (path); // the path to stat +} + + +// Set the host to be accessed. If the host has changed a new +// host connection is required, so close the current one. +// +// Due the way that NFSSlave::setHost() is implemented, if the +// host name changes then the protocol will always be deleted +// and recreated. So in reality this function does nothing useful. + +void NFSProtocol::setHost(const QString &host, const QString &user) +{ + qCDebug(LOG_KIO_NFS) << "host" << host << "user" << user; + + if (host.isEmpty()) // must have a host name + { + m_slave->setError(KIO::ERR_UNKNOWN_HOST, host); + return; + } + // nothing to do if no change + if (host == m_currentHost && user == m_currentUser) return; + closeConnection(); // close the existing connection + m_currentHost = host; // set the new host name + m_currentUser = user; // set the new user name +} + + +// This function and completeInvalidUDSEntry() must use KIO::UDSEntry::replace() +// because they may be called with a UDSEntry that has already been partially +// filled in by NFSProtocol::createVirtualDirEntry(). + +void NFSProtocol::completeUDSEntry(KIO::UDSEntry &entry, uid_t uid, gid_t gid) +{ + QString str; + + if (!m_usercache.contains(uid)) + { + const struct passwd *user = getpwuid(uid); + if (user!=nullptr) + { + 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.replace(KIO::UDSEntry::UDS_USER, str); + + if (!m_groupcache.contains(gid)) + { + const struct group *grp = getgrgid(gid); + if (grp!=nullptr) + { + 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.replace(KIO::UDSEntry::UDS_GROUP, str); +} + + +void NFSProtocol::completeInvalidUDSEntry(KIO::UDSEntry &entry) +{ + entry.replace(KIO::UDSEntry::UDS_SIZE, 0); // dummy size + entry.replace(KIO::UDSEntry::UDS_FILE_TYPE, S_IFMT - 1); + entry.replace(KIO::UDSEntry::UDS_ACCESS, S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); + // The UDS_USER and UDS_GROUP must be string values. It would be possible + // to look up appropriate values as in completeUDSEntry() above, but it seems + // pointless to go to that trouble for an unusable invalid entry. + entry.replace(KIO::UDSEntry::UDS_USER, QString::fromLatin1("root")); + entry.replace(KIO::UDSEntry::UDS_GROUP, QString::fromLatin1("root")); +} + + +// This uses KIO::UDSEntry::fastInsert() and so must only be called with +// a blank UDSEntry or one where only UDS_NAME has been filled in. +void NFSProtocol::createVirtualDirEntry(UDSEntry& entry) +{ + entry.fastInsert(KIO::UDSEntry::UDS_SIZE, 0); // dummy size + entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR); + entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory"); + entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); + entry.fastInsert(KIO::UDSEntry::UDS_USER, QString::fromLatin1("root")); + entry.fastInsert(KIO::UDSEntry::UDS_GROUP, QString::fromLatin1("root")); +} + +#include "kio_nfs.moc" diff --git a/nfs/kio_nfs.h b/nfs/kio_nfs.h new file mode 100644 index 0000000..7f85f25 --- /dev/null +++ b/nfs/kio_nfs.h @@ -0,0 +1,214 @@ +/* This file is part of the KDE project + SPDX-FileCopyrightText: 2000 Alexander Neundorf + SPDX-FileCopyrightText: 2014 Mathias Tillman + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#ifndef KIO_NFS_H +#define KIO_NFS_H + +#include +#include +#include + +#include +#include +#include +#include + +#include "rpc_nfs2_prot.h" +#include "rpc_nfs3_prot.h" + +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; + + void setError(KIO::Error errid, const QString &text); + // NFSProtocol should not call these. See setError() and finishOperation(). + void finished() = delete; + void error(int errid, const QString &text) = delete; + + bool usedirplus3() const { return (m_usedirplus3); } + +protected: + // Verifies the URL, current protocol and connection state, returns true if valid. + bool verifyProtocol(const QUrl &url); + void finishOperation(); + +private: + NFSProtocol* m_protocol; + + // We need to cache these because the @openConnection call is responsible + // for creating the protocol, and the @setHost call might happen before that. + QString m_host; + QString m_user; + + bool m_usedirplus3; + + KIO::Error m_errorId; + QString m_errorText; +}; + + +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_size==0 && m_linkSize==0; + } + 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_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, const QString &user = QString()); + + 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); + + KIO::Error 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); + + QString listDirInternal(const QUrl &url); + QString statInternal(const QUrl &url); + void completeUDSEntry(KIO::UDSEntry &entry, uid_t uid, gid_t gid); + void completeInvalidUDSEntry(KIO::UDSEntry &entry); + + QString currentHost() const { return (m_currentHost); } + NFSSlave *slave() const { return (m_slave); } + void setError(KIO::Error errid, const QString &text) { m_slave->setError(errid, text); } + +private: + NFSSlave* m_slave; + QString m_currentHost; + QString m_currentUser; + + NFSFileHandleMap m_handleCache; + QStringList m_exportedDirs; + + QHash m_usercache; + QHash m_groupcache; +}; + +#endif diff --git a/nfs/nfs.json b/nfs/nfs.json new file mode 100644 index 0000000..a036115 --- /dev/null +++ b/nfs/nfs.json @@ -0,0 +1,35 @@ +{ + "KDE-KIO-Protocols": { + "nfs": { + "Class": ":internet", + "Icon": "folder-remote", + "X-DocPath": "kioslave5/nfs/index.html", + "copyFromFile": true, + "copyToFile": true, + "deleting": true, + "exec": "kf5/kio/nfs", + "input": "none", + "linking": true, + "listing": [ + "Name", + "Type", + "Size", + "Date", + "AccessDate", + "CreationDate", + "Access", + "Owner", + "Group", + "Link" + ], + "makedir": true, + "maxInstances": 20, + "maxInstancesPerHost": 5, + "moving": true, + "output": "filesystem", + "protocol": "nfs", + "reading": true, + "writing": true + } + } +} diff --git a/nfs/nfsv2.cpp b/nfs/nfsv2.cpp new file mode 100644 index 0000000..335bab8 --- /dev/null +++ b/nfs/nfsv2.cpp @@ -0,0 +1,1721 @@ +/* This file is part of the KDE project + + SPDX-FileCopyrightText: 2000 Alexander Neundorf + SPDX-FileCopyrightText: 2014 Mathias Tillman + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include "nfsv2.h" +#include "kio_nfs_debug.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 + +// For the complete NFSv2 reference see http://tools.ietf.org/html/rfc1094 + +// This is for NFS version 2. +#define NFSPROG 100003UL +#define NFSVERS 2UL + + +NFSProtocolV2::NFSProtocolV2(NFSSlave* slave) + : NFSProtocol(slave), + m_mountClient(nullptr), + m_mountSock(-1), + m_nfsClient(nullptr), + m_nfsSock(-1) +{ + qCDebug(LOG_KIO_NFS); + + 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(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) << "RPC status" << ret << "connectionError" << connectionError; + 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) +{ + NFSFileHandle fh; + int rpcStatus; + diropres res; + + if (lookupHandle(path, rpcStatus, res)) { + 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) + { // get the absolute link target + QString linkPath = QString::fromLocal8Bit(readLinkRes.readlinkres_u.data); + linkPath = QFileInfo(QFileInfo(path).path(), linkPath).absoluteFilePath(); + + // As with the tests done in NFSProtocol::isValidLink(), the link + // target may not be valid on the NFS server (i.e. it may point + // outside of the exported directories). Check for this before + // calling lookupHandle() on the target of the link, as otherwise + // an error will be set which is not relevant. + if (isValidPath(linkPath)) + { + 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 link target" << linkPath; + return linkFh; + } + } + } + + // If we have reached this point the file is a link, + // but we failed to read the target. + fh.setBadLink(); + qCDebug(LOG_KIO_NFS) << "Invalid link" << path; + } + } + + return fh; +} + +/* 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() +{ + const QString host = currentHost(); + qCDebug(LOG_KIO_NFS) << "to" << host; + + KIO::Error connErr = NFSProtocol::openConnection(host, MOUNTPROG, MOUNTVERS, m_mountClient, m_mountSock); + if (connErr != 0) { + // Close the connection and send the error id to the slave + closeConnection(); + setError(connErr, host); + 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, host.toLatin1())) { + return; + } + + int exportsCount = 0; + bool mountHint = false; + + 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); + + + QString fname = QFileInfo(QDir::root(), exportlist->ex_dir).filePath(); + if (fhStatus.fhs_status == 0) { + // Check if the directory is already noted as exported, + // if so there is no need to add it again. + if (NFSProtocol::isExportedDir(fname)) { + continue; + } + + // Save the exported directory and its NFS file handle. + addFileHandle(fname, static_cast(fhStatus.fhstatus_u.fhs_fhandle)); + addExportedDir(fname); + } else { // mount failed with error + qCDebug(LOG_KIO_NFS) << "Cannot mount" << fname << "- status" << fhStatus.fhs_status; + + // Even if the mount failed, record the directory path as exported + // so that it can be listed as a virtual directory. However, do + // not record its (invalid) file handle in the cache. Trying to + // access the directory in any way other than just listing it, or + // accessing anything below it, will be detected in + // NFSProtocol::getFileHandle() and fail with an appropriate + // error. + if (!isExportedDir(fname)) addExportedDir(fname); + + // Many modern NFS servers by default reject any access attempted to + // them from a non-reserved source port (i.e. above 1024). Since + // this KIO slave runs as a normal user, it is not able to use the + // reserved port numbers and hence the access will be rejected. Show + // a hint if this could possibly be the problem - only once, as the + // server may have many exported directories. + if (fhStatus.fhs_status == NFSERR_ACCES) { + if (!mountHint) { + qCDebug(LOG_KIO_NFS) << "Check that the NFS server is exporting the filesystem"; + qCDebug(LOG_KIO_NFS) << "with appropriate access permissions. Note that it must"; + qCDebug(LOG_KIO_NFS) << "allow mount requests originating from an unprivileged"; + qCDebug(LOG_KIO_NFS) << "source port (see exports(5), the 'insecure' option may"; + qCDebug(LOG_KIO_NFS) << "be required)."; + mountHint = true; + } + } + } + } + + // If nothing can be mounted then there is no point trying to open the + // NFS server connection here. However, call openConnection() anyway + // and pretend that we are connected so that listing virtual directories + // will work. + if ((connErr = NFSProtocol::openConnection(host, NFSPROG, NFSVERS, m_nfsClient, m_nfsSock)) != 0) + { + closeConnection(); + setError(connErr, host); + } + + slave()->connected(); + + qCDebug(LOG_KIO_NFS) << "openConnection succeeded"; +} + +void NFSProtocolV2::listDir(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path = listDirInternal(url); // check path, list virtual dir + if (path.isEmpty()) return; // no more to do + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid() || fh.isBadLink()) { + setError(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("..")) { + filesToList.append(QFile::decodeName(dirEntry->name)); + } + + lastEntry = dirEntry; + } + } while (!listres.readdirres_u.reply.eof); + + 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; + } + + KIO::UDSEntry entry; + entry.fastInsert(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.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + + bool badLink = true; + NFSFileHandle linkFH; + if (isValidLink(path, linkDest)) { + QString 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.fastInsert(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); + } + + slave()->listEntry(entry); + } +} + + +void NFSProtocolV2::stat(const QUrl &url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path = statInternal(url); // check path, process virtual dir + if (path.isEmpty()) return; // no more to do + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid()) + { + qCDebug(LOG_KIO_NFS) << "File handle is invalid"; + setError(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.fastInsert(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.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, i18n("Unknown target")); + completeBadLinkUDSEntry(entry, attrAndStat.attrstat_u.attributes); + + slave()->statEntry(entry); + return; + } + + qCDebug(LOG_KIO_NFS) << "link dest is" << linkDest; + + entry.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + if (!isValidLink(fileInfo.path(), linkDest)) { + completeBadLinkUDSEntry(entry, attrAndStat.attrstat_u.attributes); + } else { + QString 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); + } + + slave()->statEntry(entry); +} + + +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())) { + setError(KIO::ERR_WRITE_ACCESS_DENIED, path); + return; + } + + const NFSFileHandle fh = getFileHandle(fileInfo.path()); + if (fh.isInvalid() || fh.isBadLink()) { + setError(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); + + checkForError(clnt_stat, dirres.status, path); +} + + +void NFSProtocolV2::del(const QUrl& url, bool) +{ + int rpcStatus; + nfsstat nfsStatus; + remove(url.path(), rpcStatus, nfsStatus); + checkForError(rpcStatus, nfsStatus, url.path()); +} + + +void NFSProtocolV2::chmod(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + if (isExportedDir(path)) { + setError(KIO::ERR_ACCESS_DENIED, path); + return; + } + + sattr attributes; + memset(&attributes, 0xFF, sizeof(attributes)); + attributes.mode = permissions; + + int rpcStatus; + nfsstat result; + setAttr(path, attributes, rpcStatus, result); + checkForError(rpcStatus, result, path); +} + + +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()) { + setError(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) { + slave()->totalSize(readRes.readres_u.reply.attributes.size); + + const QMimeDatabase db; + const QMimeType type = db.mimeTypeForFileNameAndData(url.fileName(), readBuffer); + 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); + slave()->data(readBuffer); + readBuffer.clear(); + + slave()->processedSize(readArgs.offset); + } + + } while (offset > 0); + + if (validRead) { + slave()->data(QByteArray()); + slave()->processedSize(readArgs.offset); + } +} + + +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())) { + setError(KIO::ERR_WRITE_ACCESS_DENIED, destPath); + return; + } + + NFSFileHandle destFH = getFileHandle(destPath); + if (destFH.isBadLink()) { + setError(KIO::ERR_DOES_NOT_EXIST, destPath); + return; + } + + //the file exists and we don't want to overwrite + if (!destFH.isInvalid() && (!(flags & KIO::Overwrite))) { + setError(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 + slave()->dataReq(); + + QByteArray buffer; + result = 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); +} + + +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)) { + setError(KIO::ERR_CANNOT_RENAME, srcPath); + return; + } + + const QString destPath(dest.path()); + if (isExportedDir(destPath)) { + setError(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + setError(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + int rpcStatus; + nfsstat nfsStatus; + rename(src.path(), destPath, rpcStatus, nfsStatus); + checkForError(rpcStatus, nfsStatus, destPath); +} + + +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()) { + setError(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath = dest.path(); + if (isExportedDir(QFileInfo(destPath).path())) { + setError(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + // The file exists and we don't want to overwrite + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + setError(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)) { + setError(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString linkPath = QString::fromLocal8Bit(readLinkRes.readlinkres_u.data); + + nfsstat linkRes; + symLink(linkPath, destPath, rpcStatus, linkRes); + checkForError(rpcStatus, linkRes, linkPath); + 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 = 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) { + setError(KIO::ERR_IS_DIRECTORY, partFilePath); + return; + } + + bResume = 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)) { + slave()->totalSize(readRes.readres_u.reply.attributes.size); + + QMimeDatabase db; + QMimeType type = db.mimeTypeForFileNameAndData(src.fileName(), QByteArray::fromRawData(writeArgs.data.data_val, bytesRead)); + 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; + + 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 = 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; + setError(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"; + + slave()->processedSize(readArgs.offset); + } +} + + +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()) { + setError(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) { + setError(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)) { + setError(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + QFile::link(QString::fromLocal8Bit(readLinkRes.readlinkres_u.data), destPath); + return; + } + + bool bResume = false; + const QFileInfo partInfo(destPath + QLatin1String(".part")); + const bool bPartExists = partInfo.exists(); + const bool bMarkPartial = slave()->configValue(QStringLiteral("MarkPartial"), true); + + if (bMarkPartial && bPartExists && partInfo.size() > 0) { + if (partInfo.isDir()) { + setError(KIO::ERR_IS_DIRECTORY, partInfo.absoluteFilePath()); + return; + } + + bResume = 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) { + setError(KIO::ERR_CANNOT_RESUME, destPath); + } else { + setError(KIO::ERR_CANNOT_OPEN_FOR_WRITING, destPath); + } + break; + case QFile::PermissionsError: + setError(KIO::ERR_WRITE_ACCESS_DENIED, destPath); + break; + default: + setError(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) { + 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)); + slave()->mimeType(type.name()); + } + + + if (bytesRead > 0) { + readArgs.offset += bytesRead; + + if (destFile.write(readRes.readres_u.reply.data.data_val, bytesRead) != bytesRead) { + setError(KIO::ERR_CANNOT_WRITE, destPath); + + error = true; + break; + } + + 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 = 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; + setError(KIO::ERR_CANNOT_RENAME_PARTIAL, sPart); + return; + } + } + + // Restore the mtime on the file. + const QString mtimeStr = 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"; + + slave()->processedSize(readArgs.offset); + } +} + + +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)) { + setError(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath(dest.path()); + if (isExportedDir(destPath)) { + setError(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + // The file exists and we don't want to overwrite. + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + setError(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; + symLink(symlinkTarget, destPath, rpcStatus, linkRes); + checkForError(rpcStatus, linkRes, symlinkTarget); + 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 = 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) { + setError(KIO::ERR_IS_DIRECTORY, partFilePath); + return; + } + + bResume = 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)) { + setError(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. + 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) { + setError(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; + + 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 = 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; + setError(KIO::ERR_CANNOT_RENAME_PARTIAL, partFilePath); + return; + } + } + + // Restore the mtime on the file. + const QString mtimeStr = 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"; + + slave()->processedSize(writeArgs.offset); + } +} + +void NFSProtocolV2::symlink(const QString& target, const QUrl& dest, KIO::JobFlags flags) +{ + const QString destPath(dest.path()); + if (isExportedDir(QFileInfo(destPath).path())) { + setError(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + if (!getFileHandle(destPath).isInvalid() && (flags & KIO::Overwrite) == 0) { + setError(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + int rpcStatus; + nfsstat res; + symLink(target, destPath, rpcStatus, res); + checkForError(rpcStatus, res, destPath); +} + + +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.replace(KIO::UDSEntry::UDS_SIZE, attributes.size); + entry.replace(KIO::UDSEntry::UDS_MODIFICATION_TIME, attributes.mtime.seconds); + entry.replace(KIO::UDSEntry::UDS_ACCESS_TIME, attributes.atime.seconds); + entry.replace(KIO::UDSEntry::UDS_ACCESS, (attributes.mode & 07777)); + entry.replace(KIO::UDSEntry::UDS_FILE_TYPE, attributes.mode & S_IFMT); // extract file type + + NFSProtocol::completeUDSEntry(entry, attributes.uid, attributes.gid); +} + + +void NFSProtocolV2::completeBadLinkUDSEntry(KIO::UDSEntry& entry, const fattr& attributes) +{ + entry.replace(KIO::UDSEntry::UDS_MODIFICATION_TIME, attributes.mtime.seconds); + entry.replace(KIO::UDSEntry::UDS_ACCESS_TIME, attributes.atime.seconds); + + NFSProtocol::completeInvalidUDSEntry(entry); +} diff --git a/nfs/nfsv2.h b/nfs/nfsv2.h new file mode 100644 index 0000000..fcaf432 --- /dev/null +++ b/nfs/nfsv2.h @@ -0,0 +1,81 @@ +/* This file is part of the KDE project + SPDX-FileCopyrightText: 2000 Alexander Neundorf , + SPDX-FileCopyrightText: 2014 Mathias Tillman + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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 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); + + CLIENT* m_mountClient; + int m_mountSock; + CLIENT* m_nfsClient; + int m_nfsSock; + + timeval clnt_timeout; +}; + +#endif diff --git a/nfs/nfsv3.cpp b/nfs/nfsv3.cpp new file mode 100644 index 0000000..5d73311 --- /dev/null +++ b/nfs/nfsv3.cpp @@ -0,0 +1,2033 @@ +/* This file is part of the KDE project + + SPDX-FileCopyrightText: 2000 Alexander Neundorf + SPDX-FileCopyrightText: 2014 Mathias Tillman + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include "nfsv3.h" +#include "kio_nfs_debug.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 + +// For the complete NFSv3 reference see http://tools.ietf.org/html/rfc1813 + +// 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_mountClient(nullptr), + m_mountSock(-1), + m_nfsClient(nullptr), + m_nfsSock(-1), + m_readBufferSize(0), + m_writeBufferSize(0), + m_readDirSize(0) +{ + qCDebug(LOG_KIO_NFS); + + clnt_timeout.tv_sec = 20; + clnt_timeout.tv_usec = 0; +} + +NFSProtocolV3::~NFSProtocolV3() +{ + closeConnection(); +} + +bool NFSProtocolV3::isCompatible(bool& connectionError) +{ + int ret = -1; + + CLIENT* client = nullptr; + int sock = 0; + if (NFSProtocol::openConnection(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) << "RPC status" << ret << "connectionError" << connectionError; + 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) +{ + NFSFileHandle fh; + int rpcStatus; + LOOKUP3res res; + if (lookupHandle(path, rpcStatus, res)) { + 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) + { // get the absolute link target + QString linkPath = QString::fromLocal8Bit(readLinkRes.READLINK3res_u.resok.data); + linkPath = QFileInfo(QFileInfo(path).path(), linkPath).absoluteFilePath(); + + // As with the tests done in NFSProtocol::isValidLink(), the link + // target may not be valid on the NFS server (i.e. it may point + // outside of the exported directories). Check for this before + // calling lookupHandle() on the target of the link, as otherwise + // an error will be set which is not relevant. + if (isValidPath(linkPath)) + { + LOOKUP3res linkRes; + if (lookupHandle(linkPath, rpcStatus, linkRes)) + { + // It's a link, so return the target file handle + // with the link source recorded in it. + NFSFileHandle linkFh = linkRes.LOOKUP3res_u.resok.object; + linkFh.setLinkSource(res.LOOKUP3res_u.resok.object); + qCDebug(LOG_KIO_NFS) << "Found link target" << linkPath; + return linkFh; + } + } + } + + // If we have reached this point the file is a link, + // but we failed to read the target. + fh.setBadLink(); + qCDebug(LOG_KIO_NFS) << "Invalid link" << path; + } + } + + return fh; +} + +/* 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() +{ + const QString host = currentHost(); + qCDebug(LOG_KIO_NFS) << "to" << host; + + // Destroy the old connection first + closeConnection(); + + KIO::Error connErr = NFSProtocol::openConnection(host, MOUNT_PROGRAM, MOUNT_V3, m_mountClient, m_mountSock); + if (connErr != 0) { + closeConnection(); + setError(connErr, host); + 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, host.toLatin1())) { + closeConnection(); + return; + } + + int exportsCount = 0; + bool mountHint = false; + + 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); + + QString fname = QFileInfo(QDir::root(), exportlist->ex_dir).filePath(); + if (fhStatus.fhs_status == 0) { // mount succeeded + + // Check if the directory is already noted as exported, + // if so there is no need to add it again. + if (isExportedDir(fname)) continue; + + // Save the exported directory and its NFS file handle. + addFileHandle(fname, static_cast(fhStatus.mountres3_u.mountinfo.fhandle)); + addExportedDir(fname); + } else { // mount failed with error + qCDebug(LOG_KIO_NFS) << "Cannot mount" << fname << "- status" << fhStatus.fhs_status; + + // Even if the mount failed, record the directory path as exported + // so that it can be listed as a virtual directory. However, do + // not record its (invalid) file handle in the cache. Trying to + // access the directory in any way other than just listing it, or + // accessing anything below it, will be detected in + // NFSProtocol::getFileHandle() and fail with an appropriate + // error. + if (!isExportedDir(fname)) addExportedDir(fname); + + // Many modern NFS servers by default reject any access attempted to + // them from a non-reserved source port (i.e. above 1024). Since + // this KIO slave runs as a normal user, it is not able to use the + // reserved port numbers and hence the access will be rejected. Show + // a hint if this could possibly be the problem - only once, as the + // server may have many exported directories. + if (fhStatus.fhs_status == MNT3ERR_ACCES) { + if (!mountHint) { + qCDebug(LOG_KIO_NFS) << "Check that the NFS server is exporting the filesystem"; + qCDebug(LOG_KIO_NFS) << "with appropriate access permissions. Note that it must"; + qCDebug(LOG_KIO_NFS) << "allow mount requests originating from an unprivileged"; + qCDebug(LOG_KIO_NFS) << "source port (see exports(5), the 'insecure' option may"; + qCDebug(LOG_KIO_NFS) << "be required)."; + mountHint = true; + } + } + } + } + + // If nothing can be mounted then there is no point trying to open the + // NFS server connection here. However, call openConnection() anyway + // and pretend that we are connected so that listing virtual directories + // will work. + if ((connErr = NFSProtocol::openConnection(host, NFSPROG, NFSVERS, m_nfsClient, m_nfsSock)) != 0) { + closeConnection(); + setError(connErr, host); + } + + slave()->connected(); + + qCDebug(LOG_KIO_NFS) << "openConnection succeeded"; +} + + +void NFSProtocolV3::listDir(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path = listDirInternal(url); // check path, list virtual dir + if (path.isEmpty()) return; // no more to do + + 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()) { + setError(KIO::ERR_DOES_NOT_EXIST, path); + return; + } + + // Get the preferred read dir size from the server + if (m_readDirSize == 0) { + initPreferredSizes(fh); + } + + if (!slave()->usedirplus3()) // want compatibility mode listing + { + listDirCompat(url); + return; + } + + 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) { + qCDebug(LOG_KIO_NFS) << "NFS server does not support READDIRPLUS3, listing in compatibility mode"; + 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("..")) { + continue; + } + + KIO::UDSEntry entry; + entry.fastInsert(KIO::UDSEntry::UDS_NAME, dirEntry->name); + + if (dirEntry->name == QString(".")) { + createVirtualDirEntry(entry); + completeUDSEntry(entry, dirEntry->name_attributes.post_op_attr_u.attributes); + slave()->listEntry(entry); + continue; + } + + const QString& filePath = QFileInfo(QDir(path), dirEntry->name).filePath(); + + // 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.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + + bool badLink = true; + NFSFileHandle linkFH; + if (isValidLink(path, linkDest)) + { + const QString linkPath = QFileInfo(path, linkDest).absoluteFilePath(); + // get the absolute link target + 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.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, i18n("Unknown target")); + completeBadLinkUDSEntry(entry, dirEntry->name_attributes.post_op_attr_u.attributes); + } + } else { + NFSFileHandle entryFH = dirEntry->name_handle.post_op_fh3_u.handle; + + // Some NFS servers seem to return names from the READDIRPLUS3 + // call without a valid file handle or attributes. This has + // been observed with a WD MyCloud NAS running Debian wheezy. + // The READDIR3 call does not have this problem, but by the time + // it can be detected it is too late to repeat the listing in + // compatibility mode since some listEntry()'s may already have + // been done. + // + // Accept the name, and assume null values for the attributes. + // Do not save the invalid file handle in the cache; if that + // subdirectory is accessed later on it will be listed again + // which seems to work properly. + if (entryFH.isInvalid()) { + qCDebug(LOG_KIO_NFS) << "NFS server returned invalid handle for" << (path+"/"+dirEntry->name); + completeInvalidUDSEntry(entry); + } else { + addFileHandle(filePath, entryFH); + completeUDSEntry(entry, dirEntry->name_attributes.post_op_attr_u.attributes); + } + } + + slave()->listEntry(entry); + + lastEntry = dirEntry; + } + } while (listres.READDIRPLUS3res_u.resok.reply.entries != nullptr && !listres.READDIRPLUS3res_u.resok.reply.eof); +} + + +void NFSProtocolV3::listDirCompat(const QUrl& url) +{ + const QString path(url.path()); + + if (isExportedDir(path)) + { + // We should never get here, if the path is an exported dir + // it will have been checked in listDir() and there will have been + // no attempt to access the NFS server. + qCWarning(LOG_KIO_NFS) << "Called for an exported dir"; + setError(KIO::ERR_INTERNAL, path); + return; + } + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid() || fh.isBadLink()) { + setError(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("..")) { + filesToList.append(QFile::decodeName(dirEntry->name)); + } + + lastEntry = dirEntry; + } + } while (!listres.READDIR3res_u.resok.reply.eof); + + // Loop through all files, getting attributes and link path. + 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; + } + + KIO::UDSEntry entry; + entry.fastInsert(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.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + + bool badLink = true; + NFSFileHandle linkFH; + if (isValidLink(path, linkDest)) + { + const QString linkPath = QFileInfo(path, linkDest).absoluteFilePath(); + // get the absolute link target + 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.fastInsert(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); + } + + slave()->listEntry(entry); + } +} + +void NFSProtocolV3::stat(const QUrl& url) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path = statInternal(url); // check path, process virtual dir + if (path.isEmpty()) return; // no more to do + + const NFSFileHandle fh = getFileHandle(path); + if (fh.isInvalid()) + { + qCDebug(LOG_KIO_NFS) << "File handle is invalid"; + setError(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.fastInsert(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.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + completeBadLinkUDSEntry(entry, attrAndStat.GETATTR3res_u.resok.obj_attributes); + + slave()->statEntry(entry); + return; // have result, no more to do + } + + qCDebug(LOG_KIO_NFS) << "link dest is" << linkDest; + + entry.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, linkDest); + + if (!isValidLink(fileInfo.path(), linkDest)) { + completeBadLinkUDSEntry(entry, attrAndStat.GETATTR3res_u.resok.obj_attributes); + } else { + const QString linkPath = QFileInfo(fileInfo.path(), linkDest).absoluteFilePath(); + // get the absolute link target + 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); + } + + slave()->statEntry(entry); +} + + +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())) { + setError(KIO::ERR_ACCESS_DENIED, path); + return; + } + + const NFSFileHandle fh = getFileHandle(fileInfo.path()); + if (fh.isInvalid() || fh.isBadLink()) { + setError(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); + checkForError(clnt_stat, dirres.status, path); +} + + +void NFSProtocolV3::del(const QUrl& url, bool/* isfile*/) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + if (isExportedDir(QFileInfo(path).path())) { + setError(KIO::ERR_ACCESS_DENIED, path); + return; + } + + int rpcStatus; + REMOVE3res res; + remove(path, rpcStatus, res); + checkForError(rpcStatus, res.status, path); +} + + +void NFSProtocolV3::chmod(const QUrl& url, int permissions) +{ + qCDebug(LOG_KIO_NFS) << url; + + const QString path(url.path()); + if (isExportedDir(path)) { + setError(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; + setAttr(path, attributes, rpcStatus, setAttrRes); + checkForError(rpcStatus, setAttrRes.status, path); +} + + +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()) { + setError(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) { + setError(KIO::ERR_OUT_OF_MEMORY, path); + return; + } + + bool validRead = 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)) { + 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); + slave()->mimeType(type.name()); + + slave()->totalSize(readRes.READ3res_u.resok.file_attributes.post_op_attr_u.attributes.size); + } + + readArgs.offset += read; + if (read > 0) { + validRead = true; + + slave()->data(readBuffer); + 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) { + slave()->data(QByteArray()); + slave()->processedSize(readArgs.offset); + } +} + +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())) { + setError(KIO::ERR_WRITE_ACCESS_DENIED, destPath); + return; + } + + NFSFileHandle destFH = getFileHandle(destPath); + if (destFH.isBadLink()) { + setError(KIO::ERR_DOES_NOT_EXIST, destPath); + return; + } + + // the file exists and we don't want to overwrite + if (!destFH.isInvalid() && ((flags & KIO::Overwrite) == 0)) { + setError(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + // Get the optimal write buffer size + if (m_writeBufferSize == 0) { + initPreferredSizes(destFH); + } + + destFH = create(destPath, _mode); + if (destFH.isInvalid()) { + return; + } + // We created the file successfully. + + 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; + slave()->dataReq(); + result = 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); +} + +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)) { + setError(KIO::ERR_CANNOT_RENAME, srcPath); + return; + } + + const QString destPath(dest.path()); + if (isExportedDir(destPath)) { + setError(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + setError(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + int rpcStatus; + RENAME3res res; + rename(srcPath, destPath, rpcStatus, res); + checkForError(rpcStatus, res.status, destPath); +} + + +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())) { + setError(KIO::ERR_ACCESS_DENIED, srcPath); + return; + } + + const NFSFileHandle srcFH = getFileHandle(srcPath); + if (srcFH.isInvalid()) { + setError(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath(dest.path()); + if (isExportedDir(QFileInfo(destPath).path())) { + setError(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + // The file exists and we don't want to overwrite + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + setError(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)) { + setError(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString linkPath = QString::fromLocal8Bit(readLinkRes.READLINK3res_u.resok.data); + + SYMLINK3res linkRes; + symLink(linkPath, destPath, rpcStatus, linkRes); + checkForError(rpcStatus, linkRes.status, linkPath); + return; // done, no more to do + } + + 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 = 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) { + setError(KIO::ERR_IS_DIRECTORY, partFilePath); + return; + } + + bResume = 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; + } + + destFH = create(createPath, _mode); + if (destFH.isInvalid()) { + return; + } + } 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)); + slave()->mimeType(type.name()); + + 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; + + 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 = 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; + setError(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"; + + slave()->processedSize(readArgs.offset); + } +} + +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()) { + setError(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) { + setError(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)) { + setError(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + QFile::link(QString::fromLocal8Bit(readLinkRes.READLINK3res_u.resok.data), destPath); + return; // done, no more to do + } + + 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 = slave()->configValue(QStringLiteral("MarkPartial"), true); + + if (bMarkPartial && bPartExists && partInfo.size() > 0) { + if (partInfo.isDir()) { + setError(KIO::ERR_IS_DIRECTORY, partInfo.absoluteFilePath()); + return; + } + + bResume = 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) { + setError(KIO::ERR_CANNOT_RESUME, destPath); + } else { + setError(KIO::ERR_CANNOT_OPEN_FOR_WRITING, destPath); + } + break; + case QFile::PermissionsError: + setError(KIO::ERR_WRITE_ACCESS_DENIED, destPath); + break; + default: + setError(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; + + slave()->totalSize(bytesToRead); + + QMimeDatabase db; + QMimeType type = db.mimeTypeForFileNameAndData(src.fileName(), QByteArray::fromRawData(readRes.READ3res_u.resok.data.data_val, bytesRead)); + slave()->mimeType(type.name()); + } + + if (bytesRead > 0) { + readArgs.offset += bytesRead; + + if (destFile.write(readRes.READ3res_u.resok.data.data_val, bytesRead) < 0) { + setError(KIO::ERR_CANNOT_WRITE, destPath); + + error = true; + break; + } + + 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 = 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; + setError(KIO::ERR_CANNOT_RENAME_PARTIAL, sPart); + return; + } + } + + // Restore the mtime on the file. + const QString mtimeStr = 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"; + + slave()->processedSize(readArgs.offset); + } +} + +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)) { + setError(KIO::ERR_DOES_NOT_EXIST, srcPath); + return; + } + + const QString destPath(dest.path()); + if (isExportedDir(QFileInfo(destPath).path())) { + setError(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + // The file exists and we don't want to overwrite. + if (!getFileHandle(destPath).isInvalid() && (_flags & KIO::Overwrite) == 0) { + setError(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; + + symLink(symlinkTarget, destPath, rpcStatus, linkRes); + checkForError(rpcStatus, linkRes.status, symlinkTarget); + return; // done, no more to do + } + + 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 = 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) { + setError(KIO::ERR_IS_DIRECTORY, partFilePath); + return; + } + + bResume = 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)) { + setError(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; + } + + destFH = create(createPath, _mode); + if (destFH.isInvalid()) { + return; + } + } 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. + 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) { + setError(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; + + 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 = 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; + setError(KIO::ERR_CANNOT_RENAME_PARTIAL, partFilePath); + return; + } + } + + // Restore the mtime on the file. + const QString mtimeStr = 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"; + + slave()->processedSize(writeArgs.offset); + } +} + +void NFSProtocolV3::symlink(const QString& target, const QUrl& dest, KIO::JobFlags flags) +{ + const QString destPath(dest.path()); + if (isExportedDir(QFileInfo(destPath).path())) { + setError(KIO::ERR_ACCESS_DENIED, destPath); + return; + } + + if (!getFileHandle(destPath).isInvalid() && (flags & KIO::Overwrite) == 0) { + setError(KIO::ERR_FILE_ALREADY_EXIST, destPath); + return; + } + + + int rpcStatus; + SYMLINK3res res; + symLink(target, destPath, rpcStatus, res); + checkForError(rpcStatus, res.status, destPath); +} + +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; +} + + +NFSFileHandle NFSProtocolV3::create(const QString& path, int mode) +{ + qCDebug(LOG_KIO_NFS) << path; + + if (!isConnected()) { + setError(KIO::ERR_CANNOT_CONNECT, path); + return NFSFileHandle(); + } + + const QFileInfo fileInfo(path); + + const NFSFileHandle directoryFH = getFileHandle(fileInfo.path()); + if (directoryFH.isInvalid()) { + setError(KIO::ERR_DOES_NOT_EXIST, fileInfo.path()); + return NFSFileHandle(); + } + + QByteArray tmpName = QFile::encodeName(fileInfo.fileName()); + + int rpcStatus = 0; + CREATE3res result; + memset(&result, 0, sizeof(result)); + + 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); + + if (rpcStatus != RPC_SUCCESS || result.status != NFS3_OK) + { + checkForError(rpcStatus, result.status, path); + return NFSFileHandle(); + } + + return result.CREATE3res_u.resok.obj.post_op_fh3_u.handle; +} + + +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); +} + + +// This function and completeBadLinkUDSEntry() must use KIO::UDSEntry::replace() +// because they may be called with a UDSEntry that has already been partially +// filled in by NFSProtocol::createVirtualDirEntry(). + +void NFSProtocolV3::completeUDSEntry(KIO::UDSEntry& entry, const fattr3& attributes) +{ + entry.replace(KIO::UDSEntry::UDS_SIZE, attributes.size); + entry.replace(KIO::UDSEntry::UDS_MODIFICATION_TIME, attributes.mtime.seconds); + entry.replace(KIO::UDSEntry::UDS_ACCESS_TIME, attributes.atime.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.replace(KIO::UDSEntry::UDS_ACCESS, (attributes.mode & 07777)); + } else { + entry.replace(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.replace(KIO::UDSEntry::UDS_FILE_TYPE, type); + + NFSProtocol::completeUDSEntry(entry, attributes.uid, attributes.gid); +} + + +void NFSProtocolV3::completeBadLinkUDSEntry(KIO::UDSEntry& entry, const fattr3& attributes) +{ + entry.replace(KIO::UDSEntry::UDS_MODIFICATION_TIME, attributes.mtime.seconds); + entry.replace(KIO::UDSEntry::UDS_ACCESS_TIME, attributes.atime.seconds); + + NFSProtocol::completeInvalidUDSEntry(entry); +} diff --git a/nfs/nfsv3.h b/nfs/nfsv3.h new file mode 100644 index 0000000..388dd8e --- /dev/null +++ b/nfs/nfsv3.h @@ -0,0 +1,93 @@ +/* This file is part of the KDE project + SPDX-FileCopyrightText: 2000 Alexander Neundorf + SPDX-FileCopyrightText: 2014 Mathias Tillman + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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 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: + NFSFileHandle create(const QString& path, int mode); + + 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); + + CLIENT* m_mountClient; + int m_mountSock; + CLIENT* m_nfsClient; + int m_nfsSock; + + timeval clnt_timeout; + + // 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..92505c6 --- /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 + */ +/* + * SPDX-FileCopyrightText: 1987, 1990 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..dc7e3f8 --- /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 + */ +/* + * SPDX-FileCopyrightText: 1987, 1990 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..052096b --- /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..fc99f55 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&شغَل تلقائياَ" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "شغل" + +#: mediacontrols_p.h:44 +#, 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..0c62375 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "الأنشطة" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "يحمّل..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "مدير الأنشطة لا يعمل" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "اربط بالنّشاط الحاليّ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "افصل عن النّشاط الحاليّ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "اربط ب‍:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "افصل عن:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "النّشاط" + +#: KioActivities.cpp:223 +#, 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..1d4011d --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"لم أتمكن من فتح الملف ، من المحتمل أن تكون الهيئة غير مدعومة.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..e641de4 --- /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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-07-14 22:38+0400\n" +"Last-Translator: Zayed Al-Saidi \n" +"Language-Team: ar\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 21.07.70\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "جذر" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "أماكن" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "لم يعثر على ضبط العلامات" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "لم يعثر على محرر العلامات" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "طلب خاطئ: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "لا يوجد علامات لعرضها " + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..516a8fe --- /dev/null +++ b/po/ar/kio5_fish.po @@ -0,0 +1,54 @@ +# 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. +# Zayed Al-Saidi , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-07-14 22:47+0400\n" +"Last-Translator: Zayed Al-Saidi \n" +"Language-Team: ar\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 21.07.70\n" + +#: fish.cpp:289 +#, kde-format +msgid "Connecting..." +msgstr "يتصل..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "يبدأ البروتوكول..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "ولوج محلي" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "استيثاق SSH" + +#: fish.cpp:759 +#, 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..d1a8af1 --- /dev/null +++ b/po/ar/kio5_info.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. +# Zayed Al-Saidi , 2009, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-07-14 22:47+0400\n" +"Last-Translator: Zayed Al-Saidi \n" +"Language-Team: ar\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 21.07.70\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"عاجز عن العثور على الملفات الضرورية لتشغيل هذه الخدمة:
        %1
        الرجاء تأكد " +"من تثبيت البرنامج." diff --git a/po/ar/kio5_man.po b/po/ar/kio5_man.po new file mode 100644 index 0000000..4ddef7a --- /dev/null +++ b/po/ar/kio5_man.po @@ -0,0 +1,225 @@ +# 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, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2022-02-19 22:17+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: Lokalize 21.07.70\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "تعذر قراءة صفحة الدليل %1 ." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "تعذر تحويل صفحة الدليل %1 ." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "خطأ عارض صفحات الدليل" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "هناك أكثر من صفحة مساعدة مطابقة الوصف:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "صفحات دليل متعددة" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "ملفات الترويسة" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "ملفات الترويسة (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "أوامر المستخدم" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "أوامر المستخدم (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "نداءات النظام" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "الوظائف الفرعية" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl وحدات" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "وظائف الشبكة" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "الأجهزة" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "هيئات الملفات" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "الألعاب" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "متنوع" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "إدارة النظام" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "النواة" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "الوثائق المحلية" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "جديد" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "الفهرس الرئيسي للدليل" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "القسم %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "الفهرس للشعبة %1:%2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "فهرس صفحات الدليل" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "جاري توليد الفهرس" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"تعذر العثور على برنامج %1 على نظامك. يرجى تثبيته إذا لزم " +"الأمر ، والتأكد من أنه يمكن العثور عليه باستخدام متغير البيئة 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..25e97d4 --- /dev/null +++ b/po/ar/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. +# +# Safa Alfulaij , 2015. +# Zayed Al-Saidi , 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-07-02 22:41+0400\n" +"Last-Translator: Zayed Al-Saidi \n" +"Language-Team: ar\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 19.12.3\n" + +#: kio_mtp.cpp:217 +#, 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:520 +#, 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..60e9467 --- /dev/null +++ b/po/ar/kio5_nfs.po @@ -0,0 +1,71 @@ +# 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. +# Zayed Al-Saidi , 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-13 21:52+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: Lokalize 21.07.70\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "لا يمكن العثور على إصدار NFS يدعمه '%1'" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "ميفاق NFS يحتاج إلى اسم مضيف الخادم." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "فشل في بدء الميفاق" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "خطأ RPC ‏ %1، %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "اسم الملف طويل جداً" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "تجاوز الحصة المخصصة على القرص" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "خطأ NFS ‏%1، %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "مقصد مجهول" + +#~ msgid "No space left on device" +#~ msgstr "لا توجد مساحة متبقية على الجهاز" + +#~ msgid "Read only file system" +#~ 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..9fa51d4 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..31cf76c --- /dev/null +++ b/po/ar/kio5_sftp.po @@ -0,0 +1,447 @@ +# 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, 2022. +# 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: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2022-02-19 22:09+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: Lokalize 21.07.70\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "عبارة المرور غير صحيحة أو غير صالحة" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "تعذّر تخصيص ردود النداء" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "تعذر ضبط إسهاب السّجِل." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "تعذر تعيين سجل بيانات المستخدم." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "تعذّر سجل رد النداء" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "ولوج SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "استعمل حقل اسم المستخدم للإجابة على هذا السؤال." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "من فضلك أدخل كلمة السر." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "الموقع:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "تعذر قراءة الرابط: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "تعذر إنشاء جلسة SSH جديدة." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "تعذر ضبط زمن المٌهلَة." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "تعذر تعطيل خوارزمية Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "تعذر ضبط ضغط البيانات." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "تعذر ضبط المٌضيف." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "تعذر ضبط المنفذ." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "تعذر ضبط اسم المستخدم." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "تعذر تفسير ملف الإعدادات." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "يفتح اتصال SFTP مع المضيف %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "تعذر الحصول على اسم نوع المفتاح العام للخادم" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "تعذر إنشاء تلبيدة من المفتاح العمومي للخادم" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "تعذر إنشاء بصمة لمفتاح العمومي للخادم" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "إنذار: لا يمكن التحقق من هوية المضيف." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "فشل التوثيق." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "المصادقة فشلت. لم يرسل الخادم أي طرق مصادقة" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "من فضلك أدخل اسم المستخدم و كلمة السر الخاصة بك." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "اسم المستخدم أو كلمة السر غير صحيحة" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "تعذر طلب نظام SFTP المساعد. تأكد أنّ SFTP مٌفعَّل علي المٌضِيف." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "تعذر بدء جلسة SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "تم الاتصال بنجاح ب‍ %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "سياق sftp غير صالح" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"تعذر تغيير صلاحيات\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "هل انت واثق انك تريد إكمال الاتصال؟" + +#~ 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..72fb870 --- /dev/null +++ b/po/ar/kio5_smb.po @@ -0,0 +1,200 @@ +# 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, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2022-02-19 22:22+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: Lokalize 21.07.70\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@domain.com : أسماء تسجيل دخول " +"الشركة الحديثة يتم تشكيلها مثل عناوين البريد الإلكتروني " +" DOMAIN\\username : لشبكات الشركات القديمة أو " +"مجموعات العمل ، قد تحتاج إلى بادئة اسم مجال 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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"نوع ملف مجهول, ليس دليلاً أو ملف." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "لا يوجد وسيط في الجهاز لـ %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "لا أستطيع الاتصال بالمضيف لـ %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "خطأ عند الاتصال بالخادم المسؤول عن %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "تعذر إيجاد المشاركة على الخادم المعطى" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "واصف الملف سيَء" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "حدث خطأ أثناء محاول الوصول إلى %1%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "فشل libsmbclient في إنشاء السياق" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"فشلت عملية فصل نقطة الضم \"%1\".\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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" diff --git a/po/ar/kio5_thumbnail.po b/po/ar/kio5_thumbnail.po new file mode 100644 index 0000000..7185700 --- /dev/null +++ b/po/ar/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "غير قادر على إنشاء مصغّرة للدليل" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "لا يوجد ملحق محدّد." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "غير قادر على تحميل منشئ المصغّرة %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "غير قادر على إنشاء مصغّرة لـِ %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "فشل في إنشاء مصغّرة." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "لم أتمكن من كتابة الصورة." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "فشل في الإرفاق إلى قسم الذاكرة المشتركة %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "الصورة كبيرة جداً لقسم الذاكرة المشتركة" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..4b3413e --- /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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-01-20 22:53+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.12.1\n" + +#: fish.cpp:289 +#, kde-format +msgid "Connecting..." +msgstr "Coneutando…" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Aniciando'l protocolu…" + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Aniciu de sesión llocal" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticación de SSH" + +#: fish.cpp:759 +#, kde-format +msgid "Disconnected." +msgstr "Desconectóse." diff --git a/po/ast/kio5_info.po b/po/ast/kio5_info.po new file mode 100644 index 0000000..8292e51 --- /dev/null +++ b/po/ast/kio5_info.po @@ -0,0 +1,25 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# enolp , 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-04-20 02:40+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 21.03.90\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" diff --git a/po/ast/kio5_mtp.po b/po/ast/kio5_mtp.po new file mode 100644 index 0000000..76b1c74 --- /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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-01-14 19:06+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.12.1\n" + +#: kio_mtp.cpp:217 +#, 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'atopó 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:520 +#, 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..c657b7a --- /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: 2021-05-30 00:17+0000\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:160 +#, kde-format +msgid "Recent Documents" +msgstr "Documentos d'apocayá" diff --git a/po/be/kfileaudiopreview5.po b/po/be/kfileaudiopreview5.po new file mode 100644 index 0000000..1dbd378 --- /dev/null +++ b/po/be/kfileaudiopreview5.po @@ -0,0 +1,37 @@ +# translation of kfileaudiopreview4.po to Belarusian (official spelling) +# translation of kfileaudiopreview4.po to Belarusian (official spelling) +# Ihar Hrachyshka , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-01 00:18+0000\n" +"PO-Revision-Date: 2006-04-25 11:44+0300\n" +"Last-Translator: Ihar Hrachyshka \n" +"Language-Team: Belarusian (official spelling) \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.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" + +#: kfileaudiopreview.cpp:69 +#, kde-format +msgid "Play &automatically" +msgstr "Прайграваць &аўтаматычна" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "" + +#: mediacontrols_p.h:44 +#, kde-format +msgid "pause playback" +msgstr "" + +#~ msgid "Media Player" +#~ msgstr "Медыяпрайгравальнік" diff --git a/po/be/kio5_archive.po b/po/be/kio5_archive.po new file mode 100644 index 0000000..89cf4e6 --- /dev/null +++ b/po/be/kio5_archive.po @@ -0,0 +1,38 @@ +# translation of kio_tar.po to Belarusian +# +# Ihar Hrachyshka , 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-07 00:17+0000\n" +"PO-Revision-Date: 2006-05-17 12:40+0300\n" +"Last-Translator: Ihar Hrachyshka \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.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" + +#: kio_archivebase.cpp:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Немагчыма адкрыць файл, магчыма, з-за непадтрымліваемага фармата файла.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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/be/kio5_fish.po b/po/be/kio5_fish.po new file mode 100644 index 0000000..734e1cb --- /dev/null +++ b/po/be/kio5_fish.po @@ -0,0 +1,44 @@ +# translation of kio_fish.po to Belarusian (Official spelling) +# +# Darafei Praliaskouski , 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2006-08-12 13:58+0300\n" +"Last-Translator: Darafei Praliaskouski \n" +"Language-Team: Belarusian (Official spelling) \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.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" + +#: fish.cpp:289 +#, kde-format +msgid "Connecting..." +msgstr "Злучаюся..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Ініцыялізую пратакол..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Мясцовы карыстальнік" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH аўтарызацыя" + +#: fish.cpp:759 +#, kde-format +msgid "Disconnected." +msgstr "Адключаны." diff --git a/po/be/kio5_man.po b/po/be/kio5_man.po new file mode 100644 index 0000000..cb731d4 --- /dev/null +++ b/po/be/kio5_man.po @@ -0,0 +1,235 @@ +# translation of kio_man.po to Belarusian +# Belarusian (classic spelling) translation of kio_man.pot +# Copyright (C) 2002 KDE Team. +# +# Eugene Zelenko , 2002. +# Ihar Hrachyshka , 2006. +# Darafei Praliaskouski , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2007-08-22 09:25+0000\n" +"Last-Translator: Darafei Praliaskouski \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=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:458 +#, 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.
        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 ." +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 не знойдзена.

        Праверце, ці правільна вы напісалі " +"назву старонкі man
        Праверце, ці не памыліліся вы ў рэгістры назвы!" +"
        Калі ўсё вызначана правільна, вы павінны змяніць шлях пошуку старонак " +"man, ці праз пераменную MANPATH, ці праз адпаведны файл у тэчцы /etc ." + +#: kio_man.cpp:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        Памылка праглядальніка man для KDE

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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, тэкст можа змяшчаць " +"памылкі ці быць надта старым. Калі вы не ўпэўнены, паглядзіце ў ангельскую " +"версію старонкі man." + +#: kio_man.cpp:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Каманды карыстальніка" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Каманды карыстальніка" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Сістэмныя выклікі" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Падпраграмы" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Модулі Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Сеткавыя функцыі" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Прылады" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Фарматы файлаў" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Гульні" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Рознае" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Сістэмнае адміністраванне" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Ядро" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Мясцовая дакументацыя" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Новы" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Індэкс дапаможнікаў UNIX" + +#: kio_man.cpp:814 +#, fuzzy, kde-format +#| msgid "Section " +msgid "Section %1" +msgstr "Раздзел " + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Індэкс для раздзела %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Індэкс дапаможнікаў UNIX" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Стварэнне індэксу" + +#: kio_man.cpp:1389 +#, 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 %1 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 "ihar.hrachyshka@gmail.com" + +#~ msgid "KMan" +#~ msgstr "Праглядальнік KMan" diff --git a/po/be/kio5_nfs.po b/po/be/kio5_nfs.po new file mode 100644 index 0000000..97f77a8 --- /dev/null +++ b/po/be/kio5_nfs.po @@ -0,0 +1,67 @@ +# translation of kio_nfs.po to Belarusian (Official spelling) +# +# Darafei Praliaskouski , 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2006-08-12 14:03+0300\n" +"Last-Translator: Darafei Praliaskouski \n" +"Language-Team: Belarusian (Official spelling) \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.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" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Назва файла надта доўгая" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Дыскавая квота скончылася" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Няма дыскавай прасторы" + +#~ msgid "Read only file system" +#~ msgstr "Файлавая сістэма толькі для чытання" + +#~ msgid "An RPC error occurred." +#~ msgstr "Памылка RPC." diff --git a/po/be/kio5_sftp.po b/po/be/kio5_sftp.po new file mode 100644 index 0000000..e983aab --- /dev/null +++ b/po/be/kio5_sftp.po @@ -0,0 +1,265 @@ +# translation of kio_sftp.po to Belarusian +# +# Darafei Praliaskouski , 2006. +# Darafei Praliaskouski , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2007-08-26 22:24+0300\n" +"Last-Translator: Darafei Praliaskouski \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=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:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Няправільнае імя ці пароль" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set log userdata." +msgstr "немагчыма прачытаць пакет SFTP" + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set log callback." +msgstr "немагчыма прачытаць пакет SFTP" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Уваход SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" + +#: kio_sftp.cpp:380 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "Калі ласка, увядзіце вашыя імя карыстальніка і пароль." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "пляцоўка:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "немагчыма прачытаць пакет SFTP" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set a timeout." +msgstr "немагчыма прачытаць пакет SFTP" + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not disable Nagle's Algorithm." +msgstr "немагчыма прачытаць пакет SFTP" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:615 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set port." +msgstr "немагчыма прачытаць пакет SFTP" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:647 +#, 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:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "" + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Аўтэнтыфікацыя правалена." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Калі ласка, увядзіце вашыя імя карыстальніка і пароль." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Няправільнае імя ці пароль" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" + +#, fuzzy +#~| msgid "No hostname specified" +#~ msgid "No hostname specified." +#~ msgstr "Назва вузла не заданая" + +#~ msgid "An internal error occurred. Please retry the request again." +#~ msgstr "Унутраная памылка. Калі ласка, паўтарыце запыт." + +#~ msgid "Connection failed." +#~ msgstr "Злучэнне немагчымае." + +#~ msgid "Connection closed by remote host." +#~ msgstr "Злучэнне закрыта аддаленым вузлом." + +#~ msgid "SFTP version %1" +#~ msgstr "SFTP версіі %1" + +#~ msgid "Protocol error." +#~ msgstr "Памылка пратаколу." + +#~ msgid "An internal error occurred. Please try again." +#~ msgstr "Здарылася унутраная памылка. Калі ласка, паспрабуйце зноў." + +#~ msgid "Connection closed" +#~ msgstr "Злучэнне разарвана" + +#~ msgid "Error code: %1" +#~ msgstr "Код памылкі: %1" + +#~ msgid "Please supply a password." +#~ msgstr "Калі ласка задайце пароль." + +#~ msgid "Host key was rejected." +#~ msgstr "Ключ вузла быў адхілены." + +#~ msgid "Please enter a username and password" +#~ msgstr "Увядзіце імя карыстальніка і пароль" diff --git a/po/be/kio5_smb.po b/po/be/kio5_smb.po new file mode 100644 index 0000000..bd5cb0f --- /dev/null +++ b/po/be/kio5_smb.po @@ -0,0 +1,195 @@ +# translation of kio_smb.po to Belarusian +# +# Darafei Praliaskouski , 2006. +# Pavel Piatruk , 2007. +# Darafei Praliaskouski , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2007-10-28 14:26+0200\n" +"Last-Translator: Darafei Praliaskouski \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=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 "Увядзіце спраўджвальныя звесткі для %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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Невядомы тып дырэкторыі або файла." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Няма носьбіта ў прыладзе для %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Немагчыма злучыцца з вузлом для %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Памылка падчас злучэння з серверам, прычына %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Рэсурс не знойдзены на дадзеным серверы" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Кепскі файлавы дэскрыптар" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient не стварыў кантэкст" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Размацаванне пункту мацавання \"%1\" не атрымалася.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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/be/kio5_thumbnail.po b/po/be/kio5_thumbnail.po new file mode 100644 index 0000000..c5aecc2 --- /dev/null +++ b/po/be/kio5_thumbnail.po @@ -0,0 +1,81 @@ +# translation of kio_thumbnail.po to Belarusian +# +# Ihar Hrachyshka , 2006. +# Darafei Praliaskouski , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2007-07-27 15:10+0300\n" +"Last-Translator: Darafei Praliaskouski \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: 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:232 +#, fuzzy, kde-format +#| msgid "Cannot create thumbnail for %1" +msgid "Cannot create thumbnail for directory" +msgstr "Немагчыма стварыць мініяцюру для %1" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Утулка нявызначаная." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Немагчыма загрузіць ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Немагчыма стварыць мініяцюру для %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Немагчыма стварыць мініяцюру." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Немагчыма запісаць малюнак." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Немагчыма далучыцца да сегмента агульнай памяці %1" + +#: thumbnail.cpp:324 +#, 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 "komzpa@licei2.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/bg/kfileaudiopreview5.po b/po/bg/kfileaudiopreview5.po new file mode 100644 index 0000000..768f39c --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Автоматично изпълнение" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "изпълнение" + +#: mediacontrols_p.h:44 +#, 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..8838c19 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "Управление на дейностите в KDE" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:223 +#, 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..c5de88a --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Грешка при отваряне на файла, вероятно заради неподдържан формат.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..662ff4a --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Места" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Неправилно запитване: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Още няма отметки." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..c8a5cc6 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Свързване..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Инициализиране на протокола..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Локално включване" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Автентикация в SSH" + +#: fish.cpp:759 +#, 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..21d60c1 --- /dev/null +++ b/po/bg/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..46b4fd7 --- /dev/null +++ b/po/bg/kio5_man.po @@ -0,0 +1,233 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Файлове с хедъри" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Файлове с хедъри (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Потребителски команди" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Потребителски команди (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Системни сигнали" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Подпрограми" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Модули на Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Мрежови функции" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Устройства" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Файлови формати" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Игри" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Разни" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Системна администрация" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Ядро" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Локална документация" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Нови ръководства" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Индекс за ръководството за UNIX" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Раздел %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Индекс за раздел %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Индекс за ръководството за UNIX" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Създаване на индекс" + +#: kio_man.cpp:1389 +#, 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 %1 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..e08daca --- /dev/null +++ b/po/bg/kio5_nfs.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. +# +# Yasen Pramatarov , 2017. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, fuzzy, kde-format +#| msgid "RPC error %1" +msgid "RPC error %1, %2" +msgstr "RPC грешка %1" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Името на файла е твърде дълго" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Дисковата квота е превишена" + +#: kio_nfs.cpp:917 +#, fuzzy, kde-format +#| msgid "NFS error %1 - %2" +msgid "NFS error %1, %2" +msgstr "NFS грешка %1 - %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Непозната дестинация" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Неподдържана версия на NFS" + +#~ msgid "No space left on device" +#~ msgstr "Няма свободно място на устройството" + +#~ msgid "Read only file system" +#~ msgstr "Файлова система само за четене" + +#~ msgid "Failed to mount %1" +#~ msgstr "Грешка при монтиране на %1" diff --git a/po/bg/kio5_recentdocuments.po b/po/bg/kio5_recentdocuments.po new file mode 100644 index 0000000..bf8c313 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..fbfcdd2 --- /dev/null +++ b/po/bg/kio5_sftp.po @@ -0,0 +1,408 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Неправилна парола" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Грешка при задаване ниво на подробност на журнала" + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Грешка при задаване ниво на подробност на журнала" + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log callback." +msgstr "Грешка при задаване ниво на подробност на журнала" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Вход в SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Въведете отговоря в полето за потребителско име." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "Въведете парола." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "страна:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Грешка при четене на връзката: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Грешка при създаване на нова сесия на SSH" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Грешка при задаване на изчакване" + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Грешка при задаване на порт." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Грешка при задаване ниво на компресия." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Грешка при задаване на хост." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Грешка при задаване на порт." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Грешка при задаване на потребител." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Грешка при обработка на файла с настройки" + +#: kio_sftp.cpp:647 +#, 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:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Грешка при задаване на потребител." + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Предупреждение: Идентичността на хоста не може да бъде проверена." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Идентификацията е неуспешна." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Идентификацията е неуспешна. Сървърът не изпрати начини за идентификация" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Въведете потребителско име и парола." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Неправилно потребителско име или парола" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Грешка при заявката към SFTP. Проверете дали SFTP е наличен на сървъра." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Грешка при инициализиране на сесия на SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Установена е връзка с %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Неуспешна смяна на правата за достъп за\n" +"%1" + +#~ 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" +#~ "Настина ли искате да се продължи свързването?" + +#~ 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..4972c47 --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Непознат тип файл. Не е нито директория, нито файл." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Няма носител в устройството за %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Грешка при връзка с хост за %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Грешка при връзка със сървър, отговорен за %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Споделеният ресурс не бе намерен на указания сървър" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Невалиден файлов дескриптор" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Грешка при инициализиране на libsmbclient" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Грешка при демонтиране на ресурса \"%1\".\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..1fedf81 --- /dev/null +++ b/po/bg/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Грешка при създаване умалено копие за директорията" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Няма зададена приставка." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Грешка при зареждането генератора на умалени копия за %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Грешка при генерирането умалено копие на %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Грешка при генерирането на умалено копие." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Грешка при записа на изображението." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Грешка при свързването към споделената памет %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Изображението е твърде голямо за споделената памет" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..c8c1ffd --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Sviraj &automatski" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "započni reprodukciju" + +#: mediacontrols_p.h:44 +#, 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..d118f37 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activities" +msgstr "Aktivnosti..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, 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:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Poveći na trenutnu aktivnost" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Odspoji od trenutne aktivnosti" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Poveži na:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Odspoji od:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activity" +msgstr "Aktivnosti..." + +#: KioActivities.cpp:223 +#, 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..f316cb1 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..01d3b8a --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Korijen" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Mjesta" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Pogrešan zahtjev: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Još uvijek nema obilježivača za prikaz." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..b400ede --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Povezivanje..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Pokrećem protokol..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokalna prijava" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH autorizacija" + +#: fish.cpp:759 +#, 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..eb0db82 --- /dev/null +++ b/po/bs/kio5_info.po @@ -0,0 +1,35 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..bf7cefe --- /dev/null +++ b/po/bs/kio5_man.po @@ -0,0 +1,239 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, 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:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Datoteke zaglavlja" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Datoteke zaglavlja (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Korisničke naredbe" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Korisničke naredbe (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Sistemski pozivi" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Podrutine" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl moduli" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Mrežne funkcije" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Uređaji" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formati datoteka" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Igre" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Razno" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administracija sistema" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Jezgro" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokalna dokumentacija" + +# >> @title Section of man pages, as the several above +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Indeks Unix uputa" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Odjeljak %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indeks za odjeljak %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Indeks Unix uputa" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Stvaram indeks" + +#: kio_man.cpp:1389 +#, 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 %1 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..3aea71d --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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..282cfd4 --- /dev/null +++ b/po/bs/kio5_nfs.po @@ -0,0 +1,70 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Naziv datoteke je preveliki" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Kvota na disku je premašena" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Nema više slobodnog prostora na uređaju" + +#~ msgid "Read only file system" +#~ msgstr "Datotečni sistem samo za čitanje" + +#~ 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..ccca8f8 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..fe10916 --- /dev/null +++ b/po/bs/kio5_sftp.po @@ -0,0 +1,305 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Neispravna ili nevažeća lozinka" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Ne mogu da rezervišem kontrapozive." + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Ne mogu da postavim opširnost beleženja." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Ne mogu postaviti dnevničke korisničke podatke." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Ne mogu postaviti dnevnički povratni poziv." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP prijavljivanje" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Molim Vas unesite svoju lozinku." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Sajt:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Ne mogu da čitam vezu: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Ne mogu da napravim novu SSH sesiju." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Ne mogu da postavim prekovreme." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Ne mogu da postavim port." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Ne mogu da postavim kompresiju." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Ne mogu da postavim domaćin." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Ne mogu da postavim port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Ne mogu da postavim korisničko ime." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Ne mogu da raščlanim postavni fajl." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "" + +#: kio_sftp.cpp:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Ne mogu kreirati hash iz javnog ključa servera" + +#: kio_sftp.cpp:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Upozorenje: Ne mogu da provjerim indentitet domaćina." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Autentifikacija nije uspjela." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Unesite svoje korisničko ime i lozinku." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Pogrešno korisničko ime ili lozinka" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Ne mogu da pripremim SFTP sesiju." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Uspješno uspostavljena veza sa %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ne mogu da promijenim dozvole za\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" diff --git a/po/bs/kio5_smb.po b/po/bs/kio5_smb.po new file mode 100644 index 0000000..d750c73 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Nema medija u uređaju %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Ne mogu se spojiti na računar za %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Dijeljeni resursi nisu pronađeni na datom serveru" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "LOŠ deskriptor datoteke" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Demontiranje tačke \"%1\" nije uspjelo.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..b6bf487 --- /dev/null +++ b/po/bs/kio5_thumbnail.po @@ -0,0 +1,77 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ne mogu da napravim sličicu za direktorij" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Dodatak nije naveden." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ne mogu pokrenuti ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ne mogu da napravim umanjeni prikaz za %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Neuspjeh stvaranja sličice." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Ne mogu zapisati sliku." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Ne mogu se pridružiti dijeljenom segmentu memorije %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Slika je prevelika za dijeljeni segment memorije" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rotiraj sliku automatski" diff --git a/po/ca/docs/kioslave5/bookmarks/index.docbook b/po/ca/docs/kioslave5/bookmarks/index.docbook new file mode 100644 index 0000000..b99ee49 --- /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. Senzillament 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..ce760ec --- /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, trobareu 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..c602987 --- /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, trobareu la documentació sobre l'ús dels kioslaves a https://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..6aa74b0 --- /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: + +Vegeu les seccions del manual, feu clic per a trobar la resta. + + + +man:/fopen + +Vegeu la pàgina del manual de fopen. + + + +man:/fopen(3) + +Vegeu la pàgina del manual de fopen a la secció 3. + + + +man:/(3) + +Vegeu l'índex de la secció 3. + + + +man:/intro(3) + +Vegeu 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 on podreu triar la pàgina de manual que voleu veure. + +També hi ha una drecera: #fopen, el qual 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/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..b28655e --- /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 manera següent: + +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 a 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..e003ada --- /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 a 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 tenir la libsmbclient instal·lada. + +Podeu establir el nom d'usuari i contrasenya predeterminats a l'&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 predeterminats, 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..078e606 --- /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 a 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..9729523 --- /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..6f9fd68 --- /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, trobareu la documentació sobre l'ús dels kioslaves a https://techbase.kde.org. + +Vegeu el manual: xz. + +
        diff --git a/po/ca/docs/kioslave5/zstd/index.docbook b/po/ca/docs/kioslave5/zstd/index.docbook new file mode 100644 index 0000000..c428d5d --- /dev/null +++ b/po/ca/docs/kioslave5/zstd/index.docbook @@ -0,0 +1,51 @@ + + + +]> + +
        +zstd + + +FriedrichW. H.Kossebau +&traductor.Antoni.Bella; + + + +zstd és un programa de compressió. + +El kioslave «zstd» 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 «zstd», per a poder mostrar els continguts d'un fitxer tar.zst directament en una finestra del &konqueror;. + +Si feu clic sobre un fitxer comprimit amb una extensió zst 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 zstd, trobareu la documentació sobre l'ús dels kioslaves a https://techbase.kde.org. + +Vegeu el manual: zstd. + +
        diff --git a/po/ca/kfileaudiopreview5.po b/po/ca/kfileaudiopreview5.po new file mode 100644 index 0000000..224b60b --- /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 M. Ferrer , 2007, 2009, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-01 00:18+0000\n" +"PO-Revision-Date: 2020-10-13 20:49+0200\n" +"Last-Translator: Josep M. 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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Reprodueix &automàticament" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "inicia la reproducció" + +#: mediacontrols_p.h:44 +#, 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..7ef394f --- /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 M. 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: 2021-09-24 00:16+0000\n" +"PO-Revision-Date: 2019-11-09 11:33+0100\n" +"Last-Translator: Josep M. 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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Activitats" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "S'està carregant..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "El gestor d'activitats no s'està executant" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Enllaça amb l'activitat actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Separa de l'activitat actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Enllaça amb:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Separa de:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Activitat" + +#: KioActivities.cpp:223 +#, 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..5d86ba7 --- /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 M. Ferrer , 2013, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-07 00:17+0000\n" +"PO-Revision-Date: 2016-06-05 15:09+0200\n" +"Last-Translator: Josep M. 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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..b8e517c --- /dev/null +++ b/po/ca/kio5_bookmarks.po @@ -0,0 +1,65 @@ +# 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 M. Ferrer , 2008, 2009, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2020-10-31 10:19+0100\n" +"Last-Translator: Josep M. 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:83 +#, kde-format +msgid "Root" +msgstr "Arrel" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Llocs" + +#: kio_bookmarks.cpp:189 +#, 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:198 +#, 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:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Sol·licitud incorrecta: %1" + +#: kio_bookmarks_html.cpp:85 +#, 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:124 +#, 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:133 +#, kde-format +msgid "My Bookmarks" +msgstr "Les meves adreces d'interès" diff --git a/po/ca/kio5_fish.po b/po/ca/kio5_fish.po new file mode 100644 index 0000000..3f6ade3 --- /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 M. Ferrer , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2012-10-14 19:09+0200\n" +"Last-Translator: Josep M. 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:289 +#, kde-format +msgid "Connecting..." +msgstr "S'està connectant..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "S'està inicialitzant el protocol..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Connexió local" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticació SSH" + +#: fish.cpp:759 +#, 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..89f3827 --- /dev/null +++ b/po/ca/kio5_info.po @@ -0,0 +1,31 @@ +# Translation of kio5_info.po to Catalan +# Copyright (C) 2009-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep M. Ferrer , 2009. +# Antoni Bella Pérez , 2016, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-20 21:55+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 20.12.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"No s'han pogut trobar els fitxers necessaris per a executar aquest servei:" +"
        %1
        Comproveu la vostra instal·lació del programari." diff --git a/po/ca/kio5_man.po b/po/ca/kio5_man.po new file mode 100644 index 0000000..a49a37d --- /dev/null +++ b/po/ca/kio5_man.po @@ -0,0 +1,209 @@ +# Translation of kio5_man.po to Catalan +# Copyright (C) 2000-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Sebastià Pla i Sanz , 2000, 2001, 2004, 2006. +# Antoni Bella Pérez , 2002, 2003, 2016, 2020, 2021. +# Albert Astals Cid , 2005. +# Josep M. 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: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-03 16:15+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 21.07.90\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "La pàgina «man» %1 no s'ha pogut llegir." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "La pàgina «man» %1 no s'ha pogut convertir." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Error del visor de les pàgines de manual" + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiples pàgines de manual" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Fitxers de capçalera" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Fitxers de capçalera (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Ordres d'usuari" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Ordres d'usuari (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Crides del sistema" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subrutines" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Mòduls de Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funcions de xarxa" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Dispositius" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formats de fitxer" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Jocs" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Miscel·lània" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administració del sistema" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Nucli" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentació local" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nou" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índex principal de pàgines de manual" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Secció %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índex per a la secció %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Índex de pàgines de manual" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "S'està generant l'índex" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 en el sistema. " +"Instal·leu-lo si fos necessari, assegureu-vos que es pot trobar usant la " +"variable d'entorn PATH." diff --git a/po/ca/kio5_mtp.po b/po/ca/kio5_mtp.po new file mode 100644 index 0000000..20048c0 --- /dev/null +++ b/po/ca/kio5_mtp.po @@ -0,0 +1,36 @@ +# 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 M. 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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2019-02-16 13:36+0100\n" +"Last-Translator: Josep M. 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:217 +#, 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:520 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "No es poden copiar/moure fitxers sobre el mateix dispositiu" diff --git a/po/ca/kio5_nfs.po b/po/ca/kio5_nfs.po new file mode 100644 index 0000000..de9cc6c --- /dev/null +++ b/po/ca/kio5_nfs.po @@ -0,0 +1,62 @@ +# Translation of kio5_nfs.po to Catalan +# Copyright (C) 2002-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2014, 2016, 2020, 2021. +# Josep M. Ferrer , 2014, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-14 17:19+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 20.12.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "No s'ha pogut trobar una versió de NFS que admeti la màquina «%1»" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "El protocol NFS requereix un nom de màquina del servidor." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Ha fallat en inicialitzar el protocol" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Error de l'RPC: %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Nom de fitxer massa llarg" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Quota de disc excedida" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Error NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Objectiu desconegut" diff --git a/po/ca/kio5_recentdocuments.po b/po/ca/kio5_recentdocuments.po new file mode 100644 index 0000000..7d1b9ce --- /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 M. Ferrer , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2012-04-28 23:47+0200\n" +"Last-Translator: Josep M. 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:160 +#, 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..1d7e3f9 --- /dev/null +++ b/po/ca/kio5_sftp.po @@ -0,0 +1,246 @@ +# Translation of kio5_sftp.po to Catalan +# Copyright (C) 2002-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2003, 2014, 2016, 2020, 2021. +# Sebastià Pla i Sanz , 2004. +# Albert Astals Cid , 2005. +# Josep M. Ferrer , 2008, 2009, 2010, 2012, 2013, 2014, 2015, 2018, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-31 20:57+0100\n" +"Last-Translator: Josep M. 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.12.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frase de pas incorrecta o no vàlida" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "No s'han pogut assignar les crides de retorn" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "No s'ha pogut establir el nivell de detall del registre." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "No s'ha pogut establir la dada d'usuari del registre." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "No s'ha pogut establir la crida de retorn del registre." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Accés SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Si us plau, introduïu la vostra contrasenya." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Lloc:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "No s'ha pogut llegir l'enllaç: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "No s'ha pogut crear cap sessió SSH nova." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "No s'ha pogut establir cap temps d'espera." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "No s'ha pogut desactivar l'algorisme de Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "No s'ha pogut establir cap compressió." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "No s'ha pogut establir el servidor." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "No s'ha pogut establir cap port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "No s'ha pogut establir cap nom d'usuari." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "No s'ha pogut analitzar el fitxer de configuració." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Avís: No es pot verificar la identitat del servidor." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Ha fallat en l'autenticació." + +#: kio_sftp.cpp:832 +#, 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:881 +#, 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:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "No s'ha pogut inicialitzar la sessió SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "S'ha connectat correctament amb %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Context SFTP no vàlid" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"No s'han pogut canviar els permisos per a\n" +"%1" diff --git a/po/ca/kio5_smb.po b/po/ca/kio5_smb.po new file mode 100644 index 0000000..37c1dcf --- /dev/null +++ b/po/ca/kio5_smb.po @@ -0,0 +1,201 @@ +# Translation of kio5_smb.po to Catalan +# Copyright (C) 2002-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2003, 2014, 2016, 2017, 2020. +# Sebastià Pla i Sanz , 2004, 2006. +# Albert Astals Cid , 2005. +# Josep M. Ferrer , 2006, 2007, 2008, 2009, 2010, 2015, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-10-31 20:58+0100\n" +"Last-Translator: Josep M. 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.12.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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "No hi ha cap suport al dispositiu per a %1" + +#: kio_smb_browse.cpp:292 +#, 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:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descriptor de fitxer dolent" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, 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:118 +#, 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à instal·lat adequadament 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ha fallat el desmuntatge del punt de muntatge «%1».\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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/kio5_thumbnail.po b/po/ca/kio5_thumbnail.po new file mode 100644 index 0000000..f907b1d --- /dev/null +++ b/po/ca/kio5_thumbnail.po @@ -0,0 +1,73 @@ +# 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 M. 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "No s'ha pogut crear la miniatura per al directori" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "No s'ha especificat cap connector." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "No s'ha pogut carregar ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "No s'ha pogut crear la miniatura per a %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "No s'ha pogut crear una vista en miniatura." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "No s'ha pogut escriure la imatge." + +#: thumbnail.cpp:316 +#, 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:324 +#, 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..d769e26 --- /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 M. Ferrer , 2007, 2009, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-01 00:18+0000\n" +"PO-Revision-Date: 2020-10-13 20:49+0200\n" +"Last-Translator: Josep M. 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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Reprodueix &automàticament" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "inicia la reproducció" + +#: mediacontrols_p.h:44 +#, 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..42b1d3d --- /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 M. 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: 2021-09-24 00:16+0000\n" +"PO-Revision-Date: 2019-11-09 11:33+0100\n" +"Last-Translator: Josep M. 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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Activitats" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "S'està carregant..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "El gestor d'activitats no s'està executant" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Enllaça amb l'activitat actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Separa de l'activitat actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Enllaça amb:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Separa de:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Activitat" + +#: KioActivities.cpp:223 +#, 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..ed0d330 --- /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 M. Ferrer , 2013, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-07 00:17+0000\n" +"PO-Revision-Date: 2016-06-05 15:09+0200\n" +"Last-Translator: Josep M. 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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..42d1613 --- /dev/null +++ b/po/ca@valencia/kio5_bookmarks.po @@ -0,0 +1,65 @@ +# 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 M. Ferrer , 2008, 2009, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2020-10-31 10:19+0100\n" +"Last-Translator: Josep M. 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:83 +#, kde-format +msgid "Root" +msgstr "Arrel" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Llocs" + +#: kio_bookmarks.cpp:189 +#, 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:198 +#, 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:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Sol·licitud incorrecta: %1" + +#: kio_bookmarks_html.cpp:85 +#, 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:124 +#, 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:133 +#, kde-format +msgid "My Bookmarks" +msgstr "Les meues adreces d'interés" diff --git a/po/ca@valencia/kio5_fish.po b/po/ca@valencia/kio5_fish.po new file mode 100644 index 0000000..0c414f2 --- /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 M. Ferrer , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2012-10-14 19:09+0200\n" +"Last-Translator: Josep M. 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:289 +#, kde-format +msgid "Connecting..." +msgstr "S'està connectant..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "S'està inicialitzant el protocol..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Connexió local" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticació SSH" + +#: fish.cpp:759 +#, 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..fdeafae --- /dev/null +++ b/po/ca@valencia/kio5_info.po @@ -0,0 +1,31 @@ +# Translation of kio5_info.po to Catalan (Valencian) +# Copyright (C) 2009-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Josep M. Ferrer , 2009. +# Antoni Bella Pérez , 2016, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-20 21:55+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 20.12.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"No s'han pogut trobar els fitxers necessaris per a executar aquest servei:" +"
        %1
        Comproveu la vostra 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..33d456f --- /dev/null +++ b/po/ca@valencia/kio5_man.po @@ -0,0 +1,209 @@ +# Translation of kio5_man.po to Catalan (Valencian) +# Copyright (C) 2000-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Sebastià Pla i Sanz , 2000, 2001, 2004, 2006. +# Antoni Bella Pérez , 2002, 2003, 2016, 2020, 2021. +# Albert Astals Cid , 2005. +# Josep M. 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: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-03 16:15+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 21.07.90\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "La pàgina «man» %1 no s'ha pogut llegir." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "La pàgina «man» %1 no s'ha pogut convertir." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Error del visor de les pàgines de manual" + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiples pàgines de manual" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Fitxers de capçalera" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Fitxers de capçalera (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Ordres d'usuari" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Ordres d'usuari (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Crides del sistema" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subrutines" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Mòduls de Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funcions de xarxa" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Dispositius" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formats de fitxer" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Jocs" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Miscel·lània" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administració del sistema" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Nucli" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentació local" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nou" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índex principal de pàgines de manual" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Secció %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índex per a la secció %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Índex de pàgines de manual" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "S'està generant l'índex" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 en el sistema. " +"Instal·leu-lo si fos necessari, assegureu-vos que es pot trobar usant la " +"variable d'entorn PATH." diff --git a/po/ca@valencia/kio5_mtp.po b/po/ca@valencia/kio5_mtp.po new file mode 100644 index 0000000..57d6706 --- /dev/null +++ b/po/ca@valencia/kio5_mtp.po @@ -0,0 +1,36 @@ +# 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 M. 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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2019-02-16 13:36+0100\n" +"Last-Translator: Josep M. 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:217 +#, 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:520 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "No es poden copiar/moure fitxers sobre el mateix dispositiu" diff --git a/po/ca@valencia/kio5_nfs.po b/po/ca@valencia/kio5_nfs.po new file mode 100644 index 0000000..23a4237 --- /dev/null +++ b/po/ca@valencia/kio5_nfs.po @@ -0,0 +1,62 @@ +# Translation of kio5_nfs.po to Catalan (Valencian) +# Copyright (C) 2002-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2014, 2016, 2020, 2021. +# Josep M. Ferrer , 2014, 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-14 17:19+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 20.12.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "No s'ha pogut trobar una versió de NFS que admeti la màquina «%1»" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "El protocol NFS requereix un nom de màquina del servidor." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Ha fallat en inicialitzar el protocol" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Error de l'RPC: %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Nom de fitxer massa llarg" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Quota de disc excedida" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Error NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Objectiu desconegut" diff --git a/po/ca@valencia/kio5_recentdocuments.po b/po/ca@valencia/kio5_recentdocuments.po new file mode 100644 index 0000000..90bd9c3 --- /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 M. Ferrer , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2012-04-28 23:47+0200\n" +"Last-Translator: Josep M. 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:160 +#, 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..dd663de --- /dev/null +++ b/po/ca@valencia/kio5_sftp.po @@ -0,0 +1,246 @@ +# Translation of kio5_sftp.po to Catalan (Valencian) +# Copyright (C) 2002-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2003, 2014, 2016, 2020, 2021. +# Sebastià Pla i Sanz , 2004. +# Albert Astals Cid , 2005. +# Josep M. Ferrer , 2008, 2009, 2010, 2012, 2013, 2014, 2015, 2018, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-31 20:57+0100\n" +"Last-Translator: Josep M. 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.12.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frase de pas incorrecta o no vàlida" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "No s'han pogut assignar les crides de retorn" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "No s'ha pogut establir el nivell de detall del registre." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "No s'ha pogut establir la dada d'usuari del registre." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "No s'ha pogut establir la crida de retorn del registre." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Accés SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Per favor, introduïu la vostra contrasenya." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Lloc:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "No s'ha pogut llegir l'enllaç: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "No s'ha pogut crear cap sessió SSH nova." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "No s'ha pogut establir cap temps d'espera." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "No s'ha pogut desactivar l'algorisme de Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "No s'ha pogut establir cap compressió." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "No s'ha pogut establir el servidor." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "No s'ha pogut establir cap port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "No s'ha pogut establir cap nom d'usuari." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "No s'ha pogut analitzar el fitxer de configuració." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Avís: No es pot verificar la identitat del servidor." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Ha fallat en l'autenticació." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Per favor, introduïu el vostre nom d'usuari i contrasenya." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "No s'ha pogut inicialitzar la sessió SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "S'ha connectat correctament amb %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Context SFTP no vàlid" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"No s'han pogut canviar els permisos per a\n" +"%1" diff --git a/po/ca@valencia/kio5_smb.po b/po/ca@valencia/kio5_smb.po new file mode 100644 index 0000000..12c05e8 --- /dev/null +++ b/po/ca@valencia/kio5_smb.po @@ -0,0 +1,201 @@ +# Translation of kio5_smb.po to Catalan (Valencian) +# Copyright (C) 2002-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Antoni Bella Pérez , 2002, 2003, 2014, 2016, 2017, 2020. +# Sebastià Pla i Sanz , 2004, 2006. +# Albert Astals Cid , 2005. +# Josep M. Ferrer , 2006, 2007, 2008, 2009, 2010, 2015, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-10-31 20:58+0100\n" +"Last-Translator: Josep M. 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.12.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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "No hi ha cap suport al dispositiu per a %1" + +#: kio_smb_browse.cpp:292 +#, 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:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descriptor de fitxer dolent" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, 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:118 +#, 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à instal·lat adequadament 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ha fallat el desmuntatge del punt de muntatge «%1».\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..2141ea1 --- /dev/null +++ b/po/ca@valencia/kio5_thumbnail.po @@ -0,0 +1,73 @@ +# 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 M. 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "No s'ha pogut crear la miniatura per al directori" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "No s'ha especificat cap connector." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "No s'ha pogut carregar ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "No s'ha pogut crear la miniatura per a %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "No s'ha pogut crear una vista en miniatura." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "No s'ha pogut escriure la imatge." + +#: thumbnail.cpp:316 +#, 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:324 +#, 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..c66d786 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Přehrát &automaticky" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "začít přehrávání" + +#: mediacontrols_p.h:44 +#, 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..19b7031 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktivity" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Probíhá načítání..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Správce aktivit neběží." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Připojit k současné aktivitě" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Odpojit od aktuální aktivity" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Odkaz na:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Odpojit od:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktivita" + +#: KioActivities.cpp:223 +#, 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..e7dcb66 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..94b18eb --- /dev/null +++ b/po/cs/kio5_bookmarks.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. +# Vit Pelcak , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-03-24 16:00+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 20.12.3\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Místa" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Nelze najít nastavení záložek" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Nelze najít editor záložek" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Neplatný požadavek: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Neexistují ještě žádné záložky k zobrazení." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..e9b3dfc --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Připojuji se..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Zahajuji protokol..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Místní přihlášení" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH ověření" + +#: fish.cpp:759 +#, 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..8ec9879 --- /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. +# Vit Pelcak , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-03-24 16:01+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 20.12.3\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Nepovedlo se najít soubory potřebné pro běh této služby:
        %1
        Prosím, " +"zkontrolujte svoji instalaci." diff --git a/po/cs/kio5_man.po b/po/cs/kio5_man.po new file mode 100644 index 0000000..ea54b7b --- /dev/null +++ b/po/cs/kio5_man.po @@ -0,0 +1,196 @@ +# 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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-07 15:23+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 21.08.1\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "Manuálovou stránku %1 nelze přečíst." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "Manuálovou stránku %1 nelze převézt." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Chyba prohlížeče manuálových stránek" + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Vícero manuálových stránek" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Hlavičkové soubory" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Hlavičkové soubory (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Uživatelské příkazy" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Uživatelské příkazy (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Systémová volání" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Funkce" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Moduly Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Síťové funkce" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Zařízení" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Datové formáty" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Hry" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Různé" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administrace systému" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Jádro" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Místní dokumentace" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nové" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Hlavní index manuálových stránek" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sekce %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index sekce %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Index manuálových stránek" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Vytvářím rejstřík" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1. 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..d488179 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/cs/kio5_nfs.po new file mode 100644 index 0000000..8c99991 --- /dev/null +++ b/po/cs/kio5_nfs.po @@ -0,0 +1,59 @@ +# 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. +# Vit Pelcak , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-03-24 16:00+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 20.12.3\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Nelze najít verzi NFS, kterou hostitel '%1' podporuje" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Protokol NFS vyžaduje název hostitele." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Selhala inicializace protokolu" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Chyba RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Název souboru je příliš dlouhý" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disková kvóta překročena" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Chyba NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, 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..2c36f47 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..385e15e --- /dev/null +++ b/po/cs/kio5_sftp.po @@ -0,0 +1,222 @@ +# 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. +# Vit Pelcak , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-11-01 18:42+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 21.08.2\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Nesprávné nebo neplatné heslo" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nelze rezervovat zpětná volání." + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nelze nastavit podrobnost." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Nelze nastavit uživatelská data záznamu." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Nelze nastavit zpětné volání záznamu." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Přihlášení SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Prosím, zadejte své heslo." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Server:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Nelze přečíst odkaz: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nelze vytvořit nové SSH sezení." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nelze nastavit časový limit." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagleův algoritmus nelze vypnout." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Nelze nastavit kompresi." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Nelze nastavit hostitele." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Nelze nastavit port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Nelze nastavit uživatelské jméno." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nelze zpracovat konfigurační soubor." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Otevírá se SFTP spojení s hostitelem %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:700 +#, 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:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Varování: nelze ověřit identitu hostitele." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Ověření selhalo." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Prosím, zadejte své uživatelské jméno a heslo." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Neplatné uživatelské jméno nebo heslo" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nelze inicializovat sezení SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Úspěšně spojeno s '%1'" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Neplatný kontext sftp" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Není možné změnit přístupová práva\n" +"k %1" diff --git a/po/cs/kio5_smb.po b/po/cs/kio5_smb.po new file mode 100644 index 0000000..9cb7b19 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "V zařízení %1 není médium" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nelze se připojit k hostiteli %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Špatný popisovač souboru" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Nelze vytvořit kontext" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Odpojení bodu \"%1\" selhalo.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..ea9bb91 --- /dev/null +++ b/po/cs/kio5_thumbnail.po @@ -0,0 +1,68 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nelze vytvořit náhled adresáře" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nebyl zadán žádný modul." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nelze zavést ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nelze vytvořit náhled %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Chyba při vytváření náhledu." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Nelze zapsat obrázek." + +#: thumbnail.cpp:316 +#, 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:324 +#, 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..159f867 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Spil &automatisk" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "start afspilning" + +#: mediacontrols_p.h:44 +#, 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..15fadf4 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktiviteter" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Indlæser..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktivitetshåndteringen kører ikke" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Kobl til den aktuelle aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Afkobl fra den aktuelle aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Kobl til:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Afkobl fra:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktivitet" + +#: KioActivities.cpp:223 +#, 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..04c1a80 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..f693672 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Rod-mappen" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Steder" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Kunne ikke finde konfiguration til bogmærker" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Kunne ikke finde bogmærke-editor" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Fejlagtig anmodning: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Der er ingen bogmærker at vise endnu." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..f89ff52 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Forbinder..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Initierer protokol..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokal login" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-autentificering" + +#: fish.cpp:759 +#, 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..117a2c3 --- /dev/null +++ b/po/da/kio5_info.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. +# +# Martin Schlander , 2009, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-09-05 20:36+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 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Kan ikke finde filer som er nødvendige for at køre denne tjeneste:
        " +"%1
        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..43e9e17 --- /dev/null +++ b/po/da/kio5_man.po @@ -0,0 +1,222 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-05 20:38+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 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "Man-siden %1 kunne ikke læses." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "Man-siden %1 kunne ikke konverteres." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Fejl i man-side-fremviser" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Der er mere end én manual-side som passer:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Flere manual-sider" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Header-filer" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Header-filer (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Brugerkommandoer" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Brugerkommandoer (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Systemkald" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subrutiner" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-moduler" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Netværksfunktioner" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Enheder" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Filformater" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Spil" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Forskelligt" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Systemadministration" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kerne" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokal dokumentation" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Ny" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Indeks for hovedmanual-siden" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Afsnit %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Indeks for sektion %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Indeks for manual-side" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Genererer indeks" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Kunne ikke finde programmet %1 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..f8d0c9a --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/da/kio5_nfs.po new file mode 100644 index 0000000..209f8bc --- /dev/null +++ b/po/da/kio5_nfs.po @@ -0,0 +1,74 @@ +# Danish translation of kio_nfs +# Copyright (C). +# +# Erik Kjær Pedersen , 2001, 2004. +# Martin Schlander , 2015, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-09-05 20:37+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 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Kan ikke finde en NFS-version som værtsmaskinen \"%1\" understøtter" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "NFS-protokollen kræver værtsmaskinenavnet på serveren." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Kunne ikke initialisere protokol" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC-fejl %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Filnavn for langt" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disk-kvote overskredet" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS-fejl %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Ukendt mål" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Ikke understøttet NFS-version" + +#~ msgid "No space left on device" +#~ msgstr "Ikke mere plads på enheden" + +#~ msgid "Read only file system" +#~ msgstr "Filsystem kun læsbart" + +#~ msgid "Failed to mount %1" +#~ msgstr "Kunne ikke montere %1" + +#~ 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..21768f9 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..60412bf --- /dev/null +++ b/po/da/kio5_sftp.po @@ -0,0 +1,440 @@ +# Danish translation of kio_sftp +# Copyright (C) +# Erik Kjær Pedersen , 2001, 2002, 2003, 2004. +# Martin Schlander , 2008, 2009, 2010, 2012, 2013, 2014, 2015, 2022. +# scootergrisen, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2022-02-08 19:59+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-Project-Style: kde\n" +"X-Generator: Lokalize 20.04.2\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Forkert eller ugyldig adgangsfrase" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Kunne ikke allokere tilbagekald" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Kunne ikke sætte detaljeringsgrad for log." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Kunne ikke sætte log-brugerdata." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Kunne ikke sætte log-tilbagekald." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-login" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Angiv din adgangskode." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Sted:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Kunne ikke læse link: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Kunne ikke oprette en ny SSH-session." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Kunne ikke sætte en timeout." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Kunne ikke deaktivere Nagle's algoritme." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Kunne ikke sætte komprimering." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Kunne ikke sætte vært." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Kunne ikke sætte port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Kunne ikke sætte brugernavn." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Kunne ikke fortolke konfigurationsfilen." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Åbner SFTP-forbindelse til værten %1:%2" + +#: kio_sftp.cpp:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Advarsel: Kan ikke verificere værtens identitet." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Godkendelse mislykkedes." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Godkendelse mislykkedes. Serveren sendte ikke nogen autentificeringsmetoder" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Indtast venligst brugernavn og adgangskode." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Forkert brugernavn eller adgangskode" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Kunne ikke initialisere SFTP-sessionen." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Det lykkedes at forbinde til %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ugyldigt sftp-kontekst" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Kunne ikke ændre rettigheder for\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..1d6086c --- /dev/null +++ b/po/da/kio5_smb.po @@ -0,0 +1,202 @@ +# Danish translation of kio_smb +# Copyright (C) +# Erik Kjær Pedersen , 2001, 2003, 2004, 2005. +# scootergrisen, 2017. +# Martin Schlander , 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2022-02-08 19:58+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 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 "" +"Der er flere muligheder for at autentificere på SMB-ressourcer.brugernavn: Når du autenficerer inden " +"for et hjemmenetværk og brugernavnet på serveren er tilstrækkeligtbrugernavn@domain.dk: Moderne " +"erhvervs- logon-navne har samme form som en e-mailaddresseDOMAIN\\brugernavn: Ved meget gamle " +"erhverrvsnetværk eller arbejdsgrupper skal du måske have et præfiks foran " +"NetBIOS domænenavne (pre-Windows 2000)anonym: Anonyme logins kan forsøges ved at bruge et tomt brugernavn " +"og adgangskode. Afhængigt af serverens opsætning kan ikke-tomme brugernavne " +"være påkrævet" + +#: 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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Intet medie i enheden for %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Kunne ikke forbinde til værten for %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Fejl ved forbindelse til serveren ansvarlig for %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Share kunne ikke findes på givne server" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Dårlig filbeskriver" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "mislykkedes at initialisere libsmbclient" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Afmontering af monteringspunktet \"%1\" mislykkedes.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..786de21 --- /dev/null +++ b/po/da/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kan ikke oprette miniature for mappen" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Intet plugin angivet." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Kan ikke indlæse miniaturebilledopretteren %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Kan ikke oprette miniature for %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Mislykkedes at oprette miniaturebillede." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Kunne ikke skrive billede." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Mislykkedes at knytte til delt hukommelsessegment %1." + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Billedet er for stort for det delte hukommelsessegment" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rotér billedet automatisk" + +#~ 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/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/docs/kioslave5/zstd/index.docbook b/po/de/docs/kioslave5/zstd/index.docbook new file mode 100644 index 0000000..e7a1ae2 --- /dev/null +++ b/po/de/docs/kioslave5/zstd/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +zstd + + +FriedrichW. H.Kossebau +DeutschesKDE-Übersetzerteam
        kde-i18n-de@kde.org
        Übersetzung
        +
        +
        + +zstd ist ein Kompressionsprogramm. + +Das zstd-Modul ist nicht direkt nutzbar, es ist hauptsächlich zur Verwendung als Filter gedacht. Zum Beispiel kann das tar-Modul eine Datei durch das zstd-Modul filtern, um den Inhalt einer .tar.zst-Datei direkt in einem &konqueror;-Fenster darzustellen. + +Wenn Sie im &konqueror; auf eine Datei mit der Erweiterung .zst klicken, wird dieses Modul benutzt, um sie zu entpacken und als normale (unkomprimierte) Datei darzustellen. + +Wenn Sie ein Entwickler sind und den zstd-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: zstd. + +
        diff --git a/po/de/kfileaudiopreview5.po b/po/de/kfileaudiopreview5.po new file mode 100644 index 0000000..5a7b744 --- /dev/null +++ b/po/de/kfileaudiopreview5.po @@ -0,0 +1,40 @@ +# 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: 2021-05-01 00:18+0000\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Automatische Wiedergabe" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "Wiedergabe starten" + +#: mediacontrols_p.h:44 +#, 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..b72a245 --- /dev/null +++ b/po/de/kio5_activities.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. +# +# Frederik Schwarzer , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-24 00:16+0000\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" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktivitäten" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Wird geladen ..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Die Aktivitätenverwaltung läuft nicht" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Mit der aktuellen Aktivität verknüpfen" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Von der aktuellen Aktivität lösen" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Verknüpfen mit:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Lösen von:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktivität" + +#: KioActivities.cpp:223 +#, 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..5da4fff --- /dev/null +++ b/po/de/kio5_archive.po @@ -0,0 +1,35 @@ +# Thomas Reitelbach , 2005. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-07 00:17+0000\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..757871b --- /dev/null +++ b/po/de/kio5_bookmarks.po @@ -0,0 +1,77 @@ +# Thomas Reitelbach , 2008. +# Burkhard Lück , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-03-02 11:19+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" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Basisordner" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Orte" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Die Einstellungen für Lesezeichen wurden nicht gefunden" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Der Editor für Lesezeichen wurde nicht gefunden" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Fehlerhafte Anfrage: %1" + +#: kio_bookmarks_html.cpp:85 +#, 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:124 +#, 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:133 +#, 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..f1091fc --- /dev/null +++ b/po/de/kio5_fish.po @@ -0,0 +1,49 @@ +# 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: 2021-05-30 00:17+0000\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:289 +#, kde-format +msgid "Connecting..." +msgstr "Verbindung wird aufgebaut ..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokoll wird initialisiert ..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokale Anmeldung" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-Authentifizierung" + +#: fish.cpp:759 +#, 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..8628122 --- /dev/null +++ b/po/de/kio5_info.po @@ -0,0 +1,23 @@ +# Burkhard Lück , 2009, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-03-07 13:52+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" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Die Datei %1 für die Ausführung dieses Dienstes wurde nicht gefunden:
        " +"%1
        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..753723b --- /dev/null +++ b/po/de/kio5_man.po @@ -0,0 +1,239 @@ +# 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: 2021-09-03 00:17+0000\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, fuzzy, kde-kuit-format +#| msgctxt "@info" +#| msgid "" +#| "The man page %1 was found, but it could not be read " +#| "or parsed." +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" +"Die Handbuchseite %1 wurde gefunden, aber sie kann " +"nicht gelesen oder verarbeitet werden." + +#: kio_man.cpp:604 +#, fuzzy, kde-kuit-format +#| msgctxt "@info" +#| msgid "" +#| "The man page %1 was found, but it could not be read " +#| "or parsed." +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" +"Die Handbuchseite %1 wurde gefunden, aber sie kann " +"nicht gelesen oder verarbeitet werden." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Fehler des Handbuch-Betrachters" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Es gibt mehr als eine Handbuchseite dazu:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Mehrere Handbuchseiten" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Header-Dateien" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Header-Dateien (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Benutzer-Befehle" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Benutzer-Befehle (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Systemaufrufe" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Unter-Routinen" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-Module" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Netzwerk-Funktionen" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Geräte" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Dateiformate" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Spiele" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Verschiedenes" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Systemverwaltung" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokale Dokumentation" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Neu" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Hauptindex für Handbücher" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Abschnitt %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index für Abschnitt %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Index für Handbücher" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Index wird erstellt" + +#: kio_man.cpp:1389 +#, fuzzy, 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." +msgctxt "@info" +msgid "" +"Could not find the %1 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..3d8f4cb --- /dev/null +++ b/po/de/kio5_mtp.po @@ -0,0 +1,35 @@ +# 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: 2021-05-30 00:17+0000\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" + +#: kio_mtp.cpp:217 +#, 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:520 +#, 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_nfs.po b/po/de/kio5_nfs.po new file mode 100644 index 0000000..e2befd8 --- /dev/null +++ b/po/de/kio5_nfs.po @@ -0,0 +1,72 @@ +# Thomas Diehl , 2002, 2004. +# Thomas Reitelbach , 2006. +# Burkhard Lück , 2012, 2014, 2017, 2021. +# Frederik Schwarzer , 2016. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-03-29 17:30+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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Es wurde keine NFS-Version gefunden, die der Rechner „%1“ unterstützt" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Für das NFS-Protokoll ist der Name des Serverrechners erforderlich." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Protokoll kann nicht initialisiert werden" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC-Fehler %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Dateiname zu lang" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Speicherplatzkontingent überschritten" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS-Fehler %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Unbekanntes Ziel" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Nicht unterstützte NFS-Version" + +#~ msgid "No space left on device" +#~ msgstr "Kein Speicherplatz mehr vorhanden" + +#~ msgid "Read only file system" +#~ msgstr "Nur lesbares Dateisystem" + +#~ msgid "Failed to mount %1" +#~ msgstr "Das Einhängen von %1 ist fehlgeschlagen" + +#~ 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..1ce33c9 --- /dev/null +++ b/po/de/kio5_recentdocuments.po @@ -0,0 +1,19 @@ +# Frederik Schwarzer , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_recentdocuments\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: recentdocuments.cpp:160 +#, 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..93a08eb --- /dev/null +++ b/po/de/kio5_sftp.po @@ -0,0 +1,477 @@ +# 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: 2021-11-04 00:18+0000\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Falsche oder ungültige Passphrase" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Die Rückrufe können nicht zugeordnet werden." + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" +"Die Ausführlichkeitsstufe der Protokollierung kann nicht festgelegt werden." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Die Protokollierung der Benutzerdaten kann nicht festgelegt werden." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Die Protokollierung der Rückrufe kann nicht festgelegt werden." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-Anmeldung" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Bitte geben Sie Ihr Passwort ein." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Seite:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Die Verknüpfung kann nicht gelesen werden: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Es kann keine neue SSH-Sitzung gestartet werden." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Die Zeitüberschreitung kann nicht festgelegt werden." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Der Nagle-Algorithmus kann nicht abgeschaltet werden." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Die Komprimierung kann nicht festgelegt werden." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Der Rechner kann nicht festgelegt werden." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Der Port kann nicht festgelegt werden." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Der Benutzername kann nicht festgelegt werden." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Die Einrichtungsdatei kann nicht analysiert werden." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "SFTP-Verbindung zu Rechner %1:%2 wird aufgebaut" + +#: kio_sftp.cpp:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Warnung: Die Identität des Rechners lässt sich nicht feststellen." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Authentifizierung fehlgeschlagen" + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Bitte geben Sie Ihren Benutzernamen und Ihr Passwort an." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Benutzername oder Passwort ungültig" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Die SFTP-Sitzung lässt sich nicht starten." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Verbindung mit %1 erfolgreich aufgebaut" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ungültiger Sftp-Kontext" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Berechtigungen lassen sich nicht ändern für\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..c2d1968 --- /dev/null +++ b/po/de/kio5_smb.po @@ -0,0 +1,203 @@ +# Thomas Diehl , 2002, 2003, 2004. +# Stephan Johach , 2005. +# Thomas Reitelbach , 2005, 2006. +# Burkhard Lück , 2017, 2020, 2021. +# Frederik Schwarzer , 2020. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-04-25 05:16+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" +"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 "" +"Es gibt verschiedene Optionen für die Authentifizierung auf SMB-" +"Freigaben.Benutzername: Bei der " +"Authentifizierung innerhalb eines Heimnetzwerk ist der Benutzername auf dem " +"Server ausreichendusername@domain.com: Anmeldungsnamen in neuen Firmennetzwerken werden wie E-Mail-" +"Adressen gebildetDOMAIN\\username: " +"Bei alten Firmennetzwerken oder Arbeitsgruppen müssen Sie dem NetBIOS-" +"Domänennamen eventuell ein Präfix voranstellen (vor Windows 2000)anonymous: Anonyme Anmeldungen können " +"mit leerem Benutzernamen und Passwort versucht werden. Je nach Server-" +"Einstellungen können nicht-leere Benutzernamen erforderlich sein" + +#: 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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Kein Medium im Gerät für %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Keine Verbindung zum Rechner für %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Ressource (Freigabe) auf dem angegebenen Server nicht auffindbar" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Unbrauchbarer Datei-Deskriptor" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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: Rechner nicht erreichbar" + +#: kio_smb_browse.cpp:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Lösen der Verbindung zu Einhängepunkt „%1“ fehlgeschlagen.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..58c4f49 --- /dev/null +++ b/po/de/kio5_thumbnail.po @@ -0,0 +1,81 @@ +# 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: 2021-09-02 00:17+0000\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Für den Ordner kann kein Miniaturbild erzeugt werden." + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Kein Modul angegeben" + +#: thumbnail.cpp:250 +#, fuzzy, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 lässt sich nicht laden" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Für %1 kann kein Miniaturbild erzeugt werden." + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Erzeugen eines Miniaturbildes fehlgeschlagen" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Das Bild lässt sich nicht schreiben." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Keine Anbindung an gemeinsames Speichersegment %1 möglich." + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Das Bild ist zu groß für das gemeinsame Speichersegment." + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Das Bild automatisch drehen" + +#~ 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..47272f3 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Αυτόματη αναπαραγωγή" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "έναρξη αναπαραγωγής" + +#: mediacontrols_p.h:44 +#, 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..0438530 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Δραστηριότητες" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Φόρτωση..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Ο διαχειριστής δραστηριοτήτων δεν εκτελείται" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Σύνδεση στην τρέχουσα δραστηριότητα" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Αποσύνδεση από την τρέχουσα δραστηριότητα" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Σύνδεση σε:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Αποσύνδεση από:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Δραστηριότητα" + +#: KioActivities.cpp:223 +#, 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..8433bca --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Αδύνατο το άνοιγμα του αρχείου, πιθανότατα λόγω μη υποστηριζόμενου τύπου " +"αρχείου.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..a52ab0c --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Ριζικός κατάλογος" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Τοποθεσίες" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Αδυναμία εύρεσης της διαμόρφωσης των σελιδοδεικτών" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Αδυναμία εύρεσης του επεξεργαστή των σελιδοδεικτών" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Εσφαλμένη αίτηση: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Δεν υπάρχουν σελιδοδείκτες για εμφάνιση." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..55a80be --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Σύνδεση..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Αρχικοποίηση πρωτοκόλλου..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Τοπική σύνδεση" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Ταυτοποίηση SSH" + +#: fish.cpp:759 +#, 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..9c90cd2 --- /dev/null +++ b/po/el/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. +# +# Toussis Manolis , 2009. +# Stelios , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-06-16 18:12+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" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Αδυναμία εντοπισμού των αρχείων που είναι απαραίτητα για την εκτέλεση αυτής " +"της υπηρεσίας:
        %1
        Ελέγξτε την εγκατάστασή σας." diff --git a/po/el/kio5_man.po b/po/el/kio5_man.po new file mode 100644 index 0000000..9957dcf --- /dev/null +++ b/po/el/kio5_man.po @@ -0,0 +1,227 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-03 10:25+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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" +"Αδυναμία ανάγνωσης της σελίδας του εγχειριδίου %1." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" +"Αδυναμία μετατροπής της σελίδας του εγχειριδίου %1." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Σφάλμα του προβολέα σελίδων εγχειριδίου" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Ταιριάζουν πάνω από μία σελίδες εγχειριδίου:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Πολλές σελίδες εγχειριδίου" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Header αρχεία" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Header αρχεία (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Εντολές χρήστη" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Εντολές χρήστη (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Κλήσεις συστήματος" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Υπορουτίνες" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Αρθρώματα perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Λειτουργίες δικτύου" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Συσκευές" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Μορφές αρχείων" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Παιχνίδια" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Διάφορα" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Διαχείριση συστήματος" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Πυρήνας" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Τοπική τεκμηρίωση" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Νέα" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Ευρετήριο κύριας σελίδας εγχειριδίου" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Τμήμα %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Ευρετήριο για την ενότητα %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Ευρετήριο σελίδας εγχειριδίου" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Δημιουργία ευρετηρίου" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Αδυναμία εύρεσης του προγράμματος %1 στο σύστημά σας. " +"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..f884c51 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/el/kio5_nfs.po new file mode 100644 index 0000000..26586bd --- /dev/null +++ b/po/el/kio5_nfs.po @@ -0,0 +1,77 @@ +# 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. +# Stelios , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-06-16 18:15+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_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Αδυναμία εύρεσης μιας NFS έκδοσης που υποστηρίζει ο υπολογιστής %1" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Το NFS πρωτόκολλο απαιτεί ένα όνομα εξυπηρετητή." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Αποτυχία αρχικοποίησης πρωτοκόλλου" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Σφάλμα RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Πολύ μεγάλο όνομα αρχείου" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Το μερίδιο δίσκου έχει ξεπεραστεί" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Σφάλμα NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Άγνωστος προορισμός" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Μη υποστηριζόμενη έκδοση NFS" + +#~ msgid "No space left on device" +#~ msgstr "Δεν υπάρχει ελεύθερος χώρος στη συσκευή" + +#~ msgid "Read only file system" +#~ msgstr "Σύστημα αρχείων μόνο για ανάγνωση" + +#~ msgid "Failed to mount %1" +#~ msgstr "Αποτυχία προσάρτησης του %1" + +#~ 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..28b3671 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..07ad744 --- /dev/null +++ b/po/el/kio5_sftp.po @@ -0,0 +1,468 @@ +# 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, 2021. +# 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: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-17 10:17+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_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Εσφαλμένο όνομα χρήστη ή συνθηματικό" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Αδυναμία καταχώρησης επανακλήσεων" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Αδυναμία ρύθμισης λεπτομερειών καταγραφής." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Αδυναμία ρύθμισης καταγραφής πληροφοριών χρήστη." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Αδυναμία ρύθμισης καταγραφής επανακλήσεων." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP είσοδος" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Χρησιμοποιήστε το πεδίο ονόματος χρήστη για να απαντήσετε στην ερώτηση αυτή." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "Εισαγάγετε τον κωδικό πρόσβασης." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Τοποθεσία:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Αδυναμία ανάγνωσης του συνδέσμου: %1 (%2)" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Αδυναμία δημιουργίας νέας SSH συνεδρίας." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Αδυναμία ρύθμισης λήξης χρονικού περιθωρίου." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Αδυναμία απενεργοποίησης του αλγορίθμου του Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Αδυναμία ρύθμισης συμπίεσης." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Αδυναμία ρύθμισης κόμβου." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Αδυναμία ρύθμισης θύρας." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Αδυναμία ρύθμισης ονόματος χρήστη." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Αδυναμία συντακτικής ανάλυσης του αρχείου διαμόρφωσης." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Άνοιγμα σύνδεσης SFTP με τον κόμβο %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" +"Αδυναμία ανάκτησης του ονόματος του τύπου δημόσιου κλειδιού του εξυπηρετητή" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" +"Αδυναμία δημιουργίας αποτυπώματος από το δημόσιο κλειδί του εξυπηρετητή" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" +"Αδυναμία δημιουργίας αποτυπώματος για το δημόσιο κλειδί του εξυπηρετητή" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "" +"Προειδοποίηση: Δεν είναι δυνατή η επαλήθευση της ταυτότητας του κόμβου." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Η ταυτοποίηση απέτυχε." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Η ταυτοποίηση απέτυχε. Ο εξυπηρετητής δεν έστειλε καμία μέθοδο ταυτοποίησης" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Δώστε το όνομα χρήστη και τον κωδικό πρόσβασης." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Εσφαλμένο όνομα χρήστη ή κωδικός πρόσβασης" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Αδυναμία αίτησης για το υποσύστημα SFTP. Βεβαιωθείτε ότι το SFTP είναι " +"ενεργό στον εξυπηρετητή." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Αδυναμία αρχικοποίησης της SFTP συνεδρίας." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Επιτυχής σύνδεση στο %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Μη έγκυρο sftp πλαίσιο" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Αδυναμία αλλαγής δικαιωμάτων για\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "Είστε βέβαιοι ότι θέλετε να συνεχίσετε τη διαδικασία σύνδεσης;" + +#~ 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..b0f6cbb --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Άγνωστος τύπος αρχείου, ούτε κατάλογος ούτε αρχείο." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Δεν υπάρχει μέσο στη συσκευή για το %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Αδύνατη η σύνδεση με το διακομιστή για το %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "" +"Σφάλμα κατά τη σύνδεση με τον εξυπηρετητή που είναι υπεύθυνος για το %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Ο κοινόχρηστος πόρος δεν ήταν δυνατό να βρεθεί στο δοθέν εξυπηρετητή" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Εσφαλμενος περιγραφέας αρχείου" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Παρουσιάστηκε σφάλμα κατά την πρόσβαση στο %1%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Το libsmbclient απέτυχε να δημιουργήσει περιεχόμενο" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Η αποπροσάρτηση του σημείου προσάρτησης \"%1\" απέτυχε.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..6fe4afd --- /dev/null +++ b/po/el/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Αδύνατη η δημιουργία εικόνας επισκόπησης καταλόγου" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Δεν καθορίστηκε πρόσθετο." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Αδύνατη ν φόρτωση του ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Αδύνατη η δημιουργία εικόνα επισκόπησης για το %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Η δημιουργία εικόνας επισκόπησης απέτυχε." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Αδύνατη η εγγραφή της εικόνας." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Η σύνδεση με το τμήμα κοινόχρηστης μνήμης %1 απέτυχε" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Η εικόνα είναι πολύ μεγάλη για το τμήμα κοινόχρηστης μνήμης" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..301aa42 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Play &automatically" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "start playback" + +#: mediacontrols_p.h:44 +#, 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..1009817 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Activities" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Loading..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "The Activity Manager is not running" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Link to the current activity" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Unlink from the current activity" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Link to:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Unlink from:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Activity" + +#: KioActivities.cpp:223 +#, 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..22d9cb0 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..dda3594 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Places" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Could not find bookmarks configuration" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Could not find bookmarks editor" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Wrong request: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "There are no bookmarks to display yet." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..68f5e70 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Connecting..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Initiating protocol..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Local Login" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH Authentication" + +#: fish.cpp:759 +#, 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..495b986 --- /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. +# Steve Allewell , 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-20 16:42+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.12.2\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..ab4c876 --- /dev/null +++ b/po/en_GB/kio5_man.po @@ -0,0 +1,220 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-10 13:38+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 21.08.1\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "The man page %1 could not be read." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "The man page %1 could not be converted." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Manual Page Viewer Error" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "There is more than one matching man page:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Multiple Manual Pages" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Header Files" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Header Files (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "User Commands" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "User Commands (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "System Calls" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subroutines" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl Modules" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Network Functions" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Devices" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "File Formats" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Games" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Miscellaneous" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "System Administration" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Local Documentation" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "New" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Main Manual Page Index" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Section %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index for section %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Manual Page Index" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Generating Index" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 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..007344f --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/en_GB/kio5_nfs.po new file mode 100644 index 0000000..5ddecb1 --- /dev/null +++ b/po/en_GB/kio5_nfs.po @@ -0,0 +1,74 @@ +# translation of kio_nfs.po to British English +# Copyright (C) 2004 Free Software Foundation, Inc. +# +# Andrew Coles , 2004. +# Steve Allewell , 2014, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-14 15:22+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.12.2\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Cannot find an NFS version that host '%1' supports" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "The NFS protocol requires a server host name." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Failed to initialise protocol" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC error %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "File name too long" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disk quota exceeded" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS error %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Unknown target" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Unsupported NFS version" + +#~ msgid "No space left on device" +#~ msgstr "No space left on device" + +#~ msgid "Read only file system" +#~ msgstr "Read only file system" + +#~ msgid "Failed to mount %1" +#~ msgstr "Failed to mount %1" + +#~ 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..8063687 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..0639a4a --- /dev/null +++ b/po/en_GB/kio5_sftp.po @@ -0,0 +1,442 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-17 11: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 21.08.1\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Incorrect or invalid passphrase" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Could not allocate callbacks" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Could not set log verbosity." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Could not set log userdata." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Could not set log callback." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP Login" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Please enter your password." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Site:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Could not read link: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Could not create a new SSH session." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Could not set a timeout." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Could not disable Nagle's Algorithm." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Could not set compression." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Could not set host." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Could not set port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Could not set username." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Could not parse the config file." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Opening SFTP connection to host %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Could not get server public key type name" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Could not create hash from server public key" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Could not create fingerprint for server public key" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Warning: Cannot verify host's identity." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Authentication failed." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Please enter your username and password." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Incorrect username or password" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Could not initialise the SFTP session." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Successfully connected to %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Invalid sftp context" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Could not change permissions for\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..e9f20d0 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "No media in device for %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Could not connect to host for %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Error while connecting to server responsible for %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Share could not be found on given server" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Bad file descriptor" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient failed to create context" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..0215d5d --- /dev/null +++ b/po/en_GB/kio5_thumbnail.po @@ -0,0 +1,83 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Cannot create thumbnail for directory" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "No plugin specified." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Cannot load ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Cannot create thumbnail for %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Failed to create a thumbnail." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Could not write image." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Failed to attach to shared memory segment %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Image is too big for the shared memory segment" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rotate the image automatically" + +#~ 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..56813a9 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Aŭtomate ludi" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "startigi reproduktadon" + +#: mediacontrols_p.h:44 +#, 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..3eb0a17 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..429a9e3 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Radiko" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Lokoj" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Malbona peto: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Ne estas ankoraŭ montrendaj legosignoj." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..d50918a --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Konektanta..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Pravalorizanta protokolon..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Loka ensaluto" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH-rajtigado" + +#: fish.cpp:759 +#, 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..18f72e1 --- /dev/null +++ b/po/eo/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. +# +# Michael Moroni , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..cc45ffe --- /dev/null +++ b/po/eo/kio5_man.po @@ -0,0 +1,233 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        Eraro de rigardilo de manlibro por KDE

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Uzantkomandoj" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Uzantkomandoj" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Sistemaj vokoj" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Proceduroj" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Moduloj de Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Retfunkcioj" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Aparatoj" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Dosieraranĝoj" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Ludoj" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversaĵoj" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Sistema administrado" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kerno" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Loka dokumentaro" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nova" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Manlibra indekso de UNIKSO" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sekcio %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indekso por sekcio %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Manlibra indekso de UNIKSO" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Kreanta indekson" + +#: kio_man.cpp:1389 +#, 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 %1 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..5b0a26f --- /dev/null +++ b/po/eo/kio5_nfs.po @@ -0,0 +1,66 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Tro longa dosiernomo" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Diskkvoto superiĝis" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Neniu spaco restis en la aparato" + +#~ msgid "Read only file system" +#~ msgstr "Nurlega dosiersistemo" + +#~ 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..89b86a7 --- /dev/null +++ b/po/eo/kio5_sftp.po @@ -0,0 +1,393 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Nevalida salutnomo aŭ pasvorto" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:276 +#, 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:281 +#, 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:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP ensaluto" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" + +#: kio_sftp.cpp:380 +#, 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:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "retejo:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Ne eblis legi la SFTP paketon" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, 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:592 +#, 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:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:615 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set port." +msgstr "Ne eblis legi la SFTP paketon" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:647 +#, 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:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Averto: Ne eblas kontroli la gastigantan identecon." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "La aŭtentigo fiaskis." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Bonvolu tajpi vian salutnomon kaj pasvorton." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nevalida salutnomo aŭ pasvorto" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Sukcesis konekti al %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ne eblis ŝanĝi la permesojn por\n" +"%1" + +#, 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..3d92cd8 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Neniu aŭdvidaĵo en aparato por %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Ne povis konekti al servilo for %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Eraro dum konektado al respondeca servilo por %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Kunhavigo ne troveblas en donita servilo" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "MALBONA priskribanto de dosiero" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient fiaskis dum kreado de kunteksto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Malmuntado de surmetingo \"%1\" fiaskis.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..462c702 --- /dev/null +++ b/po/eo/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Miniaturo por dosierujo ne kreeblas" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Neniu kromprogramo specifita." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 ne ŝargeblas" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Miniaturo por %1 ne kreeblas" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Kreado de miniaturo fiaskis." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "La bildo ne skribeblas." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Alkroĉado al kunhavigita memoro-segmento %1 fiaskis" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "La bildo estas tro granda por la kunhavigita memoro-segmento" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Aŭtomate rotacii la bildon" + +#~ 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/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/docs/kioslave5/zstd/index.docbook b/po/es/docs/kioslave5/zstd/index.docbook new file mode 100644 index 0000000..b430b24 --- /dev/null +++ b/po/es/docs/kioslave5/zstd/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +zstd + + +FriedrichW. H.Kossebau +EloyCuadra
        ecuadra@eloihr.net
        Traductor
        +
        +
        + +zstd es un programa de compresión. + +El kioslave zstd no se puede usar directamente, ya que está pensado para usar como filtro. Por ejemplo, el kioslave tar puede filtrar un archivo mediante el kioslave zstd para poder mostrar el contenido de un archivo tar.zst directamente en una ventana de &konqueror;. + +Si pulsa sobre un archivo comprimido con la extensión zst en &konqueror;, se usa este kioslave para descomprimirlo y mostrarlo como un archivo normal (no comprimido). + +Si usted es desarrollador y desea usar el filtro zstd, puede encontrar información sobre el uso de kioslaves en http://techbase.kde.org. + +Consulte el manual: zstd. + +
        diff --git a/po/es/kfileaudiopreview5.po b/po/es/kfileaudiopreview5.po new file mode 100644 index 0000000..ed9332d --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Reproducir &automáticamente" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "iniciar la reproducción" + +#: mediacontrols_p.h:44 +#, 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..974eef7 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Actividades" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Cargando..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "El administrador de actividades no se está ejecutando" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Enlace a la actividad actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Deshacer el enlace desde la actividad actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Enlazar a:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Deshacer el enlace desde:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Actividad" + +#: KioActivities.cpp:223 +#, 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..627b447 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..a1e1bed --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Raíz" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Lugares" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "No se ha podido encontrar la configuración de los marcadores" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "No se ha podido encontrar el editor de marcadores" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Solicitud incorrecta: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Aún no hay marcadores para mostrar." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..57f9d53 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Conectando..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Iniciando protocolo..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Inicio de sesión local" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticación SSH" + +#: fish.cpp:759 +#, 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..81646a7 --- /dev/null +++ b/po/es/kio5_info.po @@ -0,0 +1,28 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-20 16:32+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" +"X-Generator: Lokalize 20.12.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"No ha sido posible localizar los archivos necesarios para ejecutar este " +"servicio:
        %1
        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..b630b3e --- /dev/null +++ b/po/es/kio5_man.po @@ -0,0 +1,220 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-03 19:38+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 21.08.0\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "No se puede leer la página man %1." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "No se puede convertir la página man %1." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Error del visor de páginas de manual" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Hay más de una página man coincidente:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiples páginas de manual" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Archivos de cabecera" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Archivos de cabecera (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Órdenes del usuario" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Órdenes de usuario (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Llamadas del sistema" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subrutinas" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Módulos Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funciones de la red" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formatos de archivos" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Juegos" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Varios" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administración del sistema" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentación local" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nuevo" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índice de la página de manual principal" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sección %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índice de la sección %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Índice de la página de manual" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Creando índice" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 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..a0a4c9b --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/es/kio5_nfs.po new file mode 100644 index 0000000..48658b3 --- /dev/null +++ b/po/es/kio5_nfs.po @@ -0,0 +1,79 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-14 20:52+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.12.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" +"No se ha podido encontrar una versión de NFS que pueda usar la máquina «%1»" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "El protocolo NFS necesita un nombre de servidor." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "No se ha podido inicializar el protocolo" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Error de RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Nombre de archivo demasiado largo" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Cuota de disco excedida" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Error de NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Destino desconocido" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: versión de NFS no permitida" + +#~ msgid "No space left on device" +#~ msgstr "No queda espacio en el dispositivo" + +#~ msgid "Read only file system" +#~ msgstr "Sistema de solo lectura" + +#~ msgid "Failed to mount %1" +#~ msgstr "El montaje de %1 ha fallado" + +#~ 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..fa03c63 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..94a8336 --- /dev/null +++ b/po/es/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. +# +# Eloy Cuadra , 2014, 2018, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-15 11:42+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 21.08.2\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Contraseña larga incorrecta o no válida" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "No ha sido posible asignar retrollamadas" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "No se ha podido fijar la verbosidad del registro." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "No se han podido establecer los datos de usuario del registro." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "No ha sido posible asignar el callback del registro." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Inicio de sesión SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Por favor, introduzca su contraseña." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Sitio:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "No se puede leer el enlace: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "No se ha podido crear una nueva sesión SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "No se ha podido fijar un tiempo de espera." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "No se ha podido desactivar el algoritmo de Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "No se ha podido fijar la compresión." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "No se ha podido establecer el servidor." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "No se ha podido establecer el puerto." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "No se ha podido establecer el nombre de usuario." + +#: kio_sftp.cpp:630 +#, 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:647 +#, 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:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Advertencia: no se puede verificar la identidad de la máquina." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "La autenticación ha fallado." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Por favor, introduzca su nombre de usuario y su contraseña." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Usuario o contraseña incorrectos" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "No se puede inicializar la sesión SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Se ha conectado a %1 con éxito" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexto sftp no válido" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"No se pueden cambiar los permisos de\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" diff --git a/po/es/kio5_smb.po b/po/es/kio5_smb.po new file mode 100644 index 0000000..f29ac10 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "No hay medio en el dispositivo para %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "No se puede conectar con el servidor para %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descriptor de archivo erróneo" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient falló al crear el contexto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Falló el desmontaje del punto de montaje «%1».\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..c96480f --- /dev/null +++ b/po/es/kio5_thumbnail.po @@ -0,0 +1,87 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "No se pudo crear miniatura del directorio" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "No se especificó ningún complemento." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "No se puede cargar ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "No se pudo crear miniatura de %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Fallo al crear la miniatura." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "No se pudo escribir la imagen." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Fallo al adjuntar segmento de memoria compartida %1" + +#: thumbnail.cpp:324 +#, 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 "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rotar la imagen automáticamente" + +#~ 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/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..6d5e6c8 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Automaatne mängimine" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "taasesituse alustamine" + +#: mediacontrols_p.h:44 +#, 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..e698750 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Tegevused" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Laadimine..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Tegevuste haldur ei tööta." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Lingi aktiivse tegevusega" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Eemalda link aktiivse tegevusega" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Linkimine:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Lingi eemaldamine:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Tegevus" + +#: KioActivities.cpp:223 +#, 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..545ceff --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..cceb6a5 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Juurkataloog" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Asukohad" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Vale päring: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Pole ühtegi järjehoidjat näidata." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..d702a3b --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Ühendamine..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokolli initsialiseerimine..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Kohalik sisselogimine" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH autentimine" + +#: fish.cpp:759 +#, 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..ce3f43e --- /dev/null +++ b/po/et/kio5_info.po @@ -0,0 +1,33 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..a97418d --- /dev/null +++ b/po/et/kio5_man.po @@ -0,0 +1,239 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, fuzzy, kde-kuit-format +#| msgctxt "@info" +#| msgid "" +#| "The man page %1 was found, but it could not be read " +#| "or parsed." +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" +"Manuaalilehekülg %1 küll leiti, kuid selle lugemine või " +"parsimine nurjus." + +#: kio_man.cpp:604 +#, fuzzy, kde-kuit-format +#| msgctxt "@info" +#| msgid "" +#| "The man page %1 was found, but it could not be read " +#| "or parsed." +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" +"Manuaalilehekülg %1 küll leiti, kuid selle lugemine või " +"parsimine nurjus." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Manuaalinäitaja viga" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Kriteeriumile vastavaid man-lehekülgi on rohkem kui üks:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Mitu man-lehekülge" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Päisefailid" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Päisefailid (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Kasutaja käsud" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Kasutaja käsud (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Süsteemsed väljakutsed" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Alamfunktsioonid" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perli moodulid" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Võrgufunktsioonid" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Seadmed" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Failide vormingud" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Mängud" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Muud" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Süsteemi haldamine" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Kohalik dokumentatsioon" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Uus" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Manuaalilehekülgede pearegister" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sektsioon %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Sektsiooni %1 register: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Manuaalilehekülgede register" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Registri genereerimine" + +#: kio_man.cpp:1389 +#, fuzzy, 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." +msgctxt "@info" +msgid "" +"Could not find the %1 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..2748178 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/et/kio5_nfs.po new file mode 100644 index 0000000..22b6087 --- /dev/null +++ b/po/et/kio5_nfs.po @@ -0,0 +1,74 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, fuzzy, kde-format +#| msgid "RPC error %1" +msgid "RPC error %1, %2" +msgstr "RPC tõrge %1" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Failinimi on liiga pikk" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Ketta piirang ületatud" + +#: kio_nfs.cpp:917 +#, fuzzy, kde-format +#| msgid "NFS error %1 - %2" +msgid "NFS error %1, %2" +msgstr "NFS-i tõrge %1 - %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Tundmatu sihtmärk" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Toetamata NFS-i versioon" + +#~ msgid "No space left on device" +#~ msgstr "Seadmel pole enam vaba ruumi" + +#~ msgid "Read only file system" +#~ msgstr "Failisüsteem on ainult lugemiseks" + +#~ msgid "Failed to mount %1" +#~ msgstr "%1 ühendamine nurjus" + +#~ 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..3b6860c --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..9c5cf96 --- /dev/null +++ b/po/et/kio5_sftp.po @@ -0,0 +1,449 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Vale või vigane paroolifraas" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Tagasiside eraldamine nurjus" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Logi teaberohkuse määramine nurjus." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Kasutajaandmete logimine nurjus." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Tagasiside logimine nurjus" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP kasutajanimi" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Palun sisesta parool." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Sait:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Lingi lugemine nurjus: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Uus SSH seansi loomine nurjus." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Aegumise määramine nurjus" + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagle'i algoritmi keelamine nurjus." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Tihenduse määramine nurjus." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Masina määramine nurjus." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Pordi määramine nurjus." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Kasutajanime määramine nurjus." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Seadistustefaili parsimine nurjus." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "SFTP ühenduse avamine masinasse %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Serveri avaliku võtme tüübi nime hankimine nurjus" + +#: kio_sftp.cpp:700 +#, 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:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Sõrmejälje loomine serveri avaliku võtmele nurjus" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Hoiatus: masina identiteeti pole võimalik kontrollida." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Autentimine nurjus." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "Autentimine nurjus. Server ei saatnud ühtegi autentimisviisi" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Palun sisesta kasutajanimi ja parool." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Vale kasutajanimi või parool" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP seansi initsialiseerimine nurjus." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Ühendus edukalt loodud masinasse %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Vigane sftp kontekst" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"%1\n" +"õiguste muutmine nurjus" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..7bffd6b --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 jaoks puudub seadmes andmekandja" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 jaoks ei õnnestunud masinaga ühenduda" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Viga %1 eest vastutava serveriga ühendumisel" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Antud serveris ei leitud jagatud ressurssi" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Halb failideskriptor" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient ei suutnud luua konteksti" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ühenduspunkti \"%1\" lahutamine nurjus.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..483163d --- /dev/null +++ b/po/et/kio5_thumbnail.po @@ -0,0 +1,83 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kataloogi pisipildi loomine nurjus" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Pluginat pole määratud." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Pisipildilooja %1 laadimine nurjus" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 pisipildi loomine nurjus" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Pisipildi loomine nurjus." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Pildi kirjutamine nurjus." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Lisamine jagatud mälu segmendile %1 nurjus" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Pilt on jagatud mälu segmendile liiga suur" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Pildi automaatne pööramine" + +#~ 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..280dc9d --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&automatikoki jotzea" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "hasi jotzen" + +#: mediacontrols_p.h:44 +#, 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..085cfa3 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Jarduerak" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Zamatzen..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Jarduera kudeatzailea ez dago martxan" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Uneko jarduerara esteka" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Kendu esteka uneko jardueratik" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Estekatu hona:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Kendu esteka hemendik:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Jarduera" + +#: KioActivities.cpp:223 +#, 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..97ab4e1 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..2a5afa7 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Erroa" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Tokiak" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Ezin izan da laster-marken konfigurazioa aurkitu" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Ezin izan da laster-marken editorea aurkitu" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Eskaera okerra: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Oraindik ez dago laster-markarik bistaratzeko." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..2b5b445 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Konektatzen..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokoloa hasten..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Saio-hasiera lokala" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH autentifikazioa" + +#: fish.cpp:759 +#, 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..67462db --- /dev/null +++ b/po/eu/kio5_info.po @@ -0,0 +1,33 @@ +# Translation for kio_info.po to Euskara/Basque (eu). +# Copyright (C) 2009-2014, Free Software Foundation, Inc. +# Copyright (C) 2015-2021, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuko arduraduna . +# +# Translators: +# marcos , 2009. +# Hizkuntza Politikarako Sailburuordetza , 2013. +# Iñigo Salvador Azurmendi , 2014, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-07-17 22:09+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 21.04.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Ezin ditu aurkitu zerbitzu hau exekutatzeko behar diren fitxategiak:
        " +"%1
        Mesedez, egiaztatu zure software-instalazioa." diff --git a/po/eu/kio5_man.po b/po/eu/kio5_man.po new file mode 100644 index 0000000..63327b5 --- /dev/null +++ b/po/eu/kio5_man.po @@ -0,0 +1,225 @@ +# Translation for kio5_man.po to Euskara/Basque (eu). +# Copyright (C) 2002-2014, Free Software Foundation, Inc. +# Copyright (C) 2015-2021, 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, 2021. +# Hizkuntza Politikarako Sailburuordetza , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kio_extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-05 00:30+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 21.08.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "%1 man orria ezin izan du irakurri." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "%1 man orria ezin izan du bihurtu." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Eskuliburu-orri ikustailearen errorea" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Bat datorren man orri bat baino gehiago dago:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Eskuliburu-orri anizkoitzak" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Goiburu fitxategiak" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Goiburu fitxategiak (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Erabiltzailearen komandoak" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Erabiltzailearen komandoak (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Sistemaren deiak" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Azpirutinak" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl moduluak" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Sareko funtzioak" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Gailuak" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Fitxategi formatuak" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Jokoak" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Bestelakoa" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Sistemaren kudeaketa" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Nukleoa" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Dokumentazio lokala" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Berria" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Eskuliburu-orrien indize nagusia" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "%1 atala" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "%1 atalaren Indizea: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Eskuliburu-orrien indizea" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Indizea sortzen" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Ezin izan du %1 programa zure sisteman aurkitu. Mesedez, " +"instalatu beharrezkoa bada, eta ziurtatu PATH ingurune-" +"aldagaia erabiliz aurki 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..4c6b9ff --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/eu/kio5_nfs.po new file mode 100644 index 0000000..90208f1 --- /dev/null +++ b/po/eu/kio5_nfs.po @@ -0,0 +1,80 @@ +# Translation for kio_nfs.po to Euskara/Basque (eu). +# Copyright (C) 2003-2014, Free Software Foundation, Inc. +# Copyright (C) 2015-2021, This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# KDE euskaratzeko proiektuko arduraduna . +# +# Translators: +# Marcos , 2003, 2006. +# Hizkuntza Politikarako Sailburuordetza , 2013. +# Iñigo Salvador Azurmendi , 2014, 2019, 2021. +# Gontzal M. Pujana , 2018. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-07-17 22:17+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 21.04.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Ezin du aurkitu «%1» ostalariak onartzen duen NFS bertsiorik" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "NFS protokoloak zerbitzariaren ostalari-izen bat behar du." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Protokoloa hasieratzea huts egin du" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC errorea %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Fitxategi-izen luzeegia" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disko-kuota gainditu da" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS errorea %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Jomuga ezezaguna" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: NFS bertsio hau ez da onartzen" + +#~ msgid "No space left on device" +#~ msgstr "Ez da lekurik geratzen gailuan" + +#~ msgid "Read only file system" +#~ msgstr "Irakurtzeko soilik den fitxategi-sistema" + +#~ msgid "Failed to mount %1" +#~ msgstr "%1 muntatzea huts egin du" + +#~ 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..3f99337 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..3fb3c3e --- /dev/null +++ b/po/eu/kio5_sftp.po @@ -0,0 +1,292 @@ +# Translation of kio_sftp.po to Euskara/Basque (eu). +# Copyright (C) 2003-2014, Free Software Foundation, Inc. +# Copyright (C) 2015-2021, 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, 2021. +# 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: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-12-28 20:14+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 21.12.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Pasaesaldi okerra edo baliogabea" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Ezin izan dira esleitu atzeradeiak" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Ezin izan da ezarri egunkariaren xehetasun-maila." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Ezin izan dira ezarri egunkariko erabiltzaile-datuak." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Ezin izan dira ezarri egunkariko atzeradeiak" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTPko saio-hasiera" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"Erabili erabiltzaile-izenaren sarrera-eremua galdera horri erantzuteko." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "Idatzi zure pasahitza." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Gunea:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Ezin izan da esteka irakurri: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Ezin izan da sortu SSH saio berri bat." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Ezin izan da ezarri denbora-muga bat." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Ezin izan da ezgaitu Nagle-ren algoritmoa." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Ezin izan da ezarri konprimatzea." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Ezin izan da ezarri ostalaria." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Ezin izan da ezarri ataka." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Ezin izan da ezarri erabiltzaile-izena." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "" +"Ezin izan da gainditu konfiguratzeko fitxategiaren azterketa sintaktikoa." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "SFTP konexioa irekitzen %1 ostalarira:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Ezin izan da lortu zerbitzariaren gako publiko motaren izena" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Ezin izan da hash sortu zerbitzari publikoaren gakotik" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Ezin izan da hatz-marka sortu zerbitzariaren gako publikorako" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Kontuz: ezin da egiaztatu ostalariaren identitatea." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Autentifikazioak huts egin du." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Idatzi erabiltzaile-izena eta pasahitza." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Okerreko erabiltzaile-izena edo pasahitza" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP saioa ezin izan da hasieratu." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Ondo konektatu da honekin: %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "sftp testuinguru baliogabea" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ezin izan dira aldatu honetarako baimenak:\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..72a266e --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Gailuan ez dago euskarririk honentzat: %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Ezin izan da konektatu ostalariarekin honentzat: %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Errorea gertatu da %1 eragin duen zerbitzariarekin konektatzean" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Baliabide partekatua ezin izan da aurkitu zerbitzari horretan" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Fitxategi-deskriptore akastuna" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Error bat gertatu da %1 atzitzean%2" + +#: kio_smb_file.cpp:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Huts egin du \"%1\" muntatze-puntua desmuntatzean.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..62bdd71 --- /dev/null +++ b/po/eu/kio5_thumbnail.po @@ -0,0 +1,88 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ezin da sortu direktoriorako koadro txikirik." + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Ez da pluginik adierazi." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ezin da kargatu ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ezin da koadro txikirik sortu honentzat: %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Huts egin du koadro txiki bat sortzean." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Ezin izan da idatzi irudia." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Huts egin du %1 memoria partekatuko segmentuari eranstean" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Irudia handiegia da memoria partekatuko segmentuarentzat" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Biratu irudia automatikoki" + +#~ 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..3e75a9e --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "پخش &خودکار" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "شروع پخش" + +#: mediacontrols_p.h:44 +#, 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..d3f0037 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"احتمالاً به علت قالب پرونده پشتیبانی‌نشده، نتوانست پرونده را باز کند.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..510ad37 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "ریشه" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "مکان‌ها" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "درخواست نادرست: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "هنوز هیچ چوب‌الفی برای نمایش موجود نیست." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..8f68abc --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "اتصال..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "آغاز قرارداد..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "ورود محلی" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "احراز هویت ssh" + +#: fish.cpp:759 +#, 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..57824e6 --- /dev/null +++ b/po/fa/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..128fadd --- /dev/null +++ b/po/fa/kio5_man.po @@ -0,0 +1,251 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "پرونده‌های سرآیند" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "پرونده‌های سرآیند (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "فرمانهای کاربر" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "فرمانهای کاربر (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "فراخوانیهای سیستم" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "زیرروالها" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "پیمانه‌های پرل" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "توابع شبکه" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "دستگاهها" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "قالب پرونده‌ها" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "بازیها" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "متفرقه" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "سرپرست سیستم" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "هسته" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "مستندات محلی" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "جدید" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "نمایه راهنمای یونیکس" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "بخش‌ %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "نمایه برای بخش %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "نمایه راهنمای یونیکس" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "ایجاد نمایه" + +#: kio_man.cpp:1389 +#, 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 %1 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..b458802 --- /dev/null +++ b/po/fa/kio5_nfs.po @@ -0,0 +1,67 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "نام پرونده بسیار طولانی" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "فراتر از سهمیه دیسک" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "روی دستگاه، فضایی باقی نمانده است" + +#~ msgid "Read only file system" +#~ 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..1bef64c --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..ded50d0 --- /dev/null +++ b/po/fa/kio5_sftp.po @@ -0,0 +1,390 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "نام کاربر یا اسم رمز نادرست" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "نتوانست callbackها را اختصاص دهد" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "نتوانست طول واقعه نگاری را تنظیم کند." + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "نتوانست طول واقعه نگاری را تنظیم کند." + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "نتوانست callbackها را اختصاص دهد" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "ورود SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "از جای خالی نام کاربری برای پاسخ به این سوال استفاده کنید." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "لطفاً نام کاربر و اسم رمز خود را وارد کنید." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "پایگاه:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "نتوانست این پیوند را بخواند: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "نتوانست نشست SSH جدیدی ایجاد کند." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "نتوانست timeout را تنظیم کند." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "نتوانست درگاه را تنظیم کند." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "نتوانست فشرده‌سازی را تنظیم کند." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "نتوانست میزبان را تنظیم کند." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "نتوانست درگاه را تنظیم کند." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "نتوانست نام کاربری را تنظیم کند." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "نتوانست پرونده‌ی تنظیمات را تجزیه و تحلیل کند." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "باز کردن اتصال SFTP به میزبان %1:%2" + +#: kio_sftp.cpp:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "نتوانست نام کاربری را تنظیم کند." + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "اخطار: هویت میزبان را نمی‌توان وارسی کرد." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "خرابی در احراز هویت." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "لطفاً، نام کاربر و اسم رمز خود را وارد کنید." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "نام کاربر یا اسم رمز نادرست" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "نتوانست نشست SFTP جدیدی را شروع کند." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "با موفقیت به %1 متصل شد" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"نتوانست مجوزها را برای\n" +"%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..c59fbcf --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"نوع پرونده ناشناخته، نه فهرست راهنما و نه پرونده." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "بدون رسانه برای دستگاه %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "نتوانست به میزبان %1 متصل شود" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "خطا هنگام اتصال به کارساز پاسخگوی %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "مشترک را نمی‌توان در کارساز داده شده یافت" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "توصیفگر پرونده BAD" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient برای ایجاد متن خراب شد" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"خرابی در پیاده کردن نقطه سوار »%1«.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..e07a14f --- /dev/null +++ b/po/fa/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "ریزنقش را برای پوشه نمیتوان ایجاد کرد" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "وصله‌ای مشخص نشد." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 را نمی‌توان بارگذاری کرد." + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "ریزنقش را برای %1 نمی‌توان ایجاد کرد." + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "خرابی در ایجاد یک ریزنقش." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "نتوانست تصویر را بنویسد." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "خرابی در پیوست قطعه حافظه مشترک %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "تصویر برای قطعه حافظه مشترک بسیار بزرگ است" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..bc23950 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Soita automaattisesti" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "aloita soitto" + +#: mediacontrols_p.h:44 +#, 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..f9b6a64 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktiviteetit" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Ladataan…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktiviteettienhallinta ei ole käynnissä" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Liitä nykyiseen aktiviteettiin" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Poista nykyisestä aktiviteetista" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Liitä aktiviteettiin:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Poista aktiviteetistä:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktiviteetti" + +#: KioActivities.cpp:223 +#, 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..7b7c157 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..df72bfe --- /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, 2020. +# 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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2020-12-21 16: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 20.04.2\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Juuri" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Sijainnit" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Kirjanmerkkiasetuksia ei löytynyt" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Kirjanmerkkimuokkainta ei löytynyt" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Virheellinen pyyntö : %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Kirjanmerkkejä ei ole saatavilla." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..dbac0fe --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Yhdistetään…" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Alustetaan yhteyskäytäntöä…" + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Paikallinen kirjautuminen" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-tunnistautuminen" + +#: fish.cpp:759 +#, 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..ee37bdb --- /dev/null +++ b/po/fi/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. +# Tommi Nieminen , 2009, 2021. +# +# 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: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-04-08 14:36+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:13+0000\n" +"X-Generator: Lokalize 20.04.2\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Palvelun ajamiseen vaadittavia tiedostoja ei löytynyt:%1
        Tarkista " +"ohjelman asennus" diff --git a/po/fi/kio5_man.po b/po/fi/kio5_man.po new file mode 100644 index 0000000..1776190 --- /dev/null +++ b/po/fi/kio5_man.po @@ -0,0 +1,223 @@ +# 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, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-10-11 14:53+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:13+0000\n" +"X-Generator: Lokalize 20.04.2\n" + +#: kio_man.cpp:458 +#, 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-sivua %1 ei löytynyt.Tarkista, ettei " +"sivun nimeä ole kirjoitettu väärin. Huomaa, että man-sivujen nimissä " +"erotetaan pien- ja suuraakkoset.Jos nimi on oikein, man-sivujen " +"hakupolkua täytyy ehkä kasvattaa joko MANPATH-" +"ympäristömuuttujalla tai /etc-kansiossa olevalla " +"asetustiedostolla." + +#: kio_man.cpp:574 +#, kde-kuit-format +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öytynyt." + +#: kio_man.cpp:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "man-sivua %1 ei voi lukea." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "man-sivua %1 ei voida muuntaa." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "man-sivukatselimen virhe" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Löytyi useita sopivia man-sivuja:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Useita man-sivuja" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Otsaketiedostot" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Otsaketiedostot (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Käyttäjän komennot" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Käyttäjän komennot (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Järjestelmäkutsut" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Aliohjelmat" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-moduulit" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Verkkofunktiot" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Laitteet" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Tiedostomuodot" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Pelit" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Sekalaiset" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Järjestelmän ylläpito" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Ydin" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Paikallinen dokumentaatio" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Uusi" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "man-sivujen päähakemisto" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Osio %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Hakemisto osiolle %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "man-sivuhakemisto" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Luodaan hakemistoa" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Järjestelmä ei löytynyt %1-ohjelmaa. Asenna se, jos " +"tarpeen, ja varmista että se löytyy PATH-polun varrelta." + +#~ 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..c365564 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/fi/kio5_nfs.po new file mode 100644 index 0000000..223edf9 --- /dev/null +++ b/po/fi/kio5_nfs.po @@ -0,0 +1,78 @@ +# 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. +# Tommi Nieminen , 2021. +# +# 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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-04-08 14:36+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:13+0000\n" +"X-Generator: Lokalize 20.04.2\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Ei löydy NFS-versiota, jota ”%1” tukisi" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "NFS-yhteyskäytäntö vaatii palvelimen konenimen." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Yhteyskäytännön alustaminen epäonnistui" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC-virhe %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Liian pitkä tiedostonimi" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Sallittu levytila on täynnä." + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS-virhe %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Tuntematon kohde" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: NFS-versiota ei tueta" + +#~ msgid "No space left on device" +#~ msgstr "Kiintolevytila on täynnä." + +#~ msgid "Read only file system" +#~ msgstr "Tiedostojärjestelmää voidaan vain lukea." + +#~ msgid "Failed to mount %1" +#~ msgstr "Kansioiden %1 liittäminen epäonnistui" + +#~ 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..3bcbecd --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..3c32571 --- /dev/null +++ b/po/fi/kio5_sftp.po @@ -0,0 +1,456 @@ +# 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, 2022. +# 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: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2022-01-04 20:56+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 20.04.2\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Virheellinen salasana" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Ei voitu varata callback-funktioita" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Lokin tarkkuutta ei voitu asettaa." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Lokin userdata-arvoa ei voitu asettaa." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Lokin callback-funktiota ei voitu asettaa." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-kirjautuminen" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Vastaa kysymykseen käyttäjätunnuskentän arvolla." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "Anna salasanasi." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Palvelin:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Linkkiä ei voitu lukea: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "SSH-istuntoa ei voitu luoda." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Aikakatkaisua ei voitu asettaa." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Naglen algoritmia ei voitu poistaa käytöstä." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Pakkausta ei voitu asettaa." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Palvelinta ei voitu asettaa." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Porttia ei voitu asettaa." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Käyttäjätunnusta ei voitu asettaa." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Asetustiedostoa ei voitu jäsentää." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Avataan SFTP-yhteyttä palvelimeen %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Palvelimen julkisen avaimen tyyppinimeä ei saatu" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Tiivistettä ei voitu luoda palvelimen julkisesta avaimesta" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Palvelimen julkisen avaimen sormenjäljen luominen epäonnistui" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Varoitus: Ei voitu varmistaa palvelimen identiteettiä." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Tunnistus epäonnistui." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Anna käyttäjätunnuksesi ja salasanasi." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Virheellinen käyttäjätunnus tai salasana" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP-istuntoa ei voitu alustaa." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Onnistunut yhteys palvelimelle %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Virheellinen sftp-konteksti" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ei voitu muuttaa oikeuksia kohteelle\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..22dd0ff --- /dev/null +++ b/po/fi/kio5_smb.po @@ -0,0 +1,203 @@ +# 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, 2021. +# +# 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: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-01-11 20:11+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 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 "" +"SMB-jakoihin tunnistautumiseen on erilaisia valitsimia.tunnus: Kotiverkkoon kirjautumiseksi " +"riittää palvelimen käyttäjätunnustunnus@alue.fi: Nykyiset yritystunnukset muodostetaan sähköpostiosoitteiden " +"tapaanALUE\\tunnus: Vanhat " +"yritystunnukset ja työryhmät (ennen Windows 2000:ta) vaativat etuliitteeksi " +"NetBIOS-aluenimennimetön: Nimetöntä " +"kirjautumista voi yrittää tyhjällä käyttäjätunnuksella ja salasanalla. " +"Palvelinasetukset saattavat kuitenkin vaatia ei-tyhjän tunnuksen" + +#: 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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Laitteessa %1 ei ole mediaa" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 -palvelimelle ei voitu yhdistää" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Jakoa ei löytynyt annetulta palvelimelta" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Virheellinen tiedostokuvaaja" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Kirjaston libsmbclient asiayhteyden luonti epäonnistui" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Liitospisteen \"%1\" irrottaminen epäonnistui.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..131be76 --- /dev/null +++ b/po/fi/kio5_thumbnail.po @@ -0,0 +1,89 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kansiolle ei voitu luoda pienoiskuvaa" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Liitännäistä ei ole määritelty." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ei voitu ladata ThumbCreatoria-liitännäistä %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ei voida luoda pienoiskuvaa kohteelle %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Pienoiskuvakkeen luonti epäonnistui." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Ei voida tallentaa kuvaa." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Jaetun muistin segmenttiä %1 ei voitu liittää" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Kuva on liian iso jaetun muistin segmentille" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Kierrä kuva automaattisesti" + +#~ 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/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..3b22c86 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Jouer &automatiquement" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "démarrer la lecture" + +#: mediacontrols_p.h:44 +#, 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..cbcd1cb --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Activités" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Chargement…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, 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:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Lier à l'activité en cours" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Se détacher de l'activité en cours" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Lier à:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Se déconnecter de;" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Activité" + +#: KioActivities.cpp:223 +#, 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..afa3fc4 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..73a46fd --- /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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-01-12 13:46+0100\n" +"Last-Translator: Xavier Besnard \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 20.12.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Racine" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Emplacements" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Impossible de trouver la configuration des préférés" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Impossible de trouver l'éditeur de préférés" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Requête incorrecte : %1" + +#: kio_bookmarks_html.cpp:85 +#, 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:124 +#, 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:133 +#, 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..5aa67f5 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Connexion en cours..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Initialisation du protocole..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Connexion locale" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Authentification SSH" + +#: fish.cpp:759 +#, 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..eb90a8e --- /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. +# Xavier Besnard , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-21 17:14+0100\n" +"Last-Translator: Xavier Besnard \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" +"X-Generator: Lokalize 20.12.2\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Impossible de trouver les fichiers nécessaires à l'exécution de ce service : " +"
        %1
        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..e749314 --- /dev/null +++ b/po/fr/kio5_man.po @@ -0,0 +1,233 @@ +# 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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-12-27 22:04+0100\n" +"Last-Translator: Xavier Besnard \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 21.12.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "La page de manuel %1 n'a pu être lue." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "La page de manuel %1 n'a pu être convertie." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Erreur de l'afficheur de pages de manuel" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Il y a plus d'une page qui corresponde :" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Multiples pages de manuel" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Fichiers d'en-tête" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Fichiers d'en-tête (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Commandes utilisateur" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Commandes utilisateur (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Appels système" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Sous-programmes" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Modules Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Fonctionnalités réseau" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Périphériques" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formats de fichiers" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Jeux" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Divers" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administration système" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Noyau" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentation locale" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nouveau" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Index principal de pages de manuel" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Section %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index pour la section « %1 » : %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Index de pages de manuel" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Génération de l'index" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 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..535fa77 --- /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, 2022. +# 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: 2021-05-30 00:17+0000\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 21.12.1\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_mtp.cpp:217 +#, 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:520 +#, 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_nfs.po b/po/fr/kio5_nfs.po new file mode 100644 index 0000000..13d27dc --- /dev/null +++ b/po/fr/kio5_nfs.po @@ -0,0 +1,82 @@ +# 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. +# Xavier Besnard , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-19 21:29+0100\n" +"Last-Translator: Xavier Besnard \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 20.12.2\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" +"Impossible de trouver une version « NFS » que l'hôte « %1 » prend en charge." + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Le protocole « NFS » nécessite un nom de serveur hôte." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Échec lors de l'initialisation du protocole" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Erreur « RPC » %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Nom de fichier trop long" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Le quota sur le disque est dépassé." + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Erreur NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Cible inconnue" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Version NFS non prise en charge" + +#~ msgid "No space left on device" +#~ msgstr "Aucun espace libre disponible sur le périphérique." + +#~ msgid "Read only file system" +#~ msgstr "Système de fichiers en lecture seule." + +#~ msgid "Failed to mount %1" +#~ msgstr "Impossible de monter %1" + +#~ 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..ce8bd09 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..3b3767b --- /dev/null +++ b/po/fr/kio5_sftp.po @@ -0,0 +1,480 @@ +# 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. +# Xavier Besnard , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-16 11:26+0200\n" +"Last-Translator: Xavier Besnard \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 21.08.1\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Mot de passe non valable ou incorrect" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Impossible d'allouer les retours d'appels" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Impossible de définir le niveau de verbosité du journal." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Impossible d'activer les messages sur les données d'utilisateur." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Impossible d'activer les messages sur les retours d'appels" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Compte « SFTP »" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Veuillez saisir votre mot de passe." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Site :" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Impossible de lire le lien : %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Impossible de créer une nouvelle session SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Impossible de définir un délai maximum." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Impossible de désactiver l'algorithme de Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Impossible de définir la compression." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Impossible de définir l'hôte." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Impossible de définir le port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Impossible de définir le nom d'utilisateur." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Impossible de lire le fichier de configuration." + +#: kio_sftp.cpp:647 +#, 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:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Impossible d'obtenir le nom du type de clé publique du serveur" + +#: kio_sftp.cpp:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Avertissement : impossible de vérifier l'identité de l'hôte." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Échec de l'authentification." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Veuillez saisir votre nom d'utilisateur et votre mot de passe." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nom d'utilisateur ou mot de passe incorrect" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Impossible d'initialiser la session SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Connexion à « %1 » réussie" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexte sftp non valable" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Impossible de modifier les permissions de\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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 ?" + +#~ 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..78a68ea --- /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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-01-12 13:53+0100\n" +"Last-Translator: Xavier Besnard \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 20.12.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 "" +"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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Aucun média dans le périphérique « %1 »." + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Impossible de se connecter à l'hôte « %1 »" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Mauvais descripteur de fichier" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Échec du démontage de « %1 ».\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..221820a --- /dev/null +++ b/po/fr/kio5_thumbnail.po @@ -0,0 +1,88 @@ +# translation of kio_thumbnail.po to Français +# translation of kio_thumbnail.po to +# +# Nicolas Ternisien , 2005, 2007. +# xavier , 2013. +# Xavier Besnard , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2021-01-12 13:52+0100\n" +"Last-Translator: Xavier Besnard \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 20.12.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Impossible de créer la vignette du dossier" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Aucun module externe spécifié." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Impossible de charger « ThumbCreator » %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Impossible de créer la vignette pour %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Impossible de créer une vignette." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Impossible d'écrire l'image." + +#: thumbnail.cpp:316 +#, 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:324 +#, 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 "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Faire pivoter l'image automatiquement" + +#~ 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..8aa7a4f --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Seinn go h&uathoibríoch" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "tosaigh athsheinm" + +#: mediacontrols_p.h:44 +#, 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..cfb50f3 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activities" +msgstr "Gníomhartha" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, 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:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Nasc leis an ngníomhaíocht reatha" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Dínasc ón ghníomhaíocht reatha" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Nasc le:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Dínasc ó:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activity" +msgstr "Gníomhartha" + +#: KioActivities.cpp:223 +#, 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..2ee985d --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..b968895 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Fréamh" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Áiteanna" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Iarratas mícheart: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Níl aon leabharmharcanna le taispeáint fós." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..7caff76 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Ag ceangal..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Prótacal á thúsú..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Logáil Isteach Logánta" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Fíordheimhniú SSH" + +#: fish.cpp:759 +#, 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..87d4165 --- /dev/null +++ b/po/ga/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..e3d4c90 --- /dev/null +++ b/po/ga/kio5_man.po @@ -0,0 +1,235 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Comhaid cheanntáisc" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Comhaid cheanntáisc (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Orduithe Úsáideora" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Orduithe Úsáideora (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Glaonna ar an chóras" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Foghnáthaimh" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Modúil Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Feidhmeanna Líonra" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Gléasanna" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formáidí Comhaid" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Cluichí" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Rudaí éagsúla" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Riarachán Córais" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Eithne" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Doiciméadú Logánta" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nua" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Innéacs Lámhleabhair UNIX" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Rannán %1" + +#: kio_man.cpp:1103 +#, 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:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Innéacs Lámhleabhair UNIX" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Innéacs á Ghiniúint" + +#: kio_man.cpp:1389 +#, 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 %1 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..0679db0 --- /dev/null +++ b/po/ga/kio5_nfs.po @@ -0,0 +1,68 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Ainm comhaid rófhada" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Sáraíodh an cuóta diosca" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Níl aon spás fágtha ar an ghléas" + +#~ msgid "Read only file system" +#~ msgstr "Córas comhaid inléite amháin" + +#~ 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..da66901 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..d9017f4 --- /dev/null +++ b/po/ga/kio5_sftp.po @@ -0,0 +1,472 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frása faire mícheart nó neamhbhailí" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Níorbh fhéidir aisghlaonna a dháileadh." + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Níorbh fhéidir foclaíocht an logchomhaid a shocrú." + +#: kio_sftp.cpp:276 +#, 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:281 +#, 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:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Logáil Isteach SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Tabhair uait d'fhocal faire." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Suíomh:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Níorbh fhéidir an nasc a léamh: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Níorbh fhéidir seisiún nua SSH a chruthú." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Níorbh fhéidir teorainn ama a shocrú." + +#: kio_sftp.cpp:592 +#, 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:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Níorbh fhéidir an comhbhrú a shocrú." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Níorbh fhéidir óstríomhaire a shocrú." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Níorbh fhéidir an port a shocrú." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Níorbh fhéidir ainm úsáideora a shocrú." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Níorbh fhéidir an comhad cumraíochta a pharsáil." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Rabhadh: Ní féidir aitheantas an óstríomhaire a fhíorú." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Theip ar fhíordheimhniú." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Tabhair uait ainm úsáideora agus focal faire le do thoil." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Ainm úsáideora mícheart nó focal faire" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Níorbh fhéidir an seisiún SFTP a thúsú." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "D'éirigh le ceangal le %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Níorbh fhéidir ceadanna a athrú le haghaidh\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..4cc8b2e --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Níl meáin sa ghléas le haghaidh %1" + +#: kio_smb_browse.cpp:292 +#, 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:304 +#, 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:310 +#, 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:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Drochthuairisceoir comhaid" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Theip ar phointe feistithe \"%1\" a dhífheistiú.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..9ef654c --- /dev/null +++ b/po/ga/kio5_thumbnail.po @@ -0,0 +1,83 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ní féidir mionsamhail a chruthú le haghaidh na comhadlainne" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Níor sonraíodh breiseán." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ní féidir ThumbCreator %1 a luchtú" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ní féidir mionsamhail a chruthú le haghaidh %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Theip ar chruthú na mionsamhla." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Níorbh fhéidir an íomhá a scríobh." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Theip ar cheangal le deighleán comhchuimhne %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Tá an íomhá rómhór don deighleán comhchuimhne" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rothlaigh an íomhá go huathoibríoch" + +#~ 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..9a93817 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Reproducir &automaticamente" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "comezar a reprodución" + +#: mediacontrols_p.h:44 +#, 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..66bc3eb --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Actividades" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Cargando…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "O xestor de actividades non se está a executar." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Ligar á actividade actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Desligar da actividade actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Ligar a:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Desligar de:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Actividade" + +#: KioActivities.cpp:223 +#, 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..8c6e692 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..c5640cb --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Raíz" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Lugares" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Pedido incorrecto: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Aínda non hai ningún marcador que mostrar." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..461fd17 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Estase a conectar…" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Estase a iniciar o protocolo…" + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Acceso local" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticación SSH" + +#: fish.cpp:759 +#, 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..cc48dea --- /dev/null +++ b/po/gl/kio5_info.po @@ -0,0 +1,35 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..66257a8 --- /dev/null +++ b/po/gl/kio5_man.po @@ -0,0 +1,253 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, 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:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Ficheiros de cabeceira" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Ficheiros de cabeceira (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Ordes de usuario" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Ordes de usuario (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Chamadas ao sistema" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Sub-rutinas" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Módulos de Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funcións de rede" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formatos de ficheiro" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Xogos" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversos" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administración do sistema" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentación local" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Índice do manual de Unix" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sección %1" + +#: kio_man.cpp:1103 +#, 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:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Índice do manual de Unix" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Estase a xerar o índice" + +#: kio_man.cpp:1389 +#, 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 %1 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..5e3e8fa --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/gl/kio5_nfs.po new file mode 100644 index 0000000..ec43ea8 --- /dev/null +++ b/po/gl/kio5_nfs.po @@ -0,0 +1,79 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, fuzzy, kde-format +#| msgid "RPC error %1" +msgid "RPC error %1, %2" +msgstr "Erro %1 de RPC" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "O nome do ficheiro é longo de máis" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Excedeuse a cota do disco" + +#: kio_nfs.cpp:917 +#, fuzzy, kde-format +#| msgid "NFS error %1 - %2" +msgid "NFS error %1, %2" +msgstr "Erro %1 de NFS: %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Destino descoñecido" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Esta versión de NFS non é compatíbel." + +#~ msgid "No space left on device" +#~ msgstr "Non queda espazo no dispositivo" + +#~ msgid "Read only file system" +#~ msgstr "Sistema de ficheiros de só lectura" + +#~ msgid "Failed to mount %1" +#~ msgstr "Non se puido montar %1" + +#~ 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..3a58a36 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..5e76c3a --- /dev/null +++ b/po/gl/kio5_sftp.po @@ -0,0 +1,289 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "A frase de paso ou é incorrecta ou incorrecta" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Non se puido asignar memoria ás chamadas" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Non se puido estabelecer o nivel de detalle do rexistro." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Non se puido estabelecer o rexistro dos datos do usuario." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Non se puido estabelecer a resposta do rexistro." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Acceso por SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Insira o seu contrasinal." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Sitio:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Non se puido ler a ligazón: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Non se puido crear unha sesión de SSH nova." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Non se puido definir o tempo de espera." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Non se puido desactivar o algoritmo de Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Non se puido definir a compresión." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Non se puido estabelecer o servidor." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Non se puido estabelecer o porto." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Non se puido estabelecer o nome de usuario." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Non se puido procesar o ficheiro de configuración." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Aviso: Non se pode verificar a identidade do servidor." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Fallou a autenticación." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Insira o seu nome de usuario e o contrasinal." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "O nome de usuario ou o contrasinal é incorrecto" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Non se puido inicializar a sesión SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Conectou con %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexto de SFTP incorrecto" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Non se puideron cambiar os permisos de\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..0c0c4e6 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Non hai ningún medio no dispositivo para %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Non se puido conectar co servidor para %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descritor de ficheiro incorrecto" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient non puido crear o contexto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Fallou a desmontaxe do punto «%1».\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..5214d72 --- /dev/null +++ b/po/gl/kio5_thumbnail.po @@ -0,0 +1,88 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Non se pode crear a miniatura do directorio" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Non se especificou un complemento." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Non se pode cargar ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Non se pode crear a miniatura de %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Non se puido crear unha miniatura." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Non se puido escribir a imaxe." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Non se puido conectar ao segmento de memoria compartida %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "A imaxe é demasiado grande para o segmento de memoria compartida" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rotar automaticamente a imaxe" + +#~ 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..055bfa7 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "נגן באופן או&טומטי" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "התחל השמעה" + +#: mediacontrols_p.h:44 +#, 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..a3f1ef5 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, fuzzy, kde-format +msgid "Activities" +msgstr "בטל נעילת הפעילות" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +msgid "The Activity Manager is not running" +msgstr "מנהל פעילויות לא פועל כהלכה." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, fuzzy, kde-format +msgid "Link to the current activity" +msgstr "בטל את הגנת הפעילות" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, fuzzy, kde-format +msgid "Unlink from the current activity" +msgstr "בטל את הגנת הפעילות" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, fuzzy, kde-format +msgid "Activity" +msgstr "בטל נעילת הפעילות" + +#: KioActivities.cpp:223 +#, 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..1cbdd0d --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"לא יכול לפתוח את הקובץ. כנראה בגלל פורמט קובץ שאינו נתמך.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..75a1c8a --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "שורש" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "מקומות" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "בקשה לא תקינה: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "אין עוד סימניות לתצוגה" + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..ac856ee --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "מתחבר..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "מאתחל את הפרוטוקול..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "כניסה מקומית" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "אימות SSH" + +#: fish.cpp:759 +#, 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..104b700 --- /dev/null +++ b/po/he/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. +# +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..5b3d198 --- /dev/null +++ b/po/he/kio5_man.po @@ -0,0 +1,240 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "קבצי כותרת" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "קבצי כותרת (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "פקודות משתמש" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "פקודות משתמש (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "קריאות מערכת" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "תת־שגרות" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "מודולים של Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "פונקציות רשת" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "התקנים" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "תבניות קבצים" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "משחקים" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "שונות" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "ניהול המערכת" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "גרעין" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "תיעוד מקומי" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "חדש" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "אינדקס דפי ההוראות של Unix" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "פרק %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "תוכן העניינים לפרק %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "אינדקס דפי ההוראות של Unix" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "יוצר אינדקס" + +#: kio_man.cpp:1389 +#, 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 %1 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..d3565ad --- /dev/null +++ b/po/he/kio5_nfs.po @@ -0,0 +1,73 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "שם הקובץ ארוך מדיי" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "חריגה ממכסת הדיסק" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "לא נשאר מקום על ההתקן." + +#~ msgid "Read only file system" +#~ msgstr "מערכת קבצים לקריאה בלבד" diff --git a/po/he/kio5_recentdocuments.po b/po/he/kio5_recentdocuments.po new file mode 100644 index 0000000..93c59a2 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..410630c --- /dev/null +++ b/po/he/kio5_sftp.po @@ -0,0 +1,306 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "שם ססמה שגויה או לא תקינה" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "אין אפשרות להקצות callbacks" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "אין אפשרות לקבוע את דרגת הרישום." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "" + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +msgid "Could not set log callback." +msgstr "אין אפשרות להקצות callbacks" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "כניסה למערכת SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "השתמש בשם השדה המשתמש בכדי לענות על השאלה הזאת." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "הזן את הססמה שלך." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "אתר:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "אין אפשרות לקרוא את הקישור: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "אין אפשרות לפתוח הפעלה של SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "אין אפשרות להקצות זמן תפוגה." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "אין אפשרות לקבוע את מספר היציאה." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "אין אפשרות לקבוע את הכיווץ." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "אין אפשרות לקבוע את המארח." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "אין אפשרות לקבוע את מספר היציאה." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "אין אפשרות לקבוע את שם המשתמש." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "אין אפשרות לפענח את קובץ התצורה" + +#: kio_sftp.cpp:647 +#, fuzzy, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "פותח חיבור SFTP אל המארח %1:%2" + +#: kio_sftp.cpp:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "אין אפשרות לקבוע את שם המשתמש." + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "אזהרה: אין אפשרות לוודא את זהות המארח." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "האימות נכשל." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "האימות נכשל. השרת לא שלח שום שיטה לאימות" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "הזן את שם המשתמש והססמה שלך." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "שם משתמש או ססמה שגויים" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "אין אפשרות לבקש את תת מערכת ה־SFTP. אנא וודא ש־SFTP מופעל בשרת." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "אין אפשרות להפעיל את הפעלת ה־SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "ההתחברות אל %1 הצליחה" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"אין אפשרות לשנות הגדרות עבור\n" +"%1" + +#~ 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 " + +#~ 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" + +#~ 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" +#~ "האם אתה בטוח שאתה רוצה להמשיך להתחבר?" diff --git a/po/he/kio5_smb.po b/po/he/kio5_smb.po new file mode 100644 index 0000000..b654c5f --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"סוג קובץ לא ידוע, אינו קובץ או תיקייה." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "אין מדיה בכונן בשביל %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "אין אפשרות להתחבר לשרת עבור %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "שגיאה במהלך התחברות לשרת האחראי ל־%1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "אין אפשרות למצוא את השיתוף בשרת הנתון" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "מתאר קובץ פגום" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "הספרייה libsmbclient נכשלה ביצירת הקשר" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"הפסקת עגינה של נקודת העגינה \"%1\" נכשלה. \n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..a61364c --- /dev/null +++ b/po/he/kio5_thumbnail.po @@ -0,0 +1,73 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "אין אפשרות ליצור ספרייה עבור הדוגמיות" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "לא צוין תוסף." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "אין אפשרות לטעון יוצר־דוגמיות %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "אין אפשרות ליצור דוגמית עבור %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "שגיאה ביצירת דוגמית." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "אין אפשרות לכתוב תמונה." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "נכשל צירוף למקטע זיכרון משותף %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "תמונה גדולה מדי עבור מקטע הזיכרון המשותף" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "סובב את התמונה באופן אוטומטי" diff --git a/po/hi/kfileaudiopreview5.po b/po/hi/kfileaudiopreview5.po new file mode 100644 index 0000000..9115ba2 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "स्वचलित बजाएँ (&a)" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "" + +#: mediacontrols_p.h:44 +#, 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..ae3e7b2 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "केडीई क्रियाएँ प्रबंधक" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:223 +#, 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..285ed90 --- /dev/null +++ b/po/hi/kio5_archive.po @@ -0,0 +1,39 @@ +# 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. +# Raghavendra Kamath , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-07 00:17+0000\n" +"PO-Revision-Date: 2021-06-29 20:38+0530\n" +"Last-Translator: Raghavendra Kamath \n" +"Language-Team: kde-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 21.04.2\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_archivebase.cpp:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"फ़ाइल को खोल नहीं सकता. संभवतः फ़ाइल असमर्थित फ़ाइल फ़ॉर्मेट में है.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..34144d3 --- /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. +# +# Raghavendra Kamath , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-08-21 16:15+0530\n" +"Last-Translator: Raghavendra Kamath \n" +"Language-Team: kde-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 21.08.0\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "रूट" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "स्थान" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "गलत अनुरोध : %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "दिखाने को कोई पसंदीदा नहीं हैं." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..baae125 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "जुड़ रहा है..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "प्रोटोकॉल प्रारंभ किया जा रहा है..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "स्थानीय लॉगइन" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "एसएसएच अनुमोदन" + +#: fish.cpp:759 +#, 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..bf65818 --- /dev/null +++ b/po/hi/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..444169a --- /dev/null +++ b/po/hi/kio5_man.po @@ -0,0 +1,220 @@ +# 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. +# Raghavendra Kamath , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-08-21 16:25+0530\n" +"Last-Translator: Raghavendra Kamath \n" +"Language-Team: kde-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 21.08.0\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "उपयोक्ता कमांड" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "उपयोक्ता कमांड" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "सिस्टम काल्स" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "सबरूटीन्स" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "पर्ल मॉड्यूल्स" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "नियंत्रक फंक्शन्स" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "औज़ार" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "फ़ाइल फार्मेट्स" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "खेल" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "विविध" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "तंत्र प्रशासन" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "कर्नेल" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "स्थानीय दस्तावेज़ीकरण" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "नया" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "यूनिक्स मेनुअल निर्देशिका" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "खण्ड %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "खण्ड %1 के लिए अनुक्रमणिका: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "यूनिक्स मेनुअल निर्देशिका" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "निर्देशिका बनाया जा रहा है" + +#: kio_man.cpp:1389 +#, 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 %1 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..8d29191 --- /dev/null +++ b/po/hi/kio5_nfs.po @@ -0,0 +1,68 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "फ़ाइलनाम अत्यधिक लम्बा है" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "डिस्क नियतांश सीमा से बाहर हो चुका है" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "उपकरण में कोई जगह नहीं बची" + +#~ msgid "Read only file system" +#~ 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..45973db --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..ced7b5e --- /dev/null +++ b/po/hi/kio5_sftp.po @@ -0,0 +1,304 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "गलत उपयोक्ता-नाम या पासवर्ड " + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "कालबैक आवंटित नहीं किया जा सकता." + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "लॉग वर्बोसिटी सेट नहीं कर सका।" + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "लॉग वर्बोसिटी सेट नहीं कर सका।" + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "कालबैक आवंटित नहीं किया जा सकता." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "एसएफटीपी लॉगइन" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "इस सवाल का जवाब देने के लिए उपयोगकर्ता नाम इनपुट क्षेत्र का उपयोग करें।" + +#: kio_sftp.cpp:380 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "कृपया अपना उपयोक्ता-नाम तथा पासवर्ड भरें." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "साइटः" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "लिंक: %1 पढ़ नहीं सका" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "नया एसएसएच सत्र तैयार नहीं कर सका." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "समयअवधि नही सेट पर पाए" + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "पोर्ट नहीं सेट कर पाए." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "सपीडन नहीं सेट कर पाए" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "होस्ट नहीं सेट कर पाए" + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "पोर्ट नहीं सेट कर पाए." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "उपयोक्तानाम रहीं सेट कर पाए." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "कॉन्फ़िग फ़ाइल को पार्स नहीं कर सकता।" + +#: kio_sftp.cpp:647 +#, 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:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "उपयोक्तानाम रहीं सेट कर पाए." + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "चेतावनीः होस्ट का परिचय सत्यापित नहीं कर सका." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "प्रमाणीकरण असफल" + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "कृपया अपना उपयोक्ता-नाम तथा पासवर्ड भरें." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "गलत उपयोक्ता-नाम या पासवर्ड " + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP उपतंत्र अनुरोध करने में असमर्थ। सुनिश्चित करें कि SFTP सर्वर पर सक्षम किया गया है।" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "एसएफटीपी सत्र प्रारंभ नहीं कर सका।" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 से सफलता पूर्वक जुड़ा" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "%1 के लिए अनुमति नहीं बदल पाए" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "क्या आप निश्चित रूप से कनेक्ट करना जारी रखना चाहते हैं?" + +#~ 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..d9c89d2 --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"अज्ञात फ़ाइल क़िस्म, न तो डिरेक्ट्री न फ़ाइल." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 के लिए उपकरण में कोई मीडिया नहीं " + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 के लिए होस्ट से कनेक्ट नहीं हो पाया" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 के लिए जवाबदेह सर्वर से जुड़ने में त्रुटि" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "दिए गए सर्वर पर साझेदारी नहीं मिला" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "खराब फ़ाइल डिस्क्रिप्टर" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "संदर्भ बनाने में लिबएसएमबीक्लाएंट असफल" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"माउन्ट पाइन्ट \"%1\" को अनमाउन्ट करने में असफल.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..49c63c9 --- /dev/null +++ b/po/hi/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# 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. +# Raghavendra Kamath , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2021-08-22 11:29+0530\n" +"Last-Translator: Raghavendra Kamath \n" +"Language-Team: kde-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 21.08.0\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "डॉरेक्ट्री के लिए लघुछवि बनाया नहीं जा सका" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "कोई प्लगइन उल्लेखित नहीं है." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "थम्बक्रिएटर %1 को लोड नहीं कर सका" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 के लिए लघुछवि बनाया नहीं जा सकता" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "लघुछवि बनाने में असफल" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "चित्र को लिखा नहीं जा सका." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "साझा मेमोरी खंड %1 में जुड़ने में असफल" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "साझा मेमोरी खंड के लिए यह चित्र बहुत बड़ा है" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..107c844 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Automatski pokreni" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "Pokreni reprodukciju" + +#: mediacontrols_p.h:44 +#, 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..9c49f06 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "KDE-ov upravitelj aktivnosti" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:223 +#, 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..c4c433c --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..67d6bed --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Korijen" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Mjesta" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Pogrešan zahtjev: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Još nema knjiških oznaka za prikazati." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..e56b95a --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Povezivanje …" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicijalizacija protokola …" + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokalna prijava" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH autorizacija" + +#: fish.cpp:759 +#, 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..d29a9a2 --- /dev/null +++ b/po/hr/kio5_info.po @@ -0,0 +1,35 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..fe49d9b --- /dev/null +++ b/po/hr/kio5_man.po @@ -0,0 +1,237 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        KDE Man Viewer Error

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Korisničke naredbe" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Korisničke naredbe" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Sustavski pozivi" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Podrutine" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl moduli" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Mrežne funkcije" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Uređaji" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formati datoteka" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Igre" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Preostalo" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administriranje sustava" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Jezgra" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokalna dokumentacija" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Novi" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Indeks UNIX priručnika" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Poglavlje %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indeks poglavlja %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Indeks UNIX priručnika" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Pravim kazalo" + +#: kio_man.cpp:1389 +#, 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 %1 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..ff2ea91 --- /dev/null +++ b/po/hr/kio5_nfs.po @@ -0,0 +1,70 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Naziv datoteke je predug" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Kvota diska je nadmašena" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Na uređaju nema više slobodnog prostora" + +#~ msgid "Read only file system" +#~ msgstr "Datotečni sustav koji je samo za čitanje" + +#~ 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..e1c6fe0 --- /dev/null +++ b/po/hr/kio5_sftp.po @@ -0,0 +1,470 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Neispravno korisničko ime ili lozinka" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nije moguće rezervirati povratne pozive" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nije moguće postaviti opširnost dnevnika." + +#: kio_sftp.cpp:276 +#, 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:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Nije moguće rezervirati povratne pozive" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP prijavljivanje" + +#: kio_sftp.cpp:367 +#, 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:380 +#, 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:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "računalo:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Nije moguće pročitati link: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nije moguće stvoriti novu SSH sesiju." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nije moguće postaviti vremensko ograničenje." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Nije moguće postaviti port." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Nije moguće postaviti sabijanje." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Nije moguće postaviti poslužitelj." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Nije moguće postaviti port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "uNije moguće postaviti korisničko ime." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nije moguće obraditi konfiguracijsku datoteku." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Upozorenje: Ne mogu provjeriti indentitet računala!" + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Neuspjelo spajanje." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Molim unesite vaše korisničko ime i šifru." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Ne mogu pokrenuti SFTP sjednicu." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Uspješno uspostavljena veza sa %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nije moguće promijeniti dopuštenja za\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..e0b8044 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Nema medija u uređaju za %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nije se moguće spojiti na host za %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Neispravan opis datoteke" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "Biblioteka libsmbclient nije uspješno inicijalizirana." + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Demontiranje montažne točke \"%1\" neuspjelo.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..50f2575 --- /dev/null +++ b/po/hr/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ne mogu stvoriti sličicu za direktorij" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nije naveden priključak." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ne mogu učitati ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ne mogu stvoriti sličicu za %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Neuspjelo stvaranje sličice." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Ne mogu zapisati sliku." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Neuspjelo pridavanje dijeljenog memorijskog segmenta %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Slika je prevelika za dijeljeni memorijski segment" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Automatski zakreći sliku" + +#~ 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..a2bc476 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Automatikus lejátszás" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "lejátszás" + +#: mediacontrols_p.h:44 +#, 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..dbb63bc --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktivitások" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Betöltés…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Az aktivitáskezelő nem fut" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Összekapcsolás a jelenlegi aktivitással" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Szétbontás a jelenlegi aktivitásból" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Összekapcsolás ezzel:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Szétbontás innen:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktivitás" + +#: KioActivities.cpp:223 +#, 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..5d5fcff --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..2972a5c --- /dev/null +++ b/po/hu/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. +# +# Tamas Szanto , 2009. +# Kristof Kiszel , 2022. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.2\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-09 17:32+0100\n" +"Last-Translator: Kristof 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 21.07.70\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Helyek" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Nem található könyvjelző beállítás" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Nem található könyvjelzőszerkesztő" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Hibás kérés: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Nincs megjeleníthető könyvjelző." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..1989d0c --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Csatlakozás..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "A protokoll inicializálása..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Helyi bejelentkezés" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH hitelesítés" + +#: fish.cpp:759 +#, 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..f1713a9 --- /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. +# Kristof Kiszel , 2022. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.2\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2022-02-09 17:33+0100\n" +"Last-Translator: Kristof 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 21.07.70\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"A szolgáltatás futtatásához szükséges fájlok nem találhatók:
        " +"%1
        Ellenőrizze a szoftver telepítését." diff --git a/po/hu/kio5_man.po b/po/hu/kio5_man.po new file mode 100644 index 0000000..6a66e49 --- /dev/null +++ b/po/hu/kio5_man.po @@ -0,0 +1,218 @@ +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# Tamas Szanto , 2000. +# Balázs Úr , 2012. +# Kristof Kiszel , 2022. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.2\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2022-02-10 14:12+0100\n" +"Last-Translator: Kristof 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 21.07.70\n" + +#: kio_man.cpp:458 +#, 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 "" +"Nem található man oldal ehhez: %1.Ellenőrizze, hogy nem írta-e el az oldal nevét, és ügyeljen a kis- és " +"nagybetűkre.Ha a név helyes, vagy ki kell bővítenie a keresési " +"útvonalat, vagy használnia a MANPATH környezeti változót, " +"vagy egy konfigurációs fájlt az /etc/ könyvtárban." + +#: kio_man.cpp:574 +#, 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 megadott man oldal egy másik oldalra (%1) hivatkozik," +"de a hivatkozott oldal (%2) nem található." + +#: kio_man.cpp:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "A(z) %1 man oldal nem olvasható." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "A(z) %1 man oldal nem konvertálható." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Man oldal megjelenítési hiba" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Több oldal is eleget tesz a feltételnek:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Több man oldal" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Fejlécfájlok" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Fejlécfájlok (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Felhasználói parancsok" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Felhasználói parancsok (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Rendszerhívások" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Eljárások" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl modulok" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Hálózati függvények" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Eszközök" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Fájlformátumok" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Játékok" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Egyéb" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Rendszeradminisztráció" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Helyi dokumentáció" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Új" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Fő man oldal tartalomjegyzéke" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "%1. szakasz" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "A(z) %1. szakasz tartalomjegyzéke: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Man oldal tartalomjegyzéke" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Tartalomjegyzék létrehozása" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"A(z) %1 program nem található. Telepítse, ha szükséges, " +"és bizonyosodjon meg arról, hogy a PATH környezeti változóban " +"megtalálható." + +#~ 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_mtp.po b/po/hu/kio5_mtp.po new file mode 100644 index 0000000..03c3382 --- /dev/null +++ b/po/hu/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. +# +# Kristof Kiszel , 2022. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-10 14:17+0100\n" +"Last-Translator: Kristof 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 21.07.70\n" + +#: kio_mtp.cpp:217 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Nem található tárolóeszköz. Ellenőrizze, hogy az eszköz fel van-e oldva, és " +"az MTP be van-e kapcsolva az USB kapcsolat beállításainál." + +#: kio_mtp.cpp:520 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Nem sikerült másolni/áthelyezni fájlokat az eszközön" diff --git a/po/hu/kio5_nfs.po b/po/hu/kio5_nfs.po new file mode 100644 index 0000000..79d2d96 --- /dev/null +++ b/po/hu/kio5_nfs.po @@ -0,0 +1,74 @@ +# Copyright (C) 2015 Free Software Foundation, Inc. +# +# Tamas Szanto , 2001. +# Kristóf Kiszel , 2015. +# Kristof Kiszel , 2022. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.0\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-10 14:18+0100\n" +"Last-Translator: Kristof 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 21.07.70\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Nem található a(z) „%1” gép által támogatott NFS verzió" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Az NFS protokoll a kiszolgáló gépnevét igényli." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Nem sikerült inicializálni a protokollt." + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC hiba: %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "A fájlnév túl hosszú" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Lemezkvóta túllépve" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS hiba: %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Ismeretlen cél" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Nem támogatott NFS verzió" + +#~ msgid "No space left on device" +#~ msgstr "Nem maradt szabad hely az eszközön" + +#~ msgid "Read only file system" +#~ msgstr "Csak olvasható fájlrendszer" + +#~ msgid "Failed to mount %1" +#~ msgstr "Nem sikerült csatolni ezt: %1" + +#~ 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..da637d2 --- /dev/null +++ b/po/hu/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. +# +# Kristóf Kiszel , 2012. +# Kristof Kiszel , 2022. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-10 14:18+0100\n" +"Last-Translator: Kristof 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 21.07.70\n" + +#: recentdocuments.cpp:160 +#, kde-format +msgid "Recent Documents" +msgstr "Legutóbbi dokumentumok" diff --git a/po/hu/kio5_sftp.po b/po/hu/kio5_sftp.po new file mode 100644 index 0000000..13bbd2e --- /dev/null +++ b/po/hu/kio5_sftp.po @@ -0,0 +1,438 @@ +# +# Tamas Szanto , 2001. +# Kristóf Kiszel , 2010, 2011, 2015. +# Balázs Úr , 2012, 2013, 2014. +# Kristof Kiszel , 2022. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.2\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2022-02-10 14:32+0100\n" +"Last-Translator: Kristof 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 21.07.70\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Hibás vagy érvénytelen jelszó" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nem sikerült lefoglalni a visszahívásokat" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nem sikerült beállítani a napló részletességét." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Nem sikerült beállítani a napló felhasználói adatait." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Nem sikerült beállítani a napló visszahívást." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-s bejelentkezés" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Adja meg jelszavát." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Oldal:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Nem sikerült olvasni a hivatkozást: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nem sikerült új SSH-munkamenetet létrehozni." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nem sikerült beállítani az időkorlátot." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nem sikerült kikapcsolni Nagle algoritmusát." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Nem sikerült beállítani a tömörítést." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Nem sikerült beállítani a gépnevet." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Nem sikerült beállítani a portot." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Nem sikerült beállítani a felhasználónevet." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nem sikerült feldolgozni a beállítófájlt." + +#: kio_sftp.cpp:647 +#, 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:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Nem sikerült lekérni a kiszolgáló nyilvános kulcsa típusának nevét" + +#: kio_sftp.cpp:700 +#, 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:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Nem sikerült ujjlenyomatot létrehozni a kiszolgáló nyilvános kulcsából" + +#: kio_sftp.cpp:769 +#, 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 "" +"Egy %1 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" +"%2" + +#: kio_sftp.cpp:780 +#, 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(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 %2 kulcs ujjlenyomata:\n" +" SHA256:%3\n" +"Lépjen kapcsolatba a rendszergazdával.\n" +"%4" + +#: kio_sftp.cpp:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Figyelem: a kiszolgálót nem lehet azonosítani!" + +#: kio_sftp.cpp:796 +#, 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 "" +"Nem sikerült hitelesíteni a(z) %1 gépet.\n" +"A(z) %2 kulcs ujjlenyomata: %3\n" +"Biztosan folytatni szeretné a kapcsolódást?" + +#: kio_sftp.cpp:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Sikertelen azonosítás." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Sikertelen azonosítás. A kiszolgáló nem küldött semmilyen azonosítási módot" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Adja meg a felhasználónevét és a jelszavát." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Helytelen felhasználónév vagy jelszó" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nem sikerült előkészíteni az SFTP-munkamenetet." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Sikeres csatlakozás - %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Érvénytelen sftp kontextus" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nem sikerült megváltoztatni a jogosultságokat itt:\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..491ea36 --- /dev/null +++ b/po/hu/kio5_smb.po @@ -0,0 +1,206 @@ +# +# Tamas Szanto , 2001. +# Kristof Kiszel , 2022. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.1\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2022-02-10 14:29+0100\n" +"Last-Translator: Kristof 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 21.07.70\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 "" +"Számos lehetőség van SMB megosztások azonosításához.felhasználónév: Ha helyi hálózaton " +"azonosít, a kiszolgálón található felhasználónév elégfelhasználónév@pelda.hu: A modern " +"nagyvállalati bejelentkezési nevek formázása hasonlít az e-mail címekhezTARTOMÁNY\\felhasználónáv: Régi " +"vállalati hálózatokon vagy munkacsoportokban szükség lehet a NetBIOS " +"tartománynév előtagjára is (Windows 2000 előtt)névtelen: Névtelen bejelentkezést is " +"meg lehet próbálni üres felhasználónév és jelszó mezőkkel. A kiszolgáló " +"beállításaitól függően szükség lehet a felhasználónév kitöltésére" + +#: 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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Nincs adathordozó az eszközben ehhez: %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nem sikerült csatlakozni a géphez ehhez: %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Hibás fájlleíró" + +#: kio_smb_browse.cpp:320 +#, 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 oldható 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évfeloldás " +"között." + +#: kio_smb_browse.cpp:327 +#, 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 gép elérhetetlen" + +#: kio_smb_browse.cpp:330 +#, 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:343 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Ismeretlen hibafeltétel: [%1] %2" + +#: kio_smb_browse.cpp:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Hiba történt a(z) %1 elérésének kísérlete közben%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "A libsmbclient nem tudta létrehozni a kontextust" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, 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:173 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Ismeretlen eszköz @ %1" + +#~ 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..646e944 --- /dev/null +++ b/po/hu/kio5_thumbnail.po @@ -0,0 +1,82 @@ +# +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nem sikerült gyorsnézetet létrehozni a könyvtárhoz" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nincs megadva bővítmény." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nem sikerült betölteni: ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nem sikerült gyorsnézetet létrehozni: %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Nem sikerült gyorsnézetet létrehozni." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Nem sikerült kiírni a képet." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Nem sikerült kapcsolódni egy osztott memóriablokkhoz: %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "A kép túl nagy a megosztott memóriablokkhoz" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "A kép automatikus forgatása" + +#~ 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..009a721 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Reproduce &automaticamente" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "Starta reproduction sonor" + +#: mediacontrols_p.h:44 +#, 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..887775a --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Activitates" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Cargante..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Gerente de activitate non es executante" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Liga al activitate currente" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Leva ligamine ex le activitate currente" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Liga a :" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Leva ligamine ex:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Activitate" + +#: KioActivities.cpp:223 +#, 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..ed6f992 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..fff1910 --- /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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2020-11-21 11:23+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:83 +#, kde-format +msgid "Root" +msgstr "Radice" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Placias" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Non pote trovar config de marcatores de libro" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Non poteva trovar redactor de marcatores de libro" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Requesta errate: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Il non ha ancora marcatores de libro de monstrar" + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..8ea8aa3 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Il connecte..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Il initialisa le protocollo..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Accesso de identification &local" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Authorization SSH" + +#: fish.cpp:759 +#, 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..8efb392 --- /dev/null +++ b/po/ia/kio5_info.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. +# +# g.sora , 2010, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-03-23 22: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" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Il non pote localisar file %1 que es necessari pro executar iste servicio:" +"
        %1
        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..d9edc44 --- /dev/null +++ b/po/ia/kio5_man.po @@ -0,0 +1,220 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-23 22:46+0200\n" +"Last-Translator: giovanni \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 21.08.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:458 +#, 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 "" +"Necun pagina de man coincidente con %1 poteva esser " +"trovate. Tu verifica que tu non ha mal typate le nomine de pagina, " +"e nota que le nomines de pagina de man ha characteres majuscule e minuscule." +"Si le nomine es correcte, tunc tu pote necessitar de extender le " +"percurso de cerca pro paginas de man; o usar le variabile de ambiente " +"MANPATH o un file de configuration in le directorio " +"/etc." + +#: kio_man.cpp:574 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Le pagina de man specificate referentia a un altere pagina %1, ma le pagina referentiate %2 non poteva " +"esser trovate." + +#: kio_man.cpp:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "Le pagin de man %1 non poteva esser legite." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "Le pagin de man %1 non poteva esser convertite." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Error de Visor de Pagina de Manual" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "On ha plus que un pagina coincidente de man:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Paginas de Manual Multiple" + +#: kio_man.cpp:669 +#, 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 al version Anglese." + +#: kio_man.cpp:742 +#, kde-format +msgid "Header Files" +msgstr "Files de capite" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Files de capite (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Commandos de usator" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Commandos de usator (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Appellos de Systema (System Calls)" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subroutines" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Modulos de Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Functiones de rete" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formatos de File" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Jocos" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Miscellanea" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administration de Systema" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentation Local" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nove " + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Indice de pagina de manual principal" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Section %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Indice pro Ssction %1:%2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Indice de pagina de manual" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Generar Indice" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 sur tu systema. Pro " +"favor tu installa lo, si necessari, e tu assecura que illo pote esser " +"trovare per usar le variabile de ambiente PATH." + +#~ 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..2de5379 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/ia/kio5_nfs.po new file mode 100644 index 0000000..de89d53 --- /dev/null +++ b/po/ia/kio5_nfs.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. +# +# g.sora , 2010, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-03-23 22: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" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Non poteva trovar unversion de NFS que hopite '%1' supporta" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Le protocollO NFS require un nomine de hospite de servitor" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Il fallev a initialisar protocollo" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC error %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Nomine de file troppo longe" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Il excedeva le quota de disco" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Error de NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Objectivo incognite" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: version de NFS non supportate" + +#~ msgid "No space left on device" +#~ msgstr "Necun spatio lassate sur le dispositivo" + +#~ msgid "Read only file system" +#~ msgstr "Systema de file de sol lectura" + +#~ msgid "Failed to mount %1" +#~ msgstr "Il falleva a montar %1" + +#~ 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..c0c130d --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..f2fe317 --- /dev/null +++ b/po/ia/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. +# +# g.sora , 2010, 2011, 2012, 2013, 2014, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-23 22:59+0200\n" +"Last-Translator: giovanni \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 21.08.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Phrase de contrasigno incorrecte o invalide" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Il non pote trovar spatio pro callbacks" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Il non pote fixar verbositate de registro." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Il non pote fixar registro de datops de usator (log userdata)." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Il non pote fixar registro de callback (log callback)." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Accesso de Identification de SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Pro favor tu inserta tu contrasigno." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Sito:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Il non pote leger ligamine: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Il non pote crear un nove session de SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Il non pote fixar un tempore de expiration." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Il non pote deactivar Algorithmo de Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Il non pote fixar compression." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Il non pote fixar hospite." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Il non pote fixar porto." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Il non pote fixar nomine de usator." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Il non pote analysar le file de config." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Aperir connexion de SFTP pro host %1: %2" + +#: kio_sftp.cpp:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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 al 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Aviso: Il non pote verificar identitate del hospite." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Il falleva authentication." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Pro favor tu inserta tu nomine de usator e contrasigno." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nomine de usator o contrasigno incorrecte" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Il non pote initialisar le session de SFTP" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Il connecteva con successo a %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Invalide contexto sftp" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Il non pote cambiar permissiones pro\n" +"%1" + +#~ 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" + +#~ 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 al 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" + +#~ 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?" + +#~ 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..35be590 --- /dev/null +++ b/po/ia/kio5_smb.po @@ -0,0 +1,201 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-08-04 23:14+0200\n" +"Last-Translator: giovanni \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 21.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 "" +"Il ha varie optiiones per authenticar sur partes de SMB.username: Quando authenticar intra un " +"rete de domo le nomine de usator (username) del servitor es bastanteusername@domain.com: Moderne nomine de " +"accesso de impresa es formate como adresses de e-postaDOMAIN\\username: Per vetere rete de " +"impresa o grupos de travalio tu poterea necessitar adder como prefixo le " +"nomine de dominio de NetBIOS (pre-Windows 2000)anonymous: Accesso anonymeApote eser " +"eessayate per usar vacue nomine e contrasigno. Dependente del configuration " +"del servitor il pote esser que nomine de usator non vacue pote esser " +"requirite" + +#: 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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Nulle media in dispositivo pro %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Il non pote connecter a hospite pro %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Error durante que on connecteva al servitor responsabile pro %1" + +#: kio_smb_browse.cpp:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Mal descriptor de file" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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 al disveloppatores si illos demanda lo)" + +#: kio_smb_browse.cpp:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient falleva a crear contexto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Il falleva le dismontar del puncto de montage \"%1\".\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..eca63f4 --- /dev/null +++ b/po/ia/kio5_thumbnail.po @@ -0,0 +1,83 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2021-08-04 23:10+0200\n" +"Last-Translator: giovanni \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 21.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Il non pote crear miniatura pro directorio" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Necun plugin specificate." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Il non pote cargar ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Il non pote crear miniatura pro %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Il falleva a crear un miniatura" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Il non pote scriber image." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Il falleva a attaccar al segmento de memoria compartite %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Image es troppo grande pro le segmento de memoria compartite" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rota automaticamente le imagine" + +#~ 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..c43fc6d --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Putarkan secara otom&atis" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "mulai pemutaran" + +#: mediacontrols_p.h:44 +#, 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..7a2f214 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..603039b --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Tempat" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Permintaan salah: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Belum ada markah untuk ditampilkan." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..9f963d8 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Mengonek..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Menginisiasi protokol..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Login Lokal" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autentikasi SSH" + +#: fish.cpp:759 +#, 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..931c765 --- /dev/null +++ b/po/id/kio5_info.po @@ -0,0 +1,33 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..4da5659 --- /dev/null +++ b/po/id/kio5_man.po @@ -0,0 +1,236 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        Error Penampil Manual KDE

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "File header" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "File header (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Perintah Pengguna" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Perintah Pengguna (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Panggilan Sistem" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subrutin" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Modul Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Fungsi Jaringan" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Perangkat" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Format File" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Permainan" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Beraneka" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administrasi Sistem" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Dokumentasi Lokal" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Baru" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Indeks Manual UNIX" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Bagian %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indeks Untuk Bagian %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Indeks Manual UNIX" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Membuat Indeks" + +#: kio_man.cpp:1389 +#, 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 %1 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..6ba6e25 --- /dev/null +++ b/po/id/kio5_nfs.po @@ -0,0 +1,76 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, fuzzy, kde-format +#| msgid "RPC error %1" +msgid "RPC error %1, %2" +msgstr "Galat RPC %1" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Nama file terlalu panjang" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Kuota cakram terlampaui" + +#: kio_nfs.cpp:917 +#, fuzzy, kde-format +#| msgid "NFS error %1 - %2" +msgid "NFS error %1, %2" +msgstr "Galat NFS %1 - %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Sasaran tak diketahui" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Versi NFS tak didukung" + +#~ msgid "No space left on device" +#~ msgstr "Tak ada ruang kosong tersisa di perangkat" + +#~ msgid "Read only file system" +#~ msgstr "Sistem file hanya baca" + +#~ msgid "Failed to mount %1" +#~ msgstr "Gagal mengaitkan %1" + +#~ 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..d0066c1 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..ffb4ba0 --- /dev/null +++ b/po/id/kio5_sftp.po @@ -0,0 +1,302 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Sandi salah atau tidak absah" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Tak dapat mengalokasikan panggil balik" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Tak dapat mengatur kelengkapan catatan." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Tak dapat mengatur catatan data pengguna." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Tak dapat mengatur catatan panggil balik." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Login SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Silakan masukkan sandi anda." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Situs:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Tak dapat membaca tautan: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Tak dapat menciptakan sesi SSH baru." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Tak dapat mengatur batas waktu." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Tak dapat mengatur pangkalan." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Tak dapat mengatur kompresi." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Tak dapat mengatur host." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Tak dapat mengatur porta." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Tak dapat mengatur nama pengguna." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Tak dapat mengurai file konfigurasi." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Tak dapat menciptakan hash dari server kunci publik" + +#: kio_sftp.cpp:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Peringatan: Tak dapat verifikasi identitas host." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Otentikasi gagal." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Silakan masukkan nama pengguna dan sandi anda." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nama pengguna atau sandi salah" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Tak dapat menginisialisasi sesi SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Berhasil terkoneksi ke %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Tak dapat mengubah hak akses untuk\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..662b2f2 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Tak ada media di perangkat untuk %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Tidak bisa mengkoneksikan ke host untuk %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Pembagian tidak bisa ditemukan di server yang diberikan" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Pendeskripsi file buruk" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Terjadi error ketika mencoba mengakses %1%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient gagal untuk menciptakan konteks" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Melepaskait titikkait \"%1\" gagal.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..5f04f4e --- /dev/null +++ b/po/id/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Tak dapat menciptakan gambar-mini untuk direktori" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Tak ada plugin yang ditentukan." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Tak dapat memuat ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Tak dapat menciptakan gambar-mini untuk %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Gagal menciptakan gambar-mini." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Tak dapat menulis gambar." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Gagal melampirkan ke segmen memori bersama %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Citra terlalu besar untuk segmen memori bersama" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rotasikan gambar secara otomatis" + +#~ 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..b2398e2 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Spila &sjálfkrafa" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "hefja spilun" + +#: mediacontrols_p.h:44 +#, 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..770344c --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activities" +msgstr "Virkni" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, 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:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Tengja við núverandi virkni" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Aftengja við núverandi virkni" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Tengja við:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Aftengja frá:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activity" +msgstr "Virkni" + +#: KioActivities.cpp:223 +#, 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..7fd85e7 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..4f1737a --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Rót" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Staðir" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Gölluð fyrirspurn: %1" + +#: kio_bookmarks_html.cpp:85 +#, 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:124 +#, 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:133 +#, 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..a79255e --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Tengist..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Virkja samskiptamáta..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Staðbundið notandanafn" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH auðkenning" + +#: fish.cpp:759 +#, 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..0eb5ed1 --- /dev/null +++ b/po/is/kio5_info.po @@ -0,0 +1,35 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..0e6575f --- /dev/null +++ b/po/is/kio5_man.po @@ -0,0 +1,237 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        Villa í KDE hjálparsíðurýni

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Höfuðskrár" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Höfuðskrár (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Notandaskipanir" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Notandaskipanir (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Kerfisköll" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Stefjur" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perleiningar" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Netstefjur" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Tæki" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Skráasnið" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Leikir" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Ýmislegt" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Kerfisstjórnun" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kjarni" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Staðbundnar upplýsingar" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nýtt" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Efnisyfirlit UNIX hjálparsíðna" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Kafli %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Efnisyfirlit yfir kafla %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Efnisyfirlit UNIX hjálparsíðna" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Bý til efnisyfirlit" + +#: kio_man.cpp:1389 +#, 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 %1 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..28c3a8d --- /dev/null +++ b/po/is/kio5_nfs.po @@ -0,0 +1,72 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Skráarheitið of langt" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disk kvóti notaður að fullu" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Ekkert pláss eftir á þessu tæki" + +#~ msgid "Read only file system" +#~ msgstr "Skrifvarið skráakerfi" + +#~ 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..ac3d97b --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..1e0a02e --- /dev/null +++ b/po/is/kio5_sftp.po @@ -0,0 +1,235 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Ógilt eða rangt lykilorð" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Gat ekki stillt upplýsingamagn fyrir annál." + +#: kio_sftp.cpp:276 +#, 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:281 +#, 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:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP innstimplun" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Sláðu inn lykilorðið þitt." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Vefsvæði:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Ekki tókst að lesa tengilinn: %1." + +#: kio_sftp.cpp:570 +#, 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:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Gat ekki stillt tímamörk." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Gat ekki stillt gátt." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Gat ekki stillt þjöppun." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Gat ekki stillt vélarheiti." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Gat ekki stillt gátt." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Gat ekki stillt notandanafn." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Gat ekki lesið stillingaskrá." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Viðvörun: Get ekki staðfest auðkenni vélar." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Auðkenning brást!" + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Sláðu inn notandanafn og lykilorð þitt." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Ógilt notandanafn eða lykilorð" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Gat ekki frumstillt SFTP-setuna." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Tenging við %1 tókst" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ekki tókst að breyta aðgangsheimildum að\n" +"%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..acc73ac --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Enginn diskur er í drifinu fyrir %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Gat ekki tengst þjóninum fyrir %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Sameign fannst ekki á uppgefnum þjón" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Skemmdur skráarlýsir" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ekki tókst að aftengja \"%1\".\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..0ef2f49 --- /dev/null +++ b/po/is/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Get ekki búið til smámynd fyrir möppuna" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Engin viðbót skilgreind." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Get ekki hlaðið inn ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Get ekki búið til smámynd fyrir %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Mistókst að búa til smámynd." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Gat ekki skrifað mynd." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Mistókst að tengjast minnishluta %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Myndin er of stór fyrir minnishlutann" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Snúa myndinni sjálfkrafa" + +#~ 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/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/docs/kioslave5/zstd/index.docbook b/po/it/docs/kioslave5/zstd/index.docbook new file mode 100644 index 0000000..8b23e94 --- /dev/null +++ b/po/it/docs/kioslave5/zstd/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +zstd + + +FriedrichW. H.Kossebau +VincenzoReale
        smart2128vr@gmail.com
        Traduzione italiana
        +
        +
        + +zstd è un programma di compressione. + +Lo zstd kioslave non è direttamente utilizzabile ed è destinato all'uso come filtro. Ad esempio, il kioslave tar può filtrare un file attraverso il kioslave zstd, per visualizzare il contenuto di un file tar.zst direttamente in una finestra di &konqueror;. + +Facendo clic su un file compresso con un'estensione zst in &konqueror;, questo kioslave viene utilizzato per decomprimerlo e visualizzarlo come un normale file (non compresso). + +Se sei uno sviluppatore e desideri utilizzare il filtro zstd, puoi trovare la documentazione sull'uso di kioslaves su http://techbase.kde.org + +Vedere il manuale: zstd. + +
        diff --git a/po/it/kfileaudiopreview5.po b/po/it/kfileaudiopreview5.po new file mode 100644 index 0000000..d794229 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Riproduci &automaticamente" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "avvia riproduzione" + +#: mediacontrols_p.h:44 +#, 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..0de251c --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Attività" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Caricamento..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Il gestore delle attività non è in esecuzione" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Collega all'attività attuale" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Scollega dall'attività attuale" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Collega a:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Scollega da:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Attività" + +#: KioActivities.cpp:223 +#, 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..06062f1 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..1d59e51 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Radice" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Risorse" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Impossibile trovare la configurazione dei segnalibri" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Impossibile trovare l'editor dei segnalibri" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Richiesta errata: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Non ci sono segnalibri da visualizzare." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..e35d0e4 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Connessione..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inizializzazione protocollo..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Accesso locale" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticazione SSH" + +#: fish.cpp:759 +#, 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..0a8cbdf --- /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. +# Luigi Toscano , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-20 13:36+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.12.0\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Impossibile trovare i file necessari per l'avvio di questo servizio.
        " +"%1
        Controlla il software installato." diff --git a/po/it/kio5_man.po b/po/it/kio5_man.po new file mode 100644 index 0000000..4d167a3 --- /dev/null +++ b/po/it/kio5_man.po @@ -0,0 +1,224 @@ +# 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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-07 11:06+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 21.08.0\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "La pagina di manuale %1 non può essere letta." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" +"La pagina di manuale %1 non può essere convertita." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Errore nel visore delle pagine di manuale" + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Pagine di manuale multiple" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "File header" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "File header (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Comandi utente" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Comandi utente (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Chiamate di sistema" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Sottoprocedure" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Moduli Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funzioni di rete" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Dispositivi" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formati file" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Giochi" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Varie" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Amministrazione di sistema" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentazione locale" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nuovi" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Indice principale delle pagine di manuale" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sezione %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Indice della sezione %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Indice delle pagine di manuale" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Generazione indice" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 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..7a1c152 --- /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, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_mtp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\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 21.08.0\n" + +#: kio_mtp.cpp:217 +#, 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:520 +#, 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_nfs.po b/po/it/kio5_nfs.po new file mode 100644 index 0000000..41b2b38 --- /dev/null +++ b/po/it/kio5_nfs.po @@ -0,0 +1,75 @@ +# translation of kio_nfs.po to Italian +# Copyright (C) 2004 Free Software Foundation, Inc. +# Andrea RIZZI , 2004. +# Vincenzo Reale , 2015. +# Luigi Toscano , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-20 11:47+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.12.0\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Impossibile trovare una versione di NFS supportata dall'host «%1»" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Il protocollo NFS richiede un nome di host per il server." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Inizializzazione del protocollo non riuscita" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Errore RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Nome file troppo lungo" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Quota disco superata" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Errore NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Destinazione sconosciuta" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: versione di NFS non supportata" + +#~ msgid "No space left on device" +#~ msgstr "Spazio insufficiente sul dispositivo" + +#~ msgid "Read only file system" +#~ msgstr "File system di sola lettura" + +#~ msgid "Failed to mount %1" +#~ msgstr "Montaggio di %1 non riuscito" + +#~ 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..369297d --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..9965609 --- /dev/null +++ b/po/it/kio5_sftp.po @@ -0,0 +1,458 @@ +# 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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-11-23 23:18+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 21.08.0\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frase segreta sbagliata" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Impossibile allocare le richiamate" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Impossibile impostare il livello di dettaglio del registro." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Impossibile impostare il livello di dettaglio a userdata." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Impossibile impostare il livello di dettaglio a callback." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Accesso SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Inserisci la password." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Sito:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Impossibile leggere il collegamento: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Impossibile creare una nuova sessione SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Impossibile impostare un tempo massimo." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Impossibile disabilitare l'algoritmo di Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Impossibile impostare la compressione." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Impossibile impostare l'host." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Impossibile impostare la porta." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Impossibile impostare il nome utente." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Impossibile analizzare il file di configurazione." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Apertura della connessione SFTP all'host %1:%2" + +#: kio_sftp.cpp:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Impossibile creare l'hash dalla chiave pubblica del server" + +#: kio_sftp.cpp:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Attenzione: impossibile verificare l'identità dell'host." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Autenticazione non riuscita." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Inserisci il nome utente e la password." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Password o nome utente sbagliati" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Impossibile inizializzare la sessione SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Connesso correttamente a %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contesto sftp non valido" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Impossibile cambiare i permessi di\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..7614677 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Nessun supporto nel lettore per %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Impossibile connettersi all'host per %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descrittore di file errato" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Smontaggio di \"%1\" non riuscito.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..563f41d --- /dev/null +++ b/po/it/kio5_thumbnail.po @@ -0,0 +1,81 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Impossibile creare la miniatura per la cartella" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nessuna estensione specificata." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Non è stato possibile caricare ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Impossibile creare la miniatura per %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Non è stato possibile creare la miniatura." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Non è stato possibile scrivere l'immagine." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Non è stato possibile connettersi al segmento di memoria condivisa %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "L'immagine è troppo grande per il segmento di memoria condivisa" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Ruota l'immagine automaticamente" + +#~ 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..ff6f58a --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "自動再生(&A)" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "再生を開始" + +#: mediacontrols_p.h:44 +#, 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..2c6d591 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "アクティビティ" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "読み込み中..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Activity Manager が実行されていません" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "現在のアクティビティにリンク" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "現在のアクティビティからリンク解除" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "リンク先:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "リンク解除:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "アクティビティ" + +#: KioActivities.cpp:223 +#, 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..eb5b08e --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"ファイルを開けませんでした。おそらくファイルフォーマットがサポートされていな" +"いためです。\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..c238c2c --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "ルート" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "場所" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "不正な要求: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "表示するブックマークがまだありません。" + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..4f2e396 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "接続中..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "プロトコルを初期化中..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "ローカルログイン" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH 認証" + +#: fish.cpp:759 +#, 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..43603b2 --- /dev/null +++ b/po/ja/kio5_info.po @@ -0,0 +1,31 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..9f07d3f --- /dev/null +++ b/po/ja/kio5_man.po @@ -0,0 +1,220 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "ユーザコマンド" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "ユーザコマンド (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "システムコール" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "サブルーチン" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl モジュール" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "ネットワーク機能" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "デバイス" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "ファイルフォーマット" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "ゲーム" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "その他" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "システム管理" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "カーネル" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "ローカルドキュメント" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "新規" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX マニュアルインデックス" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "セクション %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "セクション %1 のインデックス: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX マニュアルインデックス" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "インデックス生成中" + +#: kio_man.cpp:1389 +#, 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 %1 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 を設定し直してください。" diff --git a/po/ja/kio5_mtp.po b/po/ja/kio5_mtp.po new file mode 100644 index 0000000..89d5db2 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "" diff --git a/po/ja/kio5_nfs.po b/po/ja/kio5_nfs.po new file mode 100644 index 0000000..1fa3db0 --- /dev/null +++ b/po/ja/kio5_nfs.po @@ -0,0 +1,61 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "ファイル名が長すぎます" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "ディスククォータを超過しました" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, 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..6ff5c24 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..97748f1 --- /dev/null +++ b/po/ja/kio5_sftp.po @@ -0,0 +1,307 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "不正なパスフレーズ" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "コールバックを割り当てることができませんでした" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "ログレベルを設定できません。" + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "ログレベルを設定できません。" + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "コールバックを割り当てることができませんでした" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP ログイン" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "この質問への回答には、username 入力フィールドを用いてください。" + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "パスワードを入力してください。" + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "サイト:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "リンクを読み込めませんでした: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "新しい SSH セッションを作成できませんでした。" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "タイムアウトを設定できません" + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "ポートを設定できません。" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "圧縮を設定できません" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "ホストを設定できません。" + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "ポートを設定できません。" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "ユーザ名を設定できません。" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "設定ファイルを解析できませんでした。" + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "ホスト %1:%2 への SFTP 接続開始" + +#: kio_sftp.cpp:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "ユーザ名を設定できません。" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "【警告】 ホストの識別情報を検証できません。" + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "認証に失敗しました。" + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "ユーザ名とパスワードを入力してください。" + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "不正なユーザ名とパスワード" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP サブシステムにリクエストを送信できません。サーバ側で SFTP が有効になって" +"いることを確認してください。" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP セッションを初期化できませんでした。" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 への接続に成功" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"以下のパーミッションを変更できませんでした\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "接続を続行しますか?" diff --git a/po/ja/kio5_smb.po b/po/ja/kio5_smb.po new file mode 100644 index 0000000..fc8f67b --- /dev/null +++ b/po/ja/kio5_smb.po @@ -0,0 +1,188 @@ +# 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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"不明なファイルタイプ、ディレクトリでもファイルでもありません。" + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 用のデバイスにメディアがありません" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 のホストに接続できません" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 を担当するサーバに接続中にエラー" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "指定されたサーバに共有が見つかりませんでした" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "不正なファイル識別子" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient はコンテキストの作成に失敗しました" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"マウントポイント “%1” のアンマウントに失敗しました。\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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/ja/kio5_thumbnail.po b/po/ja/kio5_thumbnail.po new file mode 100644 index 0000000..403cfa5 --- /dev/null +++ b/po/ja/kio5_thumbnail.po @@ -0,0 +1,74 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "フォルダのサムネイルを作成できません" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "プラグインが指定されていません。" + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 を読み込めません" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 のサムネイルを作成できません" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "サムネイルの作成に失敗しました。" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "画像を書き込めませんでした。" + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "共有メモリセグメント %1 への添付に失敗" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "共有メモリセグメントへの画像が大きすぎます" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "自動的に画像を回転する" diff --git a/po/kk/kfileaudiopreview5.po b/po/kk/kfileaudiopreview5.po new file mode 100644 index 0000000..df7f46b --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Автоматы түрде орындалсын" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "орындауын бастау" + +#: mediacontrols_p.h:44 +#, 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..0f71c68 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activities" +msgstr "Белсенділіктер..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "Белсенділік менеджері дұрыс істемейді." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Назардағы белсенділікпен байланыстыру" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Назардағы белсенділіктен байланысын үзу" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Мынамен байланыстыру:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Мынадан байланысын үзу:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activity" +msgstr "Белсенділіктер..." + +#: KioActivities.cpp:223 +#, 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..47ac04a --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Файл ашылмайды, бәлкім, файл пішімі қолданылмайды.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..792d4d8 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Түбірі" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Орындар" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Қате талап: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Бетбегілер жоқ" + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..078f102 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Байланысты құру..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Протоколды бастау күйіне келтіру..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Жергілікті жүйеге кіру" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH аутентификациясы" + +#: fish.cpp:759 +#, 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..b2816c5 --- /dev/null +++ b/po/kk/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..ef51149 --- /dev/null +++ b/po/kk/kio5_man.po @@ -0,0 +1,233 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Айдар файлдары" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Айдар файлдары (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Пайдаланушының командалары" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Пайдаланушының командалары (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Жүйелік шақырулар" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Бағыныңқы бағдарламалар" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl модульдері" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Желілік функциялар" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Құрылғылар" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Файл пішімдері" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Ойындар" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Басқа" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Жүйелік әкімшілік ету" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Өзегі" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Жергілікті құжаттама" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Жаңалары" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX нұсқауының индексі" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "%1 бөлімі" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "%1: %2 бөлімінің индексі" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX нұсқауының индексі" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Индексті құру" + +#: kio_man.cpp:1389 +#, 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 %1 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..9b6d9fe --- /dev/null +++ b/po/kk/kio5_nfs.po @@ -0,0 +1,67 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Файл атауы тым ұзым" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Дискідегі квота бітті" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Құрылғыда орын қалған жоқ" + +#~ msgid "Read only file system" +#~ 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..004e205 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..22b399f --- /dev/null +++ b/po/kk/kio5_sftp.po @@ -0,0 +1,477 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Кілт тізбегі дұрыс емес не жарамсыз" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Қайтарма шақырлымдарына жад бөлінбеді" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Журналды жете жүргізуі орнатылмады." + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Журналды жете жүргізуі орнатылмады." + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Қайтарма шақырлымдарына жад бөлінбеді" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP хостына кіру" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Бұған жауап беру үшін пайдаланушы атауының өрісін пайдаланыңыз." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "Пароліңізді келтіріңіз." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Сайт:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Келесі сілтеме оқылмады: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Жаңа SSH сеансы бастауға келмеді." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Күту уақыты орнатылмады." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Порт орнатылмады." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Сығу режімі орнатылмады." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Хост атауы орнатылмады." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Порт орнатылмады." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Пайдаланушы атауы орнатылмады." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Баптау файл талдауға келмеді." + +#: kio_sftp.cpp:647 +#, 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:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Пайдаланушы атауы орнатылмады." + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Ескерту: хосттың идентификация тексерісі болмады." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Идентификация тексерісі өтпеді." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Аутентификация өтпеді. Сервер ешбір аудентификация тәсілін жіберген жоқ." + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Пайдаланушының атауыңыз мен пароліңізді келтіріңіз." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Пайдаланушының атауы не пароль дұрыс емес" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP ішкі жүйемен байланыс болмады. Серверіңізде SFTP рұқсат етілгенін " +"тексеріңіз." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP сеансы бастауға келмеді." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 дегенімен байланыс сәтті құрылды" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"%1 дегеннің\n" +"рұқсаттары өзгертілмеді" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "Байланысуды жалғастыруын қалайсызба?" + +#~ 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..98e7f90 --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Не каталог емес, не файл емес, беймәлім файл түрі." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 үшін құрылғысының тасушысы жоқ" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 үшін хостымен байланыс жоқ" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 үшін жауыпты серверімен байланыс жоқ" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Келтірілген серверде керек ресурс табылмады" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Жарамсыз файл дескрипторы" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient қонтекст құру қатесі" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"\"%1\" тіркеу орнынан тіркеуден шығару қатесі.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..dff9af3 --- /dev/null +++ b/po/kk/kio5_thumbnail.po @@ -0,0 +1,83 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Қапшықтың нобай суреті жасалмады" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Модулі келтірілмеген." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "%1 нобай сурет жасаушысы жүктелмеді" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 үшін нобай сурет жасалмады" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Нобай сурет жасау қатесі." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Кескін жазылмады." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "%1 ортақ жад сегментіне салу қатесі" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Кескін тым үлкен - ортақ жад сегментіне сыймайды" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..44ac0d5 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "ចាក់​ដោយ​ស្វ័យប្រវត្តិ" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "ចាប់ផ្ដើម​ចាក់ឡើង​វិញ" + +#: mediacontrols_p.h:44 +#, 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..2b72641 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, fuzzy, kde-format +#| msgid "Unlock Activity" +msgid "Activities" +msgstr "ដោះសោ​សកម្មភាព" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "កម្មវិធី​គ្រប់គ្រង​សកម្មភាព​មិនកំពុង​ដំណើរការ​ត្រឹមត្រូវ​ទេ ។" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, fuzzy, kde-format +#| msgid "Unprotect Activity" +msgid "Link to the current activity" +msgstr "សកម្មភាព​ដែល​មិន​បានការពារ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, fuzzy, kde-format +#| msgid "Unprotect Activity" +msgid "Unlink from the current activity" +msgstr "សកម្មភាព​ដែល​មិន​បានការពារ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, fuzzy, kde-format +#| msgid "Unlock Activity" +msgid "Activity" +msgstr "ដោះសោ​សកម្មភាព" + +#: KioActivities.cpp:223 +#, 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..b3c3e47 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"មិន​អាច​បើក​ឯកសារ ប្រហែល​ជា​ដោយ​សារ​ទ្រង់ទ្រាយ​ឯកសារ​មិន​បាន​គាំទ្រ ។\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..a415ddc --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "កន្លែង" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "សំណើរ​មិន​ត្រឹមត្រូវ ៖ %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "មិនមាន​ចំណាំ​ត្រូវ​បង្ហាញ​នៅ​ឡើយ​ទេ ។" + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..bbc796f --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "កំពុង​តភ្ជាប់..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "កំពុង​ចាប់ផ្ដើម​ពិធីការ..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "ការ​ចូល​មូលដ្ឋាន" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "ការ​អនុញ្ញាត​របស់ SSH" + +#: fish.cpp:759 +#, 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..9ef8bad --- /dev/null +++ b/po/km/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..412b671 --- /dev/null +++ b/po/km/kio5_man.po @@ -0,0 +1,231 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "ពាក្យ​បញ្ជា​របស់​អ្នក​ប្រើ" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "ពាក្យ​បញ្ជា​របស់​អ្នក​ប្រើ" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "ការ​ហៅ​ប្រព័ន្ធ" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "ទម្រង់ការ​រង" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "ម៉ូឌុល Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "មុខងារ​បណ្ដាញ" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "ឧបករណ៍" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "ទ្រង់ទ្រាយ​ឯកសារ" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "ល្បែង" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "ផ្សេងៗ" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "ការ​គ្រប់គ្រង​ប្រព័ន្ធ" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "ខឺណែល" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "ឯកសារ​មូលដ្ឋាន" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "ថ្មី" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "លិបិក្រម​សៀវភៅ​ដៃ​របស់​យូនីក" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "ភាគ %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "លិបិក្រម​សម្រាប់​ភាគ %1 ៖ %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "លិបិក្រម​សៀវភៅ​ដៃ​របស់​យូនីក" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "កំពុង​បង្កើត​លិបិក្រម" + +#: kio_man.cpp:1389 +#, 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 %1 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..0553afc --- /dev/null +++ b/po/km/kio5_nfs.po @@ -0,0 +1,66 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "ឈ្មោះ​ឯកសារ​វែង​ពេក" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "លើស​កូតា​ថាស​" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "គ្មាន​ចន្លោះ​សល់​លើ​ឧបករណ៍" + +#~ msgid "Read only file system" +#~ 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..a38822e --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..f3e252d --- /dev/null +++ b/po/km/kio5_sftp.po @@ -0,0 +1,302 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, fuzzy, kde-format +#| msgid "Incorrect or invalid passpharse" +msgid "Incorrect or invalid passphrase" +msgstr "​ពាក្យ​សម្ងាត់​មិន​ត្រឹម​ត្រូវ" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "មិនអាច​បម្រុង​ការហៅ​ត្រឡប់​បាន​ទេ" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "មិនអាច​ចុះ​កំណត់​ហេតុរៀបរាប់​បានទេ ។​" + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "មិនអាច​ចុះ​កំណត់​ហេតុរៀបរាប់​បានទេ ។​" + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "មិនអាច​បម្រុង​ការហៅ​ត្រឡប់​បាន​ទេ" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "ការ​ចូល SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "ប្រើ​វាល​បញ្ចូល​ឈ្មោះអ្នកប្រើ ដើម្បី​ឆ្លើយ​សំណួរ​នេះ ។" + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "សូម​បញ្ចូល​​ពាក្យ​សម្ងាត់​របស់​អ្នក ។" + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "តំបន់​បណ្ដាញ ៖​" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "មិនអាចអាន​តំណ​បានទេ ៖ %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "មិនអាច​បង្កើត​សម័យ SSH ថ្មី​បានទេ ។" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "មិនអាច​កំណត់​រយៈពេល​អស់​ពេល​បានទេ ។" + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "មិនអាច​កំណត់​ច្រក​បានទេ ។" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "មិនអាច​កំណត់​ការ​បង្ហាប់បានទេ ។" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "មិនអាច​កំណត់ម៉ាស៊ីន​បាន​ទេ ។" + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "មិនអាច​កំណត់​ច្រក​បានទេ ។" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "មិនអាច​កំណត់​ឈ្មោះ​អ្នកប្រើបានទេ ។" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "មិន​អាច​ញែក​ឯកសារ​កំណត់​រចនាសម្ព័ន្ធ​បានទេ ។" + +#: kio_sftp.cpp:647 +#, 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:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "មិនអាច​កំណត់​ឈ្មោះ​អ្នកប្រើបានទេ ។" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "ព្រមាន ៖ មិន​អាច​ផ្ទៀត​ផ្ទាត់​អត្តសញ្ញាណ​របស់​ម៉ាស៊ីន ។" + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​បាន​បរាជ័យ ។" + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នក​ប្រើ និង​ពាក្យ​សម្ងាត់​របស់​អ្នក ។" + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "ឈ្មោះ​អ្នក​ប្រើ ឬ​ពាក្យ​សម្ងាត់​មិន​ត្រឹម​ត្រូវ" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "មិនអាច​ស្នើ​ប្រព័ន្ធ​រង​របស់ SFTP បាន​ទេ ។ សូម​ប្រាកដថា SFTP ត្រូវ​បានបើក​នៅ​លើ​ម៉ាស៊ីន​បម្រើ ។" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "មិន​អាច​ចាប់ផ្ដើម​សម័យ SFTP បាន​ទេ ។" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "បាន​ត​ភ្ជាប់​ទៅ %1 ដោយ​ជោគជ័យ" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"មិន​អាច​ផ្លាស់ប្ដូរ​សិទ្ធិ​សម្រាប់\n" +"%1 បាន​ទេ" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "តើ​អ្នកប្រាកដ​ជា​ចង់​បន្ត​ការ​តភ្ជាប់​ដែរឬទេ ?" + +#~ 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..3557852 --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1 ៖\n" +"ប្រភេទ​ឯកសារ​ដែល​មិន​ស្គាល់ ទាំង​ថត ឬ​ឯកសារ ។" + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "គ្មាន​ឧបករណ៍​ផ្ទុក ក្នុង​ឧបករណ៍​សម្រាប់ %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "មិន​អាច​តភ្ជាប់​ទៅ​ម៉ាស៊ីន %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "កំហុស​ខណៈ​ពេល​ត​ភ្ជាប់​ទៅ​ម៉ាស៊ីន​បម្រើ​ដែល​ទទួល​ខុសត្រូវ​សម្រាប់ %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "រក​មិន​ឃើញ​ការ​ចែក​រំលែក​នៅ​លើ​ម៉ាស៊ីន​បម្រើ​ដែល​បាន​ផ្ដល់​ឲ្យ" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "ឧបករណ៍​ពិពណ៌នា​ឯកសារ BAD" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient បាន​បរាជ័យ​ក្នុង​ការ​បង្កើត​បរិបទ" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"ការ​មិន​រៀបចំ​នៃ​ចំណុច​រៀបចំ \"%1\" បាន​បរាជ័យ ។\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..93f33b8 --- /dev/null +++ b/po/km/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "មិន​អាច​បង្កើត​រូបភាព​តូចៗ​​សម្រាប់​ថត​បានទេ" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "មិន​បាន​បញ្ជាក់​កម្មវិធី​ជំនួយ ។" + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "មិន​អាច​ផ្ទុក ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "មិន​អាច​បង្កើត​រូបភាព​តូច​សម្រាប់ %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "បរាជ័យ​ក្នុង​ការ​បង្កើត​រូបភាព​តូច ។" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "មិន​អាច​សរសេរ​រូបភាព ។" + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "បរាជ័យ​ក្នុង​ការ​ភ្ជាប់​ទៅ​ចម្រៀក​សតិ %1 ដែល​បាន​ចែក​រំលែក" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "រូបភាព​មាន​ទំហំ​ធំ​ពេក សម្រាប់​ចែក​រំលែក​ចម្រៀក​សតិ ។" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..663fd0d --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "자동으로 재생(&A)" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "재생" + +#: mediacontrols_p.h:44 +#, 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..0529726 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "활동" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "불러오는 중..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "활동 관리자가 실행되고 있지 않습니다" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "현재 활동으로 연결" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "현재 활동에서 연결 해제" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "다음으로 연결:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "다음에서 연결 해제:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "활동" + +#: KioActivities.cpp:223 +#, 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..7b13992 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"파일을 열 수 없습니다. 지원하지 않을 수도 있습니다.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..a8d8ee8 --- /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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-05-16 22:28+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 20.12.3\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "루트" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "위치" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "책갈피 설정을 찾을 수 없음" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "책갈피 편집기를 찾을 수 없음" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "잘못된 요청: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "표시할 책갈피가 없습니다." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..c017498 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "연결 중..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "프로토콜 초기화 중..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "로컬 로그인" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH 인증" + +#: fish.cpp:759 +#, 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..a10659e --- /dev/null +++ b/po/ko/kio5_info.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. +# Shinjo Park , 2009, 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-05-16 22:29+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 20.12.3\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"이 서비스를 실행할 때 필요한 파일을 찾을 수 없습니다:
        %1
        소프트웨어 설" +"치 상태를 확인하십시오." diff --git a/po/ko/kio5_man.po b/po/ko/kio5_man.po new file mode 100644 index 0000000..29c31d7 --- /dev/null +++ b/po/ko/kio5_man.po @@ -0,0 +1,220 @@ +# 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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-11-12 00: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 21.08.1\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "man 페이지 %1을(를) 읽을 수 없습니다." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "man 페이지 %1을(를) 변환할 수 없습니다." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "매뉴얼 페이지 뷰어 오류" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "일치하는 맨 페이지가 하나 이상입니다." + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "여러 매뉴얼 페이지" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "헤더 파일" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "헤더 파일(POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "사용자 명령" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "사용자 명령(POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "시스템 콜" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "서브루틴" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "펄 모듈" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "네트워크 함수" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "장치" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "파일 형식" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "게임" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "기타" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "시스템 관리" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "커널" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "로컬 문서" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "새로운 항목" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "주 매뉴얼 페이지 색인" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "섹션 %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "섹션 %1의 색인: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "매뉴얼 페이지 색인" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "색인 만드는 중" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"%1 프로그램을 찾을 수 없습니다. 해당 프로그램을 설치하고 " +"만약 필요하다면 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..d0e6cca --- /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, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\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 21.08.1\n" + +#: kio_mtp.cpp:217 +#, 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:520 +#, 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_nfs.po b/po/ko/kio5_nfs.po new file mode 100644 index 0000000..6312c7a --- /dev/null +++ b/po/ko/kio5_nfs.po @@ -0,0 +1,74 @@ +# Korean messages for kio_nfs. +# Copyright (C) 2002 Free Software Foundation, Inc. +# KIM KyungHeon , 2002. +# Shinjo Park , 2007, 2015, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-05-16 22:29+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 20.12.3\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "호스트 '%1'에서 지원하는 NFS 버전을 찾을 수 없음" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "NFS 프로토콜을 사용하려면 서버 호스트 이름을 지정해야 합니다." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "프로토콜을 초기화할 수 없음" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC 오류 %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "파일 이름이 너무 긺" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "디스크 할당량을 초과함" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS 오류 %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "알 수 없는 대상" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: 지원하지 않는 NFS 버전" + +#~ msgid "No space left on device" +#~ msgstr "장치에 공간이 부족합니다" + +#~ msgid "Read only file system" +#~ msgstr "읽기 전용 파일 시스템" + +#~ msgid "Failed to mount %1" +#~ msgstr "%1을(를) 마운트할 수 없음" + +#~ 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..2ab8c88 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..0b70639 --- /dev/null +++ b/po/ko/kio5_sftp.po @@ -0,0 +1,276 @@ +# 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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-11-12 00:12+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 21.08.1\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "잘못되었거나 올바르지 않은 암호" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "콜백을 할당할 수 없음" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "기록 정도를 설정할 수 없습니다." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "사용자 데이터 기록을 설정할 수 없습니다." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "기록 콜백을 설정할 수 없습니다." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP 로그인" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "이 질문에 대답하려면 사용자 이름 입력 필드를 사용하십시오." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "암호를 입력하십시오." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "사이트:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "링크를 읽을 수 없음: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "새 SSH 세션을 만들 수 없습니다." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "시간 제한을 설정할 수 없습니다." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagle 알고리즘을 비활성화할 수 없습니다." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "압축을 설정할 수 없습니다." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "호스트를 설정할 수 없습니다." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "포트를 설정할 수 없습니다." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "사용자 이름을 설정할 수 없습니다." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "설정 파일을 처리할 수 없습니다." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "%1:%2(으)로 향한 SFTP 연결 여는 중" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "서버 공개 키 형식 이름을 가져올 수 없음" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "서버 공개 키에서 해시를 만들 수 없음" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "서버 공개 키의 지문을 만들 수 없음" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "경고: 호스트의 정체성을 검증할 수 없음." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "인증이 실패했습니다." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "인증이 실패했습니다. 서버에서 인증 방식을 제공하지 않았습니다" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "사용자 이름과 암호를 입력하십시오." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "잘못된 사용자 이름과 암호" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP 서브시스템에 요청할 수 없습니다. 서버에 SFTP가 활성화되어 있는지 확인하" +"십시오." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP 세션을 초기화할 수 없습니다." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1에 성공적으로 연결됨" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "잘못된 SFTP 콘텍스트" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"%1\n" +"의 권한을 바꿀 수 없습니다" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "계속 연결을 진행하시겠습니까?" diff --git a/po/ko/kio5_smb.po b/po/ko/kio5_smb.po new file mode 100644 index 0000000..2b8a6f4 --- /dev/null +++ b/po/ko/kio5_smb.po @@ -0,0 +1,195 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-05-16 22:31+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 20.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 "" +"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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"디렉터리도 파일도 아닌 알 수 없는 파일 형식입니다." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 장치에 미디어 없음" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 호스트에 접속할 수 없음" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 자원이 있는 서버에 연결하는 중 오류 발생" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "서버에 공유된 내용이 없음" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "잘못된 파일 설명자" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "%1에 접근하는 중 오류 발생%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmclient의 콘텍스트를 만들 수 없음" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"마운트 지점 \"%1\"의 마운트를 해제하는 데 실패했습니다.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..c76f505 --- /dev/null +++ b/po/ko/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "디렉터리 축소판을 만들 수 없습니다" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "플러그인이 지정되지 않았습니다." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "축소판 생성기 %1을(를) 불러올 수 없습니다" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1의 축소판을 만들 수 없습니다" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "축소판을 만들 수 없습니다." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "그림을 쓸 수 없습니다." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "공유 메모리 조각 %1에 붙일 수 없습니다." + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "공유 메모리 조각보다 그림이 큽니다" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..ba3100b --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Atkurti &automatiškai" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "pradėti atkūrimą" + +#: mediacontrols_p.h:44 +#, 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..eb9de7e --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Veiklos" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Įkeliama..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Veiklų tvarkytuvė neveikia" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Susieti su dabartine veikla" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Atsieti nuo dabartinės veiklos" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Susieti su:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Atsieti nuo:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Veikla" + +#: KioActivities.cpp:223 +#, 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..0bfd075 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..3dae99b --- /dev/null +++ b/po/lt/kio5_bookmarks.po @@ -0,0 +1,63 @@ +# 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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-08-21 19:03+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" +"X-Generator: Poedit 3.0\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Šakninis aplankas" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Vietos" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Nepavyko rasti žymelių konfigūracijos" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Nepavyko rasti žymelių redaktoriaus" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Bloga užklausa: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Dar nėra žymelių, kurias būtų galima rodyti." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..ff1fe14 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Jungiamasi..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicijuojamas protokolas..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Vietinis prisijungimas" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH tapatybės nustatymas" + +#: fish.cpp:759 +#, 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..d0ca73c --- /dev/null +++ b/po/lt/kio5_info.po @@ -0,0 +1,28 @@ +# 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: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-08-26 13:40+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: Poedit 2.3\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Nepavyko nustatyti šios paslaugos veikimui reikalingų failų vietos:
        " +"%1
        Patikrinkite programinės įrangos diegimą." diff --git a/po/lt/kio5_man.po b/po/lt/kio5_man.po new file mode 100644 index 0000000..e4d181e --- /dev/null +++ b/po/lt/kio5_man.po @@ -0,0 +1,236 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        KDE Man žiūriklio klaida

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Antraštės failai" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Antraštės failai (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Naudotojo komandos" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Naudotojo komandos (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Sistemos iškvietimai" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Paprogramės" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perlo moduliai" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Tinklo funkcijos" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Įrengimai" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Failų formatai" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Žaidimai" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Įvairūs" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Sistemos administravimas" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Branduolys" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Vietinė dokumentacija" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nauja" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX vadovų (man) rodyklė" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Skyrius %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Sekcijos indeksas %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX vadovų (man) rodyklė" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Generuoju rodyklę" + +#: kio_man.cpp:1389 +#, 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 %1 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..d44d779 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Negalima kopijuoti/perkelti failus į patį įrenginį" diff --git a/po/lt/kio5_nfs.po b/po/lt/kio5_nfs.po new file mode 100644 index 0000000..960eb7b --- /dev/null +++ b/po/lt/kio5_nfs.po @@ -0,0 +1,71 @@ +# 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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-08-26 13:38+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.3\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Nepavyksta rasti NFS versijos, kurią palaikytų mazgas „%1“" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "NFS protokolas reikalauja serverio mazgo pavadinimo." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Nepavyko inicijuoti protokolo" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC klaida %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Failo pavadinimas yra per ilgas" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Viršyta leidžiamo duomenų kiekio riba" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS klaida %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Nežinoma paskirtis" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Nepalaikoma NFS versija" + +#~ msgid "No space left on device" +#~ msgstr "Įrenginyje nebeliko vietos" + +#~ msgid "Read only file system" +#~ msgstr "Tik skaitymui skirta failų sistema" + +#~ msgid "Failed to mount %1" +#~ msgstr "Nepavyko prijungti %1" diff --git a/po/lt/kio5_recentdocuments.po b/po/lt/kio5_recentdocuments.po new file mode 100644 index 0000000..c958dab --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..9acd9e3 --- /dev/null +++ b/po/lt/kio5_sftp.po @@ -0,0 +1,306 @@ +# 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: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-08-21 19:33+0300\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: Poedit 3.0\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Neteisinga ar netinkama slaptafrazė" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nepavyko sukurti atgalinių kvietimų" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nepavyko nustatyti žurnalo detalumo." + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Nepavyko nustatyti žurnalo detalumo." + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Nepavyko sukurti atgalinių kvietimų" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP prisiregistravimas" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Atsakykite į šitą klausimą naudotojo vardo įvedimo lauke." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "Prašome įvesti savo slaptažodį." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Sritis:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Nepavyko perskaityti nuorodos: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nepavyko sukurti naujos SSH sesijos." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nepavyko nustatyti skirto laiko." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Nepavyko nustatyti prievado." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Nepavyko nustatyti suspaudimo." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Nepavyko nustatyti mazgo." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Nepavyko nustatyti prievado." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Nepavyko nustatyti naudotojo vardo." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nepavyko išnagrinėti konfigūracinio failo." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Nepavyko iš serverio viešojo rakto sukurti maišos" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Nepavyko serverio viešajam raktui sukurti kontrolinį kodą" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Įspėjimas: Nepavyksta patikrinti mazgo tapatybės." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Autentikavimas nepavyko." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Tapatybės nustatymas nepavyko. Serveris nesiuntė jokių tapatybės nustatymo " +"metodų" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Prašome įvesti naudotojo vardą ir slaptažodį." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Neteisingas naudotojo vardas ar slaptažodis" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nepavyko pradėti SFTP sesijos." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Sėkmingai prisijungta prie %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Neteisingas sftp kontekstas" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nepavyko pakeisti leidimų objektui\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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ą?" diff --git a/po/lt/kio5_smb.po b/po/lt/kio5_smb.po new file mode 100644 index 0000000..a19c35a --- /dev/null +++ b/po/lt/kio5_smb.po @@ -0,0 +1,200 @@ +# 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: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-08-21 19:31+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" +"X-Generator: Poedit 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 "" +"Yra įvairių būdų kaip nusistatyti tapatybę SMB viešiniuose.naudotojo vardas: Nustatant tapatybę " +"namų tinkle, pakanka naudotojo vardo serveryjenaudotojo_vardas@sritis.com: " +"Šiuolaikiniai kolektyviniai prisijungimo vardai yra formuojami kaip el. " +"pašto adresaiSRITIS\n" +"audotojo_vardas: Senesniuose kolektyviniuose tinkluose ar " +"darbo grupėse gali tekti pradžioje pridėti NetBIOS srities vardą (iki " +"Windows 2000)anonimas: Anoniminiai " +"prisijungimai gali būti bandomi naudojant tuščią naudotojo vardą ir " +"slaptažodį. Priklausomai nuo serverio konfigūracijos, gali būti reikalaujama " +"netuščių naudotojo vardų" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Įveskite tapatybės nustatymo informaciją, skirtą %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Įveskite tapatybės nustatymo informaciją:\n" +"Serveris = %1\n" +"Viešinys = %2" + +#: kio_smb_browse.cpp:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Nežinomas nei failo tipas, nei aplankas, nei failas." + +#: kio_smb_browse.cpp:281 +#, 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 užkarda." + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Įrenginyje %1 nėra laikmenos" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 negalėjo prisijungti prie mazgo" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Klaida bandant prisijungti prie serverio, atsakingo už %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Nepavyko rasti viešinio nurodytame serveryje" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Blogas failo deskriptorius" + +#: kio_smb_browse.cpp:320 +#, 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 "" +"Nurodyto vardo šiame serveryje nepavyko pritaikyti. Patikrinkite, ar jūsų " +"tinklas yra nustatytas taip, kad jame nebūtų Windows ir UNIX vartojamų vardų " +"sistemų konfliktų." + +#: kio_smb_browse.cpp:327 +#, 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: Mazgas nepasiekiamas" + +#: kio_smb_browse.cpp:330 +#, 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 bandėte tinklą naršyti (jame gali būti privačios informacijos, tad, jei " +"nesate dėl to tikri, neskelbkite to viešai. Jei programuotojai paprašys, " +"galite jiems tai nusiųsti privačiai)" + +#: kio_smb_browse.cpp:343 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Nežinoma klaidos būsena: [%1] %2" + +#: kio_smb_browse.cpp:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Klaida bandant gauti prieigą prie %1%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient programai nepavyko sukurti konteksto" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Įsitikinkite, kad samba paketas yra tinkamai į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 "" +"Viešinio „%1“ prijungimas iš mazgo „%2“, kurį atliko naudotojas „%3“, " +"nepavyko.\n" +"%4" + +#: kio_smb_mount.cpp:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Prijungimo taško „%1“ atjungimas patyrė nesėkmę.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Nežinomas įrenginys ties %1" + +#~ 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..2dc6a5e --- /dev/null +++ b/po/lt/kio5_thumbnail.po @@ -0,0 +1,74 @@ +# 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: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2021-08-21 18:59+0300\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: Poedit 3.0\n" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nepavyksta sukurti miniatiūros aplankui" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nenurodytas papildinys." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nepavyksta įkelti ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nepavyksta sukurti miniatiūros %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Nepavyko sukurti miniatiūros." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Nepavyko įrašyti atvaizdo." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Nepavyko prisijungti prie dalinamo atminties segmento %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Atvaizdas per didelis dalinamam atminties segmentui" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Automatiškai pasukti nuotrauką" diff --git a/po/lv/kfileaudiopreview5.po b/po/lv/kfileaudiopreview5.po new file mode 100644 index 0000000..ee7499b --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Automātiski atskaņot" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "sākt atskaņot" + +#: mediacontrols_p.h:44 +#, 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..4b73dba --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "KDE aktivitāšu pārvaldnieks" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:223 +#, 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..bc288a2 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..8378d35 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Sakne" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Vietas" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Nepareizs pieprasījums: %1" + +#: kio_bookmarks_html.cpp:85 +#, 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:124 +#, 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:133 +#, 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..5fc0c48 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Pieslēdzas..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicializē protokolu..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokālā pieteikšanās" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH autorizēšanās" + +#: fish.cpp:759 +#, 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..8840031 --- /dev/null +++ b/po/lv/kio5_info.po @@ -0,0 +1,34 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..267bf39 --- /dev/null +++ b/po/lv/kio5_man.po @@ -0,0 +1,233 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        KDE Man skatītāja kļūda

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Lietotāja komandas" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Lietotāja komandas" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Sistēmas izsaukumi" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subrutīnas" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "\"Perl\" moduļi" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Tīkla funkcijas" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Ierīces" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Failu formāti" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Spēles" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Dažādi" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Sistēmas administrēšana" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kodols" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Vietēja dokumentācija" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Jauns" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX rokasgrāmatas satura rādītājs" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sekcija %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Sekcijas %1: %2 indekss" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX rokasgrāmatas satura rādītājs" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Ģenerēju indeksu" + +#: kio_man.cpp:1389 +#, 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 %1 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..b82b375 --- /dev/null +++ b/po/lv/kio5_nfs.po @@ -0,0 +1,69 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Faila nosaukums par garu" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Pārsniegta diska kvota " + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Uz ierīces vairs nav brīvas vietas" + +#~ msgid "Read only file system" +#~ msgstr "Tikai lasāma failu sistēma" + +#~ 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..a0b0205 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..ef523eb --- /dev/null +++ b/po/lv/kio5_sftp.po @@ -0,0 +1,310 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Nepareizs lietotājvārds vai parole" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nebija iespējams piešķirt atpakaļizsaukumus" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Neizdevās iestatīt žurnalēšanas detalitāti." + +#: kio_sftp.cpp:276 +#, 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:281 +#, 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:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP pieteikšanās" + +#: kio_sftp.cpp:367 +#, 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:380 +#, 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:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "vietne:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Neizdevās nolasīt saiti: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Neizdevās sākt jaunu SSH sesiju." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Neizdevās iestatīt noildzi." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Neizdevās iestatīt portu." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Neizdevās iestatīt kompresiju." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Neizdevās iestatīt resursdatora nosaukumu." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Neizdevās iestatīt portu." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Neizdevās iestatīt lietotājvārdu." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Neizdevās parsēt konfigurācijas failu." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, 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:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Neveiksmīga autentificēšanās." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Lūdzu ievadiet jūsu lietotājvārdu un paroli." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nepareizs lietotājvārds vai parole" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Neizdevās sākt SFTP sesiju." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Veiksmīgi pieslēdzies %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Neizdevas izmainīt atļaujas priekš\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..881acbc --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Nav datu nesēja ierīcē priekš %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Neizdevās pieslēgties datoram priekš %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Nederīgs faila deskriptors" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient nezidevās izveidot kontekstu" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Montēšanas punkta \"%1\" atmontēšana neizdevās.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..981396e --- /dev/null +++ b/po/lv/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nevar izveidot sīktēlu mapei" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nav norādīts spraudnis" + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nevar ielādēt ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nevar izveidot sīktēlu %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Sīktēla izveide nav izdevusies." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Nevar ierakstīt attēlu." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Neizdevās pievienoties koplietošanas atmiņas apgabalam %1" + +#: thumbnail.cpp:324 +#, 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 "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Automātiski rotēt attēlu" + +#~ 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..5a5e0ab --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&സ്വയം പ്രേരിതമായി പാടുക" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "പാടാന്‍ തുടങ്ങുക" + +#: mediacontrols_p.h:44 +#, 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..2ab62ff --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "ഈ ഫയല്‍ തുറക്കാന്‍ പറ്റിയില്ല, ചിലപ്പോള്‍ പിന്തുണയില്ലാത്ത ഫയല്‍തരമായതുമൂലമാകാം.%1" + +#: kio_archivebase.cpp:505 +#, 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..4a03aa9 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "റൂട്ട്" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "സ്ഥാനങ്ങള്‍" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "തെറ്റായ അപേക്ഷ: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "ഇതു് വരെ ഓര്‍മ്മക്കുറിപ്പുകളൊന്നും കാണിയ്ക്കാനില്ല." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..c7716ca --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "ബന്ധപ്പെടുന്നു..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "നിയമാവലി ആരംഭിക്കുന്നു..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "പ്രാദേശിക ലോഗിന്‍" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "എസ്.എസ്.എച്ച് അധികാരപ്പെടുത്തല്‍" + +#: fish.cpp:759 +#, 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..e9678b5 --- /dev/null +++ b/po/ml/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. +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..fdb06e7 --- /dev/null +++ b/po/ml/kio5_man.po @@ -0,0 +1,231 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "ഉപയോക്താവിന്റെ ആജ്ഞകള്‍" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "ഉപയോക്താവിന്റെ ആജ്ഞകള്‍" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "സിസ്റ്റത്തിന്റെ വിളികള്‍" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "സബ്റൂട്ടീന്‍സ്" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "പേള്‍ മോഡ്യൂളുകള്‍" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "ശൃംഖലയിലെ ധര്‍മ്മങ്ങള്‍" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "ഉപകരണങ്ങള്‍" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "ഫയല്‍ ഫോര്‍മാറ്റുകള്‍" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "കളികള്‍" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "മറ്റുള്ളവ" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "സിസ്റ്റം ഭരണപരമായ" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "കെര്‍ണല്‍" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "പ്രാദേശികമായ സഹായക്കുറിപ്പുകള്‍" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "പുതിയതു്" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "യൂണിക്സ് മാനുവല്‍ സൂചിക" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "ഭാഗം %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "ഭാഗം %1: %2 ഇനുള്ള സൂചിക" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "യൂണിക്സ് മാനുവല്‍ സൂചിക" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "ജെനറേറ്റിങ്ങ് സൂചിക" + +#: kio_man.cpp:1389 +#, 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 %1 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..f8e4c7f --- /dev/null +++ b/po/ml/kio5_nfs.po @@ -0,0 +1,68 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "ഫയല്‍നാമം വളരെ വലുതാണു്" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "ഡിസ്ക് കോട്ടായുടെ പരിധി കഴിഞ്ഞിരിക്കുന്നു" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "ഡിവൈസില്‍ സ്ഥലം ലഭ്യമല്ല" + +#~ msgid "Read only file system" +#~ 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..138840d --- /dev/null +++ b/po/ml/kio5_sftp.po @@ -0,0 +1,325 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "നല്‍കിയ ഉപയോക്തൃനാമം അല്ലെങ്കില്‍ പാസ്‌വേര്‍ഡ് തെറ്റാണു്." + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set log userdata." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set log callback." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP ലോഗിന്‍" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" + +#: kio_sftp.cpp:380 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "ദയവായി നിങ്ങളുടെ ഉപയോക്തൃനാമവും പാസ്‌വേര്‍ഡും നല്‍കുക." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "സൈറ്റ്:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set a timeout." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not disable Nagle's Algorithm." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:615 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set port." +msgstr "SFTP പാക്കറ്റ് ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:647 +#, 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:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "മുന്നറിയിപ്പു്: ഹോസ്റ്റിനെ തിരിച്ചറിയുവാന്‍ സാധ്യമല്ല." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "തിരിച്ചറിയല്‍ പരാജയപ്പെട്ടു." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "ദയവായി നിങ്ങളുടെ ഉപയോക്തൃനാമവും പാസ്‌വേര്‍ഡും നല്‍കുക." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "നല്‍കിയ ഉപയോക്തൃനാമം അല്ലെങ്കില്‍ പാസ്‌വേര്‍ഡ് തെറ്റാണു്." + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1-മായി വിജയകരമായി ബന്ധം സ്ഥാപിച്ചിരിക്കുന്നു." + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" + +#, 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..f2615b1 --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"തിരിച്ചറിയാത്ത തരം ഫയല്‍ , ഇതു തട്ടവുമല്ല ഫയലുമല്ല" + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1-ഇനുള്ള ഉപകരണത്തിനു മീഡിയ ഇല്ല" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1-ഇനു വേണ്ടി ആഥിതേയനിലേക്കു ബന്ധപ്പെടാന്‍ കഴിജില്ല" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 ഇനുത്തരവാദിയായ സറ്വറിലോട്ടു ബന്ധപ്പെടുന്നതില്‍ പിശക്" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "'പങ്കുവയ്ക്കല് ' തന്നിരിക്കുന്ന സര്‍വറേല്‍ കണ്ടു പിടിക്കാന്‍ കഴിഞ്ഞില്ല" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "മോശമായ ഫയല്‍ ഡിസ്ക്രിപ്റ്റര്‍" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "ലൈബ്-എസ്-എം-ബി ക്ലയന്റ്(libsmbclient) ഇനു കോണ്ടെക്സ്റ്റ് ഉണ്ടാക്കുവാന്‍ കഴിഞില്ല" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"മൗണ്ട്-പോയിന്റ് \"%1\"-ഇന്റെ അണ്‍മൗണ്ടിങ്ങ് പരാജയപ്പെട്ടു.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..a98bd7a --- /dev/null +++ b/po/ml/kio5_thumbnail.po @@ -0,0 +1,81 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, fuzzy, kde-format +#| msgid "Cannot create thumbnail for %1" +msgid "Cannot create thumbnail for directory" +msgstr "നഖച്ചിത്രം %1-ഇനു ഉണ്ടാക്കുവാന് കഴിയുന്നില്ല" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "സംയോജകം വ്യക്തമാക്കിയിട്ടില്ല" + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "നഖച്ചിത്രനിര്‍മ്മാതാവു് %1 എടുക്കുവാന്‍ കഴിയുന്നില്ല" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "നഖച്ചിത്രം %1-ഇനു ഉണ്ടാക്കുവാന് കഴിയുന്നില്ല" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "നഖച്ചിത്രം ഉണ്ടാക്കുവാന്‍ കഴിയുന്നില്ല" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "ചിത്രം എഴുതുവാന്‍ കഴിയുന്നില്ല" + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "%1 എന്ന പങ്കുവെച്ച മെമ്മറിയിലേക്ക് കൂട്ടിവെക്കുവാന്‍ കഴിഞ്ഞില്ല" + +#: thumbnail.cpp:324 +#, 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..c75ca77 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "स्वयंचलितरित्या प्ले करा" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "प्लेबॅक सुरु करा" + +#: mediacontrols_p.h:44 +#, 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..2bae5be --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activities" +msgstr "कार्यपध्दती" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "कार्यपध्दती व्यवस्थापक नीट काम करत नाही." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "वर्तमान कार्यपध्दतीस लिंक करा" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "वर्तमान कार्यपध्दती पासून अनलिंक करा" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "यास लिंक करा :" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "या पासून अनलिंक करा :" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, fuzzy, kde-format +#| msgid "Activities" +msgid "Activity" +msgstr "कार्यपध्दती" + +#: KioActivities.cpp:223 +#, 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..295231b --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"फाईल उघडू शकत नाही, संभाव्यतया असमर्थीत फाईल प्रकारमुळे होत असावे.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..8719bac --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "रूट" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "जागा" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "चूकीची विनंती: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "प्रदर्शन करिता ओळखचिन्ह नाही." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..5bc8d91 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "जोडत आहे..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "शिष्टाचार प्रारंभ करत आहे..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "स्थानिक प्रवेश" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH अधिप्रमाणन" + +#: fish.cpp:759 +#, 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..54ddba3 --- /dev/null +++ b/po/mr/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..62c8899 --- /dev/null +++ b/po/mr/kio5_man.po @@ -0,0 +1,236 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "हेडर फाईल्स" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "हेडर फाईल्स (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "वापरकर्ता आदेश" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "वापरकर्ता आदेश (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "प्रणाली कॉल" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "उपकार्यक्रम" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl विभाग" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "संजाळ कार्ये" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "साधन" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "फाईल स्वरूप" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "खेळ" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "किरकोळ" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "प्रणाली व्यवस्थापक" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "कर्नल" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "स्थानिक दस्तऐवजीकरण" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "नवीन" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX पुस्तिका अनुक्रमणिका" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "विभाग %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "विभाग %1: %2 करिता अनुक्रमणिका" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX पुस्तिका अनुक्रमणिका" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "निर्देशिका बनवीत आहे" + +#: kio_man.cpp:1389 +#, 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 %1 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..e92e9f9 --- /dev/null +++ b/po/mr/kio5_nfs.po @@ -0,0 +1,69 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "फाईलनाव खूपच लांब आहे" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "डिस्क कोटा अपुरा आहे" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "या साधनावर रिकामी जागा उपलब्ध नाही" + +#~ msgid "Read only file system" +#~ 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..09b167c --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..a61d900 --- /dev/null +++ b/po/mr/kio5_sftp.po @@ -0,0 +1,410 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "अयोग्य किंवा चुकीचा गुप्तशब्द" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "पुन्हा बोलवण्याचे ठरवु शकत नाही" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "लॉग वाचाळता लागु करू शकत नाही." + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "लॉग वाचाळता लागु करू शकत नाही." + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "पुन्हा बोलवण्याचे ठरवु शकत नाही" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP प्रवेश" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "या प्रश्नाचे उत्तर देण्यासाठी वापरकर्तानाव हे इनपुट क्षेत्र वापरा." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "कृपया गुप्तशब्द दाखल करा." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "स्थळ:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "%1 ही लिंक वाचू शकत नाही" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "नवीन SSH सत्र तयार करू शकत नाही." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "वेळेचे बंधन लागु करू शकत नाही." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "पोर्ट लागु करू शकत नाही." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "संक्षिप्तीकरण लागु करू शकत नाही." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "यजमान लागु करू शकत नाही." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "पोर्ट लागु करू शकत नाही." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "वापरकर्तानाव लागु करू शकत नाही." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "संयोजना फाईलची व्याख्या वाचु शकत नाही." + +#: kio_sftp.cpp:647 +#, 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:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "वापरकर्तानाव लागु करू शकत नाही." + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "इशारा : यजमानची ओळख निश्चित करू शकत नाही." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "अधिप्रमाणन असफल." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "अधिप्रमाणन असफल. सर्व्हरने कोणतीही अधिप्रमाणन पद्धत पाठविली नाही." + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "कृपया वापरकर्तानाव व गुप्तशब्द दाखल करा." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "अयोग्य वापरकर्ता किंवा गुप्तशब्द" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"SFTP उपप्रणालीस विनंती करण्यास अपयश. SFTP सर्व्हरवर कार्यान्वित केलेले आहे याची खात्री " +"करा." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP सत्र सुरु करू शकत नाही." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "यशस्वीरित्या %1 शी जुळवणी स्थापीत केली" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"या साठी परवानगी बदलु शकत नाही\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "तुम्हाला पुढे जाण्याची खात्री आहे का?" + +#, 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..6caf1fb --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"अपरिचीत फाईल प्रकार, संचयीका किंवा फाईल परिचीत नाही." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 करिता साधन अंतर्गत मीडिया आढळले नाही" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 करिता यजमानशी जुळवणी स्थापीत करू शकत नाही" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1 करिता कारणीभूत ठरणाऱ्या सर्वशी जुळवणी स्थापीत करतेवेळी त्रुटी आढळली" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "दाखल सर्व्हरवर सहभाग आढळले नाही" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "अयोग्य फाईल वर्तक" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient संदर्भ बनविण्यास अपयशी ठरला" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"mountpoint \"%1\" चे अनारोहण अपयशी ठरले.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..41a7086 --- /dev/null +++ b/po/mr/kio5_thumbnail.po @@ -0,0 +1,89 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "लघुप्रतिमा संचयीका बनवू शकत नाही" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "प्लगइन निश्चित केले नाही." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 दाखल करू शकत नाही" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 करिता लघुप्रतिमा बनवू शकत नाही" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "लघुप्रतिमा बनविण्यास अपयशी." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "प्रतिमा लिहू शकत नाही." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "सहभागीय स्मृती भाग %1 शी जोडण्यास अपयशी ठरले" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "सहभागीय स्मृती भाग करिता प्रतिमा खूप मोठे आहे" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..0775956 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Spill av &automatisk" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "start avspilling" + +#: mediacontrols_p.h:44 +#, 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..b051ca9 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktiviteter" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Laster …" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktivitetsbehandler kjører ikke." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Lenk til gjeldende aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Lenk fra gjeldende aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Lenk til:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Lenk fra:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktivitet" + +#: KioActivities.cpp:223 +#, 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..8c4aed1 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..13bdcff --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Rot" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Steder" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Feil forespørsel: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Det er ingen bokmerker å vise ennå." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..d5788be --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Kobler til …" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Klargjør protokoll …" + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokal innlogging" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-autentisering" + +#: fish.cpp:759 +#, 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..028ed28 --- /dev/null +++ b/po/nb/kio5_info.po @@ -0,0 +1,27 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" diff --git a/po/nb/kio5_man.po b/po/nb/kio5_man.po new file mode 100644 index 0000000..66b6c36 --- /dev/null +++ b/po/nb/kio5_man.po @@ -0,0 +1,192 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Brukerkommandoer" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Brukerkommandoer (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Systemkall" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subrutiner" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-moduler" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Nettverksfunksjoner" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Enheter" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Filformater" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Spill" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Diverse" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Systemadministrasjon" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kjerne" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokal dokumentasjon" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Ny" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Del %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Lager indeks" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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..4690507 --- /dev/null +++ b/po/nb/kio5_nfs.po @@ -0,0 +1,60 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "For langt filnavn" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Diskkvote overskredet" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, 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..766d24d --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..2c1baa0 --- /dev/null +++ b/po/nb/kio5_sftp.po @@ -0,0 +1,225 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Ukorrekt eller ugyldig passord" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Klarte ikke å tilordne tilbakekall" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Klarte ikke angi ordrikhet for loggen." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Klarte ikke angi brukerdata for loggen." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Klarte ikke å tilordne tilbakekall for loggen." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP login" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Oppgi passordet ditt." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Nettsted:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Klarte ikke opprette en ny SSH-økt." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Klarte ikke angi et tidsavbrudd." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Klarte ikke angi kompresjon." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Klarte ikke angi vert." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Klarte ikke angi port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Klarte ikke angi brukernavn." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Kunne ikke tolke oppsettsfila." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Åpner SFTP-tilkobling til vert %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:700 +#, 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:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Advarsel: kan ikke verifisere vertens identitet." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Autentisering mislyktes." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Autentisering mislyktes. Tjeneren sendte ikke noen autentiseringsmetoder." + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Skriv inn brukernavn og passord." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Ukorrekt brukernavn eller passord" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Klarte ikke klargjøre SFTP-økta." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Vellykket tilkobling til %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Klarte ikke å forandre rettigheter for\n" +"%1" diff --git a/po/nb/kio5_smb.po b/po/nb/kio5_smb.po new file mode 100644 index 0000000..c317d92 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Ingen media i enheten for %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Klarte ikke kople til vert for %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Kunne ikke finne ressursen på angitt tjener" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient opprettet ikke kontekst" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Avmontering av «%1» mislyktes.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..afdcd1b --- /dev/null +++ b/po/nb/kio5_thumbnail.po @@ -0,0 +1,71 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kan ikke lage miniatyrbilder for mappa" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Intet programtillegg er angitt." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Kan ikke laste ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Kan ikke lage miniatyrbilder for %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Klarte ikke å lage et miniatyrbilde." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Klarte ikke å lagre bildet." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Klarte ikke å koble til minnedelen %1" + +#: thumbnail.cpp:324 +#, 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..3cce328 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Automaatsch afspelen" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "Afspelen starten" + +#: mediacontrols_p.h:44 +#, 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..be54d7d --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktiviteten" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Bi to laden..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "De Aktivitetenpleger löppt nich" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Na de aktuelle Aktiviteet towiesen" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Vun de aktuelle Aktiviteet aflösen" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Towiesen na:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Aflösen vun:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktiviteet" + +#: KioActivities.cpp:223 +#, 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..ebb5919 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..6018481 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Wörtel" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Steden" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Leeg Anfraag: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Dat gifft noch keen Leestekens, de sik wiesen laat." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..42b95dc --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "An't Tokoppeln..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokoll warrt torechtmaakt..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokaal Anmellen" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-Identiteetprööv" + +#: fish.cpp:759 +#, 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..c707507 --- /dev/null +++ b/po/nds/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. +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..5140d9d --- /dev/null +++ b/po/nds/kio5_man.po @@ -0,0 +1,235 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, 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:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Koppdateien" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Koppdateien (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Brukerbefehlen" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Brukerbefehlen (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Systeem-Oprööp" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Ünnerroutinen" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-Modulen" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Nettwark-Funkschonen" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Reedschappen" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Dateiformaten" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Spelen" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Anner Saken" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Systeempleeg" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokaal Dokmentatschoon" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nieg" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Man-Sieden-Index vun UNIX" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Afsnitt %1" + +#: kio_man.cpp:1103 +#, 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:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Man-Sieden-Index vun UNIX" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Index warrt opstellt" + +#: kio_man.cpp:1389 +#, 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 %1 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..70d64ba --- /dev/null +++ b/po/nds/kio5_nfs.po @@ -0,0 +1,69 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Dateinaam to lang" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Bi Fastplaat-Bruukgrenz anlangt" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Keen Platz mehr na op de Reedschap." + +#~ msgid "Read only file system" +#~ msgstr "Bloots leesbor Dateisysteem" + +#~ 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..4b4f9a2 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..0505afc --- /dev/null +++ b/po/nds/kio5_sftp.po @@ -0,0 +1,476 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Passwoort gellt nich oder is leeg" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Torüchrööp laat sik nich towiesen." + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Logbook-Snackhaftigkeit lett sik nich instellen." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Logbook-Brukerdaten laat sik nich fastsetten" + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Logbook-Torüchroop lett sik nich towiesen." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-Anmellen" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Giff bitte Dien Passwoort in." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Server:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Link lett sik nich lesen: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nieg SSH-Törn lett sik nich opstellen." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Tietgrenz lett sik nich instellen." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Port lett sik nich instellen." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Komprimeren lett sik nich instellen." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Reekner lett sik nich instellen." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Port lett sik nich instellen." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Brukernaam lett sik nich instellen." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "De Instellen-Datei lett sik nich inlesen." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Wohrscho: Identiteet vun den Reekner lett sik nich överpröven." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Identiteetprööv fehlslaan." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Bitte giff Dien Brukernaam un Passwoort in." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Brukernaam oder Passwoort gellt nich" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "De SFTP-Törn lett sik nich torechtmaken." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Verbinnen na %1 opstellt" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Verlöven laat sik nich ännern för:\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..79ae66c --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Keen Medium in Reedschap för %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Keen Verbinnen na den Reekner för %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Dateideskriptor nich bruukbor" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Afhangen ut \"%1\" fehlslaan.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..a4b22c1 --- /dev/null +++ b/po/nds/kio5_thumbnail.po @@ -0,0 +1,83 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Vöransicht för Orner lett sik nich opstellen" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Keen Plugin angeven." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 lett sik nich laden" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Vöransicht för \"%1\" lett sik nich opstellen" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Opstellen vun Vöransicht fehlslaan" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Bild lett sik nich schrieven." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Anfögen an Afsnitt %1 vun den deelten Spieker fehlslaan" + +#: thumbnail.cpp:324 +#, 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 "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Bild automaatsch dreihen" + +#~ 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..082ee9e --- /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 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/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/docs/kioslave5/zstd/index.docbook b/po/nl/docs/kioslave5/zstd/index.docbook new file mode 100644 index 0000000..a80d565 --- /dev/null +++ b/po/nl/docs/kioslave5/zstd/index.docbook @@ -0,0 +1,51 @@ + + + +]> + +
        +zstd + + +FriedrichW. H.Kossebau +&Freek.de.Kruijf; + + + +zstd is een compressieprogramma. + +De zstd kioslave is niet direct bruikbaar en is bedoeld voor gebruik als een filter. De tar kioslave kan, bijvoorbeeld, een bestand filteren via de zstd kioslave, Om de inhoud van een bestand tar.zst direct in een &konqueror;-venster te tonen. + +Als u in &konqueror; op een bestand klikt met de extensie zst, dan zal deze kioslave worden gebruikt om het uit te pakken en als een normaal niet-gecomprimeerd bestand tonen. + +Als u een ontwikkelaar bent en u wilt graag het zstd-filter gebruiken, dan kunt u informatie over het gebruik van kioslaves vinden op http://techbase.kde.org + +Zie de handleiding: zstd. + +
        diff --git a/po/nl/kfileaudiopreview5.po b/po/nl/kfileaudiopreview5.po new file mode 100644 index 0000000..22cd54a --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Automatisch afspelen" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "afspelen starten" + +#: mediacontrols_p.h:44 +#, 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..f1c5942 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Activiteiten" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Bezig met laden..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "De activiteitenbeheerder is niet actief" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Aankoppelen aan de huidige activiteit" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Afkoppelen van de huidige activiteit" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Aankoppelen aan:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Afkoppelen van:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Activiteit" + +#: KioActivities.cpp:223 +#, 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..4eb1b41 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..d6616b4 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Hoofdmap" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Plaatsen" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Kon configuratie voor bladwijzers niet vinden" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Kon bewerker van bladwijzers niet vinden" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Onjuist verzoek: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Er zijn nog geen bladwijzers om te weergeven." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..1011291 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Verbinden..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Bezig met initialiseren van protocol..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokaal aanmelden" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-authenticatie" + +#: fish.cpp:759 +#, 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..3109d4b --- /dev/null +++ b/po/nl/kio5_info.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. +# +# Freek de Kruijf , 2015, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-20 13:16+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.12.2\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Kan de bestanden niet vinden, die nodig zijn voor deze service:
        " +"%1
        Controleer uw software-installatie." diff --git a/po/nl/kio5_man.po b/po/nl/kio5_man.po new file mode 100644 index 0000000..3d30c74 --- /dev/null +++ b/po/nl/kio5_man.po @@ -0,0 +1,219 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-03 10:50+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.08.0\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "De man-pagina %1 kon niet worden gelezen." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "De man-pagina %1 kon niet worden geconverteerd." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Fout in man-paginaviewer" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Er is meer dan één man-pagina die overeenkomt:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Meerdere man-pagina's" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Header-bestanden" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Header-bestanden (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Gebruikerscommando's" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Gebruikerscommando's (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Systeemaanroepen" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subroutines" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-modules" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Netwerkfuncties" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Apparaten" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Bestandsformaten" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Spellen" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversen" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Systeemadministratie" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokale documentatie" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nieuw" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Index van hoofdman-pagina" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sectie %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index voor sectie %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Index van man-pagina" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Bezig met genereren van index" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 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..c7a39ea --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/nl/kio5_nfs.po new file mode 100644 index 0000000..4125677 --- /dev/null +++ b/po/nl/kio5_nfs.po @@ -0,0 +1,70 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-14 17:35+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.12.2\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Kan geen NFS-versie vinden die ondersteunt wordt door host '%1'" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Het NFS-protocol vereist een hostnaam van een server." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Protocol initialiseren is mislukt" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC-fout %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Bestandsnaam te lang" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Schijfquota overschreden" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS-fout %1,%2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Onbekend doel" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Niet-ondersteunde NFS-versie" + +#~ msgid "No space left on device" +#~ msgstr "Geen ruimte meer beschikbaar op het station." + +#~ msgid "Read only file system" +#~ msgstr "Alleen-lezen systeem" + +#~ msgid "Failed to mount %1" +#~ msgstr "Aankoppelen van %1 is mislukt" diff --git a/po/nl/kio5_recentdocuments.po b/po/nl/kio5_recentdocuments.po new file mode 100644 index 0000000..e58f6a4 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..47b9c19 --- /dev/null +++ b/po/nl/kio5_sftp.po @@ -0,0 +1,280 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2015, 2018, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-15 18:01+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.08.1\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Onjuiste of ongeldige wachtwoordzin" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Terugbellen kon niet worden toegekend" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Hoeveelheid logging instellen lukt niet." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Gebruikergegevens loggen instellen lukt niet." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Instelling van loggen van terugbellen lukt niet." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-login" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Voer uw wachtwoord in." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Site:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Koppeling lezen lukt niet van: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Kon geen nieuwe SSH-sessie aanmaken." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Tijdslimiet instellen lukt niet." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Kon Nagle's algoritme niet uitschakelen." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Compressie instellen lukt niet." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Host instellen lukt niet." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Poort instellen lukt niet." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Gebruikersnaam instellen lukt niet." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Configuratiebestand ontleden lukt niet." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Waarschuwing: de identiteit van de host kan niet worden geverifieerd." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Authenticatie is mislukt." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Voer uw gebruikersnaam en wachtwoord in." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Onjuiste gebruikersnaam of wachtwoord" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Kan de SFTP-sessie niet initialiseren." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Succesvol verbonden met %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ongeldige sftp-context" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Kon de toegangsrechten niet wijzigen voor\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" diff --git a/po/nl/kio5_smb.po b/po/nl/kio5_smb.po new file mode 100644 index 0000000..cddb8f3 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Geen medium in station voor %1" + +#: kio_smb_browse.cpp:292 +#, 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:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Onjuiste bestandsdescriptor" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient kon geen context aanmaken" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Afkoppelen van koppelpunt \"%1\" is mislukt.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..dec63b7 --- /dev/null +++ b/po/nl/kio5_thumbnail.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. +# +# Freek de Kruijf , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kan geen miniatuur aanmaken voor map" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Geen plugin opgegeven." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Kan ThumbCreator %1 niet laden" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Kan geen miniatuur aanmaken voor %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Aanmaken van een miniatuur is mislukt" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Afbeelding kon niet worden geschreven." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Verbinding met gedeeldgeheugensegment %1 is mislukt" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Afbeelding is te groot voor het gedeeldgeheugensegment" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Afbeelding automatisch draaien" diff --git a/po/nn/kfileaudiopreview5.po b/po/nn/kfileaudiopreview5.po new file mode 100644 index 0000000..d0dd280 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Spel av automatisk" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "start avspeling" + +#: mediacontrols_p.h:44 +#, 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..0b13f0e --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktivitetar" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Lastar …" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktivitetshandsamaren køyrer ikkje" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Lenkje til gjeldande aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Fjern lenkje frå gjeldande aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Lag lenkje til:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Fjern lenkje frå:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktivitet" + +#: KioActivities.cpp:223 +#, 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..fcb5d5d --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..a3d5983 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Rot" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Stadar" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Fann ikkje bokmerkeoppsettet" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Fann ikkje bokmerkeprogram" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Feil førespurnad: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Det finst ingen bokmerke å visa enno." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..84f3382 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Koplar til …" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Startar opp protokoll …" + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokal innlogging" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-autentisering" + +#: fish.cpp:759 +#, 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..b296b21 --- /dev/null +++ b/po/nn/kio5_info.po @@ -0,0 +1,30 @@ +# Translation of kio5_info to Norwegian Nynorsk +# +# Eirik U. Birkeland , 2009. +# Karl Ove Hufthammer , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-22 21:15+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.12.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Klarte ikkje finna filer som er nødvendig for å bruka denne tenesta.
        " +"%1
        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..05ba675 --- /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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Feil i KDE-manualsidevisar" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Det finst fleire enn éi manualside som passar:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Fleire manualsider" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Brukarkommandoar" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Brukarkommandoar (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Systemkall" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Underrutinar" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-modular" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Nettverksfunksjonar" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Einingar" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Filformat" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Spel" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Ymse" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Systemadministrasjon" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kjerne" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokale hjelpetekstar" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Ny" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Sideindeks for hovudmanual" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Kapittel %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Oversikt for bolk %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Sideindeks for manual" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Byggjer opp indeks" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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/nn/kio5_mtp.po b/po/nn/kio5_mtp.po new file mode 100644 index 0000000..fa70bf2 --- /dev/null +++ b/po/nn/kio5_mtp.po @@ -0,0 +1,35 @@ +# Translation of kio5_mtp to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2016, 2018, 2019. +# Øystein Steffensen-Alværvik , 2022. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\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 21.12.1\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_mtp.cpp:217 +#, 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:520 +#, 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_nfs.po b/po/nn/kio5_nfs.po new file mode 100644 index 0000000..e3b6769 --- /dev/null +++ b/po/nn/kio5_nfs.po @@ -0,0 +1,61 @@ +# Translation of kio5_nfs to Norwegian Nynorsk +# +# Gaute Hvoslef Kvalnes , 1999, 2000, 2001. +# Karl Ove Hufthammer , 2007, 2008, 2015, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-17 21:05+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.12.2\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Fann ikkje nokon NFS-versjon som verten «%1» støttar" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "NFS-protokollen krev eit tenarnamn/vertsnamn." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Klarte ikkje klargjera protokoll" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC-feil %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "For langt filnamn" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Diskkvote fylt" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS-feil %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, 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..13a2b2f --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..bae0044 --- /dev/null +++ b/po/nn/kio5_sftp.po @@ -0,0 +1,242 @@ +# 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. +# Oystein Steffensen-Alvaervik , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-12-15 13:01+0100\n" +"Last-Translator: Oystein Steffensen-Alvaervik \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 21.12.0\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Feil passord" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Klarte ikkje tildela tilbakefall" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Klarte ikkje definera detaljnivå på logg." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Klarte ikkje definera brukardata for logg." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Klarte ikkje tildela tilbakelogg for logg." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-innlogging" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Skriv inn passordet." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Nettstad:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Klarte ikkje lesa lenkja: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Klarte ikkje starta ny SSH-økt." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Klarte ikkje definera tidsavbrot." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Klarte ikkje slå av Nagles algoritme." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Klarte ikkje definera komprimeringsgrad." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Klarte ikkje definera vert." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Klart ikkje definera port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Klarte ikkje definera brukarnamn." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Klarte ikkje tolka oppsettfila." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Opnar SFTP-samband til vert %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Klarte ikkje henta namn på offentlegnøkkel til tenaren" + +#: kio_sftp.cpp:700 +#, 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:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Klarte ikkje laga fingeravtrykk for offentlegnøkkelen til tenaren" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Åtvaring: kan ikkje stadfesta identiteten til verten." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Feil ved autentisering." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Skriv inn brukarnamn og passord." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Feil brukarnamn eller passord" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Klarte ikkje starta SFTP-økta." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Vellukka tilkopling til %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ugyldig SFTP-kontekst" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Klarte ikkje endra løyva for\n" +"%1" diff --git a/po/nn/kio5_smb.po b/po/nn/kio5_smb.po new file mode 100644 index 0000000..642d25d --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Ingen medium i eininga for %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Klarte ikkje kopla til vert for %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Fann ikkje ressursen på tenaren" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Dårleg fildeskriptor" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient klarte ikkje oppretta samanheng" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Avmontering av «%1» mislukkast.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..0647a8a --- /dev/null +++ b/po/nn/kio5_thumbnail.po @@ -0,0 +1,71 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Klarte ikkje laga miniatyrbilete for mappa" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Ingen programtillegg valde." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Klarte ikkje lasta «ThumbCreator %1»" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Klarte ikkje laga miniatyrbilete for «%1»" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Klarte ikkje laga miniatyrbilete." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Klarte ikkje lagra biletet." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Klarte ikkje kopla til delt minneområde %1" + +#: thumbnail.cpp:324 +#, 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..20ceda9 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "ਆਟੋਮੈਟਿਕ ਚਲਾਓ(&a)" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "ਪਲੇਅਬੈਕ ਸ਼ੁਰੂ" + +#: mediacontrols_p.h:44 +#, 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..f2a6fd8 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "ਸਰਗਰਮੀ" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "...ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "ਸਰਗਰਮੀ ਮੈਨੇਜਰ ਨਹੀਂ ਚੱਲ ਰਿਹਾ ਹੈ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "ਮੌਜੂਦਾ ਸਰਗਰਮੀ ਲਈ ਲਿੰਕ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "ਮੌਜੂਦਾ ਸਰਗਰਮੀ ਤੋਂ ਅਣ-ਲਿੰਕ" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "ਨਾਲ ਲਿੰਕ:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "ਅਣਲਿੰਕ ਕਰੋ:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "ਸਰਗਰਮੀ" + +#: KioActivities.cpp:223 +#, 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..b66bdb9 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"ਫਾਈਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ, ਸੰਭਵ ਤੌਰ 'ਤੇ ਨਾ-ਸਹਾਇਕ ਫਾਈਲ ਫਾਰਮੈਟ ਹੈ:\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..ef9f9f5 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "ਰੂਟ" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "ਥਾਵਾਂ" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "ਗਲਤ ਮੰਗ: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "ਵੇਖਾਉਣ ਲਈ ਕੋਈ ਬੁੱਕਮਾਰਕ ਨਹੀਂ ਹੈ।" + +#: kio_bookmarks_html.cpp:124 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" + +#: kio_bookmarks_html.cpp:133 +#, 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..eb463c6 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "...ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "ਪਰੋਟੋਕਾਲ ਸ਼ੁਰੂ ਕੀਤਾ ਜਾਦਾ ਹੈ..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "ਲੋਕਲ ਲਾਗਇਨ" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH ਪਰਮਾਣਕਿਤਾ" + +#: fish.cpp:759 +#, 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..4c69afc --- /dev/null +++ b/po/pa/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..c1beb45 --- /dev/null +++ b/po/pa/kio5_man.po @@ -0,0 +1,213 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        KDE man ਦਰਸ਼ਕ ਗਲਤੀ

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files" +msgstr "ਹੈੱਡਰ ਫਾਈਲਾਂ (POSIX)" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "ਹੈੱਡਰ ਫਾਈਲਾਂ (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡਾਂ" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "ਯੂਜ਼ਰ ਕਮਾਂਡ (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "ਸਿਸਟਮ ਕਾਲ" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subroutines" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "ਪਰਲ ਮੋਡੀਊਲ" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "ਨੈੱਟਵਰਕ ਫੰਕਸ਼ਨ" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "ਜੰਤਰ" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "ਫਾਈਲ ਫਾਰਮੈਟ" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "ਖੇਡਾਂ" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "ਫੁਟਕਲ" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "ਸਿਸਟਮ ਪਰਸ਼ਾਸ਼ਨ" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "ਕਰਨਲ" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "ਲੋਕਲ ਡੌਕੂਮੈਂਟੇਸ਼ਨ" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "ਨਵਾਂ" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX ਮੇਨੂਅਲ ਇੰਡੈਕਸ" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "ਸ਼ੈਕਸ਼ਨ %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "ਸ਼ੈਕਸ਼ਨ %1 ਲਈ ਇੰਡੈਕਸ: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX ਮੇਨੂਅਲ ਇੰਡੈਕਸ" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "ਇੰਡੈਕਸ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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..5fe8678 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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..f0c394b --- /dev/null +++ b/po/pa/kio5_nfs.po @@ -0,0 +1,66 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "ਫਾਈਲ ਨਾਂ ਬਹੁਤ ਲੰਮਾ ਹੈ" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "ਡਿਸਟ ਕੋਟੇ ਤੋਂ ਵੱਧ ਗਿਆ ਹੈ" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "ਜੰਤਰ ਉੱਤੇ ਕੋਈ ਖਾਲੀ ਥਾਂ ਨਹੀਂ ਰਹੀ" + +#~ msgid "Read only file system" +#~ 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..4df1d5e --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..c0e1f72 --- /dev/null +++ b/po/pa/kio5_sftp.po @@ -0,0 +1,337 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "ਗਲਤ ਜਾਂ ਅਢੁੱਕਵਾਂ ਵਾਕ" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "callbacks ਜਾਰੀ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕੇ" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "ਲਾਗ ਵੇਰਵਾ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "ਲਾਗ ਯੂਜ਼ਰ-ਡਾਟਾ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "callbacks ਜਾਰੀ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕੇ" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP ਲਾਗਇਨ" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "ਇਹ ਸਵਾਲ ਦੇ ਜਵਾਬ ਲਈ ਯੂਜ਼ਰ-ਨਾਂ ਇੰਪੁੱਟ ਖੇਤਰ ਵਰਤੋਂ।" + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "ਆਪਣਾ ਪਾਸਵਰਡ ਦਿਉ ਜੀ।" + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "ਸਾਇਟ:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "ਲਿੰਕ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "ਨਵਾਂ SSH ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "ਟਾਈਮ-ਆਉਟ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "ਪੋਰਟ ਸੈੱਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "ਕੰਪਰੈਸ਼ਨ ਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "ਹੋਸਟ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "ਪੋਰਟ ਸੈੱਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "ਸੰਰਚਨਾ ਫਾਈਲ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।" + +#: kio_sftp.cpp:647 +#, 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:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "ਚੇਤਾਵਨੀ: ਹੋਸਟ ਦੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਹੋ ਸਕੀ ਹੈ।" + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "ਪਰਮਾਣਕਤਾ ਅਸਫਲ ਹੈ।" + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "ਆਪਣਾ ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਪਾਸਵਰਡ ਦਿਓ ਜੀ।" + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "SFTP ਸਬ-ਸਿਸਟਮ ਲਈ ਮੰਗ ਵਾਸਤੇ ਅਸਮਰੱਥ ਹੈ। ਯਕੀਨੀ ਬਣਾਉ ਕਿ ਸਰਵਰ ਉੱਤੇ SFTP ਚਾਲੂ ਹੈ।" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "ਸਫਲਤਾਪੂਰਕ %1 ਨਾਲ ਜੋੜਿਆ ਗਿਆ" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"%1\n" +"ਲਈ ਅਧਿਕਾਰ ਬਦਲੇ ਨਹੀਂ ਜਾ ਸਕੇ" + +#~ 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..66d3055 --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"ਅਣਜਾਣੀ ਫਾਈਲ ਕਿਸਮ, ਨਾ ਡਾਇਰੈਕਟਰੀ ਹੈ ਜਾਂ ਫਾਈਲ ਹੈ।" + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 ਲਈ ਜੰਤਰ ਵਿੱਚ ਕੋਈ ਮੀਡਿਅਮ ਨਹੀਂ ਹੈ" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 ਲਈ ਹੋਸਟ ਨਾਲ ਜੁੜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "ਸਰਵਰ, ਜੋ ਕਿ %1 ਲਈ ਜਿੰਮੇਵਾਰ ਹੈ, ਨਾਲ ਜੁੜਨ ਦੌਰਾਨ ਗਲਤੀ" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "ਦਿੱਤੇ ਸਰਵਰ ਤੇ ਸਾਂਝ ਖੋਜੀ ਨਹੀਂ ਜਾ ਸਕੀ ਹੈ" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "ਗਲਤ ਫਾਈਲ ਵਰਣਨਕਰਤਾ" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient ਭਾਗ ਬਣਾਉਣ ਲਈ ਅਸਫਲ" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"ਮਾਊਟ-ਪੁਆਇੰਟ \"%1\" ਨੂੰ ਅਣ-ਮਾਊਟ ਕਰਨਾ ਅਸਫ਼ਲ ਹੈ।\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..8864710 --- /dev/null +++ b/po/pa/kio5_thumbnail.po @@ -0,0 +1,83 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "ਡਾਇਰੈਕਟਰੀ ਲਈ ਥੰਮਨੇਲ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "ਕੋਈ ਪਲੱਗਇਨ ਨਹੀਂ ਦਿੱਤੀ ਗਈ ਹੈ।" + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 ਲਈ ਥੰਮਨੇਲ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "ਥੰਮਨੇਲ ਬਣਾਉਣ ਲਈ ਅਸਫ਼ਲ ਹੈ।" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "ਚਿੱਤਰ ਲਿਖਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।" + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "ਸਾਂਝਾ ਮੈਮੋਰੀ ਸਿਗਮਿੰਟ %1 ਨਾਲ ਜੁੜਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "ਚਿੱਤਰ ਸਾਂਝੀ ਮੈਮੋਰੀ ਸਿਗਮਿੰਟ ਵਿੱਚ ਸਮਾ ਨਹੀਂ ਸਕਦਾ ਹੈ" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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..602707a --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Odtwarzaj &automatycznie" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "rozpocznij odtwarzanie" + +#: mediacontrols_p.h:44 +#, 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..931d844 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktywności" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Wczytywanie..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Program do zarządzania aktywnościami nie został uruchomiony." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Dowiąż do bieżącej aktywności" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Usuń dowiązanie z bieżącej aktywności" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Dowiąż do:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Usuń dowiązanie z:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktywność" + +#: KioActivities.cpp:223 +#, 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..0a852c8 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..c28ad71 --- /dev/null +++ b/po/pl/kio5_bookmarks.po @@ -0,0 +1,82 @@ +# 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. +# Łukasz Wojniłowicz , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-01-01 11:45+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 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_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Katalog główny" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Miejsca" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Nie można znaleźć ustawień zakładek" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Nie można znaleźć edytora zakładek" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Złe zapytanie: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Nie ma żadnych zakładek do wyświetlenia." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..e72381d --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Łączenie..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicjowanie protokołu..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Logowanie lokalne" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Uwierzytelnienie SSH" + +#: fish.cpp:759 +#, 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..9ff7194 --- /dev/null +++ b/po/pl/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. +# +# Marta Rybczyńska , 2009. +# Łukasz Wojniłowicz , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-03-20 07:27+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 20.12.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" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Nie można odnaleźć plików, które są wymagane do uruchomienia tej usługi.
        " +"%1
        Sprawdź instalację swojego oprogramowania." diff --git a/po/pl/kio5_man.po b/po/pl/kio5_man.po new file mode 100644 index 0000000..aeb44bf --- /dev/null +++ b/po/pl/kio5_man.po @@ -0,0 +1,221 @@ +# Version: $Revision: 1608698 $ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-12 09:49+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 20.12.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_man.cpp:458 +#, 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 "" +"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:574 +#, kde-kuit-format +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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "Nie można odczytać strony podręcznika %1." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "Nie można przekształcić strony podręcznika %1." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Błąd przeglądarki stron podręcznika" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Pasuje kilka stron podręcznika:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Wiele stron podręcznika" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Pliki nagłówkowe" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Pliki nagłówkowe (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Polecenia użytkownika" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Polecenia użytkownika (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Wywołania systemowe" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Podprogramy" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Moduły Perla" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funkcje sieciowe" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Urządzenia" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formaty plików" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Gry" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Inne" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administracja systemu" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Jądro" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Dokumentacja lokalna" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nowy" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Strona spisu treści głównego podręcznika" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Rozdział %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Spis treści rozdziału %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Strona spis treści podręcznika" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Tworzenie spisu treści" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1. Wgraj lub popraw " +"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..448bb44 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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..f655507 --- /dev/null +++ b/po/pl/kio5_nfs.po @@ -0,0 +1,76 @@ +# translation of kio_nfs.po to Polish +# Version: $Revision: 1601248 $ +# translation of kio_nfs.po to +# Norbert Popiołek +# Michal Rudolf , 2004. +# Łukasz Wojniłowicz , 2014, 2016, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-03-20 07:28+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 20.12.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_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Nie można znaleźć wersji NFS, którą obsługuje gospodarz '%1'" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Protokół NFS wymaga nazwy gospodarza serwera." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Nie udało się rozpocząć protokołu" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Błąd RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Za długa nazwa pliku" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Przekroczone dostępne miejsce na dysku" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Błąd NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Nieznany cel" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Nieobsługiwana wersja NFS" + +#~ msgid "No space left on device" +#~ msgstr "Brak wolnego miejsca na tym urządzeniu" + +#~ msgid "Read only file system" +#~ msgstr "System plików tylko do odczytu" + +#~ msgid "Failed to mount %1" +#~ msgstr "Nieudane podpinanie %1" + +#~ 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..843e954 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..c47c9fe --- /dev/null +++ b/po/pl/kio5_sftp.po @@ -0,0 +1,448 @@ +# translation of kio_sftp.po to +# Version: $Revision: 1611689 $ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-23 12: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" +">\n" +"X-Generator: Lokalize 20.12.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_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Niepoprawne lub nieprawidłowe hasło" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nie można przydzielić wywołań zwrotnych" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nie można ustawić szczegółowości dziennika." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Nie można ustawić dziennika danych użytkownika." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Nie można ustawić dziennika wywołań wstecznych." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Logowanie SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Proszę podać swoje hasło." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Strona:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Nie można odczytać łącza: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nie można utworzyć nowej sesji SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nie można ustawić limitu czasowego." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nie można wyłączyć algorytmu Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Nie można ustawić poziomu kompresji." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Nie można ustawić gospodarza." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Nie można ustawić portu." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Nie można ustawić nazwy użytkownika." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nie można rozczłonkować pliku konfiguracji." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Ustalanie połączenia SFTP do gospodarza %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Nie można uzyskać nazwy rodzaju klucza publicznego serwera" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Nie można utworzyć hasza z klucza publicznego serwera" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Nie można utworzyć odcisku palca klucza publicznego serwera" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Uwaga: Nie można potwierdzić tożsamości gospodarza." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Uwierzytelnianie nie powiodło się." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Proszę podać nazwę użytkownika i hasło." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Zła nazwa użytkownika lub hasło" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nie można zainicjować sesji SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Pomyślnie podłączono do %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Nieprawidłowy kontekst sftp" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nie można zmienić uprawnień dla\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..2f37e2c --- /dev/null +++ b/po/pl/kio5_smb.po @@ -0,0 +1,211 @@ +# translation of kio_smb.po to polish +# translation of kio_smb.po to +# Version: $Revision: 1609756 $ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-01-01 11:44+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 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 "" +"Istnieje kilka możliwości na uwierzytelnienie udziałów SMB.username: Do uwierzytelniania w sieci " +"domowej, nazwa użytkownika na serwerze jest wystarczającausername@domain.com: Nowoczesne " +"służbowe nazwy użytkowników wyglądają jak adresy pocztowe DOMAIN\\username: Dla przestarzałych " +"sieci służbowych lub grup pracy, w których była potrzeba wstawienia " +"przedrostka domeny NetBIOS (przed Windows 2000)anonymous: Anonimowe wejścia są " +"dozwolone na podstawie pustej nazwy użytkownika i hasła. W zależności od " +"ustawień serwera, może być wymagana niepusta nazwa użytkownika" + +#: 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:62 +#, 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:281 +#, 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:286 +#, 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:292 +#, 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:304 +#, 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:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Nie znaleziono zasobu na podanym serwerze" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Zły deskryptor pliku" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient nie mógł utworzyć kontekstu" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, 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:173 +#, 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..4b113ef --- /dev/null +++ b/po/pl/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nie można utworzyć miniaturki dla katalogu" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nie podano wtyczki." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nie można wczytać programu tworzącego miniaturki %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nie można utworzyć miniaturki dla %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Nie powiodło się utworzenie miniaturki." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Nie można zapisać obrazka." + +#: thumbnail.cpp:316 +#, 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:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Obrazek jest zbyt duży dla segmentu pamięci dzielonej" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Obróć obraz automatycznie" + +#~ 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/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..40e09c7 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Tocar &automaticamente" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "iniciar a reprodução" + +#: mediacontrols_p.h:44 +#, 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..5adf1f2 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Actividades" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "A carregar..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "O gestor de actividades não está em execução" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Associar à actividade actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Dissociar da actividade actual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Associar a:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Dissociar de:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Actividade" + +#: KioActivities.cpp:223 +#, 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..1534141 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..5e76ad6 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Raiz" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Locais" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Não foi possível encontrar a configuração dos favoritos" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Não foi possível encontrar o editor de favoritos" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Pedido inválido: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Não existem ainda nenhuns favoritos para mostrar." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..02f2f76 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "A ligar..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "A inicializar o protocolo..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Ligação Local" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticação de SSH" + +#: fish.cpp:759 +#, 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..10df1b2 --- /dev/null +++ b/po/pt/kio5_info.po @@ -0,0 +1,22 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-21 03:44+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.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Não é possível localizar os ficheiros necessários para executar este serviço:" +"
        %1
        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..25409c3 --- /dev/null +++ b/po/pt/kio5_man.po @@ -0,0 +1,202 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-04 18:56+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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "Não foi possível ler a página de manual em %1." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" +"Não foi possível converter a página de manual em %1." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Erro do Visualizador de Páginas do Manual" + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiplas Páginas do Manual" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Ficheiros de Inclusão" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Ficheiros de Inclusão (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Comandos do Utilizador" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Comandos do Utilizador (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Chamadas de Sistema" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Sub-Rotinas" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Módulos de Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funções de Rede" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formatos de Ficheiros" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Jogos" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversos" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administração de Sistemas" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "'Kernel'" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentação Local" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índice da Página Principal dos Manuais" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Secção %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índice da secção %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Índice da Página do Manual" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "A Gerar o Índice" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 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." diff --git a/po/pt/kio5_mtp.po b/po/pt/kio5_mtp.po new file mode 100644 index 0000000..c0feffc --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/pt/kio5_nfs.po new file mode 100644 index 0000000..d6e089c --- /dev/null +++ b/po/pt/kio5_nfs.po @@ -0,0 +1,54 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-15 23:08+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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Não é possível encontrar uma versão de NFS que o servidor '%1' suporte" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "O protocolo NFS necessita do nome do servidor." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Não foi possível inicializar o protocolo" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Erro de RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "O nome do ficheiro é demasiado longo" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Foi ultrapassada a quota de disco" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Erro do NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, 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..8391092 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..3aed6a5 --- /dev/null +++ b/po/pt/kio5_sftp.po @@ -0,0 +1,277 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "A senha é incorrecta ou inválida" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Não foi possível reservar as rotinas" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Não foi possível definir o nível descritivo do registo." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Não foi possível definir os dados de utilizador do registo." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Não foi possível definir a chamada de retorno do registo." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Ligação de SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Indique por favor a sua senha." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "'Site':" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Não foi possível ler a ligação: %1" + +#: kio_sftp.cpp:570 +#, 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:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Não foi possível definir um tempo-limite." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Não foi possível desactivar o Algoritmo de Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Não foi possível definir a compressão." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Não foi possível definir a máquina." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Não foi possível definir o porto." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Não foi possível definir o utilizador." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Não foi possível processar o ficheiro de configuração." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Aviso: Não é possível verificar a identidade da máquina." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "A autenticação falhou." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Indique o seu utilizador e senha." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "O utilizador ou a senha são incorrectos." + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Não foi possível inicializar a sessão de SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "A ligação a %1 foi bem sucedida" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexto de SFTP inválido" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Não foi possível mudar as permissões de\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" diff --git a/po/pt/kio5_smb.po b/po/pt/kio5_smb.po new file mode 100644 index 0000000..3659d34 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Disco não encontrado no dispositivo %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Não foi possível ligar à maquina para %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descritor de ficheiro inválido" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"A desmontagem do ponto \"%1\" falhou.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..a0ae60f --- /dev/null +++ b/po/pt/kio5_thumbnail.po @@ -0,0 +1,79 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Não foi possível criar a miniatura da pasta" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Não foi indicado qualquer 'plugin'." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Não foi possível carregar o ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Não foi possível criar a miniatura de %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Não foi possível criar uma miniatura." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Não foi possível gravar a imagem." + +#: thumbnail.cpp:316 +#, 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:324 +#, 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 "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rodar automaticamente a imagem" + +#~ 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/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..e5f21a2 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Reproduzir &automaticamente" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "Iniciar reprodução" + +#: mediacontrols_p.h:44 +#, 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..a825794 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Atividades" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Carregando..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "O Gerenciador de Atividades não está em execução." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Vincular à atividade atual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Desvincular da atividade atual" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Vincular à:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Desvincular de:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Atividade" + +#: KioActivities.cpp:223 +#, 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..c5b3104 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..951e678 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Raiz" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Locais" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Não foi possível encontrar a configuração dos favoritos" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Não foi possível encontrar o editor de favoritos" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Solicitação inválida: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Não há favoritos a serem exibidos." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..6ccf62c --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Conectando..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Iniciando protocolo..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Login local" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autenticação SSH" + +#: fish.cpp:759 +#, 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..c9a57ec --- /dev/null +++ b/po/pt_BR/kio5_info.po @@ -0,0 +1,29 @@ +# 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, 2021. +# André Marcelo Alvarenga , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-22 10:28-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" +"X-Generator: Lokalize 20.04.2\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Não foi possível localizar os arquivos que são necessários para executar " +"este serviço:
        %1
        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..9a9ac96 --- /dev/null +++ b/po/pt_BR/kio5_man.po @@ -0,0 +1,227 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-15 08:56-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 20.04.2\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "A página de manual %1 não pode ser lida." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "A página de manual %1 não pode ser convertida." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Erro do visualizador de páginas de manual" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Há mais de uma página de manual relacionada:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Múltiplas páginas de manual" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Arquivos de cabeçalho" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Arquivos de cabeçalho (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Comandos do usuário" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Comandos do usuário (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Chamadas de sistema" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Sub-rotinas" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Módulos Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funções de rede" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Dispositivos" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formatos de arquivo" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Jogos" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Diversos" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administração do sistema" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentação local" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Índice principal da página de manual" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Seção %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Índice da seção %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Índice da página de manual" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Gerando o índice" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 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..64b6140 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/pt_BR/kio5_nfs.po new file mode 100644 index 0000000..0b85df6 --- /dev/null +++ b/po/pt_BR/kio5_nfs.po @@ -0,0 +1,75 @@ +# 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. +# Luiz Fernando Ranghetti , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-16 16:26-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.2\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" +"Não foi possível encontrar uma versão do NFS que o hospedeiro '%1' suporta" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "O protocolo NFS requer um nome de máquina de servidor." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Falha ao iniciar protocolo" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Erro de RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "O nome do arquivo é muito longo" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Quota de disco excedida" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Erro de NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Destino desconhecido" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Versão do NFS não suportada" + +#~ msgid "No space left on device" +#~ msgstr "Não há mais espaço no dispositivo" + +#~ msgid "Read only file system" +#~ msgstr "Sistema de arquivos somente para leitura" + +#~ msgid "Failed to mount %1" +#~ msgstr "Não foi possível montar o %1" diff --git a/po/pt_BR/kio5_recentdocuments.po b/po/pt_BR/kio5_recentdocuments.po new file mode 100644 index 0000000..e85bcbe --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..098cb9a --- /dev/null +++ b/po/pt_BR/kio5_sftp.po @@ -0,0 +1,288 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio5_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-26 11:56-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 20.04.2\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Senha incorreta ou inválida" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Não foi possível alocar as rotinas" + +#: kio_sftp.cpp:271 +#, 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:276 +#, 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:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Não foi possível definir a chamada de retorno do log." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Login SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Digite sua senha." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Site:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Não foi possível ler o link: %1 [%2]" + +#: kio_sftp.cpp:570 +#, 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:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Não foi possível definir um tempo de espera." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Não foi possível desativar o algoritmo de Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Não foi possível definir a compressão." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Não foi possível definir a máquina." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Não foi possível definir a porta." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Não foi possível definir o nome de usuário." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Não foi possível analisar o arquivo de configuração." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, 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:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Falha na autenticação." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Digite seu nome de usuário e sua senha." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nome de usuário ou senha incorretos" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Não foi possível inicializar a sessão SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Conectado à %1 com sucesso" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Contexto de SFTP inválido" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Não foi possível modificar as permissões de\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" diff --git a/po/pt_BR/kio5_smb.po b/po/pt_BR/kio5_smb.po new file mode 100644 index 0000000..54d06f9 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Nenhuma mídia no dispositivo %1" + +#: kio_smb_browse.cpp:292 +#, 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:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descritor de arquivo ruim" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"A desmontagem de \"%1\" falhou.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..1e45170 --- /dev/null +++ b/po/pt_BR/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Não foi possível criar a miniatura para a pasta" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nenhum plugin foi especificado." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Não foi possível carregar o ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Não foi possível criar a miniatura de %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Falha ao criar uma miniatura." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Não foi possível gravar a imagem." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Falha ao anexar ao segmento de memória compartilhado %1" + +#: thumbnail.cpp:324 +#, 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 "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Girar a imagem automaticamente" + +#~ 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..58e2d92 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Redă &automat" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "pornește redarea" + +#: mediacontrols_p.h:44 +#, 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..0f2014e --- /dev/null +++ b/po/ro/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. +# Sergiu Bivol , 2012, 2013, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-24 00:16+0000\n" +"PO-Revision-Date: 2021-04-16 17:28+0100\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Lokalize 19.12.3\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Activități" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Se încarcă..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Gestionarul de activități nu rulează" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Leagă de activitatea actuală" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Dezleagă de activitatea actuală" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Leagă la:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Dezleagă de la:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Activitate" + +#: KioActivities.cpp:223 +#, kde-format +msgid "Current activity" +msgstr "Activitatea actuală" + +#~ 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..16ba8cf --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..7fd9431 --- /dev/null +++ b/po/ro/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. +# Sergiu Bivol , 2014, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-04-16 17:29+0100\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Lokalize 19.12.3\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Rădăcină" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Locuri" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Nu s-a putut găsi configurația semnelor de carte" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Nu s-a putut găsi redactorul de semne de carte" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Cerere greșită: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Încă nu sunt semne de carte de afișat." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..1c93db7 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Se conectează..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Se inițiază protocolul..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Autentificare locală" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Autentificare SSH" + +#: fish.cpp:759 +#, 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..faf2ee2 --- /dev/null +++ b/po/ro/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. +# Sergiu Bivol , 2009, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-04-16 17:30+0100\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Lokalize 19.12.3\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Nu s-au putut localiza fișiere necesare pentru a rula acest serviciu:
        " +"%1
        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..8df32e0 --- /dev/null +++ b/po/ro/kio5_man.po @@ -0,0 +1,238 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        Eroare KDE Man Viewer

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Fișiere-antet" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Fișiere-antet (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Comenzi utilizator" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Comenzi utilizator (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Apeluri de sistem" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subrutine" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Module Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funcții de rețea" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Dispozitive" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formate de fișiere" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Jocuri" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Diverse" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administrare de sistem" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documentația locală" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Noi" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Index manuale UNIX" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Secțiunea %1" + +#: kio_man.cpp:1103 +#, 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:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Index manuale UNIX" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Generez indexul" + +#: kio_man.cpp:1389 +#, 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 %1 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..92e66fb --- /dev/null +++ b/po/ro/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. +# Sergiu Bivol , 2015, 2021, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-04-16 17:31+0100\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Lokalize 21.12.2\n" + +#: kio_mtp.cpp:217 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Nu au fost găsite medii de stocare. Asigurați-vă că dispozitivul e deblocat " +"și are MTP activat în configurările conexiunii sale USB." + +#: kio_mtp.cpp:520 +#, 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..cedbe52 --- /dev/null +++ b/po/ro/kio5_nfs.po @@ -0,0 +1,70 @@ +# 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, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-04-16 17:33+0100\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Lokalize 19.12.3\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Nu se poate găsi o versiune NFS susținută de gazda „%1”" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Protocolul NFS necesită o denumire de gazdă pentru server." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Inițializarea protocolului a eșuat" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Eroare RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Denumire fișier prea lungă" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Cotă de disc depășită" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Eroare NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Țintă necunoscută" + +#~ msgid "No space left on device" +#~ msgstr "Nu mai există spațiu de disc" + +#~ msgid "Read only file system" +#~ msgstr "Sistem de fișiere numai în citire" + +#~ 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..bfc1495 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..b3749d6 --- /dev/null +++ b/po/ro/kio5_sftp.po @@ -0,0 +1,461 @@ +# 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, 2021, 2022. +# Cristian Oneț , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2022-02-04 13:32+0000\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Lokalize 21.12.2\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Frază secretă greșită sau nevalidă" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nu s-au putut aloca retroapeluri" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nu s-a putut seta nivelul de detaliere a jurnalului." + +#: kio_sftp.cpp:276 +#, 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:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Nu s-au putut aloca retroapeluri" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Autentificare SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Introduceți parola dumneavoastră." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Sait:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Legătura nu a putut fi citită: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Noua sesiune SSH nu a putut fi creată." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Temporizarea nu a putut fi stabilită." + +#: kio_sftp.cpp:592 +#, 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:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Compresia nu a putut fi stabilită." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Gazda nu a putut fi stabilită." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Portul nu a putut fi stabilit." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Numele de utilizator nu a putut fi stabilit." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Fișierul de configurare nu a putut fi parcurs." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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 "" +"O cheie de gazdă %1 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ă cheia nu există.\n" +"Contactați administratorul dumneavoastră de sistem.\n" +"%2" + +#: kio_sftp.cpp:780 +#, 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 "" +"Cheia de 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 de gazdă s-au schimbat simultan.\n" +"Amprenta pentru cheia %2 trimisă de gazda de la distanță este:\n" +" SHA256:%3\n" +"Contactați administratorul dumneavoastră de sistem.\n" +"%4" + +#: kio_sftp.cpp:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Atenție: Nu am putut verifica identitatea gazdei." + +#: kio_sftp.cpp:796 +#, 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 "" +"Autenticitatea gazdei %1 nu poate fi stabilită.\n" +"Amprenta cheii %2 este: %3\n" +"Sigur doriți să continuați conectarea?" + +#: kio_sftp.cpp:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Autentificarea a eșuat." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Introduceți numele de utilizator și parola." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Nume de utilizator sau parolă incorectă" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Sesiunea SFTP nu a putut fi inițializată." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Am realizat cu succes conexiunea la %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Context sftp nevalid" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nu s-au putut schimba permisiunile pentru\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..97dad0f --- /dev/null +++ b/po/ro/kio5_smb.po @@ -0,0 +1,197 @@ +# 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, 2021, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2022-02-04 13:28+0000\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Lokalize 21.12.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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Nici un mediu în dispozitivul pentru %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nu mă pot conecta la gazdă pentru %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Eroare de conectare la serverul responsabil de %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Nu am găsit partajarea pe serverul dat" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Descriptor de fișier eronat" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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: Gazdă inaccesibilă" + +#: kio_smb_browse.cpp:330 +#, 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:343 +#, kde-format +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ă: [%1] %2" + +#: kio_smb_browse.cpp:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "A intervenit o eroare la accesarea %1%2" + +#: kio_smb_file.cpp:34 +#, 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:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Demontarea \"%1\" a eșuat.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Dispozitiv necunoscut @ %1" + +#~ 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..1dcc530 --- /dev/null +++ b/po/ro/kio5_thumbnail.po @@ -0,0 +1,86 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Imposibil de creat miniatură pentru dosar" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nici un modul specificat." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nu pot încărca ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nu pot crea miniatură pentru %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Crearea miniaturii a eșuat." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Nu s-a putut scrie imaginea." + +#: thumbnail.cpp:316 +#, 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:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Imaginea este prea mare pentru segmentul de memorie partajată" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rotește imaginea automat" + +#~ 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..8216497 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Воспроизводить &автоматически" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "Воспроизведение" + +#: mediacontrols_p.h:44 +#, 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..3480079 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Комнаты" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Загрузка..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Диспетчер комнат не запущен." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Привязать к текущей комнате" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Снять привязку к текущей комнате" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Привязать к:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Снять привязку с:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Комната" + +#: KioActivities.cpp:223 +#, 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..6f222fd --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Невозможно открыть файл. Возможно, он имеет не поддерживаемый формат.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..5aefde6 --- /dev/null +++ b/po/ru/kio5_bookmarks.po @@ -0,0 +1,86 @@ +# 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. +# Alexander Yavorsky , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks.po\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-01-08 14:18+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 20.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" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Корневая папка" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Точки входа" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Не удалось найти файл конфигурации закладок" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Не удалось найти редактор закладок" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Неверный запрос: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Нет закладок" + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..806bef8 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Соединение..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Начало передачи данных..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Локальный вход" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Аутентификация SSH" + +#: fish.cpp:759 +#, 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..145e449 --- /dev/null +++ b/po/ru/kio5_info.po @@ -0,0 +1,32 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Alexander Potashev , 2010. +# Alexander Yavorsky , 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-08-28 22:31+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 21.08.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.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Не удалось найти файлы %1, необходимый для запуска следующей службы:
        " +"%1
        Проверьте правильность установки этой программы." diff --git a/po/ru/kio5_man.po b/po/ru/kio5_man.po new file mode 100644 index 0000000..17855c3 --- /dev/null +++ b/po/ru/kio5_man.po @@ -0,0 +1,251 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

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

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Заголовочные файлы" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Заголовочные файлы (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Команды пользователя" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Команды пользователя (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Системные вызовы" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Функции" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Модули Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Работа с сетью" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Устройства" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Форматы файлов" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Игры" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Разное" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Системное администрирование" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Ядро" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Локальная документация" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Новые" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Индекс руководства UNIX" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Раздел %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Индекс раздела %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Индекс руководства UNIX" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Создание индекса" + +#: kio_man.cpp:1389 +#, 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 %1 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..739c14c --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/ru/kio5_nfs.po new file mode 100644 index 0000000..db01365 --- /dev/null +++ b/po/ru/kio5_nfs.po @@ -0,0 +1,81 @@ +# 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. +# Alexander Yavorsky , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-08-28 22:29+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 21.08.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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Не удалось подобрать версию NFS, поддерживаемую хостом «%1»" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Для использования протокола NFS требуется указать имя хоста сервера." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Ошибка инициализации протокола" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Ошибка RPC %1: «%2»" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Слишком длинное имя файла" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Превышена дисковая квота" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Ошибка NFS %1: «%2»" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Неизвестный сетевой путь" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: неподдерживаемая версия NFS" + +#~ msgid "No space left on device" +#~ msgstr "Недостаточно места на устройстве" + +#~ msgid "Read only file system" +#~ msgstr "Файловая система только для чтения" + +#~ msgid "Failed to mount %1" +#~ msgstr "Не удалось подключить %1" + +#~ 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..3b53767 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..8e6f847 --- /dev/null +++ b/po/ru/kio5_sftp.po @@ -0,0 +1,458 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Неверный или некорректный пароль" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Не удалось выделить память под функции обработки" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Не удалось установить уровень журналирования." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Не удалось задать доп. данные для журналирования." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Не удалось задать функцию обратного вызова для журналирования." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Вход на сервер SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Введите ответ на этот вопрос в поле для имени пользователя." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "Введите пароль." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Сайт:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Не удалось прочитать ссылку: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Не удалось открыть сеанс SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Не удалось установить время ожидания." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Не удалось отключить использование алгоритма Нейгла." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Не удалось установить сжатие." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Не удалось установить имя сервера." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Не удалось установить номер порта." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Не удалось установить имя пользователя." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Не удалось обработать конфигурационный файл." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Подключение к SFTP-серверу %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Не удалось получить имя типа открытого ключа сервера" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Не удалось получить хэш из открытого ключа сервера" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Не удалось создать отпечаток из открытого ключа сервера" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Внимание: невозможно проверить подлинность узла." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Проверка подлинности неудачна." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Проверка подлинности неудачна. Сервер не передал список доступных методов " +"проверки" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Введите имя пользователя и пароль." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Неверное имя пользователя или пароль" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Не удаётся использовать подсистему SFTP. Убедитесь, что сервер поддерживает " +"SFTP." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Не удалось инициализировать сеанс SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Успешное соединение с %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Неверный контекст sftp" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Невозможно изменить права доступа для\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "Продолжить подключение к серверу?" + +#~ 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..abf507a --- /dev/null +++ b/po/ru/kio5_smb.po @@ -0,0 +1,218 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-08-28 22:23+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 21.08.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" +"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 "" +"Возможны несколько способов прохождения аутентификации при подключении " +"совместно используемых ресурсов SMB:\n" +"имя пользователя: При прохождении " +"аутентификации при подключении внутри домашней сети достаточно указать " +"существующее на сервере имя пользователя. имя " +"пользователя@домен: Современные корпоративные имена " +"пользователя для входа в систему похожи на адреса электронной почты. " +"ДОМЕН\\имя пользователя: Для входа в " +"устаревшие корпоративные сети или рабочие группы может потребоваться " +"указание домена 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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Неизвестный тип файла: ни папка и ни файл." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Нет диска в устройстве для %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Невозможно подключиться к серверу для %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Ошибка при подключении к серверу, ответственному за %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Невозможно найти папку на данном сервере" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Неверный описатель файла" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Не удалось получить доступ к %1%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "ошибка создания контекста libsmbclient" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Ошибка отключения точки монтирования «%1».\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..4a9b270 --- /dev/null +++ b/po/ru/kio5_thumbnail.po @@ -0,0 +1,88 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Не удалось создать миниатюру для папки" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Не указан модуль." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Невозможно загрузить ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Невозможно создать миниатюру для %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Невозможно создать миниатюру." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Невозможно записать изображение." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Подключение к сегменту общей памяти %1 не выполнено" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Изображение слишком велико для сегмента общей памяти" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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/se/kfileaudiopreview5.po b/po/se/kfileaudiopreview5.po new file mode 100644 index 0000000..1bd3043 --- /dev/null +++ b/po/se/kfileaudiopreview5.po @@ -0,0 +1,35 @@ +# Translation of kfileaudiopreview5 to Northern Sami +# +# Børre Gaup , 2003, 2007, 2009. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-01 00:18+0000\n" +"PO-Revision-Date: 2009-05-29 02:44+0200\n" +"Last-Translator: Børre Gaup \n" +"Language-Team: Northern Sami \n" +"Language: se\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Čuojat &automáhtalaččat" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "álggat čuojaheami" + +#: mediacontrols_p.h:44 +#, kde-format +msgid "pause playback" +msgstr "boatkke čuojaheami" diff --git a/po/se/kio5_activities.po b/po/se/kio5_activities.po new file mode 100644 index 0000000..b9f600d --- /dev/null +++ b/po/se/kio5_activities.po @@ -0,0 +1,69 @@ +# Translation of kio5_activities to Northern Sami +# +# Børre Gaup , 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-24 00:16+0000\n" +"PO-Revision-Date: 2011-10-26 01:37+0200\n" +"Last-Translator: Børre Gaup \n" +"Language-Team: Northern Sami \n" +"Language: se\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" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:223 +#, kde-format +msgid "Current activity" +msgstr "" diff --git a/po/se/kio5_fish.po b/po/se/kio5_fish.po new file mode 100644 index 0000000..cfc99fd --- /dev/null +++ b/po/se/kio5_fish.po @@ -0,0 +1,45 @@ +# Translation of kio5_fish to Northern Sami +# +# Børre Gaup , 2004, 2006. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2006-01-10 20:23+0100\n" +"Last-Translator: Børre Gaup \n" +"Language-Team: Northern Sami \n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: fish.cpp:289 +#, kde-format +msgid "Connecting..." +msgstr "Váldimin oktavuođa …" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Álggaheamen protokolla …" + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Báikkálaš sisačáliheapmi" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "" + +#: fish.cpp:759 +#, kde-format +msgid "Disconnected." +msgstr "Oktavuohta botkejuvvon." diff --git a/po/se/kio5_man.po b/po/se/kio5_man.po new file mode 100644 index 0000000..61f0022 --- /dev/null +++ b/po/se/kio5_man.po @@ -0,0 +1,189 @@ +# Translation of kio5_man to Northern Sami +# +# Børre Gaup , 2003, 2004, 2005. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2005-10-23 23:56+0200\n" +"Last-Translator: Børre Gaup \n" +"Language-Team: Northern Sami \n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Geavaheaddjigohččumat" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Vuogádatgohččumat" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Vuollerutinat" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-moduvllat" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Fierbmedoaimmat" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Ovttadagat" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Fiilaformahtat" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Spealut" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Vuogádathálddašeapmi" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Čoahkku" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Báikkálaš veahkketeavsttat" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Ođđa" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Ráhkadeamen indeavssa" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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/se/kio5_nfs.po b/po/se/kio5_nfs.po new file mode 100644 index 0000000..c4a2e86 --- /dev/null +++ b/po/se/kio5_nfs.po @@ -0,0 +1,60 @@ +# Translation of kio5_nfs to Northern Sami +# +# Børre Gaup , 2002, 2003. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2003-01-13 23:01+0100\n" +"Last-Translator: Børre Gaup \n" +"Language-Team: Northern Sami \n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Menddu guhkes fiilanamma" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Dievas skearroearri" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" diff --git a/po/se/kio5_sftp.po b/po/se/kio5_sftp.po new file mode 100644 index 0000000..1a03867 --- /dev/null +++ b/po/se/kio5_sftp.po @@ -0,0 +1,218 @@ +# Translation of kio5_sftp to Northern Sami +# +# Børre Gaup , 2003, 2004, 2005. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2005-10-24 23:13+0200\n" +"Last-Translator: Børre Gaup \n" +"Language-Team: Northern Sami \n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "" + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-sisačáliheapmi" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "" + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Fierpmádatbáiki:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "" + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Váruhus: Ii sáhte dárkkistit guossoheaddji identitehta." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Autentiseren filtii." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Attes geavaheaddjinama ja beassansáni." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Boastu geavaheaddjinamma dahje beassansátni." + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Lihkostuvai oktavuođaváldin dása: %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "Ii sáhttán rievdadit vuoigatvuođaid %1 várás" diff --git a/po/se/kio5_smb.po b/po/se/kio5_smb.po new file mode 100644 index 0000000..92ae6ae --- /dev/null +++ b/po/se/kio5_smb.po @@ -0,0 +1,169 @@ +# Translation of kio5_smb to Northern Sami +# +# Børre Gaup , 2003, 2004, 2005. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2005-10-27 22:25+0200\n" +"Last-Translator: Børre Gaup \n" +"Language-Team: Northern Sami \n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: 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 "Attes autentiserendieđuid %1 várás" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Attes autentiserendieđuid dáid várás:\n" +"Bálvá = %1\n" +"Juhkojuvvon resursa = %2" + +#: kio_smb_browse.cpp:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Amas fiilašládja, iige ohcu dahje fiila." + +#: kio_smb_browse.cpp:281 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Ii gávnna bargojoavkkuid báikkálaš fierpmádagas. Sáhttá leat buollinmuvra " +"mii dan dagaha." + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Ii makkárge medium %1-ovttadagas" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Ii ožžon oktavuođa guossoheaddjái %1 ovddas" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Meattáhus čanadettin oktavuođa bálvái mas lea ovddasvástadus %1 ovddas" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Ii gávdnan juhkojuvvon resurssa bálvás" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient filtii konteavstta ráhkadettiin" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Dárkkis ahte samba-páhkka lea álbmaláhkái sajáiduhttojuvvon." + +#: 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" + +#: wsdiscoverer.cpp:173 +#, 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/se/kio5_thumbnail.po b/po/se/kio5_thumbnail.po new file mode 100644 index 0000000..e2140a3 --- /dev/null +++ b/po/se/kio5_thumbnail.po @@ -0,0 +1,70 @@ +# Translation of kio5_thumbnail to Northern Sami +# +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2007-09-11 22:44+0200\n" +"Last-Translator: Northern Sami translation team \n" +"Language-Team: Northern Sami \n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "" + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "" + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "" diff --git a/po/sk/kfileaudiopreview5.po b/po/sk/kfileaudiopreview5.po new file mode 100644 index 0000000..c8974c2 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Prehrať &automaticky" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "spustiť prehrávanie" + +#: mediacontrols_p.h:44 +#, 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..3137d27 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktivity" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Načítava sa..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Správca aktivít nebeží" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Odkaz na aktuálnu aktivitu" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Odlinkovať z aktuálnej aktivity" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Odkaz na:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Odlinkovať z:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktivita" + +#: KioActivities.cpp:223 +#, 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..0e5965a --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..4396cbe --- /dev/null +++ b/po/sk/kio5_bookmarks.po @@ -0,0 +1,70 @@ +# translation of kio_bookmarks.po to Slovak +# Michal Sulek , 2009. +# Matej Mrenica , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-01-07 14:37+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.12.0\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Koreň" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Miesta" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Konfiguráciu záložiek sa nepodarilo nájsť" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Nepodarilo sa nájsť editor záložiek" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Neplatná požiadavka: %1" + +#: kio_bookmarks_html.cpp:85 +#, 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:124 +#, 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:133 +#, 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..8cd1678 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Pripájanie..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Iniciovanie protokolu..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokálne prihlásenie" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH overenie" + +#: fish.cpp:759 +#, 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..47e3e11 --- /dev/null +++ b/po/sk/kio5_info.po @@ -0,0 +1,26 @@ +# translation of kio_info.po to Slovak +# Richard Fric , 2009. +# Matej Mrenica , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-07-20 17:50+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 21.07.80\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Nepodarilo sa nájsť súbory, ktoré sú potrebné na spustenie tejto služby:
        " +"%1
        Skontrolujte vašu inštaláciu softvéru." diff --git a/po/sk/kio5_man.po b/po/sk/kio5_man.po new file mode 100644 index 0000000..f78fb62 --- /dev/null +++ b/po/sk/kio5_man.po @@ -0,0 +1,222 @@ +# 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, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2022-01-27 09:52+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 21.12.1\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_man.cpp:458 +#, 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 "" +"Nenašla sa žiadna manuálová stránka zodpovedajúca %1. " +"Skontrolujte, či ste správne napísali názov stránky, a všimnite " +"si, že v názvoch manuálových stránok sa rozlišujú veľké a malé písmená.Ak je názov správny, možno budete musieť rozšíriť cestu pre hľadanie " +"manuálových stránok pomocou premennej prostredia MANPATH " +"alebo konfiguračného súboru v /etc adresári." + +#: kio_man.cpp:574 +#, 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álna stránka odkazuje na inú stránku %1,, ale odkazovanú stránku %2 sa nepodarilo nájsť." + +#: kio_man.cpp:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "Manuálovú stránku %1 sa nepodarilo prečítať." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "Manuálovú stránku %1 sa nepodarilo skonvertovať." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Chyba prehliadača manuálových stránok" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Existuje viac ako jedna zodpovedajúca manuálová stránka:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Viacero stránok manuálu" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Hlavičkové súbory" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Hlavičkové súbory (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Užívateľské príkazy" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Používateľské príkazy (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Systémové volania" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Podprogramy" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Moduly Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Sieťové funkcie" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Zariadenia" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formáty súborov" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Hry" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Rôzne" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Systémová administrácia" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kernel" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokálna dokumentácia" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Nový" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Register hlavných manuálov" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sekcia %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Register pre sekciu %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Register stránok manuálu" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Generuje sa register" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1. Prosím nainštalujte ho, a " +"ak je to potrebné, rozšírte cesty pomocou premennej prostredia PATH." + +#~ 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..ebbffdf --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/sk/kio5_nfs.po new file mode 100644 index 0000000..1108eed --- /dev/null +++ b/po/sk/kio5_nfs.po @@ -0,0 +1,73 @@ +# translation of kio_nfs.po to Slovak +# Stanislav Visnovsky , 2001. +# Roman Paholik , 2014. +# Matej Mrenica , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-07-20 17:50+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 21.07.80\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Nemožno nájsť verziu NFS, ktorá podporuje hostiteľa „%1“" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Protokol NFS vyžaduje názov hostiteľa servera." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Nepodarilo sa inicializovať protokol" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC chyba %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Meno súboru príliš dlhé" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Prekročené obmedzenie miesta na disku" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS chyba %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Neznámy cieľ" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Nepodporovaná NFS verzia" + +#~ msgid "No space left on device" +#~ msgstr "Nedostatok miesta na zariadení" + +#~ msgid "Read only file system" +#~ msgstr "Súborový systém len pre čítanie" + +#~ msgid "Failed to mount %1" +#~ msgstr "Zlyhalo pripojenie %1" + +#~ 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..dcb47fb --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..230551b --- /dev/null +++ b/po/sk/kio5_sftp.po @@ -0,0 +1,278 @@ +# 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, 2022. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2022-01-27 09:50+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 21.12.1\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Nesprávne alebo neplatné heslo" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Nepodarilo sa prideliť spätné volania" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Nepodarilo sa nastaviť podrobnosti logu." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Nepodarilo sa nastaviť používateľské údaje záznamu." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Nepodarilo sa nastaviť spätné volanie záznamu." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Prihlásenie SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Prosím zadajte vaše heslo." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Server:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Nepodarilo sa prečítať odkaz: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Nepodarilo sa vytvoriť nové sedenie SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Nepodarilo sa nastaviť časový limit." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagleov algoritmus sa nepodarilo zakázať." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Nepodarilo sa nastaviť kompresiu." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Nepodarilo sa nastaviť hostiteľa." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Nepodarilo sa nastaviť port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Nepodarilo sa nastaviť užívateľské meno." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Nepodarilo sa spracovať konfiguračný súbor." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, 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:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Nepodarilo sa vytvoriť odtlačok pre verejný kľúč servera" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Upozornenie: Nie je možné overiť identitu hostiteľa." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Overenie zlyhalo." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Zadajte svoje užívateľské meno a heslo." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Neplatné užívateľské meno alebo heslo" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Nepodarilo sa inicializovať sedenie SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Úspešne pripojený k %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Neplatný kontext sftp" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Nepodarilo sa zmeniť práva pre\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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í?" diff --git a/po/sk/kio5_smb.po b/po/sk/kio5_smb.po new file mode 100644 index 0000000..88477a5 --- /dev/null +++ b/po/sk/kio5_smb.po @@ -0,0 +1,202 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-01-07 14:41+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.12.0\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 "" +"Existuje veľa možností autentifikácie na zdieľaniach SMB. používateľské meno: Pri " +"autentifikácii v domácej sieti postačuje na serveri používateľské menousername@domain.com : Moderné firemné " +"prihlasovacie mená sú tvorené ako e-mailové adresy " +" DOMAIN\\username: Pre staršie podnikové siete " +"alebo pracovné skupiny bude možno potrebná predpona názvu domény NetBIOS " +"(pred Windows 2000).anonymné: O " +"anonymné prihlásenia sa môžete pokúsiť pomocou prázdneho používateľského " +"mena a hesla. V závislosti na konfigurácii servera môžu byť vyžadované " +"neprázdne používateľské mená" + +#: 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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "V zariadení pre %1 nenájdené médium" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nepodarilo sa pripojiť k hostiteľovi pre %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Zlý deskriptor súboru" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient sa nepodarilo vytvoriť kontext" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Odpojenie priečinku \"%1\" zlyhalo.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..c9d4c03 --- /dev/null +++ b/po/sk/kio5_thumbnail.po @@ -0,0 +1,71 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Nedá sa vytvoriť náhľad pre adresár" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Žiadny modul nie je špecifikovaný." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Nedá sa načítať ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Nedá sa vytvoriť náhľad pre %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Vytvorenie náhľadu zlyhalo." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Obrázok sa nedá zapísať." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Pripojenie zdielaného segmentu pamäte %1 zlyhalo" + +#: thumbnail.cpp:324 +#, 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" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Otočiť obrázok automaticky" diff --git a/po/sl/kfileaudiopreview5.po b/po/sl/kfileaudiopreview5.po new file mode 100644 index 0000000..3e94316 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "S&amodejno predvajaj" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "začni predvajanje" + +#: mediacontrols_p.h:44 +#, 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..53bc6a9 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Dejavnosti" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Nalaganje ..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Upravljalnik dejavnosti ne teče" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Poveži s trenutno dejavnostjo" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Prekini povezavo s trenutno dejavnostjo" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Poveži z:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Prekini povezavo z:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Dejavnost" + +#: KioActivities.cpp:223 +#, 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..7643fda --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..a2d8c57 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Vrh" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Mesta" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Nastavitve zaznamkov ni bilo mogoče najti" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Urejevalnika zaznamkov ni bilo mogoče najti" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Napačna zahteva: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Za prikaz ni na voljo nobenega zaznamka." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..3840509 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Povezovanje ..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Začenjanje protokola ..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Krajevna prijava" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Overitev SSH" + +#: fish.cpp:759 +#, 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..b6624fd --- /dev/null +++ b/po/sl/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. +# +# Jure Repinc , 2009. +# Andrej Mernik , 2013. +# Matjaž Jeran , 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-21 23:16+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" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Ni bilo mogoče najti datotek, ki so zahtevane za zagon te storitve.
        " +"%1
        Preverite namestitev vaših programov." diff --git a/po/sl/kio5_man.po b/po/sl/kio5_man.po new file mode 100644 index 0000000..f2ad0d2 --- /dev/null +++ b/po/sl/kio5_man.po @@ -0,0 +1,213 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-03 08:18+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 20.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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "Strani man %1 ni bilo mogoče prebrati." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "Strani man %1 ni bilo mogoče pretvoriti." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Napaka pri pregledovalniku strani man" + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Več strani priročnika" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Datoteke glav" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Datoteke glav (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Uporabniški ukazi" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Uporabniški ukazi (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Sistemski klici" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Podprogrami" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Moduli Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Omrežne funkcije" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Naprave" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Vrste datotek" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Igre" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Razno" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Skrbništvo sistema" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Jedro" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Krajevna dokumentacija" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Novo" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Glavno kazalo strani priročnika" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Odsek %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Kazalo za odsek %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Kazalo strani priročnika" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Ustvarjanje kazala" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 za ukaz %1. 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..b78024f --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/sl/kio5_nfs.po new file mode 100644 index 0000000..5ae9087 --- /dev/null +++ b/po/sl/kio5_nfs.po @@ -0,0 +1,80 @@ +# 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 1601248 2021-05-30 01:02:50Z scripty $ +# $Source$ +# +# Andrej Vernekar , 2001. +# Gregor Rakar , 2004. +# Andrej Mernik , 2013, 2014. +# Matjaž Jeran , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-15 07:37+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_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Ni mogoče najti verzije NFS, ki bi ga gostitelj '%1' podpiral" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "NFS protokol zahteva ime strežnika gostitelja." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Postavljanje začetnih vrednosti protokola ni uspelo" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Napaka RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Ime datoteke je predolgo" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Prekoračena je količinska omejitev diska" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Napaka NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Neznan cilj" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: nepodprta različica NFS" + +#~ msgid "No space left on device" +#~ msgstr "Ni prostora na napravi" + +#~ msgid "Read only file system" +#~ msgstr "Datotečni sistem le za branje" + +#~ msgid "Failed to mount %1" +#~ msgstr "Ni bilo mogoče priklopiti %1" + +#~ 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..8fb5daf --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..7774af2 --- /dev/null +++ b/po/sl/kio5_sftp.po @@ -0,0 +1,288 @@ +# 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 1611689 2021-11-04 01:03:59Z scripty $ +# $Source$ +# +# Andrej Vernekar , 2001. +# Gregor Rakar , 2003, 2004. +# Jure Repinc , 2008, 2009, 2010, 2012. +# Andrej Mernik , 2013, 2014. +# Matjaž Jeran , 2019, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-16 10:55+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 20.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_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Nepravilna ali neveljavna šifrirna fraza" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Ni bilo mogoče dodeliti povratnih klicev" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Ni bilo mogoče nastaviti podrobnosti izpisa dnevnika." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Ni bilo mogoče nastaviti dnevnika uporabniških podatkov." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Ni bilo mogoče nastaviti povratnih klicev dnevnika." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Prijava SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Vnesite svoje geslo." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Mesto:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Ni bilo mogoče prebrati povezave: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Ni bilo mogoče ustvariti nove seje SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Ni bilo mogoče nastaviti časovne omejitve." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Nagle algoritma ni bilo mogoče onemogočiti." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Ni bilo mogoče nastaviti stiskanja." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Ni bilo mogoče nastaviti gostitelja." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Ni bilo mogoče nastaviti vrat." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Ni bilo mogoče nastaviti uporabniškega imena." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Ni bilo mogoče razčleniti nastavitvene datoteke." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Odpiranje povezave SFTP do gostitelja %1:%2" + +#: kio_sftp.cpp:687 +#, 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:700 +#, 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:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Pozor: ni mogoče preveriti istovetnosti gostitelja." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Overitev ni uspela." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Vnesite vaše uporabniško ime in geslo." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Napačno uporabniško ime ali geslo" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Ni bilo mogoče začeti seje SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Uspešno povezan z %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Neveljaven kontekst sftp" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Ni bilo mogoče spremeniti dovoljenj za\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" diff --git a/po/sl/kio5_smb.po b/po/sl/kio5_smb.po new file mode 100644 index 0000000..68bb8af --- /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 1609756 2021-10-01 01:11:09Z 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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "V napravi ni nosilca za %1" + +#: kio_smb_browse.cpp:292 +#, 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:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Slab opisnik datotek" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient ni uspel ustvariti konteksta" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Odklapljanje priklopne točke »%1« ni uspelo.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..1ff58b2 --- /dev/null +++ b/po/sl/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Ni bilo mogoče ustvariti sličice za mapo" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Navedenega ni nobenega vstavka." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Ni mogoče naložiti ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Ni mogoče ustvariti sličice za %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Ustvarjanje sličice je spodletelo." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Ni bilo mogoče zapisati slike." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Pripenjanje na deljen odsek pomnilnika %1 je spodletelo" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Slika je prevelika za deljen odsek pomnilnika" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Samodejno zavrti sliko" + +#~ 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/sq/kfileaudiopreview5.po b/po/sq/kfileaudiopreview5.po new file mode 100644 index 0000000..d638ba1 --- /dev/null +++ b/po/sq/kfileaudiopreview5.po @@ -0,0 +1,35 @@ +# Albanian translation for kde4libs +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the kde4libs package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kde4libs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-01 00:18+0000\n" +"PO-Revision-Date: 2009-08-08 18:12+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 16:23+0000\n" +"X-Generator: Launchpad (build 12883)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:69 +#, kde-format +msgid "Play &automatically" +msgstr "Luaj &automatikisht" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "fillo dëgjimin" + +#: mediacontrols_p.h:44 +#, kde-format +msgid "pause playback" +msgstr "pusho dëgjimin" diff --git a/po/sq/kio5_archive.po b/po/sq/kio5_archive.po new file mode 100644 index 0000000..6453b4a --- /dev/null +++ b/po/sq/kio5_archive.po @@ -0,0 +1,40 @@ +# Albanian translation for kdebase-runtime +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-07 00:17+0000\n" +"PO-Revision-Date: 2009-03-13 05:37+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 15:29+0000\n" +"X-Generator: Launchpad (build 12883)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Nuk mundëm ta hapim skedarin, ndoshta për shkak të një emri të pasuportuar " +"të skedarit.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Arkivi nuk mund të hapet, ndoshta sepse formati nuk suportohet.\n" +"%1" diff --git a/po/sq/kio5_bookmarks.po b/po/sq/kio5_bookmarks.po new file mode 100644 index 0000000..1b6be5b --- /dev/null +++ b/po/sq/kio5_bookmarks.po @@ -0,0 +1,81 @@ +# Albanian translation for kdebase-runtime +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2009-08-31 13:42+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 15:29+0000\n" +"X-Generator: Launchpad (build 12883)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Vendet" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Kërkesë e gabuar: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Nuk ka libërshënues për tu shfaqur për momentin" + +#: kio_bookmarks_html.cpp:124 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Skedari kio_bookmarks CSS nuk u gjet. Dalja do duket e shëmtuar.\n" +"Kontrolloni instalimin tuaj." + +#: kio_bookmarks_html.cpp:133 +#, kde-format +msgid "My Bookmarks" +msgstr "Libërshënuesit e Mi" + +#~ msgid "My bookmarks" +#~ msgstr "Libërshënuesit e mi" + +#~ msgid "Xavier Vello" +#~ msgstr "Xavier Vello" + +#~ msgid "Initial developer" +#~ msgstr "Zhvilluesi fillestar" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "KDE Shqip, Launchpad Contributions: Vilson Gjeci" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kde-shqip@yahoogroups.com,vilsongjeci@gmail.com" diff --git a/po/sq/kio5_fish.po b/po/sq/kio5_fish.po new file mode 100644 index 0000000..2e86f7a --- /dev/null +++ b/po/sq/kio5_fish.po @@ -0,0 +1,54 @@ +# Albanian translation for kdebase-runtime +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2009-12-11 18:16+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 15:33+0000\n" +"X-Generator: Launchpad (build 12883)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:289 +#, kde-format +msgid "Connecting..." +msgstr "Duke u lidhur......" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Duke nisur protokollin..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Hyrje Lokale" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH Autorizim" + +#: fish.cpp:759 +#, kde-format +msgid "Disconnected." +msgstr "I shkëputur." + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr " ,Launchpad Contributions:" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "," diff --git a/po/sq/kio5_info.po b/po/sq/kio5_info.po new file mode 100644 index 0000000..ce37bb0 --- /dev/null +++ b/po/sq/kio5_info.po @@ -0,0 +1,34 @@ +# Albanian translation for kdebase-runtime +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2009-08-08 19:08+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 15:36+0000\n" +"X-Generator: Launchpad (build 12883)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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/sq/kio5_man.po b/po/sq/kio5_man.po new file mode 100644 index 0000000..8c6930d --- /dev/null +++ b/po/sq/kio5_man.po @@ -0,0 +1,203 @@ +# Albanian translation for kdebase-runtime +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2009-08-31 13:45+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 15:36+0000\n" +"X-Generator: Launchpad (build 12883)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Komandat e Përdoruesit" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Komandat e Përdoruesit" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Thirrje të Sistemit" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Nënrutina" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Module Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Funksionet e Rrjetit" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Pajisjet" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Formatet e Skedarëve" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Lojërat" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Të Ndryshme" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Administrimi i Sistemit" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kerneli" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Dokumentimi Lokal" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "I Ri" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Treguesi i Manualit UNIX" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Treguesi i Manualit UNIX" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "KDE Shqip, Launchpad Contributions: Vilson Gjeci" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kde-shqip@yahoogroups.com,vilsongjeci@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/sq/kio5_nfs.po b/po/sq/kio5_nfs.po new file mode 100644 index 0000000..0c46a76 --- /dev/null +++ b/po/sq/kio5_nfs.po @@ -0,0 +1,69 @@ +# Albanian translation for kdebase-runtime +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2009-08-31 13:47+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 15:37+0000\n" +"X-Generator: Launchpad (build 12883)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Emri i skedarit është shumë i gjatë" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Kuotat e diskut janë tejkaluar" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Nuk ka më hapësirë të ngelur në pajisje" + +#~ msgid "Read only file system" +#~ msgstr "Sistemi i skedarëve është vetëm i lexueshëm" + +#~ msgid "An RPC error occurred." +#~ msgstr "Ka ndodhur një gabim RPC." diff --git a/po/sq/kio5_sftp.po b/po/sq/kio5_sftp.po new file mode 100644 index 0000000..937d946 --- /dev/null +++ b/po/sq/kio5_sftp.po @@ -0,0 +1,220 @@ +# Albanian 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: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2010-02-17 02:09+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 15:39+0000\n" +"X-Generator: Launchpad (build 12883)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Emër përdoruesi ose fjalëkalim i pavlefshëm" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "" + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Hyrje SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "" + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "faqja:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "" + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "" + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Identifikimi dështoi." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "" + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Emër përdoruesi ose fjalëkalim i pavlefshëm" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" diff --git a/po/sq/kio5_smb.po b/po/sq/kio5_smb.po new file mode 100644 index 0000000..a1d78f4 --- /dev/null +++ b/po/sq/kio5_smb.po @@ -0,0 +1,173 @@ +# Albanian 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: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2010-11-25 21:43+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 15:41+0000\n" +"X-Generator: Launchpad (build 12883)\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 "Ju lutem shkruani informatat e autenticitetit për %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Ju lutem shkruani informatat e autenticitetit për:\n" +"Server = %1\n" +"Share = %2" + +#: kio_smb_browse.cpp:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Lloj i panjohur i skedarit, directorisë ose skedarit." + +#: kio_smb_browse.cpp:281 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Nuk qe e mundur për të gjetur ndonjë nga grupet e punës në rrjetin tuaj " +"lokal. Kjo mund të jetë shkaktuar nga një firewall i aktivizuar." + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Asnjë medium në pajisje për %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Nuk mund të lidhemi me mbartësin për %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Gabim gjatë lidhjes me serverin përgjegjës për %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Share nuk mund të gjendet në serveri e dhënë" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient dështoi për të krijuar kontekstin" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" + +#: 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" + +#: wsdiscoverer.cpp:173 +#, 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 dështoi për të nisur kontekstin" + +#~ msgid "File does not exist: %1" +#~ msgstr "Skedari nuk ekziston: %1" diff --git a/po/sq/kio5_thumbnail.po b/po/sq/kio5_thumbnail.po new file mode 100644 index 0000000..c124101 --- /dev/null +++ b/po/sq/kio5_thumbnail.po @@ -0,0 +1,81 @@ +# Albanian translation for kdebase-runtime +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the kdebase-runtime package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: kdebase-runtime\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2009-10-01 13:43+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-04-22 15:42+0000\n" +"X-Generator: Launchpad (build 12883)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "" + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "" + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "" + +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "KDE Shqip, Launchpad Contributions: Vilson Gjeci" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "kde-shqip@yahoogroups.com,vilsongjeci@gmail.com" + +#~ 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/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/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..81330e9 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Spela &automatiskt" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "starta uppspelning" + +#: mediacontrols_p.h:44 +#, 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..803bbbe --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Aktiviteter" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Läser in..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Aktivitetshanteraren kör inte" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Länka till aktuell aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Ta bort länk för aktuell aktivitet" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Länka till:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Ta bort länk från:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Aktivitet" + +#: KioActivities.cpp:223 +#, 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..e321683 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..18b08c8 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Rot" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Platser" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Kunde inte hitta bokmärkesinställning" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Kunde inte hitta bokmärkeseditor" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Felaktig begäran: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Det finns inga bokmärken att visa ännu." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..bb869da --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Ansluter..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Initierar protokoll..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Lokal inloggning" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH-behörighetskontroll" + +#: fish.cpp:759 +#, 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..897ec7e --- /dev/null +++ b/po/sv/kio5_info.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. +# +# Stefan Asserhäll , 2015, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-20 08:21+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 20.08.1\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Kan inte hitta filer som är nödvändig för att köra tjänsten:
        " +"%1
        Kontrollera programvaruinstallationen." diff --git a/po/sv/kio5_man.po b/po/sv/kio5_man.po new file mode 100644 index 0000000..6771ad6 --- /dev/null +++ b/po/sv/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. +# +# Stefan Asserhäll , 2015, 2019, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-03 17:16+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 20.08.1\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "Manualsidan %1 kunde inte läsas." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "Manualsidan %1 kunde inte konverteras." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Felmeddelande i manualvisning" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Det finns fler än en manualsida som matchar:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Flera manualsidor" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Deklarationsfiler" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Deklarationsfiler (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Användarkommandon" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Användarkommandon (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Systemanrop" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Subrutiner" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl-moduler" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Nätverksfunktioner" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Enheter" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Filformat" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Spel" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Diverse" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Systemadministration" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Kärna" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Lokal dokumentation" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Ny" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Sidoindex i huvudmanual" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Sektion %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Index för sektion %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Sidoindex i manual" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Genererar index" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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 %1 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..d7e6c33 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/sv/kio5_nfs.po new file mode 100644 index 0000000..0303670 --- /dev/null +++ b/po/sv/kio5_nfs.po @@ -0,0 +1,70 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-14 10: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 20.08.1\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Kan inte hitta en NFS-version som värddatorn '%1' stöder" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "NFS-protokollet kräver serverns värddatornamn." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Misslyckades initiera protokoll" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC-fel %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "För långt filnamn" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Diskkvot överskriden" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS-fel %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Okänt mål" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: NFS-versionen stöds inte" + +#~ msgid "No space left on device" +#~ msgstr "Inget utrymme kvar på enheten" + +#~ msgid "Read only file system" +#~ msgstr "Skrivskyddat filsystem." + +#~ msgid "Failed to mount %1" +#~ msgstr "Misslyckades montera %1" diff --git a/po/sv/kio5_recentdocuments.po b/po/sv/kio5_recentdocuments.po new file mode 100644 index 0000000..d42e916 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..a9270fe --- /dev/null +++ b/po/sv/kio5_sftp.po @@ -0,0 +1,279 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2015, 2018, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-15 17: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 20.08.1\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Felaktig eller ogiltig lösenordsfras" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Kunde inte reservera återanrop" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Kunde inte ställa in loggens detaljnivå" + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Kunde inte ställa in loggens användardata." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Kunde inte ställa in loggens återanrop." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP-inloggning" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Ange ditt lösenord." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Plats:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Kunde inte läsa länken: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Kunde inte skapa ny SSH-session." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Kunde inte ställa in en tidsgräns." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Kunde inte inaktivera Nagles algoritm." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Kunde inte ställa in komprimering." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Kunde inte ställa in värddator." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Kunde inte ställa in port." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Kunde inte ställa in användarnamn." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Kunde inte tolka inställningsfilen." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Öppnar SFTP-anslutning till värddator %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Kunde inte hämta typnamn på serverns öppna nyckel" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Kunde inte skapa kondensat från serverns öppna nyckel" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Kunde inte skapa fingeravtryck för serverns öppna nyckel" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Varning: Kan inte verifiera värddatorns identitet." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Autentisering misslyckades." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Ange ditt användarnamn och lösenord." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Felaktigt användarnamn eller lösenord" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Kunde inte initiera SFTP-sessionen." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Ansluten till %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ogiltigt sftp-sammanhang" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Kunde inte ändra rättigheter för\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" diff --git a/po/sv/kio5_smb.po b/po/sv/kio5_smb.po new file mode 100644 index 0000000..e71406b --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Inget medium i enheten för %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Kunde inte ansluta till värddator för %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Utdelad katalog kunde inte hittas på angiven server" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Felaktig filbeskrivning" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient misslyckades skapa omgivning" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Avmontering av monteringspunkten \"%1\" misslyckades.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..6f2744c --- /dev/null +++ b/po/sv/kio5_thumbnail.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. +# +# Stefan Asserhäll , 2015. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Kan inte skapa miniatyrbild för katalog" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Inget insticksprogram angivet." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Kan inte ladda miniatyrbildsskaparen %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Kan inte skapa miniatyrbild för %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Misslyckades skapa miniatyrbild." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Kunde inte skriva bild." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Misslyckades ansluta till delat minnessegment %1." + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Bilden är för stor för det delade minnessegmentet" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Rotera bilden automatiskt" diff --git a/po/ta/kfileaudiopreview5.po b/po/ta/kfileaudiopreview5.po new file mode 100644 index 0000000..bf0b04a --- /dev/null +++ b/po/ta/kfileaudiopreview5.po @@ -0,0 +1,37 @@ +# translation of kfileaudiopreview4.po to தமிழ் +# Copyright (C) 2004, 2007 Free Software Foundation, Inc. +# +# Vasee Vaseeharan , 2004. +# ஆமாச்சு , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-01 00:18+0000\n" +"PO-Revision-Date: 2007-10-25 21:59+0530\n" +"Last-Translator: ஆமாச்சு \n" +"Language-Team: தமிழ் \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: KBabel 1.11.4\n" + +#: kfileaudiopreview.cpp:69 +#, kde-format +msgid "Play &automatically" +msgstr "&தானாகவே இயக்கவும்" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "" + +#: mediacontrols_p.h:44 +#, kde-format +msgid "pause playback" +msgstr "" + +#~ msgid "Media Player" +#~ msgstr "ஊடக இயக்கி" diff --git a/po/ta/kio5_activities.po b/po/ta/kio5_activities.po new file mode 100644 index 0000000..eb66271 --- /dev/null +++ b/po/ta/kio5_activities.po @@ -0,0 +1,67 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Kishore G , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-24 00:16+0000\n" +"PO-Revision-Date: 2021-09-19 15:28+0530\n" +"Last-Translator: Kishore G \n" +"Language-Team: Tamil \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.08.1\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "செயல்பாடுகள்" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "ஏற்றப்படுகிறது…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "செயல்பாடு மேலாளி இயங்கவில்லை" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "தற்போதைய செயல்பாட்டிற்கு இணை" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "தற்போதைய செயல்பாட்டுடனான இணைப்பை துண்டி" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "இதற்கு இணை:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "இதனுடனான இணைப்பை துண்டி:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "செயல்பாடு" + +#: KioActivities.cpp:223 +#, kde-format +msgid "Current activity" +msgstr "தற்போதைய செயல்பாடு" diff --git a/po/ta/kio5_archive.po b/po/ta/kio5_archive.po new file mode 100644 index 0000000..a04b2c6 --- /dev/null +++ b/po/ta/kio5_archive.po @@ -0,0 +1,38 @@ +# 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_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-07 00:17+0000\n" +"PO-Revision-Date: 2008-03-15 07:52+0530\n" +"Last-Translator: ஆமாச்சு \n" +"Language-Team: Tamil \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"ஆதரிக்கப்படாத கோப்பு வகையின் காரணமாக, கோப்பினைத் திறக்க இயலவில்லை.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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/ta/kio5_bookmarks.po b/po/ta/kio5_bookmarks.po new file mode 100644 index 0000000..6b13876 --- /dev/null +++ b/po/ta/kio5_bookmarks.po @@ -0,0 +1,63 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Kishore G , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-09-30 21:00+0530\n" +"Last-Translator: Kishore G \n" +"Language-Team: Tamil \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.08.1\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "ரூட்" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "இடங்கள்" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "நினைவுக்குறி விருப்பத்தேர்வுகளை கண்டுபிடிக்க முடியவில்லை" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "நினைவுக்குறி திருத்தியை கண்டுபிடிக்க முடியவில்லை" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "தவறான கோரிக்கை: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "காட்டுவதற்கு நினைவுக்குறிகள் ஏதுமில்லை." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, kde-format +msgid "My Bookmarks" +msgstr "என் நினைவுக்குறிகள்" diff --git a/po/ta/kio5_fish.po b/po/ta/kio5_fish.po new file mode 100644 index 0000000..5960c9e --- /dev/null +++ b/po/ta/kio5_fish.po @@ -0,0 +1,43 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2004-08-09 04:16-0800\n" +"Last-Translator: Tamil PC \n" +"Language-Team: KDE \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:289 +#, kde-format +msgid "Connecting..." +msgstr "இணைக்கிறது..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "நெறிமுறையை ஆரம்பி..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "வரம்புறு புகுபதிகை" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH உரிமைவழங்கும்" + +#: fish.cpp:759 +#, kde-format +msgid "Disconnected." +msgstr "இணைக்கப்படாத." diff --git a/po/ta/kio5_info.po b/po/ta/kio5_info.po new file mode 100644 index 0000000..90f4ad3 --- /dev/null +++ b/po/ta/kio5_info.po @@ -0,0 +1,27 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Kishore G , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-09-19 15:39+0530\n" +"Last-Translator: Kishore G \n" +"Language-Team: Tamil \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.08.1\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"இச்சேவையை இயக்க தேவைப்படும் கோப்புகளை கண்டுபிடிக்க முடியவில்லை:
        %1
        உங்கள் " +"மென்பொருள் நிறுவலை சரிபாருங்கள்" diff --git a/po/ta/kio5_man.po b/po/ta/kio5_man.po new file mode 100644 index 0000000..cf9d68a --- /dev/null +++ b/po/ta/kio5_man.po @@ -0,0 +1,208 @@ +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2004-08-09 04:17-0800\n" +"Last-Translator: Tamil PC \n" +"Language-Team: தமிழ் \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +msgid "Manual Page Viewer Error" +msgstr "

        KDE Man காட்டி தவறு

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "பயனர் கட்டளைகள்" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "பயனர் கட்டளைகள்" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "கணினி அழைப்புக்கள்" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "உபநிரல்கள்" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "பகுதிகளை திருத்து " + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "பிணையம் செயல்கூறுகள்" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "சாதனங்கள்" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "கோப்பு வடிவங்கள்" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "விளையாட்டுக்கள்" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "கணினி நிர்வாகம்" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "வித்து" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "தொழில்நுட்ப புத்தகம்" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "புதிய" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX கையமை சுட்டுவரிசை " + +#: kio_man.cpp:814 +#, fuzzy, kde-format +#| msgid "Section " +msgid "Section %1" +msgstr "பகுதி" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +msgid "Index for section %1: %2" +msgstr "

        பகுதி %1 இன் சுட்டி: %2

        " + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX கையமை சுட்டுவரிசை " + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "சுட்டியை உருவாக்குகிறேன்" + +#: kio_man.cpp:1389 +#, 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 %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "sgml2roff program யை உங்கள் கணினியில் கண்டுபிடிக்க முடியவில்லை." + +#~ 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 "kannan_888@rediffmail.com" + +#~ msgid "KMan" +#~ msgstr "Kமான்" diff --git a/po/ta/kio5_mtp.po b/po/ta/kio5_mtp.po new file mode 100644 index 0000000..fef4e00 --- /dev/null +++ b/po/ta/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. +# +# Kishore G , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-09-30 21:05+0530\n" +"Last-Translator: Kishore G \n" +"Language-Team: Tamil \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.08.1\n" + +#: kio_mtp.cpp:217 +#, 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:520 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "சாதனத்திலிருந்து அதற்கே கோப்புகளை நகலெடுக்கவோ நகர்த்தவே முடியாது" diff --git a/po/ta/kio5_nfs.po b/po/ta/kio5_nfs.po new file mode 100644 index 0000000..23a60c1 --- /dev/null +++ b/po/ta/kio5_nfs.po @@ -0,0 +1,66 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2004-08-09 04:17-0800\n" +"Last-Translator: Tamil PC \n" +"Language-Team: தமிழ் \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "கோப்புப் பெயர் மிக நீளம்" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "வட்டுப் பங்கு மீறப்பட்டது" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "கருவியில் இடமெதுவுமில்லை" + +#~ msgid "Read only file system" +#~ msgstr "எழுத மட்டும் கூடிய கோப்புத்தொகுதி" + +#~ msgid "An RPC error occurred." +#~ msgstr "RPC தவறொன்று நேர்ந்தது" diff --git a/po/ta/kio5_recentdocuments.po b/po/ta/kio5_recentdocuments.po new file mode 100644 index 0000000..143a740 --- /dev/null +++ b/po/ta/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. +# +# Kishore G , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-09-30 21:01+0530\n" +"Last-Translator: Kishore G \n" +"Language-Team: Tamil \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.08.1\n" + +#: recentdocuments.cpp:160 +#, kde-format +msgid "Recent Documents" +msgstr "சமீப ஆவணங்கள்" diff --git a/po/ta/kio5_sftp.po b/po/ta/kio5_sftp.po new file mode 100644 index 0000000..9eeea57 --- /dev/null +++ b/po/ta/kio5_sftp.po @@ -0,0 +1,391 @@ +# translation of kio_sftp.po to +# translation of kio_sftp.po to +# translation of kio_sftp.po to Tamil +# Copyright (C) 2004 Free Software Foundation, Inc. +# , 2004. +# , 2004. +# Vasee Vaseeharan , 2004. +# Ambalam , 2004. +# root , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2004-10-04 23:03-0800\n" +"Last-Translator: Tamil PC \n" +"Language-Team: \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "தவறான பயனர் பெயர் அல்லது கடவுச்சொல்" + +#: kio_sftp.cpp:258 +#, fuzzy, kde-format +#| msgid "Could not allocate memory for SFTP packet." +msgid "Could not allocate callbacks" +msgstr " SFTP பொட்டலத்திர்க்கு நினைவகம் ஒதுக்க இயலாது" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set log userdata." +msgstr " SFTP பொட்டலதை படிக்க இயலாது." + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate memory for SFTP packet." +msgid "Could not set log callback." +msgstr " SFTP பொட்டலத்திர்க்கு நினைவகம் ஒதுக்க இயலாது" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP நுழைவு " + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" + +#: kio_sftp.cpp:380 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "தயவு செய்து பயனர்பெயரையும் கடவுச்சொல்லையும் பதிவு செய்யவும் " + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "தளம்:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr " SFTP பொட்டலதை படிக்க இயலாது." + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set a timeout." +msgstr " SFTP பொட்டலதை படிக்க இயலாது." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not disable Nagle's Algorithm." +msgstr " SFTP பொட்டலதை படிக்க இயலாது." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:615 +#, fuzzy, kde-format +#| msgid "Could not read SFTP packet" +msgid "Could not set port." +msgstr " SFTP பொட்டலதை படிக்க இயலாது." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:647 +#, 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:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "எச்சரிக்கை: புறவளரின் அடையாளம் சரிபார்க்க இயலாது." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "ஆளறிதல் முடங்கியது!" + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "தயவு செய்து பயனர்பெயரையும் கடவுச்சொல்லையும் பதிவு செய்யவும் " + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "தவறான பயனர் பெயர் அல்லது கடவுச்சொல்" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 க்கு வெற்றிகரமாக இணைக்கப்பட்டது" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" + +#, 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 "எதிர்பாராத எஸ் எஃப் டி பி பிழை: %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 "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 "" +#~ "தொலைநிலை புறவளரின் அடையளம்'%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/ta/kio5_smb.po b/po/ta/kio5_smb.po new file mode 100644 index 0000000..89bd87f --- /dev/null +++ b/po/ta/kio5_smb.po @@ -0,0 +1,190 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2004-08-09 04:29-0800\n" +"Last-Translator: Tamil PC \n" +"Language-Team: தமிழ் \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"அடைவா அல்லது கோப்பா என்று தெரியாத கோப்பு வகை" + +#: kio_smb_browse.cpp:281 +#, fuzzy, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1க்கு சாதனத்தில் ஊடகம் இல்லை" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1ஐ புரவலனுக்கு இணைக்க இயலவில்லல" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "%1க்கு சேவ்கணை இணைக்கும்போது பிழை" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "கொடுக்கப்பட்ட சேவகனில் பங்கீடு இல்லை" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "தவறான கோப்பு விவரிப்பான்" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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 "" +"எல் ஐ பி எஸ் எம் பி கிளையன் ஒரு பிழையை கண்டறிந்துள்ளது ஆனால் என்ன பிரச்சனை என்பதை " +"சொல்லவில்லை. உங்கள் வலைப்பின்னலில் பிரச்சனை இருக்கலாம்.எல் ஐ பி எஸ் எம் பி கிளையனுடன் " +"பிரச்சனை என்றால் அதை குறிப்பிடவேண்டும். எங்களுக்கு உதவ வேண்டும் என்றால் நீங்கள் உலாவும்போது " +"வலைப்பின்னல் இடைமுகத்தின் tcpdumpஐ உருவாக்கவும். (அதில் தனிப்பட்ட தகவல் இருக்கலாம், அதைப் " +"பற்றி உறுதியாக தெரியாதபோது அஞ்சலிடவேண்டாம் - மேம்பாட்டாளர்கள் கேட்கும்போது அதை " +"அவர்களுக்கு தனியாக அனுப்பலாம்)." + +#: kio_smb_browse.cpp:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, fuzzy, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbகிளையனால் துவக்க இயலவில்லை." + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"\"%1\" ஏற்றப்புள்ளியை வெளியேற்ற முடியவில்லை.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#, fuzzy +#~ msgid "libsmbclient failed to initialize context" +#~ msgstr "libsmbகிளையனால் துவக்க இயலவில்லை." + +#~ msgid "File does not exist: %1" +#~ msgstr "கோப்பு இல்லை: %1" + +#~ msgid "libsmbclient failed to initialize" +#~ msgstr "libsmbகிளையனால் துவக்க இயலவில்லை." diff --git a/po/ta/kio5_thumbnail.po b/po/ta/kio5_thumbnail.po new file mode 100644 index 0000000..5e0b07e --- /dev/null +++ b/po/ta/kio5_thumbnail.po @@ -0,0 +1,84 @@ +# 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_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2008-03-18 07:45+0530\n" +"Last-Translator: ஆமாச்சு \n" +"Language-Team: Tamil \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: 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:232 +#, fuzzy, kde-format +#| msgid "Cannot create thumbnail for %1" +msgid "Cannot create thumbnail for directory" +msgstr "%1 தனுக்காக தம்ப்நெயில் உருவாக்க இயலவில்லை" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "செருகு எதுவும் கொடுக்கப்படவில்லை." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "தம்ப்கிரியேடர்தனை ஏற்ற இயலவில்லை %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 தனுக்காக தம்ப்நெயில் உருவாக்க இயலவில்லை" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "தம்ப்நெயில் ஒன்றை உருவாக்க இயலவில்லை." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "பிம்பத்தை இயற்ற இயலவில்லை" + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "பகிரப்பட்ட நினைவுப் பகுதி %1 தனை இணைக்க இயலவில்லை" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "பகிரப் பட்ட நினைவுப் பகுதிக்கு பிம்பம் மிகப் பெரிதா உள்ளது." + +#, fuzzy +#~| msgid "Your names" +#~ msgctxt "NAME OF TRANSLATORS" +#~ msgid "Your names" +#~ msgstr "உபுண்டு தமிழ் குழுமம்" + +#, fuzzy +#~| msgid "Your emails" +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "ubuntu-l10n-tam@lists.ubuntu.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/tg/kfileaudiopreview5.po b/po/tg/kfileaudiopreview5.po new file mode 100644 index 0000000..8e407b4 --- /dev/null +++ b/po/tg/kfileaudiopreview5.po @@ -0,0 +1,40 @@ +# translation of kfileaudiopreview4.po to Tajik +# Copyright (C) 2004 Free Software Foundation, Inc. +# 2004, infoDev, a World Bank organization +# 2004, Khujand Computer Technologies, Inc. +# 2004, Youth Opportunities, NGO +# Copyright (C) 2004 Free Software Foundation, Inc. +# Akmal Salomov , 2004. +# Victor Ibragimov , 2004. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-01 00:18+0000\n" +"PO-Revision-Date: 2004-06-10 17:54+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik\n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kfileaudiopreview.cpp:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Пахши худкор" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "" + +#: mediacontrols_p.h:44 +#, kde-format +msgid "pause playback" +msgstr "" + +#~ msgid "Media Player" +#~ msgstr "Плейри Медия" diff --git a/po/tg/kio5_activities.po b/po/tg/kio5_activities.po new file mode 100644 index 0000000..4c392f8 --- /dev/null +++ b/po/tg/kio5_activities.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. +# +# FVictor Ibragimov , 2013, 2019. +msgid "" +msgstr "" +"Project-Id-Version: Tajik KDE Localization\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-24 00:16+0000\n" +"PO-Revision-Date: 2019-09-23 21:12+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\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" +"X-Poedit-SourceCharset: UTF-8\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Фаъолиятҳо" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Фаъолият" + +#: KioActivities.cpp:223 +#, kde-format +msgid "Current activity" +msgstr "" + +#~ msgctxt "@action" +#~ msgid "Switch to activity \"%1\"" +#~ msgstr "Гузариш ба фаъолияти \"%1\"" diff --git a/po/tg/kio5_archive.po b/po/tg/kio5_archive.po new file mode 100644 index 0000000..6557955 --- /dev/null +++ b/po/tg/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. +# +# Victor Ibragimov , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_archive\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-07 00:17+0000\n" +"PO-Revision-Date: 2009-01-13 11:13+0000\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik <>\n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_archivebase.cpp:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Ин файл пуштибонӣ надорад, ва кушода намешавад.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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/tg/kio5_bookmarks.po b/po/tg/kio5_bookmarks.po new file mode 100644 index 0000000..8a3f344 --- /dev/null +++ b/po/tg/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. +# +# Victor Ibragimov , 2009, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_bookmarks\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2019-09-15 21:26+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\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_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Ҷойҳо" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Дархости нодуруст: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Ягон замима мавҷуд нест." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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 "victor.ibragimov@gmail.com" diff --git a/po/tg/kio5_fish.po b/po/tg/kio5_fish.po new file mode 100644 index 0000000..085c4c6 --- /dev/null +++ b/po/tg/kio5_fish.po @@ -0,0 +1,48 @@ +# translation of kio_fish.po to Tajik +# translation of kio_fish.po to Тоҷикӣ +# Copyright (C) 2004 Free Software Foundation, Inc. +# 2004, infoDev, a World Bank organization +# 2004, Khujand Computer Technologies, Inc. +# 2004, KCT1, NGO +# Dilshod Marupov , 2004 +# +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2009-01-11 15:31+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik\n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: fish.cpp:289 +#, kde-format +msgid "Connecting..." +msgstr "Пайвастшавӣ..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Роҳандозии Қарордод..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Вориди маҳаллӣ" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "SSH Аслшиносӣ" + +#: fish.cpp:759 +#, kde-format +msgid "Disconnected." +msgstr "Қатъ шуд." diff --git a/po/tg/kio5_info.po b/po/tg/kio5_info.po new file mode 100644 index 0000000..6e50fb3 --- /dev/null +++ b/po/tg/kio5_info.po @@ -0,0 +1,34 @@ +# 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: Tajik KDE Software Localization\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2010-08-30 20:46+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Tajik\n" +"X-Poedit-Country: TAJIKISTAN\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: info.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"\n" +"Ҷойгиршавии файли %1 барои иҷро кардани ин хадамот имконпазир нест. Лутфан, " +"коргузории нармафзорро тафтиш кунед." diff --git a/po/tg/kio5_man.po b/po/tg/kio5_man.po new file mode 100644 index 0000000..1e05ca5 --- /dev/null +++ b/po/tg/kio5_man.po @@ -0,0 +1,222 @@ +# translation of kio_man.po to Tajik +# translation of kio_man.po to Тоҷикӣ +# Copyright (C) 2004 Free Software Foundation, Inc. +# 2004, infoDev, a World Bank organization +# 2004, Khujand Computer Technologies, Inc. +# 2004, KCT1, NGO +# +# Dilshod Marupov , 2004. +# Victor Ibragimov , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2019-09-29 12:28+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: English \n" +"Language: tg\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        Намоишгари хатоҳои KDE

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Фармонҳои истифодакунанда" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Фармонҳои истифодакунанда" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Сигналҳои Система" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Зербарномаҳо" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Модулҳои Перл (Perl)" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Вазифаҳои Шабакавӣ" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Сохтмонҳо" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Андозаҳои Файл" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Бозиҳо" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Гуногун" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Мудири Система" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Кернел" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Ҳуҷҷатҳои локалӣ" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Нав" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Индекси дастурмали UNIX " + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Қисми %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Индекси сеанси %1: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Индекси дастурмали UNIX " + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Тавлиди Нишондиҳанда" + +#: kio_man.cpp:1389 +#, 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 %1 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 "Victor Ibragimov" + +#~ msgctxt "EMAIL OF TRANSLATORS" +#~ msgid "Your emails" +#~ msgstr "victor.ibragimov@gmail.com" + +#~ msgid "KMan" +#~ msgstr "KMan" diff --git a/po/tg/kio5_nfs.po b/po/tg/kio5_nfs.po new file mode 100644 index 0000000..91180fd --- /dev/null +++ b/po/tg/kio5_nfs.po @@ -0,0 +1,72 @@ +# translation of kio_nfs.po to Tajik +# translation of kio_nfs.po to Тоҷикӣ +# Copyright (C) 2004 Free Software Foundation, Inc. +# 2004, infoDev, a World Bank organization +# 2004, Khujand Computer Technologies, Inc. +# 2004, KCT1, NGO +# +# Dilshod Marupov , 2004. +# Victor Ibragimov , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2019-09-29 12:28+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: English \n" +"Language: tg\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Номи файл хеле дароз аст" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Ҳиссаи диск афзун шудааст" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "Дар дастгоҳ фосила боқӣ намондааст" + +#~ msgid "Read only file system" +#~ msgstr "Танҳо низоми файлиро хонед" + +#~ msgid "An RPC error occurred." +#~ msgstr "Хатогии RPC пайдо шуд." diff --git a/po/tg/kio5_sftp.po b/po/tg/kio5_sftp.po new file mode 100644 index 0000000..37f835e --- /dev/null +++ b/po/tg/kio5_sftp.po @@ -0,0 +1,322 @@ +# translation of kio_sftp.po to Tajik +# translation of kio_sftp.po to Тоҷикӣ +# Copyright (C) 2004 Free Software Foundation, Inc. +# 2004, infoDev, a World Bank organization +# 2004, Khujand Computer Technologies, Inc. +# 2004, KCT1, NGO +# Dilshod Marupov , 2004 +# +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2012-01-04 21:54+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik\n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kio_sftp.cpp:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Номи корванд ё гузарвожаи нодуруст" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Не удалось выделить память под функции обработки" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Не удалось установить уровень журналирования." + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "Не удалось установить уровень журналирования." + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "Не удалось выделить память под функции обработки" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Номнависӣ дар SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Используйте поле имени пользователя для ответа на этот вопрос." + +#: kio_sftp.cpp:380 +#, fuzzy, kde-format +#| msgid "Please enter your username and password." +msgid "Please enter your password." +msgstr "Номи корванд ва гузарвожаи худро ворид кунед." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "сайт:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Не удалось прочитать ссылку: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Не удалось открыть сеанс SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Не удалось установить время ожидания." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Не удалось установить номер порта." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Не удалось установить сжатие." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Не удалось установить имя сервера." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Не удалось установить номер порта." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Не удалось установить имя пользователя." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Не удалось обработать конфигурационный файл." + +#: kio_sftp.cpp:647 +#, 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:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "Не удалось установить имя пользователя." + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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" +"Отпечаток ключа, полученный сейчас с сервера: %2\n" +"Обратитесь к системному администратору.\n" +"%3" + +#: kio_sftp.cpp:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Диққат: Шиносаи соҳибро муайян карда натавониста истодаам!" + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Хатогӣ дар аслшиносӣ." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Номи корванд ва гузарвожаи худро ворид кунед." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Номи корванд ё гузарвожаи нодуруст" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Не удаётся использовать подсистему SFTP. Убедитесь, что сервер поддерживает " +"SFTP." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Не удалось инициализировать сеанс SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Пайвастшавии бомувафақият бо %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Невозможно изменить права доступа для\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "Продолжить подключение к серверу?" + +#~ 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 "Пайвастшавӣ аз тарафи соҳиби дурдаст пӯшида шудааст." diff --git a/po/tg/kio5_smb.po b/po/tg/kio5_smb.po new file mode 100644 index 0000000..e8909b6 --- /dev/null +++ b/po/tg/kio5_smb.po @@ -0,0 +1,191 @@ +# translation of kio_smb.po to Tajik +# Copyright (C) 2004 Free Software Foundation, Inc. +# 2004, infoDev, a World Bank organization +# +# Dilshod Marupov , 2004. +# Victor Ibragimov , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2019-09-29 12:28+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\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 +#, fuzzy, kde-format +msgid "Please enter authentication information for %1" +msgstr "" +"Марҳамат карда маълумоти аслшиносиро барои:\n" +"Хидматрасон = %1\n" +"Таҳсил кардан = %2 ворид намоед" + +#: 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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Файли номаълум, на раҳнамо не файл." + +#: kio_smb_browse.cpp:281 +#, fuzzy, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Ягон медиа дар дастгоҳ барои %1 ёфт нашуд" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Барои %1 пайваст карда намешавад" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Тақсимот дар хидматрасони додашуда пайдо карда намешавад" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "Тавсифгари Файли ХАРОБШУДА" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, fuzzy, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, fuzzy, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient ҳангоми роҳандозии ибтидоӣ ба хатогӣ дучор шуд" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" + +#: wsdiscoverer.cpp:173 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "" + +#, fuzzy +#~ 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/tg/kio5_thumbnail.po b/po/tg/kio5_thumbnail.po new file mode 100644 index 0000000..2ae4f04 --- /dev/null +++ b/po/tg/kio5_thumbnail.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. +# +# Victor Ibragimov , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2009-01-13 12:32+0000\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik <>\n" +"Language: tg\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" + +#: 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:232 +#, fuzzy, kde-format +#| msgid "Cannot create thumbnail for %1" +msgid "Cannot create thumbnail for directory" +msgstr "Тасвирчаи %1 эҷод карда намешавад" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Ягон васлкунак муайян нашудааст." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 кушода намешавад" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Тасвирчаи %1 эҷод карда намешавад" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Эҷоди тасвирча қатъ карда шуд." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Тасвирро эҷод карда намешавад." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Қимси %1 хотираи тақсимшуда часпонда карда нашуд" + +#: thumbnail.cpp:324 +#, 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 "victor.ibragimov@gmail.com" + +#~ msgid "kio_thumbmail" +#~ msgstr "kio_thumbmail" diff --git a/po/tr/kfileaudiopreview5.po b/po/tr/kfileaudiopreview5.po new file mode 100644 index 0000000..e815160 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Otom&atik oynat" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "çalmayı başlat" + +#: mediacontrols_p.h:44 +#, 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..a6e16be --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Etkinlikler" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Yükleniyor..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Etkinlik Yöneticisi çalışmıyor." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Geçerli etkinliğe bağla" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Geçerli etkinlikten bağlantısını kes" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Şuraya bağla:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Şuradan bağlantısını kes:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Etkinlik" + +#: KioActivities.cpp:223 +#, 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..7fb4e02 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..40a0530 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Kök" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Konumlar" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Hatalı istek: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Henüz gösterilecek bir yer imi yok." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..3d89396 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Bağlantı kuruluyor..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Protokol iletişimi yapılıyor..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Yerel Giriş" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH Kimlik Denetimi" + +#: fish.cpp:759 +#, 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..98e905e --- /dev/null +++ b/po/tr/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..f1751be --- /dev/null +++ b/po/tr/kio5_man.po @@ -0,0 +1,236 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, 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:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "Başlık dosyaları" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "Başlık dosyaları (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Kullanıcı Komutları" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Kullanıcı Komutları (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Sistem Çağrıları" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Alt Yordamlar" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl Modülleri" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Ağ Fonksiyonları" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Aygıt Sürücüleri" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Dosya Biçimleri" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Oyunlar" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Diğer" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Sistem Yöneticisi" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Çekirdek" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Yerel Belge" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Yeni" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX Kılavuz Dizini" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Bölüm %1" + +#: kio_man.cpp:1103 +#, 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:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX Kılavuz Dizini" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Dizin Oluşturuluyor" + +#: kio_man.cpp:1389 +#, 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 %1 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..db2c3db --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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..84525b2 --- /dev/null +++ b/po/tr/kio5_nfs.po @@ -0,0 +1,78 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, fuzzy, kde-format +#| msgid "RPC error %1" +msgid "RPC error %1, %2" +msgstr "RPC hatası %1" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Dosya adı çok uzun" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Disk kotası aşıldı" + +#: kio_nfs.cpp:917 +#, fuzzy, kde-format +#| msgid "NFS error %1 - %2" +msgid "NFS error %1, %2" +msgstr "NFS hatası %1 - %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Bilinmeyen hedef" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: Desteklenmeyen NFS sürümü." + +#~ msgid "No space left on device" +#~ msgstr "Aygıtta boş yer kalmadı" + +#~ msgid "Read only file system" +#~ msgstr "Salt okunur dosya sistemi" + +#~ msgid "Failed to mount %1" +#~ msgstr "%1 bağlanamadı" + +#~ 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..2bd3d58 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..0d6d3ab --- /dev/null +++ b/po/tr/kio5_sftp.po @@ -0,0 +1,455 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Yanlış veya geçersiz parola" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Geri aramalar paylaştırılamadı" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Günlük kaydı ayrıntısı ayarlanamadı." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Günlük kullanıcı verisi ayarlanamadı." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Günlük geri çağırımı ayarlanamadı" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP Girişi" + +#: kio_sftp.cpp:367 +#, 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:380 +#, kde-format +msgid "Please enter your password." +msgstr "Lütfen parolanızı girin." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Site:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Bağlantı okunamadı: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Yeni bir SSH oturumu başlatılamadı." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Zamanaşımı ayarlanamadı." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "Port ayarlanamadı." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Sıkıştırma ayarlanamadı." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Makine ayarlanamadı." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Port ayarlanamadı." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Kullanıcı adı ayarlanamadı." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Yapılandırma dosyası ayrıştırılamadı." + +#: kio_sftp.cpp:647 +#, 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:687 +#, 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:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Sunucu genel anahtarından karma oluşturulamadı" + +#: kio_sftp.cpp:709 +#, 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:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Uyarı: Makinenin kimliği saptanamadı." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Kimlik sınaması başarısız oldu." + +#: kio_sftp.cpp:832 +#, 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:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Lütfen kullanıcı adı ve parolanızı girin." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Geçersiz kullanıcı adı veya parolası" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP oturumu başlatılamadı." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 adresine başarıyla bağlantı kuruldu" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Yetki özellikleri değiştirilemedi\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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?" + +#~ 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..f8c293b --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1\n" +"Bilinmeyen dosya türü." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 için aygıtta medya yok" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "%1 için makineye bağlantı kurulamadı" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Hatalı dosya belirteci" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, 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:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient başlatılamadı" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, 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:173 +#, 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..6225246 --- /dev/null +++ b/po/tr/kio5_thumbnail.po @@ -0,0 +1,85 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Dizin için küçük resim oluşturulamadı" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Eklenti belirtilmedi." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator %1 yüklenemedi" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 için küçük resim oluşturulamadı" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Küçük resim oluşturma işlemi başarısız oldu." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Resim yazılamadı." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Paylaşılan bellek parçası %1'e eklenemedi" + +#: thumbnail.cpp:324 +#, 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 "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Resmi otomatik olarak döndür" + +#~ 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..f327462 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "ئاپتوماتىك قويۇش" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "قويۇشنى باشلاش" + +#: mediacontrols_p.h:44 +#, 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..c677100 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activities" +msgstr "پائالىيەتلەر…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +#| msgid "Activity manager is not running properly." +msgid "The Activity Manager is not running" +msgstr "پائالىيەت باشقۇرغۇچ نورمال ئىجرا بولمىغان." + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "نۆۋەتتىكى پائالىيەتكە ئۇلا" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "نۆۋەتتىكى پائالىيەتتىن ئۇلانمىنى ئۈز" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "ئۇلايدىغىنى:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "ئۇلانمىنى ئۈزىدىغىنى:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, fuzzy, kde-format +#| msgid "Activities..." +msgid "Activity" +msgstr "پائالىيەتلەر…" + +#: KioActivities.cpp:223 +#, 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..b3b6e75 --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"بۇ ھۆججەتنى ئاچقىلى بولمىدى. سەۋەبى ھۆججەت فورماتىنى قوللىمايدۇ.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..4d67f74 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "غول مۇندەرىجە" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "ئورۇنلار" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "خاتا سۈرۈشتۈرۈش: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "تېخى كۆرسىتىدىغان خەتكۈش يوق." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..eef5d7b --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "باغلىنىۋاتىدۇ…" + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "كېلىشىمنى دەسلەپلەشتۈرۈۋاتىدۇ…" + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "يەرلىك كىرىش" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "س س خ (SSH) كىملىك دەلىللەش" + +#: fish.cpp:759 +#, 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..460ebf8 --- /dev/null +++ b/po/ug/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..c92e59b --- /dev/null +++ b/po/ug/kio5_man.po @@ -0,0 +1,206 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "باش ھۆججەتلەر" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "باش ھۆججەتلەر (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "ئىشلەتكۈچى بۇيرۇقلىرى" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "ئىشلەتكۈچى بۇيرۇقلىرى(POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "سىستېما چاقىرىش" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "تارماق فۇنكسىيىلەر" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl بۆلەكلىرى" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "تور فۇنكسىيە" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "ئۈسكۈنىلەر" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "ھۆججەت پىچىملىرى" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "ئويۇنلار" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "باشقىلار" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "سىستېما باشقۇرۇش" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "يادرو" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "يەرلىك پۈتۈك" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "يېڭى" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX قوللانما ئىندىكىسى" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "بۆلەك %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "بۆلەك %1 نىڭ ئىندېكسى: %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX قوللانما ئىندىكىسى" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "ئىندېكس ھاسىللاۋاتىدۇ" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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..2215c91 --- /dev/null +++ b/po/ug/kio5_nfs.po @@ -0,0 +1,67 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "ئات بەك ئۇزۇن" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "دىسكا نورمىسى ئېشىپ كەتتى" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "ئۈسكۈنىدە يېتەرلىك بوشلۇق يوق" + +#~ msgid "Read only file system" +#~ 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..d471d66 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..6f5033c --- /dev/null +++ b/po/ug/kio5_sftp.po @@ -0,0 +1,227 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "ئىم توغرا ئەمەس ياكى ئىناۋەتسىز" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "callback لارنى تەقسىملىگىلى بولمىدى" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "خاتىرە دەرىجىسىنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:276 +#, fuzzy, kde-format +#| msgid "Could not set log verbosity." +msgid "Could not set log userdata." +msgstr "خاتىرە دەرىجىسىنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:281 +#, fuzzy, kde-format +#| msgid "Could not allocate callbacks" +msgid "Could not set log callback." +msgstr "callback لارنى تەقسىملىگىلى بولمىدى" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP كىرىش" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "" +"بۇ سوئالغا جاۋاب بېرىشتە ئىشلەتكۈچى ئاتىنى كىرگۈزۈش سۆز بۆلىكىنى ئىشلىتىدۇ." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "ئىمنى كىرگۈزۈڭ." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "تور بېكەت:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "ئۇلانمىنى ئوقۇغىلى بولمىدى: %1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "يېڭى SSH ئەڭگىمەسى قۇرغىلى بولمىدى." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "قەرەلنى(timeout) نى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:592 +#, fuzzy, kde-format +#| msgid "Could not set port." +msgid "Could not disable Nagle's Algorithm." +msgstr "ئېغىزنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "پرېسلاشنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "كومپيۇتېرنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "ئېغىزنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "ئىشلەتكۈچى ئاتىنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "سەپلىمە ھۆججەتنى تەھلىل قىلغىلى بولمىدى." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "" + +#: kio_sftp.cpp:687 +#, fuzzy, kde-format +#| msgid "Could not set username." +msgid "Could not get server public key type name" +msgstr "ئىشلەتكۈچى ئاتىنى بەلگىلىگىلى بولمىدى." + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "ئاگاھلاندۇرۇش: كومپيۇتېرنىڭ كىملىكىنى تەكشۈرگىلى بولمىدى." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "دەلىللەش مەغلۇپ بولدى." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "ئىشلەتكۈچى ئاتى ۋە ئىمنى كىرگۈزۈڭ." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "ئىشلەتكۈچى ئاتى ياكى ئىم توغرا ئەمەس" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "SFTP ئەڭگىمەسىنى دەسلەپلەشتۈرەلمىدى." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "%1 غا مۇۋەپپەقىيەتلىك باغلاندى" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"تۆۋەندىكىنىڭ ھوقۇقىنى ئۆزگەرتكىلى بولمىدى\n" +"%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..2883123 --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +" ھۆججەتنىڭ تىپى نامەلۇم، نامەلۇم مۇندەرىجە ياكى ھۆججەت" + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 نىڭ ئۈسكۈنىسىدە ۋاسىتە يوق" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "ماشىنا %1 غا باغلانغىلى بولمىدى" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "بېرىلگەن مۇلازىمېتىردىن ھەمبەھىر تېپىلمىدى" + +#: kio_smb_browse.cpp:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "بولمىغۇر ھۆججەت چۈشەندۈرۈلۈشى" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "مەزمۇن قۇرۇشتا libsmbclient مەغلۇپ بولدى" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"ئېگەرلەش نۇقتىسى «%1» نى ئېگەرسىزلەش مەغلۇپ بولدى.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..db803a3 --- /dev/null +++ b/po/ug/kio5_thumbnail.po @@ -0,0 +1,83 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "مۇندەرىجىنىڭ كىچىك سۈرىتىنى قۇرغىلى بولمىدى" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "قىستۇرما كۆرسىتىلمىگەن." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "ThumbCreator نى ئوقۇغىلى بولمىدى %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "%1 ئۈچۈن كىچىك سۈرەت قۇرغىلى بولمىدى" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "كىچىك سۈرەت قۇرۇش مەغلۇپ بولدى." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "سۈرەتنى يازغىلى بولمىدى." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "ھەمبەھىرلەنگەن ئەسلەك بۆلىكى %1 گە قېتىلىش مەغلۇپ بولدى" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "ھەمبەھىرلەنگەن ئەسلەك بۆلىكىگە نىسبەتەن سۈرەت بەك چوڭ" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ 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/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/docs/kioslave5/zstd/index.docbook b/po/uk/docs/kioslave5/zstd/index.docbook new file mode 100644 index 0000000..92b720a --- /dev/null +++ b/po/uk/docs/kioslave5/zstd/index.docbook @@ -0,0 +1,65 @@ + + + +]> + +
        +zstd + + +FriedrichW. H.Kossebau +ЮрійЧорноіван
        yurchor@ukr.net
        Переклад українською
        +
        +
        + +zstd — програма для стискання даних. + +Підлеглий засіб zstd типово не використовується безпосередньо, його використовують як фільтр. Наприклад, підлеглий tar може розпакувати файл за допомогою підлеглого zstd, для того щоб показати вміст файла tar.zst в вікні &konqueror;. + +Коли ви натискаєте позначку файла з суфіксом назви zst, у &konqueror;, цей підлеглий В/В використовується, щоб розпакувати цей файл і показати його, як звичайний (розпакований) файл. + +Розробники програм, які бажають використовувати підлеглий фільтр zstd, можуть знайти документацію про використання підлеглих В/В на http://techbase.kde.org + +Підручник: zstd. + +
        diff --git a/po/uk/kfileaudiopreview5.po b/po/uk/kfileaudiopreview5.po new file mode 100644 index 0000000..c862245 --- /dev/null +++ b/po/uk/kfileaudiopreview5.po @@ -0,0 +1,36 @@ +# Translation of kfileaudiopreview5.po to Ukrainian +# Copyright (C) 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. +# +# Yuri Chornoivan , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview5\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Відтворювати &автоматично" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "почати відтворення" + +#: mediacontrols_p.h:44 +#, 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..437e598 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Простори дій" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Завантаження…" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Засіб керування просторами дій не запущено" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "З’єднати з поточним простором дій" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Від’єднати від поточного простору дій" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "З’єднати з:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Від’єднати від:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Простір дій" + +#: KioActivities.cpp:223 +#, 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..48a203b --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Не вдалося відкрити файл. Ймовірно через формат, який не підтримується.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..fa9e92f --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Корінь" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Місця" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Не вдалося знайти налаштування закладок" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Не вдалося знайти редактор закладок" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Помилковий запит: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Закладок ще немає, — немає чого показувати." + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..351a5a1 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Встановлення з’єднання..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Ініціалізація протоколу..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Локальна реєстрація" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Розпізнавання за допомогою SSH" + +#: fish.cpp:759 +#, 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..3ca143c --- /dev/null +++ b/po/uk/kio5_info.po @@ -0,0 +1,30 @@ +# Translation of kio5_info.po to Ukrainian +# Copyright (C) 2009-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Yuri Chornoivan , 2009, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio5_info\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-02-20 09:48+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" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Не вдалося знайти файли, які потрібні для запуску цієї служби:
        %1
        Будь " +"ласка, переконайтеся, що програму встановлено належним чином." diff --git a/po/uk/kio5_man.po b/po/uk/kio5_man.po new file mode 100644 index 0000000..bb04884 --- /dev/null +++ b/po/uk/kio5_man.po @@ -0,0 +1,228 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio5_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-03 08:02+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.12.0\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_man.cpp:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" +"Не вдалося прочитати сторінку підручника (man) %1." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" +"Не вдалося перетворити сторінку підручника (man) %1." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Помилка засобу перегляду сторінок підручника" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Підходить одразу декілька сторінок:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Декілька сторінок підручника" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "Файли заголовків" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Файл заголовків (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Команди користувача" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Команди користувача (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Системні виклики" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Підпрограми" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Модулі Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Функції мережі" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Пристрої" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Формати файлів" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Ігри" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Різне" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Керування системою" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Ядро" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Локальна документація" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Створити" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Основний покажчик сторінок підручника" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Розділ %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Індекс розділу %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Покажчик сторінок підручника" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Створюю індекс" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Не вдалося знайти програму %1 у вашій системі. Будь " +"ласка, встановіть її, якщо потрібно, та перевірте, чи адреса каталогу, де " +"вона зберігається, є частиною значення змінної середовища 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..a210835 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, 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_nfs.po b/po/uk/kio5_nfs.po new file mode 100644 index 0000000..a054fea --- /dev/null +++ b/po/uk/kio5_nfs.po @@ -0,0 +1,78 @@ +# Translation of kio5_nfs.po to Ukrainian +# Copyright (C) 2002-2021 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Andriy Rysin , 2002, 2004. +# Ivan Petrouchtchak , 2006. +# Yuri Chornoivan , 2009, 2014, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio5_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-02-14 08:46+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_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Не вдалося знайти версію NFS, підтримку якої передбачено на вузлі «%1»" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Для протоколу NFS слід вказати назву вузла сервера." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Не вдалося ініціалізувати протокол" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Помилка RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Задовга назва файла" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Перевищено квоту диска" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Помилка NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Невідоме призначення" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1: непідтримувана версія NFS" + +#~ msgid "No space left on device" +#~ msgstr "Немає місця на пристрої" + +#~ msgid "Read only file system" +#~ msgstr "Файлова система тільки для зчитування" + +#~ msgid "Failed to mount %1" +#~ msgstr "Не вдалося змонтувати %1" + +#~ 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..d2e1f03 --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..9ed56b7 --- /dev/null +++ b/po/uk/kio5_sftp.po @@ -0,0 +1,453 @@ +# 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, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio5_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-15 09:54+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.12.0\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Помилковий або некоректний пароль" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Не вдалося розмістити зворотні виклики" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Не вдалося встановити рівень докладності журналу." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Не вдалося встановити дані щодо користувача журналу." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Не вдалося встановити зворотний виклик журналу." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Вхід до SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Скористайтеся полем імені користувача для відповіді на це питання." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "Будь ласка, введіть ваш пароль." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Сайт:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Не вдалося прочитати посилання: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Не вдалося створити сеанс SSH." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Не вдалося встановити час очікування." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Не вдалося вимкнути алгоритм Негла." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Не вдалося встановити режим стискання." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Не вдалося встановити назву вузла." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Не вдалося встановити номер порту." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Не вдалося встановити ім’я користувача." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Не вдалося обробити файл налаштувань." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Відкриття SFTP-з’єднання з вузлом %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Не вдалося отримати назву типу відкритого ключа сервера" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Не вдалося створити хеш на основі відкритого ключа сервера" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Не вдалося створити відбиток для відкритого ключа сервера" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Увага: неможливо перевірити тотожність машини." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Спроба розпізнавання зазнала невдачі." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" +"Помилка розпізнавання. Сервером не надіслано жодних даних щодо способів " +"розпізнавання." + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Будь ласка, введіть ім'я користувача та пароль." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Неправильні ім'я користувача або пароль" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Не вдалося надіслати запит до підсистеми SFTP. Переконайтеся, що на сервері " +"увімкнено SFTP." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Не вдалося ініціалізувати сеанс SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Успішно встановлено з'єднання до %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Некоректний контекст sftp" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Не вдалося змінити права доступу до\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "Ви впевнені, що не бажаєте розірвати з’єднання?" + +#~ 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..19db803 --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Невідомий тип файла, це не каталог і не файл." + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Немає носія інформації у пристрої, пов’язаному з %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Не вдається з'єднатися з вузлом для доступу до %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Помилка при з'єднанні з сервером, що відповідає за %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Ресурс на заданому сервері не знайдено" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Помилковий дескриптор файла" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Під час спроби отримати доступ до %1 сталася помилка%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient зазнала помилку при створенні контексту." + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Помилка розмотування «%1».\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..8e4f421 --- /dev/null +++ b/po/uk/kio5_thumbnail.po @@ -0,0 +1,75 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Не вдалося створити мініатюру для каталогу" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Не вказано додаток." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Не вдалося завантажити ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Не вдалося створити мініатюру для %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Помилка створення мініатюри." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Не вдалося записати зображення." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Помилка при долученні сегменту спільної пам'яті %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Зображення занадто велике для сегменту спільної пам'яті" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Автоматично повертати зображення" diff --git a/po/vi/kfileaudiopreview5.po b/po/vi/kfileaudiopreview5.po new file mode 100644 index 0000000..a97e679 --- /dev/null +++ b/po/vi/kfileaudiopreview5.po @@ -0,0 +1,35 @@ +# Vietnamese translation for kfileaudiopreview. +# Copyright © 2006 KDE i18n Project for Vietnamese. +# +# Clytie Siddall , 2006. +# Hoàng Đức Hiếu , 2008. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kfileaudiopreview4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-01 00:18+0000\n" +"PO-Revision-Date: 2021-08-01 18:30+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 20.12.2\n" + +#: kfileaudiopreview.cpp:69 +#, kde-format +msgid "Play &automatically" +msgstr "&Tự động phát" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "Bắt đầu phát" + +#: mediacontrols_p.h:44 +#, kde-format +msgid "pause playback" +msgstr "Tạm dừng phát" diff --git a/po/vi/kio5_activities.po b/po/vi/kio5_activities.po new file mode 100644 index 0000000..ffce9c3 --- /dev/null +++ b/po/vi/kio5_activities.po @@ -0,0 +1,67 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kio-extras package. +# +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-24 00:16+0000\n" +"PO-Revision-Date: 2021-08-01 18:14+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 20.12.2\n" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "Hoạt động" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "Đang tải..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "Trình quản lí Hoạt động đang không chạy" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "Liên kết với Hoạt động hiện tại" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "Bỏ liên kết với Hoạt động hiện tại" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "Liên kết với:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "Bỏ liên kết với:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "Hoạt động" + +#: KioActivities.cpp:223 +#, kde-format +msgid "Current activity" +msgstr "Hoạt động hiện tại" diff --git a/po/vi/kio5_archive.po b/po/vi/kio5_archive.po new file mode 100644 index 0000000..25502bb --- /dev/null +++ b/po/vi/kio5_archive.po @@ -0,0 +1,38 @@ +# Vietnamese translation for kio_tar. +# Copyright © 2006 Free Software Foundation, Inc. +# +# Phan Vinh Thinh , 2006. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_tar\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-07 00:17+0000\n" +"PO-Revision-Date: 2021-08-03 10:03+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_archivebase.cpp:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"Không mở được tệp, có thể do dạng thức tệp không được hỗ trợ.\n" +"%1" + +#: kio_archivebase.cpp:505 +#, kde-format +msgid "" +"The archive file could not be opened, perhaps because the format is " +"unsupported.\n" +"%1" +msgstr "" +"Không mở được tệp kho trữ, có thể do dạng thức không được hỗ trợ.\n" +"%1" diff --git a/po/vi/kio5_bookmarks.po b/po/vi/kio5_bookmarks.po new file mode 100644 index 0000000..1345dbe --- /dev/null +++ b/po/vi/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. +# +# Lê Hoàng Phương , 2011. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-08-01 18:23+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_bookmarks.cpp:83 +#, kde-format +msgid "Root" +msgstr "Gốc" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Địa điểm" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "Không tìm được cấu hình dấu nhớ" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "Không tìm được trình biên tập dấu nhớ" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Yêu cầu sai: %1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "Chưa có dấu nhớ nào để hiển thị." + +#: kio_bookmarks_html.cpp:124 +#, kde-format +msgid "" +"kio_bookmarks CSS file not found. Output will look ugly.\n" +"Check your installation." +msgstr "" +"Không tìm thấy tệp CSS của kio_bookmarks. Đầu ra sẽ trông không đẹp.\n" +"Hãy kiểm tra bản cài đặt của bạn." + +#: kio_bookmarks_html.cpp:133 +#, kde-format +msgid "My Bookmarks" +msgstr "Dấu nhớ của tôi" diff --git a/po/vi/kio5_fish.po b/po/vi/kio5_fish.po new file mode 100644 index 0000000..e291b19 --- /dev/null +++ b/po/vi/kio5_fish.po @@ -0,0 +1,44 @@ +# Vietnamese translation for kio_fish. +# Copyright © 2006 Free Software Foundation, Inc. +# +# Phan Vĩnh Thịnh , 2006. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_fish\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-08-01 14:28+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: fish.cpp:289 +#, kde-format +msgid "Connecting..." +msgstr "Đang kết nối..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Đang bắt đầu giao thức..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Đăng nhập cục bộ" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "Xác thực SSH" + +#: fish.cpp:759 +#, kde-format +msgid "Disconnected." +msgstr "Không kết nối." diff --git a/po/vi/kio5_info.po b/po/vi/kio5_info.po new file mode 100644 index 0000000..f6fb5cf --- /dev/null +++ b/po/vi/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. +# +# Lê Hoàng Phương , 2011. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2021-08-01 14:30+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: info.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "" +"Không thể định vị các tệp cần thiết để chạy dịch vụ này:
        %1
        Vui lòng " +"kiểm tra bản cài đặt phần mềm của bạn." diff --git a/po/vi/kio5_man.po b/po/vi/kio5_man.po new file mode 100644 index 0000000..c29988d --- /dev/null +++ b/po/vi/kio5_man.po @@ -0,0 +1,205 @@ +# Vietnamese translation for kio_man. +# Copyright © 2007 KDE i18n Project for Vietnamese. +# +# Nguyễn Hưng Vũ , 2002. +# Phan Vĩnh Thịnh , 2006. +# Lê Hoàng Phương , 2011, 2012. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_man\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2021-09-03 08:49+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 20.12.2\n" + +#: kio_man.cpp:458 +#, 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 "" +"Không tìm được trang sổ tay nào khớp với %1.Hãy kiểm tra lại rằng bạn không gõ nhầm tên của trang, và lưu ý rằng tên " +"các trang sổ tay có phân biệt hoa thường.Nếu tên đã đúng rồi, bạn " +"có thể cần phải mở rộng đường dẫn tìm kiếm các trang sổ tay, bằng cách dùng " +"biến môi trường MANPATH hoặc một tệp cấu hình ở thư mục " +"/etc." + +#: kio_man.cpp:574 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"The specified man page references another page %1,but the referenced page %2 could not be found." +msgstr "" +"Trang sổ tay được chỉ định tham chiếu đến một trang khác %1,nhưng không tìm được trang được tham chiếu %2." + +#: kio_man.cpp:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "Không đọc được trang sổ tay %1." + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "Không chuyển dạng được trang sổ tay %1." + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "Lỗi trình xem trang sổ tay" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "Có nhiều hơn một trang sổ tay khớp:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "Nhiều trang sổ tay" + +#: kio_man.cpp:669 +#, 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 "" +"Lưu ý: nếu bạn xem một trang sổ tay trong ngôn ngữ của mình, hãy lưu ý rằng " +"nó có thể có một vài lỗi hoặc đã lỗi thời. Khi có nghi ngờ, bạn nên xem thử " +"phiên bản tiếng Anh." + +#: kio_man.cpp:742 +#, kde-format +msgid "Header Files" +msgstr "Tệp đầu tải" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "Tệp đầu tải (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Lệnh người dùng" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "Lệnh người dùng (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Lời gọi hệ thống" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Lặp thức con" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Khối Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Chức năng mạng" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Thiết bị" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Dạng thức tệp" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Trò chơi" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Hỗn hợp" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Quản trị hệ thống" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Nhân" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Tài liệu cục bộ" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Mới" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "Chỉ mục trang sổ tay chính" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Phần %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "Chỉ mục cho phần %1: %2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "Chỉ mục trang sổ tay" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Đang tạo chỉ mục" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"Không tìm được chương trình %1 trong hệ thống. Vui lòng " +"cài đặt nếu cần thiết, và đảm bảo rằng nó có thể được tìm thấy bằng biến môi " +"trường PATH." diff --git a/po/vi/kio5_mtp.po b/po/vi/kio5_mtp.po new file mode 100644 index 0000000..3e56f2d --- /dev/null +++ b/po/vi/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. +# +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-08-01 18:33+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 20.12.2\n" + +#: kio_mtp.cpp:217 +#, kde-format +msgid "" +"No storage media found. Make sure your device is unlocked and has MTP " +"enabled in its USB connection settings." +msgstr "" +"Không tìm thấy phương tiện lưu trữ nào. Hãy chắc chắn rằng thiết bị của bạn " +"được mở khoá và đã bật MTP trong thiết lập kết nối USB của nó." + +#: kio_mtp.cpp:520 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "Không thể chép/di chuyển tệp trên chính thiết bị" diff --git a/po/vi/kio5_nfs.po b/po/vi/kio5_nfs.po new file mode 100644 index 0000000..6c07572 --- /dev/null +++ b/po/vi/kio5_nfs.po @@ -0,0 +1,66 @@ +# Vietnamese translation for kio_nfs. +# Copyright © 2006 Free Software Foundation, Inc. +# +# Nguyễn Hưng Vũ , 2002. +# Phan Vĩnh Thịnh , 2006. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_nfs\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-08-01 18:28+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kio_nfs.cpp:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "Không tìm thấy phiên bản NFS nào mà máy '%1' hỗ trợ" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "Giao thức NFS yêu cầu có một tên máy chủ." + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "Khởi tạo giao thức thất bại" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "Lỗi RPC %1, %2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Tên tệp quá dài" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Đã vượt quá hạn ngạch đĩa" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "Lỗi NFS %1, %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "Đích không rõ" + +#~ msgid "No space left on device" +#~ msgstr "Không còn khoảng trống trên thiết bị" + +#~ msgid "Read only file system" +#~ msgstr "Hệ thống tệp chỉ đọc" diff --git a/po/vi/kio5_recentdocuments.po b/po/vi/kio5_recentdocuments.po new file mode 100644 index 0000000..7a57a2f --- /dev/null +++ b/po/vi/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. +# +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio-extras\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2021-08-01 18:33+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 20.12.2\n" + +#: recentdocuments.cpp:160 +#, kde-format +msgid "Recent Documents" +msgstr "Tài liệu gần đây" diff --git a/po/vi/kio5_sftp.po b/po/vi/kio5_sftp.po new file mode 100644 index 0000000..976117d --- /dev/null +++ b/po/vi/kio5_sftp.po @@ -0,0 +1,277 @@ +# Vietnamese translation for kio_sftp. +# Copyright © 2006 Free Software Foundation, Inc. +# +# Phan Vĩnh Thịnh , 2006. +# Lê Hoàng Phương , 2013. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_sftp\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2021-10-19 14:46+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 20.12.2\n" + +#: kio_sftp.cpp:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "Mật khẩu sai hoặc không hợp lệ" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "Không phân bố được lời gọi lại" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "Không đặt được độ chi tiết của nhật kí." + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "Không đặt được dữ liệu người dùng của nhật kí." + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "Không đặt được lời gọi lại của nhật kí." + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Đăng nhập SFTP" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "Sử dụng trường nhập tên người dùng để trả lời câu hỏi này." + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "Vui lòng nhập mật khẩu của bạn." + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "Địa điểm:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "Không đọc được liên kết: %1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "Không tạo được phiên SSH mới." + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "Không đặt được thời hạn." + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "Không tắt được thuật toán Nagle." + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "Không đặt được chế độ nén." + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "Không đặt được máy." + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "Không đặt được cổng." + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "Không đặt được tên người dùng." + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "Không phân tách được tệp cấu hình." + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "Đang mở kết nối SFTP đến máy %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "Không lấy được tên kiểu khoá công khai của máy chủ." + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "Không tạo được giá trị băm từ khoá công khai của máy chủ" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "Không tạo được điểm chỉ cho khoá công khai của máy chủ" + +#: kio_sftp.cpp:769 +#, 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 "" +"Không tìm thấy khoá %1 cho máy chủ này, nhưng lại có một kiểu khoá khác.\n" +"Một kẻ tấn công có thể thay đổi khoá máy chủ mặc định nhằm làm cho máy khách " +"của bạn nghĩ rằng khoá không tồn tại.\n" +"Vui lòng liên hệ với quản trị viên hệ thống của bạn.\n" +"%2" + +#: kio_sftp.cpp:780 +#, 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 "" +"Khoá cho máy chủ %1 đã thay đổi.\n" +"Điều này có thể có nghĩa là, hoặc việc đánh lừa bằng DNS đang diễn ra, hoặc " +"địa chỉ IP cho máy đó và khoá của nó đã thay đổi cùng lúc.\n" +"Điểm chỉ cho khoá %2 do máy ở xa gửi là:\n" +" SHA256:%3\n" +"Vui lòng liên hệ với quản trị viên hệ thống của bạn.\n" +"%4" + +#: kio_sftp.cpp:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Cảnh báo: Không thể xác minh danh tính của máy." + +#: kio_sftp.cpp:796 +#, 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 "" +"Tính xác thực của máy %1 không thể được chứng minh.\n" +"Điểm chỉ của khoá %2 là: %3\n" +"Bạn có chắc chắn muốn tiếp tục kết nối không?" + +#: kio_sftp.cpp:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "Xác thực thất bại." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "Xác thực thất bại. Máy chủ không gửi bất kì phương thức xác thực nào" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "Vui lòng nhập tên người dùng và mật khẩu." + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Tên người dùng hoặc mật khẩu sai" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "" +"Không thể yêu cầu hệ thống con SFTP. Hãy chắc chắn rằng SFTP được bật trên " +"máy chủ." + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Không khởi tạo được phiên SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Đã kết nối thành công đến %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "Ngữ cảnh SFTP không hợp lệ" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Không thay đổi được quyền cho\n" +"%1" + +#~ 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 "" +#~ "Không tìm thấy khoá cho máy chủ này, nhưng lại có một kiểu khoá khác.\n" +#~ "Một kẻ tấn công có thể thay đổi khoá máy chủ mặc định nhằm làm cho máy " +#~ "khách của bạn nghĩ rằng khoá không tồn tại.\n" +#~ "Vui lòng liên hệ với quản trị viên hệ thống của bạn.\n" +#~ "%1" + +#~ 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 "" +#~ "Khoá cho máy chủ %1 đã thay đổi.\n" +#~ "Điều này có thể có nghĩa là, hoặc việc đánh lừa bằng DNS đang diễn ra, " +#~ "hoặc địa chỉ IP cho máy đó và khoá của nó đã thay đổi cùng lúc.\n" +#~ "Điểm chỉ cho khoá do máy ở xa gửi là:\n" +#~ " %2\n" +#~ "Vui lòng liên hệ với quản trị viên hệ thống của bạn.\n" +#~ "%3" + +#~ 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 "" +#~ "Tính xác thực của máy %1 không thể được chứng minh.\n" +#~ "Điểm chỉ của khoá là: %2\n" +#~ "Bạn có chắc chắn muốn tiếp tục kết nối không?" diff --git a/po/vi/kio5_smb.po b/po/vi/kio5_smb.po new file mode 100644 index 0000000..4b25a43 --- /dev/null +++ b/po/vi/kio5_smb.po @@ -0,0 +1,192 @@ +# Vietnamese translation for kio_smb. +# Copyright © 2006 Free Software Foundation, Inc. +# +# Phan Vĩnh Thịnh , 2006. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_smb\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2021-08-01 15:38+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 20.12.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 "" +"Có các lựa chọn khác nhau để xác thực ở các chia sẻ SMB.tên_người_dùng: Khi xác thực trong một " +"mạng nhà, tên người dùng trên máy chủ là đủtên_người_dùng@miền.com: tên đăng nhập " +"ở các công ti hiện nay có dạng giống địa chỉ thư điện tửMIỀN\\tên_người_dùng: Với các mạng " +"hoặc nhóm làm việc cũ ở các công ti, bạn có thể phải đặt tiền tố cho tên " +"miền NetBIOS (tiền Windows 2000)vô danh: Bạn có thể thử đăng nhập vô danh bằng tên người dùng và mật " +"khẩu rỗng. Tuỳ thuộc vào cấu hình máy chủ,tên người dùng có thể không được " +"rỗng" + +#: kio_smb_auth.cpp:48 +#, kde-format +msgid "Please enter authentication information for %1" +msgstr "Vui lòng nhập thông tin xác thực cho %1" + +#: kio_smb_auth.cpp:51 +#, kde-format +msgid "" +"Please enter authentication information for:\n" +"Server = %1\n" +"Share = %2" +msgstr "" +"Vui lòng nhập thông tin xác thực cho:\n" +"Máy chủ = %1\n" +"Chia sẻ = %2" + +#: kio_smb_browse.cpp:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"Kiểu tệp không rõ, không phải thư mục hay tệp." + +#: kio_smb_browse.cpp:281 +#, kde-format +msgid "" +"Unable to find any workgroups in your local network. This might be caused by " +"an enabled firewall." +msgstr "" +"Không tìm thấy nhóm làm việc nào trong mạng cục bộ. Có thể là do một tường " +"lửa được bật." + +#: kio_smb_browse.cpp:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Không có phương tiện trong thiết bị cho %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Không kết nối được đến máy cho %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "Lỗi khi kết nối đến máy chủ chịu trách nhiệm cho %1" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "Không tìm được chia sẻ trên máy chủ đã cho" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "Mã mô tả tệp hỏng" + +#: kio_smb_browse.cpp:320 +#, 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 "" +"Tên đã cho không phân giải được thành một máy chủ độc nhất. Hãy chắc chắn " +"rằng mạng của bạn không có xung đột giữa phần phân giải tên Windows và UNIX." + +#: kio_smb_browse.cpp:327 +#, 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: không liên lạc được với máy" + +#: kio_smb_browse.cpp:330 +#, 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 báo cáo có lỗi, nhưng không chỉ ra vấn đề là gì. Việc này có " +"thể cho thấy một vấn đề nghiêm trọng với mạng của bạn - nhưng cũng có thể là " +"một vấn đề với libsmbclient.\n" +"Nếu bạn muốn giúp đỡ chúng tôi, vui lòng cung cấp một tcpdump của giao diện " +"mạng khi bạn duyệt (chú ý rằng nó có thể chứa dữ liệu riêng tư, vì thế đừng " +"đăng lên nếu bạn không chắc chắn - bạn có thể gửi nó riêng đến nhà phát " +"triển nếu họ yêu cầu)" + +#: kio_smb_browse.cpp:343 +#, kde-format +msgctxt "%1 is an error number, %2 either a pretty string or the number" +msgid "Unknown error condition: [%1] %2" +msgstr "Tình trạng lỗi không rõ: [%1] %2" + +#: kio_smb_browse.cpp:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "Lỗi xảy ra khi truy cập %1%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient thất bại khi tạo ngữ cảnh" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, kde-format +msgid "" +"\n" +"Make sure that the samba package is installed properly on your system." +msgstr "" +"\n" +"Hãy chắc chắn rằng gói samba được cài đặt đúng đắn trên hệ thống của bạn." + +#: kio_smb_mount.cpp:101 +#, kde-format +msgid "" +"Mounting of share \"%1\" from host \"%2\" by user \"%3\" failed.\n" +"%4" +msgstr "" +"Gắn kết chia sẻ \"%1\" từ máy \"%2\" bởi người dùng \"%3\" thất bại.\n" +"%4" + +#: kio_smb_mount.cpp:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"Bỏ gắn kết điểm gắn \"%1\" thất bại.\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, kde-kuit-format +msgctxt "" +"host entry when no pretty name is available. %1 likely is an IP address" +msgid "Unknown Device @ %1" +msgstr "Thiết bị không rõ @ %1" diff --git a/po/vi/kio5_thumbnail.po b/po/vi/kio5_thumbnail.po new file mode 100644 index 0000000..bc79061 --- /dev/null +++ b/po/vi/kio5_thumbnail.po @@ -0,0 +1,74 @@ +# Vietnamese translation for kio_thumbnail. +# Copyright © 2007 KDE i18n Project for Vietnamese. +# +# Phan Vĩnh Thịnh , 2006. +# Lê Hoàng Phương , 2011. +# Phu Hung Nguyen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kio_thumbnail\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2021-08-03 11:40+0200\n" +"Last-Translator: Phu Hung Nguyen \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 20.12.2\n" + +#: thumbnail.cpp:200 +#, kde-format +msgid "No MIME Type specified." +msgstr "Chưa chỉ ra kiểu MIME." + +#: thumbnail.cpp:208 +#, kde-format +msgid "No or invalid size specified." +msgstr "Chưa chỉ ra kích thước, hoặc chỉ ra kích thước sai." + +#: thumbnail.cpp:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Không thể tạo hình nhỏ cho thư mục" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Chưa chỉ ra phần cài cắm." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Không thể tải ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Không thể tạo hình nhỏ cho %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "Tạo hình nhỏ thất bại." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Không ghi được ảnh." + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "Gắn vào vùng nhớ dùng chung %1 thất bại" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "Ảnh quá lớn đối với vùng nhớ dùng chung" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "Tự động xoay ảnh" diff --git a/po/wa/kfileaudiopreview5.po b/po/wa/kfileaudiopreview5.po new file mode 100644 index 0000000..15edbbb --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "Djouwer &otomaticmint" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "" + +#: mediacontrols_p.h:44 +#, 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..e69afa3 --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, fuzzy, kde-format +#| msgid "KDE Activity Manager" +msgid "The Activity Manager is not running" +msgstr "Manaedjeu di l' activité da KDE" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "" + +#: KioActivities.cpp:223 +#, 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..a16b0be --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, 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:505 +#, 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..55c7313 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Raecene" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "Plaeces" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "Mwaijhe dimande : %1" + +#: kio_bookmarks_html.cpp:85 +#, 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:124 +#, 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:133 +#, 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..cec9f46 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "Raloyaedje..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "Inicialijhaedje di protocole ..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "Elodjaedje locå" + +#: fish.cpp:629 +#, fuzzy, kde-format +#| msgid "SSH Authorization" +msgid "SSH Authentication" +msgstr "Otorijhåcion SSH" + +#: fish.cpp:759 +#, 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..1240079 --- /dev/null +++ b/po/wa/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..f74fe8b --- /dev/null +++ b/po/wa/kio5_man.po @@ -0,0 +1,210 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, 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:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "Comandes uzeu" + +#: kio_man.cpp:745 +#, fuzzy, kde-format +#| msgid "User Commands" +msgid "User Commands (POSIX)" +msgstr "Comandes uzeu" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "Houcaedjes sistinme" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "Fonccions di programaedje" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Modules Perl" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "Fonccions rantoele" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "Éndjins" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "Cognes di fitchîs" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "Djeus" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "Totes sôres" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "Manaedjmint do sistinme" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "Nawea" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "Documintåcion coinrece" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "Noû" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "Indecse d' esplikêyes UNIX" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "Seccion %1" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "Indecse pol seccion %1 : %2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "Indecse d' esplikêyes UNIX" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "Dji fwai l' indecse" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 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..c0f771d --- /dev/null +++ b/po/wa/kio5_nfs.po @@ -0,0 +1,67 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "Li no do fitchî est pår trop long" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "Houte do cwota pol plake" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "" + +#~ msgid "No space left on device" +#~ msgstr "I n' a pupont d' plaece so l' éndjin" + +#~ msgid "Read only file system" +#~ msgstr "Sistinme di fitchîs k' on pout seulmint lére" + +#~ 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..d715826 --- /dev/null +++ b/po/wa/kio5_sftp.po @@ -0,0 +1,309 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, fuzzy, kde-format +#| msgid "Incorrect username or password" +msgid "Incorrect or invalid passphrase" +msgstr "Måva no d' uzeu ou scret" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "" + +#: kio_sftp.cpp:276 +#, 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:281 +#, 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:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "Login SFTP" + +#: kio_sftp.cpp:367 +#, 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:380 +#, 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:385 kio_sftp.cpp:883 +#, fuzzy, kde-format +#| msgid "site:" +msgid "Site:" +msgstr "waibe :" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "" + +#: kio_sftp.cpp:570 +#, 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:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "" + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, 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:609 +#, kde-format +msgid "Could not set host." +msgstr "" + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "" + +#: kio_sftp.cpp:647 +#, 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:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "Adviertixhmint : dji n' sai verifyî l' idintité do lodjoe." + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "L' otintifiaedje a fwait berwete." + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "" + +#: kio_sftp.cpp:881 +#, 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:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "Måva no d' uzeu ou scret" + +#: kio_sftp.cpp:941 +#, 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:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "Dji n' a savou inicialijhî l' session SFTP." + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "Raloyî comifåt a %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"Dji n' a seu candjî les permissions po\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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î?" + +#, 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..f07e364 --- /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: 2021-10-01 00:18+0000\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:62 +#, 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:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "Nou media e l' éndjin po %1" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "Dji n' a savou m' raloyî å lodjoe po %1" + +#: kio_smb_browse.cpp:304 +#, 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:310 +#, 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:312 +#, fuzzy, kde-format +#| msgid "BAD File descriptor" +msgid "Bad file descriptor" +msgstr "MWAIS discrijheu di fitchî" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "" + +#: kio_smb_file.cpp:34 +#, 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:118 +#, 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:128 +#, 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:173 +#, 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..644877c --- /dev/null +++ b/po/wa/kio5_thumbnail.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 , 2009. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "Dji n' sai fé d' prévoeyaedje pos on ridant" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "Nou tchôke-divins d' sipecifyî." + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "Dji n' sai tcherdjî ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "Dji n' sai fé d' prévoeyaedje po %1" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "L' ahivaedje d' on prévoeyaedje a fwait berwete." + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "Dji n' a nén sepou scrire l' imådje." + +#: thumbnail.cpp:316 +#, 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:324 +#, 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..d793527 --- /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: 2021-05-01 00:18+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "自动播放(&A)" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "开始播放" + +#: mediacontrols_p.h:44 +#, 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..fba1df5 --- /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: 2021-09-24 00:16+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "活动" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "正在加载..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "活动管理器尚未运行。" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "建立与当前活动的连接" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "解除与当前活动的连接" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "建立连接:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "解除连接:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "活动" + +#: KioActivities.cpp:223 +#, 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..b01aa19 --- /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: 2021-07-07 00:17+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"无法打开文件,文件格式可能不支持。\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..da75fd0 --- /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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:83 +#, kde-format +msgid "Root" +msgstr "根目录" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "常用位置" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "无法找到书签配置" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "无法找到书签编辑器" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "错误请求:%1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "尚未有可显示的书签。" + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..da28406 --- /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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:289 +#, kde-format +msgid "Connecting..." +msgstr "正在连接..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "正在初始化协议..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "本地登录" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH 身份验证" + +#: fish.cpp:759 +#, 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..2bdbe56 --- /dev/null +++ b/po/zh_CN/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. +# +# Ni Hui , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2021-07-10 00:16+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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.cpp:52 +#, kde-format +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        Please check your software installation." +msgstr "无法定位运行此服务所需的服务:
        %1
        请检查系统软件的安装情况。" diff --git a/po/zh_CN/kio5_man.po b/po/zh_CN/kio5_man.po new file mode 100644 index 0000000..bde10cd --- /dev/null +++ b/po/zh_CN/kio5_man.po @@ -0,0 +1,204 @@ +# 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: 2021-09-03 00:17+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:458 +#, 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 手册。请确认您没有输错页面的" +"名字,并注意 man 手册页面名应区分大小写。如果名字准确无误,那么您可" +"能需要拓展 man 手册的搜索路径,或者使用 MANPATH 环境变量,或者" +"需要在 /etc 文件夹中创建配置文件。" + +#: kio_man.cpp:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "无法读取 man 页面 %1。" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "无法转换 man 页面 %1。" + +#: kio_man.cpp:640 +#, kde-format +msgid "Manual Page Viewer Error" +msgstr "手册页面查看器出错" + +#: kio_man.cpp:657 +#, kde-format +msgid "There is more than one matching man page:" +msgstr "有多个匹配的 man 手册页面:" + +#: kio_man.cpp:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "多个手册页面" + +#: kio_man.cpp:669 +#, 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:742 +#, kde-format +msgid "Header Files" +msgstr "头文件" + +#: kio_man.cpp:743 +#, kde-format +msgid "Header Files (POSIX)" +msgstr "头文件 (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "用户命令" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "用户命令 (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "系统调用" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "子程序" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl 模块" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "网络函数" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "设备" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "文件格式" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "游戏" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "杂项" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "系统管理" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "内核" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "本机文档" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "新增" + +#: kio_man.cpp:789 +#, kde-format +msgid "Main Manual Page Index" +msgstr "主要手册页面的索引" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "章节 %1" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Index for section %1: %2" +msgstr "章节索引 %1:%2" + +#: kio_man.cpp:1103 +#, kde-format +msgid "Manual Page Index" +msgstr "手册页面的索引" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "正在生成索引" + +#: kio_man.cpp:1389 +#, kde-kuit-format +msgctxt "@info" +msgid "" +"Could not find the %1 program on your system. Please " +"install it if necessary, and ensure that it can be found using the " +"environment variable PATH." +msgstr "" +"无法在系统中找到 %1 程序。如需使用此功能,请安装该程序,并" +"确保可以通过 PATH 环境变量对其进行定位。" diff --git a/po/zh_CN/kio5_mtp.po b/po/zh_CN/kio5_mtp.po new file mode 100644 index 0000000..3f18f73 --- /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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:217 +#, 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:520 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "无法在设备内部复制/移动文件" diff --git a/po/zh_CN/kio5_nfs.po b/po/zh_CN/kio5_nfs.po new file mode 100644 index 0000000..bfd0b61 --- /dev/null +++ b/po/zh_CN/kio5_nfs.po @@ -0,0 +1,62 @@ +# 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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "无法找到主机“%1”支持的 NFS 版本" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "NFS 协议必须填写服务器的主机名。" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "初始化协议失败" + +#: kio_nfs.cpp:854 +#, kde-format +msgid "RPC error %1, %2" +msgstr "RPC 错误 %1,%2" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "文件名太长" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "超出磁盘配额" + +#: kio_nfs.cpp:917 +#, kde-format +msgid "NFS error %1, %2" +msgstr "NFS 错误 %1,%2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, 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..c1bbc9d --- /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: 2021-05-30 00:17+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:160 +#, 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..66b473c --- /dev/null +++ b/po/zh_CN/kio5_sftp.po @@ -0,0 +1,239 @@ +# 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: 2021-11-04 00:18+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "密码不正确或无效" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "无法分配回调空间" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "无法设定日志的详细级别。" + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "无法设定日志用户数据。" + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "无法设置日志回调。" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP 登录" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "使用用户名输入框回答此问题。" + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "请输入您的密码。" + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "站点:" + +#: kio_sftp.cpp:432 +#, kde-format +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "无法读取链接:%1 [%2]" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "无法新建 SSH 会话" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "无法设定超时。" + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "无法禁用 Nagle 算法" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "无法设定压缩。" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "无法设定主机。" + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "无法设定端口。" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "无法设定用户名。" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "无法解析配置文件。" + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "正在打开到主机 %1:%2 的 SFTP 连接" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "无法获取服务器公钥类型名称" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "无法从服务器公钥创建散列值" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "无法为服务器公钥创建指纹" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "警告:无法验证主机的身份。" + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "身份验证失败。" + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "身份验证失败。服务器未发送任何验证方式" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "请输入您的用户名和密码。" + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "用户名或密码不正确" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "无法请求 SFTP 子系统。请确认该服务器已启用 SFTP。" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "无法初始化 SFTP 会话。" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "成功连接到 %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "无效的 SFTP 上下文" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%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..3c11c74 --- /dev/null +++ b/po/zh_CN/kio5_smb.po @@ -0,0 +1,188 @@ +# 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: 2021-10-01 00:18+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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 "" +"可通过多种方式对 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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"未知的文件类型,它既不是目录也不是文件。" + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "%1 的设备中没有存储介质" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "无法连接到主机 %1" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "连接到 %1 的服务器时出错" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "在指定的服务器上无法找到共享项" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "无效的文件描述符" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "尝试访问 %1 时出错%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient 无法创建环境" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"挂载点“%1”卸载失败。\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..d2ecd14 --- /dev/null +++ b/po/zh_CN/kio5_thumbnail.po @@ -0,0 +1,73 @@ +# 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: 2021-09-02 00:17+0000\n" +"PO-Revision-Date: 2022-02-26 05:19\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "无法创建目录的缩略图" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "未指定插件。" + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "无法加载缩略图创建程序 %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "无法生成 %1 的缩略图" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "缩略图生成失败。" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "无法写入图像。" + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "附加到共享内存段 %1 失败" + +#: thumbnail.cpp:324 +#, 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..8049e84 --- /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: 2021-05-01 00:18+0000\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:69 +#, kde-format +msgid "Play &automatically" +msgstr "自動播放(&A)" + +#: mediacontrols_p.h:39 +#, kde-format +msgid "start playback" +msgstr "開始播放" + +#: mediacontrols_p.h:44 +#, 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..1808c9f --- /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: 2021-09-24 00:16+0000\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:96 KioActivities.cpp:301 +#, kde-format +msgid "Activities" +msgstr "活動" + +#: fileitemplugin/FileItemLinkingPlugin.cpp:99 +#, kde-format +msgid "Loading..." +msgstr "載入中..." + +#: fileitemplugin/FileItemLinkingPlugin.cpp:118 +#, kde-format +msgid "The Activity Manager is not running" +msgstr "活動管理員並未執行。" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:53 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:125 +#, kde-format +msgid "Link to the current activity" +msgstr "連結到目前的活動" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:56 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:130 +#, kde-format +msgid "Unlink from the current activity" +msgstr "取消與目前的活動的連結" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:59 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:134 +#, kde-format +msgid "Link to:" +msgstr "連結到:" + +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:64 +#: fileitemplugin/FileItemLinkingPluginActionLoader.cpp:142 +#, kde-format +msgid "Unlink from:" +msgstr "取消連結:" + +#: KioActivities.cpp:101 KioActivities.cpp:224 +#, kde-format +msgid "Activity" +msgstr "活動" + +#: KioActivities.cpp:223 +#, 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..dd7eaee --- /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: 2021-07-07 00:17+0000\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:273 kio_archivebase.cpp:367 kio_archivebase.cpp:454 +#, kde-format +msgid "" +"Could not open the file, probably due to an unsupported file format.\n" +"%1" +msgstr "" +"無法開啟檔案,也許是檔案格式不支援。\n" +"%1" + +#: kio_archivebase.cpp:505 +#, 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..50280a3 --- /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: 2021-05-30 00:17+0000\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:83 +#, kde-format +msgid "Root" +msgstr "Root" + +#: kio_bookmarks.cpp:116 +#, kde-format +msgid "Places" +msgstr "地方" + +#: kio_bookmarks.cpp:189 +#, kde-format +msgid "Could not find bookmarks config" +msgstr "" + +#: kio_bookmarks.cpp:198 +#, kde-format +msgid "Could not find bookmarks editor" +msgstr "" + +#: kio_bookmarks.cpp:205 +#, kde-format +msgid "Wrong request: %1" +msgstr "錯誤的請求:%1" + +#: kio_bookmarks_html.cpp:85 +#, kde-format +msgid "There are no bookmarks to display yet." +msgstr "尚無書籤可顯示。" + +#: kio_bookmarks_html.cpp:124 +#, 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:133 +#, 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..28f6f39 --- /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: 2021-05-30 00:17+0000\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:289 +#, kde-format +msgid "Connecting..." +msgstr "連線中..." + +#: fish.cpp:591 +#, kde-format +msgid "Initiating protocol..." +msgstr "初始化通訊協定中..." + +#: fish.cpp:627 +#, kde-format +msgid "Local Login" +msgstr "本機登入" + +#: fish.cpp:629 +#, kde-format +msgid "SSH Authentication" +msgstr "SSH 認證" + +#: fish.cpp:759 +#, 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..fade7e4 --- /dev/null +++ b/po/zh_TW/kio5_info.po @@ -0,0 +1,32 @@ +# 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: 2021-07-10 00:16+0000\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.cpp:52 +#, fuzzy, kde-format +#| msgid "" +#| "\n" +#| "Unable to locate file %1 which is necessary to run this service. Please " +#| "check your software installation." +msgid "" +"Unable to locate files which are necessary to run this service:
        " +"%1
        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..68276d3 --- /dev/null +++ b/po/zh_TW/kio5_man.po @@ -0,0 +1,227 @@ +# 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: 2021-09-03 00:17+0000\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:458 +#, 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:574 +#, 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:595 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be read." +msgstr "" + +#: kio_man.cpp:604 +#, kde-kuit-format +msgctxt "@info" +msgid "The man page %1 could not be converted." +msgstr "" + +#: kio_man.cpp:640 +#, fuzzy, kde-format +#| msgid "

        KDE Man Viewer Error

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

        KDE Man 檢視器錯誤

        " + +#: kio_man.cpp:657 +#, 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:657 +#, kde-format +msgid "Multiple Manual Pages" +msgstr "" + +#: kio_man.cpp:669 +#, 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:742 +#, fuzzy, kde-format +#| msgid "Header files" +msgid "Header Files" +msgstr "標頭檔" + +#: kio_man.cpp:743 +#, fuzzy, kde-format +#| msgid "Header files (POSIX)" +msgid "Header Files (POSIX)" +msgstr "標頭檔 (POSIX)" + +#: kio_man.cpp:744 +#, kde-format +msgid "User Commands" +msgstr "使用者命令" + +#: kio_man.cpp:745 +#, kde-format +msgid "User Commands (POSIX)" +msgstr "使用者命令 (POSIX)" + +#: kio_man.cpp:746 +#, kde-format +msgid "System Calls" +msgstr "系統呼叫" + +#: kio_man.cpp:747 +#, kde-format +msgid "Subroutines" +msgstr "函式呼叫" + +#: kio_man.cpp:749 +#, kde-format +msgid "Perl Modules" +msgstr "Perl 模組" + +#: kio_man.cpp:750 +#, kde-format +msgid "Network Functions" +msgstr "網路功能" + +#: kio_man.cpp:751 +#, kde-format +msgid "Devices" +msgstr "裝置" + +#: kio_man.cpp:752 +#, kde-format +msgid "File Formats" +msgstr "檔案格式" + +#: kio_man.cpp:753 +#, kde-format +msgid "Games" +msgstr "遊戲" + +#: kio_man.cpp:754 +#, kde-format +msgid "Miscellaneous" +msgstr "雜項" + +#: kio_man.cpp:755 +#, kde-format +msgid "System Administration" +msgstr "系統管理" + +#: kio_man.cpp:756 +#, kde-format +msgid "Kernel" +msgstr "核心" + +#: kio_man.cpp:757 +#, kde-format +msgid "Local Documentation" +msgstr "本地端文件" + +#: kio_man.cpp:759 +#, kde-format +msgid "New" +msgstr "新項目" + +#: kio_man.cpp:789 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Main Manual Page Index" +msgstr "UNIX 手冊索引" + +#: kio_man.cpp:814 +#, kde-format +msgid "Section %1" +msgstr "第 %1 區" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "Index for Section %1: %2" +msgid "Index for section %1: %2" +msgstr "章節索引 %1:%2" + +#: kio_man.cpp:1103 +#, fuzzy, kde-format +#| msgid "UNIX Manual Index" +msgid "Manual Page Index" +msgstr "UNIX 手冊索引" + +#: kio_man.cpp:1113 +#, kde-format +msgid "Generating Index" +msgstr "產生索引中" + +#: kio_man.cpp:1389 +#, 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 %1 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..7e7aa30 --- /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: 2021-05-30 00:17+0000\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:217 +#, 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:520 +#, kde-format +msgid "Cannot copy/move files on the device itself" +msgstr "無法複製或移動檔案至裝置本身" diff --git a/po/zh_TW/kio5_nfs.po b/po/zh_TW/kio5_nfs.po new file mode 100644 index 0000000..9448038 --- /dev/null +++ b/po/zh_TW/kio5_nfs.po @@ -0,0 +1,72 @@ +# 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: 2021-05-30 00:17+0000\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:158 +#, kde-format +msgid "Cannot find an NFS version that host '%1' supports" +msgstr "" + +#: kio_nfs.cpp:338 +#, kde-format +msgid "The NFS protocol requires a server host name." +msgstr "" + +#: kio_nfs.cpp:371 +#, kde-format +msgid "Failed to initialise protocol" +msgstr "" + +#: kio_nfs.cpp:854 +#, fuzzy, kde-format +#| msgid "RPC error %1" +msgid "RPC error %1, %2" +msgstr "RPC 錯誤 %1" + +#: kio_nfs.cpp:904 +#, kde-format +msgid "Filename too long" +msgstr "檔名太長" + +#: kio_nfs.cpp:911 +#, kde-format +msgid "Disk quota exceeded" +msgstr "硬碟 quota 滿了" + +#: kio_nfs.cpp:917 +#, fuzzy, kde-format +#| msgid "NFS error %1 - %2" +msgid "NFS error %1, %2" +msgstr "NFS 錯誤 %1 - %2" + +#: nfsv2.cpp:394 nfsv2.cpp:446 nfsv3.cpp:426 nfsv3.cpp:570 +#, kde-format +msgid "Unknown target" +msgstr "未知的目標" + +#~ msgid "%1: Unsupported NFS version" +#~ msgstr "%1:未支援的 NFS 版本" + +#~ msgid "No space left on device" +#~ msgstr "在設備上沒有剩餘空間" + +#~ msgid "Read only file system" +#~ msgstr "唯讀的檔案系統" + +#~ msgid "Failed to mount %1" +#~ msgstr "掛載失敗 %1" diff --git a/po/zh_TW/kio5_recentdocuments.po b/po/zh_TW/kio5_recentdocuments.po new file mode 100644 index 0000000..9dfac9c --- /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: 2021-05-30 00:17+0000\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:160 +#, 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..cb59fd5 --- /dev/null +++ b/po/zh_TW/kio5_sftp.po @@ -0,0 +1,274 @@ +# 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: 2021-11-04 00:18+0000\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:208 +#, kde-format +msgid "Incorrect or invalid passphrase" +msgstr "不正確或無效的密碼" + +#: kio_sftp.cpp:258 +#, kde-format +msgid "Could not allocate callbacks" +msgstr "無法配置 callback" + +#: kio_sftp.cpp:271 +#, kde-format +msgid "Could not set log verbosity." +msgstr "無法設定紀錄等級。" + +#: kio_sftp.cpp:276 +#, kde-format +msgid "Could not set log userdata." +msgstr "無法設定紀錄使用者資料。" + +#: kio_sftp.cpp:281 +#, kde-format +msgid "Could not set log callback." +msgstr "無法設定紀錄 callback。" + +#: kio_sftp.cpp:350 kio_sftp.cpp:352 kio_sftp.cpp:880 +#, kde-format +msgid "SFTP Login" +msgstr "SFTP 登入" + +#: kio_sftp.cpp:367 +#, kde-format +msgid "Use the username input field to answer this question." +msgstr "請使用輸入帳號的欄位來回答此問題。" + +#: kio_sftp.cpp:380 +#, kde-format +msgid "Please enter your password." +msgstr "請輸入您的密碼。" + +#: kio_sftp.cpp:385 kio_sftp.cpp:883 +#, kde-format +msgid "Site:" +msgstr "主機:" + +#: kio_sftp.cpp:432 +#, fuzzy, kde-format +#| msgid "Could not read link: %1" +msgctxt "error message. %1 is a path, %2 is a numeric error code" +msgid "Could not read link: %1 [%2]" +msgstr "無法讀取連結:%1" + +#: kio_sftp.cpp:570 +#, kde-format +msgid "Could not create a new SSH session." +msgstr "無法建立新的 SSH 工作階段。" + +#: kio_sftp.cpp:581 kio_sftp.cpp:585 +#, kde-format +msgid "Could not set a timeout." +msgstr "無法設定逾時。" + +#: kio_sftp.cpp:592 +#, kde-format +msgid "Could not disable Nagle's Algorithm." +msgstr "無法停用 Nagle 的算法。" + +#: kio_sftp.cpp:598 kio_sftp.cpp:603 +#, kde-format +msgid "Could not set compression." +msgstr "無法設定壓縮。" + +#: kio_sftp.cpp:609 +#, kde-format +msgid "Could not set host." +msgstr "無法設定主機。" + +#: kio_sftp.cpp:615 +#, kde-format +msgid "Could not set port." +msgstr "無法設定連接埠。" + +#: kio_sftp.cpp:623 +#, kde-format +msgid "Could not set username." +msgstr "無法設定使用者名稱。" + +#: kio_sftp.cpp:630 +#, kde-format +msgid "Could not parse the config file." +msgstr "無法剖析設定檔。" + +#: kio_sftp.cpp:647 +#, kde-kuit-format +msgid "Opening SFTP connection to host %1:%2" +msgstr "開啟 SFTP 連線到主機 %1:%2" + +#: kio_sftp.cpp:687 +#, kde-format +msgid "Could not get server public key type name" +msgstr "無法取得伺服器公鑰的類型名稱" + +#: kio_sftp.cpp:700 +#, kde-format +msgid "Could not create hash from server public key" +msgstr "無法從伺服器公開金鑰建立雜湊" + +#: kio_sftp.cpp:709 +#, kde-format +msgid "Could not create fingerprint for server public key" +msgstr "無法建立伺服器公鑰的指紋" + +#: kio_sftp.cpp:769 +#, 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:780 +#, 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:794 +#, kde-format +msgid "Warning: Cannot verify host's identity." +msgstr "警告:無法驗證主機的識別碼。" + +#: kio_sftp.cpp:796 +#, 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:826 kio_sftp.cpp:844 kio_sftp.cpp:859 kio_sftp.cpp:872 +#: kio_sftp.cpp:924 kio_sftp.cpp:934 +#, kde-format +msgid "Authentication failed." +msgstr "認證失敗。" + +#: kio_sftp.cpp:832 +#, kde-format +msgid "" +"Authentication failed. The server didn't send any authentication methods" +msgstr "認證失敗。伺服器未傳送任何認證方法" + +#: kio_sftp.cpp:881 +#, kde-format +msgid "Please enter your username and password." +msgstr "請輸入您的使用者名稱與密碼。" + +#: kio_sftp.cpp:892 +#, kde-format +msgid "Incorrect username or password" +msgstr "錯誤的使用者名稱或密碼" + +#: kio_sftp.cpp:941 +#, kde-format +msgid "" +"Unable to request the SFTP subsystem. Make sure SFTP is enabled on the " +"server." +msgstr "無法請求 SFTP 系統。請確定伺服器上的 SFTP 有開啟。" + +#: kio_sftp.cpp:946 +#, kde-format +msgid "Could not initialize the SFTP session." +msgstr "無法初始化 SFTP 階段。" + +#: kio_sftp.cpp:950 +#, kde-format +msgid "Successfully connected to %1" +msgstr "成功的連線到 %1" + +#: kio_sftp.cpp:1003 +#, kde-format +msgid "Invalid sftp context" +msgstr "無效的 SFTP 內容" + +#: kio_sftp.cpp:1568 +#, kde-format +msgid "" +"Could not change permissions for\n" +"%1" +msgstr "" +"無法變更該權限\n" +"%1" + +#~ 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" + +#~ 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" + +#~ 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" +#~ "您確定要繼續連線嗎?" diff --git a/po/zh_TW/kio5_smb.po b/po/zh_TW/kio5_smb.po new file mode 100644 index 0000000..dc36922 --- /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: 2021-10-01 00:18+0000\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:62 +#, kde-format +msgid "" +"%1:\n" +"Unknown file type, neither directory or file." +msgstr "" +"%1:\n" +"不明的檔案類別,不論是目錄或檔案。" + +#: kio_smb_browse.cpp:281 +#, 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:286 +#, kde-format +msgid "No media in device for %1" +msgstr "裝置中沒有 %1 的媒體" + +#: kio_smb_browse.cpp:292 +#, kde-format +msgid "Could not connect to host for %1" +msgstr "無法為 %1 連線至主機" + +#: kio_smb_browse.cpp:304 +#, kde-format +msgid "Error while connecting to server responsible for %1" +msgstr "當連線到伺服器回應 %1 時發生錯誤" + +#: kio_smb_browse.cpp:310 +#, kde-format +msgid "Share could not be found on given server" +msgstr "所指定伺服器找不到分享" + +#: kio_smb_browse.cpp:312 +#, kde-format +msgid "Bad file descriptor" +msgstr "錯誤的檔案描述" + +#: kio_smb_browse.cpp:320 +#, 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:327 +#, 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:330 +#, 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:343 +#, 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:362 +#, kde-kuit-format +msgid "Error occurred while trying to access %1%2" +msgstr "在嘗試存取 %1 時遇到錯誤%2" + +#: kio_smb_file.cpp:34 +#, kde-format +msgid "libsmbclient failed to create context" +msgstr "libsmbclient 建立快顯選單失敗" + +#: kio_smb_mount.cpp:91 kio_smb_mount.cpp:118 +#, 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:128 +#, kde-format +msgid "" +"Unmounting of mountpoint \"%1\" failed.\n" +"%2" +msgstr "" +"卸載掛載點「%1」失敗。\n" +"%2" + +#: wsdiscoverer.cpp:173 +#, 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..e231eb8 --- /dev/null +++ b/po/zh_TW/kio5_thumbnail.po @@ -0,0 +1,73 @@ +# 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: 2021-09-02 00:17+0000\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" + +#: 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:232 +#, kde-format +msgid "Cannot create thumbnail for directory" +msgstr "無法產生目錄的縮圖" + +#: thumbnail.cpp:244 +#, kde-format +msgid "No plugin specified." +msgstr "沒有指定外掛。" + +#: thumbnail.cpp:250 +#, kde-format +msgid "Cannot load ThumbCreator %1" +msgstr "無法載入 ThumbCreator %1" + +#: thumbnail.cpp:264 +#, kde-format +msgid "Cannot create thumbnail for %1" +msgstr "無法產生 %1 的 thumbnail" + +#: thumbnail.cpp:279 +#, kde-format +msgid "Failed to create a thumbnail." +msgstr "產生 thumbnail 失敗。" + +#: thumbnail.cpp:291 +#, kde-format +msgid "Could not write image." +msgstr "無法寫入影像。" + +#: thumbnail.cpp:316 +#, kde-format +msgid "Failed to attach to shared memory segment %1" +msgstr "無法連結共享記憶體區段 %1" + +#: thumbnail.cpp:324 +#, kde-format +msgid "Image is too big for the shared memory segment" +msgstr "影像太大無法放進共享記憶體區段" + +#~ msgctxt "@option:check" +#~ msgid "Rotate the image automatically" +#~ msgstr "自動旋轉影像" diff --git a/recentdocuments/CMakeLists.txt b/recentdocuments/CMakeLists.txt new file mode 100644 index 0000000..34aba0e --- /dev/null +++ b/recentdocuments/CMakeLists.txt @@ -0,0 +1,20 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_recentdocuments\") + +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +add_library(kio_recentdocuments MODULE recentdocuments.cpp) +target_link_libraries(kio_recentdocuments KF5::KIOCore KF5::I18n KF5::ConfigCore 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 ############### 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..84e58ae --- /dev/null +++ b/recentdocuments/recentdocuments.cpp @@ -0,0 +1,204 @@ +#include "recentdocuments.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#ifdef Q_OS_WIN +#include +#endif + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.recentdocuments" FILE "recentdocuments.json") +}; + +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(7); + 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")); +#ifdef Q_OS_WIN + uds.fastInsert(KIO::UDSEntry::UDS_ACCESS, _S_IREAD ); +#else + uds.fastInsert(KIO::UDSEntry::UDS_ACCESS, S_IRUSR | S_IXUSR ); +#endif + 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); +} + +#include "recentdocuments.moc" 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.json b/recentdocuments/recentdocuments.json new file mode 100644 index 0000000..224d5e8 --- /dev/null +++ b/recentdocuments/recentdocuments.json @@ -0,0 +1,29 @@ +{ + "KDE-KIO-Protocols": { + "recentdocuments": { + "Class": ":local", + "Icon": "document-open-recent", + "X-DocPath": "kioslave5/recentdocuments/index.html", + "deleting": true, + "exec": "kf5/kio/recentdocuments", + "input": "none", + "listing": [ + "Name", + "Type", + "Size", + "Date", + "AccessDate", + "Access", + "Owner", + "Group", + "Link" + ], + "maxInstances": 1, + "opening": true, + "output": "filesystem", + "protocol": "recentdocuments", + "reading": true, + "writing": true + } + } +} 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..3c9f4cf --- /dev/null +++ b/recentdocuments/recentdocumentsnotifier.desktop @@ -0,0 +1,129 @@ +[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[ta]=சமீப ஆவண கண்காணி +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-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[ta]="சமீப ஆவணங்கள்" அடைவை மாற்றங்களுக்காக கண்காணிக்கும். +Comment[tr]="Son Kullanılan Belgeler" dizinindeki değişiklikleri izler +Comment[ug]=«يېقىنقى پۈتۈكلەر» قىسقۇچىدىكى ئۆزگىرىشلەرنى كۆزىتىدۇ +Comment[uk]=Стежить за змінами у теці недавніх документів +Comment[vi]=Giám sát thay đổi ở 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..f5f7c93 --- /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 Q_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..17b1942 --- /dev/null +++ b/recentlyused/CMakeLists.txt @@ -0,0 +1,38 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_recentlyused\") + +add_library(recentlyused MODULE) +set_target_properties(recentlyused PROPERTIES + OUTPUT_NAME "recentlyused" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf5/kio" +) +target_sources(recentlyused PRIVATE + recentlyused.cpp +) +# recentlyused.h has examples in the comment secions which match /*, +# so triggering the preprocessor to warn about nested comments. +# Using a pragma to ignore that diagnostic does not work for preprocessor warnings +# so for now simply that warning is completly disabled +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(_flag "-Wno-comment") + check_cxx_compiler_flag(${_flag} _flag_present) + if(_flag_present) + target_compile_options(recentlyused PRIVATE "${_flag}") + endif() +endif() + +ecm_qt_declare_logging_category(recentlyused + HEADER recentlyused-logsettings.h + IDENTIFIER KIO_RECENTLYUSED_LOG + CATEGORY_NAME kf.kio.slaves.recentlyused + OLD_CATEGORY_NAMES log_kio_recentlyused + DESCRIPTION "KIO recentlyused" + EXPORT KIO_EXTRAS +) + +target_link_libraries(recentlyused + KF5::KIOCore + KF5::I18n + KF5::Activities + KF5::ActivitiesStats) + +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..daa1421 --- /dev/null +++ b/recentlyused/recentlyused.cpp @@ -0,0 +1,273 @@ +/* + * SPDX-FileCopyrightText: 2019 Méven Car + * + * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + */ + +#include "recentlyused-logsettings.h" +#include "recentlyused.h" + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#ifdef Q_OS_WIN +#include +#endif + +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(7); + 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")); +#ifdef Q_OS_WIN + uds.fastInsert(KIO::UDSEntry::UDS_ACCESS, _S_IREAD ); +#else + uds.fastInsert(KIO::UDSEntry::UDS_ACCESS, S_IRUSR | S_IXUSR ); +#endif + 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..9b40571 --- /dev/null +++ b/recentlyused/recentlyused.h @@ -0,0 +1,98 @@ +/* + * SPDX-FileCopyrightText: 2019 Méven Car + * + * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + */ + +#ifndef RECENTLYUSED_H +#define RECENTLYUSED_H + +#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/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..d6e406f --- /dev/null +++ b/sftp/CMakeLists.txt @@ -0,0 +1,42 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_sftp\") + +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +add_library(kio_sftp MODULE) +set_target_properties(kio_sftp PROPERTIES + OUTPUT_NAME "sftp" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf5/kio" +) + +target_sources(kio_sftp PRIVATE kio_sftp.cpp) + +ecm_qt_declare_logging_category(kio_sftp + HEADER kio_sftp_debug.h + IDENTIFIER KIO_SFTP_LOG + CATEGORY_NAME kf.kio.slaves.sftp + OLD_CATEGORY_NAMES log_kio_sftp + DESCRIPTION "KIO sftp" + EXPORT KIO_EXTRAS +) + +ecm_qt_declare_logging_category(kio_sftp + HEADER kio_sftp_trace_debug.h + IDENTIFIER KIO_SFTP_TRACE_LOG + CATEGORY_NAME kf.kio.slaves.sftp.trace + OLD_CATEGORY_NAMES log_kio_sftp.trace + DESCRIPTION "KIO sftp (trace)" + EXPORT KIO_EXTRAS +) + +if(WIN32) + target_include_directories(kio_sftp PRIVATE ${QT_MKSPECS_DIR}/default) # for SYMLINKS +endif() + +target_link_libraries(kio_sftp + KF5::KIOCore + KF5::WidgetsAddons # KMessageBox + KF5::I18n + Qt5::Network + ssh) + +install(TARGETS kio_sftp DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) 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..ff2f605 --- /dev/null +++ b/sftp/kio_sftp.cpp @@ -0,0 +1,2427 @@ +/* + * SPDX-FileCopyrightText: 2001 Lucas Fisher + * SPDX-FileCopyrightText: 2009 Andreas Schneider + * SPDX-FileCopyrightText: 2020-2021 Harald Sitter + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#include "kio_sftp.h" +#include + +#include +#include +#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 + +#include "kio_sftp_debug.h" +#include "kio_sftp_trace_debug.h" + +#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) + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.sftp" FILE "sftp.json") +}; + +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) { + const auto lenSize = static_cast(len); // len is always >> 0 and, being an int, always << size_t + const 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; + } + + auto *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; + } + + auto *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) { + const auto 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()); +} + +Result SFTPInternal::createUDSEntry(SFTPAttributesPtr sb, UDSEntry &entry, const QByteArray &path, const QString &name, int details) +{ + // caller should make sure it is not null. behavior between stat on a file and listing a dir is different! + // Also we consume the pointer, hence why it is a SFTPAttributesPtr + Q_ASSERT(sb.get()); + + entry.clear(); + entry.reserve(10); + entry.fastInsert(KIO::UDSEntry::UDS_NAME, name /* awkwardly sftp_lstat doesn't fill the attributes name correctly, calculate from path */); + + bool isBrokenLink = false; + if (sb->type == SSH_FILEXFER_TYPE_SYMLINK) { + std::unique_ptr link(sftp_readlink(mSftp, path.constData()), free); + if (!link) { + return Result::fail(KIO::ERR_INTERNAL, + i18nc("error message. %1 is a path, %2 is a numeric error code", + "Could not read link: %1 [%2]", + QString::fromUtf8(path), + QString::number(sftp_get_error(mSftp)))); + } + entry.fastInsert(KIO::UDSEntry::UDS_LINK_DEST, QFile::decodeName(link.get())); + // 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); + } + } + } + + mode_t access = 0; + long long fileType = QT_STAT_REG; + uint64_t size = 0U; + 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 Result::pass(); +} + +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 crypto 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) +{ + closeConnection(); // make sure a potential previous connection is closed. this function may get called to re-connect + + mSession = ssh_new(); + if (mSession == nullptr) { + return Result::fail(KIO::ERR_OUT_OF_MEMORY, i18n("Could not create a new SSH session.")); + } + + const long timeout_sec = 30; + const long 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.")); + } + + // 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.")); + } + + // Prefer not to use compression + rc = ssh_options_set(mSession, SSH_OPTIONS_COMPRESSION_C_S, "none,zlib@openssh.com,zlib"); + 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,zlib@openssh.com,zlib"); + 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(); +} + +struct ServerKeyInspection { + QByteArray serverPublicKeyType; + QByteArray fingerprint; + Result result; + + ServerKeyInspection &withResult(const Result &result) + { + this->result = result; + return *this; + } +}; + +Q_REQUIRED_RESULT ServerKeyInspection fingerpint(ssh_session session) +{ + ServerKeyInspection inspection; + + ssh_key srv_pubkey = nullptr; + const auto freeKey = qScopeGuard([srv_pubkey] { + ssh_key_free(srv_pubkey); + }); + int rc = ssh_get_server_publickey(session, &srv_pubkey); + if (rc < 0) { + return inspection.withResult(Result::fail(KIO::ERR_SLAVE_DEFINED, QString::fromUtf8(ssh_get_error(session)))); + } + + const char *srv_pubkey_type = ssh_key_type_to_char(ssh_key_type(srv_pubkey)); + if (srv_pubkey_type == nullptr) { + return inspection.withResult(Result::fail(KIO::ERR_SLAVE_DEFINED, i18n("Could not get server public key type name"))); + } + inspection.serverPublicKeyType = QByteArray(srv_pubkey_type); + + unsigned char *hash = nullptr; // the server hash + const auto freeHash = qScopeGuard([&hash] { ssh_clean_pubkey_hash(&hash); }); + + size_t hlen = 0; + rc = ssh_get_publickey_hash(srv_pubkey, + SSH_PUBLICKEY_HASH_SHA256, + &hash, + &hlen); + if (rc != SSH_OK) { + return inspection.withResult(Result::fail(KIO::ERR_SLAVE_DEFINED, i18n("Could not create hash from server public key"))); + } + + char *fingerprint = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA256, hash, hlen); + const auto freeFingerprint = qScopeGuard([fingerprint] { + ssh_string_free_char(fingerprint); + }); + + if (fingerprint == nullptr) { + return inspection.withResult(Result::fail(KIO::ERR_SLAVE_DEFINED, i18n("Could not create fingerprint for server public key"))); + } + + inspection.fingerprint = fingerprint; + + return inspection.withResult(Result::pass()); +} + +Result SFTPInternal::openConnectionWithoutCloseOnError() +{ + 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. + + // Attempt to start a ssh session and establish a connection with the server. + const Result openResult = sftpOpenConnection(info); + if (!openResult.success) { + return openResult; + } + + // get the hash + qCDebug(KIO_SFTP_LOG) << "Getting the SSH server hash"; + const ServerKeyInspection inspection = fingerpint(mSession); + if (!inspection.result.success) { + return inspection.result; + } + const QString fingerprint = QString::fromUtf8(inspection.fingerprint); + const QString serverPublicKeyType = QString::fromUtf8(inspection.serverPublicKeyType); + + qCDebug(KIO_SFTP_LOG) << "Checking if the SSH server is known"; + + /* check the server public key hash */ + enum ssh_known_hosts_e state = ssh_session_is_known_server(mSession); + switch (state) { + case SSH_KNOWN_HOSTS_OTHER: { + 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", + serverPublicKeyType, + QString::fromUtf8(ssh_get_error(mSession))); + 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, + serverPublicKeyType, + fingerprint, + QString::fromUtf8(ssh_get_error(mSession))); + return Result::fail(KIO::ERR_SLAVE_DEFINED, errorString); + } + case SSH_KNOWN_HOSTS_NOT_FOUND: + case SSH_KNOWN_HOSTS_UNKNOWN: { + const QString caption = i18n("Warning: Cannot verify host's identity."); + const QString 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, + serverPublicKeyType, + fingerprint); + + if (KMessageBox::Yes != q->messageBox(SlaveBase::WarningYesNo, msg, caption)) { + return Result::fail(KIO::ERR_USER_CANCELED); + } + + /* write the known_hosts file */ + qCDebug(KIO_SFTP_LOG) << "Adding server to known_hosts file."; + int rc = ssh_session_update_known_hosts(mSession); + if (rc != SSH_OK) { + return Result::fail(KIO::ERR_USER_CANCELED, QString::fromUtf8(ssh_get_error(mSession) )); + } + break; + } + case SSH_KNOWN_HOSTS_ERROR: + 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 + int rc = ssh_userauth_none(mSession, nullptr); + if (rc == SSH_AUTH_ERROR) { + 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) { + 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)); + clearPubKeyAuthInfo(); + return Result::fail(KIO::ERR_CANNOT_LOGIN, i18n("Authentication failed.")); + } + 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)); + 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)); + 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"; + 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); + } + 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; + } + if (rc == SSH_AUTH_ERROR) { + qCDebug(KIO_SFTP_LOG) << "Password authentication failed:" << QString::fromUtf8(ssh_get_error(mSession)); + 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) { + 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) { + 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(); +} + +Result SFTPInternal::openConnection() +{ + const Result result = openConnectionWithoutCloseOnError(); + if (!result.success) { + closeConnection(); + } + return result; +} + +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) { + if (const Result result = sftpSendMimetype(mOpenFile, mOpenUrl); !result.success) { + close(); + return result; + } + } + + 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::sftpSendMimetype(sftp_file file, const QUrl &url) +{ + constexpr int readLimit = 1024; // entirely arbitrary + std::array mimeTypeBuf{}; + const ssize_t bytesRead = sftp_read(file, mimeTypeBuf.data(), readLimit); + if (bytesRead < 0) { + return Result::fail(KIO::ERR_CANNOT_READ, url.toString()); + } + + QMimeDatabase db; + const QMimeType mime = db.mimeTypeForFileNameAndData(url.fileName(), QByteArray(mimeTypeBuf.data(), bytesRead)); + if (!mime.isDefault()) { + q->mimeType(mime.name()); + } else { + q->mimeType(db.mimeTypeForUrl(url).name()); + } + sftp_rewind(file); + + 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()); + } + + if (const Result result = sftpSendMimetype(file, url); !result.success) { + return result; + } + + // 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); + } + } + + SFTPInternal::GetRequest request(file, sb->size); + + for (;;) { + // Enqueue get requests + if (!request.enqueueChunks()) { + return Result::fail(KIO::ERR_CANNOT_READ, url.toString()); + } + + filedata.clear(); + const auto 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).constData(), 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).constData(), 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).constData(), 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(); + + sftp_attributes_struct *attributes = sftp_lstat(mSftp, path.constData()); + if (attributes == nullptr) { + return Result::fail(KIO::ERR_DOES_NOT_EXIST, url.toDisplayString()); + } + + UDSEntry entry; + const Result result = createUDSEntry(SFTPAttributesPtr(attributes), entry, path, QFileInfo(path).fileName(), details); + if (!result.success) { + return result; + } + 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)); + } + + const QString sDetails = q->metaData(QLatin1String("details")); + const int details = sDetails.isEmpty() ? 2 : sDetails.toInt(); + + qCDebug(KIO_SFTP_LOG) << "readdir: " << path << ", details: " << QString::number(details); + + UDSEntry entry; // internally this is backed by a heap'd Private, no need allocating that repeatedly + for (;;) { + sftp_attributes_struct *attributes = sftp_readdir(mSftp, dp); + if (attributes == nullptr) { + break; + } + + const QByteArray name = QFile::decodeName(attributes->name).toUtf8(); + const QByteArray filePath = path + '/' + name; + const Result result = createUDSEntry(SFTPAttributesPtr(attributes), entry, filePath, QString::fromUtf8(name), details); + if (!result.success) { + // Failing to list one entry in a directory is not a fatal problem. Log the problem and move on. + qCWarning(KIO_SFTP_LOG) << result.error << result.errorString; + continue; + } + + 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 re-request + 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)); +} + +#include "kio_sftp.moc" diff --git a/sftp/kio_sftp.h b/sftp/kio_sftp.h new file mode 100644 index 0000000..c3702ad --- /dev/null +++ b/sftp/kio_sftp.h @@ -0,0 +1,323 @@ +/* + * SPDX-FileCopyrightText: 2001 Lucas Fisher + * SPDX-FileCopyrightText: 2009 Andreas Schneider + * SPDX-FileCopyrightText: 2020-2021 Harald Sitter + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#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() }; + } +}; + + +// 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; + +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); + + Q_REQUIRED_RESULT Result createUDSEntry(SFTPAttributesPtr sb, KIO::UDSEntry &entry, const QByteArray &path, const QString &name, 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); + Q_REQUIRED_RESULT Result sftpSendMimetype(sftp_file file, const QUrl &url); + Q_REQUIRED_RESULT Result openConnectionWithoutCloseOnError(); +}; + +/** + * 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.json b/sftp/sftp.json new file mode 100644 index 0000000..fe4df2f --- /dev/null +++ b/sftp/sftp.json @@ -0,0 +1,37 @@ +{ + "KDE-KIO-Protocols": { + "sftp": { + "Class": ":internet", + "Icon": "folder-remote", + "X-DocPath": "kioslave5/sftp/index.html", + "copyFromFile": true, + "copyToFile": true, + "deleting": true, + "exec": "kf5/kio/sftp", + "input": "none", + "linking": true, + "listing": [ + "Name", + "Type", + "Size", + "Date", + "AccessDate", + "Access", + "Owner", + "Group", + "Link", + "MimeType" + ], + "makedir": true, + "maxInstances": 20, + "maxInstancesPerHost": 5, + "moving": true, + "opening": true, + "output": "filesystem", + "protocol": "sftp", + "reading": true, + "truncating": true, + "writing": true + } + } +} diff --git a/smb/CMakeLists.txt b/smb/CMakeLists.txt new file mode 100644 index 0000000..f23b5b3 --- /dev/null +++ b/smb/CMakeLists.txt @@ -0,0 +1,106 @@ +remove_definitions( + -DQT_NO_CAST_FROM_ASCII + -DQT_NO_CAST_FROM_BYTEARRAY + # KDSoapWSDiscoveryClient uses "signals" and "slots" in public headers + # so remove definition both for internal copy as well as smb code + -DQT_NO_KEYWORDS +) + +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: dcefb65c88e76f1f9eda8b0318006e93d15a0e1e + 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.") + +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) + +# Intermediate static lib target for reuse in testing. +add_library(kio_smb_static STATIC) + +target_sources(kio_smb_static PRIVATE + 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_static + HEADER smb-logsettings.h + IDENTIFIER KIO_SMB_LOG + CATEGORY_NAME kf.kio.slaves.smb + OLD_CATEGORY_NAMES log_kio_smb + DESCRIPTION "KIO smb" + EXPORT KIO_EXTRAS +) + +include_directories(${SAMBA_INCLUDE_DIR}) + +target_include_directories(kio_smb_static + PUBLIC + "$" +) +target_link_libraries(kio_smb_static + KF5::KIOCore + KF5::I18n + KF5::ConfigCore + ${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..492c1fd --- /dev/null +++ b/smb/autotests/CMakeLists.txt @@ -0,0 +1,19 @@ +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.cpp + transfertest.cpp + shouldresumetest.cpp + LINK_LIBRARIES + Qt5::Test + kio_smb_static +) diff --git a/smb/autotests/fixtures/resume/thing.part b/smb/autotests/fixtures/resume/thing.part new file mode 100644 index 0000000..e69de29 diff --git a/smb/autotests/fixtures/resumeInPlace/thing b/smb/autotests/fixtures/resumeInPlace/thing new file mode 100644 index 0000000..e69de29 diff --git a/smb/autotests/shouldresumetest.cpp b/smb/autotests/shouldresumetest.cpp new file mode 100644 index 0000000..7df840e --- /dev/null +++ b/smb/autotests/shouldresumetest.cpp @@ -0,0 +1,164 @@ +/* + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2021 Harald Sitter +*/ + +#include + +#include +#include + +#include + +#include "transfer_resume.h" + +struct FakeWorker { + struct FakeError { + const int id; + const QString message; + }; + + void error(int id, const QString &message) + { + m_errors.push_back(FakeError{id, message}); + } + + bool configValue(const QString &key, bool defaultValue) const + { + return m_config.value(key, defaultValue); + } + + bool canResume(KIO::filesize_t offset) + { + Q_UNUSED(offset); // in reality this is a user query, always assume the user says yes for now + return true; + } + + void debugErrors() + { + for (const auto &error : std::as_const(m_errors)) { + qDebug() << "ERROR{" << KIO::buildErrorString(error.id, error.message) << "}"; + } + } + + QVector m_errors; + QHash m_config = {{"MarkPartial", true}}; +}; + +class ShouldResumeTest : public QObject +{ + Q_OBJECT +private: + QTemporaryDir m_tmpDir; +private Q_SLOTS: + void initTestCase() + { + QVERIFY(m_tmpDir.isValid()); + const QString fixturesPath = QFINDTESTDATA("fixtures/."); + QProcess proc; + proc.setProcessChannelMode(QProcess::ForwardedChannels); + proc.start("cp", {"-rv", fixturesPath, m_tmpDir.path()}); + QVERIFY(proc.waitForFinished()); + QCOMPARE(proc.exitCode(), 0); + } + + QString tmpPath(const QString &subpath) + { + return QDir(m_tmpDir.path()).filePath(subpath); + } + + QUrl tmpUrl(const QString &subpath) + { + return QUrl::fromLocalFile(tmpPath(subpath)); + } + + void noResumeButPartial() + { + // NB: this has no fixture ;) + FakeWorker worker; + + auto url = tmpUrl("noResumeButPartial/thing"); + auto partUrl = tmpUrl("noResumeButPartial/thing.part"); + auto resume = Transfer::shouldResume(url, KIO::JobFlags(), &worker); + QVERIFY(resume.has_value()); + QCOMPARE(resume->resuming, false); + QCOMPARE(resume->destination, partUrl); + QCOMPARE(resume->completeDestination, url); + QCOMPARE(resume->partDestination, partUrl); + + QDir().mkdir(tmpPath("noResumeButPartial")); + QFile part(partUrl.toLocalFile()); + QVERIFY(part.open(QFile::WriteOnly)); + part.write(""); + QCOMPARE(Transfer::concludeResumeHasError(false, resume.value(), &worker), false); + QVERIFY(QFileInfo::exists(url.toLocalFile())); + QVERIFY(!QFileInfo::exists(partUrl.toLocalFile())); + } + + void noResumeAndNoPartial() + { + // NB: this has no fixture ;) + FakeWorker worker; + worker.m_config["MarkPartial"] = false; + + + auto url = tmpUrl("noResumeAndNoPartial/thing"); + auto resume = Transfer::shouldResume(url, KIO::JobFlags(), &worker); + worker.debugErrors(); + QVERIFY(resume.has_value()); + QCOMPARE(resume->resuming, false); + QCOMPARE(resume->destination, url); + QCOMPARE(resume->completeDestination, url); + QCOMPARE(resume->partDestination, QUrl()); + QCOMPARE(Transfer::concludeResumeHasError(false, resume.value(), &worker), false); + } + + void resume() + { + FakeWorker worker; + + auto url = tmpUrl("resume/thing"); + auto partUrl = tmpUrl("resume/thing.part"); + auto resume = Transfer::shouldResume(url, KIO::JobFlags(), &worker); + QVERIFY(resume.has_value()); + QCOMPARE(resume->resuming, true); + QCOMPARE(resume->destination, partUrl); + QCOMPARE(resume->completeDestination, url); + QCOMPARE(resume->partDestination, partUrl); + + QCOMPARE(Transfer::concludeResumeHasError(false, resume.value(), &worker), false); + QVERIFY(QFileInfo::exists(url.toLocalFile())); + QVERIFY(!QFileInfo::exists(partUrl.toLocalFile())); + } + + void resumeInPlace() + { + FakeWorker worker; + + auto url = tmpUrl("resumeInPlace/thing"); + auto resume = Transfer::shouldResume(url, KIO::Resume, &worker); + QVERIFY(resume.has_value()); + QCOMPARE(resume->resuming, true); + QCOMPARE(resume->destination, url); + QCOMPARE(resume->completeDestination, url); + QCOMPARE(resume->partDestination, url); + + QCOMPARE(Transfer::concludeResumeHasError(false, resume.value(), &worker), false); + QVERIFY(QFileInfo::exists(url.toLocalFile())); + } + + void noResumeInPlace() + { + FakeWorker worker; + + auto url = tmpUrl("resumeInPlace/thing"); // intentionally the same path this scenario errors out + auto resume = Transfer::shouldResume(url, KIO::JobFlags(), &worker); + QVERIFY(!resume.has_value()); + QCOMPARE(worker.m_errors.size(), 1); + QCOMPARE(worker.m_errors.at(0).id, KIO::ERR_FILE_ALREADY_EXIST); + } +}; + +QTEST_GUILESS_MAIN(ShouldResumeTest) + +#include "shouldresumetest.moc" diff --git a/smb/autotests/smburltest.cpp b/smb/autotests/smburltest.cpp new file mode 100644 index 0000000..7caeb5b --- /dev/null +++ b/smb/autotests/smburltest.cpp @@ -0,0 +1,150 @@ +/* + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2020-2021 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); + } + + void testFileParts() + { + // We use SMBUrl for transfers from and to local files as well, make sure it behaves accordingly. + SMBUrl url(QUrl("file:///foo")); + QCOMPARE(QUrl("file:///foo"), url); + QCOMPARE(QUrl("file:///foo.part"), url.partUrl()); + // Clearly not a file should not work + QCOMPARE(QUrl(), SMBUrl(QUrl("file:///")).partUrl()); + } +}; + +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..6f66adc --- /dev/null +++ b/smb/autotests/transfertest.cpp @@ -0,0 +1,152 @@ +/* + 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 "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..1235f75 --- /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; + Q_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()) { + Q_EMIT finished(); + } +} diff --git a/smb/dnssddiscoverer.h b/smb/dnssddiscoverer.h new file mode 100644 index 0000000..f291b90 --- /dev/null +++ b/smb/dnssddiscoverer.h @@ -0,0 +1,56 @@ +/* + 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 +#if KDNSSD_VERSION >= QT_VERSION_CHECK(5, 84, 0) +#include +#include +#else +#include +#include +#endif + +#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; + +Q_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..c8d962b --- /dev/null +++ b/smb/kded/kded_smbwatcher.desktop @@ -0,0 +1,85 @@ +[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[ar]=مراقب سامبا +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[hu]=SMB figyelő +Name[ia]=Observator de SMB +Name[it]=Osservatore SMB +Name[ko]=SMB 모니터 +Name[lt]=SMB stebėtojas +Name[nl]=SMB-bewaker +Name[nn]=SMB-overvaking +Name[pl]=Monitor SMB +Name[pt]=Vigilante do SMB +Name[pt_BR]=Monitor SMB +Name[ro]=Urmăritor SMB +Name[ru]=Слежение за папками SMB +Name[sk]=Sledovanie SMB +Name[sl]=Opazovalnik SMB +Name[sv]=SMB-övervakare +Name[ta]=SMB கண்காணி +Name[uk]=Наглядач SMB +Name[vi]=Trình theo dõi SMB +Name[x-test]=xxSMB Watcherxx +Name[zh_CN]=SMB 监视程序 +Comment=Monitors directories on the smb:/ protocol for changes +Comment[ar]=يراقب التّغييرات في ميفاق smb:/ +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[hu]=Könyvtárak változásainak monitorozása az smb:/ protokollon +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[lt]=Stebi pakeitimus kataloguose ties smb:/ protokolu +Comment[nl]=Bewaakt mappen via het protocol smb:// op wijzigingen +Comment[nn]=Overvakar mapper på smb:/-protokollen for endringar +Comment[pl]=Monitoruje katalogi protokołu smb:/ w poszukiwaniu zmian +Comment[pt]=Vigia as alterações nas pastas com protocolo smb:/ +Comment[pt_BR]=Monitora as alterações nas pastas do protocolo smb:// +Comment[ro]=Monitorizează dosare de pe protocolul smb:/ pentru modificări +Comment[ru]=Наблюдение за изменениями в каталогах, подключённых по протоколу 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[ta]=smb:/ நெறிமுறையை பயன்படுத்தும் அடைவுகள் மாறியுள்ளனவா என்று கண்காணிக்கும் +Comment[uk]=Стежить за змінами у теках, доступ до яких здійснюється за протоколом smb:/ +Comment[vi]=Giám sát thay đổi ở các thư mục ở trong giao thức smb:/ +Comment[x-test]=xxMonitors directories on the smb:/ protocol for changesxx +Comment[zh_CN]=监视 smb:/ 协议目录的更改 diff --git a/smb/kded/notifier.cpp b/smb/kded/notifier.cpp new file mode 100644 index 0000000..0bf4f63 --- /dev/null +++ b/smb/kded/notifier.cpp @@ -0,0 +1,316 @@ +// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +// SPDX-FileCopyrightText: 2020-2021 Harald Sitter + +#include +#include + +#include +#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 subsequent 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(); + } +}; + +// Renaming a file on Windows 10 first sends a removal event followed by a rename event, this messes with stateful assumptions made in the receiving code as +// we'd remove a file and then move a no longer existing file. This helper queues the removal with an auto timer but the option to discard it should +// a move appear as next event indicator. +// https://bugs.kde.org/show_bug.cgi?id=431877 +class PendingRemove +{ + Q_DISABLE_COPY(PendingRemove) +public: + PendingRemove() + { + // A tad awkward. The main thread is actually blocked by libsmb, and libsmb isn't really safe to use on more than one thread. + // libsmb does provide a polling system but that is simply a timer that would wake us up after a fixed timeout effectively amounting + // to polling - less than ideal. + // Instead put our timer into a different thread and fully lock this object. This way we get neatly efficient event looping for the timer. + m_timer.moveToThread(&m_timerThread); + // The timing is probably tight given networking is involved but we needn't wait too long as this directly impacts delay in GUI updates. + m_timer.setInterval(1000); + QObject::connect(&m_timer, &QTimer::timeout, [this] { + const std::lock_guard lock(m_mutex); + sendWithLock(); + }); + m_timerThread.start(); + } + + ~PendingRemove() + { + m_timerThread.quit(); + m_timerThread.wait(); + } + + void schedule(const QUrl &url) + { + const std::lock_guard lock(m_mutex); + if (url.isEmpty()) { + return; + } + Q_ASSERT(m_url.isEmpty()); + m_url = url; + QMetaObject::invokeMethod(&m_timer, QOverload<>::of(&QTimer::start)); // timers may not be started from foreign threads! + } + + // A new event arrived. If it is the start of a move on the same url then discard the removal otherwise send it immediately as the remove + // probably(?) doesn't translate to a move. It's unclear if this could technically be racing or not, we get two callbacks from libsmb so + // the remove and the rename may be in separate packets (opening opportunity for event racing) or not. + void newEventFor(uint32_t action, const QUrl &url) + { + const std::lock_guard lock(m_mutex); + if (m_url.isEmpty()) { + return; + } + if (action == SMBC_NOTIFY_ACTION_OLD_NAME && url == m_url) { + qCDebug(KIO_SMB_LOG) << "Discarding pending remove because it was followed by a move from the same url" << m_url; + resetWithLock(); + } else { + sendWithLock(); + } + } + +private: + void sendWithLock() + { + if (m_url.isEmpty()) { + return; + } + OrgKdeKDirNotifyInterface::emitFilesRemoved({m_url}); + resetWithLock(); + } + + void resetWithLock() + { + QMetaObject::invokeMethod(&m_timer, &QTimer::stop); // timers may not be stopped from foreign threads! + m_url.clear(); + } + + std::mutex m_mutex; + QThread m_timerThread; + QTimer m_timer; + QUrl m_url; +}; + +// 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 rather 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 occurred 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; + PendingRemove pendingRemove; + }; + 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) << "notifying 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); + } + + context->pendingRemove.newEventFor(actions->action, url); + + switch (actions->action) { + case SMBC_NOTIFY_ACTION_ADDED: + OrgKdeKDirNotifyInterface::emitFilesAdded(context->url /* dir */); + continue; + case SMBC_NOTIFY_ACTION_REMOVED: + context->pendingRemove.schedule(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..f125a3d --- /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() override + { + 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; + } + +Q_SIGNALS: + void finished(const QString &url); + +public Q_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 Q_SLOTS: + void maybeRestart(int code, QProcess::ExitStatus status) + { + if (code == 0 || status != QProcess::NormalExit || m_startCounter >= m_startCounterLimit) { + Q_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 Q_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-format b/smb/kdsoap-ws-discovery-client/.clang-format new file mode 100644 index 0000000..7e21122 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/.clang-format @@ -0,0 +1,3 @@ +# This file is added to prevent clang-format changes this directory, it should be kept in case the import gets renewed +DisableFormat: true +SortIncludes: false 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..06ca8fc --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/.gitlab-ci.yml @@ -0,0 +1,75 @@ +# 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: + image: + name: fsfe/reuse:latest + entrypoint: [""] + stage: test + 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..7c88576 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/CMakeLists.txt @@ -0,0 +1,115 @@ +# 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 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" +) + +if (BUILD_TESTING) + find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Test) +endif() + +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) + +# Disable for imported source +if (FALSE) +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::) + +endif() +# Disable for imported source + +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..304cf64 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/KDSoapWSDiscoveryClientConfig.cmake.in @@ -0,0 +1,10 @@ +# Copyright (C) 2019 Casper Meijn +# +# SPDX-License-Identifier: CC0-1.0 + +@PACKAGE_INIT@ + +find_dependency(Qt5Core @REQUIRED_QT_VERSION@) +find_dependency(KDSoap) + +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..a42bb20 --- /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/wsdiscoveryserviceaggregator.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..5aefbea --- /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_aggregator = new WSDiscoveryServiceAggregator(this); + + connect(m_probeJob, &WSDiscoveryProbeJob::matchReceived, m_aggregator, &WSDiscoveryServiceAggregator::updateService); + connect(m_aggregator, &WSDiscoveryServiceAggregator::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..7036e71 --- /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 WSDiscoveryServiceAggregator; + +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; + WSDiscoveryServiceAggregator * m_aggregator; +}; + +#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..38e53f5 --- /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" + "wsdiscoveryserviceaggregator.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} + SOVERSION ${WSDISCOVERY_SOVERSION} + EXPORT_NAME "WSDiscoveryClient" +) + +ecm_generate_headers(KDSoapWSDiscoveryClient_HEADERS + HEADER_NAMES + WSDiscoveryClient + WSDiscoveryProbeJob + WSDiscoveryTargetService + WSDiscoveryServiceAggregator + + 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..ac14c94 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryclient.cpp @@ -0,0 +1,163 @@ +/* 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")); +#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) + addressing.setMessageID(QStringLiteral("urn:uuid:") + QUuid::createUuid().toString(QUuid::WithoutBraces)); +#else + addressing.setMessageID(QStringLiteral("urn:uuid:") + QUuid::createUuid().toString().remove("{").remove("}")); +#endif + 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")); +#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) + addressing.setMessageID(QStringLiteral("urn:uuid:") + QUuid::createUuid().toString(QUuid::WithoutBraces)); +#else + addressing.setMessageID(QStringLiteral("urn:uuid:") + QUuid::createUuid().toString().remove("{").remove("}")); +#endif + 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/wsdiscoveryserviceaggregator.cpp b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator.cpp new file mode 100644 index 0000000..e50ad3f --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator.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 "wsdiscoveryserviceaggregator.h" +#include "wsdiscoveryserviceaggregator_p.h" + +WSDiscoveryServiceAggregator::WSDiscoveryServiceAggregator(QObject* parent) + : QObject(parent), + d_ptr(new WSDiscoveryServiceAggregatorPrivate()) +{ +} + +WSDiscoveryServiceAggregator::~WSDiscoveryServiceAggregator() +{ + delete d_ptr; +} + +void WSDiscoveryServiceAggregator::updateService(const WSDiscoveryTargetService& receivedService) +{ + Q_D(WSDiscoveryServiceAggregator); + auto endpointReference = receivedService.endpointReference(); + auto aggregatedService = d->targetServiceMap.value(endpointReference); + if(aggregatedService.isNull()) { + aggregatedService = QSharedPointer::create(endpointReference); + d->targetServiceMap.insert(endpointReference, aggregatedService); + } + aggregatedService->setTypeList(receivedService.typeList()); + aggregatedService->setScopeList(receivedService.scopeList()); + aggregatedService->setXAddrList(receivedService.xAddrList()); + aggregatedService->setLastSeen(receivedService.lastSeen());; + emit serviceUpdated(aggregatedService); +} + diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator.h b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator.h new file mode 100644 index 0000000..eeef96a --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator.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 WSDISCOVERYSERVICEAGGREGATOR_H +#define WSDISCOVERYSERVICEAGGREGATOR_H + +#include "wsdiscoveryclient_export.h" +#include + +class WSDiscoveryTargetService; +class WSDiscoveryServiceAggregatorPrivate; + +/*! + * \brief Aggregates multiple updates from the same WSDiscoveryTargetService + * + * When receiving multiple probe and resolve matches of the same service, this + * class will aggregate those into a single shared instance. This eases the + * administration needed by the application. + */ +class WSDISCOVERYCLIENT_EXPORT WSDiscoveryServiceAggregator : public QObject +{ + Q_OBJECT + +public: + /*! + * Create a WSDiscoveryClient + * \param parent The QObject parent + */ + WSDiscoveryServiceAggregator(QObject* parent = nullptr); + + /*! + * Destructor + */ + ~WSDiscoveryServiceAggregator(); + +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: + WSDiscoveryServiceAggregatorPrivate* const d_ptr; + Q_DECLARE_PRIVATE(WSDiscoveryServiceAggregator) +}; + +#endif // WSDISCOVERYSERVICEAGGREGATOR_H diff --git a/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator_p.h b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator_p.h new file mode 100644 index 0000000..ab35624 --- /dev/null +++ b/smb/kdsoap-ws-discovery-client/src/wsdiscoveryserviceaggregator_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 WSDISCOVERYSERVICEAGGREGATOR_P_H +#define WSDISCOVERYSERVICEAGGREGATOR_P_H + +#include +#include +#include "wsdiscoverytargetservice.h" + +class WSDiscoveryServiceAggregatorPrivate +{ +public: + QHash> targetServiceMap; +}; + +#endif // WSDISCOVERYSERVICEAGGREGATOR_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..73b2c9d --- /dev/null +++ b/smb/kio_smb.cpp @@ -0,0 +1,83 @@ +/* + 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 authetication. + * 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..eb7ff32 --- /dev/null +++ b/smb/kio_smb.h @@ -0,0 +1,296 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems Inc. + SPDX-FileCopyrightText: 2021 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#ifndef KIO_SMB_H_INCLUDED +#define KIO_SMB_H_INCLUDED + +#include + +#include "smb-logsettings.h" + +//-------------- +// KF includes +//-------------- +#include +#include + +//----------------------------- +// Standard C library includes +//----------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//----------------------------- +// Qt includes +//----------------------------- + +#include +#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; + friend class SMBResumeIO; + 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(); + + // Apply mtime if modified metadata is set. This callsback with a utbuf + // with modtime accordingly set. The callback should implement the actual apply. + template + void applyMTime(UTimeFunction &&callback) + { + const QString mtimeStr = metaData("modified"); + if (mtimeStr.isEmpty()) { + return; + } + qCDebug(KIO_SMB_LOG) << "modified:" << mtimeStr; + + const QDateTime dateTime = QDateTime::fromString(mtimeStr, Qt::ISODate); + if (dateTime.isValid()) { + struct utimbuf utbuf { + }; + utbuf.modtime = dateTime.toSecsSinceEpoch(); // modification time + callback(utbuf); + } + } + + void applyMTimeSMBC(const SMBUrl &url) + { +#ifdef HAVE_UTIME_H // smbc_utime is conditional inside the libsmb headers + applyMTime([url](struct utimbuf utbuf) { + struct stat st { + }; + if (cache_stat(url, &st) == 0) { + utbuf.actime = st.st_atime; // access time, unchanged + smbc_utime(url.toSmbcUrl(), &utbuf); + } + }); +#endif + } +}; + +//=========================================================================== +// 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..936bfd8 --- /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..c864bc0 --- /dev/null +++ b/smb/kio_smb_browse.cpp @@ -0,0 +1,563 @@ +/* + 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 +#if KDNSSD_VERSION >= QT_VERSION_CHECK(5, 84, 0) +#include +#include +#else +#include +#include +#endif +#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 disadvantageous. + // 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 efficiency + // 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..f0e4bf5 --- /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..7615473 --- /dev/null +++ b/smb/kio_smb_dir.cpp @@ -0,0 +1,646 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems Inc. + SPDX-FileCopyrightText: 2021 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#include "kio_smb.h" +#include "smburl.h" + +#include +#include + +#include +#include + +#include + +#include "transfer.h" +#include "transfer_resume.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 << flags; + + // 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; + } + } + + applyMTimeSMBC(dst); + + finished(); +} + +void SMBSlave::smbCopyGet(const QUrl &ksrc, const QUrl &kdst, int permissions, KIO::JobFlags flags) +{ + qCDebug(KIO_SMB_LOG) << "src = " << ksrc << ", dest = " << kdst << flags; + + // 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; + } + } + + auto optionalResume = Transfer::shouldResume(kdst, flags, this); + if (!optionalResume.has_value()) { // had error + return; + } + const auto resume = optionalResume.value(); + + // open the output file... + const QFile::OpenMode mode = resume.resuming ? (QFile::WriteOnly | QFile::Append) : (QFile::WriteOnly | QFile::Truncate); + + QFile file(resume.destination.path()); + if (!resume.resuming) { + 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 (resume.resuming) { + 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 (resume.resuming) { + qCDebug(KIO_SMB_LOG) << "seeking to size" << resume.destinationOffset; + off_t offset = smbc_lseek(srcfd, resume.destinationOffset, 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_CANNOT_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 (Transfer::concludeResumeHasError(isErr, resume, this)) { + return; // NB: error() called inside if applicable + } + + // set modification time (if applicable) + applyMTime([dstFile](struct utimbuf utbuf) { + utbuf.actime = QFileInfo(dstFile).lastRead().toSecsSinceEpoch(); // access time, unchanged + 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 << flags; + + 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())); + + const SMBUrl dstOrigUrl(kdst); + + const std::optional resumeOptional = Transfer::shouldResume(dstOrigUrl, flags, this); + if (!resumeOptional.has_value()) { // had an error + return; + } + const TransferContext &resume = resumeOptional.value(); + + KIO::filesize_t processed_size = 0; + const SMBUrl dstUrl(resume.destination); + + int dstfd = -1; + int errNum = 0; + if (resume.resuming) { + // 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; + } + + if (Transfer::concludeResumeHasError(isErr, resume, this)) { + return; // NB: error() called inside if applicable + } + + applyMTimeSMBC(dstOrigUrl); + + // 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(), S_IRWXU | S_IRWXG | S_IRWXO); + 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(); + } +} + +static bool sameInodeStat(bool hasSrcStat, const struct stat srcStat, const struct stat dstStat) +{ + if (!hasSrcStat) { + return false; + } + const auto badInode = static_cast(-1); // Fun fact: smb actually has code paths that can return -1 cast to ino_t (i.e. unsigned) ... ... ... :( + if (srcStat.st_ino == badInode || dstStat.st_ino == badInode) { + // If either returns a bad inode we don't know and assume they aren't the same entity. + return false; + } + const bool equal = (srcStat.st_ino == dstStat.st_ino && srcStat.st_dev == dstStat.st_dev); + qDebug(KIO_SMB_LOG) << "sameInodeStat" + << "equal" << equal << "hasSrcStat" << hasSrcStat << "srcStat.st_ino" << srcStat.st_ino << "dstStat.st_ino" << dstStat.st_ino + << "badInode" << badInode << "srcStat.st_dev" << srcStat.st_dev << "dstStat.st_dev" << dstStat.st_dev; + return equal; +} + +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 << flags; + + src = ksrc; + dst = kdest; + + // Check to se if the destination exists + // Samba can be case sensitive or insensitive, depending on server capabilities and configuration. As such if the src and dst have the same case insensitive + // name we'll stat the src to ascertain its inode and device. On recent samba and windows servers these seem to provide actually valid numbers we can rely + // on. When not we can still pretend like they aren't the same file. Worst case the user gets an overwrite prompt. + // https://bugs.kde.org/show_bug.cgi?id=430585 + bool hasSrcStat = false; + struct stat srcStat {}; + if (src.path().compare(dst.path(), Qt::CaseInsensitive) == 0) { + qCDebug(KIO_SMB_LOG) << "smbc_rename " << "src and dst insensitive equal, performing inode comparision"; + errNum = cache_stat(dst, &st); + if (errNum == 0) { + hasSrcStat = true; + srcStat = st; + } + } + errNum = cache_stat(dst, &st); + if (errNum == 0 && !sameInodeStat(hasSrcStat, srcStat, st)) { + 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..0c7288e --- /dev/null +++ b/smb/kio_smb_file.cpp @@ -0,0 +1,411 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems Inc. + SPDX-FileCopyrightText: 2018-2021 Harald Sitter + SPDX-FileContributor: Matthew Peterson +*/ + +#include "kio_smb.h" +#include "smburl.h" + +#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_CANNOT_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 << flags; + + 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); + } + + applyMTimeSMBC(m_current_url); + + // 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..ee267fb --- /dev/null +++ b/smb/kio_smb_mount.cpp @@ -0,0 +1,155 @@ +/* + 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..9e42f8e --- /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..47e90f6 --- /dev/null +++ b/smb/smb-network.desktop @@ -0,0 +1,43 @@ +[Desktop Entry] +Icon=network-workgroup +Name=Shared Folders (SMB) +Name[ar]=مجلّدات مشتركة (سامبا) +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[hu]=Megosztott mappák (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[ro]=Dosare partajate (SMB) +Name[ru]=Общие папки (SMB) +Name[sk]=Zdieľané priečinky (SMB) +Name[sl]=Deljene mape (SMB) +Name[sv]=Delade kataloger (SMB) +Name[ta]=பகிர் அடைவுகள் (SMB) +Name[uk]=Спільні теки (SMB) +Name[vi]=Thư mục chia sẻ (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..9483bbf --- /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; + } 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..ac52f16 --- /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, QStringLiteral("application/x-smb-server")); + m_entry.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, QStringLiteral("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, QStringLiteral("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 + Q_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 { + Q_EMIT newDiscovery(Discovery::Ptr(new SMBCDiscovery(entry))); + } + m_url.cdUp(); + } +#endif // HAVE_READDIRPLUS2 + + if (dirp->smbc_type == SMBC_SERVER) { + Q_EMIT newDiscovery(Discovery::Ptr(new SMBCServerDiscovery(entry))); + } else if (dirp->smbc_type == SMBC_FILE_SHARE) { + Q_EMIT newDiscovery(Discovery::Ptr(new SMBCShareDiscovery(entry))); + } else if (dirp->smbc_type == SMBC_WORKGROUP) { + Q_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; + Q_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..6711f09 --- /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); + ~SMBCDiscoverer() override; + + void start() override; + bool isFinished() const override; + + bool dirWasRoot() const; + int error() const; + +Q_SIGNALS: + void newDiscovery(Discovery::Ptr discovery) override; + void finished() override; + +private Q_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..277f4a4 --- /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..fbb3c69 --- /dev/null +++ b/smb/smburl.cpp @@ -0,0 +1,192 @@ +/* + SPDX-License-Identifier: GPL-2.0-or-later + SPDX-FileCopyrightText: 2000 Caldera Systems Inc. + SPDX-FileCopyrightText: 2020-2021 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 +{ + const bool isRemoteFile = m_type == SMBURLTYPE_SHARE_OR_PATH && !fileName().isEmpty(); + const bool isLocalFile = scheme() == QLatin1String("file") && !fileName().isEmpty(); + // Mind that filename doesn't necessarily mean it is a file. + if (isRemoteFile || isLocalFile) { + 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..faebacc --- /dev/null +++ b/smb/smburl.h @@ -0,0 +1,122 @@ +///////////////////////////////////////////////////////////////////////////// +// +// Project: SMB kioslave for KDE2 +// +// File: smburl.h +// +// Abstract: Utility classes used by SMBSlave +// +// Author(s): Matthew Peterson +// Frank Schwanz +//--------------------------------------------------------------------------- +// +// SPDX-FileCopyrightText: 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..6c2f4bc --- /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 semblance 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 maximum 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/transfer_resume.h b/smb/transfer_resume.h new file mode 100644 index 0000000..ad0cc4b --- /dev/null +++ b/smb/transfer_resume.h @@ -0,0 +1,189 @@ +/* + SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2021 Harald Sitter +*/ + +#pragma once + +#include + +#include + +#include + +#include "kio_smb.h" + +// Carries the context of a file transfer. +struct TransferContext { + // When resuming a file. This is false when starting a new .part! + // To establish if a partial file is used the completeDestination should be compared with the partDestination. + const bool resuming; + // The intermediate destination + const SMBUrl destination; + // The part destination. This is null when not using a partial file. + const SMBUrl partDestination; + // The complete destination i.e. the final destination i.e. the place where the file will be once all is said and done + const SMBUrl completeDestination; + + // The offest to resume from in the destination. Naturally only should be used when resuming is true. + const off_t destinationOffset = -1; +}; + +// Simple encapsulation for SMB resume IO for use with shouldResume. +// This hides the specific IO concern from the resume logic such that it can be used with either SMB IO or local IO. +class SMBResumeIO +{ +public: + explicit SMBResumeIO(const SMBUrl &url) + : m_url(url) + // m_stat implicitly init'd by the stat for m_exists + , m_exists(SMBSlave::cache_stat(m_url, &m_stat) == 0) + { + } + + bool exists() const + { + return m_exists; + } + + off_t size() const + { + return m_stat.st_size; + } + + bool isDir() const + { + return S_ISDIR(m_stat.st_mode); + } + + bool remove() + { + return smbc_unlink(m_url.toSmbcUrl()); + } + + bool renameTo(const SMBUrl &newUrl) + { + smbc_unlink(newUrl.toSmbcUrl()); + if (smbc_rename(m_url.toSmbcUrl(), newUrl.toSmbcUrl()) < 0) { + qCDebug(KIO_SMB_LOG) << "SMB failed to rename" << m_url << "to" << newUrl << "->" << strerror(errno); + return false; + } + return true; + } + +private: + const SMBUrl m_url; + struct stat m_stat { + }; + bool m_exists; +}; + +// Simple encapsulation for local resume IO for use with shouldResume. +// This hides the specific IO concern from the resume logic such that it can be used with either SMB IO or local IO. +class QFileResumeIO : public QFileInfo +{ +public: + explicit QFileResumeIO(const SMBUrl &url) + : QFileInfo(url.path()) + { + qDebug() << url.path(); + } + + bool remove() + { + return QFile::remove(filePath()); + } + + bool renameTo(const SMBUrl &newUrl) + { + QFile::remove(newUrl.path()); + if (!QFile::rename(filePath(), newUrl.path())) { + qCDebug(KIO_SMB_LOG) << "failed to rename" << filePath() << "to" << newUrl.path(); + return false; + } + return true; + } + +private: + const SMBUrl m_url; +}; + +namespace Transfer +{ + +// Check if we should resume the upload to destination. +// This returns nullopt when an error has ocurred. The error() function is called internally. +// NB: WorkerInterface is intentionally duck-typed so we can unit test with a mock entity that looks like a SlaveBase but isn't one. +// Similarly ResumeIO is duck-typed so we can use QFileInfo as as base class in one implementation but not the other, +// allowing us to cut down on boilerplate call-forwarding code. +template +Q_REQUIRED_RESULT std::optional shouldResume(const SMBUrl &destination, KIO::JobFlags flags, WorkerInterface *worker) +{ + // Resumption has two presentations: + // a) partial resumption - when a .part file is left behind and we pick up where that part left off + // b) in-place resumption - when we are expected to append to the actual destination file without + // .part temporary in between (FIXME behavior is largely unclear and the below logic is possibly not correct + // https://invent.kde.org/frameworks/kio/-/issues/9) + const bool markPartial = worker->configValue(QStringLiteral("MarkPartial"), true); + + if (const ResumeIO destIO(destination); destIO.exists()) { + if (const bool resume = static_cast(flags & KIO::Resume); resume && destIO.exists()) { + // We are resuming the destination file directly! + return TransferContext{resume, destination, destination, destination, destIO.size()}; + } + + // Not a resume operation -> if we also were not told to overwrite then we can't process this copy at all + // because the ultimate destination already exists. + if (!(flags & KIO::Overwrite)) { + worker->error(destIO.isDir() ? KIO::ERR_IS_DIRECTORY : KIO::ERR_FILE_ALREADY_EXIST, destination.toDisplayString()); + return std::nullopt; + } + } + + if (markPartial) { + const SMBUrl partUrl = destination.partUrl(); + if (ResumeIO partIO(partUrl); partIO.exists() && worker->canResume(partIO.size())) { + return TransferContext{true, partUrl, partUrl, destination, partIO.size()}; + } + + return TransferContext{false, partUrl, partUrl, destination}; // new part file without offsets or resume + } + + // The part file is not enabled or present, neither is KIO::Resume enabled and the dest file present -> regular + // transfer without resuming of anything. + return TransferContext{false, destination, QUrl(), destination}; +} + +// Concludes the resuming. This ought to be called after writing to the destination has +// completed. Destination should be closed. isError is the potential error state. When isError is true, +// the partial file may get discarded (depending on it existing and having an insufficient size). +// The return value is true when an error has occurred. When isError was true this can only ever return true. +template +Q_REQUIRED_RESULT bool concludeResumeHasError(bool isError, const TransferContext &resume, WorkerInterface *worker) +{ + qDebug() << "concluding" << resume.destination << resume.partDestination << resume.completeDestination; + + if (resume.destination == resume.completeDestination) { + return isError; + } + + // Handle error condition. + if (isError) { + const off_t minimumSize = worker->configValue(QStringLiteral("MinimumKeepSize"), DEFAULT_MINIMUM_KEEP_SIZE); + // TODO should this be partdestination? + if (ResumeIO destIO(resume.destination); destIO.exists() && destIO.size() < minimumSize) { + destIO.remove(); + } + return true; + } + + // Rename partial file to its original name. The ResumeIO takes care of potential removing of the destination. + if (ResumeIO partIO(resume.partDestination); !partIO.renameTo(resume.completeDestination)) { + worker->error(ERR_CANNOT_RENAME_PARTIAL, resume.partDestination.toDisplayString()); + return true; + } + + return isError; +} + +} // namespace Transfer diff --git a/smb/wsdiscoverer.cpp b/smb/wsdiscoverer.cpp new file mode 100644 index 0000000..770563f --- /dev/null +++ b/smb/wsdiscoverer.cpp @@ -0,0 +1,397 @@ +/* + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2019-2021 Harald Sitter +*/ + +#include "wsdiscoverer.h" + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include "kio_smb.h" + +using namespace std::chrono_literals; + +// http://docs.oasis-open.org/ws-dd/dpws/wsdd-dpws-1.1-spec.html +// WSD itself defines shorter timeouts. We follow DPWS instead because Windows 10 actually speaks DPWS, so it seems +// prudent to follow its presumed internal limits. +// - discard Probe & ResolveMatch N seconds after corresponding Probe: +constexpr auto MATCH_TIMEOUT = 10s; + +// Not specified default value for HTTP timeouts. We could go with a default 120s or 600s timeout but that seems +// a bit excessive. We only use SOAP over HTTP for device PBSD resolution. +constexpr auto HTTP_TIMEOUT = 20s; + +// 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 + +Q_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 + // interchangeably 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 messages 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(std::chrono::milliseconds(HTTP_TIMEOUT).count()); + + 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)); + Q_EMIT resolved(m_discovery); + } + +private: + const QUrl m_endpointUrl; + const QString m_destination; + Discovery::Ptr m_discovery; +}; + +// Wraps a /Resolve request. Resolves are subject to timeouts which is implemented by only waiting for a reply until +// the internal timeout is hit and then deleting the resolver. +class WSDResolver : public QObject +{ + Q_OBJECT +public: + explicit WSDResolver(const QString &endpoint, QObject *parent = nullptr) + : QObject(parent) + , m_endpoint(endpoint) + { + connect(&m_client, &WSDiscoveryClient::resolveMatchReceived, this, [this](const WSDiscoveryTargetService &service) { + Q_ASSERT(service.endpointReference() == m_endpoint); + Q_EMIT resolved(service); + stop(); + }); + + m_stopTimer.setInterval(MATCH_TIMEOUT); // R4066 of DPWS spec + m_stopTimer.setSingleShot(true); + connect(&m_stopTimer, &QTimer::timeout, this, &WSDResolver::stop); + } + +public Q_SLOTS: + void start() + { + m_client.sendResolve(m_endpoint); + m_stopTimer.start(); + } + + void stop() + { + m_stopTimer.stop(); + disconnect(&m_stopTimer); + Q_EMIT stopped(); + } + +Q_SIGNALS: + void resolved(const WSDiscoveryTargetService &service); + void stopped(); + +private: + const QString m_endpoint; + WSDiscoveryClient m_client; + QTimer m_stopTimer; +}; + +// Utilizes WSDiscoveryClient to probe and resolve WSD services. +WSDiscoverer::WSDiscoverer() + : m_client(new WSDiscoveryClient(this)) +{ + connect(m_client, &WSDiscoveryClient::probeMatchReceived, + this, &WSDiscoverer::matchReceived); + + // Matches may only arrive within a given time period afterwards we no + // longer care as per the spec. stopping is further contigent on all + // resolvers having finished though (they each have timeouts as well). + m_probeMatchTimer.setInterval(MATCH_TIMEOUT); + m_probeMatchTimer.setSingleShot(true); + connect(&m_probeMatchTimer, &QTimer::timeout, this, &WSDiscoverer::stop); +} + +WSDiscoverer::~WSDiscoverer() +{ + qDeleteAll(m_resolvers); + qDeleteAll(m_endpointResolvers); +} + +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}, {}); + + // (re)start match timer to finish-early if at all possible. + m_probeMatchTimer.start(); + m_startedTimer = true; +} + +void WSDiscoverer::stop() +{ + m_startedTimer = true; + disconnect(&m_probeMatchTimer); + m_probeMatchTimer.stop(); + maybeFinish(); +} + +bool WSDiscoverer::isFinished() const +{ + const bool notProbing = !m_probeMatchTimer.isActive(); + const bool notWaitingForWSDResolve = m_endpointResolvers.isEmpty(); + const bool notWaitingForPBSD = m_resolvers.count() == m_resolvedCount; + return m_startedTimer && (notProbing && notWaitingForWSDResolve && notWaitingForPBSD); +} + +void WSDiscoverer::matchReceived(const WSDiscoveryTargetService &matchedService) +{ + if (!m_probeMatchTimer.isActive()) { // R4065 of DPWS spec + qCWarning(KIO_SMB_LOG) << "match received too late" << matchedService.endpointReference(); + return; + } + + if (matchedService.xAddrList().isEmpty()) { // Has no addresses -> needs resolving still + const QString endpoint = matchedService.endpointReference(); + if (m_seenEndpoints.contains(endpoint) || m_endpointResolvers.contains(endpoint)) { + return; + } + + auto resolver = new WSDResolver(endpoint, this); + connect(resolver, &WSDResolver::resolved, this, &WSDiscoverer::resolveReceived); + connect(resolver, &WSDResolver::stopped, this, [this, endpoint] { + if (m_endpointResolvers.contains(endpoint)) { + m_endpointResolvers.take(endpoint)->deleteLater(); + } + maybeFinish(); + }); + m_endpointResolvers.insert(endpoint, resolver); + resolver->start(); + + return; + } + + resolveReceived(matchedService); +} + +void WSDiscoverer::resolveReceived(const WSDiscoveryTargetService &service) +{ + if (m_seenEndpoints.contains(service.endpointReference())) { + return; + } + m_seenEndpoints << service.endpointReference(); + + QUrl addr; + const QList xAddrList = service.xAddrList(); + for (const auto &xAddr : 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; + } + + auto *resolver = new PBSDResolver(addr, service.endpointReference(), this); + connect(resolver, &PBSDResolver::resolved, this, [this](Discovery::Ptr discovery) { + ++m_resolvedCount; + Q_EMIT newDiscovery(discovery); + maybeFinish(); + }); + QTimer::singleShot(0, resolver, &PBSDResolver::run); + m_resolvers << resolver; +} + +void WSDiscoverer::maybeFinish() +{ + if (isFinished()) { + Q_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; + const int fastInsertCount = 6; + entry.reserve(fastInsertCount); + 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..cab65ab --- /dev/null +++ b/smb/wsdiscoverer.h @@ -0,0 +1,68 @@ +/* + SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + SPDX-FileCopyrightText: 2019-2021 Harald Sitter +*/ + +#ifndef WSDISCOVERER_H +#define WSDISCOVERER_H + +#include "discovery.h" +#include +#include +#include + +class WSDiscoveryClient; +class WSDiscoveryTargetService; +class PBSDResolver; +class WSDResolver; + +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(); + ~WSDiscoverer() override; + + void start() override; + bool isFinished() const override; + +Q_SIGNALS: + void newDiscovery(Discovery::Ptr discovery) override; + void finished() override; + +private Q_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; + QHash m_endpointResolvers; + + Q_DISABLE_COPY_MOVE(WSDiscoverer) +}; + +#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..cbb3b9d --- /dev/null +++ b/smoketest/smoke.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# +# SPDX-FileCopyrightText: 2019 Harald Sitter +# +# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + +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..0835660 --- /dev/null +++ b/thumbnail/CMakeLists.txt @@ -0,0 +1,327 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"kio5_thumbnail\") + +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +find_package(OpenEXR 3.0 CONFIG QUIET) +if(NOT OpenEXR_FOUND) + find_package(OpenEXR) +endif() +set_package_properties(OpenEXR PROPERTIES + DESCRIPTION "A library for handling OpenEXR high dynamic-range image files" + 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" +) + +find_package(Taglib 1.11) +set_package_properties(Taglib PROPERTIES + TYPE OPTIONAL + PURPOSE "Provides support for audio thumbnails" +) + +include_directories(${CMAKE_BINARY_DIR}) + +########### next target ############### + +add_library(kio_thumbnail MODULE) +set_target_properties(kio_thumbnail PROPERTIES + OUTPUT_NAME "thumbnail" +) + +target_sources(kio_thumbnail PRIVATE + thumbnail.cpp + imagefilter.cpp +) + +ecm_qt_declare_logging_category(kio_thumbnail + HEADER thumbnail-logsettings.h + IDENTIFIER KIO_THUMBNAIL_LOG + CATEGORY_NAME kf.kio.slaves.thumbnail + OLD_CATEGORY_NAMES log_kio_thumbnail + DESCRIPTION "KIO thumbnail" + EXPORT KIO_EXTRAS +) + +target_compile_definitions(kio_thumbnail + PRIVATE + -DKSERVICE_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055100 # KMimeTypeTrader +) + +target_link_libraries(kio_thumbnail + KF5::CoreAddons + KF5::KIOCore + KF5::KIOWidgets + KF5::I18n +) + +install(TARGETS kio_thumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) + +########### next target ############### + +add_library(imagethumbnail MODULE imagecreator.cpp) + +target_link_libraries(imagethumbnail + KF5::KIOWidgets +) + +install(TARGETS imagethumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES imagethumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +########### next target ############### + +install(FILES directorythumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +########### next target ############### + +add_library(jpegthumbnail MODULE jpegcreator.cpp) + +kconfig_add_kcfg_files(jpegthumbnail jpegcreatorsettings5.kcfgc) + +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}) +install(FILES jpegthumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +########### next target ############### + +add_library(svgthumbnail MODULE svgcreator.cpp) + +target_link_libraries(svgthumbnail + Qt5::Gui + Qt5::Svg + KF5::KIOCore + KF5::KIOWidgets +) + +install(TARGETS svgthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES svgthumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +########### next target ############### + +add_library(textthumbnail MODULE textcreator.cpp) + +target_link_libraries(textthumbnail + Qt5::Gui + KF5::KIOWidgets + KF5::SyntaxHighlighting +) + +install(TARGETS textthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES textthumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +########### next target ############### + +if(NOT WIN32) + + add_library(djvuthumbnail MODULE djvucreator.cpp) + + ecm_qt_declare_logging_category(djvuthumbnail + HEADER thumbnail-djvu-logsettings.h + IDENTIFIER KIO_THUMBNAIL_DJVU_LOG + CATEGORY_NAME kf.kio.slaves.thumbnail.djvu + OLD_CATEGORY_NAMES log_kio_thumbnail.djvu + DESCRIPTION "DjVu files thumbnailer" + EXPORT KIO_EXTRAS + ) + + 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) + + add_library(exrthumbnail MODULE exrcreator.cpp) + + ecm_qt_declare_logging_category(exrthumbnail + HEADER thumbnail-exr-logsettings.h + IDENTIFIER KIO_THUMBNAIL_EXR_LOG + CATEGORY_NAME kf.kio.slaves.thumbnail.exr + OLD_CATEGORY_NAMES log_kio_thumbnail.exr + DESCRIPTION "EXR images thumbnailer" + EXPORT KIO_EXTRAS + ) + + target_link_libraries(exrthumbnail + KF5::KIOCore + KF5::KIOWidgets + ) + if(TARGET OpenEXR::OpenEXR) + target_link_libraries(exrthumbnail OpenEXR::OpenEXR) + else() + target_include_directories(exrthumbnail SYSTEM PRIVATE ${OpenEXR_INCLUDE_DIRS}) + target_link_libraries(exrthumbnail ${OpenEXR_LIBRARIES}) + endif() + + # 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) + + add_library(cursorthumbnail MODULE cursorcreator.cpp) + + 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 ############### + +add_library(windowsexethumbnail MODULE windowsexecreator.cpp icoutils_common.cpp) +add_library(windowsimagethumbnail MODULE windowsimagecreator.cpp icoutils_common.cpp) + +if(WIN32) + target_sources(windowsexethumbnail PRIVATE icoutils_win.cpp) + target_sources(windowsimagethumbnail PRIVATE icoutils_win.cpp) +else() + target_sources(windowsexethumbnail PRIVATE icoutils_wrestool.cpp) + target_sources(windowsimagethumbnail PRIVATE icoutils_wrestool.cpp) +endif() + +target_link_libraries(windowsexethumbnail KF5::KIOWidgets) +install(TARGETS windowsexethumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES windowsexethumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +target_link_libraries(windowsimagethumbnail KF5::KIOWidgets) +install(TARGETS windowsimagethumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES windowsimagethumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +########### next target ############### + +add_library(comicbookthumbnail MODULE comiccreator.cpp) + +ecm_qt_declare_logging_category(comicbookthumbnail + HEADER thumbnail-comic-logsettings.h + IDENTIFIER KIO_THUMBNAIL_COMIC_LOG + CATEGORY_NAME kf.kio.slaves.thumbnail.comic + OLD_CATEGORY_NAMES log_kio_thumbnail.comic + DESCRIPTION "Comic books thumbnailer" + EXPORT KIO_EXTRAS +) + +target_link_libraries(comicbookthumbnail + Qt5::Gui + KF5::Archive + KF5::KIOWidgets +) + +install(TARGETS comicbookthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES comicbookthumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +# ########### next target ############### + +add_library(kritathumbnail MODULE kritacreator.cpp) + +target_link_libraries(kritathumbnail + KF5::KIOWidgets + KF5::Archive +) + +install(TARGETS kritathumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES kraorathumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +########### next target ################# + +if(Taglib_FOUND) + + add_library(audiothumbnail MODULE audiocreator.cpp) + + target_link_libraries(audiothumbnail + Taglib::Taglib + KF5::KIOWidgets + ) + + install(TARGETS audiothumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) + install(FILES audiothumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +endif() + +# ########### next target ############### + +add_library(opendocumentthumbnail MODULE opendocumentcreator.cpp) + +target_link_libraries(opendocumentthumbnail + Qt5::Gui + KF5::KIOWidgets + KF5::Archive +) + +install(TARGETS opendocumentthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES opendocumentthumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +# ########### next target ############### + +if(libappimage_FOUND) + + add_library(appimagethumbnail MODULE appimagecreator.cpp) + + 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 ############### + +add_library(ebookthumbnail MODULE ebookcreator.cpp) + +target_link_libraries(ebookthumbnail + Qt5::Gui + KF5::KIOWidgets + KF5::Archive +) + +install(TARGETS ebookthumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES ebookthumbnail.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +########### install files ############### + +install(FILES thumbcreator.desktop DESTINATION ${KDE_INSTALL_KSERVICETYPES5DIR}) 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..25dee33 --- /dev/null +++ b/thumbnail/appimagecreator.cpp @@ -0,0 +1,47 @@ +/* + * SPDX-FileCopyrightText: 2018 Kai Uwe Broulik + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..ae1cdc7 --- /dev/null +++ b/thumbnail/appimagecreator.h @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2018 Kai Uwe Broulik + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +#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..7a2fb9e --- /dev/null +++ b/thumbnail/appimagethumbnail.desktop @@ -0,0 +1,42 @@ +[Desktop Entry] +Type=Service +Name=AppImage +Name[ar]=صورة تطبيق +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[hu]=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[ro]=AppImage +Name[ru]=AppImage +Name[sk]=AppImage +Name[sl]=AppImage +Name[sv]=AppImage +Name[ta]=AppImage +Name[uk]=AppImage +Name[vi]=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..5d3cee9 --- /dev/null +++ b/thumbnail/audiocreator.cpp @@ -0,0 +1,198 @@ + +/* + * This file is part of the KDE KIO-Extras project + * SPDX-FileCopyrightText: 2009 Vytautas Mickus + * SPDX-FileCopyrightText: 2016 Anthony Fieroni + * + * SPDX-License-Identifier: LGPL-2.1-only + */ + +#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..302b306 --- /dev/null +++ b/thumbnail/audiocreator.h @@ -0,0 +1,25 @@ + +/* + * This file is part of the KDE KIO-Extras project + * SPDX-FileCopyrightText: 2009 Vytautas Mickus + * SPDX-FileCopyrightText: 2016 Anthony Fieroni + * + * SPDX-License-Identifier: LGPL-2.1-only + */ + +#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..b838bea --- /dev/null +++ b/thumbnail/audiothumbnail.desktop @@ -0,0 +1,49 @@ +[Desktop Entry] +Type=Service +Name=Audio files +Name[ar]=ملفات صوت +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[hu]=Hangfájlok +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[ro]=Fișiere audio +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[ta]=ஒலிக்கோப்புகள் +Name[tr]=Ses dosyaları +Name[uk]=Звукові файли +Name[vi]=Tệp âm thanh +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..c06f95a --- /dev/null +++ b/thumbnail/comicbookthumbnail.desktop @@ -0,0 +1,78 @@ +[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[ta]=வரைகதை புத்தகங்கள் +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..9283965 --- /dev/null +++ b/thumbnail/comiccreator.cpp @@ -0,0 +1,251 @@ +/** + * 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). + * SPDX-FileCopyrightText: 2009 Harsh J + * + * Some code borrowed from Okular's comicbook generators, + * by Tobias Koenig + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +// 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) || + entry.endsWith(QLatin1String(".webp"), 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', Qt::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', Qt::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..f656340 --- /dev/null +++ b/thumbnail/comiccreator.h @@ -0,0 +1,61 @@ +/** + * 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). + * SPDX-FileCopyrightText: 2009 Harsh J + * + * Some code borrowed from Okular's comicbook generators, + * by Tobias Koenig + * + * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + */ + +// 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..e4b41eb --- /dev/null +++ b/thumbnail/cursorcreator.cpp @@ -0,0 +1,41 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2003 Fredrik Höglund + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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..9f3230e --- /dev/null +++ b/thumbnail/cursorcreator.h @@ -0,0 +1,20 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2003 Fredrik Höglund + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#ifndef _CURSORCREATOR_H_ +#define _CURSORCREATOR_H_ + +#include + +class CursorCreator : public ThumbCreator +{ +public: + CursorCreator() {} + bool create( const QString &path, int, int, QImage &img ) override; +}; + +#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/directorythumbnail.desktop b/thumbnail/directorythumbnail.desktop new file mode 100644 index 0000000..c4fd036 --- /dev/null +++ b/thumbnail/directorythumbnail.desktop @@ -0,0 +1,63 @@ +[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[ta]=அடைவுகள் +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..d34d08e --- /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..208aa45 --- /dev/null +++ b/thumbnail/ebookcreator.cpp @@ -0,0 +1,322 @@ +/* + * SPDX-FileCopyrightText: 2019 Kai Uwe Broulik + * + * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + */ + +#include "ebookcreator.h" + +#include +#include +#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()->file(entryPath); + if (!entry) { + return false; + } + + zipDevice.reset(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 coverHref; + + // First figure out where the OPF file with metadata is + const auto *entry = zip.directory()->file(QStringLiteral("META-INF/container.xml")); + + if (!entry) { + return false; + } + + zipDevice.reset(entry->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(); + break; + } + } + + if (opfPath.isEmpty()) { + return false; + } + + // Now read the OPF file and look for a + entry = zip.directory()->file(opfPath); + if (!entry) { + return false; + } + + zipDevice.reset(entry->createDevice()); + + xml.setDevice(zipDevice.data()); + + bool inMetadata = false; + bool inManifest = false; + QString coverId; + QMap itemHrefs; + + while (!xml.atEnd() && !xml.hasError()) { + xml.readNext(); + + if (xml.name() == QLatin1String("metadata")) { + if (xml.isStartElement()) { + inMetadata = true; + } else if (xml.isEndElement()) { + inMetadata = false; + } + continue; + } + + if (xml.name() == QLatin1String("manifest")) { + if (xml.isStartElement()) { + inManifest = true; + } else if (xml.isEndElement()) { + inManifest = false; + } + continue; + } + + if (xml.isStartElement()) { + if (inMetadata && (xml.name() == QLatin1String("meta"))) { + const auto attributes = xml.attributes(); + if (attributes.value(QStringLiteral("name")) == QLatin1String("cover")) { + coverId = attributes.value(QStringLiteral("content")).toString(); + } + } else if (inManifest && (xml.name() == QLatin1String("item"))) { + const auto attributes = xml.attributes(); + const QString href = attributes.value(QStringLiteral("href")).toString(); + const QString id = attributes.value(QStringLiteral("id")).toString(); + if (!id.isEmpty() && !href.isEmpty()) { + // EPUB 3 has the "cover-image" property set + const auto properties = attributes.value(QStringLiteral("properties")).toString(); + const auto propertyList = properties.split(QChar(' '), Qt::SkipEmptyParts); + if (propertyList.contains(QLatin1String("cover-image"))) { + coverHref = href; + break; + } + itemHrefs[id] = href; + } + } else { + continue; + } + + if (!coverId.isEmpty() && itemHrefs.contains(coverId)) { + coverHref = itemHrefs[coverId]; + break; + } + } + } + + if (coverHref.isEmpty()) { + // Maybe we're lucky and the archive contains an iTunesArtwork file from iBooks + entry = zip.directory()->file(QStringLiteral("iTunesArtwork")); + if (entry) { + zipDevice.reset(entry->createDevice()); + return image.load(zipDevice.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()->file(name); + if (!entry) { + continue; + } + + zipDevice.reset(entry->createDevice()); + if (image.load(zipDevice.data(), "")) { + return true; + } + } + return false; + } + + // Decode percent encoded URL + QByteArray encoded = itemHrefs[coverId].toUtf8(); + coverHref = QUrl::fromPercentEncoding(encoded); + + // 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()->file(coverHref); + if (entry) { + zipDevice.reset(entry->createDevice()); + return image.load(zipDevice.data(), ""); + } + + return false; +} + +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..d5370eb --- /dev/null +++ b/thumbnail/ebookcreator.h @@ -0,0 +1,31 @@ +/* + * SPDX-FileCopyrightText: 2019 Kai Uwe Broulik + * + * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + */ + +#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..7bcd390 --- /dev/null +++ b/thumbnail/ebookthumbnail.desktop @@ -0,0 +1,44 @@ +[Desktop Entry] +Type=Service +Name=eBooks +Name[ar]=كتب إلكترونية +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[hu]=E-könyvek +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[ro]=Cărți electronice +Name[ru]=Электронные книги +Name[sk]=eKnihy +Name[sl]=elektronske knjige +Name[sv]=e-böcker +Name[ta]=மின்புத்தகங்கள் +Name[uk]=Електронні книги +Name[vi]=Sách điện tá»­ +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..91d71b7 --- /dev/null +++ b/thumbnail/exrcreator.cpp @@ -0,0 +1,71 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2004 Brad Hards + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include "exrcreator.h" +#include "thumbnail-exr-logsettings.h" + +#include +#include + +#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) +{ + const QByteArray encodedPath = QFile::encodeName(path); + Imf::InputFile in (encodedPath.constData()); + 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" ); + const qint64 maxSize = configGroup.readEntry( "MaximumSize", std::numeric_limits::max() ); + const qint64 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..be87ba2 --- /dev/null +++ b/thumbnail/exrcreator.h @@ -0,0 +1,19 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2004 Brad Hards + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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..933c133 --- /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]=EXR படங்கள் +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..f4e1ea5 --- /dev/null +++ b/thumbnail/icoutils.h @@ -0,0 +1,33 @@ +/* + icoutils.h - Extract Microsoft Window icons and images using icoutils package + + SPDX-FileCopyrightText: 2009-2010 Pali Rohár + SPDX-FileCopyrightText: 2013 Andrius da Costa Ribas + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#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..0998c49 --- /dev/null +++ b/thumbnail/icoutils_common.cpp @@ -0,0 +1,131 @@ +/* + icoutils_common.cpp - Extract Microsoft Window icons and images using icoutils package + + SPDX-FileCopyrightText: 2009-2010 Pali Rohár + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#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..ff0be06 --- /dev/null +++ b/thumbnail/icoutils_win.cpp @@ -0,0 +1,186 @@ +/* + icoutils_win.cpp - Extract Microsoft Window icons and images using icoutils package + + SPDX-FileCopyrightText: 2013 Andrius da Costa Ribas + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#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..fa440b5 --- /dev/null +++ b/thumbnail/icoutils_wrestool.cpp @@ -0,0 +1,58 @@ +/* + icoutils_wrestool.cpp - Extract Microsoft Window icons and images using icoutils package + + SPDX-FileCopyrightText: 2009-2010 Pali Rohár + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#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..8b13890 --- /dev/null +++ b/thumbnail/imagecreator.cpp @@ -0,0 +1,31 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 Carsten Pfeiffer + SPDX-FileCopyrightText: 2000 Malte Starostik + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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..c4bdc98 --- /dev/null +++ b/thumbnail/imagecreator.h @@ -0,0 +1,21 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 Malte Starostik + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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..3054515 --- /dev/null +++ b/thumbnail/imagefilter.cpp @@ -0,0 +1,245 @@ +//krazy:exclude=copyright (email of Maxim is missing) +/* + This file is a part of the KDE project + + SPDX-FileCopyrightText: 2006 Zack Rusin + SPDX-FileCopyrightText: 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, + SPDX-FileCopyrightText: 2002-2005 Maxim Shemanarev + + SPDX-License-Identifier: BSD-2-Clause +*/ + +#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..d385760 --- /dev/null +++ b/thumbnail/imagefilter.h @@ -0,0 +1,31 @@ +//krazy:exclude=copyright (email of Maxim is missing) +/* + This file is a part of the KDE project + + SPDX-FileCopyrightText: 2006 Zack Rusin + SPDX-FileCopyrightText: 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, + SPDX-FileCopyrightText: 2002-2005 Maxim Shemanarev + + SPDX-License-Identifier: BSD-2-Clause +*/ + +#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..adeacd5 --- /dev/null +++ b/thumbnail/imagethumbnail.desktop @@ -0,0 +1,75 @@ +[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[ta]=படங்கள் (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;image/avif; +X-KDE-Library=imagethumbnail +CacheThumbnail=true diff --git a/thumbnail/jpegcreator.cpp b/thumbnail/jpegcreator.cpp new file mode 100644 index 0000000..0fdc188 --- /dev/null +++ b/thumbnail/jpegcreator.cpp @@ -0,0 +1,43 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2008 Andre Gemünd + SPDX-FileCopyrightText: 2016 Alexander Volkov + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include "jpegcreator.h" +#include "jpegcreatorsettings5.h" + +#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); +} diff --git a/thumbnail/jpegcreator.h b/thumbnail/jpegcreator.h new file mode 100644 index 0000000..4c29ed2 --- /dev/null +++ b/thumbnail/jpegcreator.h @@ -0,0 +1,21 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2008 Andre Gemünd + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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; +}; + +#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..9fa58ce --- /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[ta]=JPEG படங்கள் +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 +ThumbnailerVersion=2 diff --git a/thumbnail/kraorathumbnail.desktop b/thumbnail/kraorathumbnail.desktop new file mode 100644 index 0000000..1e163a8 --- /dev/null +++ b/thumbnail/kraorathumbnail.desktop @@ -0,0 +1,52 @@ +[Desktop Entry] +Type=Service +Name=Krita Documents +Name[ar]=مستندات كريتا +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 Krity +Name[pt]=Documentos do Krita +Name[pt_BR]=Documentos do Krita +Name[ro]=Documente 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[ta]=Krita ஆவணங்கள் +Name[tr]=Krita Belgeleri +Name[uk]=Документи Krita +Name[vi]=Tài liệu 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..2bc5cb0 --- /dev/null +++ b/thumbnail/kritacreator.cpp @@ -0,0 +1,72 @@ +/* This file is part of the Calligra project. + SPDX-FileCopyrightText: 2015 Friedrich W. H. Kossebau + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include "kritacreator.h" + +#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; + } + + // first check if normal thumbnail is good enough + // ORA thumbnail? + const KArchiveFile *entry = zip.directory()->file(QLatin1String("Thumbnails/thumbnail.png")); + if (!entry) { + // KRA thumbnail + entry = zip.directory()->file(QLatin1String("preview.png")); + } + + if (!entry) { + return false; + } + + std::unique_ptr fileDevice{entry->createDevice()}; + bool thumbLoaded = image.load(fileDevice.get(), "PNG"); + // The requested size is a boundingbox, so meeting one size is sufficient + if (thumbLoaded && ((image.width() >= width) || (image.height() >= height))) { + return true; + } + + entry = zip.directory()->file(QLatin1String("mergedimage.png")); + if (entry) { + QImage thumbnail; + fileDevice.reset(entry->createDevice()); + thumbLoaded = thumbnail.load(fileDevice.get(), "PNG"); + if (thumbLoaded) { + image = thumbnail; + return true; + } + } + + return false; +} diff --git a/thumbnail/kritacreator.h b/thumbnail/kritacreator.h new file mode 100644 index 0000000..8c5784b --- /dev/null +++ b/thumbnail/kritacreator.h @@ -0,0 +1,27 @@ +/* This file is part of the Calligra project. + SPDX-FileCopyrightText: 2015 Friedrich W. H. Kossebau + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#ifndef _KRITACREATOR_H_ +#define _KRITACREATOR_H_ + +#include + +// KF +#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..99266ee --- /dev/null +++ b/thumbnail/opendocumentcreator.cpp @@ -0,0 +1,78 @@ +/* + * SPDX-FileCopyrightText: 2018-2019 Kai Uwe Broulik + * + * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + */ + +#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..813fe1b --- /dev/null +++ b/thumbnail/opendocumentcreator.h @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2018 Kai Uwe Broulik + * + * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + */ + +#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..0edcc3f --- /dev/null +++ b/thumbnail/opendocumentthumbnail.desktop @@ -0,0 +1,45 @@ +[Desktop Entry] +Type=Service +Name=Office Documents +Name[ar]=مستندات المكتب +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[hu]=Office dokumentumok +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[ro]=Documente de birou +Name[ru]=Документы +Name[sk]=Kancelárske dokumenty +Name[sl]=PisarniÅ¡ki dokumenti +Name[sv]=Kontorsdokument +Name[ta]=அலுவல் ஆவணங்கள் +Name[uk]=Офісні документи +Name[vi]=Tài liệu Office +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..49f239d --- /dev/null +++ b/thumbnail/svgcreator.cpp @@ -0,0 +1,41 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2006 Pascal Létourneau + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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..c4f0d9c --- /dev/null +++ b/thumbnail/svgcreator.h @@ -0,0 +1,19 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2006 Pascal Létourneau + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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..ba6c6a0 --- /dev/null +++ b/thumbnail/svgthumbnail.desktop @@ -0,0 +1,78 @@ +[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[ta]=SVG படங்கள் +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..01eb49e --- /dev/null +++ b/thumbnail/textcreator.cpp @@ -0,0 +1,168 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000, 2002 Carsten Pfeiffer + SPDX-FileCopyrightText: 2000 Malte Starostik + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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 KIO::ThumbDevicePixelRatioDependentCreator *new_creator() +{ + return new TextCreator; +} +} + +TextCreator::TextCreator() + : KIO::ThumbDevicePixelRatioDependentCreator(), + 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 * devicePixelRatio(), height * devicePixelRatio() ); + if (height * 3 > width * 4) + pixmapSize.setHeight( width * 4 / 3 * devicePixelRatio()); + else + pixmapSize.setWidth( height * 3 / 4 * devicePixelRatio()); + + if ( pixmapSize != m_pixmap.size() ) { + m_pixmap = QPixmap( pixmapSize ); + m_pixmap.setDevicePixelRatio(devicePixelRatio()); + } + + // one pixel for the rectangle, the rest. whitespace + int xborder = 1 + pixmapSize.width()/16 / devicePixelRatio(); // minimum x-border + int yborder = 1 + pixmapSize.height()/16 / devicePixelRatio(); // 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()/ devicePixelRatio() - 2 * yborder ) / 16 ) ) ); + QFontMetrics fm( font ); + + // calculate a better border so that the text is centered + const QSizeF canvasSize(pixmapSize.width() / devicePixelRatio() - 2 * xborder, pixmapSize.height() / devicePixelRatio() - 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..d035127 --- /dev/null +++ b/thumbnail/textcreator.h @@ -0,0 +1,29 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 Malte Starostik + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#ifndef _TEXTCREATOR_H_ +#define _TEXTCREATOR_H_ + +#include +#include +#include +#include + +class TextCreator : public KIO::ThumbDevicePixelRatioDependentCreator { +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..87a075d --- /dev/null +++ b/thumbnail/textthumbnail.desktop @@ -0,0 +1,98 @@ +[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 +DevicePixelRatioDependent=true +CacheThumbnail=false diff --git a/thumbnail/thumbcreator.desktop b/thumbnail/thumbcreator.desktop new file mode 100644 index 0000000..c26d0ab --- /dev/null +++ b/thumbnail/thumbcreator.desktop @@ -0,0 +1,99 @@ +[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 miniatury +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]=Trình xá»­ lí 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 + +[PropertyDef::DevicePixelRatioDependent] +Type=bool diff --git a/thumbnail/thumbnail.cpp b/thumbnail/thumbnail.cpp new file mode 100644 index 0000000..14fb2aa --- /dev/null +++ b/thumbnail/thumbnail.cpp @@ -0,0 +1,860 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 Malte Starostik + SPDX-FileCopyrightText: 2000 Carsten Pfeiffer + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#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 +#include + +// 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. +// devicePixelRatio - the devicePixelRatio to use for the output, +// the dimensions of the output is multiplied by it and output pixmap will have devicePixelRatio +// 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; + +// Pseudo plugin class to embed meta data +class KIOPluginForMetaData : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kio.slave.thumbnail" FILE "thumbnail.json") +}; + +extern "C" Q_DECL_EXPORT int kdemain( int argc, char **argv ) +{ +#ifdef HAVE_NICE + nice( 5 ); +#endif + + 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 QGuiApplication + putenv(strdup("SESSION_MANAGER=")); + + // Some thumbnail plugins use QWidget classes for the rendering, + // so use QApplication here, not just QGuiApplication + QApplication app(argc, argv); + + 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_width(0), + m_height(0), + m_devicePixelRatio(1), + m_maxFileSize(0), + m_randomGenerator() +{} + +ThumbnailProtocol::~ThumbnailProtocol() +{ + qDeleteAll(m_creators); + m_creators.clear(); +} + +/** + * 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) +{ + if (img.width() > maxWidth || img.height() > maxHeight) { + img = img.scaled(maxWidth, + maxHeight, + Qt::KeepAspectRatio, Qt::SmoothTransformation); + } +} + +void ThumbnailProtocol::get(const QUrl &url) +{ + m_mimeType = metaData("mimeType"); + m_enabledPlugins = metaData("enabledPlugins").split(QLatin1Char(','), Qt::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 + bool ok; + m_devicePixelRatio = metaData("devicePixelRatio").toInt(&ok); + if (!ok || m_devicePixelRatio == 0) { + m_devicePixelRatio = 1; + } else { + m_width *= m_devicePixelRatio; + m_height *= m_devicePixelRatio; + } + + QImage img; + 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; + } + + ThumbCreatorWithMetadata* creator = getThumbCreator(plugin); + if (!creator) { + error(KIO::ERR_INTERNAL, i18n("Cannot load ThumbCreator %1", plugin)); + return; + } + + if (creator->handleSequences) { + ThumbSequenceCreator* sequenceCreator = dynamic_cast(creator->creator); + if (sequenceCreator) { + sequenceCreator->setSequenceIndex(sequenceIndex()); + + setMetaData("handlesSequences", QStringLiteral("1")); + } + } + + if (!createThumbnail(creator, info.canonicalFilePath(), m_width, m_height, img)) { + error(KIO::ERR_INTERNAL, i18n("Cannot create thumbnail for %1", info.canonicalFilePath())); + return; + } + + if (creator->handleSequences) { + ThumbSequenceCreator* sequenceCreator = dynamic_cast(creator->creator); + // We MUST do this after calling create(), because the create() call itself might change it. + const float wp = sequenceCreator->sequenceIndexWraparoundPoint(); + setMetaData("sequenceIndexWraparoundPoint", QString().setNum(wp)); + } + } + + 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.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 + } + struct shmid_ds shmStat; + if (shmctl(shmid.toInt(), IPC_STAT, &shmStat) == -1 || shmStat.shm_segsz < (uint)img.sizeInBytes()) { + error(KIO::ERR_INTERNAL, i18n("Image is too big for the shared memory segment")); + shmdt((char*)shmaddr); + return; + } + // Keep in sync with kio/src/previewjob.cpp + const quint8 format = img.format() | 0x80; + stream << img.width() << img.height() << format << ((int)img.devicePixelRatio()); + 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 borderStrokeWidth, QSize imageTargetSize, int rotationAngle) const +{ + // Scale the image down so it matches the aspect ratio + float scaling = 1.0; + + const bool landscapeDimension = image.width() > image.height(); + const bool hasTargetSizeWidth = imageTargetSize.width() != 0; + const bool hasTargetSizeHeight = imageTargetSize.height() != 0; + const int widthWithFrames = image.width() + (2 * borderStrokeWidth); + const int heightWithFrames = image.height() + (2 * borderStrokeWidth); + if (landscapeDimension && (widthWithFrames > imageTargetSize.width()) && hasTargetSizeWidth) { + scaling = float(imageTargetSize.width()) / float(widthWithFrames); + } else if ((heightWithFrames > imageTargetSize.height()) && hasTargetSizeHeight) { + scaling = float(imageTargetSize.height()) / float(heightWithFrames); + } + + const float scaledFrameWidth = borderStrokeWidth / scaling; + + QTransform m; + m.rotate(rotationAngle); + m.scale(scaling, scaling); + + const QRectF frameRect(QPointF(0, 0), QPointF(image.width() / image.devicePixelRatio() + scaledFrameWidth*2, + image.height() / image.devicePixelRatio() + 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.setRenderHint(QPainter::Antialiasing); + p.setCompositionMode(QPainter::CompositionMode_Source); + + p.translate(-r.topLeft()); + p.setWorldTransform(m, true); + + if (isOpaque(image)) { + 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(borderStrokeWidth, 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"); + const QStringList propagationDirectoriesList = globalConfig.readEntry("PropagationDirectories", QStringList() << "VIDEO_TS"); + m_propagationDirectories = QSet(propagationDirectoriesList.begin(), propagationDirectoriesList.end()); + m_maxFileSize = globalConfig.readEntry("MaximumSize", std::numeric_limits::max()); + } + + const int tiles = 2; //Count of items shown on each dimension + const int spacing = 1 * m_devicePixelRatio; + 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); + folder.setDevicePixelRatio(m_devicePixelRatio); + + // 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; + // the picture border stroke width 1/170 rounded up + // (i.e for each 170px the folder width increases those border increase by 1 px) + const int borderStrokeWidth = qRound(folderWidth / 170.); + + const int segmentWidth = (folderWidth - leftMargin - rightMargin + spacing) / tiles - spacing; + const int segmentHeight = (folderHeight - topMargin - bottomMargin + spacing) / tiles - spacing; + if ((segmentWidth < 5 * m_devicePixelRatio) || (segmentHeight < 5 * m_devicePixelRatio)) { + // 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.setDevicePixelRatio(m_devicePixelRatio); + 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 iterations = 0; + QString hadFirstThumbnail; + QImage firstThumbnail; + + int validThumbnails = 0; + int totalValidThumbs = -1; + + 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 + m_randomGenerator.seed(qHash(directory) + skipValidItems); + while (dir.hasNext()) { + ++iterations; + if (iterations > 500) { + skipValidItems = skipped = 0; + break; + } + + dir.next(); + + if (dir.fileInfo().isSymbolicLink()) { + // Skip symbolic links, as these may point to e.g. network file + // systems or other slow storage. The calling code already + // checks for the directory itself, and if it is fine any + // contained plain file is fine as well. + continue; + } + + 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; + } + + drawSubThumbnail(p, subThumbnail, segmentWidth, segmentHeight, xPos, yPos, borderStrokeWidth); + + 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 (!dir.hasNext() && totalValidThumbs < 0) { + // We iterated over the entire directory for the first time, so now we know how many thumbs + // were actually created. + totalValidThumbs = skipped+validThumbnails; + } + + 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 (totalValidThumbs >= 0) { + // We only know this once we've iterated over the entire directory, so this will only be + // set for large enough sequence indices. + const int wraparoundPoint = (totalValidThumbs-1)/visibleCount + 1; + setMetaData("sequenceIndexWraparoundPoint", QString().setNum(wraparoundPoint)); + } + setMetaData("handlesSequences", QStringLiteral("1")); + + 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.setDevicePixelRatio(m_devicePixelRatio); + 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, borderStrokeWidth); + return oneTileImg; + } + + return img; +} + +ThumbCreatorWithMetadata* ThumbnailProtocol::getThumbCreator(const QString& plugin) +{ + auto it = m_creators.constFind(plugin); + if (it != m_creators.constEnd()) { + return *it; + } + + // Don't use KPluginFactory here, this is not a QObject and + // neither is ThumbCreator + ThumbCreator *creator = nullptr; + QLibrary library(KPluginLoader::findPlugin((plugin))); + if (library.load()) { + auto createFn = (newCreator)library.resolve("new_creator"); + if (createFn) { + creator = createFn(); + } + } + + ThumbCreatorWithMetadata *thumbCreator = nullptr; + if (creator) { + const KService::List plugins = KServiceTypeTrader::self()->query(QStringLiteral("ThumbCreator"), QStringLiteral("Library == '%1'").arg(plugin)); + if (plugins.size() == 0) { + qCWarning(KIO_THUMBNAIL_LOG) << "Plugin not found:" << plugin; + } else { + auto service = plugins.first(); + + QVariant cacheThumbnails = service->property("CacheThumbnail"); + QVariant devicePixelRatioDependent = service->property("DevicePixelRatioDependent"); + QVariant handleSequences = service->property("HandleSequences"); + + thumbCreator = new ThumbCreatorWithMetadata{ + creator, + cacheThumbnails.isValid() ? cacheThumbnails.toBool() : true, + devicePixelRatioDependent.isValid() ? devicePixelRatioDependent.toBool() : false, + handleSequences.isValid() ? handleSequences.toBool() : false + }; + } + } else { + qCWarning(KIO_THUMBNAIL_LOG) << "Failed to load" << plugin << library.errorString(); + } + + m_creators.insert(plugin, thumbCreator); + + return thumbCreator; +} + +void ThumbnailProtocol::ensureDirsCreated() +{ + 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); + if (m_devicePixelRatio > 1) { + basePath.mkpath("x-large/"); + QFile::setPermissions(basePath.absoluteFilePath("x-large"), QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner); + basePath.mkpath("xx-large/"); + QFile::setPermissions(basePath.absoluteFilePath("xx-large"), QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner); + } + } +} + +bool ThumbnailProtocol::createSubThumbnail(QImage &thumbnail, const QString &filePath, + int segmentWidth, int segmentHeight) +{ + auto getSubCreator = [&filePath, this]() -> ThumbCreatorWithMetadata* { + const QMimeDatabase db; + const QString subPlugin = pluginForMimeType(db.mimeTypeForFile(filePath).name()); + if (subPlugin.isEmpty() || !m_enabledPlugins.contains(subPlugin)) { + return nullptr; + } + return getThumbCreator(subPlugin); + }; + + const auto maxDimension = qMin(1024, 512 * m_devicePixelRatio); + if ((segmentWidth <= maxDimension) && (segmentHeight <= maxDimension)) { + // check whether a cached version of the file is available for + // 128 x 128, 256 x 256 pixels or 512 x 512 pixels taking into account devicePixelRatio + 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"); + + ensureDirsCreated(); + + struct CachePool { + QString path; + int minSize; + }; + + static const auto pools = { + CachePool{QStringLiteral("normal/"), 128}, + CachePool{QStringLiteral("large/"), 256}, + CachePool{QStringLiteral("x-large/"), 512}, + CachePool{QStringLiteral("xx-large/"), 1024}, + }; + + const int wants = std::max(segmentWidth, segmentHeight); + for (const auto &pool : pools) { + if (pool.minSize < wants) { + continue; + } else if (cacheSize == 0) { + // the lowest cache size the thumbnail could be at + cacheSize = pool.minSize; + } + // try in folders with higher image quality as well + if (thumbnail.load(m_thumbBasePath + pool.path + thumbName, "png")) { + thumbnail.setDevicePixelRatio(m_devicePixelRatio); + break; + } + } + + // no cached version is available, a new thumbnail must be created + if (thumbnail.isNull()) { + ThumbCreatorWithMetadata* subCreator = getSubCreator(); + if (subCreator && createThumbnail(subCreator, filePath, cacheSize, cacheSize, thumbnail)) { + scaleDownImage(thumbnail, cacheSize, cacheSize); + + // The thumbnail has been created successfully. Check if we can store + // the thumbnail to the cache for future access. +#if KIO_VERSION >= QT_VERSION_CHECK(5, 83, 0) + if (subCreator->cacheThumbnail && metaData("cache").toInt() && !thumbnail.isNull()) { +#else + if (subCreator->cacheThumbnail && !thumbnail.isNull()) { +#endif + QString thumbPath; + const int wants = std::max(thumbnail.width(), thumbnail.height()); + for (const auto &pool : pools) { + if (pool.minSize < wants) { + continue; + } else if (thumbPath.isEmpty()) { + // that's the appropriate path for this thumbnail + thumbPath = m_thumbBasePath + pool.path; + } + } + + // The thumbnail has been created successfully. Store the thumbnail + // to the cache for future access. + QSaveFile thumbnailfile(QDir(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(); + } + } + } + } + } + + if (thumbnail.isNull()) { + return false; + } + + } else { + // image requested is too big to be stored in the cache + // create an image on demand + ThumbCreatorWithMetadata* subCreator = getSubCreator(); + if (!subCreator || !createThumbnail(subCreator, filePath, segmentWidth, segmentHeight, thumbnail)) { + return false; + } + } + + // Make sure the image fits in the segments + // Some thumbnail creators do not respect the width / height parameters + scaleDownImage(thumbnail, segmentWidth, segmentHeight); + return true; +} + +bool ThumbnailProtocol::createThumbnail(ThumbCreatorWithMetadata* thumbCreator, const QString& filePath, int width, int height, QImage& thumbnail) +{ + int scaleWidth = width; + int scaledHeight = height; + + if (thumbCreator->devicePixelRatioDependent) { + KIO::ThumbDevicePixelRatioDependentCreator *dprDependentCreator = + static_cast( + thumbCreator->creator); + + if (dprDependentCreator) { + dprDependentCreator->setDevicePixelRatio(m_devicePixelRatio); + scaleWidth /= m_devicePixelRatio; + scaledHeight /= m_devicePixelRatio; + } + } + + if (thumbCreator->creator->create(filePath, scaleWidth, scaledHeight, thumbnail)) { + // make sure the image is not bigger than the expected size + scaleDownImage(thumbnail, width, height); + + thumbnail.setDevicePixelRatio(m_devicePixelRatio); + + return true; + } + + return false; +} + +void ThumbnailProtocol::drawSubThumbnail(QPainter& p, QImage subThumbnail, int width, int height, int xPos, int yPos, int borderStrokeWidth) +{ + scaleDownImage(subThumbnail, width, height); + + // center the image inside the segment boundaries + const QPoint centerPos((xPos + width/ 2) / m_devicePixelRatio, (yPos + height / 2) / m_devicePixelRatio); + const int rotationAngle = m_randomGenerator.bounded(-8, 9); // Random rotation ±8° + drawPictureFrame(&p, centerPos, subThumbnail, borderStrokeWidth, QSize(width, height), rotationAngle); +} + +#include "thumbnail.moc" diff --git a/thumbnail/thumbnail.h b/thumbnail/thumbnail.h new file mode 100644 index 0000000..af685d9 --- /dev/null +++ b/thumbnail/thumbnail.h @@ -0,0 +1,77 @@ +/* This file is part of the KDE libraries + SPDX-FileCopyrightText: 2000 Malte Starostik + + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#ifndef _THUMBNAIL_H_ +#define _THUMBNAIL_H_ + +#include +#include +#include +#include + +#include + +class ThumbCreator; +class QImage; + +struct ThumbCreatorWithMetadata { + ThumbCreator *creator = nullptr; + bool cacheThumbnail = true; + bool devicePixelRatioDependent = false; + bool handleSequences = false; +}; + +class ThumbnailProtocol : public KIO::SlaveBase +{ +public: + ThumbnailProtocol(const QByteArray &pool, const QByteArray &app); + ~ThumbnailProtocol() override; + + void get(const QUrl &url) override; + +protected: + ThumbCreatorWithMetadata* getThumbCreator(const QString& plugin); + bool isOpaque(const QImage &image) const; + void drawPictureFrame(QPainter *painter, const QPoint &pos, const QImage &image, + int frameWidth, QSize imageTargetSize, int rotationAngle) 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); + + /** + * Draw the SubThumbnail + **/ + void drawSubThumbnail(QPainter& p, QImage subThumbnail, int width, int height, + int xPos, int yPos, int borderStrokeWidth); +private: + void ensureDirsCreated(); + bool createThumbnail(ThumbCreatorWithMetadata* subCreator, const QString& filePath, int width, int height, QImage& thumbnail); + + QString m_mimeType; + int m_width; + int m_height; + int m_devicePixelRatio; + // Thumbnail creators + QHash m_creators; + QStringList m_enabledPlugins; + QSet m_propagationDirectories; + QString m_thumbBasePath; + qint64 m_maxFileSize; + QRandomGenerator m_randomGenerator; +}; + +#endif diff --git a/thumbnail/thumbnail.json b/thumbnail/thumbnail.json new file mode 100644 index 0000000..f596f72 --- /dev/null +++ b/thumbnail/thumbnail.json @@ -0,0 +1,14 @@ +{ + "KDE-KIO-Protocols": { + "thumbnail": { + "Icon": "view-preview", + "X-DocPath": "kioslave5/thumbnail/index.html", + "exec": "kf5/kio/thumbnail", + "input": "stream", + "output": "stream", + "protocol": "thumbnail", + "reading": true, + "source": false + } + } +} diff --git a/thumbnail/windowsexecreator.cpp b/thumbnail/windowsexecreator.cpp new file mode 100644 index 0000000..8f49b37 --- /dev/null +++ b/thumbnail/windowsexecreator.cpp @@ -0,0 +1,28 @@ +/* + windowsexecreator.cpp - Thumbnail Creator for Microsoft Windows Executables + + SPDX-FileCopyrightText: 2009 Pali Rohár + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#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..21b3f4c --- /dev/null +++ b/thumbnail/windowsexecreator.h @@ -0,0 +1,23 @@ +/* + windowsexecreator.h - Thumbnail Creator for Microsoft Windows Executables + + SPDX-FileCopyrightText: 2009-2010 Pali Rohár + + SPDX-License-Identifier: GPL-2.0-or-later + +*/ + + +#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..fa90cee --- /dev/null +++ b/thumbnail/windowsexethumbnail.desktop @@ -0,0 +1,77 @@ +[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[ta]=மைக்ரோசாப்ட் விண்டோஸில் இயக்கவல்ல நிரல்கள் +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 Windows Microsoft +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..5f75999 --- /dev/null +++ b/thumbnail/windowsimagecreator.cpp @@ -0,0 +1,39 @@ +/* + windowsimagecreator.cpp - Thumbnail Creator for Microsoft Windows Images + + SPDX-FileCopyrightText: 2009 Pali Rohár + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "windowsimagecreator.h" +#include "icoutils.h" + +#include +#include +#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) +{ + if (IcoUtils::loadIcoImage(path, img, width, height)) { + return true; + } + + // Maybe it's an animated cursor + if (QMimeDatabase().mimeTypeForFile(path).name() == QLatin1String("application/x-navi-animation")) { + QImageReader reader(path, "ani"); + return reader.read(&img); + } + + return false; + +} diff --git a/thumbnail/windowsimagecreator.h b/thumbnail/windowsimagecreator.h new file mode 100644 index 0000000..0f05544 --- /dev/null +++ b/thumbnail/windowsimagecreator.h @@ -0,0 +1,21 @@ +/* + windowsimagecreator.h - Thumbnail Creator for Microsoft Windows Images + + SPDX-FileCopyrightText: 2009-2010 Pali Rohár + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#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..208e333 --- /dev/null +++ b/thumbnail/windowsimagethumbnail.desktop @@ -0,0 +1,77 @@ +[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[ta]=மைக்ரோசாப்ட் விண்டோஸ் படங்கள் +Name[tg]=Тасвирҳои Microsoft Windows +Name[th]=แฟ้มภาพต่าง ๆ ของระบบวินโดวส์ +Name[tr]=Microsoft Windows Resimleri +Name[ug]=Microsoft Windows سۈرەتلەر +Name[uk]=Зображення Microsoft Windows +Name[vi]=Ảnh Windows Microsoft +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 -- 2.30.2