diff --git a/.gitignore b/.gitignore index c67ed22..43265d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/libdnf-0.22.5.tar.gz +SOURCES/libdnf-0.35.1.tar.gz diff --git a/.libdnf.metadata b/.libdnf.metadata index cecb49a..8d58f55 100644 --- a/.libdnf.metadata +++ b/.libdnf.metadata @@ -1 +1 @@ -d456a4e02426c4fb837d85bfcfb2645ecb4d0788 SOURCES/libdnf-0.22.5.tar.gz +91fcde5c3c2e716bc3baad1e9be118f51effac13 SOURCES/libdnf-0.35.1.tar.gz diff --git a/SOURCES/0001-Add-best-as-default-behavior-RhBug16707761671683.patch b/SOURCES/0001-Add-best-as-default-behavior-RhBug16707761671683.patch deleted file mode 100644 index e96d84d..0000000 --- a/SOURCES/0001-Add-best-as-default-behavior-RhBug16707761671683.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 9309e92332241ff1113433057c969cebf127734e Mon Sep 17 00:00:00 2001 -From: Jaroslav Mracek -Date: Mon, 4 Feb 2019 16:11:18 +0100 -Subject: [PATCH] Add best as default behavior (RhBug:1670776,1671683) - ---- - libdnf/conf/ConfigMain.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libdnf/conf/ConfigMain.cpp b/libdnf/conf/ConfigMain.cpp -index 281d928..6964f3e 100644 ---- a/libdnf/conf/ConfigMain.cpp -+++ b/libdnf/conf/ConfigMain.cpp -@@ -284,7 +284,7 @@ class ConfigMain::Impl { - OptionEnum multilib_policy{"best", {"best", "all"}}; // :api - OptionBinding multilibPolicyBinding{owner, multilib_policy, "multilib_policy"}; - -- OptionBool best{false}; // :api -+ OptionBool best{true}; // :api - OptionBinding bestBinding{owner, best, "best"}; - - OptionBool install_weak_deps{true}; --- -libgit2 0.27.7 - diff --git a/SOURCES/0002-Add-support-for-Module-advisories.patch b/SOURCES/0002-Add-support-for-Module-advisories.patch deleted file mode 100644 index 5c74a78..0000000 --- a/SOURCES/0002-Add-support-for-Module-advisories.patch +++ /dev/null @@ -1,274 +0,0 @@ -From 27112644c0e17510fa8e07ba4949b9fbd89655bc Mon Sep 17 00:00:00 2001 -From: Jaroslav Mracek -Date: Thu, 17 Jan 2019 16:04:48 +0100 -Subject: [PATCH] Add support for Module advisories - ---- - libdnf/sack/CMakeLists.txt | 1 + - libdnf/sack/advisory.cpp | 21 +++++++++++++++++++++ - libdnf/sack/advisory.hpp | 2 ++ - libdnf/sack/advisorymodule.cpp | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - libdnf/sack/advisorymodule.hpp | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 195 insertions(+) - create mode 100644 libdnf/sack/advisorymodule.cpp - create mode 100644 libdnf/sack/advisorymodule.hpp - -diff --git a/libdnf/sack/CMakeLists.txt b/libdnf/sack/CMakeLists.txt -index e1c6be1..9921c74 100644 ---- a/libdnf/sack/CMakeLists.txt -+++ b/libdnf/sack/CMakeLists.txt -@@ -1,6 +1,7 @@ - SET (SACK_SOURCES - ${SACK_SOURCES} - ${CMAKE_CURRENT_SOURCE_DIR}/advisory.cpp -+ ${CMAKE_CURRENT_SOURCE_DIR}/advisorymodule.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/advisorypkg.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/advisoryref.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/packageset.cpp -diff --git a/libdnf/sack/advisory.cpp b/libdnf/sack/advisory.cpp -index d006bcc..bb9e7f4 100644 ---- a/libdnf/sack/advisory.cpp -+++ b/libdnf/sack/advisory.cpp -@@ -24,6 +24,7 @@ - - #include "advisory.hpp" - #include "advisorypkg.hpp" -+#include "advisorymodule.hpp" - #include "advisoryref.hpp" - #include "../dnf-advisory-private.hpp" - #include "../dnf-advisoryref.h" -@@ -133,6 +134,26 @@ Advisory::getPackages(std::vector & pkglist, bool withFilemanes) co - dataiterator_free(&di); - } - -+std::vector Advisory::getModules() const -+{ -+ std::vector moduleList; -+ Dataiterator di; -+ Pool *pool = dnf_sack_get_pool(sack); -+ -+ dataiterator_init(&di, pool, 0, advisory, UPDATE_MODULE, 0, 0); -+ while (dataiterator_step(&di)) { -+ dataiterator_setpos(&di); -+ Id name = pool_lookup_id(pool, SOLVID_POS, UPDATE_MODULE_NAME); -+ Id stream = pool_lookup_id(pool, SOLVID_POS, UPDATE_MODULE_STREAM); -+ Id version = pool_lookup_id(pool, SOLVID_POS, UPDATE_MODULE_VERSION); -+ Id context = pool_lookup_id(pool, SOLVID_POS, UPDATE_MODULE_CONTEXT); -+ Id arch = pool_lookup_id(pool, SOLVID_POS, UPDATE_MODULE_ARCH); -+ moduleList.emplace_back(sack, advisory, name, stream, version, context, arch); -+ } -+ dataiterator_free(&di); -+ return moduleList; -+} -+ - void - Advisory::getReferences(std::vector & reflist) const - { -diff --git a/libdnf/sack/advisory.hpp b/libdnf/sack/advisory.hpp -index 3771257..5aa8dc6 100644 ---- a/libdnf/sack/advisory.hpp -+++ b/libdnf/sack/advisory.hpp -@@ -33,15 +33,17 @@ - namespace libdnf { - - struct AdvisoryPkg; -+struct AdvisoryModule; - - struct Advisory { - public: - Advisory(DnfSack *sack, Id advisory); - bool operator ==(const Advisory & other) const; - const char *getDescription() const; - DnfAdvisoryKind getKind() const; - const char *getName() const; - void getPackages(std::vector & pkglist, bool withFilemanes = true) const; -+ std::vector getModules() const; - void getReferences(std::vector & reflist) const; - const char *getRights() const; - const char *getSeverity() const; -diff --git a/libdnf/sack/advisorymodule.cpp b/libdnf/sack/advisorymodule.cpp -new file mode 100644 -index 0000000..a209b5f ---- /dev/null -+++ b/libdnf/sack/advisorymodule.cpp -@@ -0,0 +1,113 @@ -+/* -+ * Copyright (C) 2019 Red Hat, Inc. -+ * -+ * Licensed under the GNU Lesser General Public License Version 2.1 -+ * -+ * 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 -+ */ -+ -+#include -+ -+#include -+ -+#include "advisory.hpp" -+#include "advisorymodule.hpp" -+#include "../dnf-sack-private.hpp" -+ -+namespace libdnf { -+ -+class AdvisoryModule::Impl { -+private: -+ friend AdvisoryModule; -+ DnfSack *sack; -+ Id advisory; -+ Id name; -+ Id stream; -+ Id version; -+ Id context; -+ Id arch; -+}; -+ -+AdvisoryModule::AdvisoryModule(DnfSack *sack, Id advisory, Id name, Id stream, Id version, Id context, Id arch) : pImpl(new Impl) -+{ -+ pImpl->sack = sack; -+ pImpl->advisory = advisory; -+ pImpl->name = name; -+ pImpl->stream = stream; -+ pImpl->version = version; -+ pImpl->context = context; -+ pImpl->arch = arch; -+} -+AdvisoryModule::AdvisoryModule(const AdvisoryModule & src) : pImpl(new Impl) { *pImpl = *src.pImpl; } -+AdvisoryModule::AdvisoryModule(AdvisoryModule && src) : pImpl(new Impl) { pImpl.swap(src.pImpl); } -+AdvisoryModule::~AdvisoryModule() = default; -+ -+AdvisoryModule & AdvisoryModule::operator=(const AdvisoryModule & src) { *pImpl = *src.pImpl; return *this; } -+ -+AdvisoryModule & -+AdvisoryModule::operator=(AdvisoryModule && src) noexcept -+{ -+ pImpl.swap(src.pImpl); -+ return *this; -+} -+ -+bool -+AdvisoryModule::nsvcaEQ(AdvisoryModule & other) -+{ -+ return other.pImpl->name == pImpl->name && -+ other.pImpl->stream == pImpl->stream && -+ other.pImpl->version == pImpl->version && -+ other.pImpl->context == pImpl->context && -+ other.pImpl->arch == pImpl->arch; -+} -+ -+Advisory * AdvisoryModule::getAdvisory() const -+{ -+ return new Advisory(pImpl->sack, pImpl->advisory); -+} -+ -+const char * -+AdvisoryModule::getName() const -+{ -+ return pool_id2str(dnf_sack_get_pool(pImpl->sack), pImpl->name); -+} -+ -+const char * -+AdvisoryModule::getStream() const -+{ -+ return pool_id2str(dnf_sack_get_pool(pImpl->sack), pImpl->stream); -+} -+ -+const char * -+AdvisoryModule::getVersion() const -+{ -+ return pool_id2str(dnf_sack_get_pool(pImpl->sack), pImpl->version); -+} -+ -+const char * -+AdvisoryModule::getContext() const -+{ -+ return pool_id2str(dnf_sack_get_pool(pImpl->sack), pImpl->context); -+} -+ -+const char * -+AdvisoryModule::getArch() const -+{ -+ return pool_id2str(dnf_sack_get_pool(pImpl->sack), pImpl->arch); -+} -+ -+DnfSack * AdvisoryModule::getSack() { return pImpl->sack; } -+ -+} -diff --git a/libdnf/sack/advisorymodule.hpp b/libdnf/sack/advisorymodule.hpp -new file mode 100644 -index 0000000..1ad1ea7 ---- /dev/null -+++ b/libdnf/sack/advisorymodule.hpp -@@ -0,0 +1,58 @@ -+/* -+ * Copyright (C) 2019 Red Hat, Inc. -+ * -+ * Licensed under the GNU Lesser General Public License Version 2.1 -+ * -+ * 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 -+ */ -+ -+ -+#ifndef __ADVISORY_MODULE_HPP -+#define __ADVISORY_MODULE_HPP -+ -+#include -+ -+#include -+#include -+ -+#include "../dnf-types.h" -+#include "advisory.hpp" -+ -+namespace libdnf { -+ -+struct AdvisoryModule { -+public: -+ AdvisoryModule(DnfSack *sack, Id advisory, Id name, Id stream, Id version, Id context, Id arch); -+ AdvisoryModule(const AdvisoryModule & src); -+ AdvisoryModule(AdvisoryModule && src); -+ ~AdvisoryModule(); -+ AdvisoryModule & operator=(const AdvisoryModule & src); -+ AdvisoryModule & operator=(AdvisoryModule && src) noexcept; -+ bool nsvcaEQ(AdvisoryModule & other); -+ Advisory * getAdvisory() const; -+ const char * getName() const; -+ const char * getStream() const; -+ const char * getVersion() const; -+ const char * getContext() const; -+ const char * getArch() const; -+ DnfSack * getSack(); -+private: -+ class Impl; -+ std::unique_ptr pImpl; -+}; -+ -+} -+ -+#endif /* __ADVISORY_MODULE_HPP */ --- -libgit2 0.27.7 - diff --git a/SOURCES/0002-Fix-attaching-and-detaching-of-libsolvRepo.patch b/SOURCES/0002-Fix-attaching-and-detaching-of-libsolvRepo.patch new file mode 100644 index 0000000..29e542a --- /dev/null +++ b/SOURCES/0002-Fix-attaching-and-detaching-of-libsolvRepo.patch @@ -0,0 +1,265 @@ +From d267539801ce0a32392d3a86d94e6ea37b6dc2ba Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Fri, 12 Jul 2019 06:51:25 +0200 +Subject: [PATCH 1/5] [context] Fix: Correctly detach libsolv repo + (RhBug:1727343) + +Seting repoImpl->libsolvRepo = nullptr and repoImpl->nrefs = 1 is not sufficient. +The libsolvRepo inernally points back to us. And during destroying +it destroy us too because nrefs was set to 1. +Solution is to do full detach using detachLibsolvRepo(). + +It fixes https://bugzilla.redhat.com/show_bug.cgi?id=1727343 +and probably https://bugzilla.redhat.com/show_bug.cgi?id=1727424 +--- + libdnf/dnf-repo.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp +index a358356a9..45c6c7e5b 100644 +--- a/libdnf/dnf-repo.cpp ++++ b/libdnf/dnf-repo.cpp +@@ -1403,9 +1403,9 @@ dnf_repo_check_internal(DnfRepo *repo, + } + + /* init */ +- repoImpl->libsolvRepo = nullptr; ++ if (repoImpl->libsolvRepo) ++ repoImpl->detachLibsolvRepo(); + repoImpl->needs_internalizing = false; +- repoImpl->nrefs = 1; + repoImpl->state_main = _HY_NEW; + repoImpl->state_filelists = _HY_NEW; + repoImpl->state_presto = _HY_NEW; + +From f1e2e534d7d375d051c4eae51431c5bb3649f9f1 Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Fri, 12 Jul 2019 07:59:15 +0200 +Subject: [PATCH 2/5] [Repo] Remove unused delReference + +--- + libdnf/repo/Repo.cpp | 7 ------- + libdnf/repo/Repo.hpp | 2 -- + 2 files changed, 9 deletions(-) + +diff --git a/libdnf/repo/Repo.cpp b/libdnf/repo/Repo.cpp +index 23638839a..fd2415fa5 100644 +--- a/libdnf/repo/Repo.cpp ++++ b/libdnf/repo/Repo.cpp +@@ -1441,13 +1441,6 @@ std::vector Repo::getMirrors() const + return mirrors; + } + +-void Repo::delReference() +-{ +- if (--pImpl->nrefs > 0) +- return; +- delete this; +-} +- + int PackageTargetCB::end(TransferStatus status, const char * msg) { return 0; } + int PackageTargetCB::progress(double totalToDownload, double downloaded) { return 0; } + int PackageTargetCB::mirrorFailure(const char *msg, const char *url) { return 0; } +diff --git a/libdnf/repo/Repo.hpp b/libdnf/repo/Repo.hpp +index cbf4ed147..785c6e9d5 100644 +--- a/libdnf/repo/Repo.hpp ++++ b/libdnf/repo/Repo.hpp +@@ -275,8 +275,6 @@ struct Repo { + + ~Repo(); + +- void delReference(); +- + class Impl; + private: + friend struct PackageTarget; + +From 4c35d135bc79939d58844e99e0d5ed924ba86fd5 Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Fri, 12 Jul 2019 08:50:54 +0200 +Subject: [PATCH 3/5] [Repo] Add locking and asserts + +Add locking and asserts into attachLibsolvRepo(), detachLibsolvRepo() +and hy_repo_free() +--- + libdnf/dnf-repo.cpp | 3 +-- + libdnf/repo/Repo-private.hpp | 5 +++++ + libdnf/repo/Repo.cpp | 34 ++++++++++++++++++++++++++-------- + 3 files changed, 32 insertions(+), 10 deletions(-) + +diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp +index 45c6c7e5b..c30d99d17 100644 +--- a/libdnf/dnf-repo.cpp ++++ b/libdnf/dnf-repo.cpp +@@ -1403,8 +1403,7 @@ dnf_repo_check_internal(DnfRepo *repo, + } + + /* init */ +- if (repoImpl->libsolvRepo) +- repoImpl->detachLibsolvRepo(); ++ repoImpl->detachLibsolvRepo(); + repoImpl->needs_internalizing = false; + repoImpl->state_main = _HY_NEW; + repoImpl->state_filelists = _HY_NEW; +diff --git a/libdnf/repo/Repo-private.hpp b/libdnf/repo/Repo-private.hpp +index 23acf3622..333eb7bfd 100644 +--- a/libdnf/repo/Repo-private.hpp ++++ b/libdnf/repo/Repo-private.hpp +@@ -43,6 +43,7 @@ + + #include + #include ++#include + #include + + #include +@@ -177,6 +178,10 @@ class Repo::Impl { + int main_nrepodata{0}; + int main_end{0}; + ++ // Lock attachLibsolvRepo(), detachLibsolvRepo() and hy_repo_free() to ensure atomic behavior ++ // in threaded environment such as PackageKit. ++ std::mutex attachLibsolvMutex; ++ + private: + Repo * owner; + std::unique_ptr lrHandlePerform(LrHandle * handle, const std::string & destDirectory, +diff --git a/libdnf/repo/Repo.cpp b/libdnf/repo/Repo.cpp +index fd2415fa5..86531fe9b 100644 +--- a/libdnf/repo/Repo.cpp ++++ b/libdnf/repo/Repo.cpp +@@ -60,7 +60,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -1335,8 +1334,10 @@ LrHandle * Repo::Impl::getCachedHandle() + + void Repo::Impl::attachLibsolvRepo(LibsolvRepo * libsolvRepo) + { ++ std::lock_guard guard(attachLibsolvMutex); ++ assert(!this->libsolvRepo); + ++nrefs; +- libsolvRepo->appdata = owner; ++ libsolvRepo->appdata = owner; // The libsolvRepo references back to us. + libsolvRepo->subpriority = -owner->getCost(); + libsolvRepo->priority = -owner->getPriority(); + this->libsolvRepo = libsolvRepo; +@@ -1344,11 +1345,23 @@ void Repo::Impl::attachLibsolvRepo(LibsolvRepo * libsolvRepo) + + void Repo::Impl::detachLibsolvRepo() + { +- libsolvRepo->appdata = nullptr; +- if (--nrefs > 0) +- this->libsolvRepo = nullptr; +- else ++ attachLibsolvMutex.lock(); ++ if (!libsolvRepo) { ++ // Nothing to do, libsolvRepo is not attached. ++ attachLibsolvMutex.unlock(); ++ return; ++ } ++ ++ libsolvRepo->appdata = nullptr; // Removes reference to this object from libsolvRepo. ++ this->libsolvRepo = nullptr; ++ ++ if (--nrefs <= 0) { ++ // There is no reference to this object, we are going to destroy it. ++ // Mutex is part of this object, we must unlock it before destroying. ++ attachLibsolvMutex.unlock(); + delete owner; ++ } else ++ attachLibsolvMutex.unlock(); + } + + void Repo::setMaxMirrorTries(int maxMirrorTries) +@@ -2057,7 +2070,12 @@ hy_repo_get_string(HyRepo repo, int which) + void + hy_repo_free(HyRepo repo) + { +- if (--libdnf::repoGetImpl(repo)->nrefs > 0) +- return; ++ auto repoImpl = libdnf::repoGetImpl(repo); ++ { ++ std::lock_guard guard(repoImpl->attachLibsolvMutex); ++ if (--repoImpl->nrefs > 0) ++ return; // There is still a reference to this object. Don't destroy it. ++ } ++ assert(!repoImpl->libsolvRepo); + delete repo; + } + +From 3a61d4c590612427bfeb7302236e4429acae90b0 Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Fri, 12 Jul 2019 11:21:48 +0200 +Subject: [PATCH 4/5] Fix: crash in repo_internalize_trigger() without HyRepo + attached + +The repo_internalize_trigger() uses needs_internalizing from HyRepo. +If HyRepo is not attached we will assume needs_internalizing==true. +--- + libdnf/repo/Repo.cpp | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/libdnf/repo/Repo.cpp b/libdnf/repo/Repo.cpp +index 86531fe9b..210ecde8f 100644 +--- a/libdnf/repo/Repo.cpp ++++ b/libdnf/repo/Repo.cpp +@@ -1826,15 +1826,19 @@ repo_internalize_all_trigger(Pool *pool) + void + repo_internalize_trigger(Repo * repo) + { +- if (repo) { +- auto hrepo = static_cast(repo->appdata); ++ if (!repo) ++ return; ++ ++ if (auto hrepo = static_cast(repo->appdata)) { ++ // HyRepo is attached. The hint needs_internalizing will be used. + auto repoImpl = libdnf::repoGetImpl(hrepo); + assert(repoImpl->libsolvRepo == repo); + if (!repoImpl->needs_internalizing) + return; + repoImpl->needs_internalizing = false; +- repo_internalize(repo); + } ++ ++ repo_internalize(repo); + } + + void + +From e4cabf803e1dbb6283330636d06ccb4a26e89ad4 Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Sun, 14 Jul 2019 10:45:27 +0200 +Subject: [PATCH 5/5] [Repo] attachLibsolvRepo() can reattach repo to another + libsolvRepo + +--- + libdnf/repo/Repo.cpp | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/libdnf/repo/Repo.cpp b/libdnf/repo/Repo.cpp +index 210ecde8f..70c6a7411 100644 +--- a/libdnf/repo/Repo.cpp ++++ b/libdnf/repo/Repo.cpp +@@ -1335,8 +1335,14 @@ LrHandle * Repo::Impl::getCachedHandle() + void Repo::Impl::attachLibsolvRepo(LibsolvRepo * libsolvRepo) + { + std::lock_guard guard(attachLibsolvMutex); +- assert(!this->libsolvRepo); +- ++nrefs; ++ ++ if (this->libsolvRepo) ++ // A libsolvRepo was attached to this object before. Remove it's reference to this object. ++ this->libsolvRepo->appdata = nullptr; ++ else ++ // The libsolvRepo will reference this object. Increase reference counter. ++ ++nrefs; ++ + libsolvRepo->appdata = owner; // The libsolvRepo references back to us. + libsolvRepo->subpriority = -owner->getCost(); + libsolvRepo->priority = -owner->getPriority(); diff --git a/SOURCES/0003-Add-setter-of-ModuleContainer-for-PySack.patch b/SOURCES/0003-Add-setter-of-ModuleContainer-for-PySack.patch deleted file mode 100644 index b81443e..0000000 --- a/SOURCES/0003-Add-setter-of-ModuleContainer-for-PySack.patch +++ /dev/null @@ -1,150 +0,0 @@ -From a610bc80c2b798d83737aaaa759f1799b24f3a57 Mon Sep 17 00:00:00 2001 -From: Jaroslav Mracek -Date: Fri, 1 Feb 2019 14:37:35 +0100 -Subject: [PATCH] Add setter of ModuleContainer for PySack - ---- - libdnf/dnf-sack-private.hpp | 3 ++- - libdnf/dnf-sack.cpp | 19 +++++++++++++++++++ - python/hawkey/sack-py.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++++++- - 3 files changed, 68 insertions(+), 2 deletions(-) - -diff --git a/libdnf/dnf-sack-private.hpp b/libdnf/dnf-sack-private.hpp -index b058126..45241c4 100644 ---- a/libdnf/dnf-sack-private.hpp -+++ b/libdnf/dnf-sack-private.hpp -@@ -57,7 +57,8 @@ int dnf_sack_get_pool_nsolvables(DnfSack *sack); - * @return Map* - */ - libdnf::PackageSet *dnf_sack_get_pkg_solvables(DnfSack *sack); -- -+ModulePackageContainer * dnf_sack_set_module_container( -+ DnfSack *sack, ModulePackageContainer * newConteiner); - ModulePackageContainer * dnf_sack_get_module_container(DnfSack *sack); - void dnf_sack_make_provides_ready (DnfSack *sack); - Id dnf_sack_running_kernel (DnfSack *sack); -diff --git a/libdnf/dnf-sack.cpp b/libdnf/dnf-sack.cpp -index fb56937..43bb977 100644 ---- a/libdnf/dnf-sack.cpp -+++ b/libdnf/dnf-sack.cpp -@@ -2006,6 +2006,25 @@ dnf_sack_get_pool(DnfSack *sack) - } - - /** -+ * dnf_sack_set_module_container: (skip) -+ * @sack: a #DnfSack instance. -+ * -+ * Setss the internal ModulePackageContainer. -+ * -+ * Returns: The old ModulePackageContainer, that has to be freed manually. -+ * -+ * Since: 0.25.0 -+ */ -+ModulePackageContainer * -+dnf_sack_set_module_container(DnfSack *sack, ModulePackageContainer * newConteiner) -+{ -+ DnfSackPrivate *priv = GET_PRIVATE(sack); -+ auto oldConteiner = priv->moduleContainer; -+ priv->moduleContainer = newConteiner; -+ return oldConteiner; -+} -+ -+/** - * dnf_sack_get_module_container: (skip) - * @sack: a #DnfSack instance. - * -diff --git a/python/hawkey/sack-py.cpp b/python/hawkey/sack-py.cpp -index e925346..7f97075 100644 ---- a/python/hawkey/sack-py.cpp -+++ b/python/hawkey/sack-py.cpp -@@ -27,6 +27,7 @@ - #include "hy-util.h" - #include "dnf-version.h" - #include "dnf-sack-private.hpp" -+#include "libdnf/module/ModulePackageContainer.hpp" - - // pyhawkey - #include "exception-py.hpp" -@@ -47,6 +48,7 @@ typedef struct { - DnfSack *sack; - PyObject *custom_package_class; - PyObject *custom_package_val; -+ PyObject * ModulePackageContainerPy; - FILE *log_out; - } _SackObject; - -@@ -119,8 +121,13 @@ sack_dealloc(_SackObject *o) - { - Py_XDECREF(o->custom_package_class); - Py_XDECREF(o->custom_package_val); -- if (o->sack) -+ if (o->sack) { -+ if (auto moduleContainer = o->ModulePackageContainerPy) { -+ dnf_sack_set_module_container(o->sack, NULL); -+ Py_DECREF(moduleContainer); -+ } - g_object_unref(o->sack); -+ } - if (o->log_out) - fclose(o->log_out); - Py_TYPE(o)->tp_free(o); -@@ -135,6 +142,7 @@ sack_new(PyTypeObject *type, PyObject *args, PyObject *kwds) - self->sack = NULL; - self->custom_package_class = NULL; - self->custom_package_val = NULL; -+ self->ModulePackageContainerPy = NULL; - } - return (PyObject *)self; - } -@@ -324,10 +332,48 @@ set_installonly_limit(_SackObject *self, PyObject *obj, void *unused) - return 0; - } - -+static int -+set_module_container(_SackObject *self, PyObject *obj, void *unused) -+{ -+ auto swigContainer = reinterpret_cast< ModulePackageContainerPyObject * >( -+ PyObject_GetAttrString(obj, "this")); -+ if (swigContainer == nullptr) { -+ PyErr_SetString(PyExc_SystemError, "Unable to parse ModuleContainer object"); -+ return -1; -+ } -+ auto moduleContainer = swigContainer->ptr; -+ auto sack = self->sack; -+ if (auto oldConteynerPy = self->ModulePackageContainerPy) { -+ Py_XDECREF(oldConteynerPy); -+ auto oldContainer = dnf_sack_set_module_container(sack, moduleContainer); -+ } else { -+ auto oldContainer = dnf_sack_set_module_container(sack, moduleContainer); -+ if (oldContainer) { -+ delete oldContainer; -+ } -+ } -+ self->ModulePackageContainerPy = obj; -+ Py_INCREF(obj); -+ -+ return 0; -+} -+ -+static PyObject * -+get_module_container(_SackObject *self, void *unused) -+{ -+ if (auto moduleConteinerPy = self->ModulePackageContainerPy) { -+ Py_INCREF(moduleConteinerPy); -+ return moduleConteinerPy; -+ } -+ Py_RETURN_NONE; -+} -+ - static PyGetSetDef sack_getsetters[] = { - {(char*)"cache_dir", (getter)get_cache_dir, NULL, NULL, NULL}, - {(char*)"installonly", NULL, (setter)set_installonly, NULL, NULL}, - {(char*)"installonly_limit", NULL, (setter)set_installonly_limit, NULL, NULL}, -+ {(char*)"_moduleContainer", (getter)get_module_container, (setter)set_module_container, -+ NULL, NULL}, - {NULL} /* sentinel */ - }; - --- -libgit2 0.27.7 - diff --git a/SOURCES/0003-Typo-in-error-message-RhBug1726661.patch b/SOURCES/0003-Typo-in-error-message-RhBug1726661.patch new file mode 100644 index 0000000..a50041b --- /dev/null +++ b/SOURCES/0003-Typo-in-error-message-RhBug1726661.patch @@ -0,0 +1,26 @@ +From b84fe340840169d201714a5b3a015b9d1142013c Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Wed, 3 Jul 2019 13:48:58 +0200 +Subject: [PATCH] Typo in error message (RhBug:1726661) + +https://bugzilla.redhat.com/show_bug.cgi?id=1726661 +--- + libdnf/module/ModulePackageContainer.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libdnf/module/ModulePackageContainer.cpp b/libdnf/module/ModulePackageContainer.cpp +index ddef174..1c8e0d5 100644 +--- a/libdnf/module/ModulePackageContainer.cpp ++++ b/libdnf/module/ModulePackageContainer.cpp +@@ -1637,7 +1637,7 @@ void ModulePackageContainer::updateFailSafeData() + if (!updateFile(filePath, modulePackage->getYaml().c_str())) { + auto logger(Log::getLogger()); + logger->debug(tfm::format( +- _("Unable to safe a modular Fail Safe data to '%s'"), filePath)); ++ _("Unable to save a modular Fail Safe data to '%s'"), filePath)); + } + } + +-- +libgit2 0.28.2 + diff --git a/SOURCES/0004-Add-testing-if-advisory-is-applicable-for-query-and-package.patch b/SOURCES/0004-Add-testing-if-advisory-is-applicable-for-query-and-package.patch deleted file mode 100644 index 186ad64..0000000 --- a/SOURCES/0004-Add-testing-if-advisory-is-applicable-for-query-and-package.patch +++ /dev/null @@ -1,154 +0,0 @@ -From 4a7556fb53b49ed7e03323913af87998bd48b2b1 Mon Sep 17 00:00:00 2001 -From: Jaroslav Mracek -Date: Tue, 5 Feb 2019 08:58:11 +0100 -Subject: [PATCH] Add testing if advisory is applicable for query and package - ---- - libdnf/hy-package.cpp | 5 ++++- - libdnf/sack/query.cpp | 16 +++++++++++----- - libdnf/utils/utils.cpp | 28 ++++++++++++++++++++++++++++ - libdnf/utils/utils.hpp | 5 +++++ - 4 files changed, 48 insertions(+), 6 deletions(-) - -diff --git a/libdnf/hy-package.cpp b/libdnf/hy-package.cpp -index 833e082..62f4bb6 100644 ---- a/libdnf/hy-package.cpp -+++ b/libdnf/hy-package.cpp -@@ -29,6 +29,7 @@ - * See also: #DnfContext - */ - -+#include "libdnf/utils/utils.hpp" - - #include - #include -@@ -1015,7 +1016,9 @@ dnf_package_get_advisories(DnfPackage *pkg, int cmp_type) - (cmp < 0 && (cmp_type & HY_LT)) || - (cmp == 0 && (cmp_type & HY_EQ))) { - advisory = dnf_advisory_new(sack, di.solvid); -- g_ptr_array_add(advisorylist, advisory); -+ if (libdnf::isAdvisoryApplicable(*advisory, sack)) { -+ g_ptr_array_add(advisorylist, advisory); -+ } - dataiterator_skip_solvable(&di); - } - } -diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp -index f1e1076..b3029e2 100644 ---- a/libdnf/sack/query.cpp -+++ b/libdnf/sack/query.cpp -@@ -18,6 +18,8 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -+#include "libdnf/utils/utils.hpp" -+ - #include - #include - #include -@@ -1518,7 +1520,9 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) - eq = false; - } - if (eq) { -- advisory.getPackages(pkgs, false); -+ if (isAdvisoryApplicable(advisory, sack)) { -+ advisory.getPackages(pkgs, false); -+ } - break; - } - } -@@ -2049,18 +2053,20 @@ void - Query::getAdvisoryPkgs(int cmpType, std::vector & advisoryPkgs) - { - apply(); -- Pool *pool = dnf_sack_get_pool(pImpl->sack); -+ auto sack = pImpl->sack; -+ Pool *pool = dnf_sack_get_pool(sack); - std::vector pkgs; - Dataiterator di; - auto resultPset = pImpl->result.get(); - - // iterate over advisories - dataiterator_init(&di, pool, 0, 0, 0, 0, 0); - dataiterator_prepend_keyname(&di, UPDATE_COLLECTION); - while (dataiterator_step(&di)) { -- Advisory advisory(pImpl->sack, di.solvid); -- -- advisory.getPackages(pkgs); -+ Advisory advisory(sack, di.solvid); -+ if (isAdvisoryApplicable(advisory, sack)) { -+ advisory.getPackages(pkgs); -+ } - dataiterator_skip_solvable(&di); - } - dataiterator_free(&di); -diff --git a/libdnf/utils/utils.cpp b/libdnf/utils/utils.cpp -index a1ffb49..3833614 100644 ---- a/libdnf/utils/utils.cpp -+++ b/libdnf/utils/utils.cpp -@@ -1,4 +1,6 @@ - #include "utils.hpp" -+#include "libdnf/dnf-sack-private.hpp" -+#include "libdnf/sack/advisorymodule.hpp" - - #include - #include -@@ -10,6 +12,32 @@ - #include - #include - -+bool libdnf::isAdvisoryApplicable(libdnf::Advisory & advisory, DnfSack * sack) -+{ -+ auto moduleContainer = dnf_sack_get_module_container(sack); -+ if (!moduleContainer) { -+ return true; -+ } -+ auto moduleAdvisories = advisory.getModules(); -+ if (moduleAdvisories.empty()) { -+ return true; -+ } -+ for (auto & moduleAdvisory: moduleAdvisories) { -+ if (const char * name = moduleAdvisory.getName()) { -+ if (const char * stream = moduleAdvisory.getStream()) { -+ try { -+ if (moduleContainer->isEnabled(name, stream)) { -+ return true; -+ } -+ } catch (std::out_of_range) { -+ continue; -+ } -+ } -+ } -+ } -+ return false; -+} -+ - std::vector libdnf::string::split(const std::string &source, const char *delimiter, int maxSplit) - { - if (source.empty()) -diff --git a/libdnf/utils/utils.hpp b/libdnf/utils/utils.hpp -index aaab5b0..519339f 100644 ---- a/libdnf/utils/utils.hpp -+++ b/libdnf/utils/utils.hpp -@@ -1,6 +1,8 @@ - #ifndef LIBDNF_UTILS_HPP - #define LIBDNF_UTILS_HPP - -+#include "libdnf/sack/advisory.hpp" -+ - #include - #include - #include -@@ -25,6 +27,9 @@ private: - }; - - namespace libdnf { -+ -+bool isAdvisoryApplicable(Advisory & advisory, DnfSack * sack); -+ - namespace string { - inline std::string fromCstring(const char * cstring) { return cstring ? cstring : ""; } - std::vector split(const std::string &source, const char *delimiter, int maxSplit = -1); --- -libgit2 0.27.7 - diff --git a/SOURCES/0004-Update-localizations-from-zanata-RhBug1689991.patch b/SOURCES/0004-Update-localizations-from-zanata-RhBug1689991.patch new file mode 100644 index 0000000..06251fc --- /dev/null +++ b/SOURCES/0004-Update-localizations-from-zanata-RhBug1689991.patch @@ -0,0 +1,23829 @@ +From cbf3e2dcebfe9cd716110b7c3123214c5d18fcff Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Tue, 30 Jul 2019 08:25:21 +0200 +Subject: [PATCH] Update localizations from zanata (RhBug:1689991) + +https://bugzilla.redhat.com/show_bug.cgi?id=1689991 +--- + po/as.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/bg.po | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------- + po/bn.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/bn_IN.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/ca.po | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------- + po/cs.po | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------- + po/da.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/de.po | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------ + po/el.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/es.po | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------- + po/eu.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/fa.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/fi.po | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------- + po/fil.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/fr.po | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------- + po/fur.po | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------- + po/gu.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/hi.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/hu.po | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------- + po/ia.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/id.po | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------- + po/is.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/it.po | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------ + po/ja.po | 291 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------ + po/kn.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/ko.po | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------- + po/libdnf.pot | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/mai.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/ml.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/mr.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/nb.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/nl.po | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------- + po/or.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/pa.po | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------- + po/pl.po | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------- + po/pt.po | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------- + po/pt_BR.po | 209 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------ + po/ru.po | 209 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------ + po/sk.po | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------- + po/sq.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/sr.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/sr@latin.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/sv.po | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------- + po/ta.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/te.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/th.po | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- + po/tr.po | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------- + po/uk.po | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------- + po/zanata.xml | 2 +- + po/zh_CN.po | 292 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------- + po/zh_TW.po | 199 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------- + 51 files changed, 5516 insertions(+), 3639 deletions(-) + +diff --git a/po/as.po b/po/as.po +index ad5d049..fc7ada8 100644 +--- a/po/as.po ++++ b/po/as.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 02:50+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Assamese\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/bg.po b/po/bg.po +index 91e34c5..a01325a 100644 +--- a/po/bg.po ++++ b/po/bg.po +@@ -3,7 +3,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2016-11-21 05:57+0000\n" + "Last-Translator: Valentin Laskov \n" + "Language-Team: Bulgarian\n" +@@ -261,157 +261,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Не мога да сваля '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Провал при синхронизиране кеша за хранилище '%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -463,17 +473,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -574,65 +584,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -681,7 +718,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -715,59 +752,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -784,19 +821,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/bn.po b/po/bn.po +index d270bfd..b3cbb10 100644 +--- a/po/bn.po ++++ b/po/bn.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 02:51+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Bengali\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/bn_IN.po b/po/bn_IN.po +index e6cf9e7..4438305 100644 +--- a/po/bn_IN.po ++++ b/po/bn_IN.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 02:52+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Bengali (India)\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/ca.po b/po/ca.po +index 5996c18..ec8e0b0 100644 +--- a/po/ca.po ++++ b/po/ca.po +@@ -5,7 +5,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-10-24 09:32+0000\n" + "Last-Translator: Robert Antoni Buj Gelonch \n" + "Language-Team: Catalan\n" +@@ -263,159 +263,169 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "El dipòsit %s no té establerta cap rèplica o url base." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "No es pot trobar un url base vàlid per al dipòsit: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "La velocitat màxima de baixada és inferior que la mínima. Canvieu la " + "configuració de minrate o throttle" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "dipòsit: s'utilitza la memòria cau per: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "No es pot baixar «%s»: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "No s'ha pogut sincronitzar la memòria cau per al dipòsit «%s»" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "unitat desconeguda «%s»" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "el percentatge «%s» està fora de l'interval" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/cs.po b/po/cs.po +index 21170a5..b4bceef 100644 +--- a/po/cs.po ++++ b/po/cs.po +@@ -1,12 +1,11 @@ + # Zdenek , 2016. #zanata + # Zdenek , 2017. #zanata +-# Daniel Rusek , 2018. #zanata + # Jaroslav Rohel , 2018. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-07-22 10:24+0000\n" + "Last-Translator: Jaroslav Rohel \n" + "Language-Team: Czech\n" +@@ -264,160 +263,170 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "Operace by vedla k odstranění následujících chráněných balíčků: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "Repozitář %s nemá nastaveno žádné zrcadlo nebo baseurl." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Nelze najít platný baseURL pro repo: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "Maximální rychlost stahování je nižší než minimální. Změňte prosím " + "konfiguraci minrate nebo omezení" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "oživení: repozitář '%s' přeskočen, žádný MetaLink." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "oživení: repozitář '%s' přeskočen, žádný použitelný hash." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "oživení: selhalo pro '%s', neshodující se součet %s." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "oživení: '%s' může být oživen - kontrolní součty MetaLinku odpovídají." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "oživení: '%s' může být oživen - repomd se shoduje." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "oživení: selhalo pro '%s', neshodující se repomd." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repozitář: použití mezipaměti pro: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "Povoleno použítí jen mezipaměti, ale žádná vyrovnávací paměť pro '%s'" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Nelze stáhnout '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Chyba synchronizace mezipaměti pro repozitář '%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -469,17 +478,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -580,65 +589,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -687,7 +723,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "neznámá jednotka '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "Procento '%s' je mimo rozsah" +@@ -721,59 +757,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -790,19 +826,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/da.po b/po/da.po +index 1ee1a8f..57aaa59 100644 +--- a/po/da.po ++++ b/po/da.po +@@ -4,7 +4,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-01-29 03:07+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Danish\n" +@@ -262,157 +262,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Kan ikke downloade '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -464,17 +474,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -575,65 +585,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -682,7 +719,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "ukendt enhed '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -716,59 +753,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -785,19 +822,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/de.po b/po/de.po +index a261dd5..3e93104 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-11-02 05:26+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: German\n" +@@ -22,40 +22,43 @@ msgstr "" + #: ../libdnf/hy-iutil.cpp:316 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" +-msgstr "" ++msgstr "Umbenennung fehlgeschlagen %1$s zu %2$s: %3$s" + + #: ../libdnf/hy-iutil.cpp:324 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" +-msgstr "" ++msgstr "Fehler beim Setzen der Perms %1$s: %2$s" + + #: ../libdnf/dnf-goal.cpp:67 + msgid "Could not depsolve transaction; " +-msgstr "" ++msgstr "Transaktion konnte nicht getrennt werden; " + + #: ../libdnf/dnf-goal.cpp:69 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" +-msgstr[0] "" ++msgstr[0] "%i Problem erkannt:\n" ++msgstr[1] "%i erkannte Probleme:\n" + + #: ../libdnf/dnf-goal.cpp:77 + #, c-format + msgid " Problem %1$i: %2$s\n" +-msgstr "" ++msgstr " Problem %1$i: %2$s\n" + + #: ../libdnf/dnf-goal.cpp:79 + #, c-format + msgid " Problem: %s\n" +-msgstr "" ++msgstr " Problem: %s\n" + + #: ../libdnf/goal/Goal.cpp:55 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" + msgstr "" ++"Falsch geformter Selector, Vorhandensein mehrerer Übereinstimmungsobjekte im" ++" Filter" + + #: ../libdnf/goal/Goal.cpp:56 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" +-msgstr "" ++msgstr "Falscher Selektor für den Vorgang, falscher Vergleichstyp" + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +@@ -237,193 +240,203 @@ msgstr "" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +-msgstr "" ++msgstr "Kein Löser eingestellt" + + #: ../libdnf/goal/Goal.cpp:999 + #, c-format + msgid "failed to make %s absolute" +-msgstr "" ++msgstr "gescheitert zu machen %s absolut" + + #: ../libdnf/goal/Goal.cpp:1006 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" +-msgstr "" ++msgstr "Fehler beim Schreiben von Debugdata %1$s: %2$s" + + #: ../libdnf/goal/Goal.cpp:1018 + msgid "no solv in the goal" +-msgstr "" ++msgstr "keine solv im ziel" + + #: ../libdnf/goal/Goal.cpp:1020 + msgid "no solution, cannot remove protected package" +-msgstr "" ++msgstr "Keine Lösung, geschütztes Paket kann nicht entfernt werden" + + #: ../libdnf/goal/Goal.cpp:1023 + msgid "no solution possible" +-msgstr "" ++msgstr "keine Lösung möglich" + + #: ../libdnf/goal/Goal.cpp:1429 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" ++"Die Operation würde zum Entfernen der folgenden geschützten Pakete führen: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" +-msgstr "" ++msgstr "Schlechte id für repo: %s, Byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + "Paketquelle %s weist keine Spiegelserver- oder Baseurl-Einstellung auf." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" ++msgstr "Repository '%s'hat nicht unterstützten Typ:' Typ =%s', überspringen." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Keine gültige baseurl gefunden für Paketquelle: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "Die maximale Downloadgeschwindigkeit liegt unter der minimalen " + "Downloadgeschwindigkeit. Bitte passen Sie die Einstellung von minrate oder " + "throttle an" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "kann keine Schlüssel auflisten: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "Repo %s: 0x%s bereits importiert" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "Repo %s: importierter Schlüssel 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "Widerbeleben: Paketquelle '%s' übersprungen, kein Metalink" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "Erneuern: Paketquelle '%s' übersprungen, kein benutzbarer Hash." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "Wiederbeleben: Fehler bei '%s', nicht passende %s Summe." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "Wiederbeleben: '%s' kann wiederbelebt werden - Metalink Prüfsumme gefunden." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "Erneuern: '%s' kann erneuert werden - repomd stimmt überein." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "Wiederbeleben: Fehler bei '%s', nicht übereinstimmende repomd" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "Repo-Verzeichnis kann nicht erstellt werden \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Verzeichnis kann nicht erstellt werden \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "Verzeichnis kann nicht umbenannt werden \"%s\"bis\"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "Paketquelle: Cache verwenden für: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "»Nur Cache« aktiviert, aber kein Cache für »%s«" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "Repo: Herunterladen von Remote: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Kann nicht herunterladen '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" +-"Zwischenspeicher für Paketquelle »%s« konnte nicht synchronisiert werden" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir (): Die Berechnung von SHA256 ist fehlgeschlagen" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + "resume kann nicht gleichzeitig mit dem byterangestart-param verwendet werden" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "Initialisierung von PackageTarget fehlgeschlagen: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "Nicht öffnen können %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Protokollhandler mit ID %ld existiert nicht" +@@ -479,17 +492,17 @@ msgstr "Nicht genügend Freiraum in %1$s: erforderlich %2$s, verfügbar %3$s" + msgid "failed to set root" + msgstr "root konnte nicht gesetzt werden" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "Error %i laufender Transaktionstest" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "Error %i laufende Transaktion" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -593,66 +606,93 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "Signatur überprüft nicht %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "Fehler beim Öffnen (generischer Fehler): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "konnte den Schlüssel für nicht bestätigen %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "öffentlicher Schlüssel nicht verfügbar für %s" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "Signatur für nicht gefunden %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "Installationselement konnte nicht hinzugefügt werden: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "Fehler beim Ausführen der Transaktion: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + "Fehler beim Ausführen der Transaktion und es wurden keine Probleme gemeldet!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "Schwerwiegender Fehler, Datenbankwiederherstellung durchführen" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "Paket konnte nicht gefunden werden %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "Erase Element konnte nicht hinzugefügt werden %1$s(%2$i)" +@@ -701,7 +741,7 @@ msgstr "konnte nicht konvertieren%s'in Bytes" + msgid "unknown unit '%s'" + msgstr "Unbekannte Einheit '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "Prozentsatz '%s' liegt außerhalb des zulässigen Bereichs" +@@ -736,59 +776,59 @@ msgstr "Konfiguration: OptionBinding mit ID \"%s\" ist bereits vorhanden" + msgid "could not convert '%s' to seconds" + msgstr "konnte nicht konvertieren%s'zu Sekunden" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "Nein %1$d Zeichenfolge für %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "konnte nicht hinzugefügt werden" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "Gescheitert zu öffnen: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "temporäre Datei kann nicht erstellt werden: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "Fehler beim Öffnen der tmp-Datei: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main () konnte Daten nicht schreiben: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main () konnte die geschriebene Solv-Datei nicht erneut laden" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "kann keine temporäre Datei erstellen %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext (%1$d) ist fehlgeschlagen: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "Null-Repo-MD-Datei" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "kann Datei nicht lesen %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() has failed." + +@@ -805,19 +845,19 @@ msgstr "Architektur konnte nicht automatisch erkannt werden" + msgid "failed creating cachedir %s" + msgstr "Fehler beim Erstellen von Cachedir %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "Fehler beim Berechnen der RPMDB-Prüfsumme" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "Fehler beim Laden der RPMDB" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "Transformer: kann nicht geöffnet werden" + +diff --git a/po/el.po b/po/el.po +index ad66edf..df30e86 100644 +--- a/po/el.po ++++ b/po/el.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 03:00+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Greek\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/es.po b/po/es.po +index 916e43f..1d82014 100644 +--- a/po/es.po ++++ b/po/es.po +@@ -2,13 +2,14 @@ + # Máximo Castañeda Riloba , 2017. #zanata + # Ludek Janda , 2018. #zanata + # Máximo Castañeda Riloba , 2018. #zanata ++# Ludek Janda , 2019. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" +-"PO-Revision-Date: 2018-11-12 11:34+0000\n" +-"Last-Translator: Máximo Castañeda Riloba \n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" ++"PO-Revision-Date: 2019-06-18 02:12+0000\n" ++"Last-Translator: Ludek Janda \n" + "Language-Team: Spanish\n" + "Language: es\n" + "MIME-Version: 1.0\n" +@@ -20,40 +21,42 @@ msgstr "" + #: ../libdnf/hy-iutil.cpp:316 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" +-msgstr "" ++msgstr "No se pudo renombrar %1$s a %2$s: %3$s" + + #: ../libdnf/hy-iutil.cpp:324 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" +-msgstr "" ++msgstr "No se pudieron cambiar los permisos para %1$s: %2$s" + + #: ../libdnf/dnf-goal.cpp:67 + msgid "Could not depsolve transaction; " +-msgstr "" ++msgstr "No se pudieron resolver las dependencias para la transacción; " + + #: ../libdnf/dnf-goal.cpp:69 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" +-msgstr[0] "" ++msgstr[0] "Detectado %i problema:\n" ++msgstr[1] "Detectados %i problemas:\n" + + #: ../libdnf/dnf-goal.cpp:77 + #, c-format + msgid " Problem %1$i: %2$s\n" +-msgstr "" ++msgstr " Problema %1$i: %2$s\n" + + #: ../libdnf/dnf-goal.cpp:79 + #, c-format + msgid " Problem: %s\n" +-msgstr "" ++msgstr " Problema: %s\n" + + #: ../libdnf/goal/Goal.cpp:55 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" +-msgstr "" ++msgstr "Selector mal formado; hay varios objetos de coincidencia en el filtro" + + #: ../libdnf/goal/Goal.cpp:56 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "" ++"Selector mal formado para la operación; tipo de comparación incorrecto" + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +@@ -235,189 +238,199 @@ msgstr "" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +-msgstr "" ++msgstr "no hay resolutor" + + #: ../libdnf/goal/Goal.cpp:999 + #, c-format + msgid "failed to make %s absolute" +-msgstr "" ++msgstr "no se pudo hacer %s absoluto" + + #: ../libdnf/goal/Goal.cpp:1006 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" +-msgstr "" ++msgstr "no se pudo escribir información de depuración en %1$s: %2$s" + + #: ../libdnf/goal/Goal.cpp:1018 + msgid "no solv in the goal" +-msgstr "" ++msgstr "no hay resolutor en el objetivo" + + #: ../libdnf/goal/Goal.cpp:1020 + msgid "no solution, cannot remove protected package" +-msgstr "" ++msgstr "no se encuentra solución; no se puede eliminar un paquete protegido" + + #: ../libdnf/goal/Goal.cpp:1023 + msgid "no solution possible" +-msgstr "" ++msgstr "no hay solución posible" + + #: ../libdnf/goal/Goal.cpp:1429 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "" ++msgstr "La operación eliminaría los siguientes paquetes protegidos: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" +-msgstr "" ++msgstr "ID incorrecto para repositorio: %s, byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "El repositorio %s no tiene espejos ni URL base." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" ++msgstr "El repository '%s' es de un tipo no admitido: 'type=%s', se omite." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "No se encuentra URL válida para el repositorio: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "La velocidad máxima de descarga es menor que la mínima. Cambie el ajuste de " + "minrate o throttle." + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "no se pueden obtener las claves: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: clave 0x%s ya importada" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: importada clave 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "reviving: omitido el repositorio '%s', no hay metalink." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "reviving: omitido el repositorio '%s', no se puede usar el hash." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "reviving: error para '%s', no coincide la suma %s." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "reviving: '%s' se puede reutilizar, las comprobaciones del metalink cuadran." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "reviving: '%s' se puede reutilizar, los metadatos coinciden." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "reviving: no se puede con '%s', los metadatos no coinciden." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "No se pudo crear el directorio temporal \"%s\" del repositorio: %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "No se pudo crear el directorio \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "No se pudo renombrar el directorio \"%s\" a \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo: se usa caché para %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "Se ha activado cache-only, pero no hay caché para '%s'." + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: descargando desde remoto: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "No se puede descargar '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "No se pudo sincronizar la caché para el repositorio '%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): Falló el cálculo de SHA256" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "no se puede usar resume con el parámetro byterangestart" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "Falló la inicialización de PackageTarget: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "No se pudo abrir %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "No hay gestor de informes con id %ld" +@@ -477,17 +490,17 @@ msgstr "" + msgid "failed to set root" + msgstr "no se pudo establecer la raíz" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "Error %i al ejecutar la prueba de transacción" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "Error %i al ejecutar transacción" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -590,67 +603,94 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "la firma no cuadra para %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "no se pudo abrir (error genérico): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "no se pudo verificar la clave para %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "clave pública no disponible para %s" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "no se encontró la firma para %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "no se pudo añadir el elemento de instalación: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "Error al ejecutar la transacción: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + "Se ha producido un error al ejecutar la transacción, pero no se ha informado" + " de problemas." + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "Error fatal, ejecute recuperación de la base de datos" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "no se encontró el paquete %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "no se pudo añadir elemento de borrado %1$s (%2$i)" +@@ -699,7 +739,7 @@ msgstr "no se pudo transformar '%s' en bytes" + msgid "unknown unit '%s'" + msgstr "unidad '%s' desconocida" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "el valor del porcentaje (%s) se encuentra fuera del rango aceptable" +@@ -733,60 +773,60 @@ msgstr "Configuración: ya existe OptionBinding con id \"%s\"" + msgid "could not convert '%s' to seconds" + msgstr "no se pudo convertir '%s' en segundos" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "no hay cadena %1$d para %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "no se pudo añadir resolutor" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "no se pudo abrir: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "no se pudo crear archivo temporal: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "no se pudo abrir archivo temporal: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "fallo en write_main() al escribir datos: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + "write_main () no pudo volver a cargar el archivo de resolución escrito" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "no se pudo crear archivo temporal %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "falló write_ext(%1$d): %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "nulo archivo md repo" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "no se pudo leer archivo %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "falló repo_add_solv()." + +@@ -803,19 +843,19 @@ msgstr "no se pudo detectar la arquitectura" + msgid "failed creating cachedir %s" + msgstr "no se pudo crear el directorio de caché %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "no se pudo calcular la suma de comprobación de RPMDB" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "no se pudo cargar la RPMDB" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "Transformador: no se puede abrir la historia." + +diff --git a/po/eu.po b/po/eu.po +index 82c5415..9277735 100644 +--- a/po/eu.po ++++ b/po/eu.po +@@ -3,7 +3,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2016-06-16 03:51+0000\n" + "Last-Translator: Asier Sarasua Garmendia \n" + "Language-Team: Basque\n" +@@ -261,157 +261,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Ezin da '%s' deskargatu: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -463,17 +473,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -574,65 +584,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -681,7 +718,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -715,59 +752,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -784,19 +821,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/fa.po b/po/fa.po +index 96ad151..772fedd 100644 +--- a/po/fa.po ++++ b/po/fa.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 03:05+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Persian\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/fi.po b/po/fi.po +index bc1945d..449e056 100644 +--- a/po/fi.po ++++ b/po/fi.po +@@ -4,7 +4,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2017-11-26 04:47+0000\n" + "Last-Translator: Jiri Grönroos \n" + "Language-Team: Finnish\n" +@@ -262,157 +262,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Ei voi ladata '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Välimuistin synkronointi epäonnistui asennuslähteen'%s' kanssa" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -464,17 +474,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -575,65 +585,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -682,7 +719,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "tuntematon yksikkö '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -716,59 +753,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -785,19 +822,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/fil.po b/po/fil.po +index 097e72f..f92e17a 100644 +--- a/po/fil.po ++++ b/po/fil.po +@@ -3,7 +3,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-04-12 04:47+0000\n" + "Last-Translator: Alvin Abuke \n" + "Language-Team: Filipino\n" +@@ -261,157 +261,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Hindi mahagilap ang wastong baseurl para sa repo: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -463,17 +473,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -574,65 +584,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -681,7 +718,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -715,59 +752,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -784,19 +821,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/fr.po b/po/fr.po +index 16f2b72..a7606f6 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -4,13 +4,15 @@ + # Jérôme Fenal , 2017. #zanata + # Ludek Janda , 2018. #zanata + # Jean-Baptiste Holcroft , 2019. #zanata ++# Ludek Janda , 2019. #zanata ++# corina roe , 2019. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" +-"PO-Revision-Date: 2019-05-21 06:12+0000\n" +-"Last-Translator: Jean-Baptiste Holcroft \n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" ++"PO-Revision-Date: 2019-07-30 10:35+0000\n" ++"Last-Translator: Ludek Janda \n" + "Language-Team: French\n" + "Language: fr\n" + "MIME-Version: 1.0\n" +@@ -275,164 +277,174 @@ msgid "" + msgstr "" + "L’opération résulterait en la suppression des packages protégés suivants : " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "Id erroné pour le dépôt : %s, byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "Le dépôt %s n’a pas de miroir ou d’adresse de base" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + "Le dépôt « %s » n’a pas de type pris en charge : « type=%s », passer outre." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Impossible de trouver une adresse de base pour le dépôt : %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "La vitesse de téléchargement maximale est plus basse que le minimum. " + "Veuillez modifier les paramètres minrate ou throttle" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "n’a pas pu lister les clés : %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "%s: gpgme_set_protocol(): %s" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "%s: gpgme_op_assuan_transact_ext(): %s" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "dépôt %s: 0x%s déjà importé" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "dépôt %s: clé importée 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "relance : dépôt « %s » ignoré, pas de méta-lien." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "relance : dépôt « %s » ignoré, pas de hachage utilisable." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "relance : échec pour « %s », la somme de %s ne correspond pas." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "relance : « %s » peut être relancé - la somme de contrôle du méta-lien " + "correspond." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "relance : « %s » peut être relancé - le repomd correspond." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "relance : échec pour « %s », le repomd ne correspond pas." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "N’a pas pu créer le répertoire de destination du dépôt « %s »: %s" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "N’a pas pu créer le répertoire temporaire du dépôt « %s »: %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "N’a pas pu créer le répertoire « %s »: %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "N’a pas pu renommer le répertoire « %s » en « %s »: %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "dépôt : utilisation du cache pour : %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "« cache uniquement » activé, mais pas de cache pour « %s »" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "dépôt : téléchargement à distance en provenance de : %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Impossible de télécharger « %s » : %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Échec de la synchronisation du cache pour le dépôt « %s »" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "Échec du chargement des métadonnées pour le dépôt « %s »" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): computation de SHA256 a échoué" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + "« resume » (reprise) ne peut pas être utilisé avec le paramètre " + "byterangestart" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "L’initialisation de Package Target a échoué : %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "impossible d’ouvrir %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Log handler ayant pour id %ld n’existe pas" +@@ -486,17 +498,17 @@ msgstr "" + msgid "failed to set root" + msgstr "n’a pu réussi à définir root" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "Erreur %i lors du test transactionnel" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "Erreur %i pendant la transaction" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -603,65 +615,94 @@ msgstr "L'identifiant de la platforme est manquant dans %s" + msgid "No valid Platform ID detected" + msgstr "Aucun identifiant de plateforme n'a été détecté" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "Impossible d’activer les flux pour le module « %s »" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "Valeurs par défaut en conflit avec le dépôt « %s » : %s" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "Impossible de charger les données Fail-Safe dans « %s »" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "Impossible de charger les données Fail-Safe dans le module « %s.%s »" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "Impossible de sauvegarder les données Fail-Safe dans « %s »" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "Impossible de supprimer les données Fail-Safe dans « %s »" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++"Aucune donnée modulaire disponible pour le paquet modulaire « % », ne peut " ++"pas être installé dans le système" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "signature ne correspondant pas pour %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "n’a pas pu ouvrir(erreur générique): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "n’a pas pu vérifier la clé pour %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "clé publique non disponible pour %s" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "signature non trouvée pour %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "n’a pas pu ajouter l’élément : %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "Erreur d’exécution pour la transaction : %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "Erreur d’exécution de la transaction et pas de problème reporté !" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "Erreur fatale, exécuter le recouvrement de la base de données" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "n’a pas pu trouver le package %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "n’a pas pu ajouter d’élément pour effacer %1$s(%2$i)" +@@ -710,7 +751,7 @@ msgstr "n’a pu convertir « %s » en octets" + msgid "unknown unit '%s'" + msgstr "unité « %s » inconnue" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "le pourcentage « %s » est en dehors des limites" +@@ -744,59 +785,59 @@ msgstr "Configuration: OptionBinding ayant pour « %s » n’existe pas" + msgid "could not convert '%s' to seconds" + msgstr "n’a pu convertir « %s » en secondes" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "par de string %1$d pour %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "par de string %1$s pour %2$s" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "n’a pu ajouter solv" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "n’a pas pu ouvrir: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "n’a pas pu créer le fichier temporaire : %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "n’a pas pu ouvrir le fichier tmp : %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() n’a pu écrire les données : %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() n’a pas pu charger à nouveau le fichier solv" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "n’a pas pu créer le fichier temporaire %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) a échoué : %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "null repo md file" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "n’a pu lire le fichier %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() a échoué." + +@@ -813,19 +854,19 @@ msgstr "n’a pu auto-détecter l’architecture" + msgid "failed creating cachedir %s" + msgstr "n’a pu créer le cachedir %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "n’a pu calculer la somme de contrôle RPMDB" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "n’a pu télécharger RPMDB" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "Aucun module par défaut n’a été trouvé" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + "Transformer: n’a pu ouvrir le répertoire de persistance de l’historique" +diff --git a/po/fur.po b/po/fur.po +index c32b720..30808b4 100644 +--- a/po/fur.po ++++ b/po/fur.po +@@ -3,7 +3,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-05-01 09:08+0000\n" + "Last-Translator: Fabio Tomat \n" + "Language-Team: Friulian\n" +@@ -261,157 +261,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "Il repository %s nol à stabilît nissun mirror o url di base." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Impussibil cjatâ un url di base valit pal repo: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Impussibil discjariâ '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "No si è rivâts a sincronizâ la cache pal repo '%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -463,17 +473,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -574,65 +584,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -681,7 +718,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "unitât '%s' no cognossude" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "la percentuâl '%s' e je fûr di scjale" +@@ -716,59 +753,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -785,19 +822,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/gu.po b/po/gu.po +index 7ea97f5..de5d644 100644 +--- a/po/gu.po ++++ b/po/gu.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 03:13+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Gujarati\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/hi.po b/po/hi.po +index 01f9a75..23454dc 100644 +--- a/po/hi.po ++++ b/po/hi.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 03:19+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Hindi\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/hu.po b/po/hu.po +index 36955f3..e0e7708 100644 +--- a/po/hu.po ++++ b/po/hu.po +@@ -5,8 +5,8 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" +-"PO-Revision-Date: 2018-09-29 11:48+0000\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" ++"PO-Revision-Date: 2018-10-21 11:30+0000\n" + "Last-Translator: Teknős Ferenc \n" + "Language-Team: Hungarian\n" + "Language: hu\n" +@@ -28,7 +28,7 @@ msgstr "" + + #: ../libdnf/dnf-goal.cpp:67 + msgid "Could not depsolve transaction; " +-msgstr "" ++msgstr "A tranzakció leállítása nem sikerült; " + + #: ../libdnf/dnf-goal.cpp:69 + #, c-format +@@ -263,161 +263,171 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "A(z) „%s” tárolóhoz nincs tükör vagy bázis-URL beállítva." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Nem található érvényes bázis-URL a tárolóhoz: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "A legnagyobb letöltési sebesség alacsonyabb mint a legkisebb. Módosítsa a " + "minimális sebesség vagy a korlátozás beállítását" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "újraélesztés: „%s” tároló kihagyva, nincs metalink." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "újraélesztés: „%s” tároló kihagyva, nincs használható hash." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "újraélesztés: „%s” esetén sikertelen, nem egyező %s összeg." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "újraélesztés: „%s” újraéleszthető – a metalink ellenőrzőösszegek egyeznek." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "újraélesztés: „%s” újraéleszthető – a repomd egyezik." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "újraélesztés: „%s” esetén sikertelen, nem egyező repomd." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Nem hozható létre könyvtár\"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "tároló: gyorsítótár használata a következőhöz: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + "Csak gyorsítótárazás engedélyezve, de nincs gyorsítótár a(z) „%s” tárolóhoz." + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "A(z) „%s” nem tölthető le: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "A(z) „%s” tároló gyorsítótárának szinkronizációja meghiúsult" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -469,17 +479,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -580,65 +590,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -687,7 +724,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "ismeretlen egység: „%s”" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "a(z) „%s” százalék a tartományon kívül esik" +@@ -725,59 +762,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -794,19 +831,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/ia.po b/po/ia.po +index d5916e6..e8363ba 100644 +--- a/po/ia.po ++++ b/po/ia.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 03:26+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Interlingua\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/id.po b/po/id.po +index 62aa0b0..500829f 100644 +--- a/po/id.po ++++ b/po/id.po +@@ -3,8 +3,8 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" +-"PO-Revision-Date: 2016-10-11 11:14+0000\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" ++"PO-Revision-Date: 2016-10-11 11:13+0000\n" + "Last-Translator: sentabi \n" + "Language-Team: Indonesian\n" + "Language: id\n" +@@ -261,157 +261,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Tidak bisa mengunduh '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Gagal sinkron ke repo '%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -463,17 +473,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -574,65 +584,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -681,7 +718,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -715,59 +752,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -784,19 +821,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/is.po b/po/is.po +index d2fa342..7312582 100644 +--- a/po/is.po ++++ b/po/is.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 03:30+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Icelandic\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/it.po b/po/it.po +index a4395e3..b7784fc 100644 +--- a/po/it.po ++++ b/po/it.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-11-02 05:26+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Italian\n" +@@ -21,40 +21,42 @@ msgstr "" + #: ../libdnf/hy-iutil.cpp:316 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" +-msgstr "" ++msgstr "Rinominazione non riuscita %1$s a %2$s: %3$s" + + #: ../libdnf/hy-iutil.cpp:324 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" +-msgstr "" ++msgstr "Impostazioni non riuscite %1$s: %2$s" + + #: ../libdnf/dnf-goal.cpp:67 + msgid "Could not depsolve transaction; " +-msgstr "" ++msgstr "Impossibile decodificare la transazione; " + + #: ../libdnf/dnf-goal.cpp:69 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" +-msgstr[0] "" ++msgstr[0] "%i problema rilevato:\n" ++msgstr[1] "%i problemi rilevati:\n" + + #: ../libdnf/dnf-goal.cpp:77 + #, c-format + msgid " Problem %1$i: %2$s\n" +-msgstr "" ++msgstr " Problema %1$i: %2$s\n" + + #: ../libdnf/dnf-goal.cpp:79 + #, c-format + msgid " Problem: %s\n" +-msgstr "" ++msgstr " Problema: %s\n" + + #: ../libdnf/goal/Goal.cpp:55 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" +-msgstr "" ++msgstr "Selettore mal formato, presenza di più oggetti match nel filtro" + + #: ../libdnf/goal/Goal.cpp:56 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "" ++"Selettore mal formato utilizzato per l'operazione, tipo di confronto errato" + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +@@ -236,194 +238,205 @@ msgstr "" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +-msgstr "" ++msgstr "nessun set di risolutori" + + #: ../libdnf/goal/Goal.cpp:999 + #, c-format + msgid "failed to make %s absolute" +-msgstr "" ++msgstr "non è riuscito a fare %s assoluto" + + #: ../libdnf/goal/Goal.cpp:1006 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" +-msgstr "" ++msgstr "impossibile scrivere debugdata su %1$s: %2$s" + + #: ../libdnf/goal/Goal.cpp:1018 + msgid "no solv in the goal" +-msgstr "" ++msgstr "nessun solvente nell'obiettivo" + + #: ../libdnf/goal/Goal.cpp:1020 + msgid "no solution, cannot remove protected package" +-msgstr "" ++msgstr "nessuna soluzione, non è possibile rimuovere il pacchetto protetto" + + #: ../libdnf/goal/Goal.cpp:1023 + msgid "no solution possible" +-msgstr "" ++msgstr "nessuna soluzione possibile" + + #: ../libdnf/goal/Goal.cpp:1429 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" ++"L'operazione comporterebbe la rimozione dei seguenti pacchetti protetti: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" +-msgstr "" ++msgstr "Bad id per repo: %s, byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + "Per il repository %s non è impostato né il campo mirror né il campo baseurl." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" ++msgstr "Deposito%s'ha tipo non supportato:' type =%s', saltando." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Impossibile trovare un baseurl valido per il repository: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "La velocità massima è minore di quella minima. Si prega di cambiare la " + "configurazione del minrate o throttle" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "non posso elencare le chiavi: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "pronti contro termine %s: 0x%s già importato" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "pronti contro termine %s: chiave importata 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "riattivazione: repository '%s' saltato, nessun metalink." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "riattivazione: repository '%s' saltato, nessun hash utilizzabile." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "riattivazione: non riuscita per '%s', checksum %s non corrispondente." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "riattivazione: '%s' può essere riattivato - il checksum del metalink " + "corrisponde." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + "riattivazione: '%s' può essere riattivato, il file repomd corrisponde." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "riattivazione: non riuscita per '%s', il file repomd non corrisponde." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "Impossibile creare la directory temporanea del repository \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Impossibile creare la directory \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "Impossibile rinominare la directory \"%s\" a \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repository: uso della cache per %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "Modalità solo cache abilitata, ma cache non presente per '%s'" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: download da remoto: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Impossibile scaricare '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Sincronizzazione cache non riuscita per il repo '%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): Computation of SHA256 failed" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + "resume non può essere utilizzato contemporaneamente con il parametro " + "byterangestart" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "Inizializzazione PackageTarget non riuscita: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "Non si può aprire %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Gestore del registro con ID %ld non esiste" +@@ -480,17 +493,17 @@ msgstr "" + msgid "failed to set root" + msgstr "impossibile impostare la radice" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "Errore %i eseguire il test delle transazioni" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "Errore %i transazione in corso" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -593,67 +606,94 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "la firma non verifica per %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "impossibile aprire (errore generico): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "impossibile verificare la chiave per %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "chiave pubblica non disponibile per %s" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "firma non trovata per %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "impossibile aggiungere l'elemento di installazione: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "Errore durante l'esecuzione della transazione: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + "Errore durante l'esecuzione della transazione e non sono stati segnalati " + "problemi!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "Errore irreversibile, eseguire il ripristino del database" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "non è riuscito a trovare il pacchetto %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "impossibile aggiungere un elemento di cancellazione %1$s(%2$i)" +@@ -702,7 +742,7 @@ msgstr "non potevo convertire '%s'a byte" + msgid "unknown unit '%s'" + msgstr "unità sconosciuta '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "percentuale '%s' fuori scala" +@@ -736,59 +776,59 @@ msgstr "Configurazione: OptionBinding with id \"%s\" esiste già" + msgid "could not convert '%s' to seconds" + msgstr "non potevo convertire '%s'a secondi" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "no %1$d stringa per %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "non è riuscito ad aggiungere solv" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "non è riuscito ad aprire: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "non è possibile creare un file temporaneo: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "errore durante l'apertura del file tmp: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main () non è riuscito a scrivere i dati: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main () non è riuscito a ricaricare il file solv scritto" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "non è possibile creare un file temporaneo %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) has failed: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "file repo md null" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "non posso leggere il file %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() has failed." + +@@ -805,19 +845,19 @@ msgstr "non è riuscito a rilevare automaticamente l'architettura" + msgid "failed creating cachedir %s" + msgstr "non è riuscito a creare cache %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "non riuscito a calcolare il checksum RPMDB" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "errore durante il caricamento di RPMDB" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "Transformer: impossibile aprire la cron persist di storia" + +diff --git a/po/ja.po b/po/ja.po +index 307abd6..7c8e4db 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -1,12 +1,14 @@ + # Casey Jones , 2018. #zanata + # Ludek Janda , 2018. #zanata ++# Keiko Moriguchi , 2019. #zanata ++# Ludek Janda , 2019. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" +-"PO-Revision-Date: 2018-09-11 12:30+0000\n" +-"Last-Translator: Copied by Zanata \n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" ++"PO-Revision-Date: 2019-07-30 10:15+0000\n" ++"Last-Translator: Ludek Janda \n" + "Language-Team: Japanese\n" + "Language: ja\n" + "MIME-Version: 1.0\n" +@@ -55,181 +57,181 @@ msgstr "操作に使用される不適格な Selector、間違った比較タイ + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +-msgstr "" ++msgstr " distupgrade リポジトリーには属しません" + + #: ../libdnf/goal/Goal.cpp:68 ../libdnf/goal/Goal.cpp:94 + msgid " has inferior architecture" +-msgstr "" ++msgstr " 下位のアーキテクチャーがあります" + + #: ../libdnf/goal/Goal.cpp:69 + msgid "problem with installed package " +-msgstr "" ++msgstr "インストールされたパッケージでの問題 " + + #: ../libdnf/goal/Goal.cpp:70 ../libdnf/goal/Goal.cpp:96 + msgid "conflicting requests" +-msgstr "" ++msgstr "競合する要求" + + #: ../libdnf/goal/Goal.cpp:71 ../libdnf/goal/Goal.cpp:97 + msgid "unsupported request" +-msgstr "" ++msgstr "サポートされない要求" + + #: ../libdnf/goal/Goal.cpp:72 ../libdnf/goal/Goal.cpp:98 + msgid "nothing provides requested " +-msgstr "" ++msgstr "要求者に何も提供されません " + + #: ../libdnf/goal/Goal.cpp:73 + #, c-format + msgid "package %s does not exist" +-msgstr "" ++msgstr "パッケージ %s は存在しません" + + #: ../libdnf/goal/Goal.cpp:74 ../libdnf/goal/Goal.cpp:100 + msgid " is provided by the system" +-msgstr "" ++msgstr " システムが提供します" + + #: ../libdnf/goal/Goal.cpp:75 ../libdnf/goal/Goal.cpp:101 + msgid "some dependency problem" +-msgstr "" ++msgstr "一部の依存関係の問題" + + #: ../libdnf/goal/Goal.cpp:76 + msgid "cannot install the best update candidate for package " +-msgstr "" ++msgstr "パッケージ用の最良の更新候補をインストールできません " + + #: ../libdnf/goal/Goal.cpp:77 ../libdnf/goal/Goal.cpp:103 + msgid "cannot install the best candidate for the job" +-msgstr "" ++msgstr "ジョブの最良候補をインストールできません" + + #: ../libdnf/goal/Goal.cpp:78 + #, c-format + msgid "package %s is excluded" +-msgstr "" ++msgstr "パッケージ %s は除外されました" + + #: ../libdnf/goal/Goal.cpp:79 + #, c-format + msgid "package %s does not have a compatible architecture" +-msgstr "" ++msgstr "パッケージ %s には、互換性のあるアーキテクチャーはありません" + + #: ../libdnf/goal/Goal.cpp:80 + #, c-format + msgid "package %s is not installable" +-msgstr "" ++msgstr "パッケージ %s はインストールできません" + + #: ../libdnf/goal/Goal.cpp:81 + #, c-format + msgid "nothing provides %s needed by %s" +-msgstr "" ++msgstr "%s が必要な %s は何も提供されません" + + #: ../libdnf/goal/Goal.cpp:82 + #, c-format + msgid "cannot install both %s and %s" +-msgstr "" ++msgstr "%s と %s の両方ともインストールできません" + + #: ../libdnf/goal/Goal.cpp:83 + #, c-format + msgid "package %s conflicts with %s provided by %s" +-msgstr "" ++msgstr "パッケージ %s は、%s が提供する %s と競合します" + + #: ../libdnf/goal/Goal.cpp:84 + #, c-format + msgid "package %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "パッケージ %s は、%s が提供する %s を推奨しません" + + #: ../libdnf/goal/Goal.cpp:85 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "インストールされたパッケージ %s は、%s が提供する %s を推奨しません" + + #: ../libdnf/goal/Goal.cpp:86 + #, c-format + msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "パッケージ %s は、%s が提供する %s を暗黙的に推奨しません" + + #: ../libdnf/goal/Goal.cpp:87 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "パッケージ %s は %s が必要ですが、インストールできるプロバイダーはありません" + + #: ../libdnf/goal/Goal.cpp:88 + #, c-format + msgid "package %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "パッケージ %s は、自身が提供する %s と競合します" + + #: ../libdnf/goal/Goal.cpp:89 + #, c-format + msgid "both package %s and %s obsolete %s" +-msgstr "" ++msgstr "パッケージ %s と %s の両方とも、%s を推奨しません" + + #: ../libdnf/goal/Goal.cpp:95 + msgid "problem with installed module " +-msgstr "" ++msgstr "インストールされたモジュールでの問題 " + + #: ../libdnf/goal/Goal.cpp:99 + #, c-format + msgid "module %s does not exist" +-msgstr "" ++msgstr "モジュール %s は存在しません" + + #: ../libdnf/goal/Goal.cpp:102 + msgid "cannot install the best update candidate for module " +-msgstr "" ++msgstr "モジュール用の最良の更新候補をインストールできません " + + #: ../libdnf/goal/Goal.cpp:104 + #, c-format + msgid "module %s is disabled" +-msgstr "" ++msgstr "モジュール %s は無効になっています" + + #: ../libdnf/goal/Goal.cpp:105 + #, c-format + msgid "module %s does not have a compatible architecture" +-msgstr "" ++msgstr "モジュール %s には互換性のあるアーキテクチャーがありません" + + #: ../libdnf/goal/Goal.cpp:106 + #, c-format + msgid "module %s is not installable" +-msgstr "" ++msgstr "モジュール %s はインストールできません" + + #: ../libdnf/goal/Goal.cpp:107 + #, c-format + msgid "nothing provides %s needed by module %s" +-msgstr "" ++msgstr "モジュール %s が必要な %s は何も提供されません" + + #: ../libdnf/goal/Goal.cpp:108 + #, c-format + msgid "cannot install both modules %s and %s" +-msgstr "" ++msgstr "モジュール %s と %s の両方ともインストールできません" + + #: ../libdnf/goal/Goal.cpp:109 + #, c-format + msgid "module %s conflicts with %s provided by %s" +-msgstr "" ++msgstr "モジュール %s は、%s が提供する %s と競合します" + + #: ../libdnf/goal/Goal.cpp:110 + #, c-format + msgid "module %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "モジュール %s は、%s が提供する %s を推奨しません" + + #: ../libdnf/goal/Goal.cpp:111 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "インストールされたモジュール %s は、%s が提供する %s を推奨しません" + + #: ../libdnf/goal/Goal.cpp:112 + #, c-format + msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "モジュール %s は、%s が提供する %s を暗黙的に推奨しません" + + #: ../libdnf/goal/Goal.cpp:113 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "モジュール %s は %s が必要ですが、インストールできるプロバイダーはありません" + + #: ../libdnf/goal/Goal.cpp:114 + #, c-format + msgid "module %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "モジュール %s は、自身が提供する %s と競合します" + + #: ../libdnf/goal/Goal.cpp:115 + #, c-format + msgid "both module %s and %s obsolete %s" +-msgstr "" ++msgstr "モジュール %s と %s の両方とも、%s を推奨しません" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +@@ -262,157 +264,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "操作は結果的に以下の保護されたパッケージを削除します: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "repo に対する不正な id: %s, byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "リポジトリー %s にはミラーまたは baseurl セットがありません。" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "repo に対して有効な baseurl を見つけられません: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください。" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "キーを一覧表示できません: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "%s: gpgme_set_protocol(): %s" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "%s: gpgme_op_assuan_transact_ext(): %s" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0x%s はインポート済みです" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: インポート済みのキー 0x%s。" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "復元中: repo '%s' はスキップされました、metalink はありません。" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "復元中: '%s' は失敗しました、%s の合計は一致しません。" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "復元中: '%s' は復元できます - metalink チェックサムが一致します。" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "復元中: '%s' は復元できます - repomd が一致します。" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "復元中: '%s' に失敗しました、repomd が一致しません。" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" +-msgstr "" ++msgstr "repo 出力先ディレクトリー \"%s\" を作成できません: %s" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "ディレクトリー \"%s\" を作成できません: %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "ディレクトリー名を \"%s\" から \"%s\" へと変更できません: %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo: キャッシュを使用: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: リモートからダウンロード中: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "'%s' をダウンロードできません: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "repo '%s' のキャッシュの同期に失敗しました" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "repo '%s' のメタデータのダウンロードに失敗しました。" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): SHA256 のコンピュテーションに失敗しました" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume は byterangestart param と同時に使用できません" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget の初期化に失敗しました: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "%s を開くことができません: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "id %ld を伴うログハンドラーは存在しません" +@@ -464,17 +476,17 @@ msgstr "%1$s に十分なスペースがありません: %2$s 必要で、利用 + msgid "failed to set root" + msgstr "root の設定に失敗しました" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "トランザクションテストの実行中にエラー %i" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "トランザクションの実行中にエラー %i" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした" +@@ -492,37 +504,37 @@ msgstr "%s の削除に失敗しました" + #: ../libdnf/plugin/plugin.cpp:46 + #, c-format + msgid "Can't load shared library \"%s\": %s" +-msgstr "" ++msgstr "共有ライブラリー \"%s\" をロードできません: %s" + + #: ../libdnf/plugin/plugin.cpp:61 ../libdnf/plugin/plugin.cpp:67 + #: ../libdnf/plugin/plugin.cpp:73 ../libdnf/plugin/plugin.cpp:79 + #, c-format + msgid "Can't obtain address of symbol \"%s\": %s" +-msgstr "" ++msgstr "シンボル \"%s\" のアドレスを取得できません: %s" + + #: ../libdnf/plugin/plugin.cpp:86 + #, c-format + msgid "Loading plugin file=\"%s\"" +-msgstr "" ++msgstr "プラグイン file=\"%s\" をロード中" + + #: ../libdnf/plugin/plugin.cpp:89 + #, c-format + msgid "Loaded plugin name=\"%s\", version=\"%s\"" +-msgstr "" ++msgstr "ロードされたプラグイン name=\"%s\"、version=\"%s\"" + + #: ../libdnf/plugin/plugin.cpp:96 + msgid "Plugins::loadPlugins() dirPath cannot be empty" +-msgstr "" ++msgstr "Plugins::loadPlugins() dirPath は空にはできません" + + #: ../libdnf/plugin/plugin.cpp:105 + #, c-format + msgid "Can't read plugin directory \"%s\": %s" +-msgstr "" ++msgstr "プラグインディレクトリー \"%s\" を読み込みできません: %s" + + #: ../libdnf/plugin/plugin.cpp:114 + #, c-format + msgid "Can't load plugin \"%s\": %s" +-msgstr "" ++msgstr "プラグイン \"%s\" をロードできません: %s" + + #: ../libdnf/dnf-state.cpp:1183 + #, c-format +@@ -551,89 +563,116 @@ msgstr "すでに 100%% の状態 [%s] にあります" + #: ../libdnf/module/ModulePackage.cpp:413 + #, c-format + msgid "Invalid format of Platform module: %s" +-msgstr "" ++msgstr "プラットフォームモジュールの無効なフォーマット: %s" + + #: ../libdnf/module/ModulePackage.cpp:428 + msgid "Multiple module platforms provided by available packages\n" +-msgstr "" ++msgstr "利用可能なパッケージによって提供された複数のモジュールプラットフォーム\n" + + #: ../libdnf/module/ModulePackage.cpp:441 + msgid "Multiple module platforms provided by installed packages\n" +-msgstr "" ++msgstr "インストールされたパッケージによって提供された複数のモジュールプラットフォーム\n" + + #: ../libdnf/module/ModulePackage.cpp:468 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" +-msgstr "" ++msgstr "%s でのプラットフォームモジュールの検出に失敗しました: %s" + + #: ../libdnf/module/ModulePackage.cpp:477 + #, c-format + msgid "Missing PLATFORM_ID in %s" +-msgstr "" ++msgstr "%s に PLATFORM_ID がありません" + + #: ../libdnf/module/ModulePackage.cpp:482 + msgid "No valid Platform ID detected" +-msgstr "" ++msgstr "有効なプラットフォーム ID は検出されませんでした" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" +-msgstr "" ++msgstr "モジュール '%s' に複数のストリームを有効にできません" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" +-msgstr "" ++msgstr "repo '%s' で競合するデフォルト: %s" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "'%s' での モジュラー Fail-Safe データのロードができません" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "モジュラー '%s の モジュラー Fail-Safe データのロードができません:%s'" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "モジュラー Fail Safe データを '%s' へ保存できませんでした" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "'%s' のモジュラー Fail Safe データを削除できませんでした" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "モジュラーパッケージ '%s' に利用可能なモジュラーメタデータはありません。システムにインストールできません" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "署名は %s を確認しません" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "開くことに失敗しました(ジェネリックエラー): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "%s のキーの確認に失敗しました" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "%s は公開鍵を利用できません" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "%s の署名は見つかりませんでした" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "インストールの要素の追加に失敗しました: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "トランザクションの実行中にエラーが発生しました: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "致命的なエラー、データベースリカバリーを実行します" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "パッケージ %s を見つけることができませんでした" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "erase 要素 %1$s(%2$i) を追加することができません" +@@ -682,7 +721,7 @@ msgstr "'%s' を バイトへ変換できませんでした" + msgid "unknown unit '%s'" + msgstr "不明な単位 '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "パーセンテージ '%s' が範囲外にあります" +@@ -716,59 +755,59 @@ msgstr "設定: id \"%s\" を伴う OptionBinding はすでに存在します" + msgid "could not convert '%s' to seconds" + msgstr "'%s' を 秒に変換できません" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "%2$s には %1$d 文字列はありません" ++msgid "no %1$s string for %2$s" ++msgstr "%2$s には %1$s ストリングがありません" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "solv の追加に失敗しました" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "開くことに失敗しました: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "一時ファイルを作成できません: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "tmp ファイルを開くことに失敗しました: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() はデータの書き込みに失敗しました: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "一時ファイル %s を作成できません" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) は失敗しました: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "null repo md ファイル" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "ファイル %1$s を読み込みできません: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() は失敗しました。" + +@@ -785,19 +824,19 @@ msgstr "アーキテクチャーの自動検出に失敗しました" + msgid "failed creating cachedir %s" + msgstr "cachedir %s の作成に失敗しました" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "RPMDB チェックサムの計算に失敗しました" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "RPMDB のロードに失敗しました" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" +-msgstr "" ++msgstr "モジュールのデフォルトは見つかりませんでした" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "トランスフォーマー: 履歴の残った dir を開くことができません" + +diff --git a/po/kn.po b/po/kn.po +index 1011163..126356c 100644 +--- a/po/kn.po ++++ b/po/kn.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 03:48+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Kannada\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/ko.po b/po/ko.po +index 842ed0d..2c732eb 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-11-02 05:26+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Korean\n" +@@ -21,40 +21,40 @@ msgstr "" + #: ../libdnf/hy-iutil.cpp:316 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" +-msgstr "" ++msgstr "이름 바꾸기 실패 %1$s 에 %2$s: %3$s" + + #: ../libdnf/hy-iutil.cpp:324 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" +-msgstr "" ++msgstr "perms 설정 실패 %1$s: %2$s" + + #: ../libdnf/dnf-goal.cpp:67 + msgid "Could not depsolve transaction; " +-msgstr "" ++msgstr "트랜잭션을 해석 할 수 없습니다. " + + #: ../libdnf/dnf-goal.cpp:69 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" +-msgstr[0] "" ++msgstr[0] "%i 발견 된 문제 :\n" + + #: ../libdnf/dnf-goal.cpp:77 + #, c-format + msgid " Problem %1$i: %2$s\n" +-msgstr "" ++msgstr " 문제 %1$i: %2$s\n" + + #: ../libdnf/dnf-goal.cpp:79 + #, c-format + msgid " Problem: %s\n" +-msgstr "" ++msgstr " 문제: %s\n" + + #: ../libdnf/goal/Goal.cpp:55 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" +-msgstr "" ++msgstr "잘못된 형식의 선택기, 필터에 일치하는 개체가 여러 개 있음" + + #: ../libdnf/goal/Goal.cpp:56 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" +-msgstr "" ++msgstr "조작에 잘못 형성된 선택자, 잘못된 비교 유형" + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +@@ -236,186 +236,196 @@ msgstr "" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +-msgstr "" ++msgstr "아무 해결사도 없다." + + #: ../libdnf/goal/Goal.cpp:999 + #, c-format + msgid "failed to make %s absolute" +-msgstr "" ++msgstr "실패한 %s 순수한" + + #: ../libdnf/goal/Goal.cpp:1006 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" +-msgstr "" ++msgstr "디버그 데이터를 쓰지 못했습니다. %1$s: %2$s" + + #: ../libdnf/goal/Goal.cpp:1018 + msgid "no solv in the goal" +-msgstr "" ++msgstr "목표에 솔로가 없다." + + #: ../libdnf/goal/Goal.cpp:1020 + msgid "no solution, cannot remove protected package" +-msgstr "" ++msgstr "해결책 없음, 보호 된 패키지를 제거 할 수 없음" + + #: ../libdnf/goal/Goal.cpp:1023 + msgid "no solution possible" +-msgstr "" ++msgstr "해결책 없음" + + #: ../libdnf/goal/Goal.cpp:1429 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "" ++msgstr "이 작업으로 인해 다음과 같은 보호 패키지가 제거됩니다. " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" +-msgstr "" ++msgstr "repo에 대한 ID가 잘못되었습니다. %s, 바이트 = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." +-msgstr "" ++msgstr "저장소 %s 거울이나 기둥이 없습니다." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" ++msgstr "저장소 '%s'에 지원되지 않는 유형이 있습니다 :'type =%s', 건너 뛰기." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" +-msgstr "" ++msgstr "repo에 유효한 baseurl을 찾을 수 없습니다. %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" +-msgstr "" ++msgstr "최대 다운로드 속도가 최소값보다 낮습니다. 최소 속도 또는 스로틀의 구성을 변경하십시오." + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "열쇠를 나열 할 수 없습니다 : %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "레포 %s: 0x%s 이미 수입" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "레포 %s: 가져온 키 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "부활 : repo '%s'건너 뛰었습니다." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "부활 : repo '%s'건너 뛰었습니다. 사용 가능한 해시가 없습니다." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "되살리기 : 실패한 '%s', 불일치 %s 합집합." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - metalink 체크섬이 일치합니다." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - repomd가 일치합니다." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "되살리기 : 실패한 '%s', 일치하지 않는 repomd." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo : 캐시 사용 : %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "캐시 만 사용 가능하지만 '%s'" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo : 원격에서 다운로드 중 : %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "다운로드 할 수 없습니다 '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "repo의 캐시를 동기화하는 데 실패했습니다.%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir () : SHA256 계산에 실패했습니다." + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "이력서는 byterangestart 매개 변수와 동시에 사용할 수 없습니다." + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget 초기화에 실패했습니다 : %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "열 수 없다 %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "ID가있는 로그 처리기 %ld 존재하지 않는다." +@@ -467,17 +477,17 @@ msgstr "여유 공간이 부족합니다. %1$s: 필요 %2$s, 이용 가능 %3$s" + msgid "failed to set root" + msgstr "루트를 설정하지 못했습니다." + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "오류 %i 실행중인 트랜잭션 테스트" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "오류 %i 실행중인 거래" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "트랜잭션이 쓰기 단계로 이동하지 않았지만 오류를 반환하지 않았습니다 (%i)" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "서명이 확인하지 않음 %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "열지 못했습니다 (일반 오류). %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "에 대한 키를 확인하지 못했습니다. %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "사용할 수없는 공개 키 %s" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "서명이 없습니다. %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "설치 요소를 추가하지 못했습니다. %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "트랜잭션 실행 오류 : %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "트랜잭션을 실행하는 중 오류가 발생했으며 아무런 문제도보고되지 않았습니다!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "치명적인 오류, 데이터베이스 복구 실행" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "꾸러미를 찾지 못했습니다. %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)" +@@ -685,7 +722,7 @@ msgstr "변환 할 수 없습니다 '%s'~ 바이트" + msgid "unknown unit '%s'" + msgstr "알 수없는 단위 '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "백분율 '%s'범위를 벗어났습니다." +@@ -719,59 +756,59 @@ msgstr "구성 : ID가 \"%s\" 이미 존재 함" + msgid "could not convert '%s' to seconds" + msgstr "변환 할 수 없습니다 '%s'초까지" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "아니 %1$d 문자열 %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "solv를 추가하지 못했습니다." + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "열지 못했습니다 : %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "여는 tmp 파일을 열지 못했습니다. %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() failed writing data: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main ()이 작성된 solv 파일을 다시로드하지 못했습니다." + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) has failed: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "null repo md 파일" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "파일을 읽을 수 없습니다. %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() has failed." + +@@ -788,19 +825,19 @@ msgstr "아키텍처 자동 검색에 실패했습니다." + msgid "failed creating cachedir %s" + msgstr "캐시 된 생성 실패 %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "RPMDB 체크섬 계산 실패" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "RPMDB로드 실패" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "변압기 : 역사를 열 수 없습니다." + +diff --git a/po/libdnf.pot b/po/libdnf.pot +index 9a9bc82..8758be0 100644 +--- a/po/libdnf.pot ++++ b/po/libdnf.pot +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -266,157 +266,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of " + "minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -468,17 +478,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -579,65 +589,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -686,7 +723,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -720,59 +757,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -789,19 +826,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/mai.po b/po/mai.po +index e439035..4f81d24 100644 +--- a/po/mai.po ++++ b/po/mai.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 03:58+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Maithili\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/ml.po b/po/ml.po +index 6a45318..78df0fc 100644 +--- a/po/ml.po ++++ b/po/ml.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 04:03+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Malayalam\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/mr.po b/po/mr.po +index a748240..9c183ba 100644 +--- a/po/mr.po ++++ b/po/mr.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 04:08+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Marathi\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/nb.po b/po/nb.po +index 2e75b44..0c2ac09 100644 +--- a/po/nb.po ++++ b/po/nb.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 04:14+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Norwegian Bokmål\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/nl.po b/po/nl.po +index a597625..c2256e7 100644 +--- a/po/nl.po ++++ b/po/nl.po +@@ -4,7 +4,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2017-06-18 09:17+0000\n" + "Last-Translator: Geert Warrink \n" + "Language-Team: Dutch\n" +@@ -262,160 +262,170 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "Repository %s heeft geen spiegel of baseurl set." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Kan geen geldige baseurl voor repo vinden: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "Maximale download snelheid is lader dan het minimum. Verander de " + "configuratie van minrate of throttle" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "vernieuwen: repo '%s' wordt overgeslagen, geen metalink." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "vernieuwen: repo '%s' wordt overgeslagen, geen bruikbare hash." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "reviving: mislukte voor '%s', niet overeenkomende %s som." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "reviving: '%s' kan verniewd worden - metalink checksums komen overeen." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "reviving: '%s' kan vernieuwd worden - repomd komt overeen." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "reviving: mislukte voor '%s', repomd kpmt niet overeen." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo: cache wordt gebruikt voor: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "Cache-only aangezet maar er is geen cache voor '%s'" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Kan '%s' niet downloaden: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Synchroniseren van cache voor repo '%s' is niet gelukt" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "onbekende unit '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "percentage '%s' valt buiten de reeks" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/or.po b/po/or.po +index ee057b7..9898fd4 100644 +--- a/po/or.po ++++ b/po/or.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 04:27+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Oriya\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/pa.po b/po/pa.po +index 009fc45..5d27393 100644 +--- a/po/pa.po ++++ b/po/pa.po +@@ -4,7 +4,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-04-15 10:02+0000\n" + "Last-Translator: A S Alam \n" + "Language-Team: Punjabi\n" +@@ -262,157 +262,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "'%s' ਨੂੰ ਡਾਊਨਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ: %s।" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "'%s' ਰਿਪੋਜ਼ਟਰੀ ਨਾਲ ਕੈਸ਼ ਨੂੰ ਸੈਕਰੋਨਾਈਜ਼ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -464,17 +474,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -575,65 +585,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -682,7 +719,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "ਅਣਪਛਾਤੀ ਇਕਾਈ '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "'%s' ਫ਼ੀਸਦੀ ਹੱਦ ਤੋਂ ਬਾਹਰ ਹੈ" +@@ -716,59 +753,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -785,19 +822,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/pl.po b/po/pl.po +index 0ef2651..32d1616 100644 +--- a/po/pl.po ++++ b/po/pl.po +@@ -12,8 +12,8 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" +-"PO-Revision-Date: 2019-04-20 11:26+0000\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" ++"PO-Revision-Date: 2019-06-18 04:44+0000\n" + "Last-Translator: Piotr Drąg \n" + "Language-Team: Polish (http://www.transifex.com/projects/p/dnf/language/pl/)\n" + "Language: pl\n" +@@ -280,166 +280,175 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "Działanie spowodowałoby usunięcie tych chronionych pakietów: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "Błędny identyfikator dla repozytorium: %s, bajt = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + "Repozytorium %s nie ma ustawionego serwera lustrzanego ani podstawowego " + "adresu URL." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "Repozytorium „%s” ma nieobsługiwany typ: „type=%s”, pomijanie." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + "Nie można odnaleźć prawidłowego podstawowego adresu URL dla repozytorium: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "Maksymalna prędkość pobierania jest mniejsza niż minimalna. Proszę zmienić " + "konfigurację „minrate” lub „throttle”" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "nie można wyświetlić listy kluczy: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "%s: gpgme_set_protocol(): %s" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "%s: gpgme_op_assuan_transact_ext(): %s" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repozytorium %s: 0x%s jest już zaimportowane" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "repozytorium %s: zaimportowano klucz 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "odnawianie: pominięto repozytorium „%s”, brak metaodnośnika." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + "odnawianie: pominięto repozytorium „%s”, brak sumy kontrolnej możliwej do " + "użycia." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "odnawianie: niepowodzenie dla „%s”, suma kontrolna %s się nie zgadza." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "odnawianie: można odnowić „%s” — sumy kontrolne metaodnośnika się zgadzają." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "odnawianie: można odnowić „%s” — repomd się zgadza." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "odnawianie: niepowodzenie dla „%s”, repomd się nie zgadza." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "Nie można utworzyć katalogu docelowego repozytorium „%s”: %s" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "Nie można utworzyć katalogu tymczasowego repozytorium „%s”: %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Nie można utworzyć katalogu „%s”: %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "Nie można zmienić nazwy katalogu „%s” na „%s”: %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repozytorium: używanie pamięci podręcznej dla: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "Włączono tylko pamięć podręczną, ale brak pamięci podręcznej dla „%s”" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repozytorium: pobieranie z serwera: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Nie można pobrać „%s”: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "" +-"Synchronizacja pamięci podręcznej dla repozytorium „%s” się nie powiodła" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "Pobranie metadanych repozytorium „%s” się nie powiodło" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): obliczenie sumy SHA256 się nie powiodło" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "nie można używać wznawiania jednocześnie z parametrem byterangestart" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "Inicjacja PackageTarget się nie powiodła: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "Nie można otworzyć %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Program obsługujący dziennik o identyfikatorze %ld nie istnieje" +@@ -496,17 +505,17 @@ msgstr "" + msgid "failed to set root" + msgstr "ustawienie roota się nie powiodło" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "Błąd %i podczas wykonywania testu transakcji" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "Błąd %i podczas wykonywania transakcji" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -608,66 +617,96 @@ msgstr "Brak PLATFORM_ID w %s" + msgid "No valid Platform ID detected" + msgstr "Nie wykryto prawidłowego identyfikatora platformy" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "Nie można włączyć wielu strumieni dla modułu „%s”" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "Sprzeczne domyślne z repozytorium „%s”: %s" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "Wczytanie modularnych danych Fail-Safe w „%s” się nie powiodło" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++"Wczytanie modularnych danych Fail-Safe dla modułu „%s:%s” się nie powiodło" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "Usunięcie modularnych danych Fail Safe w „%s” się nie powiodło" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++"Brak dostępnych modularnych metadanych dla modularnego pakietu „%s”, nie " ++"można zainstalować na komputerze" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "podpis nie jest poprawny dla %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "otwarcie się nie powiodło (ogólny błąd): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "sprawdzenie poprawności klucza dla %s się nie powiodło" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "klucz publiczny dla %s jest niedostępny" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "nie odnaleziono podpisu dla %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "dodanie elementu instalacji się nie powiodło: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "Błąd podczas wykonywania transakcji: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + "Błąd podczas wykonywania transakcji, ale nie zgłoszono żadnych błędów." + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "Błąd krytyczny, proszę wykonać przywracanie bazy danych" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "odnalezienie pakietu %s się nie powiodło" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "nie można dodać elementu usunięcia %1$s(%2$i)" +@@ -716,7 +755,7 @@ msgstr "nie można przekonwertować „%s” na bajty" + msgid "unknown unit '%s'" + msgstr "nieznana jednostka „%s”" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "procent „%s” jest poza zakresem" +@@ -750,61 +789,61 @@ msgstr "Konfiguracja: OptionBinding o identyfikatorze „%s” już istnieje" + msgid "could not convert '%s' to seconds" + msgstr "nie można przekonwertować „%s” na sekundy" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "brak ciągu %1$d dla %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "brak ciągu %1$s dla %2$s" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "dodanie mechanizmu rozwiązywania się nie powiodło" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "otwarcie się nie powiodło: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "nie można utworzyć pliku tymczasowego: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "otwarcie pliku tymczasowego się nie powiodło: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "zapisanie danych przez write_main() się nie powiodło: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + "ponowne wczytanie zapisanego pliku mechanizmu rozwiązywania przez " + "write_main() się nie powiodło" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "nie można utworzyć pliku tymczasowego %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) się nie powiodło: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "pusty plik md repozytorium" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "nie można odczytać pliku %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() się nie powiodło." + +@@ -821,19 +860,19 @@ msgstr "automatyczne wykrycie architektury się nie powiodło" + msgid "failed creating cachedir %s" + msgstr "utworzenie katalogu pamięci podręcznej %s się nie powiodło" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "obliczenie sumy kontrolnej bazy danych RPM się nie powiodło" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "wczytanie bazy danych RPM się nie powiodło" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "Nie odnaleziono domyślnych modułu" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "Transformer: nie można otworzyć katalogu trwałej historii" + +diff --git a/po/pt.po b/po/pt.po +index 6d2338e..fe74fae 100644 +--- a/po/pt.po ++++ b/po/pt.po +@@ -4,7 +4,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2017-01-14 05:19+0000\n" + "Last-Translator: Joao Almeida \n" + "Language-Team: Portuguese\n" +@@ -262,157 +262,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Não foi possível descarregar '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Falha ao sincronizar a cache para o repositório '%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -464,17 +474,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -575,65 +585,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -682,7 +719,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "unidade desconhecida '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "a percentagem '%s' está fora do intervalo" +@@ -716,59 +753,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -785,19 +822,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/pt_BR.po b/po/pt_BR.po +index c0c8b6d..67b9c97 100644 +--- a/po/pt_BR.po ++++ b/po/pt_BR.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-11-02 05:26+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Portuguese (Brazil)\n" +@@ -21,40 +21,44 @@ msgstr "" + #: ../libdnf/hy-iutil.cpp:316 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" +-msgstr "" ++msgstr "Falha ao renomear %1$s para %2$s: %3$s" + + #: ../libdnf/hy-iutil.cpp:324 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" +-msgstr "" ++msgstr "Falha na configuração de perms on %1$s: %2$s" + + #: ../libdnf/dnf-goal.cpp:67 + msgid "Could not depsolve transaction; " +-msgstr "" ++msgstr "Não foi possível descartar a transação; " + + #: ../libdnf/dnf-goal.cpp:69 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" +-msgstr[0] "" ++msgstr[0] "%i problema detectado:\n" ++msgstr[1] "%i problemas detectados:\n" + + #: ../libdnf/dnf-goal.cpp:77 + #, c-format + msgid " Problem %1$i: %2$s\n" +-msgstr "" ++msgstr " Problema %1$i: %2$s\n" + + #: ../libdnf/dnf-goal.cpp:79 + #, c-format + msgid " Problem: %s\n" +-msgstr "" ++msgstr " Problema: %s\n" + + #: ../libdnf/goal/Goal.cpp:55 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" + msgstr "" ++"Seletor mal formado, presença de múltiplos objetos de correspondência no " ++"filtro" + + #: ../libdnf/goal/Goal.cpp:56 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "" ++"Seletor mal formado usado para a operação, tipo de comparação incorreto" + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +@@ -236,189 +240,199 @@ msgstr "" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +-msgstr "" ++msgstr "nenhum conjunto de solver" + + #: ../libdnf/goal/Goal.cpp:999 + #, c-format + msgid "failed to make %s absolute" +-msgstr "" ++msgstr "não conseguiu fazer %s absoluto" + + #: ../libdnf/goal/Goal.cpp:1006 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" +-msgstr "" ++msgstr "Falha ao gravar debugdata para %1$s: %2$s" + + #: ../libdnf/goal/Goal.cpp:1018 + msgid "no solv in the goal" +-msgstr "" ++msgstr "sem solv na meta" + + #: ../libdnf/goal/Goal.cpp:1020 + msgid "no solution, cannot remove protected package" +-msgstr "" ++msgstr "sem solução, não é possível remover o pacote protegido" + + #: ../libdnf/goal/Goal.cpp:1023 + msgid "no solution possible" +-msgstr "" ++msgstr "nenhuma solução possível" + + #: ../libdnf/goal/Goal.cpp:1429 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "" ++msgstr "A operação resultaria na remoção dos seguintes pacotes protegidos: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" +-msgstr "" ++msgstr "Bad id para repo: %s, byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "Repositório %s não possui espelho ou baseurl definido." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" ++msgstr "Repositório%s'tem tipo não suportado:' type =%s', pulando." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Impossível encontrar uma baseurl válida para o repo: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "Velocidade máxima de download é menor que o mínimo. Altere a configuração de" + " minrate ou throttle." + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "não pode listar chaves: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0 x%s já importado" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: chave importada 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "reativando: repo '%s' ignorado, sem metalink." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "reativando: repo '%s' ignorado, nenhum hash utilizável." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "reativando: falhou por '%s', checksum %s não coincide." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "reativando: '%s' pode ser reativado - checksum do metalink coincide." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "reativando: '%s' pode ser reativado - repomd coincide." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "reativando: falhou por '%s', repomd não coincide." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "Não é possível criar o diretório temporário do repositório \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Não é possível criar o diretório \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "Não é possível renomear o diretório \"%s\" para \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo: utilizando cache para: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "Cache-only habilitado mas sem cache para '%s'" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: download do controle remoto: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Não foi possível baixar '%s':%s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Falha ao sincronizar cache para o repo '%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir (): Falha na computação de SHA256" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + "currículo não pode ser usado simultaneamente com o parâmetro byterangestart" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "Falha na inicialização do PackageTarget: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "Não pode abrir %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Manipulador de log com id %ld não existe" +@@ -474,17 +488,17 @@ msgstr "Não há espaço livre suficiente %1$s: necessário %2$s, acessível %3$ + msgid "failed to set root" + msgstr "não conseguiu definir raiz" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "Erro %i executando o teste de transação" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "Erro %i transação em execução" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -587,65 +601,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "assinatura não verifica para %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "Falha ao abrir (erro genérico): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "Falha ao verificar chave para %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "chave pública indisponível para %s" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "assinatura não encontrada para %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "Falha ao adicionar o elemento de instalação: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "Erro ao executar a transação: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "Erro ao executar a transação e nenhum problema foi relatado!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "Erro fatal, execute a recuperação do banco de dados" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "não encontrou o pacote %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "não foi possível adicionar o elemento apagar %1$s(%2$i)" +@@ -694,7 +735,7 @@ msgstr "não foi possível converter '%s'para bytes" + msgid "unknown unit '%s'" + msgstr "unidade desconhecida '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "porcentagem '%s' está fora do intervalo" +@@ -728,59 +769,59 @@ msgstr "Configuração: OptionBinding com id \"%s\" já existe" + msgid "could not convert '%s' to seconds" + msgstr "não foi possível converter '%s'para segundos" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "não %1$d string para %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "não conseguiu adicionar solv" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "falhou para abrir: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "não é possível criar um arquivo temporário: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "Falha ao abrir o arquivo tmp: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main () falhou ao gravar dados: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main () falhou ao recarregar um arquivo resolvido por escrito" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "não pode criar um arquivo temporário %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) has failed: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "arquivo nulo repo md" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "não consigo ler o arquivo %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv () falhou." + +@@ -797,19 +838,19 @@ msgstr "Falha ao detectar automaticamente a arquitetura" + msgid "failed creating cachedir %s" + msgstr "Falha ao criar o Cachedir %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "Falha ao calcular a soma de verificação do RPMDB" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "falha ao carregar o RPMDB" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "Transformador: não é possível abrir o histórico persistir dir" + +diff --git a/po/ru.po b/po/ru.po +index c800c70..bbd2d89 100644 +--- a/po/ru.po ++++ b/po/ru.po +@@ -4,7 +4,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-11-02 05:26+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Russian\n" +@@ -18,40 +18,44 @@ msgstr "" + #: ../libdnf/hy-iutil.cpp:316 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" +-msgstr "" ++msgstr "Неудачное переименование %1$s в %2$s: %3$s" + + #: ../libdnf/hy-iutil.cpp:324 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" +-msgstr "" ++msgstr "Не удалось установить perms on %1$s: %2$s" + + #: ../libdnf/dnf-goal.cpp:67 + msgid "Could not depsolve transaction; " +-msgstr "" ++msgstr "Не удалось выполнить деполяцию; " + + #: ../libdnf/dnf-goal.cpp:69 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" +-msgstr[0] "" ++msgstr[0] "%i обнаружена проблема:\n" ++msgstr[1] "%i обнаруженные проблемы:\n" ++msgstr[2] "%i обнаруженные проблемы:\n" + + #: ../libdnf/dnf-goal.cpp:77 + #, c-format + msgid " Problem %1$i: %2$s\n" +-msgstr "" ++msgstr " проблема %1$i: %2$s\n" + + #: ../libdnf/dnf-goal.cpp:79 + #, c-format + msgid " Problem: %s\n" +-msgstr "" ++msgstr " Проблема: %s\n" + + #: ../libdnf/goal/Goal.cpp:55 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" + msgstr "" ++"Неформованный селектор, наличие в фильтре нескольких объектов соответствия" + + #: ../libdnf/goal/Goal.cpp:56 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "" ++"Неисправный селектор, используемый для операции, неправильный тип сравнения" + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +@@ -233,195 +237,205 @@ msgstr "" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +-msgstr "" ++msgstr "нет решателя" + + #: ../libdnf/goal/Goal.cpp:999 + #, c-format + msgid "failed to make %s absolute" +-msgstr "" ++msgstr "не удалось %s абсолютный" + + #: ../libdnf/goal/Goal.cpp:1006 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" +-msgstr "" ++msgstr "не удалось написать debugdata для %1$s: %2$s" + + #: ../libdnf/goal/Goal.cpp:1018 + msgid "no solv in the goal" +-msgstr "" ++msgstr "нет solv в цели" + + #: ../libdnf/goal/Goal.cpp:1020 + msgid "no solution, cannot remove protected package" +-msgstr "" ++msgstr "нет решения, невозможно удалить защищенный пакет" + + #: ../libdnf/goal/Goal.cpp:1023 + msgid "no solution possible" +-msgstr "" ++msgstr "невозможно решение" + + #: ../libdnf/goal/Goal.cpp:1429 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "" ++msgstr "Операция приведет к удалению следующих защищенных пакетов: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" +-msgstr "" ++msgstr "Плохой идентификатор для репо: %s, byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "Для репозитория %s не заданы зеркала или baseurl." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" ++msgstr "Репозиторий '%s'имеет неподдерживаемый тип:' type =%s', пропуская." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Не удается найти правильный baseurl для репозитория: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "Максимальная скорость загрузки ниже минимальной. Измените настройку minrate " + "или throttle" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "не может перечислить ключи: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "Сделки рЕПО %s: 0x%s уже импортировано" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "Сделки рЕПО %s: импортированный ключ 0x%s" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "восстановление: репозиторий «%s» игнорируется, нет метассылок." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + "восстановление: репозиторий «%s» игнорируется, нет пригодного хэш-кода." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "восстановление: не удалось для «%s», сумма %s не совпадает." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "восстановление: «%s» может быть восстановлен - контрольные суммы метассылок " + "совпадают." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + "восстановление: «%s» может быть восстановлен - совпадают метаданные " + "репозитория." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + "восстановление: не удалось для «%s», не совпадают метаданные репозитория." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "Невозможно создать временный каталог репо \"%s«: %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Невозможно создать каталог \"%s«: %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "Невозможно переименовать каталог \"%s\"to\"%s«: %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "репозиторий: используется кэш для: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "Использование режима cacheonly включено, но нет кэша для «%s»" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "РЕПО: загрузка с удаленного устройства: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Не удается загрузить «%s»: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Не удается синхронизировать кэш для репозитория «%s»" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir (): вычисление SHA256 не выполнено" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + "резюме не может использоваться одновременно с параметром byterangestart" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "Не удалось инициализировать PackageTarget: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "Не могу открыть %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Обработчик журнала с идентификатором %ld не существует" +@@ -477,17 +491,17 @@ msgstr "" + msgid "failed to set root" + msgstr "не удалось установить корень" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "ошибка %i проверка транзакции" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "ошибка %i выполняемая транзакция" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "Транзакция не перешла на этап написания, но не вернула ошибку (%i)" +@@ -588,65 +602,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "подпись не проверяет %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "не удалось открыть (общая ошибка): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "не удалось проверить ключ для %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "открытый ключ недоступен для %s" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "подпись не найдена для %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "не удалось добавить элемент установки: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "Ошибка при выполнении транзакции: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "Ошибка при выполнении транзакции и никаких проблем не сообщалось!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "Неустранимая ошибка, запустить восстановление базы данных" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "не удалось найти пакет %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "не удалось добавить элемент стирания %1$s(%2$i)" +@@ -695,7 +736,7 @@ msgstr "не удалось преобразовать '%s'к байтам" + msgid "unknown unit '%s'" + msgstr "неизвестная единица «%s»" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "процентная величина «%s» вне диапазона" +@@ -729,59 +770,59 @@ msgstr "Конфигурация: OptionBinding с идентификаторо + msgid "could not convert '%s' to seconds" + msgstr "не удалось преобразовать '%s'секунд" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "нет %1$d строка для %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "не удалось добавить solv" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "не удалось открыть: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "не может создать временный файл: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "не удалось открыть файл tmp: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main () не удалось записать данные: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() failed to re-load written solv file" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "не удается создать временный файл %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) has failed: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "null repo md file" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "невозможно прочитать файл %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() has failed." + +@@ -798,19 +839,19 @@ msgstr "не удалось автоматически определить ар + msgid "failed creating cachedir %s" + msgstr "не удалось создать кешир %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "не удалось вычислить контрольную сумму RPMDB" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "не удалось загрузить RPMDB" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "Трансформатор: невозможно открыть историю сохранения" + +diff --git a/po/sk.po b/po/sk.po +index 6913d22..3e4d3ca 100644 +--- a/po/sk.po ++++ b/po/sk.po +@@ -3,8 +3,8 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" +-"PO-Revision-Date: 2016-10-11 08:25+0000\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" ++"PO-Revision-Date: 2016-10-11 08:24+0000\n" + "Last-Translator: feonsu \n" + "Language-Team: Slovak\n" + "Language: sk\n" +@@ -261,157 +261,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Nie je možné stiahnuť '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Zlyhala synchronizácia vyrovnávacej pamäte pre repozitár '%s'" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -463,17 +473,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -574,65 +584,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -681,7 +718,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -715,59 +752,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -784,19 +821,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/sq.po b/po/sq.po +index df4a9b3..1d1ed81 100644 +--- a/po/sq.po ++++ b/po/sq.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 08:13+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Albanian\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/sr.po b/po/sr.po +index 02e0bb2..08980cc 100644 +--- a/po/sr.po ++++ b/po/sr.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 08:17+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Serbian\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/sr@latin.po b/po/sr@latin.po +index 4bdd895..3c5ba36 100644 +--- a/po/sr@latin.po ++++ b/po/sr@latin.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 08:25+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Serbian (LATIN)\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/sv.po b/po/sv.po +index ace675d..3fe2552 100644 +--- a/po/sv.po ++++ b/po/sv.po +@@ -5,7 +5,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2018-09-08 03:31+0000\n" + "Last-Translator: Göran Uddeborg \n" + "Language-Team: Swedish\n" +@@ -19,40 +19,41 @@ msgstr "" + #: ../libdnf/hy-iutil.cpp:316 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" +-msgstr "" ++msgstr "Misslyckades att byta namn på %1$s till %2$s: %3$s" + + #: ../libdnf/hy-iutil.cpp:324 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" +-msgstr "" ++msgstr "Misslyckades att sätta rättigheter på %1$s: %2$s" + + #: ../libdnf/dnf-goal.cpp:67 + msgid "Could not depsolve transaction; " +-msgstr "" ++msgstr "Kunde inte göra beroendeupplösning av transaktionen; " + + #: ../libdnf/dnf-goal.cpp:69 + #, c-format + msgid "%i problem detected:\n" + msgid_plural "%i problems detected:\n" +-msgstr[0] "" ++msgstr[0] "%i problem upptäckt:\n" ++msgstr[1] "%i problem upptäckta:\n" + + #: ../libdnf/dnf-goal.cpp:77 + #, c-format + msgid " Problem %1$i: %2$s\n" +-msgstr "" ++msgstr " Problem %1$i: %2$s\n" + + #: ../libdnf/dnf-goal.cpp:79 + #, c-format + msgid " Problem: %s\n" +-msgstr "" ++msgstr " Problem: %s\n" + + #: ../libdnf/goal/Goal.cpp:55 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" +-msgstr "" ++msgstr "Felformaterad selektor, det finns flera matchande objekt i filtret" + + #: ../libdnf/goal/Goal.cpp:56 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" +-msgstr "" ++msgstr "Felformaterad selektor använd för åtgärden, felaktig jämförelsetyp" + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +@@ -234,189 +235,200 @@ msgstr "" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +-msgstr "" ++msgstr "ingen lösare angiven" + + #: ../libdnf/goal/Goal.cpp:999 + #, c-format + msgid "failed to make %s absolute" +-msgstr "" ++msgstr "misslyckades att göra %s absolut" + + #: ../libdnf/goal/Goal.cpp:1006 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" +-msgstr "" ++msgstr "misslyckades att skriva felsökningsdata till %1$s: %2$s" + + #: ../libdnf/goal/Goal.cpp:1018 + msgid "no solv in the goal" +-msgstr "" ++msgstr "ingen lösare i målet" + + #: ../libdnf/goal/Goal.cpp:1020 + msgid "no solution, cannot remove protected package" +-msgstr "" ++msgstr "ingen lösning, kan inte ta bort skyddat paket" + + #: ../libdnf/goal/Goal.cpp:1023 + msgid "no solution possible" +-msgstr "" ++msgstr "ingen lösning är möjlig" + + #: ../libdnf/goal/Goal.cpp:1429 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" ++"Åtgärden skulle resultera i att man tog bort följande skyddade paket: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" +-msgstr "" ++msgstr "Felaktigt id för förrådet: %s, byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "Förrådet %s har ingen spegel eller bas-url satt." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" ++msgstr "Förrådet ”%s” har en typ som inte stödjs: ”type=%s”, hoppar över." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Kan inte hitta en giltig bas-url för förrådet: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "Maximal hämtningshastighet är mindre än minimum. Ändra konfigurationen av " + "minrate eller throttle" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "kan inte lista nycklar: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "förrådet %s: 0x%s är redan importerad" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "förrådet %s: importerade nyckeln 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "återupplivar: förrådet ”%s” överhoppat, ingen metalink." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "återupplivar: förrådet ”%s” överhoppat, ingen användbar hash." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "återupplivar: misslyckades med ”%s”, %s-summor stämmer inte." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "återupplivar: ”%s” kan återupplivas – metalänkens kontrollsummor stämmer." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "återupplivar: ”%s” kan återupplivas – repomd stämmer." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "återupplivar: misslyckades med ”%s”, repomd stämmer inte." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "Kaan inte skapa den temporära förrådskatalogen ”%s”: %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Kan inte skapa katalogen ”%s”: %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "Kan inte byta namn på katalogen ”%s” till ”%s”: %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "förråd: använder cache för: %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "Enbart-cache aktiverat men ingen cache för ”%s”" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "förråd: hämtar från fjärrförråd: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Kan inte hämta ”%s”: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Misslyckades att synkronisera cachen för förrådet ”%s”" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): Beräkningen av SHA256 misslyckades" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume kan inte användas samtidigt med parametern byterangestart" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "Initiering av PackageTarget misslyckades: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "Kan inte öppna %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Logghanterare med id %ld finns inte" +@@ -473,17 +485,17 @@ msgstr "" + msgid "failed to set root" + msgstr "misslyckades att sätta roten" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "Fel %i när transaktionstesten kördes" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "Fel %i när transaktionen kördes" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "Transaktionen kom inte till skrivfasen, men returnerade inget fel(%i)" +@@ -584,65 +596,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "signaturen stämmer inte för %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "misslyckades att öppna (allmänt fel): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "misslyckades att verifiera nyckeln för %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "den publika nyckeln är inte tillgänglig för %s" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "signaturen hittades inte för %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "misslyckades att lägga till installationselement: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "Fel när transaktionen kördes: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "Fel när transaktionen kördes och inga problem rapporterades!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "Ödesdigert fel, kör återställning av databasen" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "misslyckades att hitta paketet %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "kunde inte lägga till borttagningselement %1$s(%2$i)" +@@ -691,7 +730,7 @@ msgstr "kunde inte konvertera ”%s” till byte" + msgid "unknown unit '%s'" + msgstr "okänd enhet ”%s”" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "procentsatsen ”%s” är utanför intervallet" +@@ -727,59 +766,59 @@ msgstr "Konfiguration: OptionBinding med id ”%s” finns redan" + msgid "could not convert '%s' to seconds" + msgstr "kunde inte konvertera ”%s” till sekunder" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "ingen %1$d-sträng för %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "misslyckades att lägga till lösning" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "misslyckades att öppna: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "kan inte skapa temporärfil: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "misslyckades att öppna temporärfil: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() misslyckades att skriva data: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() misslyckades att läsa om en skriven lösningsfil" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "kan inte skapa den temporära filen %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) har misslyckats: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "null repo-md-fil" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "kan inte läsa filen %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() har misslyckats." + +@@ -796,19 +835,19 @@ msgstr "misslyckades att automatdetektera arkitekturen" + msgid "failed creating cachedir %s" + msgstr "misslyckades att skapa cache-katalogen %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "misslyckades att beräkna RPMDB-kontrollsumma" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "misslyckades att läsa in RPMDB" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "Transformerare: kan inte öppna historisk varaktig katalog" + +diff --git a/po/ta.po b/po/ta.po +index d13d844..239521b 100644 +--- a/po/ta.po ++++ b/po/ta.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 08:38+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Tamil\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/te.po b/po/te.po +index 0750af7..40257f6 100644 +--- a/po/te.po ++++ b/po/te.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 08:46+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Telugu\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/th.po b/po/th.po +index 8eaef3d..f11768e 100644 +--- a/po/th.po ++++ b/po/th.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2015-03-23 08:56+0000\n" + "Last-Translator: Copied by Zanata \n" + "Language-Team: Thai\n" +@@ -265,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" ++msgid "Failed to download metadata for repo '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -467,17 +477,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -578,65 +588,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -685,7 +722,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "" +@@ -719,59 +756,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -788,19 +825,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/tr.po b/po/tr.po +index 91c7b0e..bfb556e 100644 +--- a/po/tr.po ++++ b/po/tr.po +@@ -3,7 +3,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2016-11-17 05:30+0000\n" + "Last-Translator: Emin Tufan Çetin \n" + "Language-Team: Turkish\n" +@@ -261,157 +261,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "'%s' indirilemiyor: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "'%s' deposu için önbellek eşzamanlanamıyor" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -463,17 +473,17 @@ msgstr "" + msgid "failed to set root" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -574,65 +584,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "" +@@ -681,7 +718,7 @@ msgstr "" + msgid "unknown unit '%s'" + msgstr "bilinmeyen birim '%s'" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "'%s' yüzdesi aralık dışında" +@@ -715,59 +752,59 @@ msgstr "" + msgid "could not convert '%s' to seconds" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" ++msgid "no %1$s string for %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "" + +@@ -784,19 +821,19 @@ msgstr "" + msgid "failed creating cachedir %s" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "" + +diff --git a/po/uk.po b/po/uk.po +index deafb84..e0759ff 100644 +--- a/po/uk.po ++++ b/po/uk.po +@@ -6,7 +6,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2019-04-20 06:00+0000\n" + "Last-Translator: Yuri Chornoivan \n" + "Language-Team: Ukrainian\n" +@@ -273,161 +273,171 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "Дія призведе до вилучення таких захищених пакунків: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "Помилковий ідентифікатор сховища: %s, байт = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "Для сховища %s не встановлено дзеркала або базової адреси." + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + "Сховище «%s» належить до непідтримуваного типу: «type=%s», пропускаємо." + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Не вдалося знайти коректну базову адресу для сховища: %s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "" + "Максимальна швидкість отримання даних є меншою за мінімальну. Будь ласка, " + "змініть значення для minrate або throttle" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "не вдалося побудувати список ключів: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "сховище %s: 0x%s вже імпортовано" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "сховище %s: імпортовано ключ 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "відновлюємо: сховище «%s» пропущено, немає метапосилання." + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "відновлюємо: сховище «%s» пропущено, немає придатного хешу." + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "відновлюємо: помилка обробки «%s», невідповідна контрольна сума %s." + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "відновлюємо: «%s» можна відновити — контрольні суми метапосилань збігаються." + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "відновлюємо: «%s» можна відновити — значення repomd збігаються." + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "відновлюємо: помилка обробки «%s», невідповідність repomd." + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "Не вдалося створити каталог призначення сховища «%s»: %s" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "Не вдалося створити тимчасовий каталог сховища «%s»: %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Не вдалося створити каталог «%s»: %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "Не вдалося перейменувати каталог «%s» на «%s»: %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "сховище: використовуємо кеш для %s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "Увімкнено отримання даних лише з кешу, але немає кешу для «%s»" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "сховище: отримуємо з віддаленого сховища: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "Не вдалося отримати «%s»: %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "Не вдалося синхронізувати кеш для сховища «%s»" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): помилка під час обчислення SHA256" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume не можна використовувати одночасно з параметром byterangestart" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "Помилка ініціалізації PackageTarget: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "Не вдалося відкрити %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Обробника журналу із ідентифікатором %ld не існує" +@@ -483,17 +493,17 @@ msgstr "Недостатньо вільного місця у %1$s: потріб + msgid "failed to set root" + msgstr "не вдалося встановити root" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "Помилка %i під час перевірки операції" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "Помилка %i під час виконання операції" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" +@@ -597,66 +607,93 @@ msgstr "Пропущено PLATFORM_ID у %s" + msgid "No valid Platform ID detected" + msgstr "Не виявлено коректного ідентифікатора платформи" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "Не вдалося увімкнути декілька потоків для модуля «%s»" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "Конфлікт типових параметрів із сховищем «%s»: %s" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "не перевірено підпис для %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "не вдалося відкрити (загальна помилка): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "не вдалося перевірити ключ для %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "відкритий ключ для %s недоступний" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "не знайдено підпису для %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "не вдалося додати елемент встановлення: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "Помилка під час виконання операції: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "" + "Помилка під час виконання операції, а звітів щодо проблем не надходило!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "Критична помилка, виконуємо відновлення бази даних" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "не вдалося знайти пакунок %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "не вдалося додати елемент вилучення %1$s(%2$i)" +@@ -705,7 +742,7 @@ msgstr "не вдалося перетворити «%s» на байти" + msgid "unknown unit '%s'" + msgstr "невідома одиниця, «%s»" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "значення відсотків, «%s», поза припустимим діапазоном" +@@ -739,59 +776,59 @@ msgstr "Налаштування: OptionBinding з ідентифікаторо + msgid "could not convert '%s' to seconds" + msgstr "не вдалося перетворити «%s» на секунди" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "немає рядка %1$d для %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "не вдалося додати solv" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "не вдалося відкрити: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "не вдалося створити тимчасовий файл: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "не вдалося відкрити тимчасовий файл: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() не вдалося записати дані: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() не вдалося перезавантажити записаний файл solv" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "не вдалося створити тимчасовий файл %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "помилка write_ext(%1$d): %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "порожній файл md сховища" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "не вдалося прочитати файл %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "помилка repo_add_solv()." + +@@ -808,19 +845,19 @@ msgstr "не вдалося автоматично визначити архіт + msgid "failed creating cachedir %s" + msgstr "не вдалося створити каталог кешу %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "не вдалося обчислити контрольну суму RPMDB" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "не вдалося завантажити RPMDB" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "Не знайдено типових налаштувань модуля" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "Трансформер: не вдалося відкрити сталий каталог журналу" + +diff --git a/po/zanata.xml b/po/zanata.xml +index 1df88b1..9610010 100644 +--- a/po/zanata.xml ++++ b/po/zanata.xml +@@ -2,6 +2,6 @@ + + https://fedora.zanata.org/ + libdnf +- master ++ rhel-8.1 + gettext + +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 0a31ce6..705b0e5 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -1,14 +1,15 @@ +-# Qi Fan , 2016. #zanata + # Tommy He , 2016. #zanata + # Jerry Lee , 2017. #zanata + # Ludek Janda , 2018. #zanata ++# Ludek Janda , 2019. #zanata ++# Tony Fu , 2019. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" +-"PO-Revision-Date: 2018-09-18 02:42+0000\n" +-"Last-Translator: Copied by Zanata \n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" ++"PO-Revision-Date: 2019-07-30 10:35+0000\n" ++"Last-Translator: Ludek Janda \n" + "Language-Team: Chinese (China)\n" + "Language: zh_CN\n" + "MIME-Version: 1.0\n" +@@ -57,181 +58,181 @@ msgstr "这个操作使用了 Ill-formed Selector,不正确的比较类型" + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +-msgstr "" ++msgstr " 不属于 distupgrade 仓库" + + #: ../libdnf/goal/Goal.cpp:68 ../libdnf/goal/Goal.cpp:94 + msgid " has inferior architecture" +-msgstr "" ++msgstr " 有 inferior 架构" + + #: ../libdnf/goal/Goal.cpp:69 + msgid "problem with installed package " +-msgstr "" ++msgstr "安装的软件包的问题 " + + #: ../libdnf/goal/Goal.cpp:70 ../libdnf/goal/Goal.cpp:96 + msgid "conflicting requests" +-msgstr "" ++msgstr "冲突的请求" + + #: ../libdnf/goal/Goal.cpp:71 ../libdnf/goal/Goal.cpp:97 + msgid "unsupported request" +-msgstr "" ++msgstr "不支持的请求" + + #: ../libdnf/goal/Goal.cpp:72 ../libdnf/goal/Goal.cpp:98 + msgid "nothing provides requested " +-msgstr "" ++msgstr "没有提供请求的。 " + + #: ../libdnf/goal/Goal.cpp:73 + #, c-format + msgid "package %s does not exist" +-msgstr "" ++msgstr "软件包 %s 不存在" + + #: ../libdnf/goal/Goal.cpp:74 ../libdnf/goal/Goal.cpp:100 + msgid " is provided by the system" +-msgstr "" ++msgstr " 由系统提供" + + #: ../libdnf/goal/Goal.cpp:75 ../libdnf/goal/Goal.cpp:101 + msgid "some dependency problem" +-msgstr "" ++msgstr "一些依赖性问题" + + #: ../libdnf/goal/Goal.cpp:76 + msgid "cannot install the best update candidate for package " +-msgstr "" ++msgstr "无法为软件包安装最佳更新选择 " + + #: ../libdnf/goal/Goal.cpp:77 ../libdnf/goal/Goal.cpp:103 + msgid "cannot install the best candidate for the job" +-msgstr "" ++msgstr "无法为任务安装最佳选择" + + #: ../libdnf/goal/Goal.cpp:78 + #, c-format + msgid "package %s is excluded" +-msgstr "" ++msgstr "软件包 %s 已被排除" + + #: ../libdnf/goal/Goal.cpp:79 + #, c-format + msgid "package %s does not have a compatible architecture" +-msgstr "" ++msgstr "软件包 %s 没有兼容的架构" + + #: ../libdnf/goal/Goal.cpp:80 + #, c-format + msgid "package %s is not installable" +-msgstr "" ++msgstr "软件包 %s 是不可安装的" + + #: ../libdnf/goal/Goal.cpp:81 + #, c-format + msgid "nothing provides %s needed by %s" +-msgstr "" ++msgstr "没有提供 %s(%s 需要)" + + #: ../libdnf/goal/Goal.cpp:82 + #, c-format + msgid "cannot install both %s and %s" +-msgstr "" ++msgstr "无法同时安装 %s 和 %s" + + #: ../libdnf/goal/Goal.cpp:83 + #, c-format + msgid "package %s conflicts with %s provided by %s" +-msgstr "" ++msgstr "软件包 %s 与 %s(由 %s 提供)冲突" + + #: ../libdnf/goal/Goal.cpp:84 + #, c-format + msgid "package %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "软件包 %s 过时了 %s(由 %s 提供)" + + #: ../libdnf/goal/Goal.cpp:85 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "安装的软件包 %s 过时了 %s(由 %s 提供)" + + #: ../libdnf/goal/Goal.cpp:86 + #, c-format + msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "软件包 %s 隐式过期了 %s(由 %s 提供)" + + #: ../libdnf/goal/Goal.cpp:87 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "软件包 %s 需要 %s,但没有供应商可以安装" + + #: ../libdnf/goal/Goal.cpp:88 + #, c-format + msgid "package %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "软件包 %s 与自己提供的 %s 冲突" + + #: ../libdnf/goal/Goal.cpp:89 + #, c-format + msgid "both package %s and %s obsolete %s" +-msgstr "" ++msgstr "软件包 %s 和 %s 都过期了 %s" + + #: ../libdnf/goal/Goal.cpp:95 + msgid "problem with installed module " +-msgstr "" ++msgstr "安装的模块的问题 " + + #: ../libdnf/goal/Goal.cpp:99 + #, c-format + msgid "module %s does not exist" +-msgstr "" ++msgstr "模块 %s 不存在" + + #: ../libdnf/goal/Goal.cpp:102 + msgid "cannot install the best update candidate for module " +-msgstr "" ++msgstr "无法为模块安装最佳更新选择 " + + #: ../libdnf/goal/Goal.cpp:104 + #, c-format + msgid "module %s is disabled" +-msgstr "" ++msgstr "模块 %s 被禁用" + + #: ../libdnf/goal/Goal.cpp:105 + #, c-format + msgid "module %s does not have a compatible architecture" +-msgstr "" ++msgstr "模块 %s 没有兼容的架构" + + #: ../libdnf/goal/Goal.cpp:106 + #, c-format + msgid "module %s is not installable" +-msgstr "" ++msgstr "模块 %s 不可安装" + + #: ../libdnf/goal/Goal.cpp:107 + #, c-format + msgid "nothing provides %s needed by module %s" +-msgstr "" ++msgstr "没有提供 %s(模块 %s 需要它)" + + #: ../libdnf/goal/Goal.cpp:108 + #, c-format + msgid "cannot install both modules %s and %s" +-msgstr "" ++msgstr "无法同时安装模块 %s 和 %s" + + #: ../libdnf/goal/Goal.cpp:109 + #, c-format + msgid "module %s conflicts with %s provided by %s" +-msgstr "" ++msgstr "模块 %s 与 %s (由 %s 提供)冲突" + + #: ../libdnf/goal/Goal.cpp:110 + #, c-format + msgid "module %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "模块 %s 过时了 %s(由 %s 提供)" + + #: ../libdnf/goal/Goal.cpp:111 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" +-msgstr "" ++msgstr "安装的模块 %s 过时了 %s(由 %s 提供)" + + #: ../libdnf/goal/Goal.cpp:112 + #, c-format + msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "" ++msgstr "模块 %s 隐式过时了 %s(由 %s 提供)" + + #: ../libdnf/goal/Goal.cpp:113 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "" ++msgstr "模块 %s 需要 %s,但没有供应商可以安装" + + #: ../libdnf/goal/Goal.cpp:114 + #, c-format + msgid "module %s conflicts with %s provided by itself" +-msgstr "" ++msgstr "模块 %s 与自己提供的 %s 冲突" + + #: ../libdnf/goal/Goal.cpp:115 + #, c-format + msgid "both module %s and %s obsolete %s" +-msgstr "" ++msgstr "模块 %s 和 %s 都过期了 %s" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +@@ -264,157 +265,167 @@ msgid "" + "The operation would result in removing the following protected packages: " + msgstr "这个操作可能会导致删除以下受保护的软件包: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" + msgstr "repo 的 id 无效: %s, byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "软件仓库 %s 没有设置镜像或者 baseurl。" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "无法为仓库 %s 找到一个有效的 baseurl" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "不能列出 key: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "%s: gpgme_set_protocol(): %s" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "%s: gpgme_op_assuan_transact_ext(): %s" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0x%s 已被导入" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: 导入的 key 0x%s." + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "恢复中: 仓库 '%s' 已被跳过,无 metalink。" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "恢复中: 仓库 '%s' 已被跳过,无可用 hash。" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "恢复: '%s' 失败,不匹配的 %s sum。" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "恢复中: '%s' 可以被恢复 - metalink 校验和匹配。" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "恢复: '%s' 可用被恢复 - repomd 匹配。" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "恢复: '%s' 失败,不匹配的 repomd。" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" +-msgstr "" ++msgstr "无法创建 repo 目标目录 \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "无法创建 repo 临时目录 \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "无法创建目录 \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "仓库: 正在为 %s 使用缓存" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "仅使用缓存已开启但没有 '%s' 的缓存" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: 从远程下载: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "无法下载 '%s': %s." + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "同步仓库 '%s' 缓存失败" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "为 repo '%s' 下载元数据失败" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): 计算 SHA256 失败" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume 不能和 the byterangestart 参数同时使用" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget 初始失败: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "无法打开 %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "id 为 %ld 的日志处理器不存在" +@@ -466,17 +477,17 @@ msgstr "%1$s 没有足够的空闲空间: 需要 %2$s,可用 %3$s" + msgid "failed to set root" + msgstr "设置 root 失败" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "错误 %i 运行事务测试" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "错误 %i 运行事务" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "事务没有进入写阶段,但没有返回错误(%i)" +@@ -494,37 +505,37 @@ msgstr "无法删除 %s" + #: ../libdnf/plugin/plugin.cpp:46 + #, c-format + msgid "Can't load shared library \"%s\": %s" +-msgstr "" ++msgstr "无法加载共享库 \"%s\": %s" + + #: ../libdnf/plugin/plugin.cpp:61 ../libdnf/plugin/plugin.cpp:67 + #: ../libdnf/plugin/plugin.cpp:73 ../libdnf/plugin/plugin.cpp:79 + #, c-format + msgid "Can't obtain address of symbol \"%s\": %s" +-msgstr "" ++msgstr "无法获取符号 \"%s\" 的地址 : %s" + + #: ../libdnf/plugin/plugin.cpp:86 + #, c-format + msgid "Loading plugin file=\"%s\"" +-msgstr "" ++msgstr "加载插件文件=\"%s\"" + + #: ../libdnf/plugin/plugin.cpp:89 + #, c-format + msgid "Loaded plugin name=\"%s\", version=\"%s\"" +-msgstr "" ++msgstr "加载插件名=\"%s\", 版本=\"%s\"" + + #: ../libdnf/plugin/plugin.cpp:96 + msgid "Plugins::loadPlugins() dirPath cannot be empty" +-msgstr "" ++msgstr "Plugins::loadPlugins() dirPath 不能为空" + + #: ../libdnf/plugin/plugin.cpp:105 + #, c-format + msgid "Can't read plugin directory \"%s\": %s" +-msgstr "" ++msgstr "无法读插件目录 \"%s\": %s" + + #: ../libdnf/plugin/plugin.cpp:114 + #, c-format + msgid "Can't load plugin \"%s\": %s" +-msgstr "" ++msgstr "无法加载插件 \"%s\": %s" + + #: ../libdnf/dnf-state.cpp:1183 + #, c-format +@@ -553,89 +564,116 @@ msgstr "已是 100%% 状态 [%s]" + #: ../libdnf/module/ModulePackage.cpp:413 + #, c-format + msgid "Invalid format of Platform module: %s" +-msgstr "" ++msgstr "Platform 模块无效的格式 : %s" + + #: ../libdnf/module/ModulePackage.cpp:428 + msgid "Multiple module platforms provided by available packages\n" +-msgstr "" ++msgstr "由可用软件包提供的多个模块平台\n" + + #: ../libdnf/module/ModulePackage.cpp:441 + msgid "Multiple module platforms provided by installed packages\n" +-msgstr "" ++msgstr "由安装的软件包提供的多个模块平台\n" + + #: ../libdnf/module/ModulePackage.cpp:468 + #, c-format + msgid "Detection of Platform Module in %s failed: %s" +-msgstr "" ++msgstr "删除 %s 中的 Platform 模块失败 : %s" + + #: ../libdnf/module/ModulePackage.cpp:477 + #, c-format + msgid "Missing PLATFORM_ID in %s" +-msgstr "" ++msgstr "在 %s 中缺少 PLATFORM_ID" + + #: ../libdnf/module/ModulePackage.cpp:482 + msgid "No valid Platform ID detected" +-msgstr "" ++msgstr "没有检测到有效的 Platform ID" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" +-msgstr "" ++msgstr "无法为模块 '%s' 启用多个流" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" +-msgstr "" ++msgstr "默认设置与 repo '%s' 冲突 : %s" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "无法在 '%s' 加载模块 Fail-Safe 数据" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "无法为模块 '%s:%s' 加载模块 Fail-Safe 数据" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "无法把模块 Fail Safe 数据 safe 为 '%s'" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "无法在 '%s' 中删除一个模块的 Fail Safe 数据" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "模块软件包 '%s' 没有可用的元数据,它不能在系统上安装" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "没有为 %s 验证签名" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "无法打开(一般错误): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "无法为 %s 验证密钥" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "没有 %s 的公钥" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "没有找到 %s 的签名" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "无法添加安装元素: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "错误运行事务: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "错误运行事务并且没有报告问题!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "严重错误,运行数据库恢复" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "无法找到软件包 %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "无法添加删除元素 %1$s(%2$i)" +@@ -684,7 +722,7 @@ msgstr "无法把 '%s' 转换为字节" + msgid "unknown unit '%s'" + msgstr "未知单元 “%s”" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "百分数 '%s' 超出范围" +@@ -718,59 +756,59 @@ msgstr "配置:ID 为 \"%s\" 的 OptionBinding 已存在" + msgid "could not convert '%s' to seconds" + msgstr "无法把 '%s' 转换为秒" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "没有为 %2$s 的 %1$d 字符串" ++msgid "no %1$s string for %2$s" ++msgstr "没有为 %2$s 的 %1$s 字符串" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "添加 solv 失败" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "打开失败:%s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "不能创建临时文件: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "打开 tmp 文件失败: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main() 写数据失败: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main() 重新加载写的 solv 文件失败" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "不能创建临时文件 %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) 已失败: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "null repo md 文件" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "不能读文件 %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv() 已失败。" + +@@ -787,19 +825,19 @@ msgstr "自动检测架构失败" + msgid "failed creating cachedir %s" + msgstr "无法创建 cachedir %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "无法计算 RPMDB checksum" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "无法加载 RPMDB" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" +-msgstr "" ++msgstr "没有找到模块默认设置" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "Transformer: 无法打开 history persist dir" + +diff --git a/po/zh_TW.po b/po/zh_TW.po +index e1124f8..bd35935 100644 +--- a/po/zh_TW.po ++++ b/po/zh_TW.po +@@ -5,7 +5,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2019-06-05 11:00+0200\n" ++"POT-Creation-Date: 2019-07-30 11:16+0200\n" + "PO-Revision-Date: 2019-04-02 05:41+0000\n" + "Last-Translator: Cheng-Chia Tseng \n" + "Language-Team: Chinese (Taiwan)\n" +@@ -44,15 +44,15 @@ msgstr " 第 %1$i 個問題:%2$s\n" + #: ../libdnf/dnf-goal.cpp:79 + #, c-format + msgid " Problem: %s\n" +-msgstr "" ++msgstr " 問題: %s\n" + + #: ../libdnf/goal/Goal.cpp:55 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" +-msgstr "" ++msgstr "形狀錯誤的選擇器,過濾器中存在多個匹配對象" + + #: ../libdnf/goal/Goal.cpp:56 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" +-msgstr "" ++msgstr "用於操作的錯誤選擇器,不正確的比較類型" + + #: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:93 + msgid " does not belong to a distupgrade repository" +@@ -234,186 +234,196 @@ msgstr "" + + #: ../libdnf/goal/Goal.cpp:994 + msgid "no solver set" +-msgstr "" ++msgstr "沒有解算器集" + + #: ../libdnf/goal/Goal.cpp:999 + #, c-format + msgid "failed to make %s absolute" +-msgstr "" ++msgstr "未能成功 %s 絕對" + + #: ../libdnf/goal/Goal.cpp:1006 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" +-msgstr "" ++msgstr "寫入debugdata失敗了 %1$s: %2$s" + + #: ../libdnf/goal/Goal.cpp:1018 + msgid "no solv in the goal" +-msgstr "" ++msgstr "沒有解決目標" + + #: ../libdnf/goal/Goal.cpp:1020 + msgid "no solution, cannot remove protected package" +-msgstr "" ++msgstr "沒有解決方案,無法刪除受保護的包" + + #: ../libdnf/goal/Goal.cpp:1023 + msgid "no solution possible" +-msgstr "" ++msgstr "無法解決問題" + + #: ../libdnf/goal/Goal.cpp:1429 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "" ++msgstr "該操作將導致刪除以下受保護的包: " + +-#: ../libdnf/repo/Repo.cpp:324 ++#: ../libdnf/repo/Repo.cpp:315 + #, c-format + msgid "Bad id for repo: %s, byte = %s %d" +-msgstr "" ++msgstr "回購的錯誤ID: %s, ,byte = %s %d" + +-#: ../libdnf/repo/Repo.cpp:349 ++#: ../libdnf/repo/Repo.cpp:340 + #, c-format + msgid "Repository %s has no mirror or baseurl set." + msgstr "「%s」軟體庫沒有設定任何鏡像或 baseurl。" + +-#: ../libdnf/repo/Repo.cpp:358 ++#: ../libdnf/repo/Repo.cpp:349 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" ++msgstr "存儲庫'%s'有不支持的類型:'type =%s',跳過。" + +-#: ../libdnf/repo/Repo.cpp:562 ++#: ../libdnf/repo/Repo.cpp:553 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "無法找到軟體庫的有效 baseurl:%s" + +-#: ../libdnf/repo/Repo.cpp:598 ../libdnf/repo/Repo.cpp:1508 ++#: ../libdnf/repo/Repo.cpp:589 ../libdnf/repo/Repo.cpp:1526 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of" + " minrate or throttle" + msgstr "最大下載速度低於最低下載速度。請調整 minrate 或 throttle 的設定檔" + +-#: ../libdnf/repo/Repo.cpp:648 ../libdnf/repo/Repo.cpp:670 ++#: ../libdnf/repo/Repo.cpp:639 ../libdnf/repo/Repo.cpp:661 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: ../libdnf/repo/Repo.cpp:656 ../libdnf/repo/Repo.cpp:678 ++#: ../libdnf/repo/Repo.cpp:647 ../libdnf/repo/Repo.cpp:669 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: ../libdnf/repo/Repo.cpp:701 ../libdnf/repo/Repo.cpp:767 +-#: ../libdnf/repo/Repo.cpp:861 ++#: ../libdnf/repo/Repo.cpp:692 ../libdnf/repo/Repo.cpp:758 ++#: ../libdnf/repo/Repo.cpp:830 ../libdnf/repo/Repo.cpp:872 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: ../libdnf/repo/Repo.cpp:728 ../libdnf/repo/Repo.cpp:792 ++#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:783 + #, c-format + msgid "can not list keys: %s" + msgstr "無法列出鍵: %s" + ++#: ../libdnf/repo/Repo.cpp:823 ++#, c-format ++msgid "%s: gpgme_set_protocol(): %s" ++msgstr "" ++ + #: ../libdnf/repo/Repo.cpp:836 + #, c-format ++msgid "%s: gpgme_op_assuan_transact_ext(): %s" ++msgstr "" ++ ++#: ../libdnf/repo/Repo.cpp:851 ++#, c-format + msgid "repo %s: 0x%s already imported" + msgstr "回購 %s:0x%s 已經導入" + +-#: ../libdnf/repo/Repo.cpp:868 ++#: ../libdnf/repo/Repo.cpp:886 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "回購 %s:導入的密鑰0x%s。" + +-#: ../libdnf/repo/Repo.cpp:1007 ++#: ../libdnf/repo/Repo.cpp:1025 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "reviving:由於沒有 Metalink,所以跳過軟體庫「%s」" + +-#: ../libdnf/repo/Repo.cpp:1026 ++#: ../libdnf/repo/Repo.cpp:1044 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "reviving:由於沒有可使用的雜湊值,跳過軟體庫「%s」" + +-#: ../libdnf/repo/Repo.cpp:1049 ++#: ../libdnf/repo/Repo.cpp:1067 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "reviving:因為 %s 總和不符合,「%s」失敗" + +-#: ../libdnf/repo/Repo.cpp:1055 ++#: ../libdnf/repo/Repo.cpp:1073 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "reviving:可以重生(revived)「%s」 - metalink checksum 符合。" + +-#: ../libdnf/repo/Repo.cpp:1080 ++#: ../libdnf/repo/Repo.cpp:1098 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "reviving:可以復活 (revived)「%s」 - repomd 符合。" + +-#: ../libdnf/repo/Repo.cpp:1082 ++#: ../libdnf/repo/Repo.cpp:1100 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "reviving:由於不符合的 repomd,「%s」失敗。" + +-#: ../libdnf/repo/Repo.cpp:1100 ++#: ../libdnf/repo/Repo.cpp:1118 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1106 ++#: ../libdnf/repo/Repo.cpp:1124 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "無法創建repo臨時目錄“%s“: %s" + +-#: ../libdnf/repo/Repo.cpp:1120 ++#: ../libdnf/repo/Repo.cpp:1138 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "無法創建目錄“%s“: %s" + +-#: ../libdnf/repo/Repo.cpp:1143 ++#: ../libdnf/repo/Repo.cpp:1161 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "無法重命名目錄“%s“ 至 ”%s“: %s" + +-#: ../libdnf/repo/Repo.cpp:1163 ++#: ../libdnf/repo/Repo.cpp:1181 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo:使用快取為:%s" + +-#: ../libdnf/repo/Repo.cpp:1175 ++#: ../libdnf/repo/Repo.cpp:1193 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "已啟用「只快取 (cache-only)」,但是沒有 %s 的快取。" + +-#: ../libdnf/repo/Repo.cpp:1179 ++#: ../libdnf/repo/Repo.cpp:1197 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo:從遠程下載: %s" + +-#: ../libdnf/repo/Repo.cpp:1185 ++#: ../libdnf/repo/Repo.cpp:1203 + #, c-format + msgid "Cannot download '%s': %s." + msgstr "無法下載「%s」:%s。" + +-#: ../libdnf/repo/Repo.cpp:1186 ++#: ../libdnf/repo/Repo.cpp:1204 + #, c-format +-msgid "Failed to synchronize cache for repo '%s'" +-msgstr "無法為「%s」軟體庫同步快取" ++msgid "Failed to download metadata for repo '%s'" ++msgstr "" + +-#: ../libdnf/repo/Repo.cpp:1212 ++#: ../libdnf/repo/Repo.cpp:1230 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir():SHA256的計算失敗" + +-#: ../libdnf/repo/Repo.cpp:1598 ++#: ../libdnf/repo/Repo.cpp:1616 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume不能與byterangestart param同時使用" + +-#: ../libdnf/repo/Repo.cpp:1609 ++#: ../libdnf/repo/Repo.cpp:1627 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget初始化失敗: %s" + +-#: ../libdnf/repo/Repo.cpp:1726 ++#: ../libdnf/repo/Repo.cpp:1744 + #, c-format + msgid "Cannot open %s: %s" + msgstr "不能打開 %s: %s" + +-#: ../libdnf/repo/Repo.cpp:1770 ++#: ../libdnf/repo/Repo.cpp:1788 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "帶有id的日誌處理程序 %ld 不存在" +@@ -465,17 +475,17 @@ msgstr "沒有足夠的可用空間 %1$s:需要 %2$s, ,可用 %3$s" + msgid "failed to set root" + msgstr "無法設置root" + +-#: ../libdnf/dnf-transaction.cpp:1390 ++#: ../libdnf/dnf-transaction.cpp:1391 + #, c-format + msgid "Error %i running transaction test" + msgstr "錯誤 %i 執行處理事項測試" + +-#: ../libdnf/dnf-transaction.cpp:1430 ++#: ../libdnf/dnf-transaction.cpp:1431 + #, c-format + msgid "Error %i running transaction" + msgstr "錯誤 %i 執行處理事項" + +-#: ../libdnf/dnf-transaction.cpp:1445 ++#: ../libdnf/dnf-transaction.cpp:1446 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "處理事項沒有進入寫入階段,但沒有傳回錯誤 (%i)" +@@ -576,65 +586,92 @@ msgstr "" + msgid "No valid Platform ID detected" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:57 ++#: ../libdnf/module/ModulePackageContainer.cpp:68 + #, c-format + msgid "Cannot enable multiple streams for module '%s'" + msgstr "" + +-#: ../libdnf/module/ModulePackageContainer.cpp:219 ++#: ../libdnf/module/ModulePackageContainer.cpp:290 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "" + +-#: ../libdnf/dnf-rpmts.cpp:88 ../libdnf/dnf-rpmts.cpp:133 ++#: ../libdnf/module/ModulePackageContainer.cpp:1554 ++#, c-format ++msgid "Unable to load modular Fail-Safe data at '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1560 ++#, c-format ++msgid "Unable to load modular Fail-Safe data for module '%s:%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1640 ++#, c-format ++msgid "Unable to save a modular Fail Safe data to '%s'" ++msgstr "" ++ ++#: ../libdnf/module/ModulePackageContainer.cpp:1665 ++#, c-format ++msgid "Unable to remove a modular Fail Safe data in '%s'" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:73 ++#, c-format ++msgid "" ++"No available modular metadata for modular package '%s'; cannot be installed " ++"on the system" ++msgstr "" ++ ++#: ../libdnf/dnf-rpmts.cpp:115 ../libdnf/dnf-rpmts.cpp:160 + #, c-format + msgid "signature does not verify for %s" + msgstr "簽名無法驗證 %s" + +-#: ../libdnf/dnf-rpmts.cpp:96 ../libdnf/dnf-rpmts.cpp:141 ++#: ../libdnf/dnf-rpmts.cpp:123 ../libdnf/dnf-rpmts.cpp:168 + #, c-format + msgid "failed to open(generic error): %s" + msgstr "無法打開(一般錯誤): %s" + +-#: ../libdnf/dnf-rpmts.cpp:109 ++#: ../libdnf/dnf-rpmts.cpp:136 + #, c-format + msgid "failed to verify key for %s" + msgstr "無法驗證密鑰 %s" + +-#: ../libdnf/dnf-rpmts.cpp:117 ++#: ../libdnf/dnf-rpmts.cpp:144 + #, c-format + msgid "public key unavailable for %s" + msgstr "公鑰不可用 %s" + +-#: ../libdnf/dnf-rpmts.cpp:125 ++#: ../libdnf/dnf-rpmts.cpp:152 + #, c-format + msgid "signature not found for %s" + msgstr "找不到簽名 %s" + +-#: ../libdnf/dnf-rpmts.cpp:154 ++#: ../libdnf/dnf-rpmts.cpp:187 + #, c-format + msgid "failed to add install element: %1$s [%2$i]" + msgstr "無法添加安裝元素: %1$s [%2$i]" + +-#: ../libdnf/dnf-rpmts.cpp:210 ++#: ../libdnf/dnf-rpmts.cpp:268 + #, c-format + msgid "Error running transaction: %s" + msgstr "執行處理事項時出錯: %s" + +-#: ../libdnf/dnf-rpmts.cpp:219 ++#: ../libdnf/dnf-rpmts.cpp:277 + msgid "Error running transaction and no problems were reported!" + msgstr "執行處理事項時出錯並且沒有回報任何問題!" + +-#: ../libdnf/dnf-rpmts.cpp:282 ++#: ../libdnf/dnf-rpmts.cpp:340 + msgid "Fatal error, run database recovery" + msgstr "重大錯誤,執行資料庫恢復" + +-#: ../libdnf/dnf-rpmts.cpp:291 ++#: ../libdnf/dnf-rpmts.cpp:349 + #, c-format + msgid "failed to find package %s" + msgstr "找不到包裹 %s" + +-#: ../libdnf/dnf-rpmts.cpp:337 ++#: ../libdnf/dnf-rpmts.cpp:395 + #, c-format + msgid "could not add erase element %1$s(%2$i)" + msgstr "無法添加擦除元素 %1$s(%2$i)" +@@ -683,7 +720,7 @@ msgstr "無法轉換'%s'到字節" + msgid "unknown unit '%s'" + msgstr "未知的單位「%s」" + +-#: ../libdnf/conf/ConfigMain.cpp:320 ++#: ../libdnf/conf/ConfigMain.cpp:322 + #, c-format + msgid "percentage '%s' is out of range" + msgstr "「%s」百分比超出範圍" +@@ -717,59 +754,59 @@ msgstr "配置:具有id的OptionBinding“%s“ 已經存在" + msgid "could not convert '%s' to seconds" + msgstr "無法轉換'%s'到秒" + +-#: ../libdnf/dnf-sack.cpp:399 ++#: ../libdnf/dnf-sack.cpp:400 + #, c-format +-msgid "no %1$d string for %2$s" +-msgstr "沒有 %1$d 字符串 %2$s" ++msgid "no %1$s string for %2$s" ++msgstr "" + +-#: ../libdnf/dnf-sack.cpp:422 ++#: ../libdnf/dnf-sack.cpp:423 + msgid "failed to add solv" + msgstr "未能添加solv" + +-#: ../libdnf/dnf-sack.cpp:440 ++#: ../libdnf/dnf-sack.cpp:441 + #, c-format + msgid "failed to open: %s" + msgstr "未能打開: %s" + +-#: ../libdnf/dnf-sack.cpp:519 ++#: ../libdnf/dnf-sack.cpp:520 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "無法創建臨時文件: %s" + +-#: ../libdnf/dnf-sack.cpp:529 ++#: ../libdnf/dnf-sack.cpp:530 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "打開tmp文件失敗: %s" + +-#: ../libdnf/dnf-sack.cpp:541 ++#: ../libdnf/dnf-sack.cpp:542 + #, c-format + msgid "write_main() failed writing data: %i" + msgstr "write_main()寫入資料失敗: %i" + +-#: ../libdnf/dnf-sack.cpp:558 ++#: ../libdnf/dnf-sack.cpp:559 + msgid "write_main() failed to re-load written solv file" + msgstr "write_main()無法重新加載寫入的solv文件" + +-#: ../libdnf/dnf-sack.cpp:623 ++#: ../libdnf/dnf-sack.cpp:624 + #, c-format + msgid "can not create temporary file %s" + msgstr "無法創建臨時文件 %s" + +-#: ../libdnf/dnf-sack.cpp:641 ++#: ../libdnf/dnf-sack.cpp:642 + #, c-format + msgid "write_ext(%1$d) has failed: %2$d" + msgstr "write_ext(%1$d) 失敗了: %2$d" + +-#: ../libdnf/dnf-sack.cpp:696 ++#: ../libdnf/dnf-sack.cpp:697 + msgid "null repo md file" + msgstr "null repo md文件" + +-#: ../libdnf/dnf-sack.cpp:705 ++#: ../libdnf/dnf-sack.cpp:706 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "無法讀取文件 %1$s: %2$s" + +-#: ../libdnf/dnf-sack.cpp:719 ++#: ../libdnf/dnf-sack.cpp:720 + msgid "repo_add_solv() has failed." + msgstr "repo_add_solv()失敗了。" + +@@ -786,19 +823,19 @@ msgstr "無法自動檢測架構" + msgid "failed creating cachedir %s" + msgstr "創建cachedir失敗了 %s" + +-#: ../libdnf/dnf-sack.cpp:1700 ++#: ../libdnf/dnf-sack.cpp:1702 + msgid "failed calculating RPMDB checksum" + msgstr "計算RPMDB校驗和失敗" + +-#: ../libdnf/dnf-sack.cpp:1724 ++#: ../libdnf/dnf-sack.cpp:1726 + msgid "failed loading RPMDB" + msgstr "加載RPMDB失敗" + +-#: ../libdnf/dnf-sack.cpp:2387 ++#: ../libdnf/dnf-sack.cpp:2393 + msgid "No module defaults found" + msgstr "" + +-#: ../libdnf/transaction/Transformer.cpp:658 ++#: ../libdnf/transaction/Transformer.cpp:659 + msgid "Transformer: can't open history persist dir" + msgstr "變形金剛:無法打開歷史堅持導演" + +-- +libgit2 0.28.2 + diff --git a/SOURCES/0005-Exclude-module-pkgs-that-have-conflict.patch b/SOURCES/0005-Exclude-module-pkgs-that-have-conflict.patch deleted file mode 100644 index daf3e15..0000000 --- a/SOURCES/0005-Exclude-module-pkgs-that-have-conflict.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0f9e61f8325c59d06894079d43773346a70448e2 Mon Sep 17 00:00:00 2001 -From: Jaroslav Mracek -Date: Mon, 11 Feb 2019 13:36:36 +0100 -Subject: [PATCH] Exclude module pkgs that have conflict - ---- - libdnf/module/ModulePackageContainer.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/libdnf/module/ModulePackageContainer.cpp b/libdnf/module/ModulePackageContainer.cpp -index a8c7483..964d55e 100644 ---- a/libdnf/module/ModulePackageContainer.cpp -+++ b/libdnf/module/ModulePackageContainer.cpp -@@ -518,6 +518,10 @@ ModulePackageContainer::Impl::moduleSolve(const std::vector & - problems = goal.describeAllProblemRules(false); - ret = goal.run(DNF_NONE); - if (ret) { -+ // Conflicting modules has to be removed otherwice it could result than one of them will -+ // be active -+ auto conflictingPkgs = goal.listConflictPkgs(DNF_PACKAGE_STATE_AVAILABLE); -+ dnf_sack_add_excludes(moduleSack, conflictingPkgs.get()); - ret = goalWeak.run(DNF_NONE); - if (ret) { - auto logger(libdnf::Log::getLogger()); --- -libgit2 0.27.7 - diff --git a/SOURCES/0005-context-Fix-Dont-disable-nonexistent-but-required-repositories-RhBug1689331.patch b/SOURCES/0005-context-Fix-Dont-disable-nonexistent-but-required-repositories-RhBug1689331.patch new file mode 100644 index 0000000..3449ea3 --- /dev/null +++ b/SOURCES/0005-context-Fix-Dont-disable-nonexistent-but-required-repositories-RhBug1689331.patch @@ -0,0 +1,45 @@ +From 5923a9cc15b9fe541e71a9ef4bb550b6ddc481fc Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Wed, 12 Jun 2019 13:22:31 +0200 +Subject: [PATCH] [context] Fix: Don't disable nonexistent but required repositories (RhBug:1689331) + +The nonexistent local/media repositories were automatically disabled +during check (in function dnf_repo_check_internal). So application +(the Packagekit daemon) that reuses the deactivated repository object +then silently skip the repository as disabled. + +We should not to disable repositories which are required +(skip_if_unavailable=0). + +Fix for https://bugzilla.redhat.com/show_bug.cgi?id=1689331 +--- + libdnf/dnf-repo.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp +index d49c306..a358356 100644 +--- a/libdnf/dnf-repo.cpp ++++ b/libdnf/dnf-repo.cpp +@@ -1312,7 +1312,8 @@ dnf_repo_check_internal(DnfRepo *repo, + /* has the media repo vanished? */ + if (priv->kind == DNF_REPO_KIND_MEDIA && + !g_file_test(priv->location, G_FILE_TEST_EXISTS)) { +- priv->enabled = DNF_REPO_ENABLED_NONE; ++ if (!dnf_repo_get_required(repo)) ++ priv->enabled = DNF_REPO_ENABLED_NONE; + g_set_error(error, + DNF_ERROR, + DNF_ERROR_REPO_NOT_AVAILABLE, +@@ -1323,7 +1324,8 @@ dnf_repo_check_internal(DnfRepo *repo, + /* has the local repo vanished? */ + if (priv->kind == DNF_REPO_KIND_LOCAL && + !g_file_test(priv->location, G_FILE_TEST_EXISTS)) { +- priv->enabled = DNF_REPO_ENABLED_NONE; ++ if (!dnf_repo_get_required(repo)) ++ priv->enabled = DNF_REPO_ENABLED_NONE; + g_set_error(error, + DNF_ERROR, + DNF_ERROR_REPO_NOT_AVAILABLE, +-- +libgit2 0.28.2 + diff --git a/SOURCES/0006-Set-default-to-skip_if_unavailablefalse-RhBug1679509.patch b/SOURCES/0006-Set-default-to-skip_if_unavailablefalse-RhBug1679509.patch deleted file mode 100644 index 67266fb..0000000 --- a/SOURCES/0006-Set-default-to-skip_if_unavailablefalse-RhBug1679509.patch +++ /dev/null @@ -1,39 +0,0 @@ -From d1dfe281c538a03adc4193bb9e67f5de7a2365c4 Mon Sep 17 00:00:00 2001 -From: Jaroslav Mracek -Date: Fri, 15 Mar 2019 15:29:13 +0100 -Subject: [PATCH] Set default to skip_if_unavailable=false (RhBug:1679509) - ---- - libdnf/conf/ConfigRepo.cpp | 2 +- - libdnf/dnf-repo.cpp | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/libdnf/conf/ConfigRepo.cpp b/libdnf/conf/ConfigRepo.cpp -index fd180d2..754401e 100644 ---- a/libdnf/conf/ConfigRepo.cpp -+++ b/libdnf/conf/ConfigRepo.cpp -@@ -162,7 +162,7 @@ class ConfigRepo::Impl { - OptionChild > deltarpm_percentage{masterConfig.deltarpm_percentage()}; - OptionBinding deltaRpmPercentageBinding{owner, deltarpm_percentage, "deltarpm_percentage"}; - -- OptionBool skip_if_unavailable{true}; -+ OptionBool skip_if_unavailable{false}; - OptionBinding skipIfUnavailableBinding{owner, skip_if_unavailable, "skip_if_unavailable"}; - - OptionString enabled_metadata{""}; -diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp -index 2685337..e226081 100644 ---- a/libdnf/dnf-repo.cpp -+++ b/libdnf/dnf-repo.cpp -@@ -966,6 +966,8 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error) - priv->required = FALSE; - else - priv->required = TRUE; -+ } else { -+ priv->required = TRUE; - } - - /* cost is optional */ --- -libgit2 0.27.7 - diff --git a/SOURCES/0006-config-ignore-trailing-blank-lines-of-multiline-value-RhBug1722493.patch b/SOURCES/0006-config-ignore-trailing-blank-lines-of-multiline-value-RhBug1722493.patch new file mode 100644 index 0000000..40913ea --- /dev/null +++ b/SOURCES/0006-config-ignore-trailing-blank-lines-of-multiline-value-RhBug1722493.patch @@ -0,0 +1,35 @@ +From 9e670738044166cdd0bf566325bf610bfb802821 Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Mon, 24 Jun 2019 16:34:47 +0200 +Subject: [PATCH] [config] ignore trailing blank lines of multiline value (RhBug:1722493) + +Parser supports multiline values. Example: +key = value first line + value second line + +If a line starts with whitespaces and it is not a section name, +it is treated as continuation of previous key=value line. + +This commit ignores trailing blank lines. So newline characters +are trimmed out from the end of line. +--- + libdnf/utils/iniparser/iniparser.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libdnf/utils/iniparser/iniparser.cpp b/libdnf/utils/iniparser/iniparser.cpp +index c77c5ca..14fef74 100644 +--- a/libdnf/utils/iniparser/iniparser.cpp ++++ b/libdnf/utils/iniparser/iniparser.cpp +@@ -81,6 +81,9 @@ IniParser::IniParser(std::unique_ptr && inputStream) + } + + void IniParser::trimValue() noexcept { ++ auto end = value.find_last_not_of(DELIMITER); ++ if (end != value.npos) ++ value.resize(end + 1); + if (value.length() > 1 && + value.front() == value.back() && + (value.front() == '\"' || value.front() == '\'')) { +-- +libgit2 0.28.2 + diff --git a/SOURCES/0007-Add-configuration-option-skip_if_unavailable-RhBug1689931.patch b/SOURCES/0007-Add-configuration-option-skip_if_unavailable-RhBug1689931.patch deleted file mode 100644 index dad5124..0000000 --- a/SOURCES/0007-Add-configuration-option-skip_if_unavailable-RhBug1689931.patch +++ /dev/null @@ -1,83 +0,0 @@ -From d4917c293fda8f533ef57130c1a46215901f92a4 Mon Sep 17 00:00:00 2001 -From: Jaroslav Mracek -Date: Wed, 3 Apr 2019 12:25:17 +0200 -Subject: [PATCH] Add configuration option skip_if_unavailable (RhBug:1689931) - ---- - libdnf/conf/ConfigMain.cpp | 4 ++++ - libdnf/conf/ConfigMain.hpp | 1 + - libdnf/conf/ConfigRepo.cpp | 4 ++-- - libdnf/conf/ConfigRepo.hpp | 2 +- - 4 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/libdnf/conf/ConfigMain.cpp b/libdnf/conf/ConfigMain.cpp -index aff6b87..9016e6e 100644 ---- a/libdnf/conf/ConfigMain.cpp -+++ b/libdnf/conf/ConfigMain.cpp -@@ -530,6 +530,9 @@ class ConfigMain::Impl { - - OptionNumber deltarpm_percentage{75}; - OptionBinding deltaRpmPercentageBinding{owner, deltarpm_percentage, "deltarpm_percentage"}; -+ -+ OptionBool skip_if_unavailable{false}; -+ OptionBinding skip_if_unavailableBinding{owner, skip_if_unavailable, "skip_if_unavailable"}; - }; - - ConfigMain::ConfigMain() { pImpl = std::unique_ptr(new Impl(*this)); } -@@ -631,5 +634,6 @@ OptionString & ConfigMain::sslclientcert() { return pImpl->sslclientcert; } - OptionString & ConfigMain::sslclientkey() { return pImpl->sslclientkey; } - OptionBool & ConfigMain::deltarpm() { return pImpl->deltarpm; } - OptionNumber & ConfigMain::deltarpm_percentage() { return pImpl->deltarpm_percentage; } -+OptionBool & ConfigMain::skip_if_unavailable() { return pImpl->skip_if_unavailable; } - - } -diff --git a/libdnf/conf/ConfigMain.hpp b/libdnf/conf/ConfigMain.hpp -index 2aef32a..6423644 100644 ---- a/libdnf/conf/ConfigMain.hpp -+++ b/libdnf/conf/ConfigMain.hpp -@@ -147,6 +147,7 @@ public: - OptionString & sslclientkey(); - OptionBool & deltarpm(); - OptionNumber & deltarpm_percentage(); -+ OptionBool & skip_if_unavailable(); - - private: - class Impl; -diff --git a/libdnf/conf/ConfigRepo.cpp b/libdnf/conf/ConfigRepo.cpp -index 754401e..17f8817 100644 ---- a/libdnf/conf/ConfigRepo.cpp -+++ b/libdnf/conf/ConfigRepo.cpp -@@ -162,7 +162,7 @@ class ConfigRepo::Impl { - OptionChild > deltarpm_percentage{masterConfig.deltarpm_percentage()}; - OptionBinding deltaRpmPercentageBinding{owner, deltarpm_percentage, "deltarpm_percentage"}; - -- OptionBool skip_if_unavailable{false}; -+ OptionChild skip_if_unavailable{masterConfig.skip_if_unavailable()}; - OptionBinding skipIfUnavailableBinding{owner, skip_if_unavailable, "skip_if_unavailable"}; - - OptionString enabled_metadata{""}; -@@ -216,7 +216,7 @@ OptionChild & ConfigRepo::sslclientcert() { return pImpl->sslclien - OptionChild & ConfigRepo::sslclientkey() { return pImpl->sslclientkey; } - OptionChild & ConfigRepo::deltarpm() { return pImpl->deltarpm; } - OptionChild > & ConfigRepo::deltarpm_percentage() { return pImpl->deltarpm_percentage; } --OptionBool & ConfigRepo::skip_if_unavailable() { return pImpl->skip_if_unavailable; } -+OptionChild & ConfigRepo::skip_if_unavailable() { return pImpl->skip_if_unavailable; } - OptionString & ConfigRepo::enabled_metadata() { return pImpl->enabled_metadata; } - OptionEnum & ConfigRepo::failovermethod() { return pImpl->failovermethod; } - -diff --git a/libdnf/conf/ConfigRepo.hpp b/libdnf/conf/ConfigRepo.hpp -index 781a40f..0f0eda3 100644 ---- a/libdnf/conf/ConfigRepo.hpp -+++ b/libdnf/conf/ConfigRepo.hpp -@@ -83,7 +83,7 @@ public: - OptionChild & sslclientkey(); - OptionChild & deltarpm(); - OptionChild > & deltarpm_percentage(); -- OptionBool & skip_if_unavailable(); -+ OptionChild & skip_if_unavailable(); - // option recognized by other tools, e.g. gnome-software, but unused in dnf - OptionString & enabled_metadata(); - // yum compatibility options --- -libgit2 0.27.7 - diff --git a/SOURCES/0007-Re-size-includes-map-before-re-computation-RhBug1725213.patch b/SOURCES/0007-Re-size-includes-map-before-re-computation-RhBug1725213.patch new file mode 100644 index 0000000..857ef9a --- /dev/null +++ b/SOURCES/0007-Re-size-includes-map-before-re-computation-RhBug1725213.patch @@ -0,0 +1,27 @@ +From f1cf6f12157da3cf555e49d1b5f0af5c81d0c101 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Fri, 28 Jun 2019 18:47:19 +0200 +Subject: [PATCH] Re-size includes map before re-computation (RhBug:1725213) + +It resolves problems with incorrect reads. + +https://bugzilla.redhat.com/show_bug.cgi?id=1725213 +--- + libdnf/dnf-sack.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libdnf/dnf-sack.cpp b/libdnf/dnf-sack.cpp +index 33fbe4a..c0c1cc5 100644 +--- a/libdnf/dnf-sack.cpp ++++ b/libdnf/dnf-sack.cpp +@@ -356,6 +356,7 @@ dnf_sack_recompute_considered(DnfSack *sack) + if (priv->module_excludes) + map_subtract(pool->considered, priv->module_excludes); + if (priv->pkg_includes) { ++ map_grow(priv->pkg_includes, pool->nsolvables); + Map pkg_includes_tmp; + map_init_clone(&pkg_includes_tmp, priv->pkg_includes); + +-- +libgit2 0.28.2 + diff --git a/SOURCES/0008-Add-suport-for-query-sequence-conversions.patch b/SOURCES/0008-Add-suport-for-query-sequence-conversions.patch new file mode 100644 index 0000000..a48024b --- /dev/null +++ b/SOURCES/0008-Add-suport-for-query-sequence-conversions.patch @@ -0,0 +1,142 @@ +From 12acb4b30c9a88b9082f7dcbda0257b47bed9c87 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Sat, 13 Apr 2019 18:46:28 +0200 +Subject: [PATCH 1/3] Add HY_PKG_CONFLICTS for conversion into reldep + +Sequence of HY_PKG_CONFLICTS requires conversion into reldep. +--- + python/hawkey/query-py.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/python/hawkey/query-py.cpp b/python/hawkey/query-py.cpp +index d90f9c95..5bc8d123 100644 +--- a/python/hawkey/query-py.cpp ++++ b/python/hawkey/query-py.cpp +@@ -350,6 +350,7 @@ filter_add(HyQuery query, key_t keyname, int cmp_type, PyObject *match) + + break; + } ++ case HY_PKG_CONFLICTS: + case HY_PKG_PROVIDES: + case HY_PKG_REQUIRES: + case HY_PKG_ENHANCES: +-- +2.21.0 + + +From db4118aeab5d8ed0006d7fe8b924304c7f52d34d Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Sat, 13 Apr 2019 19:38:29 +0200 +Subject: [PATCH 2/3] Add support of PY string sequence for HY_PKG_OBSOLETES + +--- + python/hawkey/query-py.cpp | 20 ++++++++++++++++++-- + 1 file changed, 18 insertions(+), 2 deletions(-) + +diff --git a/python/hawkey/query-py.cpp b/python/hawkey/query-py.cpp +index 5bc8d123..e9d220b6 100644 +--- a/python/hawkey/query-py.cpp ++++ b/python/hawkey/query-py.cpp +@@ -340,10 +340,26 @@ filter_add(HyQuery query, key_t keyname, int cmp_type, PyObject *match) + switch (keyname) { + case HY_PKG: + case HY_PKG_OBSOLETES: { ++ // It could be a sequence of packages or reldep/strings. Lets try packages first. + auto pset = pyseq_to_packageset(match, query->getSack()); +- +- if (!pset) ++ if (!pset) { ++ if (auto PyError = PyErr_Occurred()) { ++ // It was not a sequence of packages. ++ if (PyErr_GivenExceptionMatches(PyError, PyExc_TypeError)) { ++ PyErr_Clear(); ++ auto reldeplist = pyseq_to_reldeplist(match, query->getSack(), cmp_type); ++ if (reldeplist == NULL) ++ return 1; ++ ++ int ret = query->addFilter(keyname, reldeplist.get()); ++ if (ret) { ++ return raise_bad_filter(); ++ } ++ break; ++ } ++ } + return 1; ++ } + int ret = query->addFilter(keyname, cmp_type, pset.get()); + if (ret) + return raise_bad_filter(); +-- +2.21.0 + + +From 247f05ef7c3083953e02948ba629cc9ef4184e05 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Mon, 15 Apr 2019 09:54:12 +0200 +Subject: [PATCH 3/3] Add conversion for sequence to reldep in c/c++ interface + +This conversion is supported from Python, but was not implemented in +c/c++ code. + +When sequence that requires conversion was used, it failed on assertion. +--- + libdnf.spec | 2 +- + libdnf/sack/query.cpp | 29 ++++++++++++++++++++++++++++- + 2 files changed, 29 insertions(+), 2 deletions(-) + +diff --git a/libdnf.spec b/libdnf.spec +index d7b3270a..5f0b6529 100644 +--- a/libdnf.spec ++++ b/libdnf.spec +@@ -37,7 +37,7 @@ + %{nil} + + Name: libdnf +-Version: 0.35.1 ++Version: 0.35.2 + Release: 1%{?dist} + Summary: Library providing simplified C and Python API to libsolv + License: LGPLv2+ +diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp +index d5b29a66..949b5ab9 100644 +--- a/libdnf/sack/query.cpp ++++ b/libdnf/sack/query.cpp +@@ -882,7 +882,34 @@ Query::addFilter(int keyname, int cmp_type, const char **matches) + if (!valid_filter_str(keyname, cmp_type)) + return DNF_ERROR_BAD_QUERY; + pImpl->applied = false; +- pImpl->filters.push_back(Filter(keyname, cmp_type, matches)); ++ switch (keyname) { ++ case HY_PKG_CONFLICTS: ++ case HY_PKG_ENHANCES: ++ case HY_PKG_OBSOLETES: ++ case HY_PKG_PROVIDES: ++ case HY_PKG_RECOMMENDS: ++ case HY_PKG_REQUIRES: ++ case HY_PKG_SUGGESTS: ++ case HY_PKG_SUPPLEMENTS: { ++ DnfSack *sack = pImpl->sack; ++ const unsigned nmatches = g_strv_length((gchar**)matches); ++ DependencyContainer reldeplist(sack); ++ if (cmp_type == HY_GLOB) { ++ for (unsigned int i = 0; i < nmatches; ++i) { ++ reldeplist.addReldepWithGlob(matches[i]); ++ } ++ } else { ++ for (unsigned int i = 0; i < nmatches; ++i) { ++ reldeplist.addReldep(matches[i]); ++ } ++ } ++ return addFilter(keyname, &reldeplist); ++ } ++ default: { ++ pImpl->filters.push_back(Filter(keyname, cmp_type, matches)); ++ return 0; ++ } ++ } + return 0; + } + +-- +2.21.0 + diff --git a/SOURCES/0009-Added-dnf_move_recursive.patch b/SOURCES/0009-Added-dnf_move_recursive.patch new file mode 100644 index 0000000..fdbc84f --- /dev/null +++ b/SOURCES/0009-Added-dnf_move_recursive.patch @@ -0,0 +1,160 @@ +From d66dfc2815153b315f5b3fd9d3f93be670def26a Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Tue, 3 Sep 2019 12:55:51 +0200 +Subject: [PATCH 09/10] Added dnf_move_recursive() + +Moves a directory and its contents. If native move operations are +supported then this is used, otherwise a copy + delete fallback is used. +--- + libdnf/hy-iutil-private.hpp | 1 + + libdnf/hy-iutil.cpp | 95 +++++++++++++++++++++++++++++++++++-- + 2 files changed, 93 insertions(+), 3 deletions(-) + +diff --git a/libdnf/hy-iutil-private.hpp b/libdnf/hy-iutil-private.hpp +index 8b2b06d5..4920ad39 100644 +--- a/libdnf/hy-iutil-private.hpp ++++ b/libdnf/hy-iutil-private.hpp +@@ -41,6 +41,7 @@ char *abspath(const char *path); + int is_readable_rpm(const char *fn); + int mkcachedir(char *path); + gboolean mv(const char *old_path, const char *new_path, GError **error); ++gboolean dnf_move_recursive(const gchar *src_dir, const gchar *dst_dir, GError **error); + char *this_username(void); + + /* misc utils */ +diff --git a/libdnf/hy-iutil.cpp b/libdnf/hy-iutil.cpp +index 2c5af481..d3b57c79 100644 +--- a/libdnf/hy-iutil.cpp ++++ b/libdnf/hy-iutil.cpp +@@ -20,12 +20,14 @@ + + #include + #include ++#include + #include + #include + #include + #include + #include + #include ++#include + #include + #include + #include +@@ -41,9 +43,6 @@ extern "C" { + #include + } + +-// glib +-#include +- + // hawkey + #include "dnf-advisory-private.hpp" + #include "dnf-types.h" +@@ -58,6 +57,12 @@ extern "C" { + #include "utils/bgettext/bgettext-lib.h" + #include "sack/packageset.hpp" + ++// glib ++#include ++#include ++ ++#include ++ + #define BUF_BLOCK 4096 + #define CHKSUM_TYPE REPOKEY_TYPE_SHA256 + #define CHKSUM_IDENT "H000" +@@ -328,6 +333,90 @@ mv(const char* old_path, const char* new_path, GError** error) + return TRUE; + } + ++static gboolean ++copyFile(const std::string & srcPath, const std::string & dstPath, GError ** error) ++{ ++ g_autoptr(GFile) src = g_file_new_for_path(srcPath.c_str()); ++ g_autoptr(GFile) dest = g_file_new_for_path(dstPath.c_str()); ++ return g_file_copy(src, dest, ++ static_cast(G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA) ++ , NULL, NULL, NULL, error); ++} ++ ++static gboolean ++copyRecursive(const std::string & srcPath, const std::string & dstPath, GError ** error) ++{ ++ struct stat info; ++ if (!stat(srcPath.c_str(), &info)) { ++ if (S_ISDIR(info.st_mode)) { ++ if (mkdir(dstPath.c_str(), info.st_mode) == -1) { ++ auto err = errno; ++ g_set_error(error, ++ DNF_ERROR, ++ DNF_ERROR_INTERNAL_ERROR, ++ _("cannot create directory %1$s: %2$s"), ++ dstPath.c_str(), strerror(err)); ++ return FALSE; ++ } ++ if (auto fd = opendir(srcPath.c_str())) { ++ int ret = TRUE; ++ while (auto dent = readdir(fd)) { ++ auto name = dent->d_name; ++ if (name[0] == '.' && (name[1] == '\0' || (name[1] == '.' && name[2] == '\0'))) ++ continue; ++ std::string srcItem = srcPath + "/" + name; ++ std::string dstItem = dstPath + "/" + name; ++ ret = copyRecursive(srcItem, dstItem, error); ++ if (!ret) ++ break; ++ } ++ closedir(fd); ++ return ret; ++ } else { ++ auto err = errno; ++ g_set_error(error, ++ DNF_ERROR, ++ DNF_ERROR_INTERNAL_ERROR, ++ _("cannot open directory %1$s: %2$s"), ++ srcPath.c_str(), strerror(err)); ++ return FALSE; ++ } ++ } else { ++ return copyFile(srcPath, dstPath, error); ++ } ++ } else { ++ auto err = errno; ++ g_set_error(error, ++ DNF_ERROR, ++ DNF_ERROR_INTERNAL_ERROR, ++ _("cannot stat path %1$s: %2$s"), ++ srcPath.c_str(), strerror(err)); ++ return FALSE; ++ } ++} ++ ++/** ++ * dnf_move_recursive: ++ * @src_dir: A source directory path ++ * @dst_dir: A destination directory path ++ * @error: A #GError, or %NULL ++ * ++ * Moves a directory and its contents. Native move is preferred, ++ * if not supported copy and delete fallback is used. ++ * ++ * Returns: %TRUE on successful move, %FALSE otherwise ++ **/ ++gboolean ++dnf_move_recursive(const char * srcDir, const char * dstDir, GError ** error) ++{ ++ if (rename(srcDir, dstDir) == -1) { ++ if (!copyRecursive(srcDir, dstDir, error)) ++ return FALSE; ++ return dnf_remove_recursive(srcDir, error); ++ } ++ return TRUE; ++} ++ + char * + this_username(void) + { +-- +2.21.0 + diff --git a/SOURCES/0010-Use-copy-delete-fallback-if-moving-of-directory-fail.patch b/SOURCES/0010-Use-copy-delete-fallback-if-moving-of-directory-fail.patch new file mode 100644 index 0000000..62f72ba --- /dev/null +++ b/SOURCES/0010-Use-copy-delete-fallback-if-moving-of-directory-fail.patch @@ -0,0 +1,100 @@ +From 99d35011a057a112957c6e878f4ac0b7ab0d0e7a Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Tue, 3 Sep 2019 13:13:31 +0200 +Subject: [PATCH 10/10] Use copy+delete fallback if moving of directory failed + (RhBug:1700341) + +Uses dnf_move_recursive() instead of g_rename()/rename() for +move a directories. +The dnf_move_recursive() uses copy+delete fallback if native moving +of directory failed (eg. moving between filesystems, overlayfs). + +https://bugzilla.redhat.com/show_bug.cgi?id=1700341 +--- + libdnf/dnf-repo.cpp | 19 +++++++++---------- + libdnf/repo/Repo.cpp | 12 ++++++++---- + 2 files changed, 17 insertions(+), 14 deletions(-) + +diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp +index a358356a..568e4262 100644 +--- a/libdnf/dnf-repo.cpp ++++ b/libdnf/dnf-repo.cpp +@@ -36,6 +36,7 @@ + #include "conf/OptionBool.hpp" + + #include "hy-repo-private.hpp" ++#include "hy-iutil-private.hpp" + + #include + #include +@@ -1826,14 +1827,13 @@ dnf_repo_update(DnfRepo *repo, + + /* move the packages directory from the old cache to the new cache */ + if (g_file_test(priv->packages, G_FILE_TEST_EXISTS)) { +- rc = g_rename(priv->packages, priv->packages_tmp); +- if (rc != 0) { +- ret = FALSE; ++ ret = dnf_move_recursive(priv->packages, priv->packages_tmp, &error_local); ++ if (!ret) { + g_set_error(error, + DNF_ERROR, + DNF_ERROR_CANNOT_FETCH_SOURCE, +- "cannot move %s to %s", +- priv->packages, priv->packages_tmp); ++ "cannot move %s to %s: %s", ++ priv->packages, priv->packages_tmp, error_local->message); + goto out; + } + } +@@ -1844,14 +1844,13 @@ dnf_repo_update(DnfRepo *repo, + goto out; + + /* rename .tmp actual name */ +- rc = g_rename(priv->location_tmp, priv->location); +- if (rc != 0) { +- ret = FALSE; ++ ret = dnf_move_recursive(priv->location_tmp, priv->location, &error_local); ++ if (!ret) { + g_set_error(error, + DNF_ERROR, + DNF_ERROR_CANNOT_FETCH_SOURCE, +- "cannot move %s to %s", +- priv->location_tmp, priv->location); ++ "cannot move %s to %s: %s", ++ priv->location_tmp, priv->location, error_local->message); + goto out; + } + ret = lr_handle_setopt(priv->repo_handle, error, +diff --git a/libdnf/repo/Repo.cpp b/libdnf/repo/Repo.cpp +index 23638839..0dbeed8b 100644 +--- a/libdnf/repo/Repo.cpp ++++ b/libdnf/repo/Repo.cpp +@@ -31,6 +31,7 @@ + #include "../hy-iutil.h" + #include "../hy-repo-private.hpp" + #include "../hy-util-private.hpp" ++#include "../hy-iutil-private.hpp" + #include "../hy-types.h" + #include "libdnf/conf/ConfigParser.hpp" + #include "libdnf/utils/File.hpp" +@@ -1155,10 +1156,13 @@ void Repo::Impl::fetch(const std::string & destdir, std::unique_ptr && + } + } + auto tempElement = tmpdir + "/" + elName; +- if (rename(tempElement.c_str(), targetElement.c_str()) == -1) { +- const char * errTxt = strerror(errno); +- throw std::runtime_error(tfm::format( +- _("Cannot rename directory \"%s\" to \"%s\": %s"), tempElement, targetElement, errTxt)); ++ GError * error = NULL; ++ if (!dnf_move_recursive(tempElement.c_str(), targetElement.c_str(), &error)) { ++ std::string errTxt = tfm::format( ++ _("Cannot rename directory \"%s\" to \"%s\": %s"), ++ tempElement, targetElement, error->message); ++ g_error_free(error); ++ throw std::runtime_error(errTxt); + } + } + } +-- +2.21.0 + diff --git a/SOURCES/0011-Expose-dnf_copy_file-and-dnf_copy_recursive-in-priva.patch b/SOURCES/0011-Expose-dnf_copy_file-and-dnf_copy_recursive-in-priva.patch new file mode 100644 index 0000000..bb6fc26 --- /dev/null +++ b/SOURCES/0011-Expose-dnf_copy_file-and-dnf_copy_recursive-in-priva.patch @@ -0,0 +1,100 @@ +From 865b0b958c044af966f89520ed97fad9b987f006 Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Thu, 5 Sep 2019 09:20:20 +0200 +Subject: [PATCH 11/13] Expose dnf_copy_file and dnf_copy_recursive in private + hpp + +Renaming: +copyFile -> dnf_copy_file +copyRecursive -> dnf_copy_recursice + +Exposes newnames in private hpp to be possible use it internally +in libdnf. + +Closes: #789 +Approved by: m-blaha +--- + libdnf/hy-iutil-private.hpp | 2 ++ + libdnf/hy-iutil.cpp | 20 ++++++++++---------- + 2 files changed, 12 insertions(+), 10 deletions(-) + +diff --git a/libdnf/hy-iutil-private.hpp b/libdnf/hy-iutil-private.hpp +index 4920ad39..2d84cc21 100644 +--- a/libdnf/hy-iutil-private.hpp ++++ b/libdnf/hy-iutil-private.hpp +@@ -41,6 +41,8 @@ char *abspath(const char *path); + int is_readable_rpm(const char *fn); + int mkcachedir(char *path); + gboolean mv(const char *old_path, const char *new_path, GError **error); ++gboolean dnf_copy_file(const std::string & srcPath, const std::string & dstPath, GError ** error); ++gboolean dnf_copy_recursive(const std::string & srcPath, const std::string & dstPath, GError ** error); + gboolean dnf_move_recursive(const gchar *src_dir, const gchar *dst_dir, GError **error); + char *this_username(void); + +diff --git a/libdnf/hy-iutil.cpp b/libdnf/hy-iutil.cpp +index d3b57c79..5401a9cf 100644 +--- a/libdnf/hy-iutil.cpp ++++ b/libdnf/hy-iutil.cpp +@@ -333,18 +333,18 @@ mv(const char* old_path, const char* new_path, GError** error) + return TRUE; + } + +-static gboolean +-copyFile(const std::string & srcPath, const std::string & dstPath, GError ** error) ++gboolean ++dnf_copy_file(const std::string & srcPath, const std::string & dstPath, GError ** error) + { + g_autoptr(GFile) src = g_file_new_for_path(srcPath.c_str()); + g_autoptr(GFile) dest = g_file_new_for_path(dstPath.c_str()); + return g_file_copy(src, dest, +- static_cast(G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA) +- , NULL, NULL, NULL, error); ++ static_cast(G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA), ++ NULL, NULL, NULL, error); + } + +-static gboolean +-copyRecursive(const std::string & srcPath, const std::string & dstPath, GError ** error) ++gboolean ++dnf_copy_recursive(const std::string & srcPath, const std::string & dstPath, GError ** error) + { + struct stat info; + if (!stat(srcPath.c_str(), &info)) { +@@ -359,14 +359,14 @@ copyRecursive(const std::string & srcPath, const std::string & dstPath, GError * + return FALSE; + } + if (auto fd = opendir(srcPath.c_str())) { +- int ret = TRUE; ++ gboolean ret = TRUE; + while (auto dent = readdir(fd)) { + auto name = dent->d_name; + if (name[0] == '.' && (name[1] == '\0' || (name[1] == '.' && name[2] == '\0'))) + continue; + std::string srcItem = srcPath + "/" + name; + std::string dstItem = dstPath + "/" + name; +- ret = copyRecursive(srcItem, dstItem, error); ++ ret = dnf_copy_recursive(srcItem, dstItem, error); + if (!ret) + break; + } +@@ -382,7 +382,7 @@ copyRecursive(const std::string & srcPath, const std::string & dstPath, GError * + return FALSE; + } + } else { +- return copyFile(srcPath, dstPath, error); ++ return dnf_copy_file(srcPath, dstPath, error); + } + } else { + auto err = errno; +@@ -410,7 +410,7 @@ gboolean + dnf_move_recursive(const char * srcDir, const char * dstDir, GError ** error) + { + if (rename(srcDir, dstDir) == -1) { +- if (!copyRecursive(srcDir, dstDir, error)) ++ if (!dnf_copy_recursive(srcDir, dstDir, error)) + return FALSE; + return dnf_remove_recursive(srcDir, error); + } +-- +2.21.0 + diff --git a/SOURCES/0012-Add-dnf_remove_recursive_v2-that-support-unlink-of-f.patch b/SOURCES/0012-Add-dnf_remove_recursive_v2-that-support-unlink-of-f.patch new file mode 100644 index 0000000..230590c --- /dev/null +++ b/SOURCES/0012-Add-dnf_remove_recursive_v2-that-support-unlink-of-f.patch @@ -0,0 +1,60 @@ +From 842c0057f82a587f8dd2649d920420b7d888fddf Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Thu, 5 Sep 2019 13:55:00 +0200 +Subject: [PATCH 12/13] Add dnf_remove_recursive_v2() that support unlink of + file + +The dnf_remove_recursive() accepts only directory as argument. +The new function supports unlink of files. + +Closes: #789 +Approved by: m-blaha +--- + libdnf/hy-iutil-private.hpp | 1 + + libdnf/hy-iutil.cpp | 18 ++++++++++++++++++ + 2 files changed, 19 insertions(+) + +diff --git a/libdnf/hy-iutil-private.hpp b/libdnf/hy-iutil-private.hpp +index 2d84cc21..bf1714e9 100644 +--- a/libdnf/hy-iutil-private.hpp ++++ b/libdnf/hy-iutil-private.hpp +@@ -41,6 +41,7 @@ char *abspath(const char *path); + int is_readable_rpm(const char *fn); + int mkcachedir(char *path); + gboolean mv(const char *old_path, const char *new_path, GError **error); ++gboolean dnf_remove_recursive_v2(const gchar *path, GError **error); + gboolean dnf_copy_file(const std::string & srcPath, const std::string & dstPath, GError ** error); + gboolean dnf_copy_recursive(const std::string & srcPath, const std::string & dstPath, GError ** error); + gboolean dnf_move_recursive(const gchar *src_dir, const gchar *dst_dir, GError **error); +diff --git a/libdnf/hy-iutil.cpp b/libdnf/hy-iutil.cpp +index 5401a9cf..e1a1906a 100644 +--- a/libdnf/hy-iutil.cpp ++++ b/libdnf/hy-iutil.cpp +@@ -333,6 +333,24 @@ mv(const char* old_path, const char* new_path, GError** error) + return TRUE; + } + ++/** ++ * dnf_remove_recursive_v2: ++ * @directory: A directory path ++ * @error: A #GError, or %NULL ++ * ++ * Removes a file or a directory and its contents. ++ * ++ * Returns: %FALSE if an error was set ++ **/ ++gboolean ++dnf_remove_recursive_v2(const gchar *path, GError **error) ++{ ++ if (g_file_test(path, G_FILE_TEST_IS_DIR)) ++ return dnf_remove_recursive(path, error); ++ else ++ return dnf_ensure_file_unlinked(path, error); ++} ++ + gboolean + dnf_copy_file(const std::string & srcPath, const std::string & dstPath, GError ** error) + { +-- +2.21.0 + diff --git a/SOURCES/0013-Fix-dnf_move_recursive-for-file-in-fallback-mode.patch b/SOURCES/0013-Fix-dnf_move_recursive-for-file-in-fallback-mode.patch new file mode 100644 index 0000000..96dca68 --- /dev/null +++ b/SOURCES/0013-Fix-dnf_move_recursive-for-file-in-fallback-mode.patch @@ -0,0 +1,42 @@ +From dab2ade3727dbf61dbcfd58d7a2a3fdbbb36116e Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Thu, 5 Sep 2019 14:01:26 +0200 +Subject: [PATCH 13/13] Fix: dnf_move_recursive() for file in fallback mode + +The dnf_move_recursive() had problem with moving a file in the fallback +mode. The file was copied but removing of its source failed. +The dnf_remove_recursive_v2() is used now to resolve the issue. + +Related to https://bugzilla.redhat.com/show_bug.cgi?id=1700341 + +Closes: #789 +Approved by: m-blaha +--- + libdnf/hy-iutil.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libdnf/hy-iutil.cpp b/libdnf/hy-iutil.cpp +index e1a1906a..0bd0e245 100644 +--- a/libdnf/hy-iutil.cpp ++++ b/libdnf/hy-iutil.cpp +@@ -419,7 +419,7 @@ dnf_copy_recursive(const std::string & srcPath, const std::string & dstPath, GEr + * @dst_dir: A destination directory path + * @error: A #GError, or %NULL + * +- * Moves a directory and its contents. Native move is preferred, ++ * Moves a file or a directory and its contents. Native move is preferred, + * if not supported copy and delete fallback is used. + * + * Returns: %TRUE on successful move, %FALSE otherwise +@@ -430,7 +430,7 @@ dnf_move_recursive(const char * srcDir, const char * dstDir, GError ** error) + if (rename(srcDir, dstDir) == -1) { + if (!dnf_copy_recursive(srcDir, dstDir, error)) + return FALSE; +- return dnf_remove_recursive(srcDir, error); ++ return dnf_remove_recursive_v2(srcDir, error); + } + return TRUE; + } +-- +2.21.0 + diff --git a/SPECS/libdnf.spec b/SPECS/libdnf.spec index 4d38999..adbe77a 100644 --- a/SPECS/libdnf.spec +++ b/SPECS/libdnf.spec @@ -1,6 +1,7 @@ -%global libsolv_version 0.6.35-6 +%global libsolv_version 0.7.4-1 %global libmodulemd_version 1.6.1 -%global dnf_conflict 4.0.9.2-4 +%global librepo_version 1.10.0 +%global dnf_conflict 4.2.5 %global swig_version 3.0.12 %bcond_with valgrind @@ -12,6 +13,12 @@ %bcond_without python3 %endif +%if 0%{?rhel} + %global rpm_version 4.14.2 +%else + %global rpm_version 4.14.2.1-4 +%endif + %if 0%{?rhel} > 7 || 0%{?fedora} > 29 # Disable python2 build by default %bcond_with python2 @@ -30,32 +37,39 @@ %{nil} Name: libdnf -Version: 0.22.5 -Release: 5%{?dist} +Version: 0.35.1 +Release: 8%{?dist} Summary: Library providing simplified C and Python API to libsolv License: LGPLv2+ URL: https://github.com/rpm-software-management/libdnf Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz -Patch0001: 0001-Add-best-as-default-behavior-RhBug16707761671683.patch -Patch0002: 0002-Add-support-for-Module-advisories.patch -Patch0003: 0003-Add-setter-of-ModuleContainer-for-PySack.patch -Patch0004: 0004-Add-testing-if-advisory-is-applicable-for-query-and-package.patch -Patch0005: 0005-Exclude-module-pkgs-that-have-conflict.patch -Patch0006: 0006-Set-default-to-skip_if_unavailablefalse-RhBug1679509.patch -Patch0007: 0007-Add-configuration-option-skip_if_unavailable-RhBug1689931.patch +# Temporary patch to not fail on modular RPMs without modular metadata +# until the infrastructure is ready +Patch2: 0002-Fix-attaching-and-detaching-of-libsolvRepo.patch +Patch3: 0003-Typo-in-error-message-RhBug1726661.patch +Patch4: 0004-Update-localizations-from-zanata-RhBug1689991.patch +Patch5: 0005-context-Fix-Dont-disable-nonexistent-but-required-repositories-RhBug1689331.patch +Patch6: 0006-config-ignore-trailing-blank-lines-of-multiline-value-RhBug1722493.patch +Patch7: 0007-Re-size-includes-map-before-re-computation-RhBug1725213.patch +Patch8: 0008-Add-suport-for-query-sequence-conversions.patch +Patch9: 0009-Added-dnf_move_recursive.patch +Patch10: 0010-Use-copy-delete-fallback-if-moving-of-directory-fail.patch +Patch11: 0011-Expose-dnf_copy_file-and-dnf_copy_recursive-in-priva.patch +Patch12: 0012-Add-dnf_remove_recursive_v2-that-support-unlink-of-f.patch +Patch13: 0013-Fix-dnf_move_recursive-for-file-in-fallback-mode.patch BuildRequires: cmake BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: libsolv-devel >= %{libsolv_version} -BuildRequires: pkgconfig(librepo) +BuildRequires: pkgconfig(librepo) >= %{librepo_version} BuildRequires: pkgconfig(check) %if %{with valgrind} BuildRequires: valgrind %endif BuildRequires: pkgconfig(gio-unix-2.0) >= 2.46.0 BuildRequires: pkgconfig(gtk-doc) -BuildRequires: rpm-devel >= 4.11.0 +BuildRequires: rpm-devel >= %{rpm_version} %if %{with rhsm} BuildRequires: pkgconfig(librhsm) >= 0.0.3 %endif @@ -70,6 +84,7 @@ BuildRequires: gpgme-devel Requires: libmodulemd%{?_isa} >= %{libmodulemd_version} Requires: libsolv%{?_isa} >= %{libsolv_version} +Requires: librepo%{?_isa} >= %{librepo_version} %description A Library providing simplified C and Python API to libsolv. @@ -223,6 +238,8 @@ popd %license COPYING %doc README.md AUTHORS %{_libdir}/%{name}.so.* +%dir %{_libdir}/libdnf/ +%dir %{_libdir}/libdnf/plugins/ %{_libdir}/libdnf/plugins/README %files devel @@ -252,6 +269,69 @@ popd %endif %changelog +* Fri Sep 06 2019 Marek Blaha - 0.35.1-8 +- Enhanced fix of moving directories in minimal container (RhBug:1700341) + +* Thu Sep 05 2019 Jaroslav Mracek - 0.35.1-7 +- Remove patch to not fail when installing modular RPMs without modular metadata + +* Thu Sep 05 2019 Marek Blaha - 0.35.1-6 +- Fix moving directories in minimal container (RhBug:1700341) + +* Tue Aug 06 2019 Pavla Kratochvilova - 0.35.1-5 +- Add suport for query sequence conversions + +* Thu Aug 01 2019 Pavla Kratochvilova - 0.35.1-4 +- Fix typo in error message (RhBug:1726661) +- Update localizations from zanata (RhBug:1689991) +- Don't disable nonexistent but required repositories (RhBug:1689331) +- Ignore trailing blank lines of multiline value (RhBug:1722493) +- Re-size includes map before re-computation (RhBug:1725213) + +* Tue Jul 16 2019 Marek Blaha - 0.35.1-3 +- Fix attaching and detaching of libsolvRepo and repo_internalize_trigger() + (RhBug:1730224) + +* Thu Jul 04 2019 Pavla Kratochvilova - 0.35.1-2 +- Add patch to not fail when installing modular RPMs without modular metadata + +* Tue Jun 11 2019 Pavla Kratochvilova - 0.35.1-1 +- Update to 0.35.1 +- Skip invalid key files in "/etc/pki/rpm-gpg" with warning (RhBug:1644040) +- Enable timestamp preserving for downloaded data (RhBug:1688537) +- Fix 'database is locked' error (RhBug:1631533) +- Replace the 'Failed to synchronize cache' message (RhBug:1712055) +- Fix 'no such table: main.trans_cmdline' error (RhBug:1596540) +- Fix: skip_if_unavailable=true for local repositories (RhBug:1716313) +- Add support of modular FailSafe (RhBug:1623128) +- Add support of DNF main config file in context; used by PackageKit and + microdnf (RhBug:1689331) +- Exit gpg-agent after repokey import (RhBug:1650266) + +* Mon May 13 2019 Pavla Kratochvilova - 0.33.0-1 +- Update to 0.33.0 +- Enhance sorting for module list (RhBug:1590358) +- [DnfRepo] Add methods for alternative repository metadata type and download (RhBug:1656314) +- Remove installed profile on module enable or disable (RhBug:1653623) +- Enhance modular solver to handle enabled and default module streams differently (RhBug:1648839) +- Add support of wild cards for modules (RhBug:1644588) +- Exclude module pkgs that have conflict +- Enhance config parser to preserve order of data, and keep comments and format +- Improve ARM detection +- Add support for SHA-384 +- Return empty query if incorrect reldep (RhBug:1687135) +- ConfigParser: Improve compatibility with Python ConfigParser and dnf-plugin-spacewalk (RhBug:1692044) +- ConfigParser: Unify default set of string represenation of boolean values +- Fix segfault when interrupting dnf process (RhBug:1610456) +- Installroot now requires absolute path +- Support "_none_" value for repo option "proxy" (RhBug:1680272) +- Add support for Module advisories +- Add support for xml:base attribute from primary.xml (RhBug:1691315) +- Improve detection of Platform ID (RhBug:1688462) + +* Fri Apr 26 2019 Pavla Kratochvilova - 0.22.5-6 +- Rebuild for libsolv soname bump (in libsolve update to 0.7.4) + * Wed Apr 03 2019 Jaroslav Mracek - 0.22.5-5 - Backport patches to set default to skip_if_unavailable to false (RhBug:1692452)