diff --git a/.gitignore b/.gitignore
index 5aef53c..ce72cd2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/libdnf-0.48.0.tar.gz
+SOURCES/libdnf-0.55.0.tar.gz
diff --git a/.libdnf.metadata b/.libdnf.metadata
index b596b13..85f3501 100644
--- a/.libdnf.metadata
+++ b/.libdnf.metadata
@@ -1 +1 @@
-452c2195741b627bd97b0be11cd4a4dc4118e330 SOURCES/libdnf-0.48.0.tar.gz
+5d997c2c7113cd50af986ada5ff10a62853f1943 SOURCES/libdnf-0.55.0.tar.gz
diff --git a/SOURCES/0001-Better-msgs-if-basecachedir-or-proxy-password-isn-t-set-RhBug-1888946.patch b/SOURCES/0001-Better-msgs-if-basecachedir-or-proxy-password-isn-t-set-RhBug-1888946.patch
new file mode 100644
index 0000000..7666421
--- /dev/null
+++ b/SOURCES/0001-Better-msgs-if-basecachedir-or-proxy-password-isn-t-set-RhBug-1888946.patch
@@ -0,0 +1,87 @@
+From 2353dfbcb49a16bd37115915517417678fe49b19 Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Fri, 13 Nov 2020 09:55:23 +0100
+Subject: [PATCH] Better msgs if "basecachedir" or "proxy_password" isn't set
+ (RhBug:1888946)
+
+Generates more specific error messages:
+- repo '%s': 'basecachedir' is not set
+- repo '%s': 'proxy_username' is set but not 'proxy_password'
+- 'proxy_username' is set but not 'proxy_password'
+instead of generic "GetValue(): Value not set"
+---
+ libdnf/repo/Repo.cpp | 24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/libdnf/repo/Repo.cpp b/libdnf/repo/Repo.cpp
+index d7c137d75..34539e1ee 100644
+--- a/libdnf/repo/Repo.cpp
++++ b/libdnf/repo/Repo.cpp
+@@ -484,8 +484,12 @@ std::unique_ptr<LrHandle> Repo::Impl::lrHandleInitLocal()
+     handleSetOpt(h.get(), LRO_LOCAL, 1L);
+ #ifdef LRO_SUPPORTS_CACHEDIR
+     /* If zchunk is enabled, set librepo cache dir */
+-    if (conf->getMasterConfig().zchunk().getValue())
++    if (conf->getMasterConfig().zchunk().getValue()) {
++        if (conf->basecachedir().empty()) {
++            throw Exception(tfm::format(_("repo '%s': 'basecachedir' is not set"), id));
++        }
+         handleSetOpt(h.get(), LRO_CACHEDIR, conf->basecachedir().getValue().c_str());
++    }
+ #endif
+     return h;
+ }
+@@ -526,6 +530,9 @@ std::unique_ptr<LrHandle> Repo::Impl::lrHandleInitRemote(const char *destdir)
+                 handleSetOpt(h.get(), LRO_METALINKURL, tmp.c_str());
+         }
+         handleSetOpt(h.get(), LRO_FASTESTMIRROR, conf->fastestmirror().getValue() ? 1L : 0L);
++        if (conf->basecachedir().empty()) {
++            throw Exception(tfm::format(_("repo '%s': 'basecachedir' is not set"), id));
++        }
+         auto fastestMirrorCacheDir = conf->basecachedir().getValue();
+         if (fastestMirrorCacheDir.back() != '/')
+             fastestMirrorCacheDir.push_back('/');
+@@ -569,8 +576,12 @@ std::unique_ptr<LrHandle> Repo::Impl::lrHandleInitRemote(const char *destdir)
+ 
+ #ifdef LRO_SUPPORTS_CACHEDIR
+     /* If zchunk is enabled, set librepo cache dir */
+-    if (conf->getMasterConfig().zchunk().getValue())
++    if (conf->getMasterConfig().zchunk().getValue()) {
++        if (conf->basecachedir().empty()) {
++            throw Exception(tfm::format(_("repo '%s': 'basecachedir' is not set"), id));
++        }
+         handleSetOpt(h.get(), LRO_CACHEDIR, conf->basecachedir().getValue().c_str());
++    }
+ #endif
+ 
+     auto minrate = conf->minrate().getValue();
+@@ -610,6 +621,9 @@ std::unique_ptr<LrHandle> Repo::Impl::lrHandleInitRemote(const char *destdir)
+     if (!conf->proxy_username().empty()) {
+         userpwd = conf->proxy_username().getValue();
+         if (!userpwd.empty()) {
++            if (conf->proxy_password().empty()) {
++                throw RepoError(tfm::format(_("repo '%s': 'proxy_username' is set but not 'proxy_password'"), id));
++            }
+             userpwd = formatUserPassString(userpwd, conf->proxy_password().getValue(), true);
+             handleSetOpt(h.get(), LRO_PROXYUSERPWD, userpwd.c_str());
+         }
+@@ -1346,6 +1360,9 @@ std::string Repo::Impl::getHash() const
+ 
+ std::string Repo::Impl::getCachedir() const
+ {
++    if (conf->basecachedir().empty()) {
++        throw Exception(tfm::format(_("repo '%s': 'basecachedir' is not set"), id));
++    }
+     auto repodir(conf->basecachedir().getValue());
+     if (repodir.back() != '/')
+         repodir.push_back('/');
+@@ -1690,6 +1707,9 @@ static LrHandle * newHandle(ConfigMain * conf)
+         if (!conf->proxy_username().empty()) {
+             auto userpwd = conf->proxy_username().getValue();
+             if (!userpwd.empty()) {
++                if (conf->proxy_password().empty()) {
++                    throw RepoError(_("'proxy_username' is set but not 'proxy_password'"));
++                }
+                 userpwd = formatUserPassString(userpwd, conf->proxy_password().getValue(), true);
+                 handleSetOpt(h, LRO_PROXYUSERPWD, userpwd.c_str());
+             }
diff --git a/SOURCES/0001-history-Fix-dnf-history-rollback-when-a-package-was-removed-RhBug1683134.patch b/SOURCES/0001-history-Fix-dnf-history-rollback-when-a-package-was-removed-RhBug1683134.patch
deleted file mode 100644
index 079524d..0000000
--- a/SOURCES/0001-history-Fix-dnf-history-rollback-when-a-package-was-removed-RhBug1683134.patch
+++ /dev/null
@@ -1,244 +0,0 @@
-From a96d701f7f55ff475e11ac9cda63b81c31c54e7a Mon Sep 17 00:00:00 2001
-From: Daniel Mach <dmach@redhat.com>
-Date: Wed, 6 May 2020 08:34:46 +0200
-Subject: [PATCH] history: Fix dnf history rollback when a package was removed
- (RhBug:1683134)
-
----
- libdnf/transaction/MergedTransaction.cpp      |  25 +++-
- .../transaction/MergedTransactionTest.cpp     | 120 ++++++++++++++++--
- .../transaction/MergedTransactionTest.hpp     |   6 +-
- 3 files changed, 137 insertions(+), 14 deletions(-)
-
-diff --git a/libdnf/transaction/MergedTransaction.cpp b/libdnf/transaction/MergedTransaction.cpp
-index a7c06ffa9..a8d878cb5 100644
---- a/libdnf/transaction/MergedTransaction.cpp
-+++ b/libdnf/transaction/MergedTransaction.cpp
-@@ -19,6 +19,7 @@
-  */
- 
- #include "MergedTransaction.hpp"
-+#include <algorithm>
- #include <vector>
- 
- namespace libdnf {
-@@ -171,6 +172,21 @@ MergedTransaction::getConsoleOutput()
-     return output;
- }
- 
-+
-+static bool transaction_item_sort_function(const std::shared_ptr<TransactionItemBase> lhs, const std::shared_ptr<TransactionItemBase> rhs) {
-+    if (lhs->isForwardAction() && rhs->isForwardAction()) {
-+        return false;
-+    }
-+    if (lhs->isBackwardAction() && rhs->isBackwardAction()) {
-+        return false;
-+    }
-+    if (lhs->isBackwardAction()) {
-+        return true;
-+    }
-+    return false;
-+}
-+
-+
- /**
-  * Get list of transaction items involved in the merged transaction
-  * Actions are merged using following rules:
-@@ -203,6 +219,9 @@ MergedTransaction::getItems()
-     // iterate over transaction
-     for (auto t : transactions) {
-         auto transItems = t->getItems();
-+        // sort transaction items by their action type - forward/backward
-+        // this fixes behavior of the merging algorithm in several edge cases
-+        std::sort(transItems.begin(), transItems.end(), transaction_item_sort_function);
-         // iterate over transaction items
-         for (auto transItem : transItems) {
-             // get item and its type
-@@ -383,10 +402,6 @@ MergedTransaction::mergeItem(ItemPairMap &itemPairMap, TransactionItemBasePtr mT
-     auto firstState = previousItemPair.first->getAction();
-     auto newState = mTransItem->getAction();
- 
--    if (firstState == TransactionItemAction::INSTALL && mTransItem->isBackwardAction()) {
--        return;
--    }
--
-     switch (firstState) {
-         case TransactionItemAction::REMOVE:
-         case TransactionItemAction::OBSOLETED:
-@@ -399,6 +414,8 @@ MergedTransaction::mergeItem(ItemPairMap &itemPairMap, TransactionItemBasePtr mT
-                 // Install -> Remove = (nothing)
-                 itemPairMap.erase(name);
-                 break;
-+            } else if (mTransItem->isBackwardAction()) {
-+                break;
-             }
-             // altered -> transfer install to the altered package
-             mTransItem->setAction(TransactionItemAction::INSTALL);
-diff --git a/tests/libdnf/transaction/MergedTransactionTest.cpp b/tests/libdnf/transaction/MergedTransactionTest.cpp
-index 90ad182cf..52507700b 100644
---- a/tests/libdnf/transaction/MergedTransactionTest.cpp
-+++ b/tests/libdnf/transaction/MergedTransactionTest.cpp
-@@ -700,7 +700,7 @@ MergedTransactionTest::test_downgrade()
- }
- 
- void
--MergedTransactionTest::test_install_downgrade()
-+MergedTransactionTest::test_install_downgrade_upgrade_remove()
- {
-     auto trans1 = std::make_shared< libdnf::swdb_private::Transaction >(conn);
-     trans1->addItem(
-@@ -724,19 +724,123 @@ MergedTransactionTest::test_install_downgrade()
-         TransactionItemReason::USER
-     );
- 
-+    auto trans3 = std::make_shared< libdnf::swdb_private::Transaction >(conn);
-+    trans3->addItem(
-+        nevraToRPMItem(conn, "tour-0:4.6-1.noarch"),
-+        "repo2",
-+        TransactionItemAction::UPGRADED,
-+        TransactionItemReason::USER
-+    );
-+    trans3->addItem(
-+        nevraToRPMItem(conn, "tour-0:4.8-1.noarch"),
-+        "repo1",
-+        TransactionItemAction::UPGRADE,
-+        TransactionItemReason::USER
-+    );
-+
-+    auto trans4 = std::make_shared< libdnf::swdb_private::Transaction >(conn);
-+    trans4->addItem(
-+        nevraToRPMItem(conn, "tour-0:4.8-1.noarch"),
-+        "repo1",
-+        TransactionItemAction::REMOVE,
-+        TransactionItemReason::USER
-+    );
-+
-     MergedTransaction merged(trans1);
-+
-+    // test merging trans1, trans2
-     merged.merge(trans2);
-+    auto items2 = merged.getItems();
-+    CPPUNIT_ASSERT_EQUAL(1, (int)items2.size());
-+    auto item2 = items2.at(0);
-+    CPPUNIT_ASSERT_EQUAL(std::string("tour-4.6-1.noarch"), item2->getItem()->toStr());
-+    CPPUNIT_ASSERT_EQUAL(std::string("repo2"), item2->getRepoid());
-+    CPPUNIT_ASSERT_EQUAL(TransactionItemAction::INSTALL, item2->getAction());
-+    CPPUNIT_ASSERT_EQUAL(TransactionItemReason::USER, item2->getReason());
- 
--    auto items = merged.getItems();
--    CPPUNIT_ASSERT_EQUAL(1, (int)items.size());
-+    // test merging trans1, trans2, trans3
-+    merged.merge(trans3);
-+    auto items3 = merged.getItems();
-+    CPPUNIT_ASSERT_EQUAL(1, (int)items3.size());
-+    auto item3 = items3.at(0);
-+    CPPUNIT_ASSERT_EQUAL(std::string("tour-4.8-1.noarch"), item3->getItem()->toStr());
-+    CPPUNIT_ASSERT_EQUAL(std::string("repo1"), item3->getRepoid());
-+    CPPUNIT_ASSERT_EQUAL(TransactionItemAction::INSTALL, item3->getAction());
-+    CPPUNIT_ASSERT_EQUAL(TransactionItemReason::USER, item3->getReason());
- 
--    auto item = items.at(0);
--    CPPUNIT_ASSERT_EQUAL(std::string("tour-4.6-1.noarch"), item->getItem()->toStr());
--    CPPUNIT_ASSERT_EQUAL(std::string("repo2"), item->getRepoid());
--    CPPUNIT_ASSERT_EQUAL(TransactionItemAction::INSTALL, item->getAction());
--    CPPUNIT_ASSERT_EQUAL(TransactionItemReason::USER, item->getReason());
-+    // test merging trans1, trans2, trans3, trans4
-+    merged.merge(trans4);
-+    auto items4 = merged.getItems();
-+    CPPUNIT_ASSERT_EQUAL(0, (int)items4.size());
-+    // trans4 removes the package, empty output is expected
- }
- 
-+
-+void
-+MergedTransactionTest::test_downgrade_upgrade_remove()
-+{
-+    auto trans1 = std::make_shared< libdnf::swdb_private::Transaction >(conn);
-+    trans1->addItem(
-+        nevraToRPMItem(conn, "tour-0:4.6-1.noarch"),
-+        "repo2",
-+        TransactionItemAction::DOWNGRADE,
-+        TransactionItemReason::USER
-+    );
-+    trans1->addItem(
-+        nevraToRPMItem(conn, "tour-0:4.8-1.noarch"),
-+        "repo1",
-+        TransactionItemAction::DOWNGRADED,
-+        TransactionItemReason::USER
-+    );
-+
-+    // items are in reversed order than in test_install_downgrade_upgrade_remove()
-+    // fixing this required ordering transaction items by forward/backward action
-+    auto trans2 = std::make_shared< libdnf::swdb_private::Transaction >(conn);
-+    trans2->addItem(
-+        nevraToRPMItem(conn, "tour-0:4.8-1.noarch"),
-+        "repo1",
-+        TransactionItemAction::UPGRADE,
-+        TransactionItemReason::USER
-+    );
-+    trans2->addItem(
-+        nevraToRPMItem(conn, "tour-0:4.6-1.noarch"),
-+        "repo2",
-+        TransactionItemAction::UPGRADED,
-+        TransactionItemReason::USER
-+    );
-+
-+    auto trans3 = std::make_shared< libdnf::swdb_private::Transaction >(conn);
-+    trans3->addItem(
-+        nevraToRPMItem(conn, "tour-0:4.8-1.noarch"),
-+        "repo1",
-+        TransactionItemAction::REMOVE,
-+        TransactionItemReason::USER
-+    );
-+
-+    MergedTransaction merged(trans1);
-+
-+    // test merging trans1, trans2
-+    merged.merge(trans2);
-+    auto items2 = merged.getItems();
-+    CPPUNIT_ASSERT_EQUAL(1, (int)items2.size());
-+    auto item2 = items2.at(0);
-+    CPPUNIT_ASSERT_EQUAL(std::string("tour-4.8-1.noarch"), item2->getItem()->toStr());
-+    CPPUNIT_ASSERT_EQUAL(std::string("repo1"), item2->getRepoid());
-+    CPPUNIT_ASSERT_EQUAL(TransactionItemAction::REINSTALL, item2->getAction());
-+    CPPUNIT_ASSERT_EQUAL(TransactionItemReason::USER, item2->getReason());
-+
-+    // test merging trans1, trans2, trans3
-+    merged.merge(trans3);
-+    auto items3 = merged.getItems();
-+    CPPUNIT_ASSERT_EQUAL(1, (int)items3.size());
-+    auto item3 = items3.at(0);
-+    CPPUNIT_ASSERT_EQUAL(std::string("tour-4.8-1.noarch"), item3->getItem()->toStr());
-+    CPPUNIT_ASSERT_EQUAL(std::string("repo1"), item3->getRepoid());
-+    CPPUNIT_ASSERT_EQUAL(TransactionItemAction::REMOVE, item3->getAction());
-+    CPPUNIT_ASSERT_EQUAL(TransactionItemReason::USER, item3->getReason());
-+}
-+
-+
- void
- MergedTransactionTest::test_multilib_identity()
- {
-diff --git a/tests/libdnf/transaction/MergedTransactionTest.hpp b/tests/libdnf/transaction/MergedTransactionTest.hpp
-index 9f1ed660a..77585e865 100644
---- a/tests/libdnf/transaction/MergedTransactionTest.hpp
-+++ b/tests/libdnf/transaction/MergedTransactionTest.hpp
-@@ -26,7 +26,8 @@ class MergedTransactionTest : public CppUnit::TestCase {
-     CPPUNIT_TEST(test_add_obsoleted_obsoleted);
- 
-     CPPUNIT_TEST(test_downgrade);
--    CPPUNIT_TEST(test_install_downgrade);
-+    CPPUNIT_TEST(test_install_downgrade_upgrade_remove);
-+    CPPUNIT_TEST(test_downgrade_upgrade_remove);
- 
-     CPPUNIT_TEST(test_multilib_identity);
- 
-@@ -56,7 +57,8 @@ class MergedTransactionTest : public CppUnit::TestCase {
-     // END: tests ported from DNF unit tests
- 
-     void test_downgrade();
--    void test_install_downgrade();
-+    void test_install_downgrade_upgrade_remove();
-+    void test_downgrade_upgrade_remove();
- 
-     void test_multilib_identity();
- private:
diff --git a/SOURCES/0002-Add-log-file-level-main-config-option-RhBug-1802074.patch b/SOURCES/0002-Add-log-file-level-main-config-option-RhBug-1802074.patch
deleted file mode 100644
index 078e3ba..0000000
--- a/SOURCES/0002-Add-log-file-level-main-config-option-RhBug-1802074.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 69e7baa4f6484c39ce25869d0c6252393b7c0411 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
-Date: Thu, 4 Jun 2020 11:13:48 +0200
-Subject: [PATCH] Add log file level main config option (RhBug:1802074)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1802074
----
- libdnf/conf/ConfigMain.cpp | 3 +++
- libdnf/conf/ConfigMain.hpp | 1 +
- 4 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/libdnf/conf/ConfigMain.cpp b/libdnf/conf/ConfigMain.cpp
-index 305b8e233..06352b7f3 100644
---- a/libdnf/conf/ConfigMain.cpp
-+++ b/libdnf/conf/ConfigMain.cpp
-@@ -169,6 +169,7 @@ class ConfigMain::Impl {
- 
-     OptionNumber<std::int32_t> debuglevel{2, 0, 10};
-     OptionNumber<std::int32_t> errorlevel{3, 0, 10};
-+    OptionNumber<std::int32_t> logfilelevel{9, 0, 10};
-     OptionPath installroot{"/", false, true};
-     OptionPath config_file_path{CONF_FILENAME};
-     OptionBool plugins{true};
-@@ -350,6 +351,7 @@ ConfigMain::Impl::Impl(Config & owner)
- {
-     owner.optBinds().add("debuglevel", debuglevel);
-     owner.optBinds().add("errorlevel", errorlevel);
-+    owner.optBinds().add("logfilelevel", logfilelevel);
-     owner.optBinds().add("installroot", installroot);
-     owner.optBinds().add("config_file_path", config_file_path);
-     owner.optBinds().add("plugins", plugins);
-@@ -491,6 +493,7 @@ ConfigMain::~ConfigMain() = default;
- 
- OptionNumber<std::int32_t> & ConfigMain::debuglevel() { return pImpl->debuglevel; }
- OptionNumber<std::int32_t> & ConfigMain::errorlevel() { return pImpl->errorlevel; }
-+OptionNumber<std::int32_t> & ConfigMain::logfilelevel() { return pImpl->logfilelevel; }
- OptionString & ConfigMain::installroot() { return pImpl->installroot; }
- OptionString & ConfigMain::config_file_path() { return pImpl->config_file_path; }
- OptionBool & ConfigMain::plugins() { return pImpl->plugins; }
-diff --git a/libdnf/conf/ConfigMain.hpp b/libdnf/conf/ConfigMain.hpp
-index 118ecbf1c..706471029 100644
---- a/libdnf/conf/ConfigMain.hpp
-+++ b/libdnf/conf/ConfigMain.hpp
-@@ -49,6 +49,7 @@ class ConfigMain : public Config {
- 
-     OptionNumber<std::int32_t> & debuglevel();
-     OptionNumber<std::int32_t> & errorlevel();
-+    OptionNumber<std::int32_t> & logfilelevel();
-     OptionString & installroot();
-     OptionString & config_file_path();
-     OptionBool & plugins();
diff --git a/SOURCES/0002-modules-Add-special-handling-for-src-artifacts-RhBug-1809314.patch b/SOURCES/0002-modules-Add-special-handling-for-src-artifacts-RhBug-1809314.patch
new file mode 100644
index 0000000..a16d544
--- /dev/null
+++ b/SOURCES/0002-modules-Add-special-handling-for-src-artifacts-RhBug-1809314.patch
@@ -0,0 +1,73 @@
+From 71db968178e5d8cd4c01ed36fa940c2a95f3e494 Mon Sep 17 00:00:00 2001
+From: Jaroslav Mracek <jmracek@redhat.com>
+Date: Mon, 9 Nov 2020 18:10:37 +0100
+Subject: [PATCH] [modules] Add special handling for src artifacts
+ (RhBug:1809314)
+
+Source packages are special because they cannot be installed and provide
+nothing, therefore they should be handled by a different way than binary
+packages. Source rpm should not trigger a removal of binary packages.
+---
+ libdnf/dnf-sack.cpp | 22 +++++++++++++++++++---
+ 1 file changed, 19 insertions(+), 3 deletions(-)
+
+diff --git a/libdnf/dnf-sack.cpp b/libdnf/dnf-sack.cpp
+index 9fd2c72d1..d44e1d86d 100644
+--- a/libdnf/dnf-sack.cpp
++++ b/libdnf/dnf-sack.cpp
+@@ -2335,20 +2335,29 @@ setModuleExcludes(DnfSack *sack, const char ** hotfixRepos,
+ {
+     dnf_sack_set_module_excludes(sack, nullptr);
+     std::vector<std::string> names;
++    std::vector<std::string> srcNames;
+     libdnf::DependencyContainer nameDependencies{sack};
+     libdnf::Nevra nevra;
+     for (const auto &rpm : includeNEVRAs) {
+         if (nevra.parse(rpm.c_str(), HY_FORM_NEVRA)) {
+-            names.push_back(nevra.getName());
+-            nameDependencies.addReldep(nevra.getName().c_str());
++            auto arch = nevra.getArch();
++            // source packages do not provide anything and must not cause excluding binary packages
++            if (arch == "src" || arch == "nosrc") {
++                srcNames.push_back(nevra.getName());
++            } else {
++                names.push_back(nevra.getName());
++                nameDependencies.addReldep(nevra.getName().c_str());
++            }
+         }
+     }
+ 
+     std::vector<const char *> namesCString(names.size() + 1);
++    std::vector<const char *> srcNamesCString(srcNames.size() + 1);
+     std::vector<const char *> excludeNEVRAsCString(excludeNEVRAs.size() + 1);
+     std::vector<const char *> includeNEVRAsCString(includeNEVRAs.size() + 1);
+ 
+     transform(names.begin(), names.end(), namesCString.begin(), std::mem_fn(&std::string::c_str));
++    transform(srcNames.begin(), srcNames.end(), srcNamesCString.begin(), std::mem_fn(&std::string::c_str));
+     transform(excludeNEVRAs.begin(), excludeNEVRAs.end(), excludeNEVRAsCString.begin(),
+               std::mem_fn(&std::string::c_str));
+     transform(includeNEVRAs.begin(), includeNEVRAs.end(), includeNEVRAsCString.begin(),
+@@ -2363,6 +2372,7 @@ setModuleExcludes(DnfSack *sack, const char ** hotfixRepos,
+     libdnf::Query excludeQuery{keepPackages};
+     libdnf::Query excludeProvidesQuery{keepPackages};
+     libdnf::Query excludeNamesQuery(keepPackages);
++    libdnf::Query excludeSrcNamesQuery(keepPackages);
+     includeQuery.addFilter(HY_PKG_NEVRA_STRICT, HY_EQ, includeNEVRAsCString.data());
+ 
+     excludeQuery.addFilter(HY_PKG_NEVRA_STRICT, HY_EQ, excludeNEVRAsCString.data());
+@@ -2372,8 +2382,14 @@ setModuleExcludes(DnfSack *sack, const char ** hotfixRepos,
+     excludeProvidesQuery.addFilter(HY_PKG_PROVIDES, &nameDependencies);
+     excludeProvidesQuery.queryDifference(includeQuery);
+ 
+-    // Requred to filtrate out source packages and packages with incompatible architectures
++    // Search for source packages with same names as included source artifacts
++    excludeSrcNamesQuery.addFilter(HY_PKG_NAME, HY_EQ, srcNamesCString.data());
++    const char * srcArchs[] = {"src", "nosrc", nullptr};
++    excludeSrcNamesQuery.addFilter(HY_PKG_ARCH, HY_EQ, srcArchs);
++
++    // Required to filtrate out source packages and packages with incompatible architectures
+     excludeNamesQuery.addFilter(HY_PKG_NAME, HY_EQ, namesCString.data());
++    excludeNamesQuery.queryUnion(excludeSrcNamesQuery);
+     excludeNamesQuery.queryDifference(includeQuery);
+ 
+     dnf_sack_set_module_excludes(sack, excludeQuery.getResultPset());
diff --git a/SOURCES/0003-Accept-double-eq-as-an-operator-in-reldeps-RhBug-1847946.patch b/SOURCES/0003-Accept-double-eq-as-an-operator-in-reldeps-RhBug-1847946.patch
deleted file mode 100644
index f903099..0000000
--- a/SOURCES/0003-Accept-double-eq-as-an-operator-in-reldeps-RhBug-1847946.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 227cf617dd6afd7583f1c864c66ba2ca95e3d09d Mon Sep 17 00:00:00 2001
-From: Pavla Kratochvilova <pkratoch@redhat.com>
-Date: Wed, 24 Jun 2020 08:48:49 +0200
-Subject: [PATCH 1/2] Accept '==' as an operator in reldeps (RhBug:1847946)
-
-Although rpm doesn't support this and using '==' can result in an
-unexpected behavior, libdnf accepted '==' by mistake for some time and
-other tools (namely Ansible Tower) already rely on it.
-
-This brings back the '==' support with a deprecation warning.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1847946
----
- libdnf/repo/DependencySplitter.cpp | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/libdnf/repo/DependencySplitter.cpp b/libdnf/repo/DependencySplitter.cpp
-index 0030ea6d3..402962286 100644
---- a/libdnf/repo/DependencySplitter.cpp
-+++ b/libdnf/repo/DependencySplitter.cpp
-@@ -20,16 +20,21 @@
- 
- #include "DependencySplitter.hpp"
- #include "../dnf-sack.h"
-+#include "../log.hpp"
- #include "../utils/regex/regex.hpp"
- 
-+#include "bgettext/bgettext-lib.h"
-+#include "tinyformat/tinyformat.hpp"
-+
- namespace libdnf {
- 
- static const Regex RELDEP_REGEX = 
--    Regex("^(\\S*)\\s*(<=|>=|<|>|=)?\\s*(\\S*)$", REG_EXTENDED);
-+    Regex("^(\\S*)\\s*(<=|>=|<|>|=|==)?\\s*(\\S*)$", REG_EXTENDED);
- 
- static bool
- getCmpFlags(int *cmp_type, std::string matchCmpType)
- {
-+    auto logger(Log::getLogger());
-     int subexpr_len = matchCmpType.size();
-     auto match_start = matchCmpType.c_str();
-     if (subexpr_len == 2) {
-@@ -41,6 +46,13 @@ getCmpFlags(int *cmp_type, std::string matchCmpType)
-             *cmp_type |= HY_GT;
-             *cmp_type |= HY_EQ;
-         }
-+        else if (strncmp(match_start, "==", 2) == 0) {
-+            auto msg = tfm::format(_("Using '==' operator in reldeps can result in an undefined "
-+                                     "behavior. It is deprecated and the support will be dropped "
-+                                     "in future versions. Use '=' operator instead."));
-+            logger->warning(msg);
-+            *cmp_type |= HY_EQ;
-+        }
-         else
-             return false;
-     } else if (subexpr_len == 1) {
-
-From 1f9b14f1d30113a602e18f60ef7ba1f11aead10f Mon Sep 17 00:00:00 2001
-From: Pavla Kratochvilova <pkratoch@redhat.com>
-Date: Wed, 24 Jun 2020 13:08:48 +0200
-Subject: [PATCH 2/2] Add tests for '==' operator in reldeps
-
----
- python/hawkey/tests/tests/test_reldep.py | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/python/hawkey/tests/tests/test_reldep.py b/python/hawkey/tests/tests/test_reldep.py
-index 8b479cfd7..a9f6cae6f 100644
---- a/python/hawkey/tests/tests/test_reldep.py
-+++ b/python/hawkey/tests/tests/test_reldep.py
-@@ -61,6 +61,11 @@ def test_custom_querying(self):
-         reldep = hawkey.Reldep(self.sack, "P-lib = 3-3")
-         q = hawkey.Query(self.sack).filter(provides=reldep)
-         self.assertLength(q, 1)
-+        # '==' operator is deprecated and the support will be dropped in future
-+        # versions (see bug 1847946)
-+        reldep = hawkey.Reldep(self.sack, "P-lib == 3-3")
-+        q = hawkey.Query(self.sack).filter(provides=reldep)
-+        self.assertLength(q, 1)
-         reldep = hawkey.Reldep(self.sack, "P-lib >= 3")
-         q = hawkey.Query(self.sack).filter(provides=reldep)
-         self.assertLength(q, 1)
diff --git a/SOURCES/0003-Avoid-multilib-file-conflict-in-config.h-RhBug-1918818.patch b/SOURCES/0003-Avoid-multilib-file-conflict-in-config.h-RhBug-1918818.patch
new file mode 100644
index 0000000..ae93fb0
--- /dev/null
+++ b/SOURCES/0003-Avoid-multilib-file-conflict-in-config.h-RhBug-1918818.patch
@@ -0,0 +1,101 @@
+From 3f6adc99506f065d0858e4d9d46055be9d070634 Mon Sep 17 00:00:00 2001
+From: Nicola Sella <nsella@redhat.com>
+Date: Fri, 22 Jan 2021 16:07:37 +0100
+Subject: [PATCH] Avoid multilib file conflict in config.h (RhBug:1918818)
+
+=changelog=
+msg: Avoid multilib file conflicts in config.h
+resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1918818
+---
+ .gitignore                             |  2 +-
+ libdnf/CMakeLists.txt                  |  8 ++++++-
+ libdnf/{config.h.in => config-64.h.in} |  6 +++---
+ libdnf/config.h                        | 29 ++++++++++++++++++++++++++
+ 4 files changed, 40 insertions(+), 5 deletions(-)
+ rename libdnf/{config.h.in => config-64.h.in} (87%)
+ create mode 100644 libdnf/config.h
+
+diff --git a/.gitignore b/.gitignore
+index e17a9b9bb..0a63bdae7 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -5,4 +5,4 @@
+ build
+ *.pyc
+ data/tests/modules/yum.repos.d/test.repo
+-libdnf/config.h
++libdnf/config-64.h
+diff --git a/libdnf/CMakeLists.txt b/libdnf/CMakeLists.txt
+index e82aac11e..25f33d7b0 100644
+--- a/libdnf/CMakeLists.txt
++++ b/libdnf/CMakeLists.txt
+@@ -35,7 +35,13 @@ set(LIBDNF_SRCS
+ include_directories(transaction)
+ add_subdirectory("transaction")
+ 
+-configure_file("config.h.in" ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
++if(CMAKE_SIZEOF_VOID_P EQUAL 8)
++    set(MULTILIB_ARCH "64")
++    configure_file("config-64.h.in" ${CMAKE_CURRENT_SOURCE_DIR}/config-64.h)
++elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
++    set(MULTILIB_ARCH "32")
++    configure_file("config-64.h.in" ${CMAKE_CURRENT_SOURCE_DIR}/config-32.h)
++endif()
+ configure_file("dnf-version.h.in"  ${CMAKE_CURRENT_SOURCE_DIR}/dnf-version.h)
+ configure_file("libdnf.pc.in" ${CMAKE_CURRENT_BINARY_DIR}/libdnf.pc @ONLY)
+ 
+diff --git a/libdnf/config.h.in b/libdnf/config-64.h.in
+similarity index 87%
+rename from libdnf/config.h.in
+rename to libdnf/config-64.h.in
+index 77974f757..e2329fe71 100644
+--- a/libdnf/config.h.in
++++ b/libdnf/config-64.h.in
+@@ -18,9 +18,9 @@
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ 
+-#ifndef _LIBDNF_CONFIG_H_
+-#define _LIBDNF_CONFIG_H_
++#ifndef _LIBDNF_CONFIG_@MULTILIB_ARCH@_H_
++#define _LIBDNF_CONFIG_@MULTILIB_ARCH@_H_
+ 
+ #define DEFAULT_PLUGINS_DIRECTORY "@CMAKE_INSTALL_FULL_LIBDIR@/libdnf/plugins/"
+ 
+-#endif // _LIBDNF_CONFIG_H_
++#endif // _LIBDNF_CONFIG_@MULTILIB_ARCH@_H_
+diff --git a/libdnf/config.h b/libdnf/config.h
+new file mode 100644
+index 000000000..16121f6f5
+--- /dev/null
++++ b/libdnf/config.h
+@@ -0,0 +1,29 @@
++/*
++ * Copyright (C) 2018 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 <bits/wordsize.h>
++
++#if __WORDSIZE == 32
++#include "config-32.h"
++#elif __WORDSIZE == 64
++#include "config-64.h"
++#else
++#error "Unknown word size"
++#endif
diff --git a/SOURCES/0004-Update-translations-RhBug-1820548.patch b/SOURCES/0004-Update-translations-RhBug-1820548.patch
deleted file mode 100644
index c74b3c7..0000000
--- a/SOURCES/0004-Update-translations-RhBug-1820548.patch
+++ /dev/null
@@ -1,6094 +0,0 @@
-From a54f134cf0721a0087dfa0b4fae428905617cd3c Mon Sep 17 00:00:00 2001
-From: Marek Blaha <mblaha@redhat.com>
-Date: Tue, 28 Jul 2020 14:45:26 +0200
-Subject: [PATCH] Update translations (RhBug:1820548)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1820548
----
- po/fr.po    | 1144 +++++++++++++++++++++++++------------------------
- po/ja.po    | 1185 ++++++++++++++++++++++++++-------------------------
- po/ko.po    | 1170 +++++++++++++++++++++++++-------------------------
- po/zh_CN.po | 1173 +++++++++++++++++++++++++-------------------------
- 4 files changed, 2360 insertions(+), 2312 deletions(-)
-
-diff --git a/po/fr.po b/po/fr.po
-index 3cc8b413..56010154 100644
---- a/po/fr.po
-+++ b/po/fr.po
-@@ -4,12 +4,13 @@
- # 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
-+# Julien Humbert <julroy67@gmail.com>, 2020.
- msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2020-03-19 13:58+0100\n"
--"PO-Revision-Date: 2020-03-22 12:28+0000\n"
-+"POT-Creation-Date: 2020-06-26 09:18-0400\n"
-+"PO-Revision-Date: 2020-03-31 20:38+0000\n"
- "Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
- "Language-Team: French <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/fr/>\n"
- "Language: fr\n"
-@@ -19,943 +20,958 @@ msgstr ""
- "Plural-Forms: nplurals=2; plural=n > 1;\n"
- "X-Generator: Weblate 3.11.3\n"
- 
--#: ../libdnf/hy-iutil.cpp:322
-+#: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
-+msgid "no value specified"
-+msgstr "aucune valeur n’est indiquée"
-+
-+#: libdnf/conf/ConfigMain.cpp:67 libdnf/conf/OptionSeconds.cpp:48
- #, c-format
--msgid "Failed renaming %1$s to %2$s: %3$s"
--msgstr "N’a pas pu renommer %1$s en %2$s : %3$s"
-+msgid "seconds value '%s' must not be negative"
-+msgstr "la valeur en secondes « %s » ne doit pas être négative"
- 
--#: ../libdnf/hy-iutil.cpp:330
-+#: libdnf/conf/ConfigMain.cpp:71
- #, c-format
--msgid "Failed setting perms on %1$s: %2$s"
--msgstr "N’a pas pu définir les permissions sur %1$s : %2$s"
-+msgid "could not convert '%s' to bytes"
-+msgstr "n’a pu convertir « %s » en octets"
- 
--#: ../libdnf/hy-iutil.cpp:376
-+#: libdnf/conf/ConfigMain.cpp:83 libdnf/conf/OptionSeconds.cpp:66
- #, c-format
--msgid "cannot create directory %1$s: %2$s"
--msgstr "impossible de créer le dossier %1$s : %2$s"
-+msgid "unknown unit '%s'"
-+msgstr "unité « %s » inconnue"
- 
--#: ../libdnf/hy-iutil.cpp:399 ../libdnf/dnf-utils.cpp:111
-+#: libdnf/conf/ConfigMain.cpp:329
- #, c-format
--msgid "cannot open directory %1$s: %2$s"
--msgstr "impossible d’ouvrir le dossier %1$s : %2$s"
-+msgid "percentage '%s' is out of range"
-+msgstr "le pourcentage « %s » est en dehors des limites"
- 
--#: ../libdnf/hy-iutil.cpp:411
-+#: libdnf/conf/OptionBinds.cpp:76
- #, c-format
--msgid "cannot stat path %1$s: %2$s"
--msgstr "impossible de stat le chemin %1$s : %2$s"
-+msgid "Configuration: OptionBinding with id \"%s\" does not exist"
-+msgstr "Configuration : OptionBinding ayant pour id « %s » n’existe pas"
-+
-+#: libdnf/conf/OptionBinds.cpp:88
-+#, c-format
-+msgid "Configuration: OptionBinding with id \"%s\" already exists"
-+msgstr "Configuration : OptionBinding ayant pour « %s » n’existe pas"
-+
-+#: libdnf/conf/OptionBool.cpp:47
-+#, c-format
-+msgid "invalid boolean value '%s'"
-+msgstr "valeur booléenne invalide : « %s »"
-+
-+#: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158
-+#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59
-+#, c-format
-+msgid "'%s' is not an allowed value"
-+msgstr "la valeur « %s » n’est pas autorisée"
-+
-+#: libdnf/conf/OptionEnum.cpp:83 libdnf/conf/OptionNumber.cpp:88
-+msgid "invalid value"
-+msgstr "valeur non valide"
-+
-+#: libdnf/conf/OptionNumber.cpp:73
-+#, c-format
-+msgid "given value [%d] should be less than allowed value [%d]."
-+msgstr "la valeur fournie [%d] doit être inférieure à la valeur permise [%d]."
-+
-+#: libdnf/conf/OptionNumber.cpp:76
-+#, c-format
-+msgid "given value [%d] should be greater than allowed value [%d]."
-+msgstr "la valeur fournie [%d] doit être supérieure à la valeur permise [%d]."
-+
-+#: libdnf/conf/OptionPath.cpp:78
-+#, c-format
-+msgid "given path '%s' is not absolute."
-+msgstr "le chemin fourni « %s » n’est pas absolu."
-+
-+#: libdnf/conf/OptionPath.cpp:82
-+#, c-format
-+msgid "given path '%s' does not exist."
-+msgstr "le chemin fourni « %s » n’existe pas."
-+
-+#: libdnf/conf/OptionSeconds.cpp:52
-+#, c-format
-+msgid "could not convert '%s' to seconds"
-+msgstr "n’a pu convertir « %s » en secondes"
-+
-+#: libdnf/conf/OptionString.cpp:74
-+msgid "GetValue(): Value not set"
-+msgstr "GetValue() : valeur non définie"
- 
--#: ../libdnf/dnf-goal.cpp:68
-+#: libdnf/dnf-goal.cpp:68
- msgid "Could not depsolve transaction; "
- msgstr "Impossible de depsolve la transaction ; "
- 
--#: ../libdnf/dnf-goal.cpp:70
-+#: libdnf/dnf-goal.cpp:70
- #, c-format
- msgid "%i problem detected:\n"
- msgid_plural "%i problems detected:\n"
- msgstr[0] "%i problème détecté :\n"
- msgstr[1] "%i problèmes détectés :\n"
- 
--#: ../libdnf/dnf-goal.cpp:78
-+#: libdnf/dnf-goal.cpp:78
- #, c-format
- msgid " Problem %1$i: %2$s\n"
- msgstr " Problème %1$i : %2$s\n"
- 
--#: ../libdnf/dnf-goal.cpp:80
-+#: libdnf/dnf-goal.cpp:80
- #, c-format
- msgid " Problem: %s\n"
- msgstr " Problème : %s\n"
- 
--#: ../libdnf/goal/Goal.cpp:55
-+#: libdnf/dnf-rpmts.cpp:79
-+#, c-format
-+msgid ""
-+"No available modular metadata for modular package '%s'; cannot be installed "
-+"on the system"
-+msgstr ""
-+"Aucune métadonnée modulaire n’est disponible pour le paquet modulaire "
-+"« %s » ; impossible d’installer le paquet sur le système"
-+
-+#: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
-+#, c-format
-+msgid "signature does not verify for %s"
-+msgstr "signature ne correspondant pas pour %s"
-+
-+#: libdnf/dnf-rpmts.cpp:129 libdnf/dnf-rpmts.cpp:174
-+#, c-format
-+msgid "failed to open(generic error): %s"
-+msgstr "n’a pas pu ouvrir(erreur générique) : %s"
-+
-+#: libdnf/dnf-rpmts.cpp:142
-+#, c-format
-+msgid "failed to verify key for %s"
-+msgstr "n’a pas pu vérifier la clé pour %s"
-+
-+#: libdnf/dnf-rpmts.cpp:150
-+#, c-format
-+msgid "public key unavailable for %s"
-+msgstr "clé publique non disponible pour %s"
-+
-+#: libdnf/dnf-rpmts.cpp:158
-+#, c-format
-+msgid "signature not found for %s"
-+msgstr "signature non trouvée pour %s"
-+
-+#: libdnf/dnf-rpmts.cpp:193
-+#, 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:274
-+#, c-format
-+msgid "Error running transaction: %s"
-+msgstr "Erreur d’exécution pour la transaction : %s"
-+
-+#: libdnf/dnf-rpmts.cpp:283
-+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:346
-+msgid "Fatal error, run database recovery"
-+msgstr "Erreur fatale, exécuter le recouvrement de la base de données"
-+
-+#: libdnf/dnf-rpmts.cpp:355
-+#, c-format
-+msgid "failed to find package %s"
-+msgstr "n’a pas pu trouver le package %s"
-+
-+#: libdnf/dnf-rpmts.cpp:401
-+#, 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)"
-+
-+#: libdnf/dnf-sack.cpp:381
-+#, c-format
-+msgid "no %1$s string for %2$s"
-+msgstr "aucune chaine %1$s pour %2$s"
-+
-+#: libdnf/dnf-sack.cpp:404
-+msgid "failed to add solv"
-+msgstr "n’a pu ajouter solv"
-+
-+#: libdnf/dnf-sack.cpp:422
-+#, c-format
-+msgid "failed to open: %s"
-+msgstr "n’a pas pu ouvrir : %s"
-+
-+#: libdnf/dnf-sack.cpp:501
-+#, c-format
-+msgid "cannot create temporary file: %s"
-+msgstr "n’a pas pu créer le fichier temporaire : %s"
-+
-+#: libdnf/dnf-sack.cpp:511
-+#, c-format
-+msgid "failed opening tmp file: %s"
-+msgstr "n’a pas pu ouvrir le fichier tmp : %s"
-+
-+#: libdnf/dnf-sack.cpp:523
-+#, c-format
-+msgid "write_main() failed writing data: %i"
-+msgstr "write_main() n’a pu écrire les données : %i"
-+
-+#: libdnf/dnf-sack.cpp:540
-+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:605
-+#, c-format
-+msgid "can not create temporary file %s"
-+msgstr "n’a pas pu créer le fichier temporaire %s"
-+
-+#: libdnf/dnf-sack.cpp:623
-+#, c-format
-+msgid "write_ext(%1$d) has failed: %2$d"
-+msgstr "write_ext(%1$d) a échoué : %2$d"
-+
-+#: libdnf/dnf-sack.cpp:678
-+msgid "null repo md file"
-+msgstr "null repo md file"
-+
-+#: libdnf/dnf-sack.cpp:687
-+#, 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:701
-+msgid "repo_add_solv() has failed."
-+msgstr "repo_add_solv() a échoué."
-+
-+#: libdnf/dnf-sack.cpp:714
-+msgid "loading of MD_TYPE_PRIMARY has failed."
-+msgstr "échec du chargement du MD_TYPE_PRIMARY."
-+
-+#: libdnf/dnf-sack.cpp:727
-+msgid "repo_add_repomdxml/rpmmd() has failed."
-+msgstr "repo_add_repomdxml/rpmmd() a échoué."
-+
-+#: libdnf/dnf-sack.cpp:794
-+msgid "failed to auto-detect architecture"
-+msgstr "n’a pu auto-détecter l’architecture"
-+
-+#: libdnf/dnf-sack.cpp:919
-+#, c-format
-+msgid "failed creating cachedir %s"
-+msgstr "n’a pu créer le cachedir %s"
-+
-+#: libdnf/dnf-sack.cpp:1696
-+msgid "failed loading RPMDB"
-+msgstr "n’a pu télécharger RPMDB"
-+
-+#: libdnf/dnf-sack.cpp:2403
-+#, c-format
-+msgid "No module defaults found: %s"
-+msgstr "Aucun module par défaut n’a été trouvé : %s"
-+
-+#: libdnf/dnf-state.cpp:1184
-+#, c-format
-+msgid "percentage not 100: %i"
-+msgstr "pourcentage pas à 100 : %i"
-+
-+#: libdnf/dnf-state.cpp:1194
-+#, c-format
-+msgid "failed to set number steps: %i"
-+msgstr "n’a pas pu définir le nombre d’étapes : %i"
-+
-+#: libdnf/dnf-state.cpp:1293
-+msgid "cancelled by user action"
-+msgstr "annulé par action de l’utilisateur"
-+
-+#: libdnf/dnf-state.cpp:1332
-+#, c-format
-+msgid "done on a state %1$p that did not have a size set! [%2$s]"
-+msgstr "effectué sur un état %1$p qui n’avait pas de taille définie [%2$s]"
-+
-+#: libdnf/dnf-state.cpp:1357
-+#, c-format
-+msgid "already at 100%% state [%s]"
-+msgstr "déjà en état à 100%% [%s]"
-+
-+#: libdnf/dnf-transaction.cpp:300
-+#, c-format
-+msgid "Sources not set when trying to ensure package %s"
-+msgstr "Sources non définies quand vous essayez d’assurer paquet %s"
-+
-+#: libdnf/dnf-transaction.cpp:326
-+#, c-format
-+msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
-+msgstr "N’a pu assurer %1$s comme dépôt %2$s non trouvé (%3$i dépôts chargés)"
-+
-+#: libdnf/dnf-transaction.cpp:367
-+msgid "Failed to check untrusted: "
-+msgstr "Échec de la vérification d’untrusted : "
-+
-+#: libdnf/dnf-transaction.cpp:377
-+#, c-format
-+msgid "Downloaded file for %s not found"
-+msgstr "Fichier téléchargé pour %s non trouvé"
-+
-+#: libdnf/dnf-transaction.cpp:397
-+#, c-format
-+msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
-+msgstr ""
-+"le paquet %1$s ne peut être vérifié et le dépôt %2$s est activé GPG : %3$s"
-+
-+#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
-+msgid "Failed to get value for CacheDir"
-+msgstr "N’a pas pu obtenir la valeur de CacheDir"
-+
-+#: libdnf/dnf-transaction.cpp:911
-+#, c-format
-+msgid "Failed to get filesystem free size for %s: "
-+msgstr ""
-+"Échec de l’obtention de l’espace libre du système de fichiers pour %s : "
-+
-+#: libdnf/dnf-transaction.cpp:919
-+#, c-format
-+msgid "Failed to get filesystem free size for %s"
-+msgstr "N’a pas pu obtenir la taille libre du système de fichiers pour %s"
-+
-+#: libdnf/dnf-transaction.cpp:935
-+#, c-format
-+msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
-+msgstr ""
-+"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible "
-+"%3$s"
-+
-+#: libdnf/dnf-transaction.cpp:1196
-+msgid "failed to set root"
-+msgstr "n’a pu réussi à définir root"
-+
-+#: libdnf/dnf-transaction.cpp:1418
-+#, c-format
-+msgid "Error %i running transaction test"
-+msgstr "Erreur %i lors du test transactionnel"
-+
-+#: libdnf/dnf-transaction.cpp:1458
-+#, c-format
-+msgid "Error %i running transaction"
-+msgstr "Erreur %i pendant la transaction"
-+
-+#: libdnf/dnf-transaction.cpp:1473
-+#, c-format
-+msgid "Transaction did not go to writing phase, but returned no error(%i)"
-+msgstr ""
-+"La transaction n’a pas pu opérer en phase d’écriture, mais a renvoyé « no "
-+"error(%i) »"
-+
-+#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:399
-+#, c-format
-+msgid "cannot open directory %1$s: %2$s"
-+msgstr "impossible d’ouvrir le dossier %1$s : %2$s"
-+
-+#: libdnf/dnf-utils.cpp:136
-+#, c-format
-+msgid "failed to remove %s"
-+msgstr "n’a pas pu supprimer %s"
-+
-+#: libdnf/goal/Goal.cpp:55
- msgid "Ill-formed Selector, presence of multiple match objects in the filter"
- msgstr ""
- "Sélecteur Ill-formed, présence de plusieurs objets correspondants dans le "
- "filtre"
- 
--#: ../libdnf/goal/Goal.cpp:56
-+#: libdnf/goal/Goal.cpp:56
- msgid "Ill-formed Selector used for the operation, incorrect comparison type"
- msgstr ""
- "Sélecteur Ill-formed utilisé pour l’opération, type de comparaison "
- "incorrecte"
- 
--#: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:94
-+#: libdnf/goal/Goal.cpp:67 libdnf/goal/Goal.cpp:94
- msgid " does not belong to a distupgrade repository"
- msgstr " n’appartient pas à un dépôt distupgrade"
- 
--#: ../libdnf/goal/Goal.cpp:68 ../libdnf/goal/Goal.cpp:95
-+#: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95
- msgid " has inferior architecture"
- msgstr " a une architecture inférieure"
- 
--#: ../libdnf/goal/Goal.cpp:69
-+#: libdnf/goal/Goal.cpp:69
- msgid "problem with installed package "
- msgstr "problème avec le paquet installé "
- 
--#: ../libdnf/goal/Goal.cpp:70 ../libdnf/goal/Goal.cpp:97
-+#: libdnf/goal/Goal.cpp:70 libdnf/goal/Goal.cpp:97
- msgid "conflicting requests"
- msgstr "requêtes conflictuelles"
- 
--#: ../libdnf/goal/Goal.cpp:71 ../libdnf/goal/Goal.cpp:98
-+#: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98
- msgid "unsupported request"
- msgstr "requête non prise en charge"
- 
--#: ../libdnf/goal/Goal.cpp:72 ../libdnf/goal/Goal.cpp:99
-+#: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99
- msgid "nothing provides requested "
- msgstr "rien ne fourni ce qui a été demandé "
- 
--#: ../libdnf/goal/Goal.cpp:73
-+#: libdnf/goal/Goal.cpp:73
- #, c-format
- msgid "package %s does not exist"
- msgstr "le paquet %s n’existe pas"
- 
--#: ../libdnf/goal/Goal.cpp:74 ../libdnf/goal/Goal.cpp:101
-+#: libdnf/goal/Goal.cpp:74 libdnf/goal/Goal.cpp:101
- msgid " is provided by the system"
- msgstr " est fourni par le système"
- 
--#: ../libdnf/goal/Goal.cpp:75 ../libdnf/goal/Goal.cpp:102
-+#: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102
- msgid "some dependency problem"
- msgstr "quelques problèmes de dépendances"
- 
--#: ../libdnf/goal/Goal.cpp:76
-+#: libdnf/goal/Goal.cpp:76
- msgid "cannot install the best update candidate for package "
- msgstr "installation impossible du meilleur candidat pour le paquet "
- 
--#: ../libdnf/goal/Goal.cpp:77 ../libdnf/goal/Goal.cpp:104
-+#: libdnf/goal/Goal.cpp:77 libdnf/goal/Goal.cpp:104
- msgid "cannot install the best candidate for the job"
- msgstr "installation impossible du meilleur candidat pour la tâche"
- 
--#: ../libdnf/goal/Goal.cpp:78
-+#: libdnf/goal/Goal.cpp:78
- #, c-format
- msgid "package %s is filtered out by modular filtering"
- msgstr "le paquet %s a été filtré par filtrage modulaire"
- 
--#: ../libdnf/goal/Goal.cpp:79
-+#: libdnf/goal/Goal.cpp:79
- #, c-format
- msgid "package %s does not have a compatible architecture"
- msgstr "le paquet %s n’a pas d’architecture compatible"
- 
--#: ../libdnf/goal/Goal.cpp:80
-+#: libdnf/goal/Goal.cpp:80
- #, c-format
- msgid "package %s is not installable"
- msgstr "le paquet %s n’est pas installable"
- 
--#: ../libdnf/goal/Goal.cpp:81
-+#: libdnf/goal/Goal.cpp:81
- #, c-format
- msgid "package %s is filtered out by exclude filtering"
- msgstr "le paquet %s a été filtré en excluant le filtrage"
- 
--#: ../libdnf/goal/Goal.cpp:82
-+#: libdnf/goal/Goal.cpp:82
- #, c-format
- msgid "nothing provides %s needed by %s"
- msgstr "rien de fournit %s rendu nécessaire par %s"
- 
--#: ../libdnf/goal/Goal.cpp:83
-+#: libdnf/goal/Goal.cpp:83
- #, c-format
- msgid "cannot install both %s and %s"
- msgstr "installation impossible à la fois de %s et %s"
- 
--#: ../libdnf/goal/Goal.cpp:84
-+#: libdnf/goal/Goal.cpp:84
- #, c-format
- msgid "package %s conflicts with %s provided by %s"
- msgstr "le paquet %s est en conflit avec %s fourni par %s"
- 
--#: ../libdnf/goal/Goal.cpp:85
-+#: libdnf/goal/Goal.cpp:85
- #, c-format
- msgid "package %s obsoletes %s provided by %s"
- msgstr "le paquet %s rend obsolète %s fourni par %s"
- 
--#: ../libdnf/goal/Goal.cpp:86
-+#: libdnf/goal/Goal.cpp:86
- #, c-format
- msgid "installed package %s obsoletes %s provided by %s"
- msgstr "le paquet installé %s rend obsolète %s fourni par %s"
- 
--#: ../libdnf/goal/Goal.cpp:87
-+#: libdnf/goal/Goal.cpp:87
- #, c-format
- msgid "package %s implicitly obsoletes %s provided by %s"
- msgstr "le paquet %s rend implicitement obsolète %s fourni par %s"
- 
--#: ../libdnf/goal/Goal.cpp:88
-+#: libdnf/goal/Goal.cpp:88
- #, c-format
- msgid "package %s requires %s, but none of the providers can be installed"
- msgstr ""
- "le paquet %s nécessite %s, mais aucun fournisseur ne peut être installé"
- 
--#: ../libdnf/goal/Goal.cpp:89
-+#: libdnf/goal/Goal.cpp:89
- #, c-format
- msgid "package %s conflicts with %s provided by itself"
- msgstr "le paquet %s est en conflit avec %s fourni par lui-même"
- 
--#: ../libdnf/goal/Goal.cpp:90
-+#: libdnf/goal/Goal.cpp:90
- #, c-format
- msgid "both package %s and %s obsolete %s"
- msgstr "à la fois le paquet %s et %s rendent obsolète %s"
- 
--#: ../libdnf/goal/Goal.cpp:96
-+#: libdnf/goal/Goal.cpp:96
- msgid "problem with installed module "
- msgstr "problème avec le module installé "
- 
--#: ../libdnf/goal/Goal.cpp:100
-+#: libdnf/goal/Goal.cpp:100
- #, c-format
- msgid "module %s does not exist"
- msgstr "le module %s n’existe pas"
- 
--#: ../libdnf/goal/Goal.cpp:103
-+#: libdnf/goal/Goal.cpp:103
- msgid "cannot install the best update candidate for module "
- msgstr ""
- "installation impossible du meilleur candidat de mise à jour pour le module "
- 
--#: ../libdnf/goal/Goal.cpp:105 ../libdnf/goal/Goal.cpp:108
-+#: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108
- #, c-format
- msgid "module %s is disabled"
- msgstr "le module %s est désactivé"
- 
--#: ../libdnf/goal/Goal.cpp:106
-+#: libdnf/goal/Goal.cpp:106
- #, c-format
- msgid "module %s does not have a compatible architecture"
- msgstr "le module %s n’a pas d’architecture compatible"
- 
--#: ../libdnf/goal/Goal.cpp:107
-+#: libdnf/goal/Goal.cpp:107
- #, c-format
- msgid "module %s is not installable"
- msgstr "le module %s n’est pas installable"
- 
--#: ../libdnf/goal/Goal.cpp:109
-+#: libdnf/goal/Goal.cpp:109
- #, c-format
- msgid "nothing provides %s needed by module %s"
- msgstr "rien de fournit %s rendu nécessaire par le module %s"
- 
--#: ../libdnf/goal/Goal.cpp:110
-+#: libdnf/goal/Goal.cpp:110
- #, c-format
- msgid "cannot install both modules %s and %s"
- msgstr "installation impossible à la fois des modules %s et %s"
- 
--#: ../libdnf/goal/Goal.cpp:111
-+#: libdnf/goal/Goal.cpp:111
- #, c-format
- msgid "module %s conflicts with %s provided by %s"
- msgstr "le module %s est en conflit avec %s fourni par %s"
- 
--#: ../libdnf/goal/Goal.cpp:112
-+#: libdnf/goal/Goal.cpp:112
- #, c-format
- msgid "module %s obsoletes %s provided by %s"
- msgstr "le module %s rend obsolète %s fourni par %s"
- 
--#: ../libdnf/goal/Goal.cpp:113
-+#: libdnf/goal/Goal.cpp:113
- #, c-format
- msgid "installed module %s obsoletes %s provided by %s"
- msgstr "le module installé %s rend obsolète %s fourni par %s"
- 
--#: ../libdnf/goal/Goal.cpp:114
-+#: libdnf/goal/Goal.cpp:114
- #, c-format
- msgid "module %s implicitly obsoletes %s provided by %s"
- msgstr "le module %s rend implicitement obsolète %s fourni par %s"
- 
--#: ../libdnf/goal/Goal.cpp:115
-+#: libdnf/goal/Goal.cpp:115
- #, c-format
- msgid "module %s requires %s, but none of the providers can be installed"
- msgstr ""
- "le module %s nécessite %s, mais aucun fournisseur ne peut être installé"
- 
--#: ../libdnf/goal/Goal.cpp:116
-+#: libdnf/goal/Goal.cpp:116
- #, c-format
- msgid "module %s conflicts with %s provided by itself"
- msgstr "le module %s est en conflit avec %s fourni par lui-même"
- 
--#: ../libdnf/goal/Goal.cpp:117
-+#: libdnf/goal/Goal.cpp:117
- #, c-format
- msgid "both module %s and %s obsolete %s"
- msgstr "à la fois le module %s et %s rendent obsolète %s"
- 
--#: ../libdnf/goal/Goal.cpp:1008
-+#: libdnf/goal/Goal.cpp:1032
- msgid "no solver set"
- msgstr "aucun solveur défini"
- 
--#: ../libdnf/goal/Goal.cpp:1013
-+#: libdnf/goal/Goal.cpp:1037
- #, c-format
- msgid "failed to make %s absolute"
- msgstr "n’a pas pu rendre %s absolu"
- 
--#: ../libdnf/goal/Goal.cpp:1020
-+#: libdnf/goal/Goal.cpp:1044
- #, c-format
- msgid "failed writing debugdata to %1$s: %2$s"
- msgstr "échec de l’écriture des debugdata dans %1$s : %2$s"
- 
--#: ../libdnf/goal/Goal.cpp:1032
-+#: libdnf/goal/Goal.cpp:1056
- msgid "no solv in the goal"
- msgstr "pas de solv dans l’objectif"
- 
--#: ../libdnf/goal/Goal.cpp:1034
-+#: libdnf/goal/Goal.cpp:1058
- msgid "no solution, cannot remove protected package"
- msgstr "aucune solution, n’a pas pu supprimer le package protégé"
- 
--#: ../libdnf/goal/Goal.cpp:1037
-+#: libdnf/goal/Goal.cpp:1061
- msgid "no solution possible"
- msgstr "aucune solution n’est possible"
- 
--#: ../libdnf/goal/Goal.cpp:1443
-+#: libdnf/goal/Goal.cpp:1473
- msgid ""
- "The operation would result in removing the following protected packages: "
- msgstr ""
- "L’opération résulterait en la suppression des packages protégés suivants : "
- 
--#: ../libdnf/repo/Repo.cpp:337
-+#: libdnf/hy-iutil.cpp:322
- #, 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:362
--#, 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:371
--#, 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:580
--#, 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:616 ../libdnf/repo/Repo.cpp:1705
--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:666 ../libdnf/repo/Repo.cpp:688
--#, c-format
--msgid "%s: gpgme_data_new_from_fd(): %s"
--msgstr "%s : gpgme_data_new_from_fd() : %s"
--
--#: ../libdnf/repo/Repo.cpp:674 ../libdnf/repo/Repo.cpp:696
--#, c-format
--msgid "%s: gpgme_op_import(): %s"
--msgstr "%s : gpgme_op_import() : %s"
--
--#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:785
--#: ../libdnf/repo/Repo.cpp:913
--#, c-format
--msgid "%s: gpgme_ctx_set_engine_info(): %s"
--msgstr "%s : gpgme_ctx_set_engine_info() : %s"
--
--#: ../libdnf/repo/Repo.cpp:746 ../libdnf/repo/Repo.cpp:810
--#, c-format
--msgid "can not list keys: %s"
--msgstr "n’a pas pu lister les clés : %s"
--
--#: ../libdnf/repo/Repo.cpp:839
--#, c-format
--msgid "Failed to retrieve GPG key for repo '%s': %s"
--msgstr "Impossible de récupérer la clé GPG pour le dépôt « %s » : %s"
--
--#: ../libdnf/repo/Repo.cpp:892
--#, c-format
--msgid "repo %s: 0x%s already imported"
--msgstr "dépôt %s : 0x%s déjà importé"
--
--#: ../libdnf/repo/Repo.cpp:920
--#, c-format
--msgid "repo %s: imported key 0x%s."
--msgstr "dépôt %s : clé importée 0x%s."
--
--#: ../libdnf/repo/Repo.cpp:1164
--#, 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:1183
--#, 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:1206
--#, 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:1212
--#, 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:1237
--#, c-format
--msgid "reviving: '%s' can be revived - repomd matches."
--msgstr "relance : « %s » peut être relancé - le repomd correspond."
--
--#: ../libdnf/repo/Repo.cpp:1239
--#, c-format
--msgid "reviving: failed for '%s', mismatched repomd."
--msgstr "relance : échec pour « %s », le repomd ne correspond pas."
--
--#: ../libdnf/repo/Repo.cpp:1257
--#, c-format
--msgid "Cannot create repo destination directory \"%s\": %s"
--msgstr "Impossible de créer le répertoire de destination du dépôt « %s » : %s"
--
--#: ../libdnf/repo/Repo.cpp:1263
--#, c-format
--msgid "Cannot create repo temporary directory \"%s\": %s"
--msgstr "Impossible de créer le répertoire temporaire du dépôt « %s » : %s"
--
--#: ../libdnf/repo/Repo.cpp:1277
--#, c-format
--msgid "Cannot create directory \"%s\": %s"
--msgstr "Impossible de créer le répertoire « %s » : %s"
--
--#: ../libdnf/repo/Repo.cpp:1300
--#, c-format
--msgid "Cannot rename directory \"%s\" to \"%s\": %s"
--msgstr "Impossible de renommer le répertoire « %s » en « %s » : %s"
--
--#: ../libdnf/repo/Repo.cpp:1323
--#, c-format
--msgid "repo: using cache for: %s"
--msgstr "dépôt : utilisation du cache pour : %s"
--
--#: ../libdnf/repo/Repo.cpp:1335
--#, 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:1339
--#, c-format
--msgid "repo: downloading from remote: %s"
--msgstr "dépôt : téléchargement à distance en provenance de : %s"
--
--#: ../libdnf/repo/Repo.cpp:1345
--#, c-format
--msgid "Failed to download metadata for repo '%s': %s"
--msgstr "Échec du téléchargement des métadonnées pour le dépôt « %s » : %s"
--
--#: ../libdnf/repo/Repo.cpp:1371
--msgid "getCachedir(): Computation of SHA256 failed"
--msgstr "getCachedir() : échec du calcul de SHA256"
--
--#: ../libdnf/repo/Repo.cpp:1396
--#, c-format
--msgid "Cannot create persistdir \"%s\": %s"
--msgstr "Impossible de créer le dossier persistant « %s » : %s"
--
--#: ../libdnf/repo/Repo.cpp:1796
--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:1807
--#, c-format
--msgid "PackageTarget initialization failed: %s"
--msgstr "L’initialisation de Package Target a échoué : %s"
--
--#: ../libdnf/repo/Repo.cpp:1924
--#, c-format
--msgid "Cannot open %s: %s"
--msgstr "impossible d’ouvrir %s : %s"
--
--#: ../libdnf/repo/Repo.cpp:1968
--#, c-format
--msgid "Log handler with id %ld doesn't exist"
--msgstr "Log handler ayant pour id %ld n’existe pas"
--
--#: ../libdnf/dnf-transaction.cpp:300
--#, c-format
--msgid "Sources not set when trying to ensure package %s"
--msgstr "Sources non définies quand vous essayez d’assurer paquet %s"
--
--#: ../libdnf/dnf-transaction.cpp:326
--#, c-format
--msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
--msgstr "N’a pu assurer %1$s comme dépôt %2$s non trouvé (%3$i dépôts chargés)"
--
--#: ../libdnf/dnf-transaction.cpp:367
--msgid "Failed to check untrusted: "
--msgstr "Échec de la vérification d’untrusted : "
--
--#: ../libdnf/dnf-transaction.cpp:377
--#, c-format
--msgid "Downloaded file for %s not found"
--msgstr "Fichier téléchargé pour %s non trouvé"
--
--#: ../libdnf/dnf-transaction.cpp:397
--#, c-format
--msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
--msgstr ""
--"le paquet %1$s ne peut être vérifié et le dépôt %2$s est activé GPG : %3$s"
--
--#: ../libdnf/dnf-transaction.cpp:831 ../libdnf/dnf-transaction.cpp:903
--msgid "Failed to get value for CacheDir"
--msgstr "N’a pas pu obtenir la valeur de CacheDir"
--
--#: ../libdnf/dnf-transaction.cpp:911
--#, c-format
--msgid "Failed to get filesystem free size for %s: "
--msgstr ""
--"Échec de l’obtention de l’espace libre du système de fichiers pour %s : "
--
--#: ../libdnf/dnf-transaction.cpp:919
--#, c-format
--msgid "Failed to get filesystem free size for %s"
--msgstr "N’a pas pu obtenir la taille libre du système de fichiers pour %s"
--
--#: ../libdnf/dnf-transaction.cpp:935
--#, c-format
--msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
--msgstr ""
--"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible "
--"%3$s"
--
--#: ../libdnf/dnf-transaction.cpp:1196
--msgid "failed to set root"
--msgstr "n’a pu réussi à définir root"
--
--#: ../libdnf/dnf-transaction.cpp:1418
--#, c-format
--msgid "Error %i running transaction test"
--msgstr "Erreur %i lors du test transactionnel"
--
--#: ../libdnf/dnf-transaction.cpp:1458
--#, c-format
--msgid "Error %i running transaction"
--msgstr "Erreur %i pendant la transaction"
--
--#: ../libdnf/dnf-transaction.cpp:1473
--#, c-format
--msgid "Transaction did not go to writing phase, but returned no error(%i)"
--msgstr ""
--"La transaction n’a pas pu opérer en phase d’écriture, mais a renvoyé « no "
--"error(%i) »"
--
--#: ../libdnf/dnf-utils.cpp:136
--#, c-format
--msgid "failed to remove %s"
--msgstr "n’a pas pu supprimer %s"
--
--#: ../libdnf/plugin/plugin.cpp:46
--#, c-format
--msgid "Can't load shared library \"%s\": %s"
--msgstr "Impossible de charger la librairie partagé « %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 "Impossible d’obtenir l’adresse du symbole « %s » : %s"
--
--#: ../libdnf/plugin/plugin.cpp:86
--#, c-format
--msgid "Loading plugin file=\"%s\""
--msgstr "Chargement du fichier d’extension fichier=« %s »"
--
--#: ../libdnf/plugin/plugin.cpp:89
--#, c-format
--msgid "Loaded plugin name=\"%s\", version=\"%s\""
--msgstr "Extension chargée, nom=« %s », version=« %s »"
--
--#: ../libdnf/plugin/plugin.cpp:96
--msgid "Plugins::loadPlugins() dirPath cannot be empty"
--msgstr ""
--"Le chemin du dossier (dirPath) Plugins::loadPlugins() ne peut pas être vide"
--
--#: ../libdnf/plugin/plugin.cpp:105
--#, c-format
--msgid "Can't read plugin directory \"%s\": %s"
--msgstr "Impossible de lire de dossier de l’extension « %s » : %s"
--
--#: ../libdnf/plugin/plugin.cpp:114
--#, c-format
--msgid "Can't load plugin \"%s\": %s"
--msgstr "Impossible de charger l’extension « %s » : %s"
--
--#: ../libdnf/dnf-state.cpp:1184
--#, c-format
--msgid "percentage not 100: %i"
--msgstr "pourcentage pas à 100 : %i"
--
--#: ../libdnf/dnf-state.cpp:1194
--#, c-format
--msgid "failed to set number steps: %i"
--msgstr "n’a pas pu définir le nombre d’étapes : %i"
--
--#: ../libdnf/dnf-state.cpp:1293
--msgid "cancelled by user action"
--msgstr "annulé par action de l’utilisateur"
--
--#: ../libdnf/dnf-state.cpp:1332
--#, c-format
--msgid "done on a state %1$p that did not have a size set! [%2$s]"
--msgstr "effectué sur un état %1$p qui n’avait pas de taille définie [%2$s]"
--
--#: ../libdnf/dnf-state.cpp:1357
--#, c-format
--msgid "already at 100%% state [%s]"
--msgstr "déjà en état à 100%% [%s]"
--
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:43
--#, c-format
--msgid "Failed to update from string: %s"
--msgstr "Échec de la mise à jour depuis la chaine : %s"
-+msgid "Failed renaming %1$s to %2$s: %3$s"
-+msgstr "N’a pas pu renommer %1$s en %2$s : %3$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:68
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:70
-+#: libdnf/hy-iutil.cpp:330
- #, c-format
--msgid "Failed to resolve: %s"
--msgstr "Échec de la résolution : %s"
-+msgid "Failed setting perms on %1$s: %2$s"
-+msgstr "N’a pas pu définir les permissions sur %1$s : %2$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:74
-+#: libdnf/hy-iutil.cpp:376
- #, c-format
--msgid "Failed to upgrade defaults: %s"
--msgstr "Échec de la mise à jour des paramètres par défaut : %s"
-+msgid "cannot create directory %1$s: %2$s"
-+msgstr "impossible de créer le dossier %1$s : %2$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:77
-+#: libdnf/hy-iutil.cpp:411
- #, c-format
--msgid "Failed to upgrade streams: %s"
--msgstr "Échec de la mise à jour des flux : %s"
-+msgid "cannot stat path %1$s: %2$s"
-+msgstr "impossible de stat le chemin %1$s : %2$s"
- 
--#: ../libdnf/module/ModulePackage.cpp:463
-+#: libdnf/module/ModulePackage.cpp:463
- #, c-format
- msgid "Invalid format of Platform module: %s"
- msgstr "Format invalide du module de plateforme : %s"
- 
--#: ../libdnf/module/ModulePackage.cpp:478
-+#: libdnf/module/ModulePackage.cpp:478
- msgid "Multiple module platforms provided by available packages\n"
- msgstr ""
- "De multiples modules de plateformes sont fournis par les paquets "
- "disponibles\n"
- 
--#: ../libdnf/module/ModulePackage.cpp:491
-+#: libdnf/module/ModulePackage.cpp:491
- msgid "Multiple module platforms provided by installed packages\n"
- msgstr ""
- "De multiples modules de plateformes sont fournis par les paquets installés\n"
- 
--#: ../libdnf/module/ModulePackage.cpp:518
-+#: libdnf/module/ModulePackage.cpp:518
- #, c-format
- msgid "Detection of Platform Module in %s failed: %s"
- msgstr "La détection des modules de plateformes dans %s a échoué : %s"
- 
--#: ../libdnf/module/ModulePackage.cpp:527
-+#: libdnf/module/ModulePackage.cpp:527
- #, c-format
- msgid "Missing PLATFORM_ID in %s"
- msgstr "L'identifiant de la platforme est manquant dans %s"
- 
--#: ../libdnf/module/ModulePackage.cpp:532
-+#: libdnf/module/ModulePackage.cpp:532
- msgid "No valid Platform ID detected"
- msgstr "Aucun identifiant de plateforme n'a été détecté"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:68
-+#: 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:294
-+#: libdnf/module/ModulePackageContainer.cpp:294
- #, c-format
- msgid "Conflicting defaults with repo '%s': %s"
- msgstr "Valeurs par défaut en conflit avec le dépôt « %s » : %s"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1568
-+#: libdnf/module/ModulePackageContainer.cpp:1569
- #, c-format
- msgid "Unable to load modular Fail-Safe data at '%s'"
- msgstr "Impossible de charger les données de sécurité à « %s »"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1574
-+#: libdnf/module/ModulePackageContainer.cpp:1575
- #, c-format
- msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
- msgstr ""
- "Impossible de charger les données de sécurité modulaires pour le module "
- "« %s : %s »"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1638
-+#: libdnf/module/ModulePackageContainer.cpp:1639
- #, c-format
- msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
- msgstr ""
- "Impossible de créer le dossier « %s » pour les données de sécurité "
- "modulaires : %s"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1660
-+#: libdnf/module/ModulePackageContainer.cpp:1661
- #, c-format
- msgid "Unable to save a modular Fail Safe data to '%s'"
- msgstr ""
- "Impossible d’enregistrer les données de sécurité modulaires vers « %s »"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1685
-+#: libdnf/module/ModulePackageContainer.cpp:1686
- #, c-format
- msgid "Unable to remove a modular Fail Safe data in '%s'"
- msgstr ""
- "Impossible de supprimer les données de sécurité modulaires dans « %s »"
- 
--#: ../libdnf/dnf-rpmts.cpp:79
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:44
- #, c-format
--msgid ""
--"No available modular metadata for modular package '%s'; cannot be installed "
--"on the system"
--msgstr ""
--"Aucune métadonnée modulaire n’est disponible pour le paquet modulaire "
--"« %s » ; impossible d’installer le paquet sur le système"
-+msgid "Failed to update from string: %s"
-+msgstr "Échec de la mise à jour depuis la chaine : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:121 ../libdnf/dnf-rpmts.cpp:166
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:68
- #, c-format
--msgid "signature does not verify for %s"
--msgstr "signature ne correspondant pas pour %s"
-+msgid "Failed to resolve: %s"
-+msgstr "Échec de la résolution : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:129 ../libdnf/dnf-rpmts.cpp:174
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:73
- #, c-format
--msgid "failed to open(generic error): %s"
--msgstr "n’a pas pu ouvrir(erreur générique) : %s"
-+msgid "There were errors while resolving modular defaults: %s"
-+msgstr ""
-+"Il y a eu des erreurs lors de la résolution des modulaires par défaut : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:142
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:78
- #, c-format
--msgid "failed to verify key for %s"
--msgstr "n’a pas pu vérifier la clé pour %s"
-+msgid "Failed to upgrade defaults: %s"
-+msgstr "Échec de la mise à jour des paramètres par défaut : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:150
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:81
- #, c-format
--msgid "public key unavailable for %s"
--msgstr "clé publique non disponible pour %s"
-+msgid "Failed to upgrade streams: %s"
-+msgstr "Échec de la mise à jour des flux : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:158
-+#: libdnf/plugin/plugin.cpp:46
- #, c-format
--msgid "signature not found for %s"
--msgstr "signature non trouvée pour %s"
-+msgid "Can't load shared library \"%s\": %s"
-+msgstr "Impossible de charger la librairie partagé « %s » : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:193
-+#: libdnf/plugin/plugin.cpp:61 libdnf/plugin/plugin.cpp:67
-+#: libdnf/plugin/plugin.cpp:73 libdnf/plugin/plugin.cpp:79
- #, 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]"
-+msgid "Can't obtain address of symbol \"%s\": %s"
-+msgstr "Impossible d’obtenir l’adresse du symbole « %s » : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:274
-+#: libdnf/plugin/plugin.cpp:86
- #, c-format
--msgid "Error running transaction: %s"
--msgstr "Erreur d’exécution pour la transaction : %s"
--
--#: ../libdnf/dnf-rpmts.cpp:283
--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:346
--msgid "Fatal error, run database recovery"
--msgstr "Erreur fatale, exécuter le recouvrement de la base de données"
-+msgid "Loading plugin file=\"%s\""
-+msgstr "Chargement du fichier d’extension fichier=« %s »"
- 
--#: ../libdnf/dnf-rpmts.cpp:355
-+#: libdnf/plugin/plugin.cpp:89
- #, c-format
--msgid "failed to find package %s"
--msgstr "n’a pas pu trouver le package %s"
-+msgid "Loaded plugin name=\"%s\", version=\"%s\""
-+msgstr "Extension chargée, nom=« %s », version=« %s »"
-+
-+#: libdnf/plugin/plugin.cpp:96
-+msgid "Plugins::loadPlugins() dirPath cannot be empty"
-+msgstr ""
-+"Le chemin du dossier (dirPath) Plugins::loadPlugins() ne peut pas être vide"
- 
--#: ../libdnf/dnf-rpmts.cpp:401
-+#: libdnf/plugin/plugin.cpp:105
- #, 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)"
-+msgid "Can't read plugin directory \"%s\": %s"
-+msgstr "Impossible de lire de dossier de l’extension « %s » : %s"
- 
--#: ../libdnf/conf/OptionString.cpp:59 ../libdnf/conf/OptionStringList.cpp:59
--#: ../libdnf/conf/OptionEnum.cpp:72 ../libdnf/conf/OptionEnum.cpp:158
-+#: libdnf/plugin/plugin.cpp:114
- #, c-format
--msgid "'%s' is not an allowed value"
--msgstr "la valeur « %s » n’est pas autorisée"
-+msgid "Can't load plugin \"%s\": %s"
-+msgstr "Impossible de charger l’extension « %s » : %s"
- 
--#: ../libdnf/conf/OptionString.cpp:74
--msgid "GetValue(): Value not set"
--msgstr "GetValue() : valeur non définie"
-+#: libdnf/repo/DependencySplitter.cpp:50
-+msgid ""
-+"Using '==' operator in reldeps can result in an undefined behavior. It is "
-+"deprecated and the support will be dropped in future versions. Use '=' "
-+"operator instead."
-+msgstr ""
-+"L'utilisation de l’opérateur \"==\" peut entraîner un comportement indéfini."
-+" Déprécié et le support sera abandonné dans les prochaines versions. "
-+"Utilisez plutôt l'opérateur \"=\"."
- 
--#: ../libdnf/conf/OptionPath.cpp:78
-+#: libdnf/repo/Repo.cpp:321
- #, c-format
--msgid "given path '%s' is not absolute."
--msgstr "le chemin fourni « %s » n’est pas absolu."
-+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/conf/OptionPath.cpp:82
-+#: libdnf/repo/Repo.cpp:330
- #, c-format
--msgid "given path '%s' does not exist."
--msgstr "le chemin fourni « %s » n’existe pas."
-+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/conf/OptionBool.cpp:47
-+#: libdnf/repo/Repo.cpp:536
- #, c-format
--msgid "invalid boolean value '%s'"
--msgstr "valeur booléenne invalide : « %s »"
-+msgid "Cannot find a valid baseurl for repo: %s"
-+msgstr "Impossible de trouver une adresse de base pour le dépôt : %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:62 ../libdnf/conf/OptionSeconds.cpp:40
--msgid "no value specified"
--msgstr "aucune valeur n’est indiquée"
-+#: libdnf/repo/Repo.cpp:573 libdnf/repo/Repo.cpp:1662
-+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/conf/ConfigMain.cpp:67 ../libdnf/conf/OptionSeconds.cpp:48
-+#: libdnf/repo/Repo.cpp:623 libdnf/repo/Repo.cpp:645
- #, c-format
--msgid "seconds value '%s' must not be negative"
--msgstr "la valeur en secondes « %s » ne doit pas être négative"
-+msgid "%s: gpgme_data_new_from_fd(): %s"
-+msgstr "%s : gpgme_data_new_from_fd() : %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:71
-+#: libdnf/repo/Repo.cpp:631 libdnf/repo/Repo.cpp:653
- #, c-format
--msgid "could not convert '%s' to bytes"
--msgstr "n’a pu convertir « %s » en octets"
-+msgid "%s: gpgme_op_import(): %s"
-+msgstr "%s : gpgme_op_import() : %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:83 ../libdnf/conf/OptionSeconds.cpp:66
-+#: libdnf/repo/Repo.cpp:676 libdnf/repo/Repo.cpp:742 libdnf/repo/Repo.cpp:870
- #, c-format
--msgid "unknown unit '%s'"
--msgstr "unité « %s » inconnue"
-+msgid "%s: gpgme_ctx_set_engine_info(): %s"
-+msgstr "%s : gpgme_ctx_set_engine_info() : %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:329
-+#: libdnf/repo/Repo.cpp:703 libdnf/repo/Repo.cpp:767
- #, c-format
--msgid "percentage '%s' is out of range"
--msgstr "le pourcentage « %s » est en dehors des limites"
-+msgid "can not list keys: %s"
-+msgstr "n’a pas pu lister les clés : %s"
- 
--#: ../libdnf/conf/OptionNumber.cpp:73
-+#: libdnf/repo/Repo.cpp:796
- #, c-format
--msgid "given value [%d] should be less than allowed value [%d]."
--msgstr "la valeur fournie [%d] doit être inférieure à la valeur permise [%d]."
-+msgid "Failed to retrieve GPG key for repo '%s': %s"
-+msgstr "Impossible de récupérer la clé GPG pour le dépôt « %s » : %s"
- 
--#: ../libdnf/conf/OptionNumber.cpp:76
-+#: libdnf/repo/Repo.cpp:849
- #, c-format
--msgid "given value [%d] should be greater than allowed value [%d]."
--msgstr "la valeur fournie [%d] doit être supérieure à la valeur permise [%d]."
--
--#: ../libdnf/conf/OptionNumber.cpp:88 ../libdnf/conf/OptionEnum.cpp:83
--msgid "invalid value"
--msgstr "valeur non valide"
-+msgid "repo %s: 0x%s already imported"
-+msgstr "dépôt %s : 0x%s déjà importé"
- 
--#: ../libdnf/conf/OptionBinds.cpp:76
-+#: libdnf/repo/Repo.cpp:877
- #, c-format
--msgid "Configuration: OptionBinding with id \"%s\" does not exist"
--msgstr "Configuration : OptionBinding ayant pour id « %s » n’existe pas"
-+msgid "repo %s: imported key 0x%s."
-+msgstr "dépôt %s : clé importée 0x%s."
- 
--#: ../libdnf/conf/OptionBinds.cpp:88
-+#: libdnf/repo/Repo.cpp:1121
- #, c-format
--msgid "Configuration: OptionBinding with id \"%s\" already exists"
--msgstr "Configuration : OptionBinding ayant pour « %s » n’existe pas"
-+msgid "reviving: repo '%s' skipped, no metalink."
-+msgstr "relance : dépôt « %s » ignoré, pas de méta-lien."
- 
--#: ../libdnf/conf/OptionSeconds.cpp:52
-+#: libdnf/repo/Repo.cpp:1140
- #, c-format
--msgid "could not convert '%s' to seconds"
--msgstr "n’a pu convertir « %s » en secondes"
-+msgid "reviving: repo '%s' skipped, no usable hash."
-+msgstr "relance : dépôt « %s » ignoré, pas de hachage utilisable."
- 
--#: ../libdnf/dnf-sack.cpp:417
-+#: libdnf/repo/Repo.cpp:1163
- #, c-format
--msgid "no %1$s string for %2$s"
--msgstr "aucune chaine %1$s pour %2$s"
--
--#: ../libdnf/dnf-sack.cpp:440
--msgid "failed to add solv"
--msgstr "n’a pu ajouter solv"
-+msgid "reviving: failed for '%s', mismatched %s sum."
-+msgstr "relance : échec pour « %s », la somme de %s ne correspond pas."
- 
--#: ../libdnf/dnf-sack.cpp:458
-+#: libdnf/repo/Repo.cpp:1169
- #, c-format
--msgid "failed to open: %s"
--msgstr "n’a pas pu ouvrir : %s"
-+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/dnf-sack.cpp:537
-+#: libdnf/repo/Repo.cpp:1194
- #, c-format
--msgid "cannot create temporary file: %s"
--msgstr "n’a pas pu créer le fichier temporaire : %s"
-+msgid "reviving: '%s' can be revived - repomd matches."
-+msgstr "relance : « %s » peut être relancé - le repomd correspond."
- 
--#: ../libdnf/dnf-sack.cpp:547
-+#: libdnf/repo/Repo.cpp:1196
- #, c-format
--msgid "failed opening tmp file: %s"
--msgstr "n’a pas pu ouvrir le fichier tmp : %s"
-+msgid "reviving: failed for '%s', mismatched repomd."
-+msgstr "relance : échec pour « %s », le repomd ne correspond pas."
- 
--#: ../libdnf/dnf-sack.cpp:559
-+#: libdnf/repo/Repo.cpp:1214
- #, c-format
--msgid "write_main() failed writing data: %i"
--msgstr "write_main() n’a pu écrire les données : %i"
--
--#: ../libdnf/dnf-sack.cpp:576
--msgid "write_main() failed to re-load written solv file"
--msgstr "write_main() n’a pas pu charger à nouveau le fichier solv"
-+msgid "Cannot create repo destination directory \"%s\": %s"
-+msgstr "Impossible de créer le répertoire de destination du dépôt « %s » : %s"
- 
--#: ../libdnf/dnf-sack.cpp:641
-+#: libdnf/repo/Repo.cpp:1220
- #, c-format
--msgid "can not create temporary file %s"
--msgstr "n’a pas pu créer le fichier temporaire %s"
-+msgid "Cannot create repo temporary directory \"%s\": %s"
-+msgstr "Impossible de créer le répertoire temporaire du dépôt « %s » : %s"
- 
--#: ../libdnf/dnf-sack.cpp:659
-+#: libdnf/repo/Repo.cpp:1234
- #, c-format
--msgid "write_ext(%1$d) has failed: %2$d"
--msgstr "write_ext(%1$d) a échoué : %2$d"
-+msgid "Cannot create directory \"%s\": %s"
-+msgstr "Impossible de créer le répertoire « %s » : %s"
- 
--#: ../libdnf/dnf-sack.cpp:714
--msgid "null repo md file"
--msgstr "null repo md file"
-+#: libdnf/repo/Repo.cpp:1257
-+#, c-format
-+msgid "Cannot rename directory \"%s\" to \"%s\": %s"
-+msgstr "Impossible de renommer le répertoire « %s » en « %s » : %s"
- 
--#: ../libdnf/dnf-sack.cpp:723
-+#: libdnf/repo/Repo.cpp:1280
- #, c-format
--msgid "can not read file %1$s: %2$s"
--msgstr "n’a pu lire le fichier %1$s : %2$s"
-+msgid "repo: using cache for: %s"
-+msgstr "dépôt : utilisation du cache pour : %s"
- 
--#: ../libdnf/dnf-sack.cpp:737
--msgid "repo_add_solv() has failed."
--msgstr "repo_add_solv() a échoué."
-+#: libdnf/repo/Repo.cpp:1292
-+#, c-format
-+msgid "Cache-only enabled but no cache for '%s'"
-+msgstr "« cache uniquement » activé, mais pas de cache pour « %s »"
- 
--#: ../libdnf/dnf-sack.cpp:750
--msgid "loading of MD_TYPE_PRIMARY has failed."
--msgstr "échec du chargement du MD_TYPE_PRIMARY."
-+#: libdnf/repo/Repo.cpp:1296
-+#, c-format
-+msgid "repo: downloading from remote: %s"
-+msgstr "dépôt : téléchargement à distance en provenance de : %s"
- 
--#: ../libdnf/dnf-sack.cpp:763
--msgid "repo_add_repomdxml/rpmmd() has failed."
--msgstr "repo_add_repomdxml/rpmmd() a échoué."
-+#: libdnf/repo/Repo.cpp:1302
-+#, c-format
-+msgid "Failed to download metadata for repo '%s': %s"
-+msgstr "Échec du téléchargement des métadonnées pour le dépôt « %s » : %s"
- 
--#: ../libdnf/dnf-sack.cpp:830
--msgid "failed to auto-detect architecture"
--msgstr "n’a pu auto-détecter l’architecture"
-+#: libdnf/repo/Repo.cpp:1328
-+msgid "getCachedir(): Computation of SHA256 failed"
-+msgstr "getCachedir() : échec du calcul de SHA256"
- 
--#: ../libdnf/dnf-sack.cpp:955
-+#: libdnf/repo/Repo.cpp:1353
- #, c-format
--msgid "failed creating cachedir %s"
--msgstr "n’a pu créer le cachedir %s"
--
--#: ../libdnf/dnf-sack.cpp:1727
--msgid "failed calculating RPMDB checksum"
--msgstr "n’a pu calculer la somme de contrôle RPMDB"
-+msgid "Cannot create persistdir \"%s\": %s"
-+msgstr "Impossible de créer le dossier persistant « %s » : %s"
- 
--#: ../libdnf/dnf-sack.cpp:1751
--msgid "failed loading RPMDB"
--msgstr "n’a pu télécharger RPMDB"
-+#: libdnf/repo/Repo.cpp:1753
-+msgid "resume cannot be used simultaneously with the byterangestart param"
-+msgstr ""
-+"« resume » (reprise) ne peut pas être utilisé avec le paramètre "
-+"byterangestart"
- 
--#: ../libdnf/dnf-sack.cpp:2466
--msgid "No module defaults found"
--msgstr "Aucun module par défaut n’a été trouvé"
-+#: libdnf/repo/Repo.cpp:1770
-+#, c-format
-+msgid "PackageTarget initialization failed: %s"
-+msgstr "L’initialisation de Package Target a échoué : %s"
- 
--#: ../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"
-+#: libdnf/repo/Repo.cpp:1887
-+#, c-format
-+msgid "Cannot open %s: %s"
-+msgstr "impossible d’ouvrir %s : %s"
- 
--#: ../libdnf/transaction/Transformer.cpp:672
--msgid "Couldn't find a history database"
--msgstr "N’a pas pu trouver de base de données de l’historique"
-+#: libdnf/repo/Repo.cpp:1931
-+#, c-format
-+msgid "Log handler with id %ld doesn't exist"
-+msgstr "Log handler ayant pour id %ld n’existe pas"
- 
--#: ../libdnf/transaction/Swdb.cpp:107
-+#: libdnf/transaction/Swdb.cpp:173
- msgid "In progress"
- msgstr "En cours"
- 
--#: ../libdnf/transaction/Swdb.cpp:121 ../libdnf/transaction/Swdb.cpp:148
--#: ../libdnf/transaction/Swdb.cpp:160 ../libdnf/transaction/Swdb.cpp:177
--#: ../libdnf/transaction/Swdb.cpp:316 ../libdnf/transaction/Swdb.cpp:326
-+#: libdnf/transaction/Swdb.cpp:188 libdnf/transaction/Swdb.cpp:216
-+#: libdnf/transaction/Swdb.cpp:228 libdnf/transaction/Swdb.cpp:245
-+#: libdnf/transaction/Swdb.cpp:384 libdnf/transaction/Swdb.cpp:394
- msgid "Not in progress"
- msgstr "Pas en cours"
- 
--#: ../libdnf/transaction/Swdb.cpp:187
-+#: libdnf/transaction/Swdb.cpp:255
- msgid "No transaction in progress"
- msgstr "Aucune transaction n’est en cours"
- 
--#: ../libdnf/transaction/TransactionItem.cpp:147
-+#: libdnf/transaction/TransactionItem.cpp:147
- msgid "Attempt to insert transaction item into completed transaction"
- msgstr ""
- "Tentative d’insérer un élément de transaction dans une transaction achevée"
- 
--#: ../libdnf/transaction/TransactionItem.cpp:218
-+#: libdnf/transaction/TransactionItem.cpp:218
- msgid "Attempt to update transaction item in completed transaction"
- msgstr ""
- "Tentative de mettre à jour un élément de transaction dans une transaction "
- "achevée"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:41
-+#: libdnf/transaction/Transformer.cpp:76
-+msgid "Database Corrupted: no row 'version' in table 'config'"
-+msgstr ""
-+"Base de données corrompue : ligne « version » manquante dans le tableau "
-+"« config »"
-+
-+#: libdnf/transaction/Transformer.cpp:681
-+msgid "Transformer: can't open history persist dir"
-+msgstr ""
-+"Transformer : n’a pu ouvrir le répertoire de persistance de l’historique"
-+
-+#: libdnf/transaction/Transformer.cpp:694
-+msgid "Couldn't find a history database"
-+msgstr "N’a pas pu trouver de base de données de l’historique"
-+
-+#: libdnf/transaction/private/Transaction.cpp:41
- msgid "Transaction has already began!"
- msgstr "La transaction a déjà commencé !"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:58
-+#: libdnf/transaction/private/Transaction.cpp:58
- #, c-format
- msgid "TransactionItem state is not set: %s"
- msgstr "L’état du TransactionItem n’est pas défini : %s"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:239
-+#: libdnf/transaction/private/Transaction.cpp:243
- msgid "Can't add console output to unsaved transaction"
- msgstr ""
- "Ne peut pas ajouter une sortie de console à une transaction non enregistrée"
-+
-+#~ msgid "Bad id for repo: %s, byte = %s %d"
-+#~ msgstr "ID erroné pour le dépôt : %s, byte = %s %d"
-diff --git a/po/ja.po b/po/ja.po
-index d8eaab19..3c53b4e7 100644
---- a/po/ja.po
-+++ b/po/ja.po
-@@ -1,918 +1,931 @@
- # Casey Jones <nahareport@live.com>, 2018. #zanata
- # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
-+# Casey Jones <nahareport@yahoo.com>, 2020.
- msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2020-03-19 13:58+0100\n"
--"PO-Revision-Date: 2018-09-11 12:30+0000\n"
--"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
--"Language-Team: Japanese\n"
-+"POT-Creation-Date: 2020-06-26 09:18-0400\n"
-+"PO-Revision-Date: 2020-05-05 09:40+0000\n"
-+"Last-Translator: Casey Jones <nahareport@yahoo.com>\n"
-+"Language-Team: Japanese <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/ja/>\n"
- "Language: ja\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
--"Plural-Forms: nplurals=1; plural=0\n"
--"X-Generator: Zanata 4.6.2\n"
-+"Plural-Forms: nplurals=1; plural=0;\n"
-+"X-Generator: Weblate 4.0.3\n"
- 
--#: ../libdnf/hy-iutil.cpp:322
--#, c-format
--msgid "Failed renaming %1$s to %2$s: %3$s"
--msgstr "名前を %1$s から %2$s へ変更できませんでした: %3$s"
-+#: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
-+msgid "no value specified"
-+msgstr "値が指定されていません"
- 
--#: ../libdnf/hy-iutil.cpp:330
-+#: libdnf/conf/ConfigMain.cpp:67 libdnf/conf/OptionSeconds.cpp:48
- #, c-format
--msgid "Failed setting perms on %1$s: %2$s"
--msgstr "%1$s に権限を設定できませんでした: %2$s"
-+msgid "seconds value '%s' must not be negative"
-+msgstr "2個目の値 '%s' は負の数にしないでください"
- 
--#: ../libdnf/hy-iutil.cpp:376
-+#: libdnf/conf/ConfigMain.cpp:71
- #, c-format
--msgid "cannot create directory %1$s: %2$s"
--msgstr ""
-+msgid "could not convert '%s' to bytes"
-+msgstr "'%s' を バイトへ変換できませんでした"
- 
--#: ../libdnf/hy-iutil.cpp:399 ../libdnf/dnf-utils.cpp:111
-+#: libdnf/conf/ConfigMain.cpp:83 libdnf/conf/OptionSeconds.cpp:66
- #, c-format
--msgid "cannot open directory %1$s: %2$s"
--msgstr "ディレクトリー %1$s を開くことができません: %2$s"
-+msgid "unknown unit '%s'"
-+msgstr "不明な単位 '%s'"
- 
--#: ../libdnf/hy-iutil.cpp:411
-+#: libdnf/conf/ConfigMain.cpp:329
- #, c-format
--msgid "cannot stat path %1$s: %2$s"
--msgstr ""
--
--#: ../libdnf/dnf-goal.cpp:68
--msgid "Could not depsolve transaction; "
--msgstr "トランザクションを depsolve できませんでした; "
-+msgid "percentage '%s' is out of range"
-+msgstr "パーセンテージ '%s' が範囲外にあります"
- 
--#: ../libdnf/dnf-goal.cpp:70
-+#: libdnf/conf/OptionBinds.cpp:76
- #, c-format
--msgid "%i problem detected:\n"
--msgid_plural "%i problems detected:\n"
--msgstr[0] "%i 問題を検出:\n"
-+msgid "Configuration: OptionBinding with id \"%s\" does not exist"
-+msgstr "設定: id \"%s\" を伴う OptionBinding は存在しません"
- 
--#: ../libdnf/dnf-goal.cpp:78
-+#: libdnf/conf/OptionBinds.cpp:88
- #, c-format
--msgid " Problem %1$i: %2$s\n"
--msgstr " 問題 %1$i: %2$s\n"
-+msgid "Configuration: OptionBinding with id \"%s\" already exists"
-+msgstr "設定: id \"%s\" を伴う OptionBinding はすでに存在します"
- 
--#: ../libdnf/dnf-goal.cpp:80
-+#: libdnf/conf/OptionBool.cpp:47
- #, c-format
--msgid " Problem: %s\n"
--msgstr " 問題: %s\n"
--
--#: ../libdnf/goal/Goal.cpp:55
--msgid "Ill-formed Selector, presence of multiple match objects in the filter"
--msgstr "不適格な Selector、フィルター内に複数の一致するオブジェクトが存在"
--
--#: ../libdnf/goal/Goal.cpp:56
--msgid "Ill-formed Selector used for the operation, incorrect comparison type"
--msgstr "操作に使用される不適格な Selector、間違った比較タイプ"
--
--#: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:94
--msgid " does not belong to a distupgrade repository"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:68 ../libdnf/goal/Goal.cpp:95
--msgid " has inferior architecture"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:69
--msgid "problem with installed package "
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:70 ../libdnf/goal/Goal.cpp:97
--msgid "conflicting requests"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:71 ../libdnf/goal/Goal.cpp:98
--msgid "unsupported request"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:72 ../libdnf/goal/Goal.cpp:99
--msgid "nothing provides requested "
--msgstr ""
-+msgid "invalid boolean value '%s'"
-+msgstr "無効な boolean 値 '%s'"
- 
--#: ../libdnf/goal/Goal.cpp:73
-+#: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158
-+#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59
- #, c-format
--msgid "package %s does not exist"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:74 ../libdnf/goal/Goal.cpp:101
--msgid " is provided by the system"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:75 ../libdnf/goal/Goal.cpp:102
--msgid "some dependency problem"
--msgstr ""
-+msgid "'%s' is not an allowed value"
-+msgstr "'%s' 値は許可されていない値です"
- 
--#: ../libdnf/goal/Goal.cpp:76
--msgid "cannot install the best update candidate for package "
--msgstr ""
-+#: libdnf/conf/OptionEnum.cpp:83 libdnf/conf/OptionNumber.cpp:88
-+msgid "invalid value"
-+msgstr "無効な値"
- 
--#: ../libdnf/goal/Goal.cpp:77 ../libdnf/goal/Goal.cpp:104
--msgid "cannot install the best candidate for the job"
--msgstr ""
-+#: libdnf/conf/OptionNumber.cpp:73
-+#, c-format
-+msgid "given value [%d] should be less than allowed value [%d]."
-+msgstr "指定された値 [%d] は許可された値 [%d]より小さくしてください"
- 
--#: ../libdnf/goal/Goal.cpp:78
-+#: libdnf/conf/OptionNumber.cpp:76
- #, c-format
--msgid "package %s is filtered out by modular filtering"
--msgstr ""
-+msgid "given value [%d] should be greater than allowed value [%d]."
-+msgstr "指定された値 [%d] は許可された値 [%d]より大きくしてください"
- 
--#: ../libdnf/goal/Goal.cpp:79
-+#: libdnf/conf/OptionPath.cpp:78
- #, c-format
--msgid "package %s does not have a compatible architecture"
--msgstr ""
-+msgid "given path '%s' is not absolute."
-+msgstr "指定されたパス '%s' は絶対パスではありません。"
- 
--#: ../libdnf/goal/Goal.cpp:80
-+#: libdnf/conf/OptionPath.cpp:82
- #, c-format
--msgid "package %s is not installable"
--msgstr ""
-+msgid "given path '%s' does not exist."
-+msgstr "指定されたパス '%s' が存在しません。"
- 
--#: ../libdnf/goal/Goal.cpp:81
-+#: libdnf/conf/OptionSeconds.cpp:52
- #, c-format
--msgid "package %s is filtered out by exclude filtering"
--msgstr ""
-+msgid "could not convert '%s' to seconds"
-+msgstr "'%s' を 秒に変換できません"
- 
--#: ../libdnf/goal/Goal.cpp:82
-+#: libdnf/conf/OptionString.cpp:74
-+msgid "GetValue(): Value not set"
-+msgstr "GetValue(): 値は設定されていません"
-+
-+#: libdnf/dnf-goal.cpp:68
-+msgid "Could not depsolve transaction; "
-+msgstr "トランザクションを depsolve できませんでした; "
-+
-+#: libdnf/dnf-goal.cpp:70
- #, c-format
--msgid "nothing provides %s needed by %s"
--msgstr ""
-+msgid "%i problem detected:\n"
-+msgid_plural "%i problems detected:\n"
-+msgstr[0] "%i 問題を検出:\n"
- 
--#: ../libdnf/goal/Goal.cpp:83
-+#: libdnf/dnf-goal.cpp:78
- #, c-format
--msgid "cannot install both %s and %s"
--msgstr ""
-+msgid " Problem %1$i: %2$s\n"
-+msgstr " 問題 %1$i: %2$s\n"
- 
--#: ../libdnf/goal/Goal.cpp:84
-+#: libdnf/dnf-goal.cpp:80
- #, c-format
--msgid "package %s conflicts with %s provided by %s"
--msgstr ""
-+msgid " Problem: %s\n"
-+msgstr " 問題: %s\n"
- 
--#: ../libdnf/goal/Goal.cpp:85
-+#: libdnf/dnf-rpmts.cpp:79
- #, c-format
--msgid "package %s obsoletes %s provided by %s"
--msgstr ""
-+msgid ""
-+"No available modular metadata for modular package '%s'; cannot be installed "
-+"on the system"
-+msgstr "モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにインストールはできません"
- 
--#: ../libdnf/goal/Goal.cpp:86
-+#: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
- #, c-format
--msgid "installed package %s obsoletes %s provided by %s"
--msgstr ""
-+msgid "signature does not verify for %s"
-+msgstr "署名は %s を確認しません"
- 
--#: ../libdnf/goal/Goal.cpp:87
-+#: libdnf/dnf-rpmts.cpp:129 libdnf/dnf-rpmts.cpp:174
- #, c-format
--msgid "package %s implicitly obsoletes %s provided by %s"
--msgstr ""
-+msgid "failed to open(generic error): %s"
-+msgstr "開くことに失敗しました(ジェネリックエラー): %s"
- 
--#: ../libdnf/goal/Goal.cpp:88
-+#: libdnf/dnf-rpmts.cpp:142
- #, c-format
--msgid "package %s requires %s, but none of the providers can be installed"
--msgstr ""
-+msgid "failed to verify key for %s"
-+msgstr "%s のキーの確認に失敗しました"
- 
--#: ../libdnf/goal/Goal.cpp:89
-+#: libdnf/dnf-rpmts.cpp:150
- #, c-format
--msgid "package %s conflicts with %s provided by itself"
--msgstr ""
-+msgid "public key unavailable for %s"
-+msgstr "%s は公開鍵を利用できません"
- 
--#: ../libdnf/goal/Goal.cpp:90
-+#: libdnf/dnf-rpmts.cpp:158
- #, c-format
--msgid "both package %s and %s obsolete %s"
--msgstr ""
-+msgid "signature not found for %s"
-+msgstr "%s の署名は見つかりませんでした"
- 
--#: ../libdnf/goal/Goal.cpp:96
--msgid "problem with installed module "
--msgstr ""
-+#: libdnf/dnf-rpmts.cpp:193
-+#, c-format
-+msgid "failed to add install element: %1$s [%2$i]"
-+msgstr "インストールの要素の追加に失敗しました: %1$s [%2$i]"
- 
--#: ../libdnf/goal/Goal.cpp:100
-+#: libdnf/dnf-rpmts.cpp:274
- #, c-format
--msgid "module %s does not exist"
--msgstr ""
-+msgid "Error running transaction: %s"
-+msgstr "トランザクションの実行中にエラーが発生しました: %s"
- 
--#: ../libdnf/goal/Goal.cpp:103
--msgid "cannot install the best update candidate for module "
--msgstr ""
-+#: libdnf/dnf-rpmts.cpp:283
-+msgid "Error running transaction and no problems were reported!"
-+msgstr "トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!"
- 
--#: ../libdnf/goal/Goal.cpp:105 ../libdnf/goal/Goal.cpp:108
--#, c-format
--msgid "module %s is disabled"
--msgstr ""
-+#: libdnf/dnf-rpmts.cpp:346
-+msgid "Fatal error, run database recovery"
-+msgstr "致命的なエラー、データベースリカバリーを実行します"
- 
--#: ../libdnf/goal/Goal.cpp:106
-+#: libdnf/dnf-rpmts.cpp:355
- #, c-format
--msgid "module %s does not have a compatible architecture"
--msgstr ""
-+msgid "failed to find package %s"
-+msgstr "パッケージ %s を見つけることができませんでした"
- 
--#: ../libdnf/goal/Goal.cpp:107
-+#: libdnf/dnf-rpmts.cpp:401
- #, c-format
--msgid "module %s is not installable"
--msgstr ""
-+msgid "could not add erase element %1$s(%2$i)"
-+msgstr "erase 要素 %1$s(%2$i) を追加することができません"
- 
--#: ../libdnf/goal/Goal.cpp:109
-+#: libdnf/dnf-sack.cpp:381
- #, c-format
--msgid "nothing provides %s needed by module %s"
--msgstr ""
-+msgid "no %1$s string for %2$s"
-+msgstr "%2$s の %1$s 文字列はありません"
- 
--#: ../libdnf/goal/Goal.cpp:110
--#, c-format
--msgid "cannot install both modules %s and %s"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:404
-+msgid "failed to add solv"
-+msgstr "solv の追加に失敗しました"
- 
--#: ../libdnf/goal/Goal.cpp:111
-+#: libdnf/dnf-sack.cpp:422
- #, c-format
--msgid "module %s conflicts with %s provided by %s"
--msgstr ""
-+msgid "failed to open: %s"
-+msgstr "開くことに失敗しました: %s"
- 
--#: ../libdnf/goal/Goal.cpp:112
-+#: libdnf/dnf-sack.cpp:501
- #, c-format
--msgid "module %s obsoletes %s provided by %s"
--msgstr ""
-+msgid "cannot create temporary file: %s"
-+msgstr "一時ファイルを作成できません: %s"
- 
--#: ../libdnf/goal/Goal.cpp:113
-+#: libdnf/dnf-sack.cpp:511
- #, c-format
--msgid "installed module %s obsoletes %s provided by %s"
--msgstr ""
-+msgid "failed opening tmp file: %s"
-+msgstr "tmp ファイルを開くことに失敗しました: %s"
- 
--#: ../libdnf/goal/Goal.cpp:114
-+#: libdnf/dnf-sack.cpp:523
- #, c-format
--msgid "module %s implicitly obsoletes %s provided by %s"
--msgstr ""
-+msgid "write_main() failed writing data: %i"
-+msgstr "write_main() はデータの書き込みに失敗しました: %i"
- 
--#: ../libdnf/goal/Goal.cpp:115
--#, c-format
--msgid "module %s requires %s, but none of the providers can be installed"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:540
-+msgid "write_main() failed to re-load written solv file"
-+msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました"
- 
--#: ../libdnf/goal/Goal.cpp:116
-+#: libdnf/dnf-sack.cpp:605
- #, c-format
--msgid "module %s conflicts with %s provided by itself"
--msgstr ""
-+msgid "can not create temporary file %s"
-+msgstr "一時ファイル %s を作成できません"
- 
--#: ../libdnf/goal/Goal.cpp:117
-+#: libdnf/dnf-sack.cpp:623
- #, c-format
--msgid "both module %s and %s obsolete %s"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:1008
--msgid "no solver set"
--msgstr "設定されたソルバーはありません"
-+msgid "write_ext(%1$d) has failed: %2$d"
-+msgstr "write_ext(%1$d) は失敗しました: %2$d"
- 
--#: ../libdnf/goal/Goal.cpp:1013
--#, c-format
--msgid "failed to make %s absolute"
--msgstr "%s を絶対的にすることに失敗しました"
-+#: libdnf/dnf-sack.cpp:678
-+msgid "null repo md file"
-+msgstr "null repo md ファイル"
- 
--#: ../libdnf/goal/Goal.cpp:1020
-+#: libdnf/dnf-sack.cpp:687
- #, c-format
--msgid "failed writing debugdata to %1$s: %2$s"
--msgstr "debugdata を %1$s へ書き込むことに失敗しました: %2$s"
-+msgid "can not read file %1$s: %2$s"
-+msgstr "ファイル %1$s を読み込みできません: %2$s"
- 
--#: ../libdnf/goal/Goal.cpp:1032
--msgid "no solv in the goal"
--msgstr "目標に solv がありません"
-+#: libdnf/dnf-sack.cpp:701
-+msgid "repo_add_solv() has failed."
-+msgstr "repo_add_solv() は失敗しました。"
- 
--#: ../libdnf/goal/Goal.cpp:1034
--msgid "no solution, cannot remove protected package"
--msgstr "ソリューションがなく、保護されたパッケージを削除できません"
-+#: libdnf/dnf-sack.cpp:714
-+msgid "loading of MD_TYPE_PRIMARY has failed."
-+msgstr "MD_TYPE_PRIMARY のロードに失敗しました。"
- 
--#: ../libdnf/goal/Goal.cpp:1037
--msgid "no solution possible"
--msgstr "可能なソリューションがありません"
-+#: libdnf/dnf-sack.cpp:727
-+msgid "repo_add_repomdxml/rpmmd() has failed."
-+msgstr "repo_add_repomdxml/rpmmd() は失敗しました。"
- 
--#: ../libdnf/goal/Goal.cpp:1443
--msgid ""
--"The operation would result in removing the following protected packages: "
--msgstr "操作は結果的に以下の保護されたパッケージを削除します: "
-+#: libdnf/dnf-sack.cpp:794
-+msgid "failed to auto-detect architecture"
-+msgstr "アーキテクチャーの自動検出に失敗しました"
- 
--#: ../libdnf/repo/Repo.cpp:337
-+#: libdnf/dnf-sack.cpp:919
- #, c-format
--msgid "Bad id for repo: %s, byte = %s %d"
--msgstr "repo に対する不正な id: %s, byte = %s %d"
-+msgid "failed creating cachedir %s"
-+msgstr "cachedir %s の作成に失敗しました"
-+
-+#: libdnf/dnf-sack.cpp:1696
-+msgid "failed loading RPMDB"
-+msgstr "RPMDB のロードに失敗しました"
- 
--#: ../libdnf/repo/Repo.cpp:362
-+#: libdnf/dnf-sack.cpp:2403
- #, c-format
--msgid "Repository %s has no mirror or baseurl set."
--msgstr "リポジトリー %s にはミラーまたは baseurl セットがありません。"
-+msgid "No module defaults found: %s"
-+msgstr "モジュールのデフォルトは見つかりませんでした: %s"
- 
--#: ../libdnf/repo/Repo.cpp:371
-+#: libdnf/dnf-state.cpp:1184
- #, c-format
--msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
--msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。"
-+msgid "percentage not 100: %i"
-+msgstr "パーセンテージは 100 ではありません: %i"
- 
--#: ../libdnf/repo/Repo.cpp:580
-+#: libdnf/dnf-state.cpp:1194
- #, c-format
--msgid "Cannot find a valid baseurl for repo: %s"
--msgstr "repo に対して有効な baseurl を見つけられません: %s"
-+msgid "failed to set number steps: %i"
-+msgstr "数のステップの設定に失敗しました: %i"
- 
--#: ../libdnf/repo/Repo.cpp:616 ../libdnf/repo/Repo.cpp:1705
--msgid ""
--"Maximum download speed is lower than minimum. Please change configuration of"
--" minrate or throttle"
--msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください。"
-+#: libdnf/dnf-state.cpp:1293
-+msgid "cancelled by user action"
-+msgstr "ユーザーの動作で取り消されました"
- 
--#: ../libdnf/repo/Repo.cpp:666 ../libdnf/repo/Repo.cpp:688
-+#: libdnf/dnf-state.cpp:1332
- #, c-format
--msgid "%s: gpgme_data_new_from_fd(): %s"
--msgstr "%s: gpgme_data_new_from_fd(): %s"
-+msgid "done on a state %1$p that did not have a size set! [%2$s]"
-+msgstr "サイズ設定のない状態 %1$p で実行されました! [%2$s]"
- 
--#: ../libdnf/repo/Repo.cpp:674 ../libdnf/repo/Repo.cpp:696
-+#: libdnf/dnf-state.cpp:1357
- #, c-format
--msgid "%s: gpgme_op_import(): %s"
--msgstr "%s: gpgme_op_import(): %s"
-+msgid "already at 100%% state [%s]"
-+msgstr "すでに 100%% の状態 [%s] にあります"
- 
--#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:785
--#: ../libdnf/repo/Repo.cpp:913
-+#: libdnf/dnf-transaction.cpp:300
- #, c-format
--msgid "%s: gpgme_ctx_set_engine_info(): %s"
--msgstr "%s: gpgme_ctx_set_engine_info(): %s"
-+msgid "Sources not set when trying to ensure package %s"
-+msgstr "パッケージ %s を確実にしようとする場合、ソースは設定されません"
- 
--#: ../libdnf/repo/Repo.cpp:746 ../libdnf/repo/Repo.cpp:810
-+#: libdnf/dnf-transaction.cpp:326
- #, c-format
--msgid "can not list keys: %s"
--msgstr "キーを一覧表示できません: %s"
-+msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
-+msgstr "repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo はロード済み)"
- 
--#: ../libdnf/repo/Repo.cpp:839
--#, c-format
--msgid "Failed to retrieve GPG key for repo '%s': %s"
--msgstr ""
-+#: libdnf/dnf-transaction.cpp:367
-+msgid "Failed to check untrusted: "
-+msgstr "untrusted の確認に失敗しました: "
- 
--#: ../libdnf/repo/Repo.cpp:892
-+#: libdnf/dnf-transaction.cpp:377
- #, c-format
--msgid "repo %s: 0x%s already imported"
--msgstr "repo %s: 0x%s はインポート済みです"
-+msgid "Downloaded file for %s not found"
-+msgstr "%s にダウンロードしたファイルが見つかりませんでした"
- 
--#: ../libdnf/repo/Repo.cpp:920
-+#: libdnf/dnf-transaction.cpp:397
- #, c-format
--msgid "repo %s: imported key 0x%s."
--msgstr "repo %s: インポート済みのキー 0x%s。"
-+msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
-+msgstr "パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s"
- 
--#: ../libdnf/repo/Repo.cpp:1164
--#, c-format
--msgid "reviving: repo '%s' skipped, no metalink."
--msgstr "復元中: repo '%s' はスキップされました、metalink はありません。"
-+#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
-+msgid "Failed to get value for CacheDir"
-+msgstr "CacheDir の値の取得に失敗しました"
- 
--#: ../libdnf/repo/Repo.cpp:1183
-+#: libdnf/dnf-transaction.cpp:911
- #, c-format
--msgid "reviving: repo '%s' skipped, no usable hash."
--msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。"
-+msgid "Failed to get filesystem free size for %s: "
-+msgstr "%s に filesystem をフリーサイズで取得することに失敗しました: "
- 
--#: ../libdnf/repo/Repo.cpp:1206
-+#: libdnf/dnf-transaction.cpp:919
- #, c-format
--msgid "reviving: failed for '%s', mismatched %s sum."
--msgstr "復元中: '%s' は失敗しました、%s の合計は一致しません。"
-+msgid "Failed to get filesystem free size for %s"
-+msgstr "%s に filesystem をフリーサイズで取得することに失敗しました"
- 
--#: ../libdnf/repo/Repo.cpp:1212
-+#: libdnf/dnf-transaction.cpp:935
- #, c-format
--msgid "reviving: '%s' can be revived - metalink checksums match."
--msgstr "復元中: '%s' は復元できます - metalink チェックサムが一致します。"
-+msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
-+msgstr "%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です"
- 
--#: ../libdnf/repo/Repo.cpp:1237
--#, c-format
--msgid "reviving: '%s' can be revived - repomd matches."
--msgstr "復元中: '%s' は復元できます - repomd が一致します。"
-+#: libdnf/dnf-transaction.cpp:1196
-+msgid "failed to set root"
-+msgstr "root の設定に失敗しました"
- 
--#: ../libdnf/repo/Repo.cpp:1239
-+#: libdnf/dnf-transaction.cpp:1418
- #, c-format
--msgid "reviving: failed for '%s', mismatched repomd."
--msgstr "復元中:  '%s' に失敗しました、repomd が一致しません。"
-+msgid "Error %i running transaction test"
-+msgstr "トランザクションテストの実行中にエラー %i"
- 
--#: ../libdnf/repo/Repo.cpp:1257
-+#: libdnf/dnf-transaction.cpp:1458
- #, c-format
--msgid "Cannot create repo destination directory \"%s\": %s"
--msgstr ""
-+msgid "Error %i running transaction"
-+msgstr "トランザクションの実行中にエラー %i"
- 
--#: ../libdnf/repo/Repo.cpp:1263
-+#: libdnf/dnf-transaction.cpp:1473
- #, c-format
--msgid "Cannot create repo temporary directory \"%s\": %s"
--msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s"
-+msgid "Transaction did not go to writing phase, but returned no error(%i)"
-+msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした"
- 
--#: ../libdnf/repo/Repo.cpp:1277
-+#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:399
- #, c-format
--msgid "Cannot create directory \"%s\": %s"
--msgstr "ディレクトリー \"%s\" を作成できません: %s"
-+msgid "cannot open directory %1$s: %2$s"
-+msgstr "ディレクトリー %1$s を開くことができません: %2$s"
- 
--#: ../libdnf/repo/Repo.cpp:1300
-+#: libdnf/dnf-utils.cpp:136
- #, c-format
--msgid "Cannot rename directory \"%s\" to \"%s\": %s"
--msgstr "ディレクトリー名を \"%s\" から \"%s\" へと変更できません: %s"
-+msgid "failed to remove %s"
-+msgstr "%s の削除に失敗しました"
- 
--#: ../libdnf/repo/Repo.cpp:1323
--#, c-format
--msgid "repo: using cache for: %s"
--msgstr "repo: キャッシュを使用: %s"
-+#: libdnf/goal/Goal.cpp:55
-+msgid "Ill-formed Selector, presence of multiple match objects in the filter"
-+msgstr "不適格な Selector、フィルター内に複数の一致するオブジェクトが存在"
- 
--#: ../libdnf/repo/Repo.cpp:1335
--#, c-format
--msgid "Cache-only enabled but no cache for '%s'"
--msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません"
-+#: libdnf/goal/Goal.cpp:56
-+msgid "Ill-formed Selector used for the operation, incorrect comparison type"
-+msgstr "操作に使用される不適格な Selector、間違った比較タイプ"
- 
--#: ../libdnf/repo/Repo.cpp:1339
--#, c-format
--msgid "repo: downloading from remote: %s"
--msgstr "repo: リモートからダウンロード中: %s"
-+#: libdnf/goal/Goal.cpp:67 libdnf/goal/Goal.cpp:94
-+msgid " does not belong to a distupgrade repository"
-+msgstr " はdistupgradeレポジトリーに属していません"
- 
--#: ../libdnf/repo/Repo.cpp:1345
--#, c-format
--msgid "Failed to download metadata for repo '%s': %s"
--msgstr ""
-+#: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95
-+msgid " has inferior architecture"
-+msgstr " は下位アーキテクチャがあります"
- 
--#: ../libdnf/repo/Repo.cpp:1371
--msgid "getCachedir(): Computation of SHA256 failed"
--msgstr "getCachedir(): SHA256 のコンピュテーションに失敗しました"
-+#: libdnf/goal/Goal.cpp:69
-+msgid "problem with installed package "
-+msgstr "インストール済パッケージの問題 "
-+
-+#: libdnf/goal/Goal.cpp:70 libdnf/goal/Goal.cpp:97
-+msgid "conflicting requests"
-+msgstr "競合するリクエスト"
-+
-+#: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98
-+msgid "unsupported request"
-+msgstr "非サポートのリクエスト"
- 
--#: ../libdnf/repo/Repo.cpp:1396
-+#: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99
-+msgid "nothing provides requested "
-+msgstr "何もリクエストされていません "
-+
-+#: libdnf/goal/Goal.cpp:73
- #, c-format
--msgid "Cannot create persistdir \"%s\": %s"
--msgstr ""
-+msgid "package %s does not exist"
-+msgstr "パッケージ %s は存在しません"
- 
--#: ../libdnf/repo/Repo.cpp:1796
--msgid "resume cannot be used simultaneously with the byterangestart param"
--msgstr "resume は byterangestart param と同時に使用できません"
-+#: libdnf/goal/Goal.cpp:74 libdnf/goal/Goal.cpp:101
-+msgid " is provided by the system"
-+msgstr " はシステムから提供されます"
-+
-+#: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102
-+msgid "some dependency problem"
-+msgstr "いくつかの依存問題"
-+
-+#: libdnf/goal/Goal.cpp:76
-+msgid "cannot install the best update candidate for package "
-+msgstr "パッケージの最良アップデート候補をインストールできません "
-+
-+#: libdnf/goal/Goal.cpp:77 libdnf/goal/Goal.cpp:104
-+msgid "cannot install the best candidate for the job"
-+msgstr "ジョブの最良アップデート候補をインストールできません"
- 
--#: ../libdnf/repo/Repo.cpp:1807
-+#: libdnf/goal/Goal.cpp:78
- #, c-format
--msgid "PackageTarget initialization failed: %s"
--msgstr "PackageTarget の初期化に失敗しました: %s"
-+msgid "package %s is filtered out by modular filtering"
-+msgstr "パッケージ %s はモジュラーフィルタリングに一致しません"
- 
--#: ../libdnf/repo/Repo.cpp:1924
-+#: libdnf/goal/Goal.cpp:79
- #, c-format
--msgid "Cannot open %s: %s"
--msgstr "%s を開くことができません: %s"
-+msgid "package %s does not have a compatible architecture"
-+msgstr "パッケージ %s は互換性のあるアーキテクチャーがありません"
- 
--#: ../libdnf/repo/Repo.cpp:1968
-+#: libdnf/goal/Goal.cpp:80
- #, c-format
--msgid "Log handler with id %ld doesn't exist"
--msgstr "id %ld を伴うログハンドラーは存在しません"
-+msgid "package %s is not installable"
-+msgstr "パッケージ %s はインストール不可です"
- 
--#: ../libdnf/dnf-transaction.cpp:300
-+#: libdnf/goal/Goal.cpp:81
- #, c-format
--msgid "Sources not set when trying to ensure package %s"
--msgstr "パッケージ %s を確実にしようとする場合、ソースは設定されません"
-+msgid "package %s is filtered out by exclude filtering"
-+msgstr "パッケージ %s は除外フィルタリングに一致しません"
- 
--#: ../libdnf/dnf-transaction.cpp:326
-+#: libdnf/goal/Goal.cpp:82
- #, c-format
--msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
--msgstr "repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo はロード済み)"
-+msgid "nothing provides %s needed by %s"
-+msgstr "%s が提供されません %s に必要です"
- 
--#: ../libdnf/dnf-transaction.cpp:367
--msgid "Failed to check untrusted: "
--msgstr "untrusted の確認に失敗しました: "
-+#: libdnf/goal/Goal.cpp:83
-+#, c-format
-+msgid "cannot install both %s and %s"
-+msgstr "%s と %s どちらもインストールできません"
- 
--#: ../libdnf/dnf-transaction.cpp:377
-+#: libdnf/goal/Goal.cpp:84
- #, c-format
--msgid "Downloaded file for %s not found"
--msgstr "%s にダウンロードしたファイルが見つかりませんでした"
-+msgid "package %s conflicts with %s provided by %s"
-+msgstr "パッケージ %s は %s と競合しています。これは %s により提供されます"
- 
--#: ../libdnf/dnf-transaction.cpp:397
-+#: libdnf/goal/Goal.cpp:85
- #, c-format
--msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
--msgstr "パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s"
-+msgid "package %s obsoletes %s provided by %s"
-+msgstr "パッケージ %s は %s を廃止しました。これは %s により提供されます"
- 
--#: ../libdnf/dnf-transaction.cpp:831 ../libdnf/dnf-transaction.cpp:903
--msgid "Failed to get value for CacheDir"
--msgstr "CacheDir の値の取得に失敗しました"
-+#: libdnf/goal/Goal.cpp:86
-+#, c-format
-+msgid "installed package %s obsoletes %s provided by %s"
-+msgstr "インストール済パッケージ %s は %s を廃止しました。これは %s により提供されます"
- 
--#: ../libdnf/dnf-transaction.cpp:911
-+#: libdnf/goal/Goal.cpp:87
- #, c-format
--msgid "Failed to get filesystem free size for %s: "
--msgstr "%s に filesystem をフリーサイズで取得することに失敗しました: "
-+msgid "package %s implicitly obsoletes %s provided by %s"
-+msgstr "パッケージ %s は %s を暗に廃止しました。これは %s により提供されます"
- 
--#: ../libdnf/dnf-transaction.cpp:919
-+#: libdnf/goal/Goal.cpp:88
- #, c-format
--msgid "Failed to get filesystem free size for %s"
--msgstr "%s に filesystem をフリーサイズで取得することに失敗しました"
-+msgid "package %s requires %s, but none of the providers can be installed"
-+msgstr "パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできません"
- 
--#: ../libdnf/dnf-transaction.cpp:935
-+#: libdnf/goal/Goal.cpp:89
- #, c-format
--msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
--msgstr "%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です"
-+msgid "package %s conflicts with %s provided by itself"
-+msgstr "パッケージ %s は自己提供される %s と競合しています"
- 
--#: ../libdnf/dnf-transaction.cpp:1196
--msgid "failed to set root"
--msgstr "root の設定に失敗しました"
-+#: libdnf/goal/Goal.cpp:90
-+#, c-format
-+msgid "both package %s and %s obsolete %s"
-+msgstr "パッケージ %s と %s 両方は %s を廃止しました"
-+
-+#: libdnf/goal/Goal.cpp:96
-+msgid "problem with installed module "
-+msgstr "インストール済モジュールの問題 "
- 
--#: ../libdnf/dnf-transaction.cpp:1418
-+#: libdnf/goal/Goal.cpp:100
- #, c-format
--msgid "Error %i running transaction test"
--msgstr "トランザクションテストの実行中にエラー %i"
-+msgid "module %s does not exist"
-+msgstr "モジュール %s は存在しません"
- 
--#: ../libdnf/dnf-transaction.cpp:1458
-+#: libdnf/goal/Goal.cpp:103
-+msgid "cannot install the best update candidate for module "
-+msgstr "モジュールの最良アップデート候補をインストールできません "
-+
-+#: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108
- #, c-format
--msgid "Error %i running transaction"
--msgstr "トランザクションの実行中にエラー %i"
-+msgid "module %s is disabled"
-+msgstr "モジュール %s は無効です"
- 
--#: ../libdnf/dnf-transaction.cpp:1473
-+#: libdnf/goal/Goal.cpp:106
- #, c-format
--msgid "Transaction did not go to writing phase, but returned no error(%i)"
--msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした"
-+msgid "module %s does not have a compatible architecture"
-+msgstr "モジュール %s は互換性のあるアーキテクチャーがありません"
- 
--#: ../libdnf/dnf-utils.cpp:136
-+#: libdnf/goal/Goal.cpp:107
- #, c-format
--msgid "failed to remove %s"
--msgstr "%s の削除に失敗しました"
-+msgid "module %s is not installable"
-+msgstr "モジュール %s はインストール不可です"
- 
--#: ../libdnf/plugin/plugin.cpp:46
-+#: libdnf/goal/Goal.cpp:109
- #, c-format
--msgid "Can't load shared library \"%s\": %s"
--msgstr ""
-+msgid "nothing provides %s needed by module %s"
-+msgstr "%s が提供されませんモジュール %s に必要です"
- 
--#: ../libdnf/plugin/plugin.cpp:61 ../libdnf/plugin/plugin.cpp:67
--#: ../libdnf/plugin/plugin.cpp:73 ../libdnf/plugin/plugin.cpp:79
-+#: libdnf/goal/Goal.cpp:110
- #, c-format
--msgid "Can't obtain address of symbol \"%s\": %s"
--msgstr ""
-+msgid "cannot install both modules %s and %s"
-+msgstr "モジュール %s と %s どちらもインストールできません"
- 
--#: ../libdnf/plugin/plugin.cpp:86
-+#: libdnf/goal/Goal.cpp:111
- #, c-format
--msgid "Loading plugin file=\"%s\""
--msgstr ""
-+msgid "module %s conflicts with %s provided by %s"
-+msgstr "モジュール %s は %s と競合しています。これは %s により提供されます"
- 
--#: ../libdnf/plugin/plugin.cpp:89
-+#: libdnf/goal/Goal.cpp:112
- #, c-format
--msgid "Loaded plugin name=\"%s\", version=\"%s\""
--msgstr ""
-+msgid "module %s obsoletes %s provided by %s"
-+msgstr "モジュール %s は %s を廃止しました。これは %s により提供されます"
- 
--#: ../libdnf/plugin/plugin.cpp:96
--msgid "Plugins::loadPlugins() dirPath cannot be empty"
--msgstr ""
-+#: libdnf/goal/Goal.cpp:113
-+#, c-format
-+msgid "installed module %s obsoletes %s provided by %s"
-+msgstr "インストール済モジュール %s は %s を廃止しました。これは %s により提供されます"
- 
--#: ../libdnf/plugin/plugin.cpp:105
-+#: libdnf/goal/Goal.cpp:114
- #, c-format
--msgid "Can't read plugin directory \"%s\": %s"
--msgstr ""
-+msgid "module %s implicitly obsoletes %s provided by %s"
-+msgstr "モジュール %s は %s を暗に廃止しました。これは %s により提供されます"
- 
--#: ../libdnf/plugin/plugin.cpp:114
-+#: libdnf/goal/Goal.cpp:115
- #, c-format
--msgid "Can't load plugin \"%s\": %s"
--msgstr ""
-+msgid "module %s requires %s, but none of the providers can be installed"
-+msgstr "モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできません"
- 
--#: ../libdnf/dnf-state.cpp:1184
-+#: libdnf/goal/Goal.cpp:116
- #, c-format
--msgid "percentage not 100: %i"
--msgstr "パーセンテージは 100 ではありません: %i"
-+msgid "module %s conflicts with %s provided by itself"
-+msgstr "モジュール %s は自己提供される %s と競合しています"
- 
--#: ../libdnf/dnf-state.cpp:1194
-+#: libdnf/goal/Goal.cpp:117
- #, c-format
--msgid "failed to set number steps: %i"
--msgstr "数のステップの設定に失敗しました: %i"
-+msgid "both module %s and %s obsolete %s"
-+msgstr "モジュール %s と %s 両方は %s を廃止しました"
- 
--#: ../libdnf/dnf-state.cpp:1293
--msgid "cancelled by user action"
--msgstr "ユーザーの動作で取り消されました"
-+#: libdnf/goal/Goal.cpp:1032
-+msgid "no solver set"
-+msgstr "設定されたソルバーはありません"
- 
--#: ../libdnf/dnf-state.cpp:1332
-+#: libdnf/goal/Goal.cpp:1037
- #, c-format
--msgid "done on a state %1$p that did not have a size set! [%2$s]"
--msgstr "サイズ設定のない状態 %1$p で実行されました! [%2$s]"
-+msgid "failed to make %s absolute"
-+msgstr "%s を絶対的にすることに失敗しました"
- 
--#: ../libdnf/dnf-state.cpp:1357
-+#: libdnf/goal/Goal.cpp:1044
- #, c-format
--msgid "already at 100%% state [%s]"
--msgstr "すでに 100%% の状態 [%s] にあります"
-+msgid "failed writing debugdata to %1$s: %2$s"
-+msgstr "debugdata を %1$s へ書き込むことに失敗しました: %2$s"
-+
-+#: libdnf/goal/Goal.cpp:1056
-+msgid "no solv in the goal"
-+msgstr "目標に solv がありません"
-+
-+#: libdnf/goal/Goal.cpp:1058
-+msgid "no solution, cannot remove protected package"
-+msgstr "ソリューションがなく、保護されたパッケージを削除できません"
-+
-+#: libdnf/goal/Goal.cpp:1061
-+msgid "no solution possible"
-+msgstr "可能なソリューションがありません"
-+
-+#: libdnf/goal/Goal.cpp:1473
-+msgid ""
-+"The operation would result in removing the following protected packages: "
-+msgstr "操作は結果的に以下の保護されたパッケージを削除します: "
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:43
-+#: libdnf/hy-iutil.cpp:322
- #, c-format
--msgid "Failed to update from string: %s"
--msgstr ""
-+msgid "Failed renaming %1$s to %2$s: %3$s"
-+msgstr "名前を %1$s から %2$s へ変更できませんでした: %3$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:68
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:70
-+#: libdnf/hy-iutil.cpp:330
- #, c-format
--msgid "Failed to resolve: %s"
--msgstr ""
-+msgid "Failed setting perms on %1$s: %2$s"
-+msgstr "%1$s に権限を設定できませんでした: %2$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:74
-+#: libdnf/hy-iutil.cpp:376
- #, c-format
--msgid "Failed to upgrade defaults: %s"
--msgstr ""
-+msgid "cannot create directory %1$s: %2$s"
-+msgstr "ディレクトリー %1$s を作成できません : %2$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:77
-+#: libdnf/hy-iutil.cpp:411
- #, c-format
--msgid "Failed to upgrade streams: %s"
--msgstr ""
-+msgid "cannot stat path %1$s: %2$s"
-+msgstr "パス %1$s のstatを調べられません : %2$s"
- 
--#: ../libdnf/module/ModulePackage.cpp:463
-+#: libdnf/module/ModulePackage.cpp:463
- #, c-format
- msgid "Invalid format of Platform module: %s"
--msgstr ""
-+msgstr "不正なプラットフォームモジュールのフォーマット: %s"
- 
--#: ../libdnf/module/ModulePackage.cpp:478
-+#: libdnf/module/ModulePackage.cpp:478
- msgid "Multiple module platforms provided by available packages\n"
--msgstr ""
-+msgstr "利用可能パッケージに提供される複数のモジュールプラットフォーム\n"
- 
--#: ../libdnf/module/ModulePackage.cpp:491
-+#: libdnf/module/ModulePackage.cpp:491
- msgid "Multiple module platforms provided by installed packages\n"
--msgstr ""
-+msgstr "インストール済パッケージに提供される複数のモジュールプラットフォーム\n"
- 
--#: ../libdnf/module/ModulePackage.cpp:518
-+#: libdnf/module/ModulePackage.cpp:518
- #, c-format
- msgid "Detection of Platform Module in %s failed: %s"
--msgstr ""
-+msgstr "%s のプラットフォームモジュールの検出に失敗しました: %s"
- 
--#: ../libdnf/module/ModulePackage.cpp:527
-+#: libdnf/module/ModulePackage.cpp:527
- #, c-format
- msgid "Missing PLATFORM_ID in %s"
--msgstr ""
-+msgstr "%s に PLATFORM_ID が見つかりません"
- 
--#: ../libdnf/module/ModulePackage.cpp:532
-+#: libdnf/module/ModulePackage.cpp:532
- msgid "No valid Platform ID detected"
--msgstr ""
-+msgstr "有効な Platform ID が検出されませんでした"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:68
-+#: libdnf/module/ModulePackageContainer.cpp:68
- #, c-format
- msgid "Cannot enable multiple streams for module '%s'"
--msgstr ""
-+msgstr "モジュール '%s' の複数ストリームを有効化できません"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:294
-+#: libdnf/module/ModulePackageContainer.cpp:294
- #, c-format
- msgid "Conflicting defaults with repo '%s': %s"
--msgstr ""
-+msgstr "repo '%s' のデフォルトが競合: %s"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1568
-+#: libdnf/module/ModulePackageContainer.cpp:1569
- #, c-format
- msgid "Unable to load modular Fail-Safe data at '%s'"
--msgstr ""
-+msgstr "'%s' のモジュラーフェイルセーフデータをロードできません"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1574
-+#: libdnf/module/ModulePackageContainer.cpp:1575
- #, c-format
- msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
--msgstr ""
-+msgstr "モジュール '%s:%s' のモジュラーフェイルセーフデータをロードできません"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1638
-+#: libdnf/module/ModulePackageContainer.cpp:1639
- #, c-format
- msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
--msgstr ""
-+msgstr "ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: %s"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1660
-+#: libdnf/module/ModulePackageContainer.cpp:1661
- #, c-format
- msgid "Unable to save a modular Fail Safe data to '%s'"
--msgstr ""
-+msgstr "'%s' のモジュラーフェイルセーフデータを保存できません"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1685
-+#: libdnf/module/ModulePackageContainer.cpp:1686
- #, c-format
- msgid "Unable to remove a modular Fail Safe data in '%s'"
--msgstr ""
-+msgstr "'%s' のモジュラーフェイルセーフデータを削除できません"
- 
--#: ../libdnf/dnf-rpmts.cpp:79
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:44
- #, c-format
--msgid ""
--"No available modular metadata for modular package '%s'; cannot be installed "
--"on the system"
--msgstr ""
-+msgid "Failed to update from string: %s"
-+msgstr "文字列からのアップデートに失敗しました: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:121 ../libdnf/dnf-rpmts.cpp:166
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:68
- #, c-format
--msgid "signature does not verify for %s"
--msgstr "署名は %s を確認しません"
-+msgid "Failed to resolve: %s"
-+msgstr "名前解決に失敗しました: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:129 ../libdnf/dnf-rpmts.cpp:174
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:73
- #, c-format
--msgid "failed to open(generic error): %s"
--msgstr "開くことに失敗しました(ジェネリックエラー): %s"
-+msgid "There were errors while resolving modular defaults: %s"
-+msgstr "モジュラーデフォルトの解決中にエラーが発生しました: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:142
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:78
- #, c-format
--msgid "failed to verify key for %s"
--msgstr "%s のキーの確認に失敗しました"
-+msgid "Failed to upgrade defaults: %s"
-+msgstr "デフォルトのアップグレードに失敗しました: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:150
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:81
- #, c-format
--msgid "public key unavailable for %s"
--msgstr "%s は公開鍵を利用できません"
-+msgid "Failed to upgrade streams: %s"
-+msgstr "ストリームのアップグレードに失敗しました: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:158
-+#: libdnf/plugin/plugin.cpp:46
- #, c-format
--msgid "signature not found for %s"
--msgstr "%s の署名は見つかりませんでした"
-+msgid "Can't load shared library \"%s\": %s"
-+msgstr "共有ライブラリ \"%s\" をロードできません : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:193
-+#: libdnf/plugin/plugin.cpp:61 libdnf/plugin/plugin.cpp:67
-+#: libdnf/plugin/plugin.cpp:73 libdnf/plugin/plugin.cpp:79
- #, c-format
--msgid "failed to add install element: %1$s [%2$i]"
--msgstr "インストールの要素の追加に失敗しました: %1$s [%2$i]"
-+msgid "Can't obtain address of symbol \"%s\": %s"
-+msgstr "シンボル \"%s\" のアドレスを収集できません : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:274
-+#: libdnf/plugin/plugin.cpp:86
- #, c-format
--msgid "Error running transaction: %s"
--msgstr "トランザクションの実行中にエラーが発生しました: %s"
--
--#: ../libdnf/dnf-rpmts.cpp:283
--msgid "Error running transaction and no problems were reported!"
--msgstr "トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!"
--
--#: ../libdnf/dnf-rpmts.cpp:346
--msgid "Fatal error, run database recovery"
--msgstr "致命的なエラー、データベースリカバリーを実行します"
-+msgid "Loading plugin file=\"%s\""
-+msgstr "プラグインファイル =\"%s\" をロード中"
- 
--#: ../libdnf/dnf-rpmts.cpp:355
-+#: libdnf/plugin/plugin.cpp:89
- #, c-format
--msgid "failed to find package %s"
--msgstr "パッケージ %s を見つけることができませんでした"
-+msgid "Loaded plugin name=\"%s\", version=\"%s\""
-+msgstr "プラグイン名 =\"%s\", バージョン =\"%s\" をロードしました"
-+
-+#: libdnf/plugin/plugin.cpp:96
-+msgid "Plugins::loadPlugins() dirPath cannot be empty"
-+msgstr "Plugins::loadPlugins() dirPath は空白にできません"
- 
--#: ../libdnf/dnf-rpmts.cpp:401
-+#: libdnf/plugin/plugin.cpp:105
- #, c-format
--msgid "could not add erase element %1$s(%2$i)"
--msgstr "erase 要素 %1$s(%2$i) を追加することができません"
-+msgid "Can't read plugin directory \"%s\": %s"
-+msgstr "プラグインディレクトリー \"%s\" を読み込めません: %s"
- 
--#: ../libdnf/conf/OptionString.cpp:59 ../libdnf/conf/OptionStringList.cpp:59
--#: ../libdnf/conf/OptionEnum.cpp:72 ../libdnf/conf/OptionEnum.cpp:158
-+#: libdnf/plugin/plugin.cpp:114
- #, c-format
--msgid "'%s' is not an allowed value"
--msgstr "'%s' 値は許可されていない値です"
-+msgid "Can't load plugin \"%s\": %s"
-+msgstr "プラグイン \"%s\" をロードできません : %s"
- 
--#: ../libdnf/conf/OptionString.cpp:74
--msgid "GetValue(): Value not set"
--msgstr "GetValue(): 値は設定されていません"
-+#: libdnf/repo/DependencySplitter.cpp:50
-+msgid ""
-+"Using '==' operator in reldeps can result in an undefined behavior. It is "
-+"deprecated and the support will be dropped in future versions. Use '=' "
-+"operator instead."
-+msgstr ""
-+"reldeps で '==' "
-+"演算子を使用すると、未定義の動作が発生する可能性があります。これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' "
-+"演算子を使用してください。"
- 
--#: ../libdnf/conf/OptionPath.cpp:78
-+#: libdnf/repo/Repo.cpp:321
- #, c-format
--msgid "given path '%s' is not absolute."
--msgstr "指定されたパス '%s' は絶対パスではありません。"
-+msgid "Repository %s has no mirror or baseurl set."
-+msgstr "リポジトリー %s にはミラーまたは baseurl セットがありません。"
- 
--#: ../libdnf/conf/OptionPath.cpp:82
-+#: libdnf/repo/Repo.cpp:330
- #, c-format
--msgid "given path '%s' does not exist."
--msgstr "指定されたパス '%s' が存在しません。"
-+msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
-+msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。"
- 
--#: ../libdnf/conf/OptionBool.cpp:47
-+#: libdnf/repo/Repo.cpp:536
- #, c-format
--msgid "invalid boolean value '%s'"
--msgstr "無効な boolean 値 '%s'"
-+msgid "Cannot find a valid baseurl for repo: %s"
-+msgstr "repo に対して有効な baseurl を見つけられません: %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:62 ../libdnf/conf/OptionSeconds.cpp:40
--msgid "no value specified"
--msgstr "値が指定されていません"
-+#: libdnf/repo/Repo.cpp:573 libdnf/repo/Repo.cpp:1662
-+msgid ""
-+"Maximum download speed is lower than minimum. Please change configuration of"
-+" minrate or throttle"
-+msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください。"
- 
--#: ../libdnf/conf/ConfigMain.cpp:67 ../libdnf/conf/OptionSeconds.cpp:48
-+#: libdnf/repo/Repo.cpp:623 libdnf/repo/Repo.cpp:645
- #, c-format
--msgid "seconds value '%s' must not be negative"
--msgstr "2個目の値 '%s' は負の数にしないでください"
-+msgid "%s: gpgme_data_new_from_fd(): %s"
-+msgstr "%s: gpgme_data_new_from_fd(): %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:71
-+#: libdnf/repo/Repo.cpp:631 libdnf/repo/Repo.cpp:653
- #, c-format
--msgid "could not convert '%s' to bytes"
--msgstr "'%s' を バイトへ変換できませんでした"
-+msgid "%s: gpgme_op_import(): %s"
-+msgstr "%s: gpgme_op_import(): %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:83 ../libdnf/conf/OptionSeconds.cpp:66
-+#: libdnf/repo/Repo.cpp:676 libdnf/repo/Repo.cpp:742 libdnf/repo/Repo.cpp:870
- #, c-format
--msgid "unknown unit '%s'"
--msgstr "不明な単位 '%s'"
-+msgid "%s: gpgme_ctx_set_engine_info(): %s"
-+msgstr "%s: gpgme_ctx_set_engine_info(): %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:329
-+#: libdnf/repo/Repo.cpp:703 libdnf/repo/Repo.cpp:767
- #, c-format
--msgid "percentage '%s' is out of range"
--msgstr "パーセンテージ '%s' が範囲外にあります"
-+msgid "can not list keys: %s"
-+msgstr "キーを一覧表示できません: %s"
- 
--#: ../libdnf/conf/OptionNumber.cpp:73
-+#: libdnf/repo/Repo.cpp:796
- #, c-format
--msgid "given value [%d] should be less than allowed value [%d]."
--msgstr "指定された値 [%d] は許可された値 [%d]より小さくしてください"
-+msgid "Failed to retrieve GPG key for repo '%s': %s"
-+msgstr "repo '%s' のGPG鍵の回収に失敗しました : %s"
- 
--#: ../libdnf/conf/OptionNumber.cpp:76
-+#: libdnf/repo/Repo.cpp:849
- #, c-format
--msgid "given value [%d] should be greater than allowed value [%d]."
--msgstr "指定された値 [%d] は許可された値 [%d]より大きくしてください"
--
--#: ../libdnf/conf/OptionNumber.cpp:88 ../libdnf/conf/OptionEnum.cpp:83
--msgid "invalid value"
--msgstr "無効な値"
-+msgid "repo %s: 0x%s already imported"
-+msgstr "repo %s: 0x%s はインポート済みです"
- 
--#: ../libdnf/conf/OptionBinds.cpp:76
-+#: libdnf/repo/Repo.cpp:877
- #, c-format
--msgid "Configuration: OptionBinding with id \"%s\" does not exist"
--msgstr "設定: id \"%s\" を伴う OptionBinding は存在しません"
-+msgid "repo %s: imported key 0x%s."
-+msgstr "repo %s: インポート済みのキー 0x%s。"
- 
--#: ../libdnf/conf/OptionBinds.cpp:88
-+#: libdnf/repo/Repo.cpp:1121
- #, c-format
--msgid "Configuration: OptionBinding with id \"%s\" already exists"
--msgstr "設定: id \"%s\" を伴う OptionBinding はすでに存在します"
-+msgid "reviving: repo '%s' skipped, no metalink."
-+msgstr "復元中: repo '%s' はスキップされました、metalink はありません。"
- 
--#: ../libdnf/conf/OptionSeconds.cpp:52
-+#: libdnf/repo/Repo.cpp:1140
- #, c-format
--msgid "could not convert '%s' to seconds"
--msgstr "'%s' を 秒に変換できません"
-+msgid "reviving: repo '%s' skipped, no usable hash."
-+msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。"
- 
--#: ../libdnf/dnf-sack.cpp:417
-+#: libdnf/repo/Repo.cpp:1163
- #, c-format
--msgid "no %1$s string for %2$s"
--msgstr ""
--
--#: ../libdnf/dnf-sack.cpp:440
--msgid "failed to add solv"
--msgstr "solv の追加に失敗しました"
-+msgid "reviving: failed for '%s', mismatched %s sum."
-+msgstr "復元中: '%s' は失敗しました、%s の合計は一致しません。"
- 
--#: ../libdnf/dnf-sack.cpp:458
-+#: libdnf/repo/Repo.cpp:1169
- #, c-format
--msgid "failed to open: %s"
--msgstr "開くことに失敗しました: %s"
-+msgid "reviving: '%s' can be revived - metalink checksums match."
-+msgstr "復元中: '%s' は復元できます - metalink チェックサムが一致します。"
- 
--#: ../libdnf/dnf-sack.cpp:537
-+#: libdnf/repo/Repo.cpp:1194
- #, c-format
--msgid "cannot create temporary file: %s"
--msgstr "一時ファイルを作成できません: %s"
-+msgid "reviving: '%s' can be revived - repomd matches."
-+msgstr "復元中: '%s' は復元できます - repomd が一致します。"
- 
--#: ../libdnf/dnf-sack.cpp:547
-+#: libdnf/repo/Repo.cpp:1196
- #, c-format
--msgid "failed opening tmp file: %s"
--msgstr "tmp ファイルを開くことに失敗しました: %s"
-+msgid "reviving: failed for '%s', mismatched repomd."
-+msgstr "復元中:  '%s' に失敗しました、repomd が一致しません。"
- 
--#: ../libdnf/dnf-sack.cpp:559
-+#: libdnf/repo/Repo.cpp:1214
- #, c-format
--msgid "write_main() failed writing data: %i"
--msgstr "write_main() はデータの書き込みに失敗しました: %i"
--
--#: ../libdnf/dnf-sack.cpp:576
--msgid "write_main() failed to re-load written solv file"
--msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました"
-+msgid "Cannot create repo destination directory \"%s\": %s"
-+msgstr "repo 送信先ディレクトリ \"%s\" を作成できません : %s"
- 
--#: ../libdnf/dnf-sack.cpp:641
-+#: libdnf/repo/Repo.cpp:1220
- #, c-format
--msgid "can not create temporary file %s"
--msgstr "一時ファイル %s を作成できません"
-+msgid "Cannot create repo temporary directory \"%s\": %s"
-+msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s"
- 
--#: ../libdnf/dnf-sack.cpp:659
-+#: libdnf/repo/Repo.cpp:1234
- #, c-format
--msgid "write_ext(%1$d) has failed: %2$d"
--msgstr "write_ext(%1$d) は失敗しました: %2$d"
-+msgid "Cannot create directory \"%s\": %s"
-+msgstr "ディレクトリー \"%s\" を作成できません: %s"
- 
--#: ../libdnf/dnf-sack.cpp:714
--msgid "null repo md file"
--msgstr "null repo md ファイル"
-+#: libdnf/repo/Repo.cpp:1257
-+#, c-format
-+msgid "Cannot rename directory \"%s\" to \"%s\": %s"
-+msgstr "ディレクトリー名を \"%s\" から \"%s\" へと変更できません: %s"
- 
--#: ../libdnf/dnf-sack.cpp:723
-+#: libdnf/repo/Repo.cpp:1280
- #, c-format
--msgid "can not read file %1$s: %2$s"
--msgstr "ファイル %1$s を読み込みできません: %2$s"
-+msgid "repo: using cache for: %s"
-+msgstr "repo: キャッシュを使用: %s"
- 
--#: ../libdnf/dnf-sack.cpp:737
--msgid "repo_add_solv() has failed."
--msgstr "repo_add_solv() は失敗しました。"
-+#: libdnf/repo/Repo.cpp:1292
-+#, c-format
-+msgid "Cache-only enabled but no cache for '%s'"
-+msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません"
- 
--#: ../libdnf/dnf-sack.cpp:750
--msgid "loading of MD_TYPE_PRIMARY has failed."
--msgstr ""
-+#: libdnf/repo/Repo.cpp:1296
-+#, c-format
-+msgid "repo: downloading from remote: %s"
-+msgstr "repo: リモートからダウンロード中: %s"
- 
--#: ../libdnf/dnf-sack.cpp:763
--msgid "repo_add_repomdxml/rpmmd() has failed."
--msgstr "repo_add_repomdxml/rpmmd() は失敗しました。"
-+#: libdnf/repo/Repo.cpp:1302
-+#, c-format
-+msgid "Failed to download metadata for repo '%s': %s"
-+msgstr "repo '%s' のメタデータのダウンロードに失敗しました : %s"
- 
--#: ../libdnf/dnf-sack.cpp:830
--msgid "failed to auto-detect architecture"
--msgstr "アーキテクチャーの自動検出に失敗しました"
-+#: libdnf/repo/Repo.cpp:1328
-+msgid "getCachedir(): Computation of SHA256 failed"
-+msgstr "getCachedir(): SHA256 のコンピュテーションに失敗しました"
- 
--#: ../libdnf/dnf-sack.cpp:955
-+#: libdnf/repo/Repo.cpp:1353
- #, c-format
--msgid "failed creating cachedir %s"
--msgstr "cachedir %s の作成に失敗しました"
--
--#: ../libdnf/dnf-sack.cpp:1727
--msgid "failed calculating RPMDB checksum"
--msgstr "RPMDB チェックサムの計算に失敗しました"
-+msgid "Cannot create persistdir \"%s\": %s"
-+msgstr "persistdir \"%s\" を作成できません : %s"
- 
--#: ../libdnf/dnf-sack.cpp:1751
--msgid "failed loading RPMDB"
--msgstr "RPMDB のロードに失敗しました"
-+#: libdnf/repo/Repo.cpp:1753
-+msgid "resume cannot be used simultaneously with the byterangestart param"
-+msgstr "resume は byterangestart param と同時に使用できません"
- 
--#: ../libdnf/dnf-sack.cpp:2466
--msgid "No module defaults found"
--msgstr ""
-+#: libdnf/repo/Repo.cpp:1770
-+#, c-format
-+msgid "PackageTarget initialization failed: %s"
-+msgstr "PackageTarget の初期化に失敗しました: %s"
- 
--#: ../libdnf/transaction/Transformer.cpp:659
--msgid "Transformer: can't open history persist dir"
--msgstr "トランスフォーマー: 履歴の残った dir を開くことができません"
-+#: libdnf/repo/Repo.cpp:1887
-+#, c-format
-+msgid "Cannot open %s: %s"
-+msgstr "%s を開くことができません: %s"
- 
--#: ../libdnf/transaction/Transformer.cpp:672
--msgid "Couldn't find a history database"
--msgstr "履歴のデータベースを見つけることができませんでした"
-+#: libdnf/repo/Repo.cpp:1931
-+#, c-format
-+msgid "Log handler with id %ld doesn't exist"
-+msgstr "id %ld を伴うログハンドラーは存在しません"
- 
--#: ../libdnf/transaction/Swdb.cpp:107
-+#: libdnf/transaction/Swdb.cpp:173
- msgid "In progress"
- msgstr "進行中"
- 
--#: ../libdnf/transaction/Swdb.cpp:121 ../libdnf/transaction/Swdb.cpp:148
--#: ../libdnf/transaction/Swdb.cpp:160 ../libdnf/transaction/Swdb.cpp:177
--#: ../libdnf/transaction/Swdb.cpp:316 ../libdnf/transaction/Swdb.cpp:326
-+#: libdnf/transaction/Swdb.cpp:188 libdnf/transaction/Swdb.cpp:216
-+#: libdnf/transaction/Swdb.cpp:228 libdnf/transaction/Swdb.cpp:245
-+#: libdnf/transaction/Swdb.cpp:384 libdnf/transaction/Swdb.cpp:394
- msgid "Not in progress"
- msgstr "進行中ではありません"
- 
--#: ../libdnf/transaction/Swdb.cpp:187
-+#: libdnf/transaction/Swdb.cpp:255
- msgid "No transaction in progress"
- msgstr "進行中のトランザクションはありません"
- 
--#: ../libdnf/transaction/TransactionItem.cpp:147
-+#: libdnf/transaction/TransactionItem.cpp:147
- msgid "Attempt to insert transaction item into completed transaction"
- msgstr "完了したトランザクションにトランザクションアイテムの挿入を試みます"
- 
--#: ../libdnf/transaction/TransactionItem.cpp:218
-+#: libdnf/transaction/TransactionItem.cpp:218
- msgid "Attempt to update transaction item in completed transaction"
- msgstr "完了したトランザクションにトランザクションアイテムの更新を試みます"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:41
-+#: libdnf/transaction/Transformer.cpp:76
-+msgid "Database Corrupted: no row 'version' in table 'config'"
-+msgstr "データベースが破損しています: テーブル 'config' の行 'version' がありません。"
-+
-+#: libdnf/transaction/Transformer.cpp:681
-+msgid "Transformer: can't open history persist dir"
-+msgstr "トランスフォーマー: 履歴の残った dir を開くことができません"
-+
-+#: libdnf/transaction/Transformer.cpp:694
-+msgid "Couldn't find a history database"
-+msgstr "履歴のデータベースを見つけることができませんでした"
-+
-+#: libdnf/transaction/private/Transaction.cpp:41
- msgid "Transaction has already began!"
- msgstr "トランザクションが開始しました!"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:58
-+#: libdnf/transaction/private/Transaction.cpp:58
- #, c-format
- msgid "TransactionItem state is not set: %s"
- msgstr "TransactionItem の状態は設定されていません: %s"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:239
-+#: libdnf/transaction/private/Transaction.cpp:243
- msgid "Can't add console output to unsaved transaction"
- msgstr "未保存のトランザクションにコンソールの出力を追加できません"
-+
-+#~ msgid "Bad id for repo: %s, byte = %s %d"
-+#~ msgstr "repo に対する不正な id: %s, byte = %s %d"
-diff --git a/po/ko.po b/po/ko.po
-index 39e579ed..6520e0c2 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: 2020-03-19 13:58+0100\n"
-+"POT-Creation-Date: 2020-06-26 09:18-0400\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"
-@@ -18,904 +18,912 @@ msgstr ""
- "Plural-Forms: nplurals=1; plural=0\n"
- "X-Generator: Zanata 4.6.2\n"
- 
--#: ../libdnf/hy-iutil.cpp:322
--#, c-format
--msgid "Failed renaming %1$s to %2$s: %3$s"
--msgstr ""
-+#: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
-+msgid "no value specified"
-+msgstr "값이 지정되지 않았습니다"
- 
--#: ../libdnf/hy-iutil.cpp:330
-+#: libdnf/conf/ConfigMain.cpp:67 libdnf/conf/OptionSeconds.cpp:48
- #, c-format
--msgid "Failed setting perms on %1$s: %2$s"
--msgstr ""
-+msgid "seconds value '%s' must not be negative"
-+msgstr "초 값 '%s음수가 아니어야합니다"
- 
--#: ../libdnf/hy-iutil.cpp:376
-+#: libdnf/conf/ConfigMain.cpp:71
- #, c-format
--msgid "cannot create directory %1$s: %2$s"
--msgstr ""
-+msgid "could not convert '%s' to bytes"
-+msgstr "변환 할 수 없습니다 '%s'~ 바이트"
- 
--#: ../libdnf/hy-iutil.cpp:399 ../libdnf/dnf-utils.cpp:111
-+#: libdnf/conf/ConfigMain.cpp:83 libdnf/conf/OptionSeconds.cpp:66
- #, c-format
--msgid "cannot open directory %1$s: %2$s"
--msgstr "디렉토리를 열 수 없습니다. %1$s: %2$s"
-+msgid "unknown unit '%s'"
-+msgstr "알 수없는 단위 '%s'"
- 
--#: ../libdnf/hy-iutil.cpp:411
-+#: libdnf/conf/ConfigMain.cpp:329
- #, c-format
--msgid "cannot stat path %1$s: %2$s"
--msgstr ""
--
--#: ../libdnf/dnf-goal.cpp:68
--msgid "Could not depsolve transaction; "
--msgstr ""
-+msgid "percentage '%s' is out of range"
-+msgstr "백분율 '%s'범위를 벗어났습니다"
- 
--#: ../libdnf/dnf-goal.cpp:70
-+#: libdnf/conf/OptionBinds.cpp:76
- #, c-format
--msgid "%i problem detected:\n"
--msgid_plural "%i problems detected:\n"
--msgstr[0] ""
-+msgid "Configuration: OptionBinding with id \"%s\" does not exist"
-+msgstr "구성 : ID가 \"%s\" 존재하지 않는다"
- 
--#: ../libdnf/dnf-goal.cpp:78
-+#: libdnf/conf/OptionBinds.cpp:88
- #, c-format
--msgid " Problem %1$i: %2$s\n"
--msgstr ""
-+msgid "Configuration: OptionBinding with id \"%s\" already exists"
-+msgstr "구성 : ID가 \"%s\" 이미 존재 함"
- 
--#: ../libdnf/dnf-goal.cpp:80
-+#: libdnf/conf/OptionBool.cpp:47
- #, c-format
--msgid " Problem: %s\n"
--msgstr ""
--
--#: ../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:94
--msgid " does not belong to a distupgrade repository"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:68 ../libdnf/goal/Goal.cpp:95
--msgid " has inferior architecture"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:69
--msgid "problem with installed package "
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:70 ../libdnf/goal/Goal.cpp:97
--msgid "conflicting requests"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:71 ../libdnf/goal/Goal.cpp:98
--msgid "unsupported request"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:72 ../libdnf/goal/Goal.cpp:99
--msgid "nothing provides requested "
--msgstr ""
-+msgid "invalid boolean value '%s'"
-+msgstr "유효하지 않은 부울 값 '%s'"
- 
--#: ../libdnf/goal/Goal.cpp:73
-+#: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158
-+#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59
- #, c-format
--msgid "package %s does not exist"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:74 ../libdnf/goal/Goal.cpp:101
--msgid " is provided by the system"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:75 ../libdnf/goal/Goal.cpp:102
--msgid "some dependency problem"
--msgstr ""
-+msgid "'%s' is not an allowed value"
-+msgstr "'%s'은 (는) 허용 된 값이 아닙니다"
- 
--#: ../libdnf/goal/Goal.cpp:76
--msgid "cannot install the best update candidate for package "
--msgstr ""
-+#: libdnf/conf/OptionEnum.cpp:83 libdnf/conf/OptionNumber.cpp:88
-+msgid "invalid value"
-+msgstr "잘못된 값"
- 
--#: ../libdnf/goal/Goal.cpp:77 ../libdnf/goal/Goal.cpp:104
--msgid "cannot install the best candidate for the job"
--msgstr ""
-+#: libdnf/conf/OptionNumber.cpp:73
-+#, c-format
-+msgid "given value [%d] should be less than allowed value [%d]."
-+msgstr "주어진 값 [%d] 허용 된 값보다 작아야합니다 [%d]."
- 
--#: ../libdnf/goal/Goal.cpp:78
-+#: libdnf/conf/OptionNumber.cpp:76
- #, c-format
--msgid "package %s is filtered out by modular filtering"
--msgstr ""
-+msgid "given value [%d] should be greater than allowed value [%d]."
-+msgstr "주어진 값 [%d] 허용 된 값보다 커야합니다 [%d]."
- 
--#: ../libdnf/goal/Goal.cpp:79
-+#: libdnf/conf/OptionPath.cpp:78
- #, c-format
--msgid "package %s does not have a compatible architecture"
--msgstr ""
-+msgid "given path '%s' is not absolute."
-+msgstr "주어진 경로 '%s절대적이지 않다."
- 
--#: ../libdnf/goal/Goal.cpp:80
-+#: libdnf/conf/OptionPath.cpp:82
- #, c-format
--msgid "package %s is not installable"
--msgstr ""
-+msgid "given path '%s' does not exist."
-+msgstr "주어진 경로 '%s' 존재하지 않는다."
- 
--#: ../libdnf/goal/Goal.cpp:81
-+#: libdnf/conf/OptionSeconds.cpp:52
- #, c-format
--msgid "package %s is filtered out by exclude filtering"
--msgstr ""
-+msgid "could not convert '%s' to seconds"
-+msgstr "변환 할 수 없습니다 '%s'초까지"
-+
-+#: libdnf/conf/OptionString.cpp:74
-+msgid "GetValue(): Value not set"
-+msgstr "GetValue () : 값이 설정되지 않았습니다."
-+
-+#: libdnf/dnf-goal.cpp:68
-+msgid "Could not depsolve transaction; "
-+msgstr "트랜잭션을 해석 할 수 없습니다. "
- 
--#: ../libdnf/goal/Goal.cpp:82
-+#: libdnf/dnf-goal.cpp:70
- #, c-format
--msgid "nothing provides %s needed by %s"
--msgstr ""
-+msgid "%i problem detected:\n"
-+msgid_plural "%i problems detected:\n"
-+msgstr[0] "%i 발견 된 문제 :\n"
- 
--#: ../libdnf/goal/Goal.cpp:83
-+#: libdnf/dnf-goal.cpp:78
- #, c-format
--msgid "cannot install both %s and %s"
--msgstr ""
-+msgid " Problem %1$i: %2$s\n"
-+msgstr " 문제 %1$i: %2$s\n"
- 
--#: ../libdnf/goal/Goal.cpp:84
-+#: libdnf/dnf-goal.cpp:80
- #, c-format
--msgid "package %s conflicts with %s provided by %s"
--msgstr ""
-+msgid " Problem: %s\n"
-+msgstr " 문제: %s\n"
- 
--#: ../libdnf/goal/Goal.cpp:85
-+#: libdnf/dnf-rpmts.cpp:79
- #, c-format
--msgid "package %s obsoletes %s provided by %s"
--msgstr ""
-+msgid ""
-+"No available modular metadata for modular package '%s'; cannot be installed "
-+"on the system"
-+msgstr "모듈 패키지 '%s'에 사용 가능한 모듈식 메타 데이터가 없으므로 시스템에 설치할 수 없습니다"
- 
--#: ../libdnf/goal/Goal.cpp:86
-+#: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
- #, c-format
--msgid "installed package %s obsoletes %s provided by %s"
--msgstr ""
-+msgid "signature does not verify for %s"
-+msgstr "서명이 확인되지 않음 %s"
- 
--#: ../libdnf/goal/Goal.cpp:87
-+#: libdnf/dnf-rpmts.cpp:129 libdnf/dnf-rpmts.cpp:174
- #, c-format
--msgid "package %s implicitly obsoletes %s provided by %s"
--msgstr ""
-+msgid "failed to open(generic error): %s"
-+msgstr "열지 못했습니다 (일반 오류). %s"
- 
--#: ../libdnf/goal/Goal.cpp:88
-+#: libdnf/dnf-rpmts.cpp:142
- #, c-format
--msgid "package %s requires %s, but none of the providers can be installed"
--msgstr ""
-+msgid "failed to verify key for %s"
-+msgstr "키를 확인하지 못했습니다. %s"
- 
--#: ../libdnf/goal/Goal.cpp:89
-+#: libdnf/dnf-rpmts.cpp:150
- #, c-format
--msgid "package %s conflicts with %s provided by itself"
--msgstr ""
-+msgid "public key unavailable for %s"
-+msgstr "사용할 수 없는 공개 키 %s"
- 
--#: ../libdnf/goal/Goal.cpp:90
-+#: libdnf/dnf-rpmts.cpp:158
- #, c-format
--msgid "both package %s and %s obsolete %s"
--msgstr ""
-+msgid "signature not found for %s"
-+msgstr "서명이 없습니다. %s"
- 
--#: ../libdnf/goal/Goal.cpp:96
--msgid "problem with installed module "
--msgstr ""
-+#: libdnf/dnf-rpmts.cpp:193
-+#, c-format
-+msgid "failed to add install element: %1$s [%2$i]"
-+msgstr "설치 요소를 추가하지 못했습니다. %1$s [%2$i]"
- 
--#: ../libdnf/goal/Goal.cpp:100
-+#: libdnf/dnf-rpmts.cpp:274
- #, c-format
--msgid "module %s does not exist"
--msgstr ""
-+msgid "Error running transaction: %s"
-+msgstr "트랜잭션 실행 오류 : %s"
- 
--#: ../libdnf/goal/Goal.cpp:103
--msgid "cannot install the best update candidate for module "
--msgstr ""
-+#: libdnf/dnf-rpmts.cpp:283
-+msgid "Error running transaction and no problems were reported!"
-+msgstr "트랜잭션을 실행하는 중 오류가 발생했으며 아무런 문제도보고되지 않았습니다!"
- 
--#: ../libdnf/goal/Goal.cpp:105 ../libdnf/goal/Goal.cpp:108
--#, c-format
--msgid "module %s is disabled"
--msgstr ""
-+#: libdnf/dnf-rpmts.cpp:346
-+msgid "Fatal error, run database recovery"
-+msgstr "치명적인 오류, 데이터베이스 복구 실행"
- 
--#: ../libdnf/goal/Goal.cpp:106
-+#: libdnf/dnf-rpmts.cpp:355
- #, c-format
--msgid "module %s does not have a compatible architecture"
--msgstr ""
-+msgid "failed to find package %s"
-+msgstr "꾸러미를 찾지 못했습니다. %s"
- 
--#: ../libdnf/goal/Goal.cpp:107
-+#: libdnf/dnf-rpmts.cpp:401
- #, c-format
--msgid "module %s is not installable"
--msgstr ""
-+msgid "could not add erase element %1$s(%2$i)"
-+msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)"
- 
--#: ../libdnf/goal/Goal.cpp:109
-+#: libdnf/dnf-sack.cpp:381
- #, c-format
--msgid "nothing provides %s needed by module %s"
--msgstr ""
-+msgid "no %1$s string for %2$s"
-+msgstr "%2$s에 %1$s 문자열이 없습니다"
- 
--#: ../libdnf/goal/Goal.cpp:110
--#, c-format
--msgid "cannot install both modules %s and %s"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:404
-+msgid "failed to add solv"
-+msgstr "solv를 추가하지 못했습니다."
- 
--#: ../libdnf/goal/Goal.cpp:111
-+#: libdnf/dnf-sack.cpp:422
- #, c-format
--msgid "module %s conflicts with %s provided by %s"
--msgstr ""
-+msgid "failed to open: %s"
-+msgstr "열지 못했습니다 : %s"
- 
--#: ../libdnf/goal/Goal.cpp:112
-+#: libdnf/dnf-sack.cpp:501
- #, c-format
--msgid "module %s obsoletes %s provided by %s"
--msgstr ""
-+msgid "cannot create temporary file: %s"
-+msgstr "임시 파일을 만들 수 없습니다. %s"
- 
--#: ../libdnf/goal/Goal.cpp:113
-+#: libdnf/dnf-sack.cpp:511
- #, c-format
--msgid "installed module %s obsoletes %s provided by %s"
--msgstr ""
-+msgid "failed opening tmp file: %s"
-+msgstr "여는 tmp 파일을 열지 못했습니다. %s"
- 
--#: ../libdnf/goal/Goal.cpp:114
-+#: libdnf/dnf-sack.cpp:523
- #, c-format
--msgid "module %s implicitly obsoletes %s provided by %s"
--msgstr ""
-+msgid "write_main() failed writing data: %i"
-+msgstr "write_main() failed writing data: %i"
- 
--#: ../libdnf/goal/Goal.cpp:115
--#, c-format
--msgid "module %s requires %s, but none of the providers can be installed"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:540
-+msgid "write_main() failed to re-load written solv file"
-+msgstr "write_main ()이 작성된 solv 파일을 다시로드하지 못했습니다."
- 
--#: ../libdnf/goal/Goal.cpp:116
-+#: libdnf/dnf-sack.cpp:605
- #, c-format
--msgid "module %s conflicts with %s provided by itself"
--msgstr ""
-+msgid "can not create temporary file %s"
-+msgstr "임시 파일을 만들 수 없습니다. %s"
- 
--#: ../libdnf/goal/Goal.cpp:117
-+#: libdnf/dnf-sack.cpp:623
- #, c-format
--msgid "both module %s and %s obsolete %s"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:1008
--msgid "no solver set"
--msgstr ""
-+msgid "write_ext(%1$d) has failed: %2$d"
-+msgstr "write_ext(%1$d) has failed: %2$d"
- 
--#: ../libdnf/goal/Goal.cpp:1013
--#, c-format
--msgid "failed to make %s absolute"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:678
-+msgid "null repo md file"
-+msgstr "null repo md 파일"
- 
--#: ../libdnf/goal/Goal.cpp:1020
-+#: libdnf/dnf-sack.cpp:687
- #, c-format
--msgid "failed writing debugdata to %1$s: %2$s"
--msgstr ""
-+msgid "can not read file %1$s: %2$s"
-+msgstr "파일을 읽을 수 없습니다. %1$s: %2$s"
- 
--#: ../libdnf/goal/Goal.cpp:1032
--msgid "no solv in the goal"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:701
-+msgid "repo_add_solv() has failed."
-+msgstr "repo_add_solv()가 실패했습니다."
- 
--#: ../libdnf/goal/Goal.cpp:1034
--msgid "no solution, cannot remove protected package"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:714
-+msgid "loading of MD_TYPE_PRIMARY has failed."
-+msgstr "MD_TYPE_PRIMARY를 로드하지 못했습니다."
- 
--#: ../libdnf/goal/Goal.cpp:1037
--msgid "no solution possible"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:727
-+msgid "repo_add_repomdxml/rpmmd() has failed."
-+msgstr "repo_add_repomdxml/rpmmd() has failed."
- 
--#: ../libdnf/goal/Goal.cpp:1443
--msgid ""
--"The operation would result in removing the following protected packages: "
--msgstr ""
-+#: libdnf/dnf-sack.cpp:794
-+msgid "failed to auto-detect architecture"
-+msgstr "아키텍처 자동 검색에 실패했습니다."
- 
--#: ../libdnf/repo/Repo.cpp:337
-+#: libdnf/dnf-sack.cpp:919
- #, c-format
--msgid "Bad id for repo: %s, byte = %s %d"
--msgstr ""
-+msgid "failed creating cachedir %s"
-+msgstr "cachedir 생성 실패 %s"
-+
-+#: libdnf/dnf-sack.cpp:1696
-+msgid "failed loading RPMDB"
-+msgstr "RPMDB로드 실패"
- 
--#: ../libdnf/repo/Repo.cpp:362
-+#: libdnf/dnf-sack.cpp:2403
- #, c-format
--msgid "Repository %s has no mirror or baseurl set."
--msgstr ""
-+msgid "No module defaults found: %s"
-+msgstr "모듈 기본 설정을 찾을 수 없습니다. %s"
- 
--#: ../libdnf/repo/Repo.cpp:371
-+#: libdnf/dnf-state.cpp:1184
- #, c-format
--msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
--msgstr ""
-+msgid "percentage not 100: %i"
-+msgstr "백분율이 아닌 백분율 : %i"
- 
--#: ../libdnf/repo/Repo.cpp:580
-+#: libdnf/dnf-state.cpp:1194
- #, c-format
--msgid "Cannot find a valid baseurl for repo: %s"
--msgstr ""
-+msgid "failed to set number steps: %i"
-+msgstr "숫자 단계를 설정하지 못했습니다. %i"
- 
--#: ../libdnf/repo/Repo.cpp:616 ../libdnf/repo/Repo.cpp:1705
--msgid ""
--"Maximum download speed is lower than minimum. Please change configuration of"
--" minrate or throttle"
--msgstr ""
-+#: libdnf/dnf-state.cpp:1293
-+msgid "cancelled by user action"
-+msgstr "사용자 작업에 의해 취소됨"
- 
--#: ../libdnf/repo/Repo.cpp:666 ../libdnf/repo/Repo.cpp:688
-+#: libdnf/dnf-state.cpp:1332
- #, c-format
--msgid "%s: gpgme_data_new_from_fd(): %s"
--msgstr "%s: gpgme_data_new_from_fd(): %s"
-+msgid "done on a state %1$p that did not have a size set! [%2$s]"
-+msgstr "국가에서 행해진 %1$p 크기가 설정되지 않았습니다. [%2$s]"
- 
--#: ../libdnf/repo/Repo.cpp:674 ../libdnf/repo/Repo.cpp:696
-+#: libdnf/dnf-state.cpp:1357
- #, c-format
--msgid "%s: gpgme_op_import(): %s"
--msgstr "%s: gpgme_op_import(): %s"
-+msgid "already at 100%% state [%s]"
-+msgstr "이미 100 %% 상태 [%s]"
- 
--#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:785
--#: ../libdnf/repo/Repo.cpp:913
-+#: libdnf/dnf-transaction.cpp:300
- #, c-format
--msgid "%s: gpgme_ctx_set_engine_info(): %s"
--msgstr "%s: gpgme_ctx_set_engine_info(): %s"
-+msgid "Sources not set when trying to ensure package %s"
-+msgstr "패키지를 만들 때 소스가 설정되지 않았습니다. %s"
- 
--#: ../libdnf/repo/Repo.cpp:746 ../libdnf/repo/Repo.cpp:810
-+#: libdnf/dnf-transaction.cpp:326
- #, c-format
--msgid "can not list keys: %s"
--msgstr "열쇠를 나열 할 수 없습니다 : %s"
-+msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
-+msgstr "보장하지 못함 %1$s 레포로서 %2$s 찾을 수 없음 (%3$i repos loaded)"
- 
--#: ../libdnf/repo/Repo.cpp:839
--#, c-format
--msgid "Failed to retrieve GPG key for repo '%s': %s"
--msgstr ""
-+#: libdnf/dnf-transaction.cpp:367
-+msgid "Failed to check untrusted: "
-+msgstr "신뢰할 수 없는지 확인하지 못했습니다. "
- 
--#: ../libdnf/repo/Repo.cpp:892
-+#: libdnf/dnf-transaction.cpp:377
- #, c-format
--msgid "repo %s: 0x%s already imported"
--msgstr "레포 %s: 0x%s 이미 수입"
-+msgid "Downloaded file for %s not found"
-+msgstr "에 대한 다운로드 파일 %s 찾을 수 없음"
- 
--#: ../libdnf/repo/Repo.cpp:920
-+#: libdnf/dnf-transaction.cpp:397
- #, c-format
--msgid "repo %s: imported key 0x%s."
--msgstr "레포 %s: 가져온 키 0x%s."
-+msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
-+msgstr "꾸러미 %1$s 확인 및 복구 할 수 없습니다. %2$s GPG 사용 설정 됨 : %3$s"
- 
--#: ../libdnf/repo/Repo.cpp:1164
--#, c-format
--msgid "reviving: repo '%s' skipped, no metalink."
--msgstr "부활 : repo '%s'건너 뛰었습니다."
-+#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
-+msgid "Failed to get value for CacheDir"
-+msgstr "CacheDir에 대한 값을 가져 오는 데 실패했습니다."
- 
--#: ../libdnf/repo/Repo.cpp:1183
-+#: libdnf/dnf-transaction.cpp:911
- #, c-format
--msgid "reviving: repo '%s' skipped, no usable hash."
--msgstr "부활 : repo '%s'건너 뛰었습니다. 사용 가능한 해시가 없습니다."
-+msgid "Failed to get filesystem free size for %s: "
-+msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s: "
- 
--#: ../libdnf/repo/Repo.cpp:1206
-+#: libdnf/dnf-transaction.cpp:919
- #, c-format
--msgid "reviving: failed for '%s', mismatched %s sum."
--msgstr "되살리기 : 실패한 '%s', 불일치 %s 합집합."
-+msgid "Failed to get filesystem free size for %s"
-+msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s"
- 
--#: ../libdnf/repo/Repo.cpp:1212
-+#: libdnf/dnf-transaction.cpp:935
- #, c-format
--msgid "reviving: '%s' can be revived - metalink checksums match."
--msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - metalink 체크섬이 일치합니다."
-+msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
-+msgstr "여유 공간이 부족합니다. %1$s: 필요 %2$s, 이용 가능 %3$s"
- 
--#: ../libdnf/repo/Repo.cpp:1237
--#, c-format
--msgid "reviving: '%s' can be revived - repomd matches."
--msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - repomd가 일치합니다."
-+#: libdnf/dnf-transaction.cpp:1196
-+msgid "failed to set root"
-+msgstr "루트를 설정하지 못했습니다."
- 
--#: ../libdnf/repo/Repo.cpp:1239
-+#: libdnf/dnf-transaction.cpp:1418
- #, c-format
--msgid "reviving: failed for '%s', mismatched repomd."
--msgstr "되살리기 : 실패한 '%s', 일치하지 않는 repomd."
-+msgid "Error %i running transaction test"
-+msgstr "오류 %i 실행중인 트랜잭션 테스트"
- 
--#: ../libdnf/repo/Repo.cpp:1257
-+#: libdnf/dnf-transaction.cpp:1458
- #, c-format
--msgid "Cannot create repo destination directory \"%s\": %s"
--msgstr ""
-+msgid "Error %i running transaction"
-+msgstr "오류 %i 실행중인 거래"
- 
--#: ../libdnf/repo/Repo.cpp:1263
-+#: libdnf/dnf-transaction.cpp:1473
- #, c-format
--msgid "Cannot create repo temporary directory \"%s\": %s"
--msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s"
-+msgid "Transaction did not go to writing phase, but returned no error(%i)"
-+msgstr "트랜잭션이 쓰기 단계로 이동하지 않았지만 오류를 반환하지 않았습니다 (%i)"
- 
--#: ../libdnf/repo/Repo.cpp:1277
-+#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:399
- #, c-format
--msgid "Cannot create directory \"%s\": %s"
--msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s"
-+msgid "cannot open directory %1$s: %2$s"
-+msgstr "디렉토리를 열 수 없습니다. %1$s: %2$s"
- 
--#: ../libdnf/repo/Repo.cpp:1300
-+#: libdnf/dnf-utils.cpp:136
- #, c-format
--msgid "Cannot rename directory \"%s\" to \"%s\": %s"
--msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s"
-+msgid "failed to remove %s"
-+msgstr "제거하지 못했습니다. %s"
- 
--#: ../libdnf/repo/Repo.cpp:1323
--#, c-format
--msgid "repo: using cache for: %s"
--msgstr "repo : 캐시 사용 : %s"
-+#: libdnf/goal/Goal.cpp:55
-+msgid "Ill-formed Selector, presence of multiple match objects in the filter"
-+msgstr "잘못된 형식의 선택기, 필터에 일치하는 개체가 여러 개 있음"
- 
--#: ../libdnf/repo/Repo.cpp:1335
--#, c-format
--msgid "Cache-only enabled but no cache for '%s'"
--msgstr "캐시 만 사용 가능하지만 '%s'"
-+#: libdnf/goal/Goal.cpp:56
-+msgid "Ill-formed Selector used for the operation, incorrect comparison type"
-+msgstr "조작에 잘못 형성된 선택자, 잘못된 비교 유형"
- 
--#: ../libdnf/repo/Repo.cpp:1339
--#, c-format
--msgid "repo: downloading from remote: %s"
--msgstr "repo : 원격에서 다운로드 중 : %s"
-+#: libdnf/goal/Goal.cpp:67 libdnf/goal/Goal.cpp:94
-+msgid " does not belong to a distupgrade repository"
-+msgstr " distupgrade 리포지토리에 속하지 않습니다"
-+
-+#: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95
-+msgid " has inferior architecture"
-+msgstr " 열등한 아키텍처"
-+
-+#: libdnf/goal/Goal.cpp:69
-+msgid "problem with installed package "
-+msgstr "설치된 패키지 문제 "
-+
-+#: libdnf/goal/Goal.cpp:70 libdnf/goal/Goal.cpp:97
-+msgid "conflicting requests"
-+msgstr "충돌하는 요청"
-+
-+#: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98
-+msgid "unsupported request"
-+msgstr "지원되지 않는 요청"
- 
--#: ../libdnf/repo/Repo.cpp:1345
-+#: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99
-+msgid "nothing provides requested "
-+msgstr "요청이 없습니다 "
-+
-+#: libdnf/goal/Goal.cpp:73
- #, c-format
--msgid "Failed to download metadata for repo '%s': %s"
--msgstr ""
-+msgid "package %s does not exist"
-+msgstr "패키지 %s이/가 존재하지 않습니다"
- 
--#: ../libdnf/repo/Repo.cpp:1371
--msgid "getCachedir(): Computation of SHA256 failed"
--msgstr "getCachedir () : SHA256 계산에 실패했습니다."
-+#: libdnf/goal/Goal.cpp:74 libdnf/goal/Goal.cpp:101
-+msgid " is provided by the system"
-+msgstr " 시스템에서 제공"
-+
-+#: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102
-+msgid "some dependency problem"
-+msgstr "일부 의존성 문제"
-+
-+#: libdnf/goal/Goal.cpp:76
-+msgid "cannot install the best update candidate for package "
-+msgstr "패키지에 가장 적합한 업데이트 옵션을 설치할 수 없습니다 "
- 
--#: ../libdnf/repo/Repo.cpp:1396
-+#: libdnf/goal/Goal.cpp:77 libdnf/goal/Goal.cpp:104
-+msgid "cannot install the best candidate for the job"
-+msgstr "작업에 가장 적합한 옵션을 설치할 수 없습니다"
-+
-+#: libdnf/goal/Goal.cpp:78
- #, c-format
--msgid "Cannot create persistdir \"%s\": %s"
--msgstr ""
-+msgid "package %s is filtered out by modular filtering"
-+msgstr "패키지 %s이/가 모듈식 필터링으로 필터링됩니다"
- 
--#: ../libdnf/repo/Repo.cpp:1796
--msgid "resume cannot be used simultaneously with the byterangestart param"
--msgstr "이력서는 byterangestart 매개 변수와 동시에 사용할 수 없습니다."
-+#: libdnf/goal/Goal.cpp:79
-+#, c-format
-+msgid "package %s does not have a compatible architecture"
-+msgstr "패키지 %s에 호환되는 아키텍처가 없습니다"
- 
--#: ../libdnf/repo/Repo.cpp:1807
-+#: libdnf/goal/Goal.cpp:80
- #, c-format
--msgid "PackageTarget initialization failed: %s"
--msgstr "PackageTarget 초기화에 실패했습니다 : %s"
-+msgid "package %s is not installable"
-+msgstr "패키지 %s을/를 설치할 수 없습니다"
- 
--#: ../libdnf/repo/Repo.cpp:1924
-+#: libdnf/goal/Goal.cpp:81
- #, c-format
--msgid "Cannot open %s: %s"
--msgstr "열 수 없다 %s: %s"
-+msgid "package %s is filtered out by exclude filtering"
-+msgstr "패키지 %s이/가 필터링에서 제외되었습니다"
- 
--#: ../libdnf/repo/Repo.cpp:1968
-+#: libdnf/goal/Goal.cpp:82
- #, c-format
--msgid "Log handler with id %ld doesn't exist"
--msgstr "ID가있는 로그 처리기 %ld 존재하지 않는다."
-+msgid "nothing provides %s needed by %s"
-+msgstr "%s에 필요한 %s이/가 제공되지 않았습니다"
- 
--#: ../libdnf/dnf-transaction.cpp:300
-+#: libdnf/goal/Goal.cpp:83
- #, c-format
--msgid "Sources not set when trying to ensure package %s"
--msgstr "패키지를 만들 때 소스가 설정되지 않았습니다. %s"
-+msgid "cannot install both %s and %s"
-+msgstr "%s 및 %s 모두 설치할 수 없습니다"
- 
--#: ../libdnf/dnf-transaction.cpp:326
-+#: libdnf/goal/Goal.cpp:84
- #, c-format
--msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
--msgstr "보장하지 못함 %1$s 레포로서 %2$s 찾을 수 없음 (%3$i repos loaded)"
-+msgid "package %s conflicts with %s provided by %s"
-+msgstr "패키지 %s이/가 %s와 충돌합니다 (%s에 의해 제공)"
- 
--#: ../libdnf/dnf-transaction.cpp:367
--msgid "Failed to check untrusted: "
--msgstr "신뢰할 수 없는지 확인하지 못했습니다. "
-+#: libdnf/goal/Goal.cpp:85
-+#, c-format
-+msgid "package %s obsoletes %s provided by %s"
-+msgstr "패키지 %s이/가 %s에서 폐지되었습니다 (%s에 의해 제공)"
- 
--#: ../libdnf/dnf-transaction.cpp:377
-+#: libdnf/goal/Goal.cpp:86
- #, c-format
--msgid "Downloaded file for %s not found"
--msgstr "에 대한 다운로드 파일 %s 찾을 수 없음"
-+msgid "installed package %s obsoletes %s provided by %s"
-+msgstr "설치된 패키지 %s이/가 %s에서 폐지되었습니다 (%s에 의해 제공)"
- 
--#: ../libdnf/dnf-transaction.cpp:397
-+#: libdnf/goal/Goal.cpp:87
- #, c-format
--msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
--msgstr "꾸러미 %1$s 확인 및 복구 할 수 없습니다. %2$s GPG 사용 설정 됨 : %3$s"
-+msgid "package %s implicitly obsoletes %s provided by %s"
-+msgstr "패키지 %s이/가 %s 에서 암시적으로 폐지되었습니다 (%s에 의해 제공)"
- 
--#: ../libdnf/dnf-transaction.cpp:831 ../libdnf/dnf-transaction.cpp:903
--msgid "Failed to get value for CacheDir"
--msgstr "CacheDir에 대한 값을 가져 오는 데 실패했습니다."
-+#: libdnf/goal/Goal.cpp:88
-+#, c-format
-+msgid "package %s requires %s, but none of the providers can be installed"
-+msgstr "패키지 %s에 %s이/가 필요하지만 공급 업체가 설치할 수 없습니다"
- 
--#: ../libdnf/dnf-transaction.cpp:911
-+#: libdnf/goal/Goal.cpp:89
- #, c-format
--msgid "Failed to get filesystem free size for %s: "
--msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s: "
-+msgid "package %s conflicts with %s provided by itself"
-+msgstr "패키지 %s이/가 %s와 충돌합니다 (자체적으로 제공)"
- 
--#: ../libdnf/dnf-transaction.cpp:919
-+#: libdnf/goal/Goal.cpp:90
- #, c-format
--msgid "Failed to get filesystem free size for %s"
--msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s"
-+msgid "both package %s and %s obsolete %s"
-+msgstr "패키지 %s 및 %s 모두 %s에서 폐지되었습니다"
-+
-+#: libdnf/goal/Goal.cpp:96
-+msgid "problem with installed module "
-+msgstr "설치된 모듈 문제 "
- 
--#: ../libdnf/dnf-transaction.cpp:935
-+#: libdnf/goal/Goal.cpp:100
- #, c-format
--msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
--msgstr "여유 공간이 부족합니다. %1$s: 필요 %2$s, 이용 가능 %3$s"
-+msgid "module %s does not exist"
-+msgstr "모듈 %s이/가 존재하지 않습니다"
- 
--#: ../libdnf/dnf-transaction.cpp:1196
--msgid "failed to set root"
--msgstr "루트를 설정하지 못했습니다."
-+#: libdnf/goal/Goal.cpp:103
-+msgid "cannot install the best update candidate for module "
-+msgstr "모듈에 가장 적합한 업데이트 옵션을 설치할 수 없습니다 "
- 
--#: ../libdnf/dnf-transaction.cpp:1418
-+#: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108
- #, c-format
--msgid "Error %i running transaction test"
--msgstr "오류 %i 실행중인 트랜잭션 테스트"
-+msgid "module %s is disabled"
-+msgstr "모듈 %s을/를 사용할 수 없습니다"
- 
--#: ../libdnf/dnf-transaction.cpp:1458
-+#: libdnf/goal/Goal.cpp:106
- #, c-format
--msgid "Error %i running transaction"
--msgstr "오류 %i 실행중인 거래"
-+msgid "module %s does not have a compatible architecture"
-+msgstr "모듈 %s에 호환되는 아키텍처가 없습니다"
- 
--#: ../libdnf/dnf-transaction.cpp:1473
-+#: libdnf/goal/Goal.cpp:107
- #, c-format
--msgid "Transaction did not go to writing phase, but returned no error(%i)"
--msgstr "트랜잭션이 쓰기 단계로 이동하지 않았지만 오류를 반환하지 않았습니다 (%i)"
-+msgid "module %s is not installable"
-+msgstr "모듈 %s을/를 설치할 수 없습니다"
- 
--#: ../libdnf/dnf-utils.cpp:136
-+#: libdnf/goal/Goal.cpp:109
- #, c-format
--msgid "failed to remove %s"
--msgstr "제거하지 못했습니다. %s"
-+msgid "nothing provides %s needed by module %s"
-+msgstr "%s이/가 제공되지 않았습니다 (모듈 %s에 필요)"
- 
--#: ../libdnf/plugin/plugin.cpp:46
-+#: libdnf/goal/Goal.cpp:110
- #, c-format
--msgid "Can't load shared library \"%s\": %s"
--msgstr ""
-+msgid "cannot install both modules %s and %s"
-+msgstr "%s 및 %s 모듈을 모두 설치할 수 없습니다"
- 
--#: ../libdnf/plugin/plugin.cpp:61 ../libdnf/plugin/plugin.cpp:67
--#: ../libdnf/plugin/plugin.cpp:73 ../libdnf/plugin/plugin.cpp:79
-+#: libdnf/goal/Goal.cpp:111
- #, c-format
--msgid "Can't obtain address of symbol \"%s\": %s"
--msgstr ""
-+msgid "module %s conflicts with %s provided by %s"
-+msgstr "모듈 %s이/가 %s와 충돌합니다 (%s에 의해 제공)"
- 
--#: ../libdnf/plugin/plugin.cpp:86
-+#: libdnf/goal/Goal.cpp:112
- #, c-format
--msgid "Loading plugin file=\"%s\""
--msgstr ""
-+msgid "module %s obsoletes %s provided by %s"
-+msgstr "모듈 %s이/가 %s에서 폐지되었습니다 (%s에 의해 제공)"
- 
--#: ../libdnf/plugin/plugin.cpp:89
-+#: libdnf/goal/Goal.cpp:113
- #, c-format
--msgid "Loaded plugin name=\"%s\", version=\"%s\""
--msgstr ""
--
--#: ../libdnf/plugin/plugin.cpp:96
--msgid "Plugins::loadPlugins() dirPath cannot be empty"
--msgstr ""
-+msgid "installed module %s obsoletes %s provided by %s"
-+msgstr "설치된 모듈 %s이/가 %s에서 폐지되었습니다 (%s에 의해 제공)"
- 
--#: ../libdnf/plugin/plugin.cpp:105
-+#: libdnf/goal/Goal.cpp:114
- #, c-format
--msgid "Can't read plugin directory \"%s\": %s"
--msgstr ""
-+msgid "module %s implicitly obsoletes %s provided by %s"
-+msgstr "모듈 %s이/가 %s 에서 암시적으로 폐지되었습니다 (%s에 의해 제공)"
- 
--#: ../libdnf/plugin/plugin.cpp:114
-+#: libdnf/goal/Goal.cpp:115
- #, c-format
--msgid "Can't load plugin \"%s\": %s"
--msgstr ""
-+msgid "module %s requires %s, but none of the providers can be installed"
-+msgstr "모듈 %s에 %s이/가 필요하지만 공급 업체가 설치할 수 없습니다"
- 
--#: ../libdnf/dnf-state.cpp:1184
-+#: libdnf/goal/Goal.cpp:116
- #, c-format
--msgid "percentage not 100: %i"
--msgstr "백분율이 아닌 백분율 : %i"
-+msgid "module %s conflicts with %s provided by itself"
-+msgstr "모듈 %s이/가 %s와 충돌합니다 (자체적으로 제공)"
- 
--#: ../libdnf/dnf-state.cpp:1194
-+#: libdnf/goal/Goal.cpp:117
- #, c-format
--msgid "failed to set number steps: %i"
--msgstr "숫자 단계를 설정하지 못했습니다. %i"
-+msgid "both module %s and %s obsolete %s"
-+msgstr "모듈 %s및 %s이/가 %s에서 폐지되었습니다"
- 
--#: ../libdnf/dnf-state.cpp:1293
--msgid "cancelled by user action"
--msgstr "사용자 작업에 의해 취소됨"
-+#: libdnf/goal/Goal.cpp:1032
-+msgid "no solver set"
-+msgstr "solver 설정 없음"
- 
--#: ../libdnf/dnf-state.cpp:1332
-+#: libdnf/goal/Goal.cpp:1037
- #, c-format
--msgid "done on a state %1$p that did not have a size set! [%2$s]"
--msgstr "국가에서 행해진 %1$p 크기가 설정되지 않았습니다. [%2$s]"
-+msgid "failed to make %s absolute"
-+msgstr "실패한 %s 순수한"
- 
--#: ../libdnf/dnf-state.cpp:1357
-+#: libdnf/goal/Goal.cpp:1044
- #, c-format
--msgid "already at 100%% state [%s]"
--msgstr "이미 100 %% 상태 [%s]"
-+msgid "failed writing debugdata to %1$s: %2$s"
-+msgstr "디버그 데이터를 쓰지 못했습니다. %1$s: %2$s"
-+
-+#: libdnf/goal/Goal.cpp:1056
-+msgid "no solv in the goal"
-+msgstr "목표에 솔로가 없다."
-+
-+#: libdnf/goal/Goal.cpp:1058
-+msgid "no solution, cannot remove protected package"
-+msgstr "해결책 없음, 보호 된 패키지를 제거 할 수 없음"
-+
-+#: libdnf/goal/Goal.cpp:1061
-+msgid "no solution possible"
-+msgstr "해결책 없음"
-+
-+#: libdnf/goal/Goal.cpp:1473
-+msgid ""
-+"The operation would result in removing the following protected packages: "
-+msgstr "이 작업으로 인해 다음과 같은 보호 패키지가 제거됩니다. "
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:43
-+#: libdnf/hy-iutil.cpp:322
- #, c-format
--msgid "Failed to update from string: %s"
--msgstr ""
-+msgid "Failed renaming %1$s to %2$s: %3$s"
-+msgstr "이름 바꾸기 실패 %1$s 에 %2$s: %3$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:68
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:70
-+#: libdnf/hy-iutil.cpp:330
- #, c-format
--msgid "Failed to resolve: %s"
--msgstr ""
-+msgid "Failed setting perms on %1$s: %2$s"
-+msgstr "perms 설정 실패 %1$s: %2$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:74
-+#: libdnf/hy-iutil.cpp:376
- #, c-format
--msgid "Failed to upgrade defaults: %s"
--msgstr ""
-+msgid "cannot create directory %1$s: %2$s"
-+msgstr "%1$s디렉토리를 만들 수 없습니다: %2$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:77
-+#: libdnf/hy-iutil.cpp:411
- #, c-format
--msgid "Failed to upgrade streams: %s"
--msgstr ""
-+msgid "cannot stat path %1$s: %2$s"
-+msgstr "%1$s 경로를 stat 할 수 없습니다: %2$s"
- 
--#: ../libdnf/module/ModulePackage.cpp:463
-+#: libdnf/module/ModulePackage.cpp:463
- #, c-format
- msgid "Invalid format of Platform module: %s"
--msgstr ""
-+msgstr "유효하지 않은 형식의 플랫폼 모듈: %s"
- 
--#: ../libdnf/module/ModulePackage.cpp:478
-+#: libdnf/module/ModulePackage.cpp:478
- msgid "Multiple module platforms provided by available packages\n"
--msgstr ""
-+msgstr "사용 가능한 패키지로 제공되는 다중 모듈 플랫폼\n"
- 
--#: ../libdnf/module/ModulePackage.cpp:491
-+#: libdnf/module/ModulePackage.cpp:491
- msgid "Multiple module platforms provided by installed packages\n"
--msgstr ""
-+msgstr "설치된 패키지로 제공되는 다중 모듈 플랫폼\n"
- 
--#: ../libdnf/module/ModulePackage.cpp:518
-+#: libdnf/module/ModulePackage.cpp:518
- #, c-format
- msgid "Detection of Platform Module in %s failed: %s"
--msgstr ""
-+msgstr "%s에서 플랫폼 모듈을 감지하지 못했습니다: %s"
- 
--#: ../libdnf/module/ModulePackage.cpp:527
-+#: libdnf/module/ModulePackage.cpp:527
- #, c-format
- msgid "Missing PLATFORM_ID in %s"
--msgstr ""
-+msgstr "PLATFORM_ID가 %s에 누락되어 있습니다"
- 
--#: ../libdnf/module/ModulePackage.cpp:532
-+#: libdnf/module/ModulePackage.cpp:532
- msgid "No valid Platform ID detected"
--msgstr ""
-+msgstr "유효한 플랫폼 ID가 없습니다"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:68
-+#: libdnf/module/ModulePackageContainer.cpp:68
- #, c-format
- msgid "Cannot enable multiple streams for module '%s'"
--msgstr ""
-+msgstr "모듈 '%s’에 여러 스트림을 활성화할 수 없습니다"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:294
-+#: libdnf/module/ModulePackageContainer.cpp:294
- #, c-format
- msgid "Conflicting defaults with repo '%s': %s"
--msgstr ""
-+msgstr "repo '%s'와 기본 설정이 충돌합니다: %s"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1568
-+#: libdnf/module/ModulePackageContainer.cpp:1569
- #, c-format
- msgid "Unable to load modular Fail-Safe data at '%s'"
--msgstr ""
-+msgstr "'%s'에서 모듈식 Fail-Safe 데이터를 로드할 수 없습니다"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1574
-+#: libdnf/module/ModulePackageContainer.cpp:1575
- #, c-format
- msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
--msgstr ""
-+msgstr "모듈 '%s:%s'에 대해 모듈식 Fail-Safe 데이터를 로드할 수 없습니다"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1638
-+#: libdnf/module/ModulePackageContainer.cpp:1639
- #, c-format
- msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
--msgstr ""
-+msgstr "모듈식 Fail-Safe 데이터에 대한 “%s\" 디렉토리를 만들 수 없습니다: %s"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1660
-+#: libdnf/module/ModulePackageContainer.cpp:1661
- #, c-format
- msgid "Unable to save a modular Fail Safe data to '%s'"
--msgstr ""
-+msgstr "모듈식 Fail Safe 데이터를 '%s'에 저장할 수 없습니다"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1685
-+#: libdnf/module/ModulePackageContainer.cpp:1686
- #, c-format
- msgid "Unable to remove a modular Fail Safe data in '%s'"
--msgstr ""
-+msgstr "'%s'에서 모듈식 Fail Safe 데이터를 제거할 수 없습니다"
- 
--#: ../libdnf/dnf-rpmts.cpp:79
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:44
- #, c-format
--msgid ""
--"No available modular metadata for modular package '%s'; cannot be installed "
--"on the system"
--msgstr ""
-+msgid "Failed to update from string: %s"
-+msgstr "문자열에서 업데이트하지 못했습니다: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:121 ../libdnf/dnf-rpmts.cpp:166
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:68
- #, c-format
--msgid "signature does not verify for %s"
--msgstr "서명이 확인하지 않음 %s"
-+msgid "Failed to resolve: %s"
-+msgstr "분석하지 못했습니다: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:129 ../libdnf/dnf-rpmts.cpp:174
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:73
- #, c-format
--msgid "failed to open(generic error): %s"
--msgstr "열지 못했습니다 (일반 오류). %s"
-+msgid "There were errors while resolving modular defaults: %s"
-+msgstr "모듈식 기본값을 분석하는 동안 오류가 발생했습니다: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:142
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:78
- #, c-format
--msgid "failed to verify key for %s"
--msgstr "에 대한 키를 확인하지 못했습니다. %s"
-+msgid "Failed to upgrade defaults: %s"
-+msgstr "기본값을 업그레이드하지 못했습니다: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:150
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:81
- #, c-format
--msgid "public key unavailable for %s"
--msgstr "사용할 수없는 공개 키 %s"
-+msgid "Failed to upgrade streams: %s"
-+msgstr "스트림을 업그레이드하지 못했습니다: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:158
-+#: libdnf/plugin/plugin.cpp:46
- #, c-format
--msgid "signature not found for %s"
--msgstr "서명이 없습니다. %s"
-+msgid "Can't load shared library \"%s\": %s"
-+msgstr "공유 라이브러리 \"%s\"을/를 로드할 수 없습니다: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:193
-+#: libdnf/plugin/plugin.cpp:61 libdnf/plugin/plugin.cpp:67
-+#: libdnf/plugin/plugin.cpp:73 libdnf/plugin/plugin.cpp:79
- #, c-format
--msgid "failed to add install element: %1$s [%2$i]"
--msgstr "설치 요소를 추가하지 못했습니다. %1$s [%2$i]"
-+msgid "Can't obtain address of symbol \"%s\": %s"
-+msgstr "기호 \"%s\"의 주소를 가져올 수 없습니다: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:274
-+#: libdnf/plugin/plugin.cpp:86
- #, c-format
--msgid "Error running transaction: %s"
--msgstr "트랜잭션 실행 오류 : %s"
--
--#: ../libdnf/dnf-rpmts.cpp:283
--msgid "Error running transaction and no problems were reported!"
--msgstr "트랜잭션을 실행하는 중 오류가 발생했으며 아무런 문제도보고되지 않았습니다!"
--
--#: ../libdnf/dnf-rpmts.cpp:346
--msgid "Fatal error, run database recovery"
--msgstr "치명적인 오류, 데이터베이스 복구 실행"
-+msgid "Loading plugin file=\"%s\""
-+msgstr "플러그인 파일 로드 중=\"%s\""
- 
--#: ../libdnf/dnf-rpmts.cpp:355
-+#: libdnf/plugin/plugin.cpp:89
- #, c-format
--msgid "failed to find package %s"
--msgstr "꾸러미를 찾지 못했습니다. %s"
-+msgid "Loaded plugin name=\"%s\", version=\"%s\""
-+msgstr "로드된 플러그인 이름=\"%s\", 버전=\"%s\""
-+
-+#: libdnf/plugin/plugin.cpp:96
-+msgid "Plugins::loadPlugins() dirPath cannot be empty"
-+msgstr "Plugins::loadPlugins() dirPath는 비워둘 수 없습니다"
- 
--#: ../libdnf/dnf-rpmts.cpp:401
-+#: libdnf/plugin/plugin.cpp:105
- #, c-format
--msgid "could not add erase element %1$s(%2$i)"
--msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)"
-+msgid "Can't read plugin directory \"%s\": %s"
-+msgstr "플러그인 디렉토리 \"%s\"을/를 읽을 수 없습니다: %s"
- 
--#: ../libdnf/conf/OptionString.cpp:59 ../libdnf/conf/OptionStringList.cpp:59
--#: ../libdnf/conf/OptionEnum.cpp:72 ../libdnf/conf/OptionEnum.cpp:158
-+#: libdnf/plugin/plugin.cpp:114
- #, c-format
--msgid "'%s' is not an allowed value"
--msgstr "'%s'은 (는) 허용 된 값이 아닙니다."
-+msgid "Can't load plugin \"%s\": %s"
-+msgstr "플러그인 \"%s\"을/를 로드할 수 없습니다: %s"
- 
--#: ../libdnf/conf/OptionString.cpp:74
--msgid "GetValue(): Value not set"
--msgstr "GetValue () : 값이 설정되지 않았습니다."
-+#: libdnf/repo/DependencySplitter.cpp:50
-+msgid ""
-+"Using '==' operator in reldeps can result in an undefined behavior. It is "
-+"deprecated and the support will be dropped in future versions. Use '=' "
-+"operator instead."
-+msgstr ""
-+"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 연산자는 더 이상 사용되지 않으며 향후 버전에서는"
-+" 지원이 중단됩니다. 대신 '=' 연산자를 사용하십시오."
- 
--#: ../libdnf/conf/OptionPath.cpp:78
-+#: libdnf/repo/Repo.cpp:321
- #, c-format
--msgid "given path '%s' is not absolute."
--msgstr "주어진 경로 '%s절대적이지 않다."
-+msgid "Repository %s has no mirror or baseurl set."
-+msgstr "저장소 %s 거울이나 기둥이 없습니다."
- 
--#: ../libdnf/conf/OptionPath.cpp:82
-+#: libdnf/repo/Repo.cpp:330
- #, c-format
--msgid "given path '%s' does not exist."
--msgstr "주어진 경로 '%s' 존재하지 않는다."
-+msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
-+msgstr "저장소 '%s'에 지원되지 않는 유형이 있습니다 :'type =%s', 건너 뛰기."
- 
--#: ../libdnf/conf/OptionBool.cpp:47
-+#: libdnf/repo/Repo.cpp:536
- #, c-format
--msgid "invalid boolean value '%s'"
--msgstr "유효하지 않은 부울 값 '%s'"
-+msgid "Cannot find a valid baseurl for repo: %s"
-+msgstr "repo에 유효한 baseurl을 찾을 수 없습니다. %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:62 ../libdnf/conf/OptionSeconds.cpp:40
--msgid "no value specified"
--msgstr "값이 지정되지 않았습니다."
-+#: libdnf/repo/Repo.cpp:573 libdnf/repo/Repo.cpp:1662
-+msgid ""
-+"Maximum download speed is lower than minimum. Please change configuration of"
-+" minrate or throttle"
-+msgstr "최대 다운로드 속도가 최소값보다 낮습니다. 최소 속도 또는 스로틀의 구성을 변경하십시오."
- 
--#: ../libdnf/conf/ConfigMain.cpp:67 ../libdnf/conf/OptionSeconds.cpp:48
-+#: libdnf/repo/Repo.cpp:623 libdnf/repo/Repo.cpp:645
- #, c-format
--msgid "seconds value '%s' must not be negative"
--msgstr "초 값 '%s음수가 아니어야합니다."
-+msgid "%s: gpgme_data_new_from_fd(): %s"
-+msgstr "%s: gpgme_data_new_from_fd(): %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:71
-+#: libdnf/repo/Repo.cpp:631 libdnf/repo/Repo.cpp:653
- #, c-format
--msgid "could not convert '%s' to bytes"
--msgstr "변환 할 수 없습니다 '%s'~ 바이트"
-+msgid "%s: gpgme_op_import(): %s"
-+msgstr "%s: gpgme_op_import(): %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:83 ../libdnf/conf/OptionSeconds.cpp:66
-+#: libdnf/repo/Repo.cpp:676 libdnf/repo/Repo.cpp:742 libdnf/repo/Repo.cpp:870
- #, c-format
--msgid "unknown unit '%s'"
--msgstr "알 수없는 단위 '%s'"
-+msgid "%s: gpgme_ctx_set_engine_info(): %s"
-+msgstr "%s: gpgme_ctx_set_engine_info(): %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:329
-+#: libdnf/repo/Repo.cpp:703 libdnf/repo/Repo.cpp:767
- #, c-format
--msgid "percentage '%s' is out of range"
--msgstr "백분율 '%s'범위를 벗어났습니다."
-+msgid "can not list keys: %s"
-+msgstr "열쇠를 나열 할 수 없습니다 : %s"
- 
--#: ../libdnf/conf/OptionNumber.cpp:73
-+#: libdnf/repo/Repo.cpp:796
- #, c-format
--msgid "given value [%d] should be less than allowed value [%d]."
--msgstr "주어진 값 [%d] 허용 된 값보다 작아야합니다 [%d]."
-+msgid "Failed to retrieve GPG key for repo '%s': %s"
-+msgstr "repo '%s'에 대한 GPG 키를 검색하지 못했습니다: %s"
- 
--#: ../libdnf/conf/OptionNumber.cpp:76
-+#: libdnf/repo/Repo.cpp:849
- #, c-format
--msgid "given value [%d] should be greater than allowed value [%d]."
--msgstr "주어진 값 [%d] 허용 된 값보다 커야합니다 [%d]."
--
--#: ../libdnf/conf/OptionNumber.cpp:88 ../libdnf/conf/OptionEnum.cpp:83
--msgid "invalid value"
--msgstr "잘못된 값"
-+msgid "repo %s: 0x%s already imported"
-+msgstr "레포 %s: 0x%s 이미 수입"
- 
--#: ../libdnf/conf/OptionBinds.cpp:76
-+#: libdnf/repo/Repo.cpp:877
- #, c-format
--msgid "Configuration: OptionBinding with id \"%s\" does not exist"
--msgstr "구성 : ID가 \"%s\" 존재하지 않는다"
-+msgid "repo %s: imported key 0x%s."
-+msgstr "레포 %s: 가져온 키 0x%s."
- 
--#: ../libdnf/conf/OptionBinds.cpp:88
-+#: libdnf/repo/Repo.cpp:1121
- #, c-format
--msgid "Configuration: OptionBinding with id \"%s\" already exists"
--msgstr "구성 : ID가 \"%s\" 이미 존재 함"
-+msgid "reviving: repo '%s' skipped, no metalink."
-+msgstr "부활 : repo '%s'건너 뛰었습니다."
- 
--#: ../libdnf/conf/OptionSeconds.cpp:52
-+#: libdnf/repo/Repo.cpp:1140
- #, c-format
--msgid "could not convert '%s' to seconds"
--msgstr "변환 할 수 없습니다 '%s'초까지"
-+msgid "reviving: repo '%s' skipped, no usable hash."
-+msgstr "부활 : repo '%s'건너 뛰었습니다. 사용 가능한 해시가 없습니다."
- 
--#: ../libdnf/dnf-sack.cpp:417
-+#: libdnf/repo/Repo.cpp:1163
- #, c-format
--msgid "no %1$s string for %2$s"
--msgstr ""
--
--#: ../libdnf/dnf-sack.cpp:440
--msgid "failed to add solv"
--msgstr "solv를 추가하지 못했습니다."
-+msgid "reviving: failed for '%s', mismatched %s sum."
-+msgstr "되살리기 : 실패한 '%s', 불일치 %s 합집합."
- 
--#: ../libdnf/dnf-sack.cpp:458
-+#: libdnf/repo/Repo.cpp:1169
- #, c-format
--msgid "failed to open: %s"
--msgstr "열지 못했습니다 : %s"
-+msgid "reviving: '%s' can be revived - metalink checksums match."
-+msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - metalink 체크섬이 일치합니다."
- 
--#: ../libdnf/dnf-sack.cpp:537
-+#: libdnf/repo/Repo.cpp:1194
- #, c-format
--msgid "cannot create temporary file: %s"
--msgstr "임시 파일을 만들 수 없습니다. %s"
-+msgid "reviving: '%s' can be revived - repomd matches."
-+msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - repomd가 일치합니다."
- 
--#: ../libdnf/dnf-sack.cpp:547
-+#: libdnf/repo/Repo.cpp:1196
- #, c-format
--msgid "failed opening tmp file: %s"
--msgstr "여는 tmp 파일을 열지 못했습니다. %s"
-+msgid "reviving: failed for '%s', mismatched repomd."
-+msgstr "되살리기 : 실패한 '%s', 일치하지 않는 repomd."
- 
--#: ../libdnf/dnf-sack.cpp:559
-+#: libdnf/repo/Repo.cpp:1214
- #, c-format
--msgid "write_main() failed writing data: %i"
--msgstr "write_main() failed writing data: %i"
--
--#: ../libdnf/dnf-sack.cpp:576
--msgid "write_main() failed to re-load written solv file"
--msgstr "write_main ()이 작성된 solv 파일을 다시로드하지 못했습니다."
-+msgid "Cannot create repo destination directory \"%s\": %s"
-+msgstr "repo 대상 디렉토리 “%s\"를 작성할 수 없습니다: %s"
- 
--#: ../libdnf/dnf-sack.cpp:641
-+#: libdnf/repo/Repo.cpp:1220
- #, c-format
--msgid "can not create temporary file %s"
--msgstr "임시 파일을 만들 수 없습니다. %s"
-+msgid "Cannot create repo temporary directory \"%s\": %s"
-+msgstr "임시 repo 디렉토리 \"%s\"를 만들 수 없습니다: %s"
- 
--#: ../libdnf/dnf-sack.cpp:659
-+#: libdnf/repo/Repo.cpp:1234
- #, c-format
--msgid "write_ext(%1$d) has failed: %2$d"
--msgstr "write_ext(%1$d) has failed: %2$d"
-+msgid "Cannot create directory \"%s\": %s"
-+msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s"
- 
--#: ../libdnf/dnf-sack.cpp:714
--msgid "null repo md file"
--msgstr "null repo md 파일"
-+#: libdnf/repo/Repo.cpp:1257
-+#, c-format
-+msgid "Cannot rename directory \"%s\" to \"%s\": %s"
-+msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s"
- 
--#: ../libdnf/dnf-sack.cpp:723
-+#: libdnf/repo/Repo.cpp:1280
- #, c-format
--msgid "can not read file %1$s: %2$s"
--msgstr "파일을 읽을 수 없습니다. %1$s: %2$s"
-+msgid "repo: using cache for: %s"
-+msgstr "repo : 캐시 사용 : %s"
- 
--#: ../libdnf/dnf-sack.cpp:737
--msgid "repo_add_solv() has failed."
--msgstr "repo_add_solv() has failed."
-+#: libdnf/repo/Repo.cpp:1292
-+#, c-format
-+msgid "Cache-only enabled but no cache for '%s'"
-+msgstr "캐시 만 사용 가능하지만 '%s'"
- 
--#: ../libdnf/dnf-sack.cpp:750
--msgid "loading of MD_TYPE_PRIMARY has failed."
--msgstr ""
-+#: libdnf/repo/Repo.cpp:1296
-+#, c-format
-+msgid "repo: downloading from remote: %s"
-+msgstr "repo : 원격에서 다운로드 중 : %s"
- 
--#: ../libdnf/dnf-sack.cpp:763
--msgid "repo_add_repomdxml/rpmmd() has failed."
--msgstr "repo_add_repomdxml/rpmmd() has failed."
-+#: libdnf/repo/Repo.cpp:1302
-+#, c-format
-+msgid "Failed to download metadata for repo '%s': %s"
-+msgstr "repo '%s'의 메타 데이터를 다운로드하지 못했습니다: %s"
- 
--#: ../libdnf/dnf-sack.cpp:830
--msgid "failed to auto-detect architecture"
--msgstr "아키텍처 자동 검색에 실패했습니다."
-+#: libdnf/repo/Repo.cpp:1328
-+msgid "getCachedir(): Computation of SHA256 failed"
-+msgstr "getCachedir () : SHA256 계산에 실패했습니다."
- 
--#: ../libdnf/dnf-sack.cpp:955
-+#: libdnf/repo/Repo.cpp:1353
- #, c-format
--msgid "failed creating cachedir %s"
--msgstr "캐시 된 생성 실패 %s"
--
--#: ../libdnf/dnf-sack.cpp:1727
--msgid "failed calculating RPMDB checksum"
--msgstr "RPMDB 체크섬 계산 실패"
-+msgid "Cannot create persistdir \"%s\": %s"
-+msgstr "persistdir “%s\"을/를 작성할 수 없습니다: %s"
- 
--#: ../libdnf/dnf-sack.cpp:1751
--msgid "failed loading RPMDB"
--msgstr "RPMDB로드 실패"
-+#: libdnf/repo/Repo.cpp:1753
-+msgid "resume cannot be used simultaneously with the byterangestart param"
-+msgstr "이력서는 byterangestart 매개 변수와 동시에 사용할 수 없습니다."
- 
--#: ../libdnf/dnf-sack.cpp:2466
--msgid "No module defaults found"
--msgstr ""
-+#: libdnf/repo/Repo.cpp:1770
-+#, c-format
-+msgid "PackageTarget initialization failed: %s"
-+msgstr "PackageTarget 초기화에 실패했습니다 : %s"
- 
--#: ../libdnf/transaction/Transformer.cpp:659
--msgid "Transformer: can't open history persist dir"
--msgstr "변압기 : 역사를 열 수 없습니다."
-+#: libdnf/repo/Repo.cpp:1887
-+#, c-format
-+msgid "Cannot open %s: %s"
-+msgstr "열 수 없다 %s: %s"
- 
--#: ../libdnf/transaction/Transformer.cpp:672
--msgid "Couldn't find a history database"
--msgstr "기록 데이터베이스를 찾을 수 없습니다."
-+#: libdnf/repo/Repo.cpp:1931
-+#, c-format
-+msgid "Log handler with id %ld doesn't exist"
-+msgstr "ID가있는 로그 처리기 %ld 존재하지 않는다."
- 
--#: ../libdnf/transaction/Swdb.cpp:107
-+#: libdnf/transaction/Swdb.cpp:173
- msgid "In progress"
- msgstr "진행 중"
- 
--#: ../libdnf/transaction/Swdb.cpp:121 ../libdnf/transaction/Swdb.cpp:148
--#: ../libdnf/transaction/Swdb.cpp:160 ../libdnf/transaction/Swdb.cpp:177
--#: ../libdnf/transaction/Swdb.cpp:316 ../libdnf/transaction/Swdb.cpp:326
-+#: libdnf/transaction/Swdb.cpp:188 libdnf/transaction/Swdb.cpp:216
-+#: libdnf/transaction/Swdb.cpp:228 libdnf/transaction/Swdb.cpp:245
-+#: libdnf/transaction/Swdb.cpp:384 libdnf/transaction/Swdb.cpp:394
- msgid "Not in progress"
- msgstr "진행 중이 아님"
- 
--#: ../libdnf/transaction/Swdb.cpp:187
-+#: libdnf/transaction/Swdb.cpp:255
- msgid "No transaction in progress"
- msgstr "진행중인 트랜잭션 없음"
- 
--#: ../libdnf/transaction/TransactionItem.cpp:147
-+#: libdnf/transaction/TransactionItem.cpp:147
- msgid "Attempt to insert transaction item into completed transaction"
- msgstr "트랜잭션 항목을 완료된 트랜잭션에 삽입하려고 시도했습니다."
- 
--#: ../libdnf/transaction/TransactionItem.cpp:218
-+#: libdnf/transaction/TransactionItem.cpp:218
- msgid "Attempt to update transaction item in completed transaction"
- msgstr "완료된 트랜잭션에서 트랜잭션 항목 업데이트를 시도합니다."
- 
--#: ../libdnf/transaction/private/Transaction.cpp:41
-+#: libdnf/transaction/Transformer.cpp:76
-+msgid "Database Corrupted: no row 'version' in table 'config'"
-+msgstr "데이터베이스 손상: 'config' 테이블에 'version' 행이 없습니다."
-+
-+#: libdnf/transaction/Transformer.cpp:681
-+msgid "Transformer: can't open history persist dir"
-+msgstr "변압기 : 역사를 열 수 없습니다."
-+
-+#: libdnf/transaction/Transformer.cpp:694
-+msgid "Couldn't find a history database"
-+msgstr "기록 데이터베이스를 찾을 수 없습니다."
-+
-+#: libdnf/transaction/private/Transaction.cpp:41
- msgid "Transaction has already began!"
- msgstr "거래가 이미 시작되었습니다!"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:58
-+#: libdnf/transaction/private/Transaction.cpp:58
- #, c-format
- msgid "TransactionItem state is not set: %s"
- msgstr "TransactionItem 상태가 설정되지 않았습니다. %s"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:239
-+#: libdnf/transaction/private/Transaction.cpp:243
- msgid "Can't add console output to unsaved transaction"
- msgstr "저장되지 않은 트랜잭션에 콘솔 출력을 추가 할 수 없습니다."
-diff --git a/po/zh_CN.po b/po/zh_CN.po
-index 9ef3e8bb..ce26c608 100644
---- a/po/zh_CN.po
-+++ b/po/zh_CN.po
-@@ -4,7 +4,7 @@ msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2020-03-19 13:58+0100\n"
-+"POT-Creation-Date: 2020-06-26 09:18-0400\n"
- "PO-Revision-Date: 2018-09-18 02:42+0000\n"
- "Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
- "Language-Team: Chinese (China)\n"
-@@ -15,904 +15,915 @@ msgstr ""
- "Plural-Forms: nplurals=1; plural=0\n"
- "X-Generator: Zanata 4.6.2\n"
- 
--#: ../libdnf/hy-iutil.cpp:322
--#, c-format
--msgid "Failed renaming %1$s to %2$s: %3$s"
--msgstr "将 %1$s 重命名为 %2$s 失败: %3$s"
-+#: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
-+msgid "no value specified"
-+msgstr "未指定值"
- 
--#: ../libdnf/hy-iutil.cpp:330
-+#: libdnf/conf/ConfigMain.cpp:67 libdnf/conf/OptionSeconds.cpp:48
- #, c-format
--msgid "Failed setting perms on %1$s: %2$s"
--msgstr "在 %1$s 中设置 perms 失败: %2$s"
-+msgid "seconds value '%s' must not be negative"
-+msgstr "第二个值“%s”必须不能为负"
- 
--#: ../libdnf/hy-iutil.cpp:376
-+#: libdnf/conf/ConfigMain.cpp:71
- #, c-format
--msgid "cannot create directory %1$s: %2$s"
--msgstr ""
-+msgid "could not convert '%s' to bytes"
-+msgstr "无法把 '%s' 转换为字节"
- 
--#: ../libdnf/hy-iutil.cpp:399 ../libdnf/dnf-utils.cpp:111
-+#: libdnf/conf/ConfigMain.cpp:83 libdnf/conf/OptionSeconds.cpp:66
- #, c-format
--msgid "cannot open directory %1$s: %2$s"
--msgstr "无法打开目录 %1$s: %2$s"
-+msgid "unknown unit '%s'"
-+msgstr "未知单元 “%s”"
- 
--#: ../libdnf/hy-iutil.cpp:411
-+#: libdnf/conf/ConfigMain.cpp:329
- #, c-format
--msgid "cannot stat path %1$s: %2$s"
--msgstr ""
--
--#: ../libdnf/dnf-goal.cpp:68
--msgid "Could not depsolve transaction; "
--msgstr "无法 depsolve 事务: "
-+msgid "percentage '%s' is out of range"
-+msgstr "百分数 '%s' 超出范围"
- 
--#: ../libdnf/dnf-goal.cpp:70
-+#: libdnf/conf/OptionBinds.cpp:76
- #, c-format
--msgid "%i problem detected:\n"
--msgid_plural "%i problems detected:\n"
--msgstr[0] "发现 %i 问题:\n"
-+msgid "Configuration: OptionBinding with id \"%s\" does not exist"
-+msgstr "配置:ID 为 \"%s\"  的 OptionBinding 不存在"
- 
--#: ../libdnf/dnf-goal.cpp:78
-+#: libdnf/conf/OptionBinds.cpp:88
- #, c-format
--msgid " Problem %1$i: %2$s\n"
--msgstr " 问题 %1$i: %2$s\n"
-+msgid "Configuration: OptionBinding with id \"%s\" already exists"
-+msgstr "配置:ID 为 \"%s\"  的 OptionBinding 已存在"
- 
--#: ../libdnf/dnf-goal.cpp:80
-+#: libdnf/conf/OptionBool.cpp:47
- #, c-format
--msgid " Problem: %s\n"
--msgstr " 问题: %s\n"
--
--#: ../libdnf/goal/Goal.cpp:55
--msgid "Ill-formed Selector, presence of multiple match objects in the filter"
--msgstr "Ill-formed Selector,在过滤器中有多个匹配的对象"
--
--#: ../libdnf/goal/Goal.cpp:56
--msgid "Ill-formed Selector used for the operation, incorrect comparison type"
--msgstr "这个操作使用了 Ill-formed Selector,不正确的比较类型"
--
--#: ../libdnf/goal/Goal.cpp:67 ../libdnf/goal/Goal.cpp:94
--msgid " does not belong to a distupgrade repository"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:68 ../libdnf/goal/Goal.cpp:95
--msgid " has inferior architecture"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:69
--msgid "problem with installed package "
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:70 ../libdnf/goal/Goal.cpp:97
--msgid "conflicting requests"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:71 ../libdnf/goal/Goal.cpp:98
--msgid "unsupported request"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:72 ../libdnf/goal/Goal.cpp:99
--msgid "nothing provides requested "
--msgstr ""
-+msgid "invalid boolean value '%s'"
-+msgstr "无效的布尔值“%s”"
- 
--#: ../libdnf/goal/Goal.cpp:73
-+#: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158
-+#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59
- #, c-format
--msgid "package %s does not exist"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:74 ../libdnf/goal/Goal.cpp:101
--msgid " is provided by the system"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:75 ../libdnf/goal/Goal.cpp:102
--msgid "some dependency problem"
--msgstr ""
-+msgid "'%s' is not an allowed value"
-+msgstr "'%s'  不是一个允许的值"
- 
--#: ../libdnf/goal/Goal.cpp:76
--msgid "cannot install the best update candidate for package "
--msgstr ""
-+#: libdnf/conf/OptionEnum.cpp:83 libdnf/conf/OptionNumber.cpp:88
-+msgid "invalid value"
-+msgstr "无效值"
- 
--#: ../libdnf/goal/Goal.cpp:77 ../libdnf/goal/Goal.cpp:104
--msgid "cannot install the best candidate for the job"
--msgstr ""
-+#: libdnf/conf/OptionNumber.cpp:73
-+#, c-format
-+msgid "given value [%d] should be less than allowed value [%d]."
-+msgstr "给定的值 [%d] 应小于允许的值 [%d]。"
- 
--#: ../libdnf/goal/Goal.cpp:78
-+#: libdnf/conf/OptionNumber.cpp:76
- #, c-format
--msgid "package %s is filtered out by modular filtering"
--msgstr ""
-+msgid "given value [%d] should be greater than allowed value [%d]."
-+msgstr "给定的值 [%d] 应大于允许的值 [%d]。"
- 
--#: ../libdnf/goal/Goal.cpp:79
-+#: libdnf/conf/OptionPath.cpp:78
- #, c-format
--msgid "package %s does not have a compatible architecture"
--msgstr ""
-+msgid "given path '%s' is not absolute."
-+msgstr "给定的路径 “%s” 不是绝对路径。"
- 
--#: ../libdnf/goal/Goal.cpp:80
-+#: libdnf/conf/OptionPath.cpp:82
- #, c-format
--msgid "package %s is not installable"
--msgstr ""
-+msgid "given path '%s' does not exist."
-+msgstr "给定的路径 “%s” 不存在。"
- 
--#: ../libdnf/goal/Goal.cpp:81
-+#: libdnf/conf/OptionSeconds.cpp:52
- #, c-format
--msgid "package %s is filtered out by exclude filtering"
--msgstr ""
-+msgid "could not convert '%s' to seconds"
-+msgstr "无法把 '%s' 转换为秒"
- 
--#: ../libdnf/goal/Goal.cpp:82
-+#: libdnf/conf/OptionString.cpp:74
-+msgid "GetValue(): Value not set"
-+msgstr "GetValue(): 值没有设置"
-+
-+#: libdnf/dnf-goal.cpp:68
-+msgid "Could not depsolve transaction; "
-+msgstr "无法 depsolve 事务: "
-+
-+#: libdnf/dnf-goal.cpp:70
- #, c-format
--msgid "nothing provides %s needed by %s"
--msgstr ""
-+msgid "%i problem detected:\n"
-+msgid_plural "%i problems detected:\n"
-+msgstr[0] "发现 %i 问题:\n"
- 
--#: ../libdnf/goal/Goal.cpp:83
-+#: libdnf/dnf-goal.cpp:78
- #, c-format
--msgid "cannot install both %s and %s"
--msgstr ""
-+msgid " Problem %1$i: %2$s\n"
-+msgstr " 问题 %1$i: %2$s\n"
- 
--#: ../libdnf/goal/Goal.cpp:84
-+#: libdnf/dnf-goal.cpp:80
- #, c-format
--msgid "package %s conflicts with %s provided by %s"
--msgstr ""
-+msgid " Problem: %s\n"
-+msgstr " 问题: %s\n"
- 
--#: ../libdnf/goal/Goal.cpp:85
-+#: libdnf/dnf-rpmts.cpp:79
- #, c-format
--msgid "package %s obsoletes %s provided by %s"
--msgstr ""
-+msgid ""
-+"No available modular metadata for modular package '%s'; cannot be installed "
-+"on the system"
-+msgstr "模块软件包 '%s' 没有可用的元数据,它不能在系统上安装"
- 
--#: ../libdnf/goal/Goal.cpp:86
-+#: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
- #, c-format
--msgid "installed package %s obsoletes %s provided by %s"
--msgstr ""
-+msgid "signature does not verify for %s"
-+msgstr "没有为 %s 验证签名"
- 
--#: ../libdnf/goal/Goal.cpp:87
-+#: libdnf/dnf-rpmts.cpp:129 libdnf/dnf-rpmts.cpp:174
- #, c-format
--msgid "package %s implicitly obsoletes %s provided by %s"
--msgstr ""
-+msgid "failed to open(generic error): %s"
-+msgstr "无法打开(一般错误): %s"
- 
--#: ../libdnf/goal/Goal.cpp:88
-+#: libdnf/dnf-rpmts.cpp:142
- #, c-format
--msgid "package %s requires %s, but none of the providers can be installed"
--msgstr ""
-+msgid "failed to verify key for %s"
-+msgstr "无法为 %s 验证密钥"
- 
--#: ../libdnf/goal/Goal.cpp:89
-+#: libdnf/dnf-rpmts.cpp:150
- #, c-format
--msgid "package %s conflicts with %s provided by itself"
--msgstr ""
-+msgid "public key unavailable for %s"
-+msgstr "没有 %s 的公钥"
- 
--#: ../libdnf/goal/Goal.cpp:90
-+#: libdnf/dnf-rpmts.cpp:158
- #, c-format
--msgid "both package %s and %s obsolete %s"
--msgstr ""
-+msgid "signature not found for %s"
-+msgstr "没有找到 %s 的签名"
- 
--#: ../libdnf/goal/Goal.cpp:96
--msgid "problem with installed module "
--msgstr ""
-+#: libdnf/dnf-rpmts.cpp:193
-+#, c-format
-+msgid "failed to add install element: %1$s [%2$i]"
-+msgstr "无法添加安装元素: %1$s [%2$i]"
- 
--#: ../libdnf/goal/Goal.cpp:100
-+#: libdnf/dnf-rpmts.cpp:274
- #, c-format
--msgid "module %s does not exist"
--msgstr ""
-+msgid "Error running transaction: %s"
-+msgstr "错误运行事务: %s"
- 
--#: ../libdnf/goal/Goal.cpp:103
--msgid "cannot install the best update candidate for module "
--msgstr ""
-+#: libdnf/dnf-rpmts.cpp:283
-+msgid "Error running transaction and no problems were reported!"
-+msgstr "错误运行事务并且没有报告问题!"
- 
--#: ../libdnf/goal/Goal.cpp:105 ../libdnf/goal/Goal.cpp:108
--#, c-format
--msgid "module %s is disabled"
--msgstr ""
-+#: libdnf/dnf-rpmts.cpp:346
-+msgid "Fatal error, run database recovery"
-+msgstr "严重错误,运行数据库恢复"
- 
--#: ../libdnf/goal/Goal.cpp:106
-+#: libdnf/dnf-rpmts.cpp:355
- #, c-format
--msgid "module %s does not have a compatible architecture"
--msgstr ""
-+msgid "failed to find package %s"
-+msgstr "无法找到软件包 %s"
- 
--#: ../libdnf/goal/Goal.cpp:107
-+#: libdnf/dnf-rpmts.cpp:401
- #, c-format
--msgid "module %s is not installable"
--msgstr ""
-+msgid "could not add erase element %1$s(%2$i)"
-+msgstr "无法添加删除元素 %1$s(%2$i)"
- 
--#: ../libdnf/goal/Goal.cpp:109
-+#: libdnf/dnf-sack.cpp:381
- #, c-format
--msgid "nothing provides %s needed by module %s"
--msgstr ""
-+msgid "no %1$s string for %2$s"
-+msgstr "没有为 %2$s 的 %1$s 字符串"
- 
--#: ../libdnf/goal/Goal.cpp:110
--#, c-format
--msgid "cannot install both modules %s and %s"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:404
-+msgid "failed to add solv"
-+msgstr "添加 solv 失败"
- 
--#: ../libdnf/goal/Goal.cpp:111
-+#: libdnf/dnf-sack.cpp:422
- #, c-format
--msgid "module %s conflicts with %s provided by %s"
--msgstr ""
-+msgid "failed to open: %s"
-+msgstr "打开失败:%s"
- 
--#: ../libdnf/goal/Goal.cpp:112
-+#: libdnf/dnf-sack.cpp:501
- #, c-format
--msgid "module %s obsoletes %s provided by %s"
--msgstr ""
-+msgid "cannot create temporary file: %s"
-+msgstr "不能创建临时文件: %s"
- 
--#: ../libdnf/goal/Goal.cpp:113
-+#: libdnf/dnf-sack.cpp:511
- #, c-format
--msgid "installed module %s obsoletes %s provided by %s"
--msgstr ""
-+msgid "failed opening tmp file: %s"
-+msgstr "打开 tmp 文件失败: %s"
- 
--#: ../libdnf/goal/Goal.cpp:114
-+#: libdnf/dnf-sack.cpp:523
- #, c-format
--msgid "module %s implicitly obsoletes %s provided by %s"
--msgstr ""
-+msgid "write_main() failed writing data: %i"
-+msgstr "write_main() 写数据失败: %i"
- 
--#: ../libdnf/goal/Goal.cpp:115
--#, c-format
--msgid "module %s requires %s, but none of the providers can be installed"
--msgstr ""
-+#: libdnf/dnf-sack.cpp:540
-+msgid "write_main() failed to re-load written solv file"
-+msgstr "write_main() 重新加载写的 solv 文件失败"
- 
--#: ../libdnf/goal/Goal.cpp:116
-+#: libdnf/dnf-sack.cpp:605
- #, c-format
--msgid "module %s conflicts with %s provided by itself"
--msgstr ""
-+msgid "can not create temporary file %s"
-+msgstr "不能创建临时文件 %s"
- 
--#: ../libdnf/goal/Goal.cpp:117
-+#: libdnf/dnf-sack.cpp:623
- #, c-format
--msgid "both module %s and %s obsolete %s"
--msgstr ""
--
--#: ../libdnf/goal/Goal.cpp:1008
--msgid "no solver set"
--msgstr "无 solver 设置"
-+msgid "write_ext(%1$d) has failed: %2$d"
-+msgstr "write_ext(%1$d) 已失败: %2$d"
- 
--#: ../libdnf/goal/Goal.cpp:1013
--#, c-format
--msgid "failed to make %s absolute"
--msgstr "无法使 %s 绝对"
-+#: libdnf/dnf-sack.cpp:678
-+msgid "null repo md file"
-+msgstr "null repo md 文件"
- 
--#: ../libdnf/goal/Goal.cpp:1020
-+#: libdnf/dnf-sack.cpp:687
- #, c-format
--msgid "failed writing debugdata to %1$s: %2$s"
--msgstr "把 debugdata 写入到 %1$s 失败: %2$s"
-+msgid "can not read file %1$s: %2$s"
-+msgstr "不能读文件 %1$s: %2$s"
- 
--#: ../libdnf/goal/Goal.cpp:1032
--msgid "no solv in the goal"
--msgstr "在目标中没有 solv"
-+#: libdnf/dnf-sack.cpp:701
-+msgid "repo_add_solv() has failed."
-+msgstr "repo_add_solv() 已失败。"
- 
--#: ../libdnf/goal/Goal.cpp:1034
--msgid "no solution, cannot remove protected package"
--msgstr "没有解决方案,不能删除保护的软件包"
-+#: libdnf/dnf-sack.cpp:714
-+msgid "loading of MD_TYPE_PRIMARY has failed."
-+msgstr "加载 MD_TYPE_PRIMARY 失败。"
- 
--#: ../libdnf/goal/Goal.cpp:1037
--msgid "no solution possible"
--msgstr "没有可能的解决方案"
-+#: libdnf/dnf-sack.cpp:727
-+msgid "repo_add_repomdxml/rpmmd() has failed."
-+msgstr "repo_add_repomdxml/rpmmd() 已失败。"
- 
--#: ../libdnf/goal/Goal.cpp:1443
--msgid ""
--"The operation would result in removing the following protected packages: "
--msgstr "这个操作可能会导致删除以下受保护的软件包: "
-+#: libdnf/dnf-sack.cpp:794
-+msgid "failed to auto-detect architecture"
-+msgstr "自动检测架构失败"
- 
--#: ../libdnf/repo/Repo.cpp:337
-+#: libdnf/dnf-sack.cpp:919
- #, c-format
--msgid "Bad id for repo: %s, byte = %s %d"
--msgstr "repo 的 id 无效: %s, byte = %s %d"
-+msgid "failed creating cachedir %s"
-+msgstr "无法创建 cachedir %s"
-+
-+#: libdnf/dnf-sack.cpp:1696
-+msgid "failed loading RPMDB"
-+msgstr "无法加载 RPMDB"
- 
--#: ../libdnf/repo/Repo.cpp:362
-+#: libdnf/dnf-sack.cpp:2403
- #, c-format
--msgid "Repository %s has no mirror or baseurl set."
--msgstr "软件仓库 %s 没有设置镜像或者 baseurl。"
-+msgid "No module defaults found: %s"
-+msgstr "没有找到模块默认设置:%s"
- 
--#: ../libdnf/repo/Repo.cpp:371
-+#: libdnf/dnf-state.cpp:1184
- #, c-format
--msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
--msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。"
-+msgid "percentage not 100: %i"
-+msgstr "百分比不是 100: %i"
- 
--#: ../libdnf/repo/Repo.cpp:580
-+#: libdnf/dnf-state.cpp:1194
- #, c-format
--msgid "Cannot find a valid baseurl for repo: %s"
--msgstr "无法为仓库 %s 找到一个有效的 baseurl"
-+msgid "failed to set number steps: %i"
-+msgstr "无法设置 number steps: %i"
- 
--#: ../libdnf/repo/Repo.cpp:616 ../libdnf/repo/Repo.cpp:1705
--msgid ""
--"Maximum download speed is lower than minimum. Please change configuration of"
--" minrate or throttle"
--msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置"
-+#: libdnf/dnf-state.cpp:1293
-+msgid "cancelled by user action"
-+msgstr "由用户的操作取消"
- 
--#: ../libdnf/repo/Repo.cpp:666 ../libdnf/repo/Repo.cpp:688
-+#: libdnf/dnf-state.cpp:1332
- #, c-format
--msgid "%s: gpgme_data_new_from_fd(): %s"
--msgstr "%s: gpgme_data_new_from_fd(): %s"
-+msgid "done on a state %1$p that did not have a size set! [%2$s]"
-+msgstr "在一个没有设置大小的状态 %1$p 中做! [%2$s]"
- 
--#: ../libdnf/repo/Repo.cpp:674 ../libdnf/repo/Repo.cpp:696
-+#: libdnf/dnf-state.cpp:1357
- #, c-format
--msgid "%s: gpgme_op_import(): %s"
--msgstr "%s: gpgme_op_import(): %s"
-+msgid "already at 100%% state [%s]"
-+msgstr "已是 100%% 状态 [%s]"
- 
--#: ../libdnf/repo/Repo.cpp:719 ../libdnf/repo/Repo.cpp:785
--#: ../libdnf/repo/Repo.cpp:913
-+#: libdnf/dnf-transaction.cpp:300
- #, c-format
--msgid "%s: gpgme_ctx_set_engine_info(): %s"
--msgstr "%s: gpgme_ctx_set_engine_info(): %s"
-+msgid "Sources not set when trying to ensure package %s"
-+msgstr "在尝试确保软件包 %s 时源没有设置"
- 
--#: ../libdnf/repo/Repo.cpp:746 ../libdnf/repo/Repo.cpp:810
-+#: libdnf/dnf-transaction.cpp:326
- #, c-format
--msgid "can not list keys: %s"
--msgstr "不能列出 key: %s"
-+msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
-+msgstr "无法确保 %1$s,因为 repo %2$s 没有找到 (%3$i repos 已加载)"
- 
--#: ../libdnf/repo/Repo.cpp:839
--#, c-format
--msgid "Failed to retrieve GPG key for repo '%s': %s"
--msgstr ""
-+#: libdnf/dnf-transaction.cpp:367
-+msgid "Failed to check untrusted: "
-+msgstr "检查不被信任失败: "
- 
--#: ../libdnf/repo/Repo.cpp:892
-+#: libdnf/dnf-transaction.cpp:377
- #, c-format
--msgid "repo %s: 0x%s already imported"
--msgstr "repo %s: 0x%s 已被导入"
-+msgid "Downloaded file for %s not found"
-+msgstr "没有找到下载的文件 %s"
- 
--#: ../libdnf/repo/Repo.cpp:920
-+#: libdnf/dnf-transaction.cpp:397
- #, c-format
--msgid "repo %s: imported key 0x%s."
--msgstr "repo %s: 导入的 key 0x%s."
-+msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
-+msgstr "软件包 %1$s 不能被验证,repo %2$s 启用了 GPG: %3$s"
- 
--#: ../libdnf/repo/Repo.cpp:1164
--#, c-format
--msgid "reviving: repo '%s' skipped, no metalink."
--msgstr "恢复中: 仓库 '%s' 已被跳过,无 metalink。"
-+#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
-+msgid "Failed to get value for CacheDir"
-+msgstr "无法为 CacheDir 获得值"
- 
--#: ../libdnf/repo/Repo.cpp:1183
-+#: libdnf/dnf-transaction.cpp:911
- #, c-format
--msgid "reviving: repo '%s' skipped, no usable hash."
--msgstr "恢复中: 仓库 '%s' 已被跳过,无可用 hash。"
-+msgid "Failed to get filesystem free size for %s: "
-+msgstr "无法为 %s 获得文件系统可用空间的大小: "
- 
--#: ../libdnf/repo/Repo.cpp:1206
-+#: libdnf/dnf-transaction.cpp:919
- #, c-format
--msgid "reviving: failed for '%s', mismatched %s sum."
--msgstr "恢复: '%s' 失败,不匹配的 %s sum。"
-+msgid "Failed to get filesystem free size for %s"
-+msgstr "无法为 %s 获得文件系统可用空间的大小"
- 
--#: ../libdnf/repo/Repo.cpp:1212
-+#: libdnf/dnf-transaction.cpp:935
- #, c-format
--msgid "reviving: '%s' can be revived - metalink checksums match."
--msgstr "恢复中: '%s' 可以被恢复 - metalink 校验和匹配。"
-+msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
-+msgstr "%1$s 没有足够的空闲空间: 需要 %2$s,可用 %3$s"
- 
--#: ../libdnf/repo/Repo.cpp:1237
--#, c-format
--msgid "reviving: '%s' can be revived - repomd matches."
--msgstr "恢复: '%s' 可用被恢复 - repomd 匹配。"
-+#: libdnf/dnf-transaction.cpp:1196
-+msgid "failed to set root"
-+msgstr "设置 root 失败"
- 
--#: ../libdnf/repo/Repo.cpp:1239
-+#: libdnf/dnf-transaction.cpp:1418
- #, c-format
--msgid "reviving: failed for '%s', mismatched repomd."
--msgstr "恢复: '%s' 失败,不匹配的 repomd。"
-+msgid "Error %i running transaction test"
-+msgstr "错误 %i 运行事务测试"
- 
--#: ../libdnf/repo/Repo.cpp:1257
-+#: libdnf/dnf-transaction.cpp:1458
- #, c-format
--msgid "Cannot create repo destination directory \"%s\": %s"
--msgstr ""
-+msgid "Error %i running transaction"
-+msgstr "错误 %i 运行事务"
- 
--#: ../libdnf/repo/Repo.cpp:1263
-+#: libdnf/dnf-transaction.cpp:1473
- #, c-format
--msgid "Cannot create repo temporary directory \"%s\": %s"
--msgstr "无法创建 repo 临时目录 \"%s\": %s"
-+msgid "Transaction did not go to writing phase, but returned no error(%i)"
-+msgstr "事务没有进入写阶段,但没有返回错误(%i)"
- 
--#: ../libdnf/repo/Repo.cpp:1277
-+#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:399
- #, c-format
--msgid "Cannot create directory \"%s\": %s"
--msgstr "无法创建目录 \"%s\": %s"
-+msgid "cannot open directory %1$s: %2$s"
-+msgstr "无法打开目录 %1$s: %2$s"
- 
--#: ../libdnf/repo/Repo.cpp:1300
-+#: libdnf/dnf-utils.cpp:136
- #, c-format
--msgid "Cannot rename directory \"%s\" to \"%s\": %s"
--msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s"
-+msgid "failed to remove %s"
-+msgstr "无法删除 %s"
- 
--#: ../libdnf/repo/Repo.cpp:1323
--#, c-format
--msgid "repo: using cache for: %s"
--msgstr "仓库: 正在为 %s 使用缓存"
-+#: libdnf/goal/Goal.cpp:55
-+msgid "Ill-formed Selector, presence of multiple match objects in the filter"
-+msgstr "Ill-formed Selector,在过滤器中有多个匹配的对象"
- 
--#: ../libdnf/repo/Repo.cpp:1335
--#, c-format
--msgid "Cache-only enabled but no cache for '%s'"
--msgstr "仅使用缓存已开启但没有 '%s' 的缓存"
-+#: libdnf/goal/Goal.cpp:56
-+msgid "Ill-formed Selector used for the operation, incorrect comparison type"
-+msgstr "这个操作使用了 Ill-formed Selector,不正确的比较类型"
- 
--#: ../libdnf/repo/Repo.cpp:1339
--#, c-format
--msgid "repo: downloading from remote: %s"
--msgstr "repo: 从远程下载: %s"
-+#: libdnf/goal/Goal.cpp:67 libdnf/goal/Goal.cpp:94
-+msgid " does not belong to a distupgrade repository"
-+msgstr " 不属于 distupgrade 仓库"
- 
--#: ../libdnf/repo/Repo.cpp:1345
--#, c-format
--msgid "Failed to download metadata for repo '%s': %s"
--msgstr ""
-+#: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95
-+msgid " has inferior architecture"
-+msgstr " 有 inferior 架构"
- 
--#: ../libdnf/repo/Repo.cpp:1371
--msgid "getCachedir(): Computation of SHA256 failed"
--msgstr "getCachedir(): 计算 SHA256 失败"
-+#: libdnf/goal/Goal.cpp:69
-+msgid "problem with installed package "
-+msgstr "安装的软件包的问题 "
-+
-+#: libdnf/goal/Goal.cpp:70 libdnf/goal/Goal.cpp:97
-+msgid "conflicting requests"
-+msgstr "冲突的请求"
-+
-+#: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98
-+msgid "unsupported request"
-+msgstr "不支持的请求"
- 
--#: ../libdnf/repo/Repo.cpp:1396
-+#: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99
-+msgid "nothing provides requested "
-+msgstr "没有提供请求的。 "
-+
-+#: libdnf/goal/Goal.cpp:73
- #, c-format
--msgid "Cannot create persistdir \"%s\": %s"
--msgstr ""
-+msgid "package %s does not exist"
-+msgstr "软件包 %s 不存在"
- 
--#: ../libdnf/repo/Repo.cpp:1796
--msgid "resume cannot be used simultaneously with the byterangestart param"
--msgstr "resume 不能和 the byterangestart 参数同时使用"
-+#: libdnf/goal/Goal.cpp:74 libdnf/goal/Goal.cpp:101
-+msgid " is provided by the system"
-+msgstr " 由系统提供"
-+
-+#: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102
-+msgid "some dependency problem"
-+msgstr "一些依赖性问题"
-+
-+#: libdnf/goal/Goal.cpp:76
-+msgid "cannot install the best update candidate for package "
-+msgstr "无法为软件包安装最佳更新选择 "
-+
-+#: libdnf/goal/Goal.cpp:77 libdnf/goal/Goal.cpp:104
-+msgid "cannot install the best candidate for the job"
-+msgstr "无法为任务安装最佳选择"
- 
--#: ../libdnf/repo/Repo.cpp:1807
-+#: libdnf/goal/Goal.cpp:78
- #, c-format
--msgid "PackageTarget initialization failed: %s"
--msgstr "PackageTarget 初始失败: %s"
-+msgid "package %s is filtered out by modular filtering"
-+msgstr "软件包 %s 被模块化过滤过滤掉"
- 
--#: ../libdnf/repo/Repo.cpp:1924
-+#: libdnf/goal/Goal.cpp:79
- #, c-format
--msgid "Cannot open %s: %s"
--msgstr "无法打开 %s: %s"
-+msgid "package %s does not have a compatible architecture"
-+msgstr "软件包 %s 没有兼容的架构"
- 
--#: ../libdnf/repo/Repo.cpp:1968
-+#: libdnf/goal/Goal.cpp:80
- #, c-format
--msgid "Log handler with id %ld doesn't exist"
--msgstr "id 为 %ld 的日志处理器不存在"
-+msgid "package %s is not installable"
-+msgstr "软件包 %s 是不可安装的"
- 
--#: ../libdnf/dnf-transaction.cpp:300
-+#: libdnf/goal/Goal.cpp:81
- #, c-format
--msgid "Sources not set when trying to ensure package %s"
--msgstr "在尝试确保软件包 %s 时源没有设置"
-+msgid "package %s is filtered out by exclude filtering"
-+msgstr "软件包 %s 被排除过滤过滤掉"
- 
--#: ../libdnf/dnf-transaction.cpp:326
-+#: libdnf/goal/Goal.cpp:82
- #, c-format
--msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
--msgstr "无法确保 %1$s,因为 repo %2$s 没有找到 (%3$i repos 已加载)"
-+msgid "nothing provides %s needed by %s"
-+msgstr "没有提供 %s(%s 需要)"
- 
--#: ../libdnf/dnf-transaction.cpp:367
--msgid "Failed to check untrusted: "
--msgstr "检查不被信任失败: "
-+#: libdnf/goal/Goal.cpp:83
-+#, c-format
-+msgid "cannot install both %s and %s"
-+msgstr "无法同时安装 %s 和 %s"
- 
--#: ../libdnf/dnf-transaction.cpp:377
-+#: libdnf/goal/Goal.cpp:84
- #, c-format
--msgid "Downloaded file for %s not found"
--msgstr "没有找到下载的文件 %s"
-+msgid "package %s conflicts with %s provided by %s"
-+msgstr "软件包 %s 与 %s(由 %s 提供)冲突"
- 
--#: ../libdnf/dnf-transaction.cpp:397
-+#: libdnf/goal/Goal.cpp:85
- #, c-format
--msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
--msgstr "软件包 %1$s 不能被验证,repo %2$s 启用了 GPG: %3$s"
-+msgid "package %s obsoletes %s provided by %s"
-+msgstr "软件包 %s 过时了 %s(由 %s 提供)"
- 
--#: ../libdnf/dnf-transaction.cpp:831 ../libdnf/dnf-transaction.cpp:903
--msgid "Failed to get value for CacheDir"
--msgstr "无法为 CacheDir 获得值"
-+#: libdnf/goal/Goal.cpp:86
-+#, c-format
-+msgid "installed package %s obsoletes %s provided by %s"
-+msgstr "安装的软件包 %s 过时了 %s(由 %s 提供)"
- 
--#: ../libdnf/dnf-transaction.cpp:911
-+#: libdnf/goal/Goal.cpp:87
- #, c-format
--msgid "Failed to get filesystem free size for %s: "
--msgstr "无法为 %s 获得文件系统可用空间的大小: "
-+msgid "package %s implicitly obsoletes %s provided by %s"
-+msgstr "软件包 %s 隐式过期了 %s(由 %s 提供)"
- 
--#: ../libdnf/dnf-transaction.cpp:919
-+#: libdnf/goal/Goal.cpp:88
- #, c-format
--msgid "Failed to get filesystem free size for %s"
--msgstr "无法为 %s 获得文件系统可用空间的大小"
-+msgid "package %s requires %s, but none of the providers can be installed"
-+msgstr "软件包 %s 需要 %s,但没有供应商可以安装"
- 
--#: ../libdnf/dnf-transaction.cpp:935
-+#: libdnf/goal/Goal.cpp:89
- #, c-format
--msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
--msgstr "%1$s 没有足够的空闲空间: 需要 %2$s,可用 %3$s"
-+msgid "package %s conflicts with %s provided by itself"
-+msgstr "软件包 %s 与自己提供的 %s 冲突"
- 
--#: ../libdnf/dnf-transaction.cpp:1196
--msgid "failed to set root"
--msgstr "设置 root 失败"
-+#: libdnf/goal/Goal.cpp:90
-+#, c-format
-+msgid "both package %s and %s obsolete %s"
-+msgstr "软件包 %s 和 %s 都过期了 %s"
-+
-+#: libdnf/goal/Goal.cpp:96
-+msgid "problem with installed module "
-+msgstr "安装的模块的问题 "
- 
--#: ../libdnf/dnf-transaction.cpp:1418
-+#: libdnf/goal/Goal.cpp:100
- #, c-format
--msgid "Error %i running transaction test"
--msgstr "错误 %i 运行事务测试"
-+msgid "module %s does not exist"
-+msgstr "模块 %s 不存在"
- 
--#: ../libdnf/dnf-transaction.cpp:1458
-+#: libdnf/goal/Goal.cpp:103
-+msgid "cannot install the best update candidate for module "
-+msgstr "无法为模块安装最佳更新选择 "
-+
-+#: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108
- #, c-format
--msgid "Error %i running transaction"
--msgstr "错误 %i 运行事务"
-+msgid "module %s is disabled"
-+msgstr "模块 %s 被禁用"
- 
--#: ../libdnf/dnf-transaction.cpp:1473
-+#: libdnf/goal/Goal.cpp:106
- #, c-format
--msgid "Transaction did not go to writing phase, but returned no error(%i)"
--msgstr "事务没有进入写阶段,但没有返回错误(%i)"
-+msgid "module %s does not have a compatible architecture"
-+msgstr "模块 %s 没有兼容的架构"
- 
--#: ../libdnf/dnf-utils.cpp:136
-+#: libdnf/goal/Goal.cpp:107
- #, c-format
--msgid "failed to remove %s"
--msgstr "无法删除 %s"
-+msgid "module %s is not installable"
-+msgstr "模块 %s 不可安装"
- 
--#: ../libdnf/plugin/plugin.cpp:46
-+#: libdnf/goal/Goal.cpp:109
- #, c-format
--msgid "Can't load shared library \"%s\": %s"
--msgstr ""
-+msgid "nothing provides %s needed by module %s"
-+msgstr "没有提供 %s(模块 %s 需要它)"
- 
--#: ../libdnf/plugin/plugin.cpp:61 ../libdnf/plugin/plugin.cpp:67
--#: ../libdnf/plugin/plugin.cpp:73 ../libdnf/plugin/plugin.cpp:79
-+#: libdnf/goal/Goal.cpp:110
- #, c-format
--msgid "Can't obtain address of symbol \"%s\": %s"
--msgstr ""
-+msgid "cannot install both modules %s and %s"
-+msgstr "无法同时安装模块 %s 和 %s"
- 
--#: ../libdnf/plugin/plugin.cpp:86
-+#: libdnf/goal/Goal.cpp:111
- #, c-format
--msgid "Loading plugin file=\"%s\""
--msgstr ""
-+msgid "module %s conflicts with %s provided by %s"
-+msgstr "模块 %s 与 %s (由 %s 提供)冲突"
- 
--#: ../libdnf/plugin/plugin.cpp:89
-+#: libdnf/goal/Goal.cpp:112
- #, c-format
--msgid "Loaded plugin name=\"%s\", version=\"%s\""
--msgstr ""
-+msgid "module %s obsoletes %s provided by %s"
-+msgstr "模块 %s 过时了 %s(由 %s 提供)"
- 
--#: ../libdnf/plugin/plugin.cpp:96
--msgid "Plugins::loadPlugins() dirPath cannot be empty"
--msgstr ""
-+#: libdnf/goal/Goal.cpp:113
-+#, c-format
-+msgid "installed module %s obsoletes %s provided by %s"
-+msgstr "安装的模块 %s 过时了 %s(由 %s 提供)"
- 
--#: ../libdnf/plugin/plugin.cpp:105
-+#: libdnf/goal/Goal.cpp:114
- #, c-format
--msgid "Can't read plugin directory \"%s\": %s"
--msgstr ""
-+msgid "module %s implicitly obsoletes %s provided by %s"
-+msgstr "模块 %s 隐式过时了 %s(由 %s 提供)"
- 
--#: ../libdnf/plugin/plugin.cpp:114
-+#: libdnf/goal/Goal.cpp:115
- #, c-format
--msgid "Can't load plugin \"%s\": %s"
--msgstr ""
-+msgid "module %s requires %s, but none of the providers can be installed"
-+msgstr "模块 %s 需要 %s,但没有供应商可以安装"
- 
--#: ../libdnf/dnf-state.cpp:1184
-+#: libdnf/goal/Goal.cpp:116
- #, c-format
--msgid "percentage not 100: %i"
--msgstr "百分比不是 100: %i"
-+msgid "module %s conflicts with %s provided by itself"
-+msgstr "模块 %s 与自己提供的 %s 冲突"
- 
--#: ../libdnf/dnf-state.cpp:1194
-+#: libdnf/goal/Goal.cpp:117
- #, c-format
--msgid "failed to set number steps: %i"
--msgstr "无法设置 number steps: %i"
-+msgid "both module %s and %s obsolete %s"
-+msgstr "模块 %s 和 %s 都过期了 %s"
- 
--#: ../libdnf/dnf-state.cpp:1293
--msgid "cancelled by user action"
--msgstr "由用户的操作取消"
-+#: libdnf/goal/Goal.cpp:1032
-+msgid "no solver set"
-+msgstr "无 solver 设置"
- 
--#: ../libdnf/dnf-state.cpp:1332
-+#: libdnf/goal/Goal.cpp:1037
- #, c-format
--msgid "done on a state %1$p that did not have a size set! [%2$s]"
--msgstr "在一个没有设置大小的状态 %1$p 中做! [%2$s]"
-+msgid "failed to make %s absolute"
-+msgstr "无法使 %s 绝对"
- 
--#: ../libdnf/dnf-state.cpp:1357
-+#: libdnf/goal/Goal.cpp:1044
- #, c-format
--msgid "already at 100%% state [%s]"
--msgstr "已是 100%% 状态 [%s]"
-+msgid "failed writing debugdata to %1$s: %2$s"
-+msgstr "把 debugdata 写入到 %1$s 失败: %2$s"
-+
-+#: libdnf/goal/Goal.cpp:1056
-+msgid "no solv in the goal"
-+msgstr "在目标中没有 solv"
-+
-+#: libdnf/goal/Goal.cpp:1058
-+msgid "no solution, cannot remove protected package"
-+msgstr "没有解决方案,不能删除保护的软件包"
-+
-+#: libdnf/goal/Goal.cpp:1061
-+msgid "no solution possible"
-+msgstr "没有可能的解决方案"
-+
-+#: libdnf/goal/Goal.cpp:1473
-+msgid ""
-+"The operation would result in removing the following protected packages: "
-+msgstr "这个操作可能会导致删除以下受保护的软件包: "
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:43
-+#: libdnf/hy-iutil.cpp:322
- #, c-format
--msgid "Failed to update from string: %s"
--msgstr ""
-+msgid "Failed renaming %1$s to %2$s: %3$s"
-+msgstr "将 %1$s 重命名为 %2$s 失败: %3$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:68
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:70
-+#: libdnf/hy-iutil.cpp:330
- #, c-format
--msgid "Failed to resolve: %s"
--msgstr ""
-+msgid "Failed setting perms on %1$s: %2$s"
-+msgstr "在 %1$s 中设置 perms 失败: %2$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:74
-+#: libdnf/hy-iutil.cpp:376
- #, c-format
--msgid "Failed to upgrade defaults: %s"
--msgstr ""
-+msgid "cannot create directory %1$s: %2$s"
-+msgstr "无法创建目录 %1$s: %2$s"
- 
--#: ../libdnf/module/modulemd/ModuleMetadata.cpp:77
-+#: libdnf/hy-iutil.cpp:411
- #, c-format
--msgid "Failed to upgrade streams: %s"
--msgstr ""
-+msgid "cannot stat path %1$s: %2$s"
-+msgstr "无法 stat 路径 %1$s: %2$s"
- 
--#: ../libdnf/module/ModulePackage.cpp:463
-+#: libdnf/module/ModulePackage.cpp:463
- #, c-format
- msgid "Invalid format of Platform module: %s"
--msgstr ""
-+msgstr "Platform 模块无效的格式 : %s"
- 
--#: ../libdnf/module/ModulePackage.cpp:478
-+#: libdnf/module/ModulePackage.cpp:478
- msgid "Multiple module platforms provided by available packages\n"
--msgstr ""
-+msgstr "由可用软件包提供的多个模块平台\n"
- 
--#: ../libdnf/module/ModulePackage.cpp:491
-+#: libdnf/module/ModulePackage.cpp:491
- msgid "Multiple module platforms provided by installed packages\n"
--msgstr ""
-+msgstr "由安装的软件包提供的多个模块平台\n"
- 
--#: ../libdnf/module/ModulePackage.cpp:518
-+#: libdnf/module/ModulePackage.cpp:518
- #, c-format
- msgid "Detection of Platform Module in %s failed: %s"
--msgstr ""
-+msgstr "删除 %s 中的 Platform 模块失败 : %s"
- 
--#: ../libdnf/module/ModulePackage.cpp:527
-+#: libdnf/module/ModulePackage.cpp:527
- #, c-format
- msgid "Missing PLATFORM_ID in %s"
--msgstr ""
-+msgstr "在 %s 中缺少 PLATFORM_ID"
- 
--#: ../libdnf/module/ModulePackage.cpp:532
-+#: libdnf/module/ModulePackage.cpp:532
- msgid "No valid Platform ID detected"
--msgstr ""
-+msgstr "没有检测到有效的 Platform ID"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:68
-+#: libdnf/module/ModulePackageContainer.cpp:68
- #, c-format
- msgid "Cannot enable multiple streams for module '%s'"
--msgstr ""
-+msgstr "无法为模块 '%s' 启用多个流"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:294
-+#: libdnf/module/ModulePackageContainer.cpp:294
- #, c-format
- msgid "Conflicting defaults with repo '%s': %s"
--msgstr ""
-+msgstr "默认设置与 repo '%s' 冲突 : %s"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1568
-+#: libdnf/module/ModulePackageContainer.cpp:1569
- #, c-format
- msgid "Unable to load modular Fail-Safe data at '%s'"
--msgstr ""
-+msgstr "无法在 '%s' 加载模块 Fail-Safe 数据"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1574
-+#: libdnf/module/ModulePackageContainer.cpp:1575
- #, c-format
- msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
--msgstr ""
-+msgstr "无法为模块 '%s:%s' 加载模块 Fail-Safe 数据"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1638
-+#: libdnf/module/ModulePackageContainer.cpp:1639
- #, c-format
- msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
--msgstr ""
-+msgstr "无法为模块化 Fail Safe 数据创建目录 \"%s\" : %s"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1660
-+#: libdnf/module/ModulePackageContainer.cpp:1661
- #, c-format
- msgid "Unable to save a modular Fail Safe data to '%s'"
--msgstr ""
-+msgstr "无法把模块 Fail Safe 数据 safe 为 '%s'"
- 
--#: ../libdnf/module/ModulePackageContainer.cpp:1685
-+#: libdnf/module/ModulePackageContainer.cpp:1686
- #, c-format
- msgid "Unable to remove a modular Fail Safe data in '%s'"
--msgstr ""
-+msgstr "无法在 '%s' 中删除一个模块的 Fail Safe 数据"
- 
--#: ../libdnf/dnf-rpmts.cpp:79
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:44
- #, c-format
--msgid ""
--"No available modular metadata for modular package '%s'; cannot be installed "
--"on the system"
--msgstr ""
-+msgid "Failed to update from string: %s"
-+msgstr "从字符串更新失败: %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:121 ../libdnf/dnf-rpmts.cpp:166
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:68
- #, c-format
--msgid "signature does not verify for %s"
--msgstr "没有为 %s 验证签名"
-+msgid "Failed to resolve: %s"
-+msgstr "解析失败:%s"
- 
--#: ../libdnf/dnf-rpmts.cpp:129 ../libdnf/dnf-rpmts.cpp:174
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:73
- #, c-format
--msgid "failed to open(generic error): %s"
--msgstr "无法打开(一般错误): %s"
-+msgid "There were errors while resolving modular defaults: %s"
-+msgstr "在解析模块默认值时出现了错误:%s"
- 
--#: ../libdnf/dnf-rpmts.cpp:142
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:78
- #, c-format
--msgid "failed to verify key for %s"
--msgstr "无法为 %s 验证密钥"
-+msgid "Failed to upgrade defaults: %s"
-+msgstr "升级默认值失败:%s"
- 
--#: ../libdnf/dnf-rpmts.cpp:150
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:81
- #, c-format
--msgid "public key unavailable for %s"
--msgstr "没有 %s 的公钥"
-+msgid "Failed to upgrade streams: %s"
-+msgstr "升级流失败:%s"
- 
--#: ../libdnf/dnf-rpmts.cpp:158
-+#: libdnf/plugin/plugin.cpp:46
- #, c-format
--msgid "signature not found for %s"
--msgstr "没有找到 %s 的签名"
-+msgid "Can't load shared library \"%s\": %s"
-+msgstr "无法加载共享库 \"%s\": %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:193
-+#: libdnf/plugin/plugin.cpp:61 libdnf/plugin/plugin.cpp:67
-+#: libdnf/plugin/plugin.cpp:73 libdnf/plugin/plugin.cpp:79
- #, c-format
--msgid "failed to add install element: %1$s [%2$i]"
--msgstr "无法添加安装元素: %1$s [%2$i]"
-+msgid "Can't obtain address of symbol \"%s\": %s"
-+msgstr "无法获取符号 \"%s\" 的地址 : %s"
- 
--#: ../libdnf/dnf-rpmts.cpp:274
-+#: libdnf/plugin/plugin.cpp:86
- #, c-format
--msgid "Error running transaction: %s"
--msgstr "错误运行事务: %s"
--
--#: ../libdnf/dnf-rpmts.cpp:283
--msgid "Error running transaction and no problems were reported!"
--msgstr "错误运行事务并且没有报告问题!"
--
--#: ../libdnf/dnf-rpmts.cpp:346
--msgid "Fatal error, run database recovery"
--msgstr "严重错误,运行数据库恢复"
-+msgid "Loading plugin file=\"%s\""
-+msgstr "加载插件文件=\"%s\""
- 
--#: ../libdnf/dnf-rpmts.cpp:355
-+#: libdnf/plugin/plugin.cpp:89
- #, c-format
--msgid "failed to find package %s"
--msgstr "无法找到软件包 %s"
-+msgid "Loaded plugin name=\"%s\", version=\"%s\""
-+msgstr "加载插件名=\"%s\", 版本=\"%s\""
-+
-+#: libdnf/plugin/plugin.cpp:96
-+msgid "Plugins::loadPlugins() dirPath cannot be empty"
-+msgstr "Plugins::loadPlugins() dirPath 不能为空"
- 
--#: ../libdnf/dnf-rpmts.cpp:401
-+#: libdnf/plugin/plugin.cpp:105
- #, c-format
--msgid "could not add erase element %1$s(%2$i)"
--msgstr "无法添加删除元素 %1$s(%2$i)"
-+msgid "Can't read plugin directory \"%s\": %s"
-+msgstr "无法读插件目录 \"%s\": %s"
- 
--#: ../libdnf/conf/OptionString.cpp:59 ../libdnf/conf/OptionStringList.cpp:59
--#: ../libdnf/conf/OptionEnum.cpp:72 ../libdnf/conf/OptionEnum.cpp:158
-+#: libdnf/plugin/plugin.cpp:114
- #, c-format
--msgid "'%s' is not an allowed value"
--msgstr "'%s'  不是一个允许的值"
-+msgid "Can't load plugin \"%s\": %s"
-+msgstr "无法加载插件 \"%s\": %s"
- 
--#: ../libdnf/conf/OptionString.cpp:74
--msgid "GetValue(): Value not set"
--msgstr "GetValue(): 值没有设置"
-+#: libdnf/repo/DependencySplitter.cpp:50
-+msgid ""
-+"Using '==' operator in reldeps can result in an undefined behavior. It is "
-+"deprecated and the support will be dropped in future versions. Use '=' "
-+"operator instead."
-+msgstr ""
-+"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并且在未来的版本中会取消对它的支持。请使用 '=' "
-+"操作符代替。"
- 
--#: ../libdnf/conf/OptionPath.cpp:78
-+#: libdnf/repo/Repo.cpp:321
- #, c-format
--msgid "given path '%s' is not absolute."
--msgstr "给定的路径 “%s” 不是绝对路径。"
-+msgid "Repository %s has no mirror or baseurl set."
-+msgstr "软件仓库 %s 没有设置镜像或者 baseurl。"
- 
--#: ../libdnf/conf/OptionPath.cpp:82
-+#: libdnf/repo/Repo.cpp:330
- #, c-format
--msgid "given path '%s' does not exist."
--msgstr "给定的路径 “%s” 不存在。"
-+msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
-+msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。"
- 
--#: ../libdnf/conf/OptionBool.cpp:47
-+#: libdnf/repo/Repo.cpp:536
- #, c-format
--msgid "invalid boolean value '%s'"
--msgstr "无效的布尔值“%s”"
-+msgid "Cannot find a valid baseurl for repo: %s"
-+msgstr "无法为仓库 %s 找到一个有效的 baseurl"
- 
--#: ../libdnf/conf/ConfigMain.cpp:62 ../libdnf/conf/OptionSeconds.cpp:40
--msgid "no value specified"
--msgstr "未指定值"
-+#: libdnf/repo/Repo.cpp:573 libdnf/repo/Repo.cpp:1662
-+msgid ""
-+"Maximum download speed is lower than minimum. Please change configuration of"
-+" minrate or throttle"
-+msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置"
- 
--#: ../libdnf/conf/ConfigMain.cpp:67 ../libdnf/conf/OptionSeconds.cpp:48
-+#: libdnf/repo/Repo.cpp:623 libdnf/repo/Repo.cpp:645
- #, c-format
--msgid "seconds value '%s' must not be negative"
--msgstr "第二个值“%s”必须不能为负"
-+msgid "%s: gpgme_data_new_from_fd(): %s"
-+msgstr "%s: gpgme_data_new_from_fd(): %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:71
-+#: libdnf/repo/Repo.cpp:631 libdnf/repo/Repo.cpp:653
- #, c-format
--msgid "could not convert '%s' to bytes"
--msgstr "无法把 '%s' 转换为字节"
-+msgid "%s: gpgme_op_import(): %s"
-+msgstr "%s: gpgme_op_import(): %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:83 ../libdnf/conf/OptionSeconds.cpp:66
-+#: libdnf/repo/Repo.cpp:676 libdnf/repo/Repo.cpp:742 libdnf/repo/Repo.cpp:870
- #, c-format
--msgid "unknown unit '%s'"
--msgstr "未知单元 “%s”"
-+msgid "%s: gpgme_ctx_set_engine_info(): %s"
-+msgstr "%s: gpgme_ctx_set_engine_info(): %s"
- 
--#: ../libdnf/conf/ConfigMain.cpp:329
-+#: libdnf/repo/Repo.cpp:703 libdnf/repo/Repo.cpp:767
- #, c-format
--msgid "percentage '%s' is out of range"
--msgstr "百分数 '%s' 超出范围"
-+msgid "can not list keys: %s"
-+msgstr "不能列出 key: %s"
- 
--#: ../libdnf/conf/OptionNumber.cpp:73
-+#: libdnf/repo/Repo.cpp:796
- #, c-format
--msgid "given value [%d] should be less than allowed value [%d]."
--msgstr "给定的值 [%d] 应小于允许的值 [%d]。"
-+msgid "Failed to retrieve GPG key for repo '%s': %s"
-+msgstr "为 repo '%s' 获取 GPG 密钥失败 : %s"
- 
--#: ../libdnf/conf/OptionNumber.cpp:76
-+#: libdnf/repo/Repo.cpp:849
- #, c-format
--msgid "given value [%d] should be greater than allowed value [%d]."
--msgstr "给定的值 [%d] 应大于允许的值 [%d]。"
--
--#: ../libdnf/conf/OptionNumber.cpp:88 ../libdnf/conf/OptionEnum.cpp:83
--msgid "invalid value"
--msgstr "无效值"
-+msgid "repo %s: 0x%s already imported"
-+msgstr "repo %s: 0x%s 已被导入"
- 
--#: ../libdnf/conf/OptionBinds.cpp:76
-+#: libdnf/repo/Repo.cpp:877
- #, c-format
--msgid "Configuration: OptionBinding with id \"%s\" does not exist"
--msgstr "配置:ID 为 \"%s\"  的 OptionBinding 不存在"
-+msgid "repo %s: imported key 0x%s."
-+msgstr "repo %s: 导入的 key 0x%s."
- 
--#: ../libdnf/conf/OptionBinds.cpp:88
-+#: libdnf/repo/Repo.cpp:1121
- #, c-format
--msgid "Configuration: OptionBinding with id \"%s\" already exists"
--msgstr "配置:ID 为 \"%s\"  的 OptionBinding 已存在"
-+msgid "reviving: repo '%s' skipped, no metalink."
-+msgstr "恢复中: 仓库 '%s' 已被跳过,无 metalink。"
- 
--#: ../libdnf/conf/OptionSeconds.cpp:52
-+#: libdnf/repo/Repo.cpp:1140
- #, c-format
--msgid "could not convert '%s' to seconds"
--msgstr "无法把 '%s' 转换为秒"
-+msgid "reviving: repo '%s' skipped, no usable hash."
-+msgstr "恢复中: 仓库 '%s' 已被跳过,无可用 hash。"
- 
--#: ../libdnf/dnf-sack.cpp:417
-+#: libdnf/repo/Repo.cpp:1163
- #, c-format
--msgid "no %1$s string for %2$s"
--msgstr ""
--
--#: ../libdnf/dnf-sack.cpp:440
--msgid "failed to add solv"
--msgstr "添加 solv 失败"
-+msgid "reviving: failed for '%s', mismatched %s sum."
-+msgstr "恢复: '%s' 失败,不匹配的 %s sum。"
- 
--#: ../libdnf/dnf-sack.cpp:458
-+#: libdnf/repo/Repo.cpp:1169
- #, c-format
--msgid "failed to open: %s"
--msgstr "打开失败:%s"
-+msgid "reviving: '%s' can be revived - metalink checksums match."
-+msgstr "恢复中: '%s' 可以被恢复 - metalink 校验和匹配。"
- 
--#: ../libdnf/dnf-sack.cpp:537
-+#: libdnf/repo/Repo.cpp:1194
- #, c-format
--msgid "cannot create temporary file: %s"
--msgstr "不能创建临时文件: %s"
-+msgid "reviving: '%s' can be revived - repomd matches."
-+msgstr "恢复: '%s' 可用被恢复 - repomd 匹配。"
- 
--#: ../libdnf/dnf-sack.cpp:547
-+#: libdnf/repo/Repo.cpp:1196
- #, c-format
--msgid "failed opening tmp file: %s"
--msgstr "打开 tmp 文件失败: %s"
-+msgid "reviving: failed for '%s', mismatched repomd."
-+msgstr "恢复: '%s' 失败,不匹配的 repomd。"
- 
--#: ../libdnf/dnf-sack.cpp:559
-+#: libdnf/repo/Repo.cpp:1214
- #, c-format
--msgid "write_main() failed writing data: %i"
--msgstr "write_main() 写数据失败: %i"
--
--#: ../libdnf/dnf-sack.cpp:576
--msgid "write_main() failed to re-load written solv file"
--msgstr "write_main() 重新加载写的 solv 文件失败"
-+msgid "Cannot create repo destination directory \"%s\": %s"
-+msgstr "无法创建 repo 目标目录 \"%s\": %s"
- 
--#: ../libdnf/dnf-sack.cpp:641
-+#: libdnf/repo/Repo.cpp:1220
- #, c-format
--msgid "can not create temporary file %s"
--msgstr "不能创建临时文件 %s"
-+msgid "Cannot create repo temporary directory \"%s\": %s"
-+msgstr "无法创建 repo 临时目录 \"%s\": %s"
- 
--#: ../libdnf/dnf-sack.cpp:659
-+#: libdnf/repo/Repo.cpp:1234
- #, c-format
--msgid "write_ext(%1$d) has failed: %2$d"
--msgstr "write_ext(%1$d) 已失败: %2$d"
-+msgid "Cannot create directory \"%s\": %s"
-+msgstr "无法创建目录 \"%s\": %s"
- 
--#: ../libdnf/dnf-sack.cpp:714
--msgid "null repo md file"
--msgstr "null repo md 文件"
-+#: libdnf/repo/Repo.cpp:1257
-+#, c-format
-+msgid "Cannot rename directory \"%s\" to \"%s\": %s"
-+msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s"
- 
--#: ../libdnf/dnf-sack.cpp:723
-+#: libdnf/repo/Repo.cpp:1280
- #, c-format
--msgid "can not read file %1$s: %2$s"
--msgstr "不能读文件 %1$s: %2$s"
-+msgid "repo: using cache for: %s"
-+msgstr "仓库: 正在为 %s 使用缓存"
- 
--#: ../libdnf/dnf-sack.cpp:737
--msgid "repo_add_solv() has failed."
--msgstr "repo_add_solv() 已失败。"
-+#: libdnf/repo/Repo.cpp:1292
-+#, c-format
-+msgid "Cache-only enabled but no cache for '%s'"
-+msgstr "仅使用缓存已开启但没有 '%s' 的缓存"
- 
--#: ../libdnf/dnf-sack.cpp:750
--msgid "loading of MD_TYPE_PRIMARY has failed."
--msgstr ""
-+#: libdnf/repo/Repo.cpp:1296
-+#, c-format
-+msgid "repo: downloading from remote: %s"
-+msgstr "repo: 从远程下载: %s"
- 
--#: ../libdnf/dnf-sack.cpp:763
--msgid "repo_add_repomdxml/rpmmd() has failed."
--msgstr "repo_add_repomdxml/rpmmd() 已失败。"
-+#: libdnf/repo/Repo.cpp:1302
-+#, c-format
-+msgid "Failed to download metadata for repo '%s': %s"
-+msgstr "为 repo '%s' 下载元数据失败 : %s"
- 
--#: ../libdnf/dnf-sack.cpp:830
--msgid "failed to auto-detect architecture"
--msgstr "自动检测架构失败"
-+#: libdnf/repo/Repo.cpp:1328
-+msgid "getCachedir(): Computation of SHA256 failed"
-+msgstr "getCachedir(): 计算 SHA256 失败"
- 
--#: ../libdnf/dnf-sack.cpp:955
-+#: libdnf/repo/Repo.cpp:1353
- #, c-format
--msgid "failed creating cachedir %s"
--msgstr "无法创建 cachedir %s"
--
--#: ../libdnf/dnf-sack.cpp:1727
--msgid "failed calculating RPMDB checksum"
--msgstr "无法计算 RPMDB checksum"
-+msgid "Cannot create persistdir \"%s\": %s"
-+msgstr "无法创建 persistdir \"%s\": %s"
- 
--#: ../libdnf/dnf-sack.cpp:1751
--msgid "failed loading RPMDB"
--msgstr "无法加载 RPMDB"
-+#: libdnf/repo/Repo.cpp:1753
-+msgid "resume cannot be used simultaneously with the byterangestart param"
-+msgstr "resume 不能和 the byterangestart 参数同时使用"
- 
--#: ../libdnf/dnf-sack.cpp:2466
--msgid "No module defaults found"
--msgstr ""
-+#: libdnf/repo/Repo.cpp:1770
-+#, c-format
-+msgid "PackageTarget initialization failed: %s"
-+msgstr "PackageTarget 初始失败: %s"
- 
--#: ../libdnf/transaction/Transformer.cpp:659
--msgid "Transformer: can't open history persist dir"
--msgstr "Transformer: 无法打开 history persist dir"
-+#: libdnf/repo/Repo.cpp:1887
-+#, c-format
-+msgid "Cannot open %s: %s"
-+msgstr "无法打开 %s: %s"
- 
--#: ../libdnf/transaction/Transformer.cpp:672
--msgid "Couldn't find a history database"
--msgstr "无法打开一个历史数据库"
-+#: libdnf/repo/Repo.cpp:1931
-+#, c-format
-+msgid "Log handler with id %ld doesn't exist"
-+msgstr "id 为 %ld 的日志处理器不存在"
- 
--#: ../libdnf/transaction/Swdb.cpp:107
-+#: libdnf/transaction/Swdb.cpp:173
- msgid "In progress"
- msgstr "进行中"
- 
--#: ../libdnf/transaction/Swdb.cpp:121 ../libdnf/transaction/Swdb.cpp:148
--#: ../libdnf/transaction/Swdb.cpp:160 ../libdnf/transaction/Swdb.cpp:177
--#: ../libdnf/transaction/Swdb.cpp:316 ../libdnf/transaction/Swdb.cpp:326
-+#: libdnf/transaction/Swdb.cpp:188 libdnf/transaction/Swdb.cpp:216
-+#: libdnf/transaction/Swdb.cpp:228 libdnf/transaction/Swdb.cpp:245
-+#: libdnf/transaction/Swdb.cpp:384 libdnf/transaction/Swdb.cpp:394
- msgid "Not in progress"
- msgstr "没有在进行中"
- 
--#: ../libdnf/transaction/Swdb.cpp:187
-+#: libdnf/transaction/Swdb.cpp:255
- msgid "No transaction in progress"
- msgstr "没有事务在进行中"
- 
--#: ../libdnf/transaction/TransactionItem.cpp:147
-+#: libdnf/transaction/TransactionItem.cpp:147
- msgid "Attempt to insert transaction item into completed transaction"
- msgstr "试图向已完成的事务中插入事务项"
- 
--#: ../libdnf/transaction/TransactionItem.cpp:218
-+#: libdnf/transaction/TransactionItem.cpp:218
- msgid "Attempt to update transaction item in completed transaction"
- msgstr "试图在已完成的事务中更新事务"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:41
-+#: libdnf/transaction/Transformer.cpp:76
-+msgid "Database Corrupted: no row 'version' in table 'config'"
-+msgstr "数据库损坏:表 'config' 中没有 'version' 行"
-+
-+#: libdnf/transaction/Transformer.cpp:681
-+msgid "Transformer: can't open history persist dir"
-+msgstr "Transformer: 无法打开 history persist dir"
-+
-+#: libdnf/transaction/Transformer.cpp:694
-+msgid "Couldn't find a history database"
-+msgstr "无法打开一个历史数据库"
-+
-+#: libdnf/transaction/private/Transaction.cpp:41
- msgid "Transaction has already began!"
- msgstr "事务已开始!"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:58
-+#: libdnf/transaction/private/Transaction.cpp:58
- #, c-format
- msgid "TransactionItem state is not set: %s"
- msgstr "TransactionItem 状态没有设置:%s"
- 
--#: ../libdnf/transaction/private/Transaction.cpp:239
-+#: libdnf/transaction/private/Transaction.cpp:243
- msgid "Can't add console output to unsaved transaction"
- msgstr "无法向未保存的事务中添加控制台输出"
-+
-+#~ msgid "Bad id for repo: %s, byte = %s %d"
-+#~ msgstr "repo 的 id 无效: %s, byte = %s %d"
--- 
-2.25.4
-
diff --git a/SOURCES/0004-context-improve-retrieving-repository-configuration.patch b/SOURCES/0004-context-improve-retrieving-repository-configuration.patch
new file mode 100644
index 0000000..79bdeff
--- /dev/null
+++ b/SOURCES/0004-context-improve-retrieving-repository-configuration.patch
@@ -0,0 +1,1136 @@
+From be8449aa177473a834a5b2c401a8a3fcc61522b4 Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Wed, 2 Dec 2020 08:00:07 +0100
+Subject: [PATCH 1/9] Option: Add reset() method
+
+The method resets the option to its initial state.
+Can be used, for example, before reloading the configuration in daemon
+mode (PackageKit).
+---
+ libdnf/conf/Option.hpp           |  2 ++
+ libdnf/conf/OptionBool.hpp       |  9 ++++++++-
+ libdnf/conf/OptionChild.hpp      | 14 ++++++++++++++
+ libdnf/conf/OptionEnum.hpp       | 15 +++++++++++++++
+ libdnf/conf/OptionNumber.hpp     | 10 +++++++++-
+ libdnf/conf/OptionString.cpp     | 11 ++++++++---
+ libdnf/conf/OptionString.hpp     |  8 ++++++++
+ libdnf/conf/OptionStringList.hpp |  9 ++++++++-
+ 8 files changed, 72 insertions(+), 6 deletions(-)
+
+diff --git a/libdnf/conf/Option.hpp b/libdnf/conf/Option.hpp
+index e9a9dfc84..849871fe7 100644
+--- a/libdnf/conf/Option.hpp
++++ b/libdnf/conf/Option.hpp
+@@ -62,6 +62,8 @@ class Option {
+     virtual void set(Priority priority, const std::string & value) = 0;
+     virtual std::string getValueString() const = 0;
+     virtual bool empty() const noexcept;
++    /// Resets the option to its initial state.
++    virtual void reset() = 0;
+     virtual ~Option() = default;
+ 
+ protected:
+diff --git a/libdnf/conf/OptionBool.hpp b/libdnf/conf/OptionBool.hpp
+index c27ab0b79..a5e647807 100644
+--- a/libdnf/conf/OptionBool.hpp
++++ b/libdnf/conf/OptionBool.hpp
+@@ -47,6 +47,7 @@ class OptionBool : public Option {
+     std::string getValueString() const override;
+     const char * const * getTrueValues() const noexcept;
+     const char * const * getFalseValues() const noexcept;
++    void reset() override;
+ 
+ protected:
+     const char * const * const trueValues;
+@@ -84,7 +85,13 @@ inline const char * const * OptionBool::getTrueValues() const noexcept
+ 
+ inline const char * const * OptionBool::getFalseValues() const noexcept
+ {
+-    return falseValues ? falseValues : defFalseValues; 
++    return falseValues ? falseValues : defFalseValues;
++}
++
++inline void OptionBool::reset()
++{
++    value = defaultValue;
++    priority = Priority::DEFAULT;
+ }
+ 
+ }
+diff --git a/libdnf/conf/OptionChild.hpp b/libdnf/conf/OptionChild.hpp
+index 5d1503cb6..3056345f9 100644
+--- a/libdnf/conf/OptionChild.hpp
++++ b/libdnf/conf/OptionChild.hpp
+@@ -39,6 +39,7 @@ class OptionChild : public Option {
+     const typename ParentOptionType::ValueType getDefaultValue() const;
+     std::string getValueString() const override;
+     bool empty() const noexcept override;
++    void reset() override;
+ 
+ private:
+     const ParentOptionType * parent;
+@@ -56,6 +57,7 @@ class OptionChild<ParentOptionType, typename std::enable_if<std::is_same<typenam
+     const std::string & getDefaultValue() const;
+     std::string getValueString() const override;
+     bool empty() const noexcept override;
++    void reset() override;
+ 
+ private:
+     const ParentOptionType * parent;
+@@ -119,6 +121,12 @@ inline bool OptionChild<ParentOptionType, Enable>::empty() const noexcept
+     return priority == Priority::EMPTY && parent->empty();
+ }
+ 
++template <class ParentOptionType, class Enable>
++inline void OptionChild<ParentOptionType, Enable>::reset()
++{
++    priority = Priority::EMPTY;
++}
++
+ template <class ParentOptionType>
+ inline OptionChild<ParentOptionType, typename std::enable_if<std::is_same<typename ParentOptionType::ValueType, std::string>::value>::type>::OptionChild(const ParentOptionType & parent)
+ : parent(&parent) {}
+@@ -171,6 +179,12 @@ inline bool OptionChild<ParentOptionType, typename std::enable_if<std::is_same<t
+     return priority == Priority::EMPTY && parent->empty();
+ }
+ 
++template <class ParentOptionType>
++inline void OptionChild<ParentOptionType, typename std::enable_if<std::is_same<typename ParentOptionType::ValueType, std::string>::value>::type>::reset()
++{
++    priority = Priority::EMPTY;
++}
++
+ }
+ 
+ #endif
+diff --git a/libdnf/conf/OptionEnum.hpp b/libdnf/conf/OptionEnum.hpp
+index c63156cb3..d2f710f20 100644
+--- a/libdnf/conf/OptionEnum.hpp
++++ b/libdnf/conf/OptionEnum.hpp
+@@ -49,6 +49,7 @@ class OptionEnum : public Option {
+     T getDefaultValue() const;
+     std::string toString(ValueType value) const;
+     std::string getValueString() const override;
++    void reset() override;
+ 
+ protected:
+     FromStringFunc fromStringUser;
+@@ -74,6 +75,7 @@ class OptionEnum<std::string> : public Option {
+     const std::string & getValue() const;
+     const std::string & getDefaultValue() const;
+     std::string getValueString() const override;
++    void reset() override;
+ 
+ protected:
+     FromStringFunc fromStringUser;
+@@ -88,6 +90,13 @@ inline OptionEnum<T> * OptionEnum<T>::clone() const
+     return new OptionEnum<T>(*this);
+ }
+ 
++template <typename T>
++inline void OptionEnum<T>::reset()
++{
++    value = defaultValue;
++    priority = Priority::DEFAULT;
++}
++
+ inline OptionEnum<std::string> * OptionEnum<std::string>::clone() const
+ {
+     return new OptionEnum<std::string>(*this);
+@@ -108,6 +117,12 @@ inline std::string OptionEnum<std::string>::getValueString() const
+     return value;
+ }
+ 
++inline void OptionEnum<std::string>::reset()
++{
++    value = defaultValue;
++    priority = Priority::DEFAULT;
++}
++
+ }
+ 
+ #endif
+diff --git a/libdnf/conf/OptionNumber.hpp b/libdnf/conf/OptionNumber.hpp
+index 98988fd50..f7a7b3d6e 100644
+--- a/libdnf/conf/OptionNumber.hpp
++++ b/libdnf/conf/OptionNumber.hpp
+@@ -50,6 +50,7 @@ class OptionNumber : public Option {
+     T getDefaultValue() const;
+     std::string toString(ValueType value) const;
+     std::string getValueString() const override;
++    void reset() override;
+ 
+ protected:
+     FromStringFunc fromStringUser;
+@@ -80,7 +81,14 @@ inline T OptionNumber<T>::getDefaultValue() const
+ template <typename T>
+ inline std::string OptionNumber<T>::getValueString() const
+ {
+-    return toString(value); 
++    return toString(value);
++}
++
++template <typename T>
++inline void OptionNumber<T>::reset()
++{
++    value = defaultValue;
++    priority = Priority::DEFAULT;
+ }
+ 
+ extern template class OptionNumber<std::int32_t>;
+diff --git a/libdnf/conf/OptionString.cpp b/libdnf/conf/OptionString.cpp
+index d27194f7a..b42e6c633 100644
+--- a/libdnf/conf/OptionString.cpp
++++ b/libdnf/conf/OptionString.cpp
+@@ -27,18 +27,21 @@
+ namespace libdnf {
+ 
+ OptionString::OptionString(const std::string & defaultValue)
+-: Option(Priority::DEFAULT), defaultValue(defaultValue), value(defaultValue) {}
++: Option(Priority::DEFAULT), initPriority(Priority::DEFAULT), defaultValue(defaultValue), value(defaultValue) {}
+ 
+ OptionString::OptionString(const char * defaultValue)
+ {
+     if (defaultValue) {
+         this->value = this->defaultValue = defaultValue;
+-        this->priority = Priority::DEFAULT;
++        this->initPriority = this->priority = Priority::DEFAULT;
++    } else {
++        this->initPriority = Priority::EMPTY;
+     }
+ }
+ 
+ OptionString::OptionString(const std::string & defaultValue, const std::string & regex, bool icase)
+-: Option(Priority::DEFAULT), regex(regex), icase(icase), defaultValue(defaultValue), value(defaultValue) { test(defaultValue); }
++: Option(Priority::DEFAULT), initPriority(Priority::DEFAULT), regex(regex), icase(icase)
++, defaultValue(defaultValue), value(defaultValue) { test(defaultValue); }
+ 
+ OptionString::OptionString(const char * defaultValue, const std::string & regex, bool icase)
+ : regex(regex), icase(icase)
+@@ -48,6 +51,8 @@ OptionString::OptionString(const char * defaultValue, const std::string & regex,
+         test(this->defaultValue);
+         this->value = this->defaultValue;
+         this->priority = Priority::DEFAULT;
++    } else {
++        this->initPriority = Priority::EMPTY;
+     }
+ }
+ 
+diff --git a/libdnf/conf/OptionString.hpp b/libdnf/conf/OptionString.hpp
+index 2e26305c4..03fef8bcf 100644
+--- a/libdnf/conf/OptionString.hpp
++++ b/libdnf/conf/OptionString.hpp
+@@ -42,8 +42,10 @@ class OptionString : public Option {
+     const std::string & getValue() const;
+     const std::string & getDefaultValue() const noexcept;
+     std::string getValueString() const override;
++    void reset() override;
+ 
+ protected:
++    Priority initPriority;
+     std::string regex;
+     bool icase;
+     std::string defaultValue;
+@@ -70,6 +72,12 @@ inline std::string OptionString::fromString(const std::string & value) const
+     return value;
+ }
+ 
++inline void OptionString::reset()
++{
++    value = defaultValue;
++    priority = initPriority;
++}
++
+ }
+ 
+ #endif
+diff --git a/libdnf/conf/OptionStringList.hpp b/libdnf/conf/OptionStringList.hpp
+index 942e56b16..20debaa8c 100644
+--- a/libdnf/conf/OptionStringList.hpp
++++ b/libdnf/conf/OptionStringList.hpp
+@@ -45,6 +45,7 @@ class OptionStringList : public Option {
+     const ValueType & getDefaultValue() const;
+     std::string toString(const ValueType & value) const;
+     std::string getValueString() const override;
++    void reset() override;
+ 
+ protected:
+     std::string regex;
+@@ -70,7 +71,13 @@ inline const OptionStringList::ValueType & OptionStringList::getDefaultValue() c
+ 
+ inline std::string OptionStringList::getValueString() const
+ {
+-    return toString(value); 
++    return toString(value);
++}
++
++inline void OptionStringList::reset()
++{
++    value = defaultValue;
++    priority = Priority::DEFAULT;
+ }
+ 
+ }
+
+From 372a000414875f323147cd342dd8b4c8c7ebe260 Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Tue, 1 Dec 2020 08:29:53 +0100
+Subject: [PATCH 2/9] Add OptionBinds::getOption() method
+
+Sometime we want direct access to the underlying Option.
+E.g. we want to get its original value (not just a string representation)
+or find out the Option type.
+---
+ libdnf/conf/OptionBinds.cpp | 9 +++++++++
+ libdnf/conf/OptionBinds.hpp | 2 ++
+ 2 files changed, 11 insertions(+)
+
+diff --git a/libdnf/conf/OptionBinds.cpp b/libdnf/conf/OptionBinds.cpp
+index f7c67540b..ab53518a3 100644
+--- a/libdnf/conf/OptionBinds.cpp
++++ b/libdnf/conf/OptionBinds.cpp
+@@ -66,6 +66,15 @@ bool OptionBinds::Item::getAddValue() const
+     return addValue;
+ }
+ 
++const Option & OptionBinds::Item::getOption() const
++{
++    return *option;
++}
++
++Option & OptionBinds::Item::getOption()
++{
++    return *option;
++}
+ 
+ // =========== OptionBinds class ===============
+ 
+diff --git a/libdnf/conf/OptionBinds.hpp b/libdnf/conf/OptionBinds.hpp
+index 715c37e26..515120b93 100644
+--- a/libdnf/conf/OptionBinds.hpp
++++ b/libdnf/conf/OptionBinds.hpp
+@@ -55,6 +55,8 @@ class OptionBinds {
+         void newString(Option::Priority priority, const std::string & value);
+         std::string getValueString() const;
+         bool getAddValue() const;
++        const Option & getOption() const;
++        Option & getOption();
+ 
+     private:
+         friend class OptionBinds;
+
+From 3a686c378978c90538a6ac5d9826d52ce7c8daf6 Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Tue, 1 Dec 2020 08:37:14 +0100
+Subject: [PATCH 3/9] [context] Add dnf_repo_conf_from_gkeyfile() and
+ dnf_repo_conf_reset()
+
+dnf_repo_conf_from_gkeyfile():
+The function reloads repository configuration from GKeyFile.
+
+dnf_repo_conf_reset():
+Resets repository configuration options previously readed from repository
+configuration file to initial state.
+---
+ libdnf/dnf-repo.cpp | 64 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 64 insertions(+)
+
+diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp
+index 00f4bbf7b..9f283df55 100644
+--- a/libdnf/dnf-repo.cpp
++++ b/libdnf/dnf-repo.cpp
+@@ -936,6 +936,70 @@ dnf_repo_get_boolean(GKeyFile *keyfile,
+     return false;
+ }
+ 
++/* Resets repository configuration options previously readed from repository
++ * configuration file to initial state. */
++static void
++dnf_repo_conf_reset(libdnf::ConfigRepo &config)
++{
++    for (auto & item : config.optBinds()) {
++        auto & itemOption = item.second;
++        if (itemOption.getPriority() == libdnf::Option::Priority::REPOCONFIG) {
++            itemOption.getOption().reset();
++        }
++    }
++}
++
++/* Loads repository configuration from GKeyFile */
++static void
++dnf_repo_conf_from_gkeyfile(libdnf::ConfigRepo &config, const char *repoId, GKeyFile *gkeyFile)
++{
++    // Reset to the initial state before reloading the configuration.
++    dnf_repo_conf_reset(config);
++
++    g_auto(GStrv) keys = g_key_file_get_keys(gkeyFile, repoId, NULL, NULL);
++    for (auto it = keys; *it != NULL; ++it) {
++        auto key = *it;
++        g_autofree gchar *str = g_key_file_get_value(gkeyFile, repoId, key, NULL);
++        if (str) {
++            try {
++                auto & optionItem = config.optBinds().at(key);
++
++                if (dynamic_cast<libdnf::OptionStringList*>(&optionItem.getOption()) ||
++                    dynamic_cast<libdnf::OptionChild<libdnf::OptionStringList>*>(&optionItem.getOption())
++                ) {
++
++                    // reload list option from gKeyFile using g_key_file_get_string_list()
++                    // g_key_file_get_value () is problematic for multiline lists
++                    g_auto(GStrv) list = g_key_file_get_string_list(gkeyFile, repoId, key, NULL, NULL);
++                    if (list) {
++                        // list can be ['value1', 'value2, value3'] therefore we first join
++                        // to have 'value1, value2, value3'
++                        g_autofree gchar * tmp_strval = g_strjoinv(",", list);
++                        try {
++                            optionItem.newString(libdnf::Option::Priority::REPOCONFIG, tmp_strval);
++                        } catch (const std::exception & ex) {
++                            g_debug("Invalid configuration value: %s = %s in %s; %s", key, str, repoId, ex.what());
++                        }
++                    }
++
++                } else {
++
++                    // process other (non list) options
++                    try {
++                        optionItem.newString(libdnf::Option::Priority::REPOCONFIG, str);
++                    } catch (const std::exception & ex) {
++                        g_debug("Invalid configuration value: %s = %s in %s; %s", key, str, repoId, ex.what());
++                    }
++
++                }
++
++            } catch (const std::exception &) {
++                g_debug("Unknown configuration option: %s = %s in %s", key, str, repoId);
++            }
++        }
++    }
++}
++
+ /* Initialize (or potentially reset) repo & LrHandle from keyfile values. */
+ static gboolean
+ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+
+From 5f1c06a66fcdb2c2340c11c07c5ba0ea3abf4b77 Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Wed, 2 Dec 2020 11:37:26 +0100
+Subject: [PATCH 4/9] [context] Use dnf_repo_conf_from_gkeyfile() for repo
+ configuration reload
+
+The dnf_repo_set_key_file_data() uses dnf_repo_conf_from_gkeyfile() now.
+All occurrences of the direct use 'repo->getConfig()->.*set' and
+newString() were removed.
+---
+ libdnf/dnf-repo.cpp | 121 +++++++++-----------------------------------
+ 1 file changed, 25 insertions(+), 96 deletions(-)
+
+diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp
+index 9f283df55..2837580f7 100644
+--- a/libdnf/dnf-repo.cpp
++++ b/libdnf/dnf-repo.cpp
+@@ -1006,7 +1006,6 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+ {
+     DnfRepoPrivate *priv = GET_PRIVATE(repo);
+     guint cost;
+-    gboolean module_hotfixes = false;
+     g_autofree gchar *metadata_expire_str = NULL;
+     g_autofree gchar *mirrorlist = NULL;
+     g_autofree gchar *mirrorlisturl = NULL;
+@@ -1016,48 +1015,28 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+     g_autofree gchar *usr = NULL;
+     g_autofree gchar *usr_pwd = NULL;
+     g_autofree gchar *usr_pwd_proxy = NULL;
+-    g_auto(GStrv) baseurls;
+ 
+     auto repoId = priv->repo->getId().c_str();
+     g_debug("setting keyfile data for %s", repoId);
+ 
+-    /* skip_if_unavailable is optional */
+-    if (g_key_file_has_key(priv->keyfile, repoId, "skip_if_unavailable", NULL)) {
+-        bool skip = dnf_repo_get_boolean(priv->keyfile, repoId, "skip_if_unavailable");
+-        priv->repo->getConfig()->skip_if_unavailable().set(libdnf::Option::Priority::REPOCONFIG, skip);
+-    }
++    auto conf = priv->repo->getConfig();
+ 
+-    /* priority is optional */
+-    g_autofree gchar * priority_str = g_key_file_get_string(priv->keyfile, repoId, "priority", NULL);
+-    if (priority_str) {
+-        priv->repo->getConfig()->priority().set(libdnf::Option::Priority::REPOCONFIG, priority_str);
+-    }
++    // Reload repository configuration from keyfile.
++    dnf_repo_conf_from_gkeyfile(*conf, repoId, priv->keyfile);
+ 
+     /* cost is optional */
+     cost = g_key_file_get_integer(priv->keyfile, repoId, "cost", NULL);
+     if (cost != 0)
+         dnf_repo_set_cost(repo, cost);
+ 
+-    module_hotfixes = g_key_file_get_boolean(priv->keyfile, repoId, "module_hotfixes", NULL);
+-    priv->repo->getConfig()->module_hotfixes().set(libdnf::Option::Priority::REPOCONFIG, module_hotfixes);
+-
+     /* baseurl is optional; if missing, unset it */
+-    baseurls = g_key_file_get_string_list(priv->keyfile, repoId, "baseurl", NULL, NULL);
+-    if (baseurls) {
+-        // baseruls can be ['value1', 'value2, value3'] therefore we first join to have 'value1, value2, value3'
+-        g_autofree gchar * tmp_strval = g_strjoinv(",", baseurls);
+-
+-        auto & bindBaseurls = priv->repo->getConfig()->optBinds().at("baseurl");
+-        bindBaseurls.newString(libdnf::Option::Priority::REPOCONFIG, tmp_strval);
+-
+-        auto & repoBaseurls = priv->repo->getConfig()->baseurl();
+-        if (!repoBaseurls.getValue().empty()){
+-            auto len = repoBaseurls.getValue().size();
+-            g_strfreev(baseurls);
+-            baseurls = g_new0(char *, len + 1);
+-            for (size_t i = 0; i < len; ++i) {
+-                baseurls[i] = g_strdup(repoBaseurls.getValue()[i].c_str());
+-            }
++    g_auto(GStrv) baseurls = NULL;
++    auto & repoBaseurls = conf->baseurl().getValue();
++    if (!repoBaseurls.empty()){
++        auto len = repoBaseurls.size();
++        baseurls = g_new0(char *, len + 1);
++        for (size_t i = 0; i < len; ++i) {
++            baseurls[i] = g_strdup(repoBaseurls[i].c_str());
+         }
+     }
+     if (!lr_handle_setopt(priv->repo_handle, error, LRO_URLS, baseurls))
+@@ -1093,18 +1072,6 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+     if (!lr_handle_setopt(priv->repo_handle, error, LRO_METALINKURL, metalinkurl))
+         return FALSE;
+ 
+-    /* needed in order for addCountmeFlag() to use the same persistdir as DNF
+-     * would */
+-    if (metalinkurl)
+-        priv->repo->getConfig()->metalink().set(libdnf::Option::Priority::REPOCONFIG, metalinkurl);
+-    if (mirrorlisturl)
+-        priv->repo->getConfig()->mirrorlist().set(libdnf::Option::Priority::REPOCONFIG, mirrorlisturl);
+-
+-    if (g_key_file_has_key(priv->keyfile, repoId, "countme", NULL)) {
+-        bool countme = dnf_repo_get_boolean(priv->keyfile, repoId, "countme");
+-        priv->repo->getConfig()->countme().set(libdnf::Option::Priority::REPOCONFIG, countme);
+-    }
+-
+     /* file:// */
+     if (baseurls != NULL && baseurls[0] != NULL &&
+         mirrorlisturl == NULL && metalinkurl == NULL) {
+@@ -1150,42 +1117,20 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+         dnf_repo_set_location_tmp(repo, tmp->str);
+     }
+ 
+-    /* gpgkey is optional for gpgcheck=1, but required for repo_gpgcheck=1 */
++    // Sync priv->gpgkeys
+     g_strfreev(priv->gpgkeys);
+-    priv->gpgkeys = NULL;
+-
+-    g_auto(GStrv) gpgkeys;
+-    gpgkeys = g_key_file_get_string_list(priv->keyfile, repoId, "gpgkey", NULL, NULL);
+-
+-    if (gpgkeys) {
+-        // gpgkeys can be ['value1', 'value2, value3'] therefore we first join to have 'value1, value2, value3'
+-        g_autofree gchar * tmp_strval = g_strjoinv(",", gpgkeys);
+-
+-        auto & bindGpgkeys = priv->repo->getConfig()->optBinds().at("gpgkey");
+-        bindGpgkeys.newString(libdnf::Option::Priority::REPOCONFIG, tmp_strval);
+-
+-        auto & repoGpgkeys = priv->repo->getConfig()->gpgkey();
+-        if (!repoGpgkeys.getValue().empty()){
+-            auto len = repoGpgkeys.getValue().size();
+-            priv->gpgkeys = g_new0(char *, len + 1);
+-            for (size_t i = 0; i < len; ++i) {
+-                priv->gpgkeys[i] = g_strdup(repoGpgkeys.getValue()[i].c_str());
+-            }
+-        } else {
+-            /* Canonicalize the empty list to NULL for ease of checking elsewhere */
+-            g_strfreev(static_cast<gchar **>(g_steal_pointer(&priv->gpgkeys)));
++    auto & repoGpgkeys = conf->gpgkey().getValue();
++    if (!repoGpgkeys.empty()){
++        auto len = repoGpgkeys.size();
++        priv->gpgkeys = g_new0(char *, len + 1);
++        for (size_t i = 0; i < len; ++i) {
++            priv->gpgkeys[i] = g_strdup(repoGpgkeys[i].c_str());
+         }
++    } else {
++        priv->gpgkeys = NULL;
+     }
+ 
+-    if (g_key_file_has_key(priv->keyfile, repoId, "gpgcheck", NULL)) {
+-        auto gpgcheck_pkgs = dnf_repo_get_boolean(priv->keyfile, repoId, "gpgcheck");
+-        priv->repo->getConfig()->gpgcheck().set(libdnf::Option::Priority::REPOCONFIG, gpgcheck_pkgs);
+-    }
+-
+-    if (g_key_file_has_key(priv->keyfile, repoId, "repo_gpgcheck", NULL)) {
+-        auto gpgcheck_md = dnf_repo_get_boolean(priv->keyfile, repoId, "repo_gpgcheck");
+-        priv->repo->getConfig()->repo_gpgcheck().set(libdnf::Option::Priority::REPOCONFIG, gpgcheck_md);
+-    }
++    /* gpgkey is optional for gpgcheck=1, but required for repo_gpgcheck=1 */
+     auto gpgcheck_md = priv->repo->getConfig()->repo_gpgcheck().getValue();
+     if (gpgcheck_md && priv->gpgkeys == NULL) {
+         g_set_error_literal(error,
+@@ -1199,35 +1144,19 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+     if (!lr_handle_setopt(priv->repo_handle, error, LRO_GPGCHECK, (long)gpgcheck_md))
+         return FALSE;
+ 
+-    auto & repoExcludepkgs = priv->repo->getConfig()->excludepkgs();
+-    repoExcludepkgs.set(libdnf::Option::Priority::REPOCONFIG, "");
+-
+-    auto & bindExcludepkgs = priv->repo->getConfig()->optBinds().at("excludepkgs");
+-    if (auto excludepkgs = g_key_file_get_string(priv->keyfile, repoId, "exclude", NULL)) {
+-        bindExcludepkgs.newString(libdnf::Option::Priority::REPOCONFIG, excludepkgs);
+-        g_free(excludepkgs);
+-    }
+-    if (auto excludepkgs = g_key_file_get_string(priv->keyfile, repoId, "excludepkgs", NULL)) {
+-        bindExcludepkgs.newString(libdnf::Option::Priority::REPOCONFIG, excludepkgs);
+-        g_free(excludepkgs);
+-    }
+-
++    // Sync priv->exclude_packages
+     g_strfreev(priv->exclude_packages);
+-    if (!repoExcludepkgs.getValue().empty()) {
+-        auto len = repoExcludepkgs.getValue().size();
++    auto & repoExcludepkgs = conf->excludepkgs().getValue();
++    if (!repoExcludepkgs.empty()) {
++        auto len = repoExcludepkgs.size();
+         priv->exclude_packages = g_new0(char *, len + 1);
+         for (size_t i = 0; i < len; ++i) {
+-            priv->exclude_packages[i] = g_strdup(repoExcludepkgs.getValue()[i].c_str());
++            priv->exclude_packages[i] = g_strdup(repoExcludepkgs[i].c_str());
+         }
+     } else {
+         priv->exclude_packages = NULL;
+     }
+ 
+-    if (auto includepkgs = g_key_file_get_string(priv->keyfile, repoId, "includepkgs", NULL)) {
+-        priv->repo->getConfig()->includepkgs().set(libdnf::Option::Priority::REPOCONFIG, includepkgs);
+-        g_free(includepkgs);
+-    }
+-
+     /* proxy is optional */
+     proxy = g_key_file_get_string(priv->keyfile, repoId, "proxy", NULL);
+     auto repoProxy = proxy ? (strcasecmp(proxy, "_none_") == 0 ? NULL : proxy)
+
+From c6afbb4f93eee480c68201297e9c5c7afdf05dd3 Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Wed, 2 Dec 2020 13:26:51 +0100
+Subject: [PATCH 5/9] [context] Fix: "cost" and  "metadata_expire" repository
+ options
+
+Changes in dnf_repo_set_keyfile_data():
+Removed the dnf_repo_set_cost() call.
+Removed the "metadata_expire" parsing and dnf_repo_set_metadata_expire() call.
+
+The options were set earlier. The function calls were redundant and
+set the priority to the wrong RUNTIME value.
+---
+ libdnf/dnf-repo.cpp | 103 --------------------------------------------
+ 1 file changed, 103 deletions(-)
+
+diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp
+index 2837580f7..61d496750 100644
+--- a/libdnf/dnf-repo.cpp
++++ b/libdnf/dnf-repo.cpp
+@@ -816,93 +816,6 @@ dnf_repo_set_metadata_expire(DnfRepo *repo, guint metadata_expire)
+     priv->repo->getConfig()->metadata_expire().set(libdnf::Option::Priority::RUNTIME, metadata_expire);
+ }
+ 
+-/**
+- *  dnf_repo_parse_time_from_str
+- *  @expression: a expression to be parsed
+- *  @out_parsed_time: (out): return location for parsed time
+- *  @error: error item
+- *
+- *  Parse String into an integer value of seconds, or a human
+- *  readable variation specifying days, hours, minutes or seconds
+- *  until something happens. Note that due to historical president
+- *  -1 means "never", so this accepts that and allows
+- *  the word never, too.
+- *
+- *  Valid inputs: 100, 1.5m, 90s, 1.2d, 1d, 0xF, 0.1, -1, never.
+- *  Invalid inputs: -10, -0.1, 45.6Z, 1d6h, 1day, 1y.
+-
+- *  Returns: integer value in seconds
+- **/
+-
+-static gboolean
+-dnf_repo_parse_time_from_str(const gchar *expression, guint *out_parsed_time, GError **error)
+-{
+-    gint multiplier;
+-    gdouble parsed_time;
+-    gchar *endptr = NULL;
+-
+-    if (!g_strcmp0(expression, "")) {
+-        g_set_error_literal(error,
+-                            DNF_ERROR,
+-                            DNF_ERROR_FILE_INVALID,
+-                            "no metadata value specified");
+-        return FALSE;
+-    }
+-
+-    if (g_strcmp0(expression, "-1") == 0 ||
+-        g_strcmp0(expression,"never") == 0) {
+-        *out_parsed_time = G_MAXUINT;
+-        return TRUE; /* Note early return */
+-    }
+-
+-    gchar last_char = expression[ strlen(expression) - 1 ];
+-
+-    /* check if the input ends with h, m ,d ,s as units */
+-    if (g_ascii_isalpha(last_char)) {
+-        if (last_char == 'h')
+-            multiplier = 60 * 60;
+-        else if (last_char == 's')
+-            multiplier = 1;
+-        else if (last_char == 'm')
+-            multiplier = 60;
+-        else if (last_char == 'd')
+-            multiplier = 60 * 60 * 24;
+-        else {
+-            g_set_error(error, DNF_ERROR, DNF_ERROR_FILE_INVALID,
+-                        "unknown unit %c", last_char);
+-            return FALSE;
+-        }
+-    }
+-    else
+-        multiplier = 1;
+-
+-    /* convert expression into a double*/
+-    parsed_time = g_ascii_strtod(expression, &endptr);
+-
+-    /* failed to parse */
+-    if (expression == endptr) {
+-        g_set_error(error, DNF_ERROR, DNF_ERROR_INTERNAL_ERROR,
+-                    "failed to parse time: %s", expression);
+-        return FALSE;
+-    }
+-
+-    /* time can not be below zero */
+-    if (parsed_time < 0) {
+-        g_set_error(error, DNF_ERROR, DNF_ERROR_INTERNAL_ERROR,
+-                    "seconds value must not be negative %s",expression );
+-        return FALSE;
+-    }
+-
+-    /* time too large */
+-    if (parsed_time > G_MAXDOUBLE || (parsed_time * multiplier) > G_MAXUINT){
+-        g_set_error(error, DNF_ERROR, DNF_ERROR_INTERNAL_ERROR,
+-                    "time too large");
+-        return FALSE;
+-    }
+-
+-    *out_parsed_time = (guint) (parsed_time * multiplier);
+-    return TRUE;
+-}
+ /**
+  * dnf_repo_get_username_password_string:
+  */
+@@ -1005,8 +918,6 @@ static gboolean
+ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+ {
+     DnfRepoPrivate *priv = GET_PRIVATE(repo);
+-    guint cost;
+-    g_autofree gchar *metadata_expire_str = NULL;
+     g_autofree gchar *mirrorlist = NULL;
+     g_autofree gchar *mirrorlisturl = NULL;
+     g_autofree gchar *metalinkurl = NULL;
+@@ -1024,11 +935,6 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+     // Reload repository configuration from keyfile.
+     dnf_repo_conf_from_gkeyfile(*conf, repoId, priv->keyfile);
+ 
+-    /* cost is optional */
+-    cost = g_key_file_get_integer(priv->keyfile, repoId, "cost", NULL);
+-    if (cost != 0)
+-        dnf_repo_set_cost(repo, cost);
+-
+     /* baseurl is optional; if missing, unset it */
+     g_auto(GStrv) baseurls = NULL;
+     auto & repoBaseurls = conf->baseurl().getValue();
+@@ -1042,15 +948,6 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+     if (!lr_handle_setopt(priv->repo_handle, error, LRO_URLS, baseurls))
+         return FALSE;
+ 
+-    /* metadata_expire is optional, if shown, we parse the string to add the time */
+-    metadata_expire_str = g_key_file_get_string(priv->keyfile, repoId, "metadata_expire", NULL);
+-    if (metadata_expire_str) {
+-        guint metadata_expire;
+-        if (!dnf_repo_parse_time_from_str(metadata_expire_str, &metadata_expire, error))
+-            return FALSE;
+-        dnf_repo_set_metadata_expire(repo, metadata_expire);
+-    }
+-
+     /* the "mirrorlist" entry could be either a real mirrorlist, or a metalink entry */
+     mirrorlist = g_key_file_get_string(priv->keyfile, repoId, "mirrorlist", NULL);
+     if (mirrorlist) {
+
+From b11ac5204dc4c7048a7b6880813f2f9b1d8eb242 Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Wed, 2 Dec 2020 13:21:35 +0100
+Subject: [PATCH 6/9] [context] Fix: username, password, proxy, proxy_username,
+ proxy_password
+
+- Uses global configuration options when they are not defined
+  in the repository configuration.
+- proxy_username and proxy_password is urlEncoded before passing to librepo.
+---
+ libdnf/dnf-repo.cpp | 78 ++++++++++++++++++++++++++-------------------
+ 1 file changed, 46 insertions(+), 32 deletions(-)
+
+diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp
+index 61d496750..005721ef6 100644
+--- a/libdnf/dnf-repo.cpp
++++ b/libdnf/dnf-repo.cpp
+@@ -817,18 +817,22 @@ dnf_repo_set_metadata_expire(DnfRepo *repo, guint metadata_expire)
+ }
+ 
+ /**
+- * dnf_repo_get_username_password_string:
+- */
+-static gchar *
+-dnf_repo_get_username_password_string(const gchar *user, const gchar *pass)
+-{
+-    if (user == NULL && pass == NULL)
+-        return NULL;
+-    if (user != NULL && pass == NULL)
+-        return g_strdup(user);
+-    if (user == NULL && pass != NULL)
+-        return g_strdup_printf(":%s", pass);
+-    return g_strdup_printf("%s:%s", user, pass);
++* @brief Format user password string
++*
++* Returns user and password in user:password form. If encode is True,
++* special characters in user and password are URL encoded.
++*
++* @param user Username
++* @param passwd Password
++* @param encode If quote is True, special characters in user and password are URL encoded.
++* @return User and password in user:password form
++*/
++static std::string formatUserPassString(const std::string & user, const std::string & passwd, bool encode)
++{
++    if (encode)
++        return libdnf::urlEncode(user) + ":" + libdnf::urlEncode(passwd);
++    else
++        return user + ":" + passwd;
+ }
+ 
+ static gboolean
+@@ -921,11 +925,8 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+     g_autofree gchar *mirrorlist = NULL;
+     g_autofree gchar *mirrorlisturl = NULL;
+     g_autofree gchar *metalinkurl = NULL;
+-    g_autofree gchar *proxy = NULL;
+-    g_autofree gchar *pwd = NULL;
+-    g_autofree gchar *usr = NULL;
+-    g_autofree gchar *usr_pwd = NULL;
+-    g_autofree gchar *usr_pwd_proxy = NULL;
++    std::string tmp_str;
++    const char *tmp_cstr;
+ 
+     auto repoId = priv->repo->getId().c_str();
+     g_debug("setting keyfile data for %s", repoId);
+@@ -1054,26 +1055,39 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+         priv->exclude_packages = NULL;
+     }
+ 
+-    /* proxy is optional */
+-    proxy = g_key_file_get_string(priv->keyfile, repoId, "proxy", NULL);
+-    auto repoProxy = proxy ? (strcasecmp(proxy, "_none_") == 0 ? NULL : proxy)
+-        : dnf_context_get_http_proxy(priv->context);
+-    if (!lr_handle_setopt(priv->repo_handle, error, LRO_PROXY, repoProxy))
++    tmp_str = conf->proxy().getValue();
++    tmp_cstr = tmp_str.empty() ? dnf_context_get_http_proxy(priv->context) : tmp_str.c_str();
++    if (!lr_handle_setopt(priv->repo_handle, error, LRO_PROXY, tmp_cstr))
+         return FALSE;
+ 
+-    /* both parts of the proxy auth are optional */
+-    usr = g_key_file_get_string(priv->keyfile, repoId, "proxy_username", NULL);
+-    pwd = g_key_file_get_string(priv->keyfile, repoId, "proxy_password", NULL);
+-    usr_pwd_proxy = dnf_repo_get_username_password_string(usr, pwd);
+-    if (!lr_handle_setopt(priv->repo_handle, error, LRO_PROXYUSERPWD, usr_pwd_proxy))
++    // setup proxy username and password
++    tmp_cstr = NULL;
++    if (!conf->proxy_username().empty()) {
++        tmp_str = conf->proxy_username().getValue();
++        if (!tmp_str.empty()) {
++            if (conf->proxy_password().empty()) {
++                g_set_error(error, DNF_ERROR, DNF_ERROR_FILE_INVALID,
++                            "repo '%s': 'proxy_username' is set but not 'proxy_password'", repoId);
++                return FALSE;
++            }
++            tmp_str = formatUserPassString(tmp_str, conf->proxy_password().getValue(), true);
++            tmp_cstr = tmp_str.c_str();
++        }
++    }
++    if (!lr_handle_setopt(priv->repo_handle, error, LRO_PROXYUSERPWD, tmp_cstr))
+         return FALSE;
+ 
+-    /* both parts of the HTTP auth are optional */
+-    usr = g_key_file_get_string(priv->keyfile, repoId, "username", NULL);
+-    pwd = g_key_file_get_string(priv->keyfile, repoId, "password", NULL);
+-    usr_pwd = dnf_repo_get_username_password_string(usr, pwd);
+-    if (!lr_handle_setopt(priv->repo_handle, error, LRO_USERPWD, usr_pwd))
++    // setup username and password
++    tmp_cstr = NULL;
++    tmp_str = conf->username().getValue();
++    if (!tmp_str.empty()) {
++        // TODO Use URL encoded form, needs support in librepo
++        tmp_str = formatUserPassString(tmp_str, conf->password().getValue(), false);
++        tmp_cstr = tmp_str.c_str();
++    }
++    if (!lr_handle_setopt(priv->repo_handle, error, LRO_USERPWD, tmp_cstr))
+         return FALSE;
++
+     return TRUE;
+ }
+ 
+
+From fd07b29ccaec2648cfc050122e16e4846d7ac4be Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Wed, 2 Dec 2020 13:53:45 +0100
+Subject: [PATCH 7/9] [context] Add support for options: minrate, throttle,
+ bandwidth, timeout
+
+---
+ libdnf/dnf-repo.cpp | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp
+index 005721ef6..c6dd027be 100644
+--- a/libdnf/dnf-repo.cpp
++++ b/libdnf/dnf-repo.cpp
+@@ -1055,6 +1055,35 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+         priv->exclude_packages = NULL;
+     }
+ 
++    auto minrate = conf->minrate().getValue();
++    if (!lr_handle_setopt(priv->repo_handle, error, LRO_LOWSPEEDLIMIT, static_cast<long>(minrate)))
++        return FALSE;
++
++    auto maxspeed = conf->throttle().getValue();
++    if (maxspeed > 0 && maxspeed <= 1)
++        maxspeed *= conf->bandwidth().getValue();
++    if (maxspeed != 0 && maxspeed < minrate) {
++        g_set_error_literal(error, DNF_ERROR, DNF_ERROR_FILE_INVALID,
++                            "Maximum download speed is lower than minimum. "
++                            "Please change configuration of minrate or throttle");
++        return FALSE;
++    }
++    if (!lr_handle_setopt(priv->repo_handle, error, LRO_MAXSPEED, static_cast<int64_t>(maxspeed)))
++        return FALSE;
++
++    long timeout = conf->timeout().getValue();
++    if (timeout > 0) {
++        if (!lr_handle_setopt(priv->repo_handle, error, LRO_CONNECTTIMEOUT, timeout))
++            return FALSE;
++        if (!lr_handle_setopt(priv->repo_handle, error, LRO_LOWSPEEDTIME, timeout))
++            return FALSE;
++    } else {
++        if (!lr_handle_setopt(priv->repo_handle, error, LRO_CONNECTTIMEOUT, LRO_CONNECTTIMEOUT_DEFAULT))
++            return FALSE;
++        if (!lr_handle_setopt(priv->repo_handle, error, LRO_LOWSPEEDTIME, LRO_LOWSPEEDTIME_DEFAULT))
++            return FALSE;
++    }
++
+     tmp_str = conf->proxy().getValue();
+     tmp_cstr = tmp_str.empty() ? dnf_context_get_http_proxy(priv->context) : tmp_str.c_str();
+     if (!lr_handle_setopt(priv->repo_handle, error, LRO_PROXY, tmp_cstr))
+
+From c484de218699dff834fb32133cf502b2d0c64162 Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Thu, 3 Dec 2020 10:55:02 +0100
+Subject: [PATCH 8/9] [context] Remove g_key_file_get_string() from
+ dnf_repo_set_keyfile_data()
+
+Removes the remaining usage of g_key_file_get_string() from
+dnf_repo_set_keyfile_data(). Use the values from ConfigRepo instead.
+---
+ libdnf/dnf-repo.cpp | 23 +++++++++++------------
+ 1 file changed, 11 insertions(+), 12 deletions(-)
+
+diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp
+index c6dd027be..c5c50d55c 100644
+--- a/libdnf/dnf-repo.cpp
++++ b/libdnf/dnf-repo.cpp
+@@ -922,9 +922,6 @@ static gboolean
+ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+ {
+     DnfRepoPrivate *priv = GET_PRIVATE(repo);
+-    g_autofree gchar *mirrorlist = NULL;
+-    g_autofree gchar *mirrorlisturl = NULL;
+-    g_autofree gchar *metalinkurl = NULL;
+     std::string tmp_str;
+     const char *tmp_cstr;
+ 
+@@ -949,20 +946,22 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+     if (!lr_handle_setopt(priv->repo_handle, error, LRO_URLS, baseurls))
+         return FALSE;
+ 
++    const char *mirrorlisturl = NULL;
++    const char *metalinkurl = NULL;
++
+     /* the "mirrorlist" entry could be either a real mirrorlist, or a metalink entry */
+-    mirrorlist = g_key_file_get_string(priv->keyfile, repoId, "mirrorlist", NULL);
+-    if (mirrorlist) {
+-        if (strstr(mirrorlist, "metalink"))
+-            metalinkurl = static_cast<gchar *>(g_steal_pointer(&mirrorlist));
++    tmp_cstr = conf->mirrorlist().empty() ? NULL : conf->mirrorlist().getValue().c_str();
++    if (tmp_cstr) {
++        if (strstr(tmp_cstr, "metalink"))
++            metalinkurl = tmp_cstr;
+         else /* it really is a mirrorlist */
+-            mirrorlisturl = static_cast<gchar *>(g_steal_pointer(&mirrorlist));
++            mirrorlisturl = tmp_cstr;
+     }
+ 
+     /* let "metalink" entry override metalink-as-mirrorlist entry */
+-    if (g_key_file_has_key(priv->keyfile, repoId, "metalink", NULL)) {
+-        g_free(metalinkurl);
+-        metalinkurl = g_key_file_get_string(priv->keyfile, repoId, "metalink", NULL);
+-    }
++    tmp_cstr = conf->metalink().empty() ? NULL : conf->metalink().getValue().c_str();
++    if (tmp_cstr)
++        metalinkurl = tmp_cstr;
+ 
+     /* now set the final values (or unset them) */
+     if (!lr_handle_setopt(priv->repo_handle, error, LRO_MIRRORLISTURL, mirrorlisturl))
+
+From ce44d3dced4b800e3b7f80556fac1daf7e7fa49d Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Thu, 3 Dec 2020 11:43:18 +0100
+Subject: [PATCH 9/9] [context] Remove the extra gpgkey member from
+ DnfRepoPrivate
+
+The value stored in ConfigRepo can be used directly.
+---
+ libdnf/dnf-repo.cpp | 81 ++++++++++++++++++---------------------------
+ 1 file changed, 33 insertions(+), 48 deletions(-)
+
+diff --git a/libdnf/dnf-repo.cpp b/libdnf/dnf-repo.cpp
+index c5c50d55c..193999902 100644
+--- a/libdnf/dnf-repo.cpp
++++ b/libdnf/dnf-repo.cpp
+@@ -63,7 +63,6 @@
+ typedef struct
+ {
+     DnfRepoEnabled   enabled;
+-    gchar          **gpgkeys;
+     gchar          **exclude_packages;
+     gchar           *filename;      /* /etc/yum.repos.d/updates.repo */
+     gchar           *location;      /* /var/cache/PackageKit/metadata/fedora */
+@@ -97,7 +96,6 @@ dnf_repo_finalize(GObject *object)
+     DnfRepoPrivate *priv = GET_PRIVATE(repo);
+ 
+     g_free(priv->filename);
+-    g_strfreev(priv->gpgkeys);
+     g_strfreev(priv->exclude_packages);
+     g_free(priv->location_tmp);
+     g_free(priv->location);
+@@ -225,16 +223,13 @@ gchar **
+ dnf_repo_get_public_keys(DnfRepo *repo)
+ {
+     DnfRepoPrivate *priv = GET_PRIVATE(repo);
+-    g_autoptr(GPtrArray) ret = g_ptr_array_new();
+-    for (char **iter = priv->gpgkeys; iter && *iter; iter++) {
+-        const char *key = *iter;
+-        g_autofree gchar *key_bn = g_path_get_basename(key);
+-        /* transfer ownership to ptrarray */
+-        g_ptr_array_add(ret, g_build_filename(priv->location, key_bn, NULL));
++    const auto & keys = priv->repo->getConfig()->gpgkey().getValue();
++    gchar **ret = g_new0(gchar *, keys.size() + 1);
++    for (size_t i = 0; i < keys.size(); ++i) {
++        g_autofree gchar *key_bn = g_path_get_basename(keys[i].c_str());
++        ret[i] = g_build_filename(priv->location, key_bn, NULL);
+     }
+-    g_ptr_array_add(ret, NULL);
+-    /* transfer ownership of container and elements to caller */
+-    return (gchar**)g_ptr_array_free(static_cast<GPtrArray *>(g_steal_pointer(&ret)), FALSE);
++    return ret;
+ }
+ 
+ /**
+@@ -1014,22 +1009,9 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+         dnf_repo_set_location_tmp(repo, tmp->str);
+     }
+ 
+-    // Sync priv->gpgkeys
+-    g_strfreev(priv->gpgkeys);
+-    auto & repoGpgkeys = conf->gpgkey().getValue();
+-    if (!repoGpgkeys.empty()){
+-        auto len = repoGpgkeys.size();
+-        priv->gpgkeys = g_new0(char *, len + 1);
+-        for (size_t i = 0; i < len; ++i) {
+-            priv->gpgkeys[i] = g_strdup(repoGpgkeys[i].c_str());
+-        }
+-    } else {
+-        priv->gpgkeys = NULL;
+-    }
+-
+     /* gpgkey is optional for gpgcheck=1, but required for repo_gpgcheck=1 */
+-    auto gpgcheck_md = priv->repo->getConfig()->repo_gpgcheck().getValue();
+-    if (gpgcheck_md && priv->gpgkeys == NULL) {
++    auto repo_gpgcheck = conf->repo_gpgcheck().getValue();
++    if (repo_gpgcheck && conf->gpgkey().getValue().empty()) {
+         g_set_error_literal(error,
+                             DNF_ERROR,
+                             DNF_ERROR_FILE_INVALID,
+@@ -1038,7 +1020,7 @@ dnf_repo_set_keyfile_data(DnfRepo *repo, GError **error)
+     }
+ 
+     /* XXX: setopt() expects a long, so we need a long on the stack */
+-    if (!lr_handle_setopt(priv->repo_handle, error, LRO_GPGCHECK, (long)gpgcheck_md))
++    if (!lr_handle_setopt(priv->repo_handle, error, LRO_GPGCHECK, (long)repo_gpgcheck))
+         return FALSE;
+ 
+     // Sync priv->exclude_packages
+@@ -1750,28 +1732,31 @@ dnf_repo_update(DnfRepo *repo,
+         goto out;
+     }
+ 
+-    if (priv->gpgkeys &&
+-        (priv->repo->getConfig()->repo_gpgcheck().getValue() || priv->repo->getConfig()->gpgcheck().getValue())) {
+-        for (char **iter = priv->gpgkeys; iter && *iter; iter++) {
+-            const char *gpgkey = *iter;
+-            g_autofree char *gpgkey_name = g_path_get_basename(gpgkey);
+-            g_autofree char *key_tmp = g_build_filename(priv->location_tmp, gpgkey_name, NULL);
+-
+-            /* download and import public key */
+-            if ((g_str_has_prefix(gpgkey, "https://") ||
+-                  g_str_has_prefix(gpgkey, "file://"))) {
+-                g_debug("importing public key %s", gpgkey);
+-
+-                ret = dnf_repo_download_import_public_key(repo, gpgkey, key_tmp, error);
+-                if (!ret)
+-                    goto out;
+-            }
++    {
++        const auto & gpgkeys = priv->repo->getConfig()->gpgkey().getValue();
++        if (!gpgkeys.empty() &&
++            (priv->repo->getConfig()->repo_gpgcheck().getValue() || priv->repo->getConfig()->gpgcheck().getValue())) {
++            for (const auto & key : gpgkeys) {
++                const char *gpgkey = key.c_str();
++                g_autofree char *gpgkey_name = g_path_get_basename(gpgkey);
++                g_autofree char *key_tmp = g_build_filename(priv->location_tmp, gpgkey_name, NULL);
++
++                /* download and import public key */
++                if ((g_str_has_prefix(gpgkey, "https://") ||
++                    g_str_has_prefix(gpgkey, "file://"))) {
++                    g_debug("importing public key %s", gpgkey);
++
++                    ret = dnf_repo_download_import_public_key(repo, gpgkey, key_tmp, error);
++                    if (!ret)
++                        goto out;
++                }
+ 
+-            /* do we autoimport this into librpm? */
+-            if ((flags & DNF_REPO_UPDATE_FLAG_IMPORT_PUBKEY) > 0) {
+-                ret = dnf_repo_add_public_key(repo, key_tmp, error);
+-                if (!ret)
+-                    goto out;
++                /* do we autoimport this into librpm? */
++                if ((flags & DNF_REPO_UPDATE_FLAG_IMPORT_PUBKEY) > 0) {
++                    ret = dnf_repo_add_public_key(repo, key_tmp, error);
++                    if (!ret)
++                        goto out;
++                }
+             }
+         }
+     }
diff --git a/SOURCES/0005-Allow-loading-incomplete-cache-and-loading-ext-solv-files-without-its-repodata.patch b/SOURCES/0005-Allow-loading-incomplete-cache-and-loading-ext-solv-files-without-its-repodata.patch
new file mode 100644
index 0000000..30421d4
--- /dev/null
+++ b/SOURCES/0005-Allow-loading-incomplete-cache-and-loading-ext-solv-files-without-its-repodata.patch
@@ -0,0 +1,134 @@
+From 816d18d826dc7134e553eae28f4aaca9a27e2307 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
+Date: Mon, 2 Nov 2020 11:43:19 +0100
+Subject: [PATCH 1/2] Allow loading ext metadata even if only cache (solv) is
+ present
+
+If we have a valid (checksum matches with repomd) solv file for
+requested type of metadata allow using it even if we no longer have the
+original xml metadata.
+---
+ libdnf/dnf-sack.cpp | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/libdnf/dnf-sack.cpp b/libdnf/dnf-sack.cpp
+index 6a43f01e3..608103d18 100644
+--- a/libdnf/dnf-sack.cpp
++++ b/libdnf/dnf-sack.cpp
+@@ -371,20 +371,9 @@ load_ext(DnfSack *sack, HyRepo hrepo, _hy_repo_repodata which_repodata,
+     auto repoImpl = libdnf::repoGetImpl(hrepo);
+     Repo *repo = repoImpl->libsolvRepo;
+     const char *name = repo->name;
+-    auto fn = hrepo->getMetadataPath(which_filename);
+     FILE *fp;
+     gboolean done = FALSE;
+ 
+-    /* nothing set */
+-    if (fn.empty()) {
+-        g_set_error (error,
+-                     DNF_ERROR,
+-                     DNF_ERROR_NO_CAPABILITY,
+-                     _("no %1$s string for %2$s"),
+-                     which_filename, name);
+-        return FALSE;
+-    }
+-
+     char *fn_cache =  dnf_sack_give_cache_fn(sack, name, suffix);
+     fp = fopen(fn_cache, "r");
+     assert(libdnf::repoGetImpl(hrepo)->checksum);
+@@ -416,6 +405,17 @@ load_ext(DnfSack *sack, HyRepo hrepo, _hy_repo_repodata which_repodata,
+     if (done)
+         return TRUE;
+ 
++    auto fn = hrepo->getMetadataPath(which_filename);
++    /* nothing set */
++    if (fn.empty()) {
++        g_set_error (error,
++                     DNF_ERROR,
++                     DNF_ERROR_NO_CAPABILITY,
++                     _("no %1$s string for %2$s"),
++                     which_filename, name);
++        return FALSE;
++    }
++
+     fp = solv_xfopen(fn.c_str(), "r");
+     if (fp == NULL) {
+         g_set_error (error,
+
+From aa2a372158f1b264708f960f387218deea17ef2a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
+Date: Thu, 10 Dec 2020 14:21:03 +0100
+Subject: [PATCH 2/2] Extend repo loadCache method with ignoreMissing parameter
+
+This allows loading even incomplete cache of xml files, only repomd.xml
+is requried.
+
+= changelog =
+msg: Extend repo loadCache method with ignoreMissing parameter to allow
+loading incomplete xml cache (repomd.xml is required).
+type: enhancement
+resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1865803
+---
+ VERSION.cmake                | 2 +-
+ libdnf.spec                  | 2 +-
+ libdnf/repo/Repo-private.hpp | 2 +-
+ libdnf/repo/Repo.cpp         | 8 ++++++--
+ libdnf/repo/Repo.hpp         | 2 +-
+ 5 files changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/libdnf/repo/Repo-private.hpp b/libdnf/repo/Repo-private.hpp
+index 1e4ea4d20..c2ce369dc 100644
+--- a/libdnf/repo/Repo-private.hpp
++++ b/libdnf/repo/Repo-private.hpp
+@@ -111,7 +111,7 @@ class Repo::Impl {
+     ~Impl();
+ 
+     bool load();
+-    bool loadCache(bool throwExcept);
++    bool loadCache(bool throwExcept, bool ignoreMissing=false);
+     void downloadMetadata(const std::string & destdir);
+     bool isInSync();
+     void fetch(const std::string & destdir, std::unique_ptr<LrHandle> && h);
+diff --git a/libdnf/repo/Repo.cpp b/libdnf/repo/Repo.cpp
+index 34539e1ee..84702c294 100644
+--- a/libdnf/repo/Repo.cpp
++++ b/libdnf/repo/Repo.cpp
+@@ -379,7 +379,7 @@ std::string Repo::getLocalBaseurl() const
+ }
+ 
+ bool Repo::load() { return pImpl->load(); }
+-bool Repo::loadCache(bool throwExcept) { return pImpl->loadCache(throwExcept); }
++bool Repo::loadCache(bool throwExcept, bool ignoreMissing) { return pImpl->loadCache(throwExcept, ignoreMissing); }
+ void Repo::downloadMetadata(const std::string & destdir) { pImpl->downloadMetadata(destdir); }
+ bool Repo::getUseIncludes() const { return pImpl->useIncludes; }
+ void Repo::setUseIncludes(bool enabled) { pImpl->useIncludes = enabled; }
+@@ -963,11 +963,15 @@ std::unique_ptr<LrResult> Repo::Impl::lrHandlePerform(LrHandle * handle, const s
+     return result;
+ }
+ 
+-bool Repo::Impl::loadCache(bool throwExcept)
++bool Repo::Impl::loadCache(bool throwExcept, bool ignoreMissing)
+ {
+     std::unique_ptr<LrHandle> h(lrHandleInitLocal());
+     std::unique_ptr<LrResult> r;
+ 
++    if (ignoreMissing) {
++        handleSetOpt(h.get(), LRO_IGNOREMISSING, 1L);
++    }
++
+     // Fetch data
+     try {
+         r = lrHandlePerform(h.get(), getCachedir(), conf->repo_gpgcheck().getValue());
+diff --git a/libdnf/repo/Repo.hpp b/libdnf/repo/Repo.hpp
+index eeec651c3..be376f60c 100644
+--- a/libdnf/repo/Repo.hpp
++++ b/libdnf/repo/Repo.hpp
+@@ -167,7 +167,7 @@ struct Repo {
+     * @return true if fresh metadata were downloaded, false otherwise.
+     */
+     bool load();
+-    bool loadCache(bool throwExcept);
++    bool loadCache(bool throwExcept, bool ignoreMissing=false);
+     void downloadMetadata(const std::string & destdir);
+     bool getUseIncludes() const;
+     void setUseIncludes(bool enabled);
diff --git a/SOURCES/0005-Handle-exception-in-a-python-binding-by-the-proper-function-RhBug-1870492.patch b/SOURCES/0005-Handle-exception-in-a-python-binding-by-the-proper-function-RhBug-1870492.patch
deleted file mode 100644
index e1d771e..0000000
--- a/SOURCES/0005-Handle-exception-in-a-python-binding-by-the-proper-function-RhBug-1870492.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -u b/python/hawkey/goal-py.cpp b/python/hawkey/goal-py.cpp
---- b/python/hawkey/goal-py.cpp
-+++ b/python/hawkey/goal-py.cpp
-@@ -253,7 +253,7 @@
-     int c_value = PyObject_IsTrue(value);
-     self->goal->set_protect_running_kernel(c_value);
-     return 0;
--} CATCH_TO_PYTHON
-+} CATCH_TO_PYTHON_INT
- 
- static PyObject *
- erase(_GoalObject *self, PyObject *args, PyObject *kwds) try
-@@ -645,7 +645,7 @@
- 
- static PyGetSetDef goal_getsetters[] = {
-     {(char*)"actions",        (getter)get_actions, NULL, NULL, NULL},
--    {"protect_running_kernel", (getter)get_protect_running_kernel,
-+    {(char*)"protect_running_kernel", (getter)get_protect_running_kernel,
-         (setter)set_protect_running_kernel, NULL, NULL},
-     {NULL}                /* sentinel */
- };
diff --git a/SOURCES/0006-Add-new-option-module-stream-switch.patch b/SOURCES/0006-Add-new-option-module-stream-switch.patch
new file mode 100644
index 0000000..1a9cfd9
--- /dev/null
+++ b/SOURCES/0006-Add-new-option-module-stream-switch.patch
@@ -0,0 +1,53 @@
+From a1c96ecae6f2052407345a66293710109323de3a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
+Date: Tue, 21 Jul 2020 15:37:05 +0200
+Subject: [PATCH] Add new option module_stream_switch
+
+= changelog =
+msg: Add new options module_stream_switch
+type: enhancement
+---
+ libdnf/conf/ConfigMain.cpp | 3 +++
+ libdnf/conf/ConfigMain.hpp | 1 +
+ 2 files changed, 4 insertions(+)
+
+diff --git a/libdnf/conf/ConfigMain.cpp b/libdnf/conf/ConfigMain.cpp
+index 1ffd3b336..abfc2082b 100644
+--- a/libdnf/conf/ConfigMain.cpp
++++ b/libdnf/conf/ConfigMain.cpp
+@@ -278,6 +278,7 @@ class ConfigMain::Impl {
+     OptionBool downloadonly{false}; // runtime only option
+     OptionBool ignorearch{false};
+     OptionString module_platform_id{nullptr};
++    OptionBool module_stream_switch{false};
+ 
+     OptionString user_agent{getUserAgent()};
+     OptionBool countme{false};
+@@ -434,6 +435,7 @@ ConfigMain::Impl::Impl(Config & owner)
+     owner.optBinds().add("comment", comment);
+     owner.optBinds().add("ignorearch", ignorearch);
+     owner.optBinds().add("module_platform_id", module_platform_id);
++    owner.optBinds().add("module_stream_switch", module_stream_switch);
+     owner.optBinds().add("user_agent", user_agent);
+     owner.optBinds().add("countme", countme);
+     owner.optBinds().add("protect_running_kernel", protect_running_kernel);
+@@ -569,6 +571,7 @@ OptionBool & ConfigMain::downloadonly() { return pImpl->downloadonly; }
+ OptionBool & ConfigMain::ignorearch() { return pImpl->ignorearch; }
+ 
+ OptionString & ConfigMain::module_platform_id() { return pImpl->module_platform_id; }
++OptionBool & ConfigMain::module_stream_switch() { return pImpl->module_stream_switch; }
+ OptionString & ConfigMain::user_agent() { return pImpl->user_agent; }
+ OptionBool & ConfigMain::countme() { return pImpl->countme; }
+ OptionBool & ConfigMain::protect_running_kernel() {return pImpl->protect_running_kernel; }
+diff --git a/libdnf/conf/ConfigMain.hpp b/libdnf/conf/ConfigMain.hpp
+index 226c74d50..835e1fc65 100644
+--- a/libdnf/conf/ConfigMain.hpp
++++ b/libdnf/conf/ConfigMain.hpp
+@@ -125,6 +125,7 @@ class ConfigMain : public Config {
+     OptionBool & ignorearch();
+ 
+     OptionString & module_platform_id();
++    OptionBool & module_stream_switch();
+     OptionString & user_agent();
+     OptionBool & countme();
+     OptionBool & protect_running_kernel();
diff --git a/SOURCES/0007-Fix-removal-step-during-modular-enable-in-context-part.patch b/SOURCES/0007-Fix-removal-step-during-modular-enable-in-context-part.patch
new file mode 100644
index 0000000..d43bfcc
--- /dev/null
+++ b/SOURCES/0007-Fix-removal-step-during-modular-enable-in-context-part.patch
@@ -0,0 +1,23 @@
+From 831d023c3c6fb4a28903cb3170efdd9f85645e1a Mon Sep 17 00:00:00 2001
+From: Jaroslav Mracek <jmracek@redhat.com>
+Date: Fri, 20 Nov 2020 16:30:17 +0100
+Subject: [PATCH] Fix removal step during modular enable in context part
+
+It resolves `free(): double free detected in tcache 2`
+---
+ libdnf/dnf-context.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libdnf/dnf-context.cpp b/libdnf/dnf-context.cpp
+index 069267119..bc4a15b68 100644
+--- a/libdnf/dnf-context.cpp
++++ b/libdnf/dnf-context.cpp
+@@ -3087,7 +3087,7 @@ static std::vector<std::tuple<libdnf::ModulePackageContainer::ModuleErrorType, s
+             }
+             for (auto iter = stream_dict.begin(); iter != stream_dict.end(); ) {
+                 if (iter->first != enabledOrDefaultStream) {
+-                    stream_dict.erase(iter);
++                    stream_dict.erase(iter++);
+                 } else {
+                     ++iter;
+                 }
diff --git a/SOURCES/0008-Update-translations.patch b/SOURCES/0008-Update-translations.patch
new file mode 100644
index 0000000..7568440
--- /dev/null
+++ b/SOURCES/0008-Update-translations.patch
@@ -0,0 +1,3698 @@
+From 552eaed4597f161784d508ff20bc31c8f42c9d2e Mon Sep 17 00:00:00 2001
+From: Marek Blaha <mblaha@redhat.com>
+Date: Mon, 8 Mar 2021 16:11:10 +0100
+Subject: [PATCH] Update translations
+
+---
+ po/CMakeLists.txt |   1 +
+ po/fr.po          | 289 +++++++++++++++++++++-------
+ po/ja.po          | 291 ++++++++++++++++++++--------
+ po/ko.po          | 469 ++++++++++++++++++++++++++++++----------------
+ po/libdnf.pot     | 261 +++++++++++++++++++-------
+ po/zh_CN.po       | 436 +++++++++++++++++++++++++++---------------
+ 6 files changed, 1221 insertions(+), 526 deletions(-)
+
+diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
+index 4f106fc3..1ef50556 100644
+--- a/po/CMakeLists.txt
++++ b/po/CMakeLists.txt
+@@ -15,6 +15,7 @@ if (GIT_FOUND)
+         OUTPUT_VARIABLE CURRENT_BRANCH
+         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+         )
++    set(CURRENT_BRANCH "rhel-8")
+ 
+     # output _weblate-clone is never created so the clonning of weblate repo is always processed
+     # and fresh *.po files are used
+diff --git a/po/fr.po b/po/fr.po
+index 055cdaff..7fa62f14 100644
+--- a/po/fr.po
++++ b/po/fr.po
+@@ -5,20 +5,21 @@
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
+ # Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata
+ # Julien Humbert <julroy67@gmail.com>, 2020.
++# Sundeep Anand <suanand@redhat.com>, 2021.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2020-10-05 09:18-0400\n"
+-"PO-Revision-Date: 2020-06-29 02:40+0000\n"
+-"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
+-"Language-Team: French <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/fr/>\n"
++"POT-Creation-Date: 2021-02-22 09:52+0100\n"
++"PO-Revision-Date: 2021-03-08 11:09+0000\n"
++"Last-Translator: Sundeep Anand <suanand@redhat.com>\n"
++"Language-Team: French <https://translate.fedoraproject.org/projects/dnf/libdnf-rhel-8/fr/>\n"
+ "Language: fr\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=2; plural=n > 1;\n"
+-"X-Generator: Weblate 4.1.1\n"
++"X-Generator: Weblate 4.5.1\n"
+ 
+ #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
+ msgid "no value specified"
+@@ -39,17 +40,17 @@ msgstr "n’a pu convertir « %s » en octets"
+ msgid "unknown unit '%s'"
+ msgstr "unité « %s » inconnue"
+ 
+-#: libdnf/conf/ConfigMain.cpp:332
++#: libdnf/conf/ConfigMain.cpp:334
+ #, c-format
+ msgid "percentage '%s' is out of range"
+ msgstr "le pourcentage « %s » est en dehors des limites"
+ 
+-#: libdnf/conf/OptionBinds.cpp:76
++#: libdnf/conf/OptionBinds.cpp:85
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" does not exist"
+ msgstr "Configuration : OptionBinding ayant pour id « %s » n’existe pas"
+ 
+-#: libdnf/conf/OptionBinds.cpp:88
++#: libdnf/conf/OptionBinds.cpp:97
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" already exists"
+ msgstr "Configuration : OptionBinding ayant pour « %s » n’existe pas"
+@@ -60,7 +61,7 @@ msgid "invalid boolean value '%s'"
+ msgstr "valeur booléenne invalide : « %s »"
+ 
+ #: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158
+-#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59
++#: libdnf/conf/OptionString.cpp:64 libdnf/conf/OptionStringList.cpp:59
+ #, c-format
+ msgid "'%s' is not an allowed value"
+ msgstr "la valeur « %s » n’est pas autorisée"
+@@ -94,10 +95,111 @@ msgstr "le chemin fourni « %s » n’existe pas."
+ msgid "could not convert '%s' to seconds"
+ msgstr "n’a pu convertir « %s » en secondes"
+ 
+-#: libdnf/conf/OptionString.cpp:74
++#: libdnf/conf/OptionString.cpp:79
+ msgid "GetValue(): Value not set"
+ msgstr "GetValue() : valeur non définie"
+ 
++#: libdnf/dnf-context.cpp:3033 libdnf/dnf-context.cpp:3042
++#, c-format
++msgid "Cannot enable more streams from module '%s' at the same time"
++msgstr "Ne peut pas activer plus de flux du module '%s' en même temps"
++
++#: libdnf/dnf-context.cpp:3051 libdnf/dnf-context.cpp:3069
++#, c-format
++msgid ""
++"Cannot enable module '%1$s' stream '%2$s': State of module already modified"
++msgstr ""
++"Impossible d'activer le flux de module '%1$s' stream '%2$s' : état du module"
++" déjà modifié"
++
++#: libdnf/dnf-context.cpp:3116
++#, c-format
++msgid "Modular dependency problem with Defaults: %s"
++msgstr "Problème de dépendance modulaire avec les valeurs par défaut : %s"
++
++#: libdnf/dnf-context.cpp:3119
++#, c-format
++msgid "Modular dependency problem: %s"
++msgstr "Problème de dépendance modulaire : %s"
++
++#: libdnf/dnf-context.cpp:3153 libdnf/dnf-context.cpp:3177
++#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3227
++#: libdnf/dnf-context.cpp:3243 libdnf/dnf-context.cpp:3275
++#, c-format
++msgid "Unable to resolve argument '%s'"
++msgstr "Impossible de résoudre le paramètre ’%s’"
++
++#: libdnf/dnf-context.cpp:3160
++#, c-format
++msgid ""
++"Only module name is required. Ignoring unneeded information in argument: "
++"'%s'"
++msgstr ""
++"Seul le nom du module est nécessaire. Les paramètres inutiles ont été "
++"ignorés : ’%s’"
++
++#: libdnf/dnf-context.cpp:3174
++#, c-format
++msgid "Cannot reset module '%s': State of module already modified"
++msgstr ""
++"Impossible de réinitialiser le module '%s' : État du module déjà modifié"
++
++#: libdnf/dnf-context.cpp:3185
++#, c-format
++msgid "Cannot disable module '%s': State of module already modified"
++msgstr "Impossible de désactiver le module '%s' : État du module déjà modifié"
++
++#: libdnf/dnf-context.cpp:3216 libdnf/dnf-context.cpp:3307
++msgid "No modular data available"
++msgstr "Aucune donnée modulaire disponible"
++
++#: libdnf/dnf-context.cpp:3233
++#, c-format
++msgid "Ignoring unneeded information in argument: '%s'"
++msgstr "Ignorer les informations inutiles dans l'argumentation : '%s'"
++
++#: libdnf/dnf-context.cpp:3271
++#, c-format
++msgid ""
++"Problem during enablement of dependency tree for moduele '%1$s' stream "
++"'%2$s': %3$s"
++msgstr ""
++"Problème lors de l'activation de l'arbre des dépendances pour le flux de "
++"module '%1$s' stream '%2$s' : %3$s"
++
++#: libdnf/dnf-context.cpp:3283
++msgid "Problems appeared for module enable request"
++msgstr "Des problèmes sont apparus pour la demande d'activation du module"
++
++#: libdnf/dnf-context.cpp:3338
++msgid "Problems appeared for module reset request"
++msgstr ""
++"Des problèmes sont apparus pour la demande de réinitialisation des modules"
++
++#: libdnf/dnf-context.cpp:3340
++msgid "Problems appeared for module disable request"
++msgstr "Des problèmes sont apparus pour la demande de désactivation du module"
++
++#: libdnf/dnf-context.cpp:3376
++#, c-format
++msgid ""
++"The operation would result in switching of module '%s' stream '%s' to stream"
++" '%s'"
++msgstr ""
++"Le résultat de l’opération sera le basculement du flux « %s » du module « %s"
++" » vers le flux « %s »"
++
++#: libdnf/dnf-context.cpp:3380
++msgid ""
++"It is not possible to switch enabled streams of a module.\n"
++"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset <module_name>' command. After you reset the module, you can install the other stream."
++msgstr ""
++"Il n’est pas possible de basculer les flux actifs d’un module. Il est "
++"recommandé de retirer tout contenu installé par le module, et de "
++"réinitialiser le mode en utilisant la commande 'microdnf module reset "
++"<module_name>’. Après la réinitialisation du module, vous pouvez installer "
++"les autres flux."
++
+ #: libdnf/dnf-goal.cpp:68
+ msgid "Could not depsolve transaction; "
+ msgstr "Impossible de depsolve la transaction ; "
+@@ -181,84 +283,84 @@ msgstr "n’a pas pu trouver le package %s"
+ 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)"
+ 
+-#: libdnf/dnf-sack.cpp:381
++#: libdnf/dnf-sack.cpp:395
++msgid "failed to add solv"
++msgstr "n’a pu ajouter solv"
++
++#: libdnf/dnf-sack.cpp:414
+ #, c-format
+ msgid "no %1$s string for %2$s"
+ msgstr "aucune chaine %1$s pour %2$s"
+ 
+-#: libdnf/dnf-sack.cpp:404
+-msgid "failed to add solv"
+-msgstr "n’a pu ajouter solv"
+-
+-#: libdnf/dnf-sack.cpp:422
++#: libdnf/dnf-sack.cpp:424
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr "n’a pas pu ouvrir : %s"
+ 
+-#: libdnf/dnf-sack.cpp:501
++#: libdnf/dnf-sack.cpp:503
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr "n’a pas pu créer le fichier temporaire : %s"
+ 
+-#: libdnf/dnf-sack.cpp:511
++#: libdnf/dnf-sack.cpp:513
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr "n’a pas pu ouvrir le fichier tmp : %s"
+ 
+-#: libdnf/dnf-sack.cpp:523
++#: libdnf/dnf-sack.cpp:525
+ #, c-format
+ msgid "write_main() failed writing data: %i"
+ msgstr "write_main() n’a pu écrire les données : %i"
+ 
+-#: libdnf/dnf-sack.cpp:540
++#: libdnf/dnf-sack.cpp:542
+ 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:605
++#: libdnf/dnf-sack.cpp:607
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr "n’a pas pu créer le fichier temporaire %s"
+ 
+-#: libdnf/dnf-sack.cpp:623
++#: libdnf/dnf-sack.cpp:625
+ #, c-format
+ msgid "write_ext(%1$d) has failed: %2$d"
+ msgstr "write_ext(%1$d) a échoué : %2$d"
+ 
+-#: libdnf/dnf-sack.cpp:678
++#: libdnf/dnf-sack.cpp:680
+ msgid "null repo md file"
+ msgstr "null repo md file"
+ 
+-#: libdnf/dnf-sack.cpp:687
++#: libdnf/dnf-sack.cpp:689
+ #, 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:701
++#: libdnf/dnf-sack.cpp:703
+ msgid "repo_add_solv() has failed."
+ msgstr "repo_add_solv() a échoué."
+ 
+-#: libdnf/dnf-sack.cpp:714
++#: libdnf/dnf-sack.cpp:716
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+ msgstr "échec du chargement du MD_TYPE_PRIMARY."
+ 
+-#: libdnf/dnf-sack.cpp:727
++#: libdnf/dnf-sack.cpp:729
+ msgid "repo_add_repomdxml/rpmmd() has failed."
+ msgstr "repo_add_repomdxml/rpmmd() a échoué."
+ 
+-#: libdnf/dnf-sack.cpp:794
++#: libdnf/dnf-sack.cpp:796
+ msgid "failed to auto-detect architecture"
+ msgstr "n’a pu auto-détecter l’architecture"
+ 
+-#: libdnf/dnf-sack.cpp:919
++#: libdnf/dnf-sack.cpp:961
+ #, c-format
+ msgid "failed creating cachedir %s"
+ msgstr "n’a pu créer le cachedir %s"
+ 
+-#: libdnf/dnf-sack.cpp:1696
++#: libdnf/dnf-sack.cpp:1738
+ msgid "failed loading RPMDB"
+ msgstr "n’a pu télécharger RPMDB"
+ 
+-#: libdnf/dnf-sack.cpp:2403
++#: libdnf/dnf-sack.cpp:2461
+ #, c-format
+ msgid "No module defaults found: %s"
+ msgstr "Aucun module par défaut n’a été trouvé : %s"
+@@ -348,7 +450,7 @@ msgstr "Erreur %i lors du test transactionnel"
+ msgid "Error %i running transaction"
+ msgstr "Erreur %i pendant la transaction"
+ 
+-#: libdnf/dnf-transaction.cpp:1473
++#: libdnf/dnf-transaction.cpp:1474
+ #, c-format
+ msgid "Transaction did not go to writing phase, but returned no error(%i)"
+ msgstr ""
+@@ -589,7 +691,16 @@ msgstr "aucune solution, n’a pas pu supprimer le package protégé"
+ msgid "no solution possible"
+ msgstr "aucune solution n’est possible"
+ 
+-#: libdnf/goal/Goal.cpp:1479
++#: libdnf/goal/Goal.cpp:1193
++msgid "Problem: "
++msgstr "Problème : "
++
++#: libdnf/goal/Goal.cpp:1198
++#, c-format
++msgid "Problem %d: "
++msgstr "Probléme %d : "
++
++#: libdnf/goal/Goal.cpp:1525
+ msgid ""
+ "The operation would result in removing the following protected packages: "
+ msgstr ""
+@@ -655,32 +766,56 @@ msgstr "Impossible d’activer les flux pour le module « %s »"
+ msgid "Conflicting defaults with repo '%s': %s"
+ msgstr "Valeurs par défaut en conflit avec le dépôt « %s » : %s"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1569
++#: libdnf/module/ModulePackageContainer.cpp:829
++msgid "Installing module profiles:\n"
++msgstr "Installation des profils de module :\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:844
++msgid "Disabling module profiles:\n"
++msgstr "Désactivation des profils de module :\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:859
++msgid "Enabling module streams:\n"
++msgstr "Activation des flux de modules :\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:873
++msgid "Switching module streams:\n"
++msgstr "Basculement des flux de modules :\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:891
++msgid "Disabling modules:\n"
++msgstr "Désactivation des modules :\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:902
++msgid "Resetting modules:\n"
++msgstr "Réinitialisation des modules :\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:1586
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data at '%s'"
+ msgstr "Impossible de charger les données de sécurité à « %s »"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1575
++#: libdnf/module/ModulePackageContainer.cpp:1592
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
+ msgstr ""
+ "Impossible de charger les données de sécurité modulaires pour le module "
+ "« %s : %s »"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1639
++#: libdnf/module/ModulePackageContainer.cpp:1656
+ #, c-format
+ msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
+ msgstr ""
+ "Impossible de créer le dossier « %s » pour les données de sécurité "
+ "modulaires : %s"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1661
++#: libdnf/module/ModulePackageContainer.cpp:1678
+ #, c-format
+ msgid "Unable to save a modular Fail Safe data to '%s'"
+ msgstr ""
+ "Impossible d’enregistrer les données de sécurité modulaires vers « %s »"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1686
++#: libdnf/module/ModulePackageContainer.cpp:1703
+ #, c-format
+ msgid "Unable to remove a modular Fail Safe data in '%s'"
+ msgstr ""
+@@ -769,12 +904,18 @@ 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:546
++#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:534 libdnf/repo/Repo.cpp:581
++#: libdnf/repo/Repo.cpp:1368
++#, c-format
++msgid "repo '%s': 'basecachedir' is not set"
++msgstr "repo '%s' : 'basecachedir' n'est pas fixé"
++
++#: 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:583 libdnf/repo/Repo.cpp:1672
++#: libdnf/repo/Repo.cpp:594 libdnf/repo/Repo.cpp:1693
+ msgid ""
+ "Maximum download speed is lower than minimum. Please change configuration of"
+ " minrate or throttle"
+@@ -782,139 +923,150 @@ 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:633 libdnf/repo/Repo.cpp:655
++#: libdnf/repo/Repo.cpp:625
++#, c-format
++msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
++msgstr "repo '%s' : 'proxy_username' est défini mais pas 'proxy_password'."
++
++#: libdnf/repo/Repo.cpp:647 libdnf/repo/Repo.cpp:669
+ #, c-format
+ msgid "%s: gpgme_data_new_from_fd(): %s"
+ msgstr "%s : gpgme_data_new_from_fd() : %s"
+ 
+-#: libdnf/repo/Repo.cpp:641 libdnf/repo/Repo.cpp:663
++#: libdnf/repo/Repo.cpp:655 libdnf/repo/Repo.cpp:677
+ #, c-format
+ msgid "%s: gpgme_op_import(): %s"
+ msgstr "%s : gpgme_op_import() : %s"
+ 
+-#: libdnf/repo/Repo.cpp:686 libdnf/repo/Repo.cpp:752 libdnf/repo/Repo.cpp:880
++#: libdnf/repo/Repo.cpp:700 libdnf/repo/Repo.cpp:766 libdnf/repo/Repo.cpp:894
+ #, c-format
+ msgid "%s: gpgme_ctx_set_engine_info(): %s"
+ msgstr "%s : gpgme_ctx_set_engine_info() : %s"
+ 
+-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:777
++#: libdnf/repo/Repo.cpp:727 libdnf/repo/Repo.cpp:791
+ #, c-format
+ msgid "can not list keys: %s"
+ msgstr "n’a pas pu lister les clés : %s"
+ 
+-#: libdnf/repo/Repo.cpp:806
++#: libdnf/repo/Repo.cpp:820
+ #, c-format
+ msgid "Failed to retrieve GPG key for repo '%s': %s"
+ msgstr "Impossible de récupérer la clé GPG pour le dépôt « %s » : %s"
+ 
+-#: libdnf/repo/Repo.cpp:859
++#: libdnf/repo/Repo.cpp:873
+ #, c-format
+ msgid "repo %s: 0x%s already imported"
+ msgstr "dépôt %s : 0x%s déjà importé"
+ 
+-#: libdnf/repo/Repo.cpp:887
++#: libdnf/repo/Repo.cpp:901
+ #, c-format
+ msgid "repo %s: imported key 0x%s."
+ msgstr "dépôt %s : clé importée 0x%s."
+ 
+-#: libdnf/repo/Repo.cpp:1131
++#: libdnf/repo/Repo.cpp:1149
+ #, 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:1150
++#: libdnf/repo/Repo.cpp:1168
+ #, 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:1173
++#: libdnf/repo/Repo.cpp:1191
+ #, 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:1179
++#: libdnf/repo/Repo.cpp:1197
+ #, 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:1204
++#: libdnf/repo/Repo.cpp:1222
+ #, c-format
+ msgid "reviving: '%s' can be revived - repomd matches."
+ msgstr "relance : « %s » peut être relancé - le repomd correspond."
+ 
+-#: libdnf/repo/Repo.cpp:1206
++#: libdnf/repo/Repo.cpp:1224
+ #, c-format
+ msgid "reviving: failed for '%s', mismatched repomd."
+ msgstr "relance : échec pour « %s », le repomd ne correspond pas."
+ 
+-#: libdnf/repo/Repo.cpp:1224
++#: libdnf/repo/Repo.cpp:1242
+ #, c-format
+ msgid "Cannot create repo destination directory \"%s\": %s"
+ msgstr "Impossible de créer le répertoire de destination du dépôt « %s » : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1230
++#: libdnf/repo/Repo.cpp:1248
+ #, c-format
+ msgid "Cannot create repo temporary directory \"%s\": %s"
+ msgstr "Impossible de créer le répertoire temporaire du dépôt « %s » : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1244
++#: libdnf/repo/Repo.cpp:1262
+ #, c-format
+ msgid "Cannot create directory \"%s\": %s"
+ msgstr "Impossible de créer le répertoire « %s » : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1267
++#: libdnf/repo/Repo.cpp:1285
+ #, c-format
+ msgid "Cannot rename directory \"%s\" to \"%s\": %s"
+ msgstr "Impossible de renommer le répertoire « %s » en « %s » : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1290
++#: libdnf/repo/Repo.cpp:1308
+ #, c-format
+ msgid "repo: using cache for: %s"
+ msgstr "dépôt : utilisation du cache pour : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1302
++#: libdnf/repo/Repo.cpp:1320
+ #, 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:1306
++#: libdnf/repo/Repo.cpp:1324
+ #, c-format
+ msgid "repo: downloading from remote: %s"
+ msgstr "dépôt : téléchargement à distance en provenance de : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1312
++#: libdnf/repo/Repo.cpp:1330
+ #, c-format
+ msgid "Failed to download metadata for repo '%s': %s"
+ msgstr "Échec du téléchargement des métadonnées pour le dépôt « %s » : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1338
++#: libdnf/repo/Repo.cpp:1356
+ msgid "getCachedir(): Computation of SHA256 failed"
+ msgstr "getCachedir() : échec du calcul de SHA256"
+ 
+-#: libdnf/repo/Repo.cpp:1363
++#: libdnf/repo/Repo.cpp:1384
+ #, c-format
+ msgid "Cannot create persistdir \"%s\": %s"
+ msgstr "Impossible de créer le dossier persistant « %s » : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1763
++#: libdnf/repo/Repo.cpp:1715
++msgid "'proxy_username' is set but not 'proxy_password'"
++msgstr ""
++"Le nom d'utilisateur \"proxy_username\" est défini mais pas le mot de passe "
++"\"proxy_password\""
++
++#: libdnf/repo/Repo.cpp:1787
+ 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:1780
++#: libdnf/repo/Repo.cpp:1804
+ #, c-format
+ msgid "PackageTarget initialization failed: %s"
+ msgstr "L’initialisation de Package Target a échoué : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1886
++#: libdnf/repo/Repo.cpp:1910
+ #, c-format
+ msgid "Cannot open %s: %s"
+ msgstr "impossible d’ouvrir %s : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1930
++#: libdnf/repo/Repo.cpp:1954
+ #, c-format
+ msgid "Log handler with id %ld doesn't exist"
+ msgstr "Log handler ayant pour id %ld n’existe pas"
+@@ -975,6 +1127,3 @@ msgstr ""
+ 
+ #~ msgid "Bad id for repo: %s, byte = %s %d"
+ #~ msgstr "ID erroné pour le dépôt : %s, byte = %s %d"
+-
+-#~ msgid "failed calculating RPMDB checksum"
+-#~ msgstr "n’a pu calculer la somme de contrôle RPMDB"
+diff --git a/po/ja.po b/po/ja.po
+index b9064ee6..923b190c 100644
+--- a/po/ja.po
++++ b/po/ja.po
+@@ -1,20 +1,21 @@
+ # Casey Jones <nahareport@live.com>, 2018. #zanata
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
+ # Casey Jones <nahareport@yahoo.com>, 2020.
++# Sundeep Anand <suanand@redhat.com>, 2021.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2020-10-05 09:18-0400\n"
+-"PO-Revision-Date: 2020-05-05 09:40+0000\n"
+-"Last-Translator: Casey Jones <nahareport@yahoo.com>\n"
+-"Language-Team: Japanese <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/ja/>\n"
++"POT-Creation-Date: 2021-02-22 09:52+0100\n"
++"PO-Revision-Date: 2021-03-08 11:09+0000\n"
++"Last-Translator: Sundeep Anand <suanand@redhat.com>\n"
++"Language-Team: Japanese <https://translate.fedoraproject.org/projects/dnf/libdnf-rhel-8/ja/>\n"
+ "Language: ja\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=1; plural=0;\n"
+-"X-Generator: Weblate 4.0.3\n"
++"X-Generator: Weblate 4.5.1\n"
+ 
+ #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
+ msgid "no value specified"
+@@ -35,17 +36,17 @@ msgstr "'%s' を バイトへ変換できませんでした"
+ msgid "unknown unit '%s'"
+ msgstr "不明な単位 '%s'"
+ 
+-#: libdnf/conf/ConfigMain.cpp:332
++#: libdnf/conf/ConfigMain.cpp:334
+ #, c-format
+ msgid "percentage '%s' is out of range"
+ msgstr "パーセンテージ '%s' が範囲外にあります"
+ 
+-#: libdnf/conf/OptionBinds.cpp:76
++#: libdnf/conf/OptionBinds.cpp:85
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" does not exist"
+ msgstr "設定: id \"%s\" を伴う OptionBinding は存在しません"
+ 
+-#: libdnf/conf/OptionBinds.cpp:88
++#: libdnf/conf/OptionBinds.cpp:97
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" already exists"
+ msgstr "設定: id \"%s\" を伴う OptionBinding はすでに存在します"
+@@ -56,7 +57,7 @@ msgid "invalid boolean value '%s'"
+ msgstr "無効な boolean 値 '%s'"
+ 
+ #: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158
+-#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59
++#: libdnf/conf/OptionString.cpp:64 libdnf/conf/OptionStringList.cpp:59
+ #, c-format
+ msgid "'%s' is not an allowed value"
+ msgstr "'%s' 値は許可されていない値です"
+@@ -68,12 +69,12 @@ msgstr "無効な値"
+ #: libdnf/conf/OptionNumber.cpp:73
+ #, c-format
+ msgid "given value [%d] should be less than allowed value [%d]."
+-msgstr "指定された値 [%d] は許可された値 [%d]より小さくしてください"
++msgstr "指定された値 [%d] は許可された値 [%d]より小さくしてください。"
+ 
+ #: libdnf/conf/OptionNumber.cpp:76
+ #, c-format
+ msgid "given value [%d] should be greater than allowed value [%d]."
+-msgstr "指定された値 [%d] は許可された値 [%d]より大きくしてください"
++msgstr "指定された値 [%d] は許可された値 [%d]より大きくしてください。"
+ 
+ #: libdnf/conf/OptionPath.cpp:78
+ #, c-format
+@@ -90,10 +91,98 @@ msgstr "指定されたパス '%s' が存在しません。"
+ msgid "could not convert '%s' to seconds"
+ msgstr "'%s' を 秒に変換できません"
+ 
+-#: libdnf/conf/OptionString.cpp:74
++#: libdnf/conf/OptionString.cpp:79
+ msgid "GetValue(): Value not set"
+ msgstr "GetValue(): 値は設定されていません"
+ 
++#: libdnf/dnf-context.cpp:3033 libdnf/dnf-context.cpp:3042
++#, c-format
++msgid "Cannot enable more streams from module '%s' at the same time"
++msgstr "モジュール '%s' から、さらにストリームを同時に有効にできません"
++
++#: libdnf/dnf-context.cpp:3051 libdnf/dnf-context.cpp:3069
++#, c-format
++msgid ""
++"Cannot enable module '%1$s' stream '%2$s': State of module already modified"
++msgstr "モジュール '%1$s' ストリーム '%2$s' を有効にできません。モジュールの状態はすでに変更されています"
++
++#: libdnf/dnf-context.cpp:3116
++#, c-format
++msgid "Modular dependency problem with Defaults: %s"
++msgstr "デフォルトのモジュラー依存問題: %s"
++
++#: libdnf/dnf-context.cpp:3119
++#, c-format
++msgid "Modular dependency problem: %s"
++msgstr "モジュラーの依存に関する問題: %s"
++
++#: libdnf/dnf-context.cpp:3153 libdnf/dnf-context.cpp:3177
++#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3227
++#: libdnf/dnf-context.cpp:3243 libdnf/dnf-context.cpp:3275
++#, c-format
++msgid "Unable to resolve argument '%s'"
++msgstr "引数 '%s' を解決できません"
++
++#: libdnf/dnf-context.cpp:3160
++#, c-format
++msgid ""
++"Only module name is required. Ignoring unneeded information in argument: "
++"'%s'"
++msgstr "モジュール名のみが必要です。引数の不必要な情報は無視します: '%s'"
++
++#: libdnf/dnf-context.cpp:3174
++#, c-format
++msgid "Cannot reset module '%s': State of module already modified"
++msgstr "モジュール '%s' をリセットできません。モジュールの状態はすでに変更されています"
++
++#: libdnf/dnf-context.cpp:3185
++#, c-format
++msgid "Cannot disable module '%s': State of module already modified"
++msgstr "モジュール '%s' を無効にできません。モジュールの状態はすでに変更されています"
++
++#: libdnf/dnf-context.cpp:3216 libdnf/dnf-context.cpp:3307
++msgid "No modular data available"
++msgstr "モジュールデータは利用できません"
++
++#: libdnf/dnf-context.cpp:3233
++#, c-format
++msgid "Ignoring unneeded information in argument: '%s'"
++msgstr "引数の不要な情報は無視します: '%s'"
++
++#: libdnf/dnf-context.cpp:3271
++#, c-format
++msgid ""
++"Problem during enablement of dependency tree for moduele '%1$s' stream "
++"'%2$s': %3$s"
++msgstr "モジュール '%1$s' ストリーム '%2$s' の依存関係ツリーの有効化中に問題: %3$s"
++
++#: libdnf/dnf-context.cpp:3283
++msgid "Problems appeared for module enable request"
++msgstr "モジュール有効リクエストに発生する問題"
++
++#: libdnf/dnf-context.cpp:3338
++msgid "Problems appeared for module reset request"
++msgstr "モジュールリセットリクエストに発生する問題"
++
++#: libdnf/dnf-context.cpp:3340
++msgid "Problems appeared for module disable request"
++msgstr "モジュール無効化リクエストに発生する問題"
++
++#: libdnf/dnf-context.cpp:3376
++#, c-format
++msgid ""
++"The operation would result in switching of module '%s' stream '%s' to stream"
++" '%s'"
++msgstr "オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り替える結果となります"
++
++#: libdnf/dnf-context.cpp:3380
++msgid ""
++"It is not possible to switch enabled streams of a module.\n"
++"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset <module_name>' command. After you reset the module, you can install the other stream."
++msgstr ""
++"有効化されたモジュールのストリームの切り替えはできません。\n"
++"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module reset <module_name>' コマンドを使用してモジュールをリセットすることを推奨します。モジュールのリセット後に、別のストリームをインストールできます。"
++
+ #: libdnf/dnf-goal.cpp:68
+ msgid "Could not depsolve transaction; "
+ msgstr "トランザクションを depsolve できませんでした; "
+@@ -174,87 +263,87 @@ msgstr "パッケージ %s を見つけることができませんでした"
+ msgid "could not add erase element %1$s(%2$i)"
+ msgstr "erase 要素 %1$s(%2$i) を追加することができません"
+ 
+-#: libdnf/dnf-sack.cpp:381
++#: libdnf/dnf-sack.cpp:395
++msgid "failed to add solv"
++msgstr "solv の追加に失敗しました"
++
++#: libdnf/dnf-sack.cpp:414
+ #, c-format
+ msgid "no %1$s string for %2$s"
+ msgstr "%2$s の %1$s 文字列はありません"
+ 
+-#: libdnf/dnf-sack.cpp:404
+-msgid "failed to add solv"
+-msgstr "solv の追加に失敗しました"
+-
+-#: libdnf/dnf-sack.cpp:422
++#: libdnf/dnf-sack.cpp:424
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr "開くことに失敗しました: %s"
+ 
+-#: libdnf/dnf-sack.cpp:501
++#: libdnf/dnf-sack.cpp:503
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr "一時ファイルを作成できません: %s"
+ 
+-#: libdnf/dnf-sack.cpp:511
++#: libdnf/dnf-sack.cpp:513
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr "tmp ファイルを開くことに失敗しました: %s"
+ 
+-#: libdnf/dnf-sack.cpp:523
++#: libdnf/dnf-sack.cpp:525
+ #, c-format
+ msgid "write_main() failed writing data: %i"
+ msgstr "write_main() はデータの書き込みに失敗しました: %i"
+ 
+-#: libdnf/dnf-sack.cpp:540
++#: libdnf/dnf-sack.cpp:542
+ msgid "write_main() failed to re-load written solv file"
+ msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました"
+ 
+-#: libdnf/dnf-sack.cpp:605
++#: libdnf/dnf-sack.cpp:607
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr "一時ファイル %s を作成できません"
+ 
+-#: libdnf/dnf-sack.cpp:623
++#: libdnf/dnf-sack.cpp:625
+ #, c-format
+ msgid "write_ext(%1$d) has failed: %2$d"
+ msgstr "write_ext(%1$d) は失敗しました: %2$d"
+ 
+-#: libdnf/dnf-sack.cpp:678
++#: libdnf/dnf-sack.cpp:680
+ msgid "null repo md file"
+ msgstr "null repo md ファイル"
+ 
+-#: libdnf/dnf-sack.cpp:687
++#: libdnf/dnf-sack.cpp:689
+ #, c-format
+ msgid "can not read file %1$s: %2$s"
+ msgstr "ファイル %1$s を読み込みできません: %2$s"
+ 
+-#: libdnf/dnf-sack.cpp:701
++#: libdnf/dnf-sack.cpp:703
+ msgid "repo_add_solv() has failed."
+ msgstr "repo_add_solv() は失敗しました。"
+ 
+-#: libdnf/dnf-sack.cpp:714
++#: libdnf/dnf-sack.cpp:716
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+ msgstr "MD_TYPE_PRIMARY のロードに失敗しました。"
+ 
+-#: libdnf/dnf-sack.cpp:727
++#: libdnf/dnf-sack.cpp:729
+ msgid "repo_add_repomdxml/rpmmd() has failed."
+ msgstr "repo_add_repomdxml/rpmmd() は失敗しました。"
+ 
+-#: libdnf/dnf-sack.cpp:794
++#: libdnf/dnf-sack.cpp:796
+ msgid "failed to auto-detect architecture"
+ msgstr "アーキテクチャーの自動検出に失敗しました"
+ 
+-#: libdnf/dnf-sack.cpp:919
++#: libdnf/dnf-sack.cpp:961
+ #, c-format
+ msgid "failed creating cachedir %s"
+ msgstr "cachedir %s の作成に失敗しました"
+ 
+-#: libdnf/dnf-sack.cpp:1696
++#: libdnf/dnf-sack.cpp:1738
+ msgid "failed loading RPMDB"
+ msgstr "RPMDB のロードに失敗しました"
+ 
+-#: libdnf/dnf-sack.cpp:2403
++#: libdnf/dnf-sack.cpp:2461
+ #, c-format
+ msgid "No module defaults found: %s"
+-msgstr ""
++msgstr "モジュールのデフォルトは見つかりませんでした: %s"
+ 
+ #: libdnf/dnf-state.cpp:1184
+ #, c-format
+@@ -337,7 +426,7 @@ msgstr "トランザクションテストの実行中にエラー %i"
+ msgid "Error %i running transaction"
+ msgstr "トランザクションの実行中にエラー %i"
+ 
+-#: libdnf/dnf-transaction.cpp:1473
++#: libdnf/dnf-transaction.cpp:1474
+ #, c-format
+ msgid "Transaction did not go to writing phase, but returned no error(%i)"
+ msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした"
+@@ -569,7 +658,16 @@ msgstr "ソリューションがなく、保護されたパッケージを削除
+ msgid "no solution possible"
+ msgstr "可能なソリューションがありません"
+ 
+-#: libdnf/goal/Goal.cpp:1479
++#: libdnf/goal/Goal.cpp:1193
++msgid "Problem: "
++msgstr "問題: "
++
++#: libdnf/goal/Goal.cpp:1198
++#, c-format
++msgid "Problem %d: "
++msgstr "問題 %d: "
++
++#: libdnf/goal/Goal.cpp:1525
+ msgid ""
+ "The operation would result in removing the following protected packages: "
+ msgstr "操作は結果的に以下の保護されたパッケージを削除します: "
+@@ -631,27 +729,51 @@ msgstr "モジュール '%s' の複数ストリームを有効化できません
+ msgid "Conflicting defaults with repo '%s': %s"
+ msgstr "repo '%s' のデフォルトが競合: %s"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1569
++#: libdnf/module/ModulePackageContainer.cpp:829
++msgid "Installing module profiles:\n"
++msgstr "モジュールプロファイルのインストール中:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:844
++msgid "Disabling module profiles:\n"
++msgstr "モジュールプロファイルの無効化中:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:859
++msgid "Enabling module streams:\n"
++msgstr "モジュールストリームの有効化中:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:873
++msgid "Switching module streams:\n"
++msgstr "モジュールストリームの切り替え中:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:891
++msgid "Disabling modules:\n"
++msgstr "モジュールの無効化:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:902
++msgid "Resetting modules:\n"
++msgstr "モジュールの再設定中:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:1586
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data at '%s'"
+ msgstr "'%s' のモジュラーフェイルセーフデータをロードできません"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1575
++#: libdnf/module/ModulePackageContainer.cpp:1592
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
+ msgstr "モジュール '%s:%s' のモジュラーフェイルセーフデータをロードできません"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1639
++#: libdnf/module/ModulePackageContainer.cpp:1656
+ #, c-format
+ msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
+ msgstr "ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: %s"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1661
++#: libdnf/module/ModulePackageContainer.cpp:1678
+ #, c-format
+ msgid "Unable to save a modular Fail Safe data to '%s'"
+ msgstr "'%s' のモジュラーフェイルセーフデータを保存できません"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1686
++#: libdnf/module/ModulePackageContainer.cpp:1703
+ #, c-format
+ msgid "Unable to remove a modular Fail Safe data in '%s'"
+ msgstr "'%s' のモジュラーフェイルセーフデータを削除できません"
+@@ -669,7 +791,7 @@ msgstr "名前解決に失敗しました: %s"
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:115
+ #, c-format
+ msgid "There were errors while resolving modular defaults: %s"
+-msgstr ""
++msgstr "モジュラーデフォルトの解決中にエラーが発生しました: %s"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:120
+ #, c-format
+@@ -722,6 +844,9 @@ msgid ""
+ "deprecated and the support will be dropped in future versions. Use '=' "
+ "operator instead."
+ msgstr ""
++"reldeps で '==' "
++"演算子を使用すると、未定義の動作が発生する可能性があります。これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' "
++"演算子を使用してください。"
+ 
+ #: libdnf/repo/Repo.cpp:321
+ #, c-format
+@@ -733,146 +858,161 @@ msgstr "リポジトリー %s にはミラーまたは baseurl セットがあ
+ msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
+ msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。"
+ 
+-#: libdnf/repo/Repo.cpp:546
++#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:534 libdnf/repo/Repo.cpp:581
++#: libdnf/repo/Repo.cpp:1368
++#, c-format
++msgid "repo '%s': 'basecachedir' is not set"
++msgstr "repo '%s': 'basecachedir' が設定されていません"
++
++#: libdnf/repo/Repo.cpp:553
+ #, c-format
+ msgid "Cannot find a valid baseurl for repo: %s"
+ msgstr "repo に対して有効な baseurl を見つけられません: %s"
+ 
+-#: libdnf/repo/Repo.cpp:583 libdnf/repo/Repo.cpp:1672
++#: libdnf/repo/Repo.cpp:594 libdnf/repo/Repo.cpp:1693
+ msgid ""
+ "Maximum download speed is lower than minimum. Please change configuration of"
+ " minrate or throttle"
+-msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください。"
++msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください"
+ 
+-#: libdnf/repo/Repo.cpp:633 libdnf/repo/Repo.cpp:655
++#: libdnf/repo/Repo.cpp:625
++#, c-format
++msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
++msgstr "repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されていません"
++
++#: libdnf/repo/Repo.cpp:647 libdnf/repo/Repo.cpp:669
+ #, c-format
+ msgid "%s: gpgme_data_new_from_fd(): %s"
+ msgstr "%s: gpgme_data_new_from_fd(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:641 libdnf/repo/Repo.cpp:663
++#: libdnf/repo/Repo.cpp:655 libdnf/repo/Repo.cpp:677
+ #, c-format
+ msgid "%s: gpgme_op_import(): %s"
+ msgstr "%s: gpgme_op_import(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:686 libdnf/repo/Repo.cpp:752 libdnf/repo/Repo.cpp:880
++#: libdnf/repo/Repo.cpp:700 libdnf/repo/Repo.cpp:766 libdnf/repo/Repo.cpp:894
+ #, c-format
+ msgid "%s: gpgme_ctx_set_engine_info(): %s"
+ msgstr "%s: gpgme_ctx_set_engine_info(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:777
++#: libdnf/repo/Repo.cpp:727 libdnf/repo/Repo.cpp:791
+ #, c-format
+ msgid "can not list keys: %s"
+ msgstr "キーを一覧表示できません: %s"
+ 
+-#: libdnf/repo/Repo.cpp:806
++#: libdnf/repo/Repo.cpp:820
+ #, c-format
+ msgid "Failed to retrieve GPG key for repo '%s': %s"
+ msgstr "repo '%s' のGPG鍵の回収に失敗しました : %s"
+ 
+-#: libdnf/repo/Repo.cpp:859
++#: libdnf/repo/Repo.cpp:873
+ #, c-format
+ msgid "repo %s: 0x%s already imported"
+ msgstr "repo %s: 0x%s はインポート済みです"
+ 
+-#: libdnf/repo/Repo.cpp:887
++#: libdnf/repo/Repo.cpp:901
+ #, c-format
+ msgid "repo %s: imported key 0x%s."
+ msgstr "repo %s: インポート済みのキー 0x%s。"
+ 
+-#: libdnf/repo/Repo.cpp:1131
++#: libdnf/repo/Repo.cpp:1149
+ #, c-format
+ msgid "reviving: repo '%s' skipped, no metalink."
+ msgstr "復元中: repo '%s' はスキップされました、metalink はありません。"
+ 
+-#: libdnf/repo/Repo.cpp:1150
++#: libdnf/repo/Repo.cpp:1168
+ #, c-format
+ msgid "reviving: repo '%s' skipped, no usable hash."
+ msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。"
+ 
+-#: libdnf/repo/Repo.cpp:1173
++#: libdnf/repo/Repo.cpp:1191
+ #, c-format
+ msgid "reviving: failed for '%s', mismatched %s sum."
+ msgstr "復元中: '%s' は失敗しました、%s の合計は一致しません。"
+ 
+-#: libdnf/repo/Repo.cpp:1179
++#: libdnf/repo/Repo.cpp:1197
+ #, c-format
+ msgid "reviving: '%s' can be revived - metalink checksums match."
+ msgstr "復元中: '%s' は復元できます - metalink チェックサムが一致します。"
+ 
+-#: libdnf/repo/Repo.cpp:1204
++#: libdnf/repo/Repo.cpp:1222
+ #, c-format
+ msgid "reviving: '%s' can be revived - repomd matches."
+ msgstr "復元中: '%s' は復元できます - repomd が一致します。"
+ 
+-#: libdnf/repo/Repo.cpp:1206
++#: libdnf/repo/Repo.cpp:1224
+ #, c-format
+ msgid "reviving: failed for '%s', mismatched repomd."
+-msgstr "復元中:  '%s' に失敗しました、repomd が一致しません。"
++msgstr "復元中: '%s' に失敗しました、repomd が一致しません。"
+ 
+-#: libdnf/repo/Repo.cpp:1224
++#: libdnf/repo/Repo.cpp:1242
+ #, c-format
+ msgid "Cannot create repo destination directory \"%s\": %s"
+ msgstr "repo 送信先ディレクトリ \"%s\" を作成できません : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1230
++#: libdnf/repo/Repo.cpp:1248
+ #, c-format
+ msgid "Cannot create repo temporary directory \"%s\": %s"
+ msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1244
++#: libdnf/repo/Repo.cpp:1262
+ #, c-format
+ msgid "Cannot create directory \"%s\": %s"
+ msgstr "ディレクトリー \"%s\" を作成できません: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1267
++#: libdnf/repo/Repo.cpp:1285
+ #, c-format
+ msgid "Cannot rename directory \"%s\" to \"%s\": %s"
+ msgstr "ディレクトリー名を \"%s\" から \"%s\" へと変更できません: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1290
++#: libdnf/repo/Repo.cpp:1308
+ #, c-format
+ msgid "repo: using cache for: %s"
+ msgstr "repo: キャッシュを使用: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1302
++#: libdnf/repo/Repo.cpp:1320
+ #, c-format
+ msgid "Cache-only enabled but no cache for '%s'"
+ msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません"
+ 
+-#: libdnf/repo/Repo.cpp:1306
++#: libdnf/repo/Repo.cpp:1324
+ #, c-format
+ msgid "repo: downloading from remote: %s"
+ msgstr "repo: リモートからダウンロード中: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1312
++#: libdnf/repo/Repo.cpp:1330
+ #, c-format
+ msgid "Failed to download metadata for repo '%s': %s"
+ msgstr "repo '%s' のメタデータのダウンロードに失敗しました : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1338
++#: libdnf/repo/Repo.cpp:1356
+ msgid "getCachedir(): Computation of SHA256 failed"
+ msgstr "getCachedir(): SHA256 のコンピュテーションに失敗しました"
+ 
+-#: libdnf/repo/Repo.cpp:1363
++#: libdnf/repo/Repo.cpp:1384
+ #, c-format
+ msgid "Cannot create persistdir \"%s\": %s"
+ msgstr "persistdir \"%s\" を作成できません : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1763
++#: libdnf/repo/Repo.cpp:1715
++msgid "'proxy_username' is set but not 'proxy_password'"
++msgstr "'proxy_username' は設定済みですが、'proxy_password' は設定されていません"
++
++#: libdnf/repo/Repo.cpp:1787
+ msgid "resume cannot be used simultaneously with the byterangestart param"
+ msgstr "resume は byterangestart param と同時に使用できません"
+ 
+-#: libdnf/repo/Repo.cpp:1780
++#: libdnf/repo/Repo.cpp:1804
+ #, c-format
+ msgid "PackageTarget initialization failed: %s"
+ msgstr "PackageTarget の初期化に失敗しました: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1886
++#: libdnf/repo/Repo.cpp:1910
+ #, c-format
+ msgid "Cannot open %s: %s"
+ msgstr "%s を開くことができません: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1930
++#: libdnf/repo/Repo.cpp:1954
+ #, c-format
+ msgid "Log handler with id %ld doesn't exist"
+ msgstr "id %ld を伴うログハンドラーは存在しません"
+@@ -901,7 +1041,7 @@ msgstr "完了したトランザクションにトランザクションアイテ
+ 
+ #: libdnf/transaction/Transformer.cpp:76
+ msgid "Database Corrupted: no row 'version' in table 'config'"
+-msgstr ""
++msgstr "データベースが破損しています。テーブル 'config' の行 'version' がありません"
+ 
+ #: libdnf/transaction/Transformer.cpp:681
+ msgid "Transformer: can't open history persist dir"
+@@ -926,6 +1066,3 @@ msgstr "未保存のトランザクションにコンソールの出力を追加
+ 
+ #~ msgid "Bad id for repo: %s, byte = %s %d"
+ #~ msgstr "repo に対する不正な id: %s, byte = %s %d"
+-
+-#~ msgid "failed calculating RPMDB checksum"
+-#~ msgstr "RPMDB チェックサムの計算に失敗しました"
+diff --git a/po/ko.po b/po/ko.po
+index 48094831..60e9f735 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: 2020-10-05 09:18-0400\n"
++"POT-Creation-Date: 2021-02-22 09:52+0100\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"
+@@ -37,17 +37,17 @@ msgstr "변환 할 수 없습니다 '%s'~ 바이트"
+ msgid "unknown unit '%s'"
+ msgstr "알 수없는 단위 '%s'"
+ 
+-#: libdnf/conf/ConfigMain.cpp:332
++#: libdnf/conf/ConfigMain.cpp:334
+ #, c-format
+ msgid "percentage '%s' is out of range"
+ msgstr "백분율 '%s'범위를 벗어났습니다."
+ 
+-#: libdnf/conf/OptionBinds.cpp:76
++#: libdnf/conf/OptionBinds.cpp:85
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" does not exist"
+ msgstr "구성 : ID가 \"%s\" 존재하지 않는다"
+ 
+-#: libdnf/conf/OptionBinds.cpp:88
++#: libdnf/conf/OptionBinds.cpp:97
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" already exists"
+ msgstr "구성 : ID가 \"%s\" 이미 존재 함"
+@@ -58,7 +58,7 @@ msgid "invalid boolean value '%s'"
+ msgstr "유효하지 않은 부울 값 '%s'"
+ 
+ #: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158
+-#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59
++#: libdnf/conf/OptionString.cpp:64 libdnf/conf/OptionStringList.cpp:59
+ #, c-format
+ msgid "'%s' is not an allowed value"
+ msgstr "'%s'은 (는) 허용 된 값이 아닙니다."
+@@ -92,36 +92,125 @@ msgstr "주어진 경로 '%s' 존재하지 않는다."
+ msgid "could not convert '%s' to seconds"
+ msgstr "변환 할 수 없습니다 '%s'초까지"
+ 
+-#: libdnf/conf/OptionString.cpp:74
++#: libdnf/conf/OptionString.cpp:79
+ msgid "GetValue(): Value not set"
+ msgstr "GetValue () : 값이 설정되지 않았습니다."
+ 
++#: libdnf/dnf-context.cpp:3033 libdnf/dnf-context.cpp:3042
++#, fuzzy, c-format
++#| msgid "Cannot enable multiple streams for module '%s'"
++msgid "Cannot enable more streams from module '%s' at the same time"
++msgstr "모듈 '%s’에 여러 스트림을 활성화할 수 없습니다"
++
++#: libdnf/dnf-context.cpp:3051 libdnf/dnf-context.cpp:3069
++#, c-format
++msgid ""
++"Cannot enable module '%1$s' stream '%2$s': State of module already modified"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3116
++#, c-format
++msgid "Modular dependency problem with Defaults: %s"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3119
++#, fuzzy, c-format
++#| msgid "some dependency problem"
++msgid "Modular dependency problem: %s"
++msgstr "일부 의존성 문제"
++
++#: libdnf/dnf-context.cpp:3153 libdnf/dnf-context.cpp:3177
++#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3227
++#: libdnf/dnf-context.cpp:3243 libdnf/dnf-context.cpp:3275
++#, fuzzy, c-format
++#| msgid "Failed to resolve: %s"
++msgid "Unable to resolve argument '%s'"
++msgstr "분석하지 못했습니다: %s"
++
++#: libdnf/dnf-context.cpp:3160
++#, c-format
++msgid ""
++"Only module name is required. Ignoring unneeded information in argument: "
++"'%s'"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3174
++#, c-format
++msgid "Cannot reset module '%s': State of module already modified"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3185
++#, c-format
++msgid "Cannot disable module '%s': State of module already modified"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3216 libdnf/dnf-context.cpp:3307
++msgid "No modular data available"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3233
++#, c-format
++msgid "Ignoring unneeded information in argument: '%s'"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3271
++#, c-format
++msgid ""
++"Problem during enablement of dependency tree for moduele '%1$s' stream "
++"'%2$s': %3$s"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3283
++msgid "Problems appeared for module enable request"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3338
++msgid "Problems appeared for module reset request"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3340
++msgid "Problems appeared for module disable request"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3376
++#, c-format
++msgid ""
++"The operation would result in switching of module '%s' stream '%s' to stream"
++" '%s'"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3380
++msgid ""
++"It is not possible to switch enabled streams of a module.\n"
++"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset <module_name>' command. After you reset the module, you can install the other stream."
++msgstr ""
++
+ #: libdnf/dnf-goal.cpp:68
+ msgid "Could not depsolve transaction; "
+-msgstr ""
++msgstr "트랜잭션을 해석 할 수 없습니다. "
+ 
+ #: libdnf/dnf-goal.cpp:70
+-#, c-format
++#, fuzzy, c-format
+ msgid "%i problem detected:\n"
+ msgid_plural "%i problems detected:\n"
+-msgstr[0] ""
++msgstr[0] "%i 발견 된 문제 :\n"
+ 
+ #: libdnf/dnf-goal.cpp:78
+-#, c-format
++#, fuzzy, c-format
+ msgid " Problem %1$i: %2$s\n"
+-msgstr ""
++msgstr " 문제\n"
+ 
+ #: libdnf/dnf-goal.cpp:80
+-#, c-format
++#, fuzzy, c-format
+ msgid " Problem: %s\n"
+-msgstr ""
++msgstr " 문제\n"
+ 
+ #: libdnf/dnf-rpmts.cpp:79
+ #, c-format
+ msgid ""
+ "No available modular metadata for modular package '%s'; cannot be installed "
+ "on the system"
+-msgstr ""
++msgstr "모듈 패키지 '%s'에 사용 가능한 모듈식 메타 데이터가 없으므로 시스템에 설치할 수 없습니다"
+ 
+ #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
+ #, c-format
+@@ -176,87 +265,87 @@ msgstr "꾸러미를 찾지 못했습니다. %s"
+ msgid "could not add erase element %1$s(%2$i)"
+ msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)"
+ 
+-#: libdnf/dnf-sack.cpp:381
+-#, c-format
+-msgid "no %1$s string for %2$s"
+-msgstr ""
+-
+-#: libdnf/dnf-sack.cpp:404
++#: libdnf/dnf-sack.cpp:395
+ msgid "failed to add solv"
+ msgstr "solv를 추가하지 못했습니다."
+ 
+-#: libdnf/dnf-sack.cpp:422
++#: libdnf/dnf-sack.cpp:414
++#, c-format
++msgid "no %1$s string for %2$s"
++msgstr "%2$s에 %1$s 문자열이 없습니다"
++
++#: libdnf/dnf-sack.cpp:424
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr "열지 못했습니다 : %s"
+ 
+-#: libdnf/dnf-sack.cpp:501
++#: libdnf/dnf-sack.cpp:503
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr "임시 파일을 만들 수 없습니다. %s"
+ 
+-#: libdnf/dnf-sack.cpp:511
++#: libdnf/dnf-sack.cpp:513
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr "여는 tmp 파일을 열지 못했습니다. %s"
+ 
+-#: libdnf/dnf-sack.cpp:523
++#: libdnf/dnf-sack.cpp:525
+ #, c-format
+ msgid "write_main() failed writing data: %i"
+ msgstr "write_main() failed writing data: %i"
+ 
+-#: libdnf/dnf-sack.cpp:540
++#: libdnf/dnf-sack.cpp:542
+ msgid "write_main() failed to re-load written solv file"
+ msgstr "write_main ()이 작성된 solv 파일을 다시로드하지 못했습니다."
+ 
+-#: libdnf/dnf-sack.cpp:605
++#: libdnf/dnf-sack.cpp:607
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr "임시 파일을 만들 수 없습니다. %s"
+ 
+-#: libdnf/dnf-sack.cpp:623
++#: libdnf/dnf-sack.cpp:625
+ #, c-format
+ msgid "write_ext(%1$d) has failed: %2$d"
+ msgstr "write_ext(%1$d) has failed: %2$d"
+ 
+-#: libdnf/dnf-sack.cpp:678
++#: libdnf/dnf-sack.cpp:680
+ msgid "null repo md file"
+ msgstr "null repo md 파일"
+ 
+-#: libdnf/dnf-sack.cpp:687
++#: libdnf/dnf-sack.cpp:689
+ #, c-format
+ msgid "can not read file %1$s: %2$s"
+ msgstr "파일을 읽을 수 없습니다. %1$s: %2$s"
+ 
+-#: libdnf/dnf-sack.cpp:701
++#: libdnf/dnf-sack.cpp:703
+ msgid "repo_add_solv() has failed."
+ msgstr "repo_add_solv() has failed."
+ 
+-#: libdnf/dnf-sack.cpp:714
++#: libdnf/dnf-sack.cpp:716
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+-msgstr ""
++msgstr "MD_TYPE_PRIMARY를 로드하지 못했습니다."
+ 
+-#: libdnf/dnf-sack.cpp:727
++#: libdnf/dnf-sack.cpp:729
+ msgid "repo_add_repomdxml/rpmmd() has failed."
+ msgstr "repo_add_repomdxml/rpmmd() has failed."
+ 
+-#: libdnf/dnf-sack.cpp:794
++#: libdnf/dnf-sack.cpp:796
+ msgid "failed to auto-detect architecture"
+ msgstr "아키텍처 자동 검색에 실패했습니다."
+ 
+-#: libdnf/dnf-sack.cpp:919
++#: libdnf/dnf-sack.cpp:961
+ #, c-format
+ msgid "failed creating cachedir %s"
+ msgstr "캐시 된 생성 실패 %s"
+ 
+-#: libdnf/dnf-sack.cpp:1696
++#: libdnf/dnf-sack.cpp:1738
+ msgid "failed loading RPMDB"
+ msgstr "RPMDB로드 실패"
+ 
+-#: libdnf/dnf-sack.cpp:2403
++#: libdnf/dnf-sack.cpp:2461
+ #, c-format
+ msgid "No module defaults found: %s"
+-msgstr ""
++msgstr "모듈 기본 설정을 찾을 수 없습니다. %s"
+ 
+ #: libdnf/dnf-state.cpp:1184
+ #, c-format
+@@ -339,7 +428,7 @@ msgstr "오류 %i 실행중인 트랜잭션 테스트"
+ msgid "Error %i running transaction"
+ msgstr "오류 %i 실행중인 거래"
+ 
+-#: libdnf/dnf-transaction.cpp:1473
++#: libdnf/dnf-transaction.cpp:1474
+ #, c-format
+ msgid "Transaction did not go to writing phase, but returned no error(%i)"
+ msgstr "트랜잭션이 쓰기 단계로 이동하지 않았지만 오류를 반환하지 않았습니다 (%i)"
+@@ -356,367 +445,401 @@ msgstr "제거하지 못했습니다. %s"
+ 
+ #: 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:94
+ msgid " does not belong to a distupgrade repository"
+-msgstr ""
++msgstr " distupgrade 리포지토리에 속하지 않습니다"
+ 
+ #: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95
+ 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:97
+ msgid "conflicting requests"
+-msgstr ""
++msgstr "충돌하는 요청"
+ 
+ #: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98
+ msgid "unsupported request"
+-msgstr ""
++msgstr "지원되지 않는 요청"
+ 
+ #: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99
+ 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:101
+ msgid " is provided by the system"
+-msgstr ""
++msgstr " 시스템에서 제공"
+ 
+ #: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102
+ 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:104
+ msgid "cannot install the best candidate for the job"
+-msgstr ""
++msgstr "작업에 가장 적합한 옵션을 설치할 수 없습니다"
+ 
+ #: libdnf/goal/Goal.cpp:78
+ #, c-format
+ msgid "package %s is filtered out by modular filtering"
+-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 "package %s is filtered out by exclude filtering"
+-msgstr ""
++msgstr "패키지 %s이/가 필터링에서 제외되었습니다"
+ 
+ #: libdnf/goal/Goal.cpp:82
+ #, c-format
+ msgid "nothing provides %s needed by %s"
+-msgstr ""
++msgstr "%s에 필요한 %s이/가 제공되지 않았습니다"
+ 
+ #: libdnf/goal/Goal.cpp:83
+ #, c-format
+ msgid "cannot install both %s and %s"
+-msgstr ""
++msgstr "%s 및 %s 모두 설치할 수 없습니다"
+ 
+ #: libdnf/goal/Goal.cpp:84
+ #, c-format
+ msgid "package %s conflicts with %s provided by %s"
+-msgstr ""
++msgstr "패키지 %s이/가 %s와 충돌합니다 (%s에 의해 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:85
+ #, c-format
+ msgid "package %s obsoletes %s provided by %s"
+-msgstr ""
++msgstr "패키지 %s이/가 %s에서 폐지되었습니다 (%s에 의해 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:86
+ #, c-format
+ msgid "installed package %s obsoletes %s provided by %s"
+-msgstr ""
++msgstr "설치된 패키지 %s이/가 %s에서 폐지되었습니다 (%s에 의해 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:87
+ #, c-format
+ msgid "package %s implicitly obsoletes %s provided by %s"
+-msgstr ""
++msgstr "패키지 %s이/가 %s 에서 암시적으로 폐지되었습니다 (%s에 의해 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:88
+ #, c-format
+ msgid "package %s requires %s, but none of the providers can be installed"
+-msgstr ""
++msgstr "패키지 %s에 %s이/가 필요하지만 공급 업체가 설치할 수 없습니다"
+ 
+ #: libdnf/goal/Goal.cpp:89
+ #, c-format
+ msgid "package %s conflicts with %s provided by itself"
+-msgstr ""
++msgstr "패키지 %s이/가 %s와 충돌합니다 (자체적으로 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:90
+ #, c-format
+ msgid "both package %s and %s obsolete %s"
+-msgstr ""
++msgstr "패키지 %s 및 %s 모두 %s에서 폐지되었습니다"
+ 
+ #: libdnf/goal/Goal.cpp:96
+ msgid "problem with installed module "
+-msgstr ""
++msgstr "설치된 모듈 문제 "
+ 
+ #: libdnf/goal/Goal.cpp:100
+ #, c-format
+ msgid "module %s does not exist"
+-msgstr ""
++msgstr "모듈 %s이/가 존재하지 않습니다"
+ 
+ #: libdnf/goal/Goal.cpp:103
+ msgid "cannot install the best update candidate for module "
+-msgstr ""
++msgstr "모듈에 가장 적합한 업데이트 옵션을 설치할 수 없습니다 "
+ 
+ #: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108
+ #, c-format
+ msgid "module %s is disabled"
+-msgstr ""
++msgstr "모듈 %s을/를 사용할 수 없습니다"
+ 
+ #: libdnf/goal/Goal.cpp:106
+ #, c-format
+ msgid "module %s does not have a compatible architecture"
+-msgstr ""
++msgstr "모듈 %s에 호환되는 아키텍처가 없습니다"
+ 
+ #: libdnf/goal/Goal.cpp:107
+ #, c-format
+ msgid "module %s is not installable"
+-msgstr ""
++msgstr "모듈 %s을/를 설치할 수 없습니다"
+ 
+ #: libdnf/goal/Goal.cpp:109
+ #, c-format
+ msgid "nothing provides %s needed by module %s"
+-msgstr ""
++msgstr "%s이/가 제공되지 않았습니다 (모듈 %s에 필요)"
+ 
+ #: libdnf/goal/Goal.cpp:110
+ #, c-format
+ msgid "cannot install both modules %s and %s"
+-msgstr ""
++msgstr "%s 및 %s 모듈을 모두 설치할 수 없습니다"
+ 
+ #: libdnf/goal/Goal.cpp:111
+ #, c-format
+ msgid "module %s conflicts with %s provided by %s"
+-msgstr ""
++msgstr "모듈 %s이/가 %s와 충돌합니다 (%s에 의해 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:112
+ #, c-format
+ msgid "module %s obsoletes %s provided by %s"
+-msgstr ""
++msgstr "모듈 %s이/가 %s에서 폐지되었습니다 (%s에 의해 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:113
+ #, c-format
+ msgid "installed module %s obsoletes %s provided by %s"
+-msgstr ""
++msgstr "설치된 모듈 %s이/가 %s에서 폐지되었습니다 (%s에 의해 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:114
+ #, c-format
+ msgid "module %s implicitly obsoletes %s provided by %s"
+-msgstr ""
++msgstr "모듈 %s이/가 %s 에서 암시적으로 폐지되었습니다 (%s에 의해 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:115
+ #, c-format
+ msgid "module %s requires %s, but none of the providers can be installed"
+-msgstr ""
++msgstr "모듈 %s에 %s이/가 필요하지만 공급 업체가 설치할 수 없습니다"
+ 
+ #: libdnf/goal/Goal.cpp:116
+ #, c-format
+ msgid "module %s conflicts with %s provided by itself"
+-msgstr ""
++msgstr "모듈 %s이/가 %s와 충돌합니다 (자체적으로 제공)"
+ 
+ #: libdnf/goal/Goal.cpp:117
+ #, c-format
+ msgid "both module %s and %s obsolete %s"
+-msgstr ""
++msgstr "모듈 %s및 %s이/가 %s에서 폐지되었습니다"
+ 
+ #: libdnf/goal/Goal.cpp:1038
+ msgid "no solver set"
+-msgstr ""
++msgstr "solver 설정 없음"
+ 
+ #: libdnf/goal/Goal.cpp:1043
+-#, c-format
++#, fuzzy, c-format
+ msgid "failed to make %s absolute"
+-msgstr ""
++msgstr "실패한 %s 순수한"
+ 
+ #: libdnf/goal/Goal.cpp:1050
+-#, c-format
++#, fuzzy, c-format
+ msgid "failed writing debugdata to %1$s: %2$s"
+-msgstr ""
++msgstr "디버그 데이터를 쓰지 못했습니다. %1$s: %2$s"
+ 
+ #: libdnf/goal/Goal.cpp:1062
+ msgid "no solv in the goal"
+-msgstr ""
++msgstr "목표에 솔로가 없다."
+ 
+ #: libdnf/goal/Goal.cpp:1064
+ msgid "no solution, cannot remove protected package"
+-msgstr ""
++msgstr "해결책 없음, 보호 된 패키지를 제거 할 수 없음"
+ 
+ #: libdnf/goal/Goal.cpp:1067
+ msgid "no solution possible"
+-msgstr ""
++msgstr "해결책 없음"
++
++#: libdnf/goal/Goal.cpp:1193
++#, fuzzy
++msgid "Problem: "
++msgstr "문제 "
+ 
+-#: libdnf/goal/Goal.cpp:1479
++#: libdnf/goal/Goal.cpp:1198
++#, fuzzy, c-format
++msgid "Problem %d: "
++msgstr "문제 "
++
++#: libdnf/goal/Goal.cpp:1525
+ msgid ""
+ "The operation would result in removing the following protected packages: "
+-msgstr ""
++msgstr "이 작업으로 인해 다음과 같은 보호 패키지가 제거됩니다. "
+ 
+ #: libdnf/hy-iutil.cpp:322
+-#, c-format
++#, fuzzy, c-format
+ msgid "Failed renaming %1$s to %2$s: %3$s"
+-msgstr ""
++msgstr "이름 바꾸기 실패 %1$s 에 %2$s: %3$s"
+ 
+ #: libdnf/hy-iutil.cpp:330
+-#, c-format
++#, fuzzy, c-format
+ msgid "Failed setting perms on %1$s: %2$s"
+-msgstr ""
++msgstr "perms 설정 실패 %1$s: %2$s"
+ 
+ #: libdnf/hy-iutil.cpp:376
+ #, c-format
+ msgid "cannot create directory %1$s: %2$s"
+-msgstr ""
++msgstr "%1$s디렉토리를 만들 수 없습니다: %2$s"
+ 
+ #: libdnf/hy-iutil.cpp:411
+ #, c-format
+ msgid "cannot stat path %1$s: %2$s"
+-msgstr ""
++msgstr "%1$s 경로를 stat 할 수 없습니다: %2$s"
+ 
+ #: libdnf/module/ModulePackage.cpp:499
+ #, c-format
+ msgid "Invalid format of Platform module: %s"
+-msgstr ""
++msgstr "유효하지 않은 형식의 플랫폼 모듈: %s"
+ 
+ #: libdnf/module/ModulePackage.cpp:514
+ msgid "Multiple module platforms provided by available packages\n"
+-msgstr ""
++msgstr "사용 가능한 패키지로 제공되는 다중 모듈 플랫폼\n"
+ 
+ #: libdnf/module/ModulePackage.cpp:527
+ msgid "Multiple module platforms provided by installed packages\n"
+-msgstr ""
++msgstr "설치된 패키지로 제공되는 다중 모듈 플랫폼\n"
+ 
+ #: libdnf/module/ModulePackage.cpp:554
+ #, c-format
+ msgid "Detection of Platform Module in %s failed: %s"
+-msgstr ""
++msgstr "%s에서 플랫폼 모듈을 감지하지 못했습니다: %s"
+ 
+ #: libdnf/module/ModulePackage.cpp:563
+ #, c-format
+ msgid "Missing PLATFORM_ID in %s"
+-msgstr ""
++msgstr "PLATFORM_ID가 %s에 누락되어 있습니다"
+ 
+ #: libdnf/module/ModulePackage.cpp:568
+ msgid "No valid Platform ID detected"
+-msgstr ""
++msgstr "유효한 플랫폼 ID가 없습니다"
+ 
+ #: libdnf/module/ModulePackageContainer.cpp:68
+ #, c-format
+ msgid "Cannot enable multiple streams for module '%s'"
+-msgstr ""
++msgstr "모듈 '%s’에 여러 스트림을 활성화할 수 없습니다"
+ 
+ #: libdnf/module/ModulePackageContainer.cpp:294
+ #, c-format
+ msgid "Conflicting defaults with repo '%s': %s"
++msgstr "repo '%s'와 기본 설정이 충돌합니다: %s"
++
++#: libdnf/module/ModulePackageContainer.cpp:829
++msgid "Installing module profiles:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:844
++msgid "Disabling module profiles:\n"
+ msgstr ""
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1569
++#: libdnf/module/ModulePackageContainer.cpp:859
++msgid "Enabling module streams:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:873
++msgid "Switching module streams:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:891
++msgid "Disabling modules:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:902
++msgid "Resetting modules:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:1586
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data at '%s'"
+-msgstr ""
++msgstr "'%s'에서 모듈식 Fail-Safe 데이터를 로드할 수 없습니다"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1575
++#: libdnf/module/ModulePackageContainer.cpp:1592
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
+-msgstr ""
++msgstr "모듈 '%s:%s'에 대해 모듈식 Fail-Safe 데이터를 로드할 수 없습니다"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1639
++#: libdnf/module/ModulePackageContainer.cpp:1656
+ #, c-format
+ msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
+-msgstr ""
++msgstr "모듈식 Fail-Safe 데이터에 대한 “%s\" 디렉토리를 만들 수 없습니다: %s"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1661
++#: libdnf/module/ModulePackageContainer.cpp:1678
+ #, c-format
+ msgid "Unable to save a modular Fail Safe data to '%s'"
+-msgstr ""
++msgstr "모듈식 Fail Safe 데이터를 '%s'에 저장할 수 없습니다"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1686
++#: libdnf/module/ModulePackageContainer.cpp:1703
+ #, c-format
+ msgid "Unable to remove a modular Fail Safe data in '%s'"
+-msgstr ""
++msgstr "'%s'에서 모듈식 Fail Safe 데이터를 제거할 수 없습니다"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:86
+ #, c-format
+ msgid "Failed to update from string: %s"
+-msgstr ""
++msgstr "문자열에서 업데이트하지 못했습니다: %s"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:110
+ #, c-format
+ msgid "Failed to resolve: %s"
+-msgstr ""
++msgstr "분석하지 못했습니다: %s"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:115
+ #, c-format
+ msgid "There were errors while resolving modular defaults: %s"
+-msgstr ""
++msgstr "모듈식 기본값을 분석하는 동안 오류가 발생했습니다: %s"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:120
+ #, c-format
+ msgid "Failed to upgrade defaults: %s"
+-msgstr ""
++msgstr "기본값을 업그레이드하지 못했습니다: %s"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:123
+ #, c-format
+ msgid "Failed to upgrade streams: %s"
+-msgstr ""
++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/repo/DependencySplitter.cpp:50
+ msgid ""
+@@ -724,157 +847,174 @@ msgid ""
+ "deprecated and the support will be dropped in future versions. Use '=' "
+ "operator instead."
+ msgstr ""
++"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 연산자는 더 이상 사용되지 않으며 향후 버전에서는"
++" 지원이 중단됩니다. 대신 '=' 연산자를 사용하십시오."
+ 
+ #: libdnf/repo/Repo.cpp:321
+-#, c-format
++#, fuzzy, c-format
+ msgid "Repository %s has no mirror or baseurl set."
+-msgstr ""
++msgstr "저장소 %s 거울이나 기둥이 없습니다."
+ 
+ #: libdnf/repo/Repo.cpp:330
+-#, c-format
++#, fuzzy, c-format
+ msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
+-msgstr ""
++msgstr "저장소 '%s'에 지원되지 않는 유형이 있습니다 :'type =%s', 건너 뛰기."
+ 
+-#: libdnf/repo/Repo.cpp:546
++#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:534 libdnf/repo/Repo.cpp:581
++#: libdnf/repo/Repo.cpp:1368
+ #, c-format
+-msgid "Cannot find a valid baseurl for repo: %s"
++msgid "repo '%s': 'basecachedir' is not set"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:583 libdnf/repo/Repo.cpp:1672
++#: libdnf/repo/Repo.cpp:553
++#, fuzzy, c-format
++msgid "Cannot find a valid baseurl for repo: %s"
++msgstr "repo에 유효한 baseurl을 찾을 수 없습니다. %s"
++
++#: libdnf/repo/Repo.cpp:594 libdnf/repo/Repo.cpp:1693
+ msgid ""
+ "Maximum download speed is lower than minimum. Please change configuration of"
+ " minrate or throttle"
++msgstr "최대 다운로드 속도가 최소값보다 낮습니다. 최소 속도 또는 스로틀의 구성을 변경하십시오."
++
++#: libdnf/repo/Repo.cpp:625
++#, c-format
++msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:633 libdnf/repo/Repo.cpp:655
++#: libdnf/repo/Repo.cpp:647 libdnf/repo/Repo.cpp:669
+ #, c-format
+ msgid "%s: gpgme_data_new_from_fd(): %s"
+ msgstr "%s: gpgme_data_new_from_fd(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:641 libdnf/repo/Repo.cpp:663
++#: libdnf/repo/Repo.cpp:655 libdnf/repo/Repo.cpp:677
+ #, c-format
+ msgid "%s: gpgme_op_import(): %s"
+ msgstr "%s: gpgme_op_import(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:686 libdnf/repo/Repo.cpp:752 libdnf/repo/Repo.cpp:880
++#: libdnf/repo/Repo.cpp:700 libdnf/repo/Repo.cpp:766 libdnf/repo/Repo.cpp:894
+ #, c-format
+ msgid "%s: gpgme_ctx_set_engine_info(): %s"
+ msgstr "%s: gpgme_ctx_set_engine_info(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:777
++#: libdnf/repo/Repo.cpp:727 libdnf/repo/Repo.cpp:791
+ #, c-format
+ msgid "can not list keys: %s"
+ msgstr "열쇠를 나열 할 수 없습니다 : %s"
+ 
+-#: libdnf/repo/Repo.cpp:806
++#: libdnf/repo/Repo.cpp:820
+ #, c-format
+ msgid "Failed to retrieve GPG key for repo '%s': %s"
+-msgstr ""
++msgstr "repo '%s'에 대한 GPG 키를 검색하지 못했습니다: %s"
+ 
+-#: libdnf/repo/Repo.cpp:859
++#: libdnf/repo/Repo.cpp:873
+ #, c-format
+ msgid "repo %s: 0x%s already imported"
+ msgstr "레포 %s: 0x%s 이미 수입"
+ 
+-#: libdnf/repo/Repo.cpp:887
++#: libdnf/repo/Repo.cpp:901
+ #, c-format
+ msgid "repo %s: imported key 0x%s."
+ msgstr "레포 %s: 가져온 키 0x%s."
+ 
+-#: libdnf/repo/Repo.cpp:1131
++#: libdnf/repo/Repo.cpp:1149
+ #, c-format
+ msgid "reviving: repo '%s' skipped, no metalink."
+ msgstr "부활 : repo '%s'건너 뛰었습니다."
+ 
+-#: libdnf/repo/Repo.cpp:1150
++#: libdnf/repo/Repo.cpp:1168
+ #, c-format
+ msgid "reviving: repo '%s' skipped, no usable hash."
+ msgstr "부활 : repo '%s'건너 뛰었습니다. 사용 가능한 해시가 없습니다."
+ 
+-#: libdnf/repo/Repo.cpp:1173
++#: libdnf/repo/Repo.cpp:1191
+ #, c-format
+ msgid "reviving: failed for '%s', mismatched %s sum."
+ msgstr "되살리기 : 실패한 '%s', 불일치 %s 합집합."
+ 
+-#: libdnf/repo/Repo.cpp:1179
++#: libdnf/repo/Repo.cpp:1197
+ #, c-format
+ msgid "reviving: '%s' can be revived - metalink checksums match."
+ msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - metalink 체크섬이 일치합니다."
+ 
+-#: libdnf/repo/Repo.cpp:1204
++#: libdnf/repo/Repo.cpp:1222
+ #, c-format
+ msgid "reviving: '%s' can be revived - repomd matches."
+ msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - repomd가 일치합니다."
+ 
+-#: libdnf/repo/Repo.cpp:1206
++#: libdnf/repo/Repo.cpp:1224
+ #, c-format
+ msgid "reviving: failed for '%s', mismatched repomd."
+ msgstr "되살리기 : 실패한 '%s', 일치하지 않는 repomd."
+ 
+-#: libdnf/repo/Repo.cpp:1224
++#: libdnf/repo/Repo.cpp:1242
+ #, c-format
+ msgid "Cannot create repo destination directory \"%s\": %s"
+-msgstr ""
++msgstr "repo 대상 디렉토리 “%s\"를 작성할 수 없습니다: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1230
++#: libdnf/repo/Repo.cpp:1248
+ #, c-format
+ msgid "Cannot create repo temporary directory \"%s\": %s"
+ msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s"
+ 
+-#: libdnf/repo/Repo.cpp:1244
++#: libdnf/repo/Repo.cpp:1262
+ #, c-format
+ msgid "Cannot create directory \"%s\": %s"
+ msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s"
+ 
+-#: libdnf/repo/Repo.cpp:1267
++#: libdnf/repo/Repo.cpp:1285
+ #, c-format
+ msgid "Cannot rename directory \"%s\" to \"%s\": %s"
+ msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s"
+ 
+-#: libdnf/repo/Repo.cpp:1290
++#: libdnf/repo/Repo.cpp:1308
+ #, c-format
+ msgid "repo: using cache for: %s"
+ msgstr "repo : 캐시 사용 : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1302
++#: libdnf/repo/Repo.cpp:1320
+ #, c-format
+ msgid "Cache-only enabled but no cache for '%s'"
+ msgstr "캐시 만 사용 가능하지만 '%s'"
+ 
+-#: libdnf/repo/Repo.cpp:1306
++#: libdnf/repo/Repo.cpp:1324
+ #, c-format
+ msgid "repo: downloading from remote: %s"
+ msgstr "repo : 원격에서 다운로드 중 : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1312
++#: libdnf/repo/Repo.cpp:1330
+ #, c-format
+ msgid "Failed to download metadata for repo '%s': %s"
+-msgstr ""
++msgstr "repo '%s'의 메타 데이터를 다운로드하지 못했습니다: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1338
++#: libdnf/repo/Repo.cpp:1356
+ msgid "getCachedir(): Computation of SHA256 failed"
+ msgstr "getCachedir () : SHA256 계산에 실패했습니다."
+ 
+-#: libdnf/repo/Repo.cpp:1363
++#: libdnf/repo/Repo.cpp:1384
+ #, c-format
+ msgid "Cannot create persistdir \"%s\": %s"
++msgstr "persistdir “%s\"을/를 작성할 수 없습니다: %s"
++
++#: libdnf/repo/Repo.cpp:1715
++msgid "'proxy_username' is set but not 'proxy_password'"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1763
++#: libdnf/repo/Repo.cpp:1787
+ msgid "resume cannot be used simultaneously with the byterangestart param"
+ msgstr "이력서는 byterangestart 매개 변수와 동시에 사용할 수 없습니다."
+ 
+-#: libdnf/repo/Repo.cpp:1780
++#: libdnf/repo/Repo.cpp:1804
+ #, c-format
+ msgid "PackageTarget initialization failed: %s"
+ msgstr "PackageTarget 초기화에 실패했습니다 : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1886
++#: libdnf/repo/Repo.cpp:1910
+ #, c-format
+ msgid "Cannot open %s: %s"
+ msgstr "열 수 없다 %s: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1930
++#: libdnf/repo/Repo.cpp:1954
+ #, c-format
+ msgid "Log handler with id %ld doesn't exist"
+ msgstr "ID가있는 로그 처리기 %ld 존재하지 않는다."
+@@ -903,7 +1043,7 @@ msgstr "완료된 트랜잭션에서 트랜잭션 항목 업데이트를 시도
+ 
+ #: libdnf/transaction/Transformer.cpp:76
+ msgid "Database Corrupted: no row 'version' in table 'config'"
+-msgstr ""
++msgstr "데이터베이스 손상: 'config' 테이블에 'version' 행이 없습니다."
+ 
+ #: libdnf/transaction/Transformer.cpp:681
+ msgid "Transformer: can't open history persist dir"
+@@ -925,6 +1065,3 @@ msgstr "TransactionItem 상태가 설정되지 않았습니다. %s"
+ #: libdnf/transaction/private/Transaction.cpp:243
+ msgid "Can't add console output to unsaved transaction"
+ msgstr "저장되지 않은 트랜잭션에 콘솔 출력을 추가 할 수 없습니다."
+-
+-#~ msgid "failed calculating RPMDB checksum"
+-#~ msgstr "RPMDB 체크섬 계산 실패"
+diff --git a/po/libdnf.pot b/po/libdnf.pot
+index e7c0edfc..96a9634e 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: 2020-10-05 09:18-0400\n"
++"POT-Creation-Date: 2021-02-22 09:52+0100\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"
+@@ -37,17 +37,17 @@ msgstr ""
+ msgid "unknown unit '%s'"
+ msgstr ""
+ 
+-#: libdnf/conf/ConfigMain.cpp:332
++#: libdnf/conf/ConfigMain.cpp:334
+ #, c-format
+ msgid "percentage '%s' is out of range"
+ msgstr ""
+ 
+-#: libdnf/conf/OptionBinds.cpp:76
++#: libdnf/conf/OptionBinds.cpp:85
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" does not exist"
+ msgstr ""
+ 
+-#: libdnf/conf/OptionBinds.cpp:88
++#: libdnf/conf/OptionBinds.cpp:97
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" already exists"
+ msgstr ""
+@@ -58,7 +58,7 @@ msgid "invalid boolean value '%s'"
+ msgstr ""
+ 
+ #: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158
+-#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59
++#: libdnf/conf/OptionString.cpp:64 libdnf/conf/OptionStringList.cpp:59
+ #, c-format
+ msgid "'%s' is not an allowed value"
+ msgstr ""
+@@ -92,10 +92,97 @@ msgstr ""
+ msgid "could not convert '%s' to seconds"
+ msgstr ""
+ 
+-#: libdnf/conf/OptionString.cpp:74
++#: libdnf/conf/OptionString.cpp:79
+ msgid "GetValue(): Value not set"
+ msgstr ""
+ 
++#: libdnf/dnf-context.cpp:3033 libdnf/dnf-context.cpp:3042
++#, c-format
++msgid "Cannot enable more streams from module '%s' at the same time"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3051 libdnf/dnf-context.cpp:3069
++#, c-format
++msgid ""
++"Cannot enable module '%1$s' stream '%2$s': State of module already modified"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3116
++#, c-format
++msgid "Modular dependency problem with Defaults: %s"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3119
++#, c-format
++msgid "Modular dependency problem: %s"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3153 libdnf/dnf-context.cpp:3177
++#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3227
++#: libdnf/dnf-context.cpp:3243 libdnf/dnf-context.cpp:3275
++#, c-format
++msgid "Unable to resolve argument '%s'"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3160
++#, c-format
++msgid ""
++"Only module name is required. Ignoring unneeded information in argument: '%s'"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3174
++#, c-format
++msgid "Cannot reset module '%s': State of module already modified"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3185
++#, c-format
++msgid "Cannot disable module '%s': State of module already modified"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3216 libdnf/dnf-context.cpp:3307
++msgid "No modular data available"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3233
++#, c-format
++msgid "Ignoring unneeded information in argument: '%s'"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3271
++#, c-format
++msgid ""
++"Problem during enablement of dependency tree for moduele '%1$s' stream "
++"'%2$s': %3$s"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3283
++msgid "Problems appeared for module enable request"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3338
++msgid "Problems appeared for module reset request"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3340
++msgid "Problems appeared for module disable request"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3376
++#, c-format
++msgid ""
++"The operation would result in switching of module '%s' stream '%s' to stream "
++"'%s'"
++msgstr ""
++
++#: libdnf/dnf-context.cpp:3380
++msgid ""
++"It is not possible to switch enabled streams of a module.\n"
++"It is recommended to remove all installed content from the module, and reset "
++"the module using 'microdnf module reset <module_name>' command. After you "
++"reset the module, you can install the other stream."
++msgstr ""
++
+ #: libdnf/dnf-goal.cpp:68
+ msgid "Could not depsolve transaction; "
+ msgstr ""
+@@ -177,84 +264,84 @@ msgstr ""
+ msgid "could not add erase element %1$s(%2$i)"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:381
+-#, c-format
+-msgid "no %1$s string for %2$s"
++#: libdnf/dnf-sack.cpp:395
++msgid "failed to add solv"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:404
+-msgid "failed to add solv"
++#: libdnf/dnf-sack.cpp:414
++#, c-format
++msgid "no %1$s string for %2$s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:422
++#: libdnf/dnf-sack.cpp:424
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:501
++#: libdnf/dnf-sack.cpp:503
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:511
++#: libdnf/dnf-sack.cpp:513
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:523
++#: libdnf/dnf-sack.cpp:525
+ #, c-format
+ msgid "write_main() failed writing data: %i"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:540
++#: libdnf/dnf-sack.cpp:542
+ msgid "write_main() failed to re-load written solv file"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:605
++#: libdnf/dnf-sack.cpp:607
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:623
++#: libdnf/dnf-sack.cpp:625
+ #, c-format
+ msgid "write_ext(%1$d) has failed: %2$d"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:678
++#: libdnf/dnf-sack.cpp:680
+ msgid "null repo md file"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:687
++#: libdnf/dnf-sack.cpp:689
+ #, c-format
+ msgid "can not read file %1$s: %2$s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:701
++#: libdnf/dnf-sack.cpp:703
+ msgid "repo_add_solv() has failed."
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:714
++#: libdnf/dnf-sack.cpp:716
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:727
++#: libdnf/dnf-sack.cpp:729
+ msgid "repo_add_repomdxml/rpmmd() has failed."
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:794
++#: libdnf/dnf-sack.cpp:796
+ msgid "failed to auto-detect architecture"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:919
++#: libdnf/dnf-sack.cpp:961
+ #, c-format
+ msgid "failed creating cachedir %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:1696
++#: libdnf/dnf-sack.cpp:1738
+ msgid "failed loading RPMDB"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:2403
++#: libdnf/dnf-sack.cpp:2461
+ #, c-format
+ msgid "No module defaults found: %s"
+ msgstr ""
+@@ -340,7 +427,7 @@ msgstr ""
+ msgid "Error %i running transaction"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:1473
++#: libdnf/dnf-transaction.cpp:1474
+ #, c-format
+ msgid "Transaction did not go to writing phase, but returned no error(%i)"
+ msgstr ""
+@@ -572,7 +659,16 @@ msgstr ""
+ msgid "no solution possible"
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1479
++#: libdnf/goal/Goal.cpp:1193
++msgid "Problem: "
++msgstr ""
++
++#: libdnf/goal/Goal.cpp:1198
++#, c-format
++msgid "Problem %d: "
++msgstr ""
++
++#: libdnf/goal/Goal.cpp:1525
+ msgid ""
+ "The operation would result in removing the following protected packages: "
+ msgstr ""
+@@ -634,27 +730,51 @@ msgstr ""
+ msgid "Conflicting defaults with repo '%s': %s"
+ msgstr ""
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1569
++#: libdnf/module/ModulePackageContainer.cpp:829
++msgid "Installing module profiles:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:844
++msgid "Disabling module profiles:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:859
++msgid "Enabling module streams:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:873
++msgid "Switching module streams:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:891
++msgid "Disabling modules:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:902
++msgid "Resetting modules:\n"
++msgstr ""
++
++#: libdnf/module/ModulePackageContainer.cpp:1586
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data at '%s'"
+ msgstr ""
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1575
++#: libdnf/module/ModulePackageContainer.cpp:1592
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
+ msgstr ""
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1639
++#: libdnf/module/ModulePackageContainer.cpp:1656
+ #, c-format
+ msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
+ msgstr ""
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1661
++#: libdnf/module/ModulePackageContainer.cpp:1678
+ #, c-format
+ msgid "Unable to save a modular Fail Safe data to '%s'"
+ msgstr ""
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1686
++#: libdnf/module/ModulePackageContainer.cpp:1703
+ #, c-format
+ msgid "Unable to remove a modular Fail Safe data in '%s'"
+ msgstr ""
+@@ -736,146 +856,161 @@ msgstr ""
+ msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:546
++#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:534 libdnf/repo/Repo.cpp:581
++#: libdnf/repo/Repo.cpp:1368
++#, c-format
++msgid "repo '%s': 'basecachedir' is not set"
++msgstr ""
++
++#: libdnf/repo/Repo.cpp:553
+ #, c-format
+ msgid "Cannot find a valid baseurl for repo: %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:583 libdnf/repo/Repo.cpp:1672
++#: libdnf/repo/Repo.cpp:594 libdnf/repo/Repo.cpp:1693
+ msgid ""
+ "Maximum download speed is lower than minimum. Please change configuration of "
+ "minrate or throttle"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:633 libdnf/repo/Repo.cpp:655
++#: libdnf/repo/Repo.cpp:625
++#, c-format
++msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
++msgstr ""
++
++#: libdnf/repo/Repo.cpp:647 libdnf/repo/Repo.cpp:669
+ #, c-format
+ msgid "%s: gpgme_data_new_from_fd(): %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:641 libdnf/repo/Repo.cpp:663
++#: libdnf/repo/Repo.cpp:655 libdnf/repo/Repo.cpp:677
+ #, c-format
+ msgid "%s: gpgme_op_import(): %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:686 libdnf/repo/Repo.cpp:752 libdnf/repo/Repo.cpp:880
++#: libdnf/repo/Repo.cpp:700 libdnf/repo/Repo.cpp:766 libdnf/repo/Repo.cpp:894
+ #, c-format
+ msgid "%s: gpgme_ctx_set_engine_info(): %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:777
++#: libdnf/repo/Repo.cpp:727 libdnf/repo/Repo.cpp:791
+ #, c-format
+ msgid "can not list keys: %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:806
++#: libdnf/repo/Repo.cpp:820
+ #, c-format
+ msgid "Failed to retrieve GPG key for repo '%s': %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:859
++#: libdnf/repo/Repo.cpp:873
+ #, c-format
+ msgid "repo %s: 0x%s already imported"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:887
++#: libdnf/repo/Repo.cpp:901
+ #, c-format
+ msgid "repo %s: imported key 0x%s."
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1131
++#: libdnf/repo/Repo.cpp:1149
+ #, c-format
+ msgid "reviving: repo '%s' skipped, no metalink."
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1150
++#: libdnf/repo/Repo.cpp:1168
+ #, c-format
+ msgid "reviving: repo '%s' skipped, no usable hash."
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1173
++#: libdnf/repo/Repo.cpp:1191
+ #, c-format
+ msgid "reviving: failed for '%s', mismatched %s sum."
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1179
++#: libdnf/repo/Repo.cpp:1197
+ #, c-format
+ msgid "reviving: '%s' can be revived - metalink checksums match."
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1204
++#: libdnf/repo/Repo.cpp:1222
+ #, c-format
+ msgid "reviving: '%s' can be revived - repomd matches."
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1206
++#: libdnf/repo/Repo.cpp:1224
+ #, c-format
+ msgid "reviving: failed for '%s', mismatched repomd."
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1224
++#: libdnf/repo/Repo.cpp:1242
+ #, c-format
+ msgid "Cannot create repo destination directory \"%s\": %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1230
++#: libdnf/repo/Repo.cpp:1248
+ #, c-format
+ msgid "Cannot create repo temporary directory \"%s\": %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1244
++#: libdnf/repo/Repo.cpp:1262
+ #, c-format
+ msgid "Cannot create directory \"%s\": %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1267
++#: libdnf/repo/Repo.cpp:1285
+ #, c-format
+ msgid "Cannot rename directory \"%s\" to \"%s\": %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1290
++#: libdnf/repo/Repo.cpp:1308
+ #, c-format
+ msgid "repo: using cache for: %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1302
++#: libdnf/repo/Repo.cpp:1320
+ #, c-format
+ msgid "Cache-only enabled but no cache for '%s'"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1306
++#: libdnf/repo/Repo.cpp:1324
+ #, c-format
+ msgid "repo: downloading from remote: %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1312
++#: libdnf/repo/Repo.cpp:1330
+ #, c-format
+ msgid "Failed to download metadata for repo '%s': %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1338
++#: libdnf/repo/Repo.cpp:1356
+ msgid "getCachedir(): Computation of SHA256 failed"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1363
++#: libdnf/repo/Repo.cpp:1384
+ #, c-format
+ msgid "Cannot create persistdir \"%s\": %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1763
++#: libdnf/repo/Repo.cpp:1715
++msgid "'proxy_username' is set but not 'proxy_password'"
++msgstr ""
++
++#: libdnf/repo/Repo.cpp:1787
+ msgid "resume cannot be used simultaneously with the byterangestart param"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1780
++#: libdnf/repo/Repo.cpp:1804
+ #, c-format
+ msgid "PackageTarget initialization failed: %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1886
++#: libdnf/repo/Repo.cpp:1910
+ #, c-format
+ msgid "Cannot open %s: %s"
+ msgstr ""
+ 
+-#: libdnf/repo/Repo.cpp:1930
++#: libdnf/repo/Repo.cpp:1954
+ #, c-format
+ msgid "Log handler with id %ld doesn't exist"
+ msgstr ""
+diff --git a/po/zh_CN.po b/po/zh_CN.po
+index 9583b075..31c972fe 100644
+--- a/po/zh_CN.po
++++ b/po/zh_CN.po
+@@ -1,19 +1,20 @@
+ # Charles Lee <lchopn@gmail.com>, 2017. #zanata, 2020.
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
++# Sundeep Anand <suanand@redhat.com>, 2021.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2020-10-05 09:18-0400\n"
+-"PO-Revision-Date: 2020-07-09 13:27+0000\n"
+-"Last-Translator: Charles Lee <lchopn@gmail.com>\n"
+-"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/zh_CN/>\n"
++"POT-Creation-Date: 2021-02-22 09:52+0100\n"
++"PO-Revision-Date: 2021-03-08 11:09+0000\n"
++"Last-Translator: Sundeep Anand <suanand@redhat.com>\n"
++"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/projects/dnf/libdnf-rhel-8/zh_CN/>\n"
+ "Language: zh_CN\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=1; plural=0;\n"
+-"X-Generator: Weblate 4.1.1\n"
++"X-Generator: Weblate 4.5.1\n"
+ 
+ #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
+ msgid "no value specified"
+@@ -32,33 +33,33 @@ msgstr "无法把 '%s' 转换为字节"
+ #: libdnf/conf/ConfigMain.cpp:83 libdnf/conf/OptionSeconds.cpp:66
+ #, c-format
+ msgid "unknown unit '%s'"
+-msgstr "未知单元 “%s”"
++msgstr "未知单元 '%s'"
+ 
+-#: libdnf/conf/ConfigMain.cpp:332
++#: libdnf/conf/ConfigMain.cpp:334
+ #, c-format
+ msgid "percentage '%s' is out of range"
+ msgstr "百分数 '%s' 超出范围"
+ 
+-#: libdnf/conf/OptionBinds.cpp:76
++#: libdnf/conf/OptionBinds.cpp:85
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" does not exist"
+-msgstr "配置:ID 为 \"%s\"  的 OptionBinding 不存在"
++msgstr "配置:ID 为 '%s' 的 OptionBinding 不存在"
+ 
+-#: libdnf/conf/OptionBinds.cpp:88
++#: libdnf/conf/OptionBinds.cpp:97
+ #, c-format
+ msgid "Configuration: OptionBinding with id \"%s\" already exists"
+-msgstr "配置:ID 为 \"%s\"  的 OptionBinding 已存在"
++msgstr "配置:ID 为 '%s' 的 OptionBinding 已存在"
+ 
+ #: libdnf/conf/OptionBool.cpp:47
+ #, c-format
+ msgid "invalid boolean value '%s'"
+-msgstr "无效的布尔值“%s”"
++msgstr "无效的布尔值'%s'"
+ 
+ #: libdnf/conf/OptionEnum.cpp:72 libdnf/conf/OptionEnum.cpp:158
+-#: libdnf/conf/OptionString.cpp:59 libdnf/conf/OptionStringList.cpp:59
++#: libdnf/conf/OptionString.cpp:64 libdnf/conf/OptionStringList.cpp:59
+ #, c-format
+ msgid "'%s' is not an allowed value"
+-msgstr "'%s'  不是一个允许的值"
++msgstr "'%s' 不是一个允许的值"
+ 
+ #: libdnf/conf/OptionEnum.cpp:83 libdnf/conf/OptionNumber.cpp:88
+ msgid "invalid value"
+@@ -89,10 +90,98 @@ msgstr "给定的路径 “%s” 不存在。"
+ msgid "could not convert '%s' to seconds"
+ msgstr "无法把 '%s' 转换为秒"
+ 
+-#: libdnf/conf/OptionString.cpp:74
++#: libdnf/conf/OptionString.cpp:79
+ msgid "GetValue(): Value not set"
+ msgstr "GetValue(): 值没有设置"
+ 
++#: libdnf/dnf-context.cpp:3033 libdnf/dnf-context.cpp:3042
++#, c-format
++msgid "Cannot enable more streams from module '%s' at the same time"
++msgstr "无法同时从模块 '%s' 中启用更多流"
++
++#: libdnf/dnf-context.cpp:3051 libdnf/dnf-context.cpp:3069
++#, c-format
++msgid ""
++"Cannot enable module '%1$s' stream '%2$s': State of module already modified"
++msgstr "无法启用模块 '%1$s' 流 '%2$s':已经修改的模块状态"
++
++#: libdnf/dnf-context.cpp:3116
++#, c-format
++msgid "Modular dependency problem with Defaults: %s"
++msgstr "默认设置的模块依赖性问题:%s"
++
++#: libdnf/dnf-context.cpp:3119
++#, c-format
++msgid "Modular dependency problem: %s"
++msgstr "模块依赖问题:%s"
++
++#: libdnf/dnf-context.cpp:3153 libdnf/dnf-context.cpp:3177
++#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3227
++#: libdnf/dnf-context.cpp:3243 libdnf/dnf-context.cpp:3275
++#, c-format
++msgid "Unable to resolve argument '%s'"
++msgstr "无法解析参数 '%s'"
++
++#: libdnf/dnf-context.cpp:3160
++#, c-format
++msgid ""
++"Only module name is required. Ignoring unneeded information in argument: "
++"'%s'"
++msgstr "只需要模块名。忽略参数 '%s' 中的无用信息"
++
++#: libdnf/dnf-context.cpp:3174
++#, c-format
++msgid "Cannot reset module '%s': State of module already modified"
++msgstr "无法重置模块 '%s':已修改的模块状态"
++
++#: libdnf/dnf-context.cpp:3185
++#, c-format
++msgid "Cannot disable module '%s': State of module already modified"
++msgstr "无法禁用模块 '%s':已经修改的模块状态"
++
++#: libdnf/dnf-context.cpp:3216 libdnf/dnf-context.cpp:3307
++msgid "No modular data available"
++msgstr "没有可用的模块数据"
++
++#: libdnf/dnf-context.cpp:3233
++#, c-format
++msgid "Ignoring unneeded information in argument: '%s'"
++msgstr "忽略参数:\"%s\" 中不需要的信息"
++
++#: libdnf/dnf-context.cpp:3271
++#, c-format
++msgid ""
++"Problem during enablement of dependency tree for moduele '%1$s' stream "
++"'%2$s': %3$s"
++msgstr "为模块 '%1$s' 流 '%2$s' 启用依赖树时出现问题: %3$s"
++
++#: libdnf/dnf-context.cpp:3283
++msgid "Problems appeared for module enable request"
++msgstr "模块启用请求时出现问题"
++
++#: libdnf/dnf-context.cpp:3338
++msgid "Problems appeared for module reset request"
++msgstr "模块重置请求时出现问题"
++
++#: libdnf/dnf-context.cpp:3340
++msgid "Problems appeared for module disable request"
++msgstr "模块禁用请求时出现问题"
++
++#: libdnf/dnf-context.cpp:3376
++#, c-format
++msgid ""
++"The operation would result in switching of module '%s' stream '%s' to stream"
++" '%s'"
++msgstr "这个操作会把模块 '%s' 从流 '%s' 切换到流 '%s'"
++
++#: libdnf/dnf-context.cpp:3380
++msgid ""
++"It is not possible to switch enabled streams of a module.\n"
++"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset <module_name>' command. After you reset the module, you can install the other stream."
++msgstr ""
++"无法切换一个模块已启用的流。 推荐从模块中删除所有已安装的内容,使用 'microdnf module reset <module_name>' "
++"命令重置模块。在重置模块后就可以安装其他流。"
++
+ #: libdnf/dnf-goal.cpp:68
+ msgid "Could not depsolve transaction; "
+ msgstr "无法 depsolve 事务: "
+@@ -118,7 +207,7 @@ msgstr " 问题: %s\n"
+ msgid ""
+ "No available modular metadata for modular package '%s'; cannot be installed "
+ "on the system"
+-msgstr ""
++msgstr "模块软件包 '%s' 没有可用的元数据,它不能在系统上安装"
+ 
+ #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
+ #, c-format
+@@ -173,87 +262,87 @@ msgstr "无法找到软件包 %s"
+ msgid "could not add erase element %1$s(%2$i)"
+ msgstr "无法添加删除元素 %1$s(%2$i)"
+ 
+-#: libdnf/dnf-sack.cpp:381
+-#, c-format
+-msgid "no %1$s string for %2$s"
+-msgstr ""
+-
+-#: libdnf/dnf-sack.cpp:404
++#: libdnf/dnf-sack.cpp:395
+ msgid "failed to add solv"
+ msgstr "添加 solv 失败"
+ 
+-#: libdnf/dnf-sack.cpp:422
++#: libdnf/dnf-sack.cpp:414
++#, c-format
++msgid "no %1$s string for %2$s"
++msgstr "没有为 %2$s 的 %1$s 字符串"
++
++#: libdnf/dnf-sack.cpp:424
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr "打开失败:%s"
+ 
+-#: libdnf/dnf-sack.cpp:501
++#: libdnf/dnf-sack.cpp:503
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr "不能创建临时文件: %s"
+ 
+-#: libdnf/dnf-sack.cpp:511
++#: libdnf/dnf-sack.cpp:513
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr "打开 tmp 文件失败: %s"
+ 
+-#: libdnf/dnf-sack.cpp:523
++#: libdnf/dnf-sack.cpp:525
+ #, c-format
+ msgid "write_main() failed writing data: %i"
+ msgstr "write_main() 写数据失败: %i"
+ 
+-#: libdnf/dnf-sack.cpp:540
++#: libdnf/dnf-sack.cpp:542
+ msgid "write_main() failed to re-load written solv file"
+ msgstr "write_main() 重新加载写的 solv 文件失败"
+ 
+-#: libdnf/dnf-sack.cpp:605
++#: libdnf/dnf-sack.cpp:607
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr "不能创建临时文件 %s"
+ 
+-#: libdnf/dnf-sack.cpp:623
++#: libdnf/dnf-sack.cpp:625
+ #, c-format
+ msgid "write_ext(%1$d) has failed: %2$d"
+ msgstr "write_ext(%1$d) 已失败: %2$d"
+ 
+-#: libdnf/dnf-sack.cpp:678
++#: libdnf/dnf-sack.cpp:680
+ msgid "null repo md file"
+ msgstr "null repo md 文件"
+ 
+-#: libdnf/dnf-sack.cpp:687
++#: libdnf/dnf-sack.cpp:689
+ #, c-format
+ msgid "can not read file %1$s: %2$s"
+ msgstr "不能读文件 %1$s: %2$s"
+ 
+-#: libdnf/dnf-sack.cpp:701
++#: libdnf/dnf-sack.cpp:703
+ msgid "repo_add_solv() has failed."
+ msgstr "repo_add_solv() 已失败。"
+ 
+-#: libdnf/dnf-sack.cpp:714
++#: libdnf/dnf-sack.cpp:716
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+-msgstr ""
++msgstr "加载 MD_TYPE_PRIMARY 失败。"
+ 
+-#: libdnf/dnf-sack.cpp:727
++#: libdnf/dnf-sack.cpp:729
+ msgid "repo_add_repomdxml/rpmmd() has failed."
+ msgstr "repo_add_repomdxml/rpmmd() 已失败。"
+ 
+-#: libdnf/dnf-sack.cpp:794
++#: libdnf/dnf-sack.cpp:796
+ msgid "failed to auto-detect architecture"
+ msgstr "自动检测架构失败"
+ 
+-#: libdnf/dnf-sack.cpp:919
++#: libdnf/dnf-sack.cpp:961
+ #, c-format
+ msgid "failed creating cachedir %s"
+ msgstr "无法创建 cachedir %s"
+ 
+-#: libdnf/dnf-sack.cpp:1696
++#: libdnf/dnf-sack.cpp:1738
+ msgid "failed loading RPMDB"
+ msgstr "无法加载 RPMDB"
+ 
+-#: libdnf/dnf-sack.cpp:2403
++#: libdnf/dnf-sack.cpp:2461
+ #, c-format
+ msgid "No module defaults found: %s"
+-msgstr ""
++msgstr "没有找到模块默认设置:%s"
+ 
+ #: libdnf/dnf-state.cpp:1184
+ #, c-format
+@@ -336,7 +425,7 @@ msgstr "错误 %i 运行事务测试"
+ msgid "Error %i running transaction"
+ msgstr "错误 %i 运行事务"
+ 
+-#: libdnf/dnf-transaction.cpp:1473
++#: libdnf/dnf-transaction.cpp:1474
+ #, c-format
+ msgid "Transaction did not go to writing phase, but returned no error(%i)"
+ msgstr "事务没有进入写阶段,但没有返回错误(%i)"
+@@ -361,186 +450,186 @@ msgstr "这个操作使用了 Ill-formed Selector,不正确的比较类型"
+ 
+ #: libdnf/goal/Goal.cpp:67 libdnf/goal/Goal.cpp:94
+ msgid " does not belong to a distupgrade repository"
+-msgstr ""
++msgstr " 不属于 distupgrade 仓库"
+ 
+ #: libdnf/goal/Goal.cpp:68 libdnf/goal/Goal.cpp:95
+ 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:97
+ msgid "conflicting requests"
+-msgstr ""
++msgstr "冲突的请求"
+ 
+ #: libdnf/goal/Goal.cpp:71 libdnf/goal/Goal.cpp:98
+ msgid "unsupported request"
+-msgstr ""
++msgstr "不支持的请求"
+ 
+ #: libdnf/goal/Goal.cpp:72 libdnf/goal/Goal.cpp:99
+ 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:101
+ msgid " is provided by the system"
+-msgstr ""
++msgstr " 由系统提供"
+ 
+ #: libdnf/goal/Goal.cpp:75 libdnf/goal/Goal.cpp:102
+ 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:104
+ msgid "cannot install the best candidate for the job"
+-msgstr ""
++msgstr "无法为任务安装最佳选择"
+ 
+ #: libdnf/goal/Goal.cpp:78
+ #, c-format
+ msgid "package %s is filtered out by modular filtering"
+-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 "package %s is filtered out by exclude filtering"
+-msgstr ""
++msgstr "软件包 %s 被排除过滤过滤掉"
+ 
+ #: libdnf/goal/Goal.cpp:82
+ #, c-format
+ msgid "nothing provides %s needed by %s"
+-msgstr ""
++msgstr "没有提供 %s(%s 需要)"
+ 
+ #: libdnf/goal/Goal.cpp:83
+ #, c-format
+ msgid "cannot install both %s and %s"
+-msgstr ""
++msgstr "无法同时安装 %s 和 %s"
+ 
+ #: libdnf/goal/Goal.cpp:84
+ #, c-format
+ msgid "package %s conflicts with %s provided by %s"
+-msgstr ""
++msgstr "软件包 %s 与 %s(由 %s 提供)冲突"
+ 
+ #: libdnf/goal/Goal.cpp:85
+ #, c-format
+ msgid "package %s obsoletes %s provided by %s"
+-msgstr ""
++msgstr "软件包 %s 过时了 %s(由 %s 提供)"
+ 
+ #: libdnf/goal/Goal.cpp:86
+ #, c-format
+ msgid "installed package %s obsoletes %s provided by %s"
+-msgstr ""
++msgstr "安装的软件包 %s 过时了 %s(由 %s 提供)"
+ 
+ #: libdnf/goal/Goal.cpp:87
+ #, c-format
+ msgid "package %s implicitly obsoletes %s provided by %s"
+-msgstr ""
++msgstr "软件包 %s 隐式过期了 %s(由 %s 提供)"
+ 
+ #: libdnf/goal/Goal.cpp:88
+ #, c-format
+ msgid "package %s requires %s, but none of the providers can be installed"
+-msgstr ""
++msgstr "软件包 %s 需要 %s,但没有供应商可以安装"
+ 
+ #: libdnf/goal/Goal.cpp:89
+ #, c-format
+ msgid "package %s conflicts with %s provided by itself"
+-msgstr ""
++msgstr "软件包 %s 与自己提供的 %s 冲突"
+ 
+ #: libdnf/goal/Goal.cpp:90
+ #, c-format
+ msgid "both package %s and %s obsolete %s"
+-msgstr ""
++msgstr "软件包 %s 和 %s 都过期了 %s"
+ 
+ #: libdnf/goal/Goal.cpp:96
+ msgid "problem with installed module "
+-msgstr ""
++msgstr "安装的模块的问题 "
+ 
+ #: libdnf/goal/Goal.cpp:100
+ #, c-format
+ msgid "module %s does not exist"
+-msgstr ""
++msgstr "模块 %s 不存在"
+ 
+ #: libdnf/goal/Goal.cpp:103
+ msgid "cannot install the best update candidate for module "
+-msgstr ""
++msgstr "无法为模块安装最佳更新选择 "
+ 
+ #: libdnf/goal/Goal.cpp:105 libdnf/goal/Goal.cpp:108
+ #, c-format
+ msgid "module %s is disabled"
+-msgstr ""
++msgstr "模块 %s 被禁用"
+ 
+ #: libdnf/goal/Goal.cpp:106
+ #, c-format
+ msgid "module %s does not have a compatible architecture"
+-msgstr ""
++msgstr "模块 %s 没有兼容的架构"
+ 
+ #: libdnf/goal/Goal.cpp:107
+ #, c-format
+ msgid "module %s is not installable"
+-msgstr ""
++msgstr "模块 %s 不可安装"
+ 
+ #: libdnf/goal/Goal.cpp:109
+ #, c-format
+ msgid "nothing provides %s needed by module %s"
+-msgstr ""
++msgstr "没有提供 %s(模块 %s 需要它)"
+ 
+ #: libdnf/goal/Goal.cpp:110
+ #, c-format
+ msgid "cannot install both modules %s and %s"
+-msgstr ""
++msgstr "无法同时安装模块 %s 和 %s"
+ 
+ #: libdnf/goal/Goal.cpp:111
+ #, c-format
+ msgid "module %s conflicts with %s provided by %s"
+-msgstr ""
++msgstr "模块 %s 与 %s (由 %s 提供)冲突"
+ 
+ #: libdnf/goal/Goal.cpp:112
+ #, c-format
+ msgid "module %s obsoletes %s provided by %s"
+-msgstr ""
++msgstr "模块 %s 过时了 %s(由 %s 提供)"
+ 
+ #: libdnf/goal/Goal.cpp:113
+ #, c-format
+ msgid "installed module %s obsoletes %s provided by %s"
+-msgstr ""
++msgstr "安装的模块 %s 过时了 %s(由 %s 提供)"
+ 
+ #: libdnf/goal/Goal.cpp:114
+ #, c-format
+ msgid "module %s implicitly obsoletes %s provided by %s"
+-msgstr ""
++msgstr "模块 %s 隐式过时了 %s(由 %s 提供)"
+ 
+ #: libdnf/goal/Goal.cpp:115
+ #, c-format
+ msgid "module %s requires %s, but none of the providers can be installed"
+-msgstr ""
++msgstr "模块 %s 需要 %s,但没有供应商可以安装"
+ 
+ #: libdnf/goal/Goal.cpp:116
+ #, c-format
+ msgid "module %s conflicts with %s provided by itself"
+-msgstr ""
++msgstr "模块 %s 与自己提供的 %s 冲突"
+ 
+ #: libdnf/goal/Goal.cpp:117
+ #, c-format
+ msgid "both module %s and %s obsolete %s"
+-msgstr ""
++msgstr "模块 %s 和 %s 都过期了 %s"
+ 
+ #: libdnf/goal/Goal.cpp:1038
+ msgid "no solver set"
+@@ -568,7 +657,16 @@ msgstr "没有解决方案,不能删除保护的软件包"
+ msgid "no solution possible"
+ msgstr "没有可能的解决方案"
+ 
+-#: libdnf/goal/Goal.cpp:1479
++#: libdnf/goal/Goal.cpp:1193
++msgid "Problem: "
++msgstr "问题: "
++
++#: libdnf/goal/Goal.cpp:1198
++#, c-format
++msgid "Problem %d: "
++msgstr "问题 %d: "
++
++#: libdnf/goal/Goal.cpp:1525
+ msgid ""
+ "The operation would result in removing the following protected packages: "
+ msgstr "这个操作可能会导致删除以下受保护的软件包: "
+@@ -586,134 +684,158 @@ msgstr "在 %1$s 中设置 perms 失败: %2$s"
+ #: libdnf/hy-iutil.cpp:376
+ #, c-format
+ msgid "cannot create directory %1$s: %2$s"
+-msgstr ""
++msgstr "无法创建目录 %1$s: %2$s"
+ 
+ #: libdnf/hy-iutil.cpp:411
+ #, c-format
+ msgid "cannot stat path %1$s: %2$s"
+-msgstr ""
++msgstr "无法 stat 路径 %1$s: %2$s"
+ 
+ #: libdnf/module/ModulePackage.cpp:499
+ #, c-format
+ msgid "Invalid format of Platform module: %s"
+-msgstr ""
++msgstr "Platform 模块无效的格式 : %s"
+ 
+ #: libdnf/module/ModulePackage.cpp:514
+ msgid "Multiple module platforms provided by available packages\n"
+-msgstr ""
++msgstr "由可用软件包提供的多个模块平台\n"
+ 
+ #: libdnf/module/ModulePackage.cpp:527
+ msgid "Multiple module platforms provided by installed packages\n"
+-msgstr ""
++msgstr "由安装的软件包提供的多个模块平台\n"
+ 
+ #: libdnf/module/ModulePackage.cpp:554
+ #, c-format
+ msgid "Detection of Platform Module in %s failed: %s"
+-msgstr ""
++msgstr "删除 %s 中的 Platform 模块失败 : %s"
+ 
+ #: libdnf/module/ModulePackage.cpp:563
+ #, c-format
+ msgid "Missing PLATFORM_ID in %s"
+-msgstr ""
++msgstr "在 %s 中缺少 PLATFORM_ID"
+ 
+ #: libdnf/module/ModulePackage.cpp:568
+ msgid "No valid Platform ID detected"
+-msgstr ""
++msgstr "没有检测到有效的 Platform ID"
+ 
+ #: libdnf/module/ModulePackageContainer.cpp:68
+ #, c-format
+ msgid "Cannot enable multiple streams for module '%s'"
+-msgstr ""
++msgstr "无法为模块 '%s' 启用多个流"
+ 
+ #: libdnf/module/ModulePackageContainer.cpp:294
+ #, c-format
+ msgid "Conflicting defaults with repo '%s': %s"
+-msgstr ""
++msgstr "默认设置与 repo '%s' 冲突 : %s"
++
++#: libdnf/module/ModulePackageContainer.cpp:829
++msgid "Installing module profiles:\n"
++msgstr "安装模块配置档案:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:844
++msgid "Disabling module profiles:\n"
++msgstr "禁用模块配置档案:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:859
++msgid "Enabling module streams:\n"
++msgstr "启用模块流:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:873
++msgid "Switching module streams:\n"
++msgstr "切换模块流:\n"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1569
++#: libdnf/module/ModulePackageContainer.cpp:891
++msgid "Disabling modules:\n"
++msgstr "禁用模块:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:902
++msgid "Resetting modules:\n"
++msgstr "重置模块:\n"
++
++#: libdnf/module/ModulePackageContainer.cpp:1586
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data at '%s'"
+-msgstr ""
++msgstr "无法在 '%s' 加载模块 Fail-Safe 数据"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1575
++#: libdnf/module/ModulePackageContainer.cpp:1592
+ #, c-format
+ msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
+-msgstr ""
++msgstr "无法为模块 '%s:%s' 加载模块 Fail-Safe 数据"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1639
++#: libdnf/module/ModulePackageContainer.cpp:1656
+ #, c-format
+ msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
+-msgstr ""
++msgstr "无法为模块化 Fail Safe 数据创建目录 \"%s\" : %s"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1661
++#: libdnf/module/ModulePackageContainer.cpp:1678
+ #, c-format
+ msgid "Unable to save a modular Fail Safe data to '%s'"
+-msgstr ""
++msgstr "无法把模块 Fail Safe 数据 safe 为 '%s'"
+ 
+-#: libdnf/module/ModulePackageContainer.cpp:1686
++#: libdnf/module/ModulePackageContainer.cpp:1703
+ #, c-format
+ msgid "Unable to remove a modular Fail Safe data in '%s'"
+-msgstr ""
++msgstr "无法在 '%s' 中删除一个模块的 Fail Safe 数据"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:86
+ #, c-format
+ msgid "Failed to update from string: %s"
+-msgstr ""
++msgstr "从字符串更新失败: %s"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:110
+ #, c-format
+ msgid "Failed to resolve: %s"
+-msgstr ""
++msgstr "解析失败:%s"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:115
+ #, c-format
+ msgid "There were errors while resolving modular defaults: %s"
+-msgstr ""
++msgstr "在解析模块默认值时出现了错误:%s"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:120
+ #, c-format
+ msgid "Failed to upgrade defaults: %s"
+-msgstr ""
++msgstr "升级默认值失败:%s"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:123
+ #, c-format
+ msgid "Failed to upgrade streams: %s"
+-msgstr ""
++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/repo/DependencySplitter.cpp:50
+ msgid ""
+@@ -721,6 +843,8 @@ msgid ""
+ "deprecated and the support will be dropped in future versions. Use '=' "
+ "operator instead."
+ msgstr ""
++"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并且在未来的版本中会取消对它的支持。请使用 '=' "
++"操作符代替。"
+ 
+ #: libdnf/repo/Repo.cpp:321
+ #, c-format
+@@ -732,146 +856,161 @@ msgstr "软件仓库 %s 没有设置镜像或者 baseurl。"
+ msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
+ msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。"
+ 
+-#: libdnf/repo/Repo.cpp:546
++#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:534 libdnf/repo/Repo.cpp:581
++#: libdnf/repo/Repo.cpp:1368
++#, c-format
++msgid "repo '%s': 'basecachedir' is not set"
++msgstr "Repo '%s': 'basecachedir' 没有设置"
++
++#: libdnf/repo/Repo.cpp:553
+ #, c-format
+ msgid "Cannot find a valid baseurl for repo: %s"
+ msgstr "无法为仓库 %s 找到一个有效的 baseurl"
+ 
+-#: libdnf/repo/Repo.cpp:583 libdnf/repo/Repo.cpp:1672
++#: libdnf/repo/Repo.cpp:594 libdnf/repo/Repo.cpp:1693
+ msgid ""
+ "Maximum download speed is lower than minimum. Please change configuration of"
+ " minrate or throttle"
+ msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置"
+ 
+-#: libdnf/repo/Repo.cpp:633 libdnf/repo/Repo.cpp:655
++#: libdnf/repo/Repo.cpp:625
++#, c-format
++msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
++msgstr "Repo '%s': 'proxy_username' 已被设置,但没有设置 'proxy_password'"
++
++#: libdnf/repo/Repo.cpp:647 libdnf/repo/Repo.cpp:669
+ #, c-format
+ msgid "%s: gpgme_data_new_from_fd(): %s"
+ msgstr "%s: gpgme_data_new_from_fd(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:641 libdnf/repo/Repo.cpp:663
++#: libdnf/repo/Repo.cpp:655 libdnf/repo/Repo.cpp:677
+ #, c-format
+ msgid "%s: gpgme_op_import(): %s"
+ msgstr "%s: gpgme_op_import(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:686 libdnf/repo/Repo.cpp:752 libdnf/repo/Repo.cpp:880
++#: libdnf/repo/Repo.cpp:700 libdnf/repo/Repo.cpp:766 libdnf/repo/Repo.cpp:894
+ #, c-format
+ msgid "%s: gpgme_ctx_set_engine_info(): %s"
+ msgstr "%s: gpgme_ctx_set_engine_info(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:777
++#: libdnf/repo/Repo.cpp:727 libdnf/repo/Repo.cpp:791
+ #, c-format
+ msgid "can not list keys: %s"
+ msgstr "不能列出 key: %s"
+ 
+-#: libdnf/repo/Repo.cpp:806
++#: libdnf/repo/Repo.cpp:820
+ #, c-format
+ msgid "Failed to retrieve GPG key for repo '%s': %s"
+-msgstr ""
++msgstr "为 repo '%s' 获取 GPG 密钥失败 : %s"
+ 
+-#: libdnf/repo/Repo.cpp:859
++#: libdnf/repo/Repo.cpp:873
+ #, c-format
+ msgid "repo %s: 0x%s already imported"
+ msgstr "repo %s: 0x%s 已被导入"
+ 
+-#: libdnf/repo/Repo.cpp:887
++#: libdnf/repo/Repo.cpp:901
+ #, c-format
+ msgid "repo %s: imported key 0x%s."
+ msgstr "repo %s: 已导入密钥 0x%s。"
+ 
+-#: libdnf/repo/Repo.cpp:1131
++#: libdnf/repo/Repo.cpp:1149
+ #, c-format
+ msgid "reviving: repo '%s' skipped, no metalink."
+ msgstr "恢复中: 仓库 '%s' 已被跳过,无 metalink。"
+ 
+-#: libdnf/repo/Repo.cpp:1150
++#: libdnf/repo/Repo.cpp:1168
+ #, c-format
+ msgid "reviving: repo '%s' skipped, no usable hash."
+ msgstr "恢复中: 仓库 '%s' 已被跳过,无可用 hash。"
+ 
+-#: libdnf/repo/Repo.cpp:1173
++#: libdnf/repo/Repo.cpp:1191
+ #, c-format
+ msgid "reviving: failed for '%s', mismatched %s sum."
+ msgstr "恢复: '%s' 失败,不匹配的 %s sum。"
+ 
+-#: libdnf/repo/Repo.cpp:1179
++#: libdnf/repo/Repo.cpp:1197
+ #, c-format
+ msgid "reviving: '%s' can be revived - metalink checksums match."
+ msgstr "恢复中: '%s' 可以被恢复 - metalink 校验和匹配。"
+ 
+-#: libdnf/repo/Repo.cpp:1204
++#: libdnf/repo/Repo.cpp:1222
+ #, c-format
+ msgid "reviving: '%s' can be revived - repomd matches."
+ msgstr "恢复: '%s' 可用被恢复 - repomd 匹配。"
+ 
+-#: libdnf/repo/Repo.cpp:1206
++#: libdnf/repo/Repo.cpp:1224
+ #, c-format
+ msgid "reviving: failed for '%s', mismatched repomd."
+ msgstr "恢复: '%s' 失败,不匹配的 repomd。"
+ 
+-#: libdnf/repo/Repo.cpp:1224
++#: libdnf/repo/Repo.cpp:1242
+ #, c-format
+ msgid "Cannot create repo destination directory \"%s\": %s"
+-msgstr ""
++msgstr "无法创建 repo 目标目录 \"%s\": %s"
+ 
+-#: libdnf/repo/Repo.cpp:1230
++#: libdnf/repo/Repo.cpp:1248
+ #, c-format
+ msgid "Cannot create repo temporary directory \"%s\": %s"
+ msgstr "无法创建 repo 临时目录 \"%s\": %s"
+ 
+-#: libdnf/repo/Repo.cpp:1244
++#: libdnf/repo/Repo.cpp:1262
+ #, c-format
+ msgid "Cannot create directory \"%s\": %s"
+ msgstr "无法创建目录 \"%s\": %s"
+ 
+-#: libdnf/repo/Repo.cpp:1267
++#: libdnf/repo/Repo.cpp:1285
+ #, c-format
+ msgid "Cannot rename directory \"%s\" to \"%s\": %s"
+ msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s"
+ 
+-#: libdnf/repo/Repo.cpp:1290
++#: libdnf/repo/Repo.cpp:1308
+ #, c-format
+ msgid "repo: using cache for: %s"
+ msgstr "仓库: 正在为 %s 使用缓存"
+ 
+-#: libdnf/repo/Repo.cpp:1302
++#: libdnf/repo/Repo.cpp:1320
+ #, c-format
+ msgid "Cache-only enabled but no cache for '%s'"
+ msgstr "仅使用缓存已开启但没有 '%s' 的缓存"
+ 
+-#: libdnf/repo/Repo.cpp:1306
++#: libdnf/repo/Repo.cpp:1324
+ #, c-format
+ msgid "repo: downloading from remote: %s"
+ msgstr "repo: 从远程下载: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1312
++#: libdnf/repo/Repo.cpp:1330
+ #, c-format
+ msgid "Failed to download metadata for repo '%s': %s"
+-msgstr ""
++msgstr "为 repo '%s' 下载元数据失败 : %s"
+ 
+-#: libdnf/repo/Repo.cpp:1338
++#: libdnf/repo/Repo.cpp:1356
+ msgid "getCachedir(): Computation of SHA256 failed"
+ msgstr "getCachedir(): 计算 SHA256 失败"
+ 
+-#: libdnf/repo/Repo.cpp:1363
++#: libdnf/repo/Repo.cpp:1384
+ #, c-format
+ msgid "Cannot create persistdir \"%s\": %s"
+-msgstr ""
++msgstr "无法创建 persistdir \"%s\": %s"
++
++#: libdnf/repo/Repo.cpp:1715
++msgid "'proxy_username' is set but not 'proxy_password'"
++msgstr "'proxy_username' 已被设置,但没有设置 'proxy_password'"
+ 
+-#: libdnf/repo/Repo.cpp:1763
++#: libdnf/repo/Repo.cpp:1787
+ msgid "resume cannot be used simultaneously with the byterangestart param"
+ msgstr "resume 不能和 the byterangestart 参数同时使用"
+ 
+-#: libdnf/repo/Repo.cpp:1780
++#: libdnf/repo/Repo.cpp:1804
+ #, c-format
+ msgid "PackageTarget initialization failed: %s"
+ msgstr "PackageTarget 初始失败: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1886
++#: libdnf/repo/Repo.cpp:1910
+ #, c-format
+ msgid "Cannot open %s: %s"
+ msgstr "无法打开 %s: %s"
+ 
+-#: libdnf/repo/Repo.cpp:1930
++#: libdnf/repo/Repo.cpp:1954
+ #, c-format
+ msgid "Log handler with id %ld doesn't exist"
+ msgstr "id 为 %ld 的日志处理器不存在"
+@@ -900,7 +1039,7 @@ msgstr "试图在已完成的事务中更新事务"
+ 
+ #: libdnf/transaction/Transformer.cpp:76
+ msgid "Database Corrupted: no row 'version' in table 'config'"
+-msgstr ""
++msgstr "数据库损坏:表 'config' 中没有 'version' 行"
+ 
+ #: libdnf/transaction/Transformer.cpp:681
+ msgid "Transformer: can't open history persist dir"
+@@ -925,6 +1064,3 @@ msgstr "无法向未保存的事务中添加控制台输出"
+ 
+ #~ msgid "Bad id for repo: %s, byte = %s %d"
+ #~ msgstr "repo 的 id 无效: %s, byte = %s %d"
+-
+-#~ msgid "failed calculating RPMDB checksum"
+-#~ msgstr "无法计算 RPMDB checksum"
+-- 
+2.29.2
+
diff --git a/SPECS/libdnf.spec b/SPECS/libdnf.spec
index 0f21c86..0bf373a 100644
--- a/SPECS/libdnf.spec
+++ b/SPECS/libdnf.spec
@@ -1,12 +1,14 @@
 %global libsolv_version 0.7.7
 %global libmodulemd_version 2.5.0
 %global librepo_version 1.12.0
-%global dnf_conflict 4.2.23
+%global dnf_conflict 4.3.0
 %global swig_version 3.0.12
 %global libdnf_major_version 0
-%global libdnf_minor_version 48
+%global libdnf_minor_version 55
 %global libdnf_micro_version 0
 
+%define __cmake_in_source_build 1
+
 # set sphinx package name according to distro
 %global requires_python2_sphinx python2-sphinx
 %global requires_python3_sphinx python3-sphinx
@@ -54,16 +56,20 @@
 
 Name:           libdnf
 Version:        %{libdnf_major_version}.%{libdnf_minor_version}.%{libdnf_micro_version}
-Release:        5%{?dist}
+Release:        7%{?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
-Patch1:         0001-history-Fix-dnf-history-rollback-when-a-package-was-removed-RhBug1683134.patch
-Patch2:         0002-Add-log-file-level-main-config-option-RhBug-1802074.patch
-Patch3:         0003-Accept-double-eq-as-an-operator-in-reldeps-RhBug-1847946.patch
-Patch4:         0004-Update-translations-RhBug-1820548.patch
-Patch5:         0005-Handle-exception-in-a-python-binding-by-the-proper-function-RhBug-1870492.patch
+Patch0:         0001-Better-msgs-if-basecachedir-or-proxy-password-isn-t-set-RhBug-1888946.patch
+Patch1:         0002-modules-Add-special-handling-for-src-artifacts-RhBug-1809314.patch
+Patch2:         0003-Avoid-multilib-file-conflict-in-config.h-RhBug-1918818.patch
+Patch3:         0004-context-improve-retrieving-repository-configuration.patch
+Patch4:         0005-Allow-loading-incomplete-cache-and-loading-ext-solv-files-without-its-repodata.patch
+Patch5:         0006-Add-new-option-module-stream-switch.patch
+Patch6:         0007-Fix-removal-step-during-modular-enable-in-context-part.patch
+Patch7:         0008-Update-translations.patch
+
 
 BuildRequires:  cmake
 BuildRequires:  gcc
@@ -311,6 +317,35 @@ popd
 %endif
 
 %changelog
+* Mon Mar 8 2021 Marek Blaha <mblaha@redhat.com> - 0.55.0-7
+- Update translations (RhBug:1820548)
+
+* Fri Feb 12 2021 Nicola Sella <nsella@redhat.com> - 0.55.0-6
+- Fix removal step during modular enable in context part
+
+* Thu Feb 11 2021 Nicola Sella <nsella@redhat.com> - 0.55.0-5
+- Add new option module_stream_switch
+
+* Mon Feb 08 2021 Nicola Sella <nsella@redhat.com> - 0.55.0-4
+- [context] improve retrieving repository configuration
+- Allow loading incomplete cache and loading ext solv files without its repodata
+
+* Fri Jan 29 2021 Nicola Sella <nsella@redhat.com> - 0.55.0-3
+- Avoid multilib file conflict in config.h (RhBug:1918818)
+- [modules] Add special handling for src artifacts (RhBug:1809314)
+
+* Fri Jan 15 2021 Nicola Sella <nsella@redhat.com> - 0.55.0-2
+- Better msgs if "basecachedir" or "proxy_password" isn't set (RhBug:1888946)
+
+* Mon Nov 09 2020 Nicola Sella <nsella@redhat.com> - 0.55.0-1
+- Add vendor to dnf API (RhBug:1876561)
+- Add formatting function for solver error
+- Add error types in ModulePackageContainer
+- Implement module enable for context part
+- Improve string formatting for translation
+- Remove redundant printf and change logging info to notice (RhBug:1827424)
+- Add allow_vendor_change option (RhBug:1788371) (RhBug:1788371)
+
 * Thu Aug 20 2020 Nicola Sella <nsella@redhat.com> - 0.48.0-5
 - [covscan] Handle exception in a python binding by the proper function (RhBug:1870492)