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 <jmracek@redhat.com>
-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<std::string> 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 <jmracek@redhat.com>
-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<AdvisoryPkg> & pkglist, bool withFilemanes) co
-     dataiterator_free(&di);
- }
- 
-+std::vector<AdvisoryModule> Advisory::getModules() const
-+{
-+    std::vector<AdvisoryModule> 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<AdvisoryRef> & 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<AdvisoryPkg> & pkglist, bool withFilemanes = true) const;
-+    std::vector<AdvisoryModule> getModules() const;
-     void getReferences(std::vector<AdvisoryRef> & 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 <string>
-+
-+#include <solv/poolid.h>
-+
-+#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 <memory>
-+
-+#include <solv/pooltypes.h>
-+#include <solv/solvable.h>
-+
-+#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<Impl> 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 <jrohel@redhat.com>
+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 <jrohel@redhat.com>
+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<std::string> 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 <jrohel@redhat.com>
+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 <cctype>
+ #include <map>
++#include <mutex>
+ #include <set>
+ 
+ #include <string.h>
+@@ -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<LrResult> 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 <iostream>
+ #include <list>
+ #include <map>
+-#include <mutex>
+ #include <set>
+ #include <sstream>
+ #include <type_traits>
+@@ -1335,8 +1334,10 @@ LrHandle * Repo::Impl::getCachedHandle()
+ 
+ void Repo::Impl::attachLibsolvRepo(LibsolvRepo * libsolvRepo)
+ {
++    std::lock_guard<std::mutex> 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<std::mutex> 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 <jrohel@redhat.com>
+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<HyRepo>(repo->appdata);
++    if (!repo)
++        return;
++
++    if (auto hrepo = static_cast<HyRepo>(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 <jrohel@redhat.com>
+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<std::mutex> 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 <jmracek@redhat.com>
-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 <mblaha@redhat.com>
+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 <jmracek@redhat.com>
-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 <algorithm>
- #include <ctime>
-@@ -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 <algorithm>
- #include <assert.h>
- #include <fnmatch.h>
-@@ -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<AdvisoryPkg> & advisoryPkgs)
- {
-     apply();
--    Pool *pool = dnf_sack_get_pool(pImpl->sack);
-+    auto sack = pImpl->sack;
-+    Pool *pool = dnf_sack_get_pool(sack);
-     std::vector<AdvisoryPkg> 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 <algorithm>
- #include <sys/stat.h>
-@@ -10,6 +12,32 @@
- #include <unistd.h>
- #include <string.h>
- 
-+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<std::string> 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 <functional>
- #include <string>
- #include <vector>
-@@ -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<std::string> 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 <mblaha@redhat.com>
+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 <copied-by-zanata@zanata.org>\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 <laskov@festa.bg>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <rbuj@fedoraproject.org>\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 <chmelarz@gmail.com>, 2016. #zanata
+ # Zdenek <chmelarz@gmail.com>, 2017. #zanata
+-# Daniel Rusek <mail@asciiwolf.com>, 2018. #zanata
+ # Jaroslav Rohel <jrohel@redhat.com>, 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 <jrohel@redhat.com>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <mcrcctm@gmail.com>, 2017. #zanata
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
+ # Máximo Castañeda Riloba <mcrcctm@gmail.com>, 2018. #zanata
++# Ludek Janda <ljanda@redhat.com>, 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 <mcrcctm@gmail.com>\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 <ljanda@redhat.com>\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 <asier.sarasua@gmail.com>\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 <copied-by-zanata@zanata.org>\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 <jiri.gronroos@iki.fi>\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 <abuke.ac@gmail.com>\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 <jfenal@gmail.com>, 2017. #zanata
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
+ # Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata
++# Ludek Janda <ljanda@redhat.com>, 2019. #zanata
++# corina roe <croe@redhat.com>, 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 <jean-baptiste@holcroft.fr>\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 <ljanda@redhat.com>\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 <f.t.public@gmail.com>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <teknos.ferenc@gmail.com>\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 <copied-by-zanata@zanata.org>\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 <sentabi@fedoraproject.org>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <nahareport@live.com>, 2018. #zanata
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
++# Keiko Moriguchi <kemorigu@redhat.com>, 2019. #zanata
++# Ludek Janda <ljanda@redhat.com>, 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 <copied-by-zanata@zanata.org>\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 <ljanda@redhat.com>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <EMAIL@ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL@li.org>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <geert.warrink@onsnet.nu>\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 <copied-by-zanata@zanata.org>\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 <aalam@fedoraproject.org>\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 <piotrdrag@gmail.com>\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 <intjalmeida@gmail.com>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <feonsu@gmail.com>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <goeran@uddeborg.se>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <copied-by-zanata@zanata.org>\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 <etcetin@gmail.com>\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 <yurchor@ukr.net>\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 @@
+ <config xmlns="http://zanata.org/namespace/config/">
+   <url>https://fedora.zanata.org/</url>
+   <project>libdnf</project>
+-  <project-version>master</project-version>
++  <project-version>rhel-8.1</project-version>
+   <project-type>gettext</project-type>
+ </config>
+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 <fun224@gmail.com>, 2016. #zanata
+ # Tommy He <lovenemesis@fedoraproject.org>, 2016. #zanata
+ # Jerry Lee <lchopn@gmail.com>, 2017. #zanata
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
++# Ludek Janda <ljanda@redhat.com>, 2019. #zanata
++# Tony Fu <tfu@redhat.com>, 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 <copied-by-zanata@zanata.org>\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 <ljanda@redhat.com>\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 <pswo10680@gmail.com>\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 <jmracek@redhat.com>
-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<ModulePackagePtr> & 
-         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 <jrohel@redhat.com>
+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 <jmracek@redhat.com>
-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<OptionNumber<std::uint32_t> > 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 <jrohel@redhat.com>
+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<std::istream> && 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 <jmracek@redhat.com>
-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<std::uint32_t> 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<Impl>(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<std::uint32_t> & 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<std::uint32_t> & 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<OptionNumber<std::uint32_t> > deltarpm_percentage{masterConfig.deltarpm_percentage()};
-     OptionBinding deltaRpmPercentageBinding{owner, deltarpm_percentage, "deltarpm_percentage"};
- 
--    OptionBool skip_if_unavailable{false};
-+    OptionChild<OptionBool> skip_if_unavailable{masterConfig.skip_if_unavailable()};
-     OptionBinding skipIfUnavailableBinding{owner, skip_if_unavailable, "skip_if_unavailable"};
- 
-     OptionString enabled_metadata{""};
-@@ -216,7 +216,7 @@ OptionChild<OptionString> & ConfigRepo::sslclientcert() { return pImpl->sslclien
- OptionChild<OptionString> & ConfigRepo::sslclientkey() { return pImpl->sslclientkey; }
- OptionChild<OptionBool> & ConfigRepo::deltarpm() { return pImpl->deltarpm; }
- OptionChild<OptionNumber<std::uint32_t> > & ConfigRepo::deltarpm_percentage() { return pImpl->deltarpm_percentage; }
--OptionBool & ConfigRepo::skip_if_unavailable() { return pImpl->skip_if_unavailable; }
-+OptionChild<OptionBool> & ConfigRepo::skip_if_unavailable() { return pImpl->skip_if_unavailable; }
- OptionString & ConfigRepo::enabled_metadata() { return pImpl->enabled_metadata; }
- OptionEnum<std::string> & 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<OptionString> & sslclientkey();
-     OptionChild<OptionBool> & deltarpm();
-     OptionChild<OptionNumber<std::uint32_t> > & deltarpm_percentage();
--    OptionBool & skip_if_unavailable();
-+    OptionChild<OptionBool> & 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 <jmracek@redhat.com>
+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 <jmracek@redhat.com>
+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 <jmracek@redhat.com>
+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 <jmracek@redhat.com>
+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 <jrohel@redhat.com>
+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 <assert.h>
+ #include <errno.h>
++#include <dirent.h>
+ #include <fcntl.h>
+ #include <linux/limits.h>
+ #include <pwd.h>
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <sys/utsname.h>
+@@ -41,9 +43,6 @@ extern "C" {
+ #include <solv/pool_parserpmrichdep.h>
+ }
+ 
+-// glib
+-#include <glib.h>
+-
+ // 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 <glib.h>
++#include <gio/gio.h>
++
++#include <string>
++
+ #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<GFileCopyFlags>(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 <jrohel@redhat.com>
+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 <strings.h>
+ #include <fcntl.h>
+@@ -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<LrHandle> &&
+                 }
+             }
+             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 <jrohel@redhat.com>
+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<GFileCopyFlags>(G_FILE_COPY_NOFOLLOW_SYMLINKS | G_FILE_COPY_ALL_METADATA)
+-        , NULL, NULL, NULL, error);
++        static_cast<GFileCopyFlags>(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 <jrohel@redhat.com>
+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 <jrohel@redhat.com>
+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 <mblaha@redhat.com> - 0.35.1-8
+- Enhanced fix of moving directories in minimal container (RhBug:1700341)
+
+* Thu Sep 05 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.35.1-7
+- Remove patch to not fail when installing modular RPMs without modular metadata
+
+* Thu Sep 05 2019 Marek Blaha <mblaha@redhat.com> - 0.35.1-6
+- Fix moving directories in minimal container (RhBug:1700341)
+
+* Tue Aug 06 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.35.1-5
+- Add suport for query sequence conversions
+
+* Thu Aug 01 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 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 <mblaha@redhat.com> - 0.35.1-3
+- Fix attaching and detaching of libsolvRepo and repo_internalize_trigger()
+  (RhBug:1730224)
+
+* Thu Jul 04 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.35.1-2
+- Add patch to not fail when installing modular RPMs without modular metadata
+
+* Tue Jun 11 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 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 <pkratoch@redhat.com> - 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 <pkratoch@redhat.com> - 0.22.5-6
+- Rebuild for libsolv soname bump (in libsolve update to 0.7.4)
+
 * Wed Apr 03 2019 Jaroslav Mracek <jmracek@redhat.com> - 0.22.5-5
 - Backport patches to set default to skip_if_unavailable to false (RhBug:1692452)