diff --git a/.gitignore b/.gitignore
index 94739ac..4e85107 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/libdnf-0.65.0.tar.gz
+SOURCES/libdnf-0.67.0.tar.gz
diff --git a/.libdnf.metadata b/.libdnf.metadata
index c753363..af0f755 100644
--- a/.libdnf.metadata
+++ b/.libdnf.metadata
@@ -1 +1 @@
-95bd8ed682ca9c1b20913afba767c5e91fa3da13 SOURCES/libdnf-0.65.0.tar.gz
+2abb8e24d867da4433345678764163e703b7729f SOURCES/libdnf-0.67.0.tar.gz
diff --git a/SOURCES/0001-Use-rpmdbCookie-from-librpm-remove-hawkey.Sack._rpmd.patch b/SOURCES/0001-Use-rpmdbCookie-from-librpm-remove-hawkey.Sack._rpmd.patch
deleted file mode 100644
index b9d7ded..0000000
--- a/SOURCES/0001-Use-rpmdbCookie-from-librpm-remove-hawkey.Sack._rpmd.patch
+++ /dev/null
@@ -1,383 +0,0 @@
-From 5fbecb9533a5584d20a2b76f5816e58c2ffbb6f6 Mon Sep 17 00:00:00 2001
-From: Jaroslav Rohel <jrohel@redhat.com>
-Date: Wed, 2 Feb 2022 08:45:36 +0100
-Subject: [PATCH 1/2] Use `rpmdbCookie` from librpm, remove
- `hawkey.Sack._rpmdb_version`
-
-`dnf_sack_get_rpmdb_version` function that computed the hash of installed
-packages was removed. `rpmdbCookie` function from librpm is used in context
-part of libdnf instead.
-
-The private Python function `hawkey.Sack._rpmdb_version()` was removed too.
-It was used by DNF. The new version of DNF uses
-`rpm.TransactionSet.dbCookie()` function from librpm, which wraps
-the `rpmdbCookie` function. So the same librpm function will be used
-in context part of libdnf (e.g. by microdnf) and in the DNF.
-
-`rpmdbCookie` funkcion is safer. It also detect reinstalation of package
-as a change. That will be needed in the future to determining if the libsolv
-cache is still valid.
-It also solves the libdnf problem with SHA1 in FIPS mode.
-
-= changelog =
-msg: Use `rpmdbCookie` from librpm, remove `hawkey.Sack._rpmdb_version`
-type: bugfix
-related: https://bugzilla.redhat.com/show_bug.cgi?id=2043476
----
- libdnf/dnf-sack-private.hpp | 15 ------------
- libdnf/dnf-sack.cpp         | 40 -------------------------------
- libdnf/dnf-transaction.cpp  | 48 +++++++++++++++++++++----------------
- python/hawkey/sack-py.cpp   |  8 -------
- 4 files changed, 27 insertions(+), 84 deletions(-)
-
-diff --git a/libdnf/dnf-sack-private.hpp b/libdnf/dnf-sack-private.hpp
-index 89873534..2db96320 100644
---- a/libdnf/dnf-sack-private.hpp
-+++ b/libdnf/dnf-sack-private.hpp
-@@ -81,19 +81,4 @@ std::pair<std::vector<std::vector<std::string>>, libdnf::ModulePackageContainer:
- 
- std::vector<libdnf::ModulePackage *> requiresModuleEnablement(DnfSack * sack, const libdnf::PackageSet * installSet);
- 
--/**
-- * @brief Return fingerprint of installed RPMs.
-- * The format is <count>:<hash>.
-- * <count> is a count of installed RPMs.
-- * <hash> is a sha1 hash of sorted sha1hdr hashes of installed RPMs.
-- *
-- * The count can be computed from the command line by running:
-- * rpm -qa --qf='%{name}\n' | grep -v '^gpg-pubkey$' | wc -l
-- *
-- * The hash can be computed from the command line by running:
-- * rpm -qa --qf='%{name} %{sha1header}\n' | grep -v '^gpg-pubkey ' \
-- * | cut -d ' ' -f 2 | LC_ALL=C sort | tr -d '\n' | sha1sum
-- */
--std::string dnf_sack_get_rpmdb_version(DnfSack *sack);
--
- #endif // HY_SACK_INTERNAL_H
-diff --git a/libdnf/dnf-sack.cpp b/libdnf/dnf-sack.cpp
-index a88e8a1c..13977730 100644
---- a/libdnf/dnf-sack.cpp
-+++ b/libdnf/dnf-sack.cpp
-@@ -80,7 +80,6 @@ extern "C" {
- #include "module/ModulePackage.hpp"
- #include "repo/Repo-private.hpp"
- #include "repo/solvable/DependencyContainer.hpp"
--#include "utils/crypto/sha1.hpp"
- #include "utils/File.hpp"
- #include "utils/utils.hpp"
- #include "log.hpp"
-@@ -2535,42 +2534,3 @@ std::pair<std::vector<std::vector<std::string>>, libdnf::ModulePackageContainer:
-     setModuleExcludes(sack, hotfixRepos, *moduleContainer);
-     return ret;
- }
--
--std::string dnf_sack_get_rpmdb_version(DnfSack *sack) {
--    // collect all sha1hdr checksums
--    // they are sufficiently unique IDs that represent installed RPMs
--    std::vector<std::string> checksums;
--
--    // iterate all @System repo RPMs (rpmdb records)
--    libdnf::Query query{sack, libdnf::Query::ExcludeFlags::IGNORE_EXCLUDES};
--    query.installed();
--
--    auto pset = query.getResultPset();
--    Id id = -1;
--    while(true) {
--        id = pset->next(id);
--        if (id == -1) {
--            break;
--        }
--        DnfPackage *pkg = dnf_package_new(sack, id);
--        // store pkgid (equals to sha1hdr)
--        checksums.push_back(libdnf::string::fromCstring(dnf_package_get_pkgid(pkg)));
--        g_object_unref(pkg);
--    }
--
--    // sort checksums to compute the output checksum always the same
--    std::sort(checksums.begin(), checksums.end());
--
--    SHA1Hash h;
--    for (auto & checksum : checksums) {
--        h.update(checksum.c_str());
--    }
--
--    // build <count>:<hash> output
--    std::ostringstream result;
--    result << checksums.size();
--    result << ":";
--    result << h.hexdigest();
--
--    return result.str();
--}
-diff --git a/libdnf/dnf-transaction.cpp b/libdnf/dnf-transaction.cpp
-index e0966582..d93c5ec6 100644
---- a/libdnf/dnf-transaction.cpp
-+++ b/libdnf/dnf-transaction.cpp
-@@ -28,6 +28,7 @@
-  * This object represents an RPM transaction.
-  */
- 
-+#include <rpm/rpmdb.h>
- #include <rpm/rpmlib.h>
- #include <rpm/rpmlog.h>
- #include <rpm/rpmts.h>
-@@ -53,6 +54,7 @@
- #include "transaction/Swdb.hpp"
- #include "transaction/Transformer.hpp"
- #include "utils/bgettext/bgettext-lib.h"
-+#include "utils/utils.hpp"
- 
- typedef enum {
-     DNF_TRANSACTION_STEP_STARTED,
-@@ -1136,9 +1138,8 @@ dnf_transaction_commit(DnfTransaction *transaction, HyGoal goal, DnfState *state
-     libdnf::Swdb *swdb = priv->swdb;
-     PluginHookContextTransactionData data{PLUGIN_HOOK_ID_CONTEXT_PRE_TRANSACTION, transaction, goal, state};
-     DnfSack * sack = hy_goal_get_sack(goal);
--    DnfSack * rpmdb_version_sack = NULL;
--    std::string rpmdb_begin;
--    std::string rpmdb_end;
-+    std::unique_ptr<char, decltype(free)*> rpmdb_cookie_uptr{nullptr, free};
-+    std::string rpmdb_cookie;
- 
-     /* take lock */
-     ret = dnf_state_take_lock(state, DNF_LOCK_TYPE_RPMDB, DNF_LOCK_MODE_PROCESS, error);
-@@ -1431,17 +1432,24 @@ dnf_transaction_commit(DnfTransaction *transaction, HyGoal goal, DnfState *state
-     if (!dnf_context_plugin_hook(priv->context, PLUGIN_HOOK_ID_CONTEXT_PRE_TRANSACTION, &data, nullptr))
-         goto out;
- 
--    // FIXME get commandline
--    if (sack) {
--        rpmdb_begin = dnf_sack_get_rpmdb_version(sack);
--    } else {
--        // if sack is not available, create a custom instance
--        rpmdb_version_sack = dnf_sack_new();
--        dnf_sack_load_system_repo(rpmdb_version_sack, nullptr, DNF_SACK_LOAD_FLAG_NONE, nullptr);
--        rpmdb_begin = dnf_sack_get_rpmdb_version(rpmdb_version_sack);
--        g_object_unref(rpmdb_version_sack);
-+    // Open rpm database if it is not already open
-+    if (!rpmtsGetRdb(priv->ts)) {
-+        rc = rpmtsOpenDB(priv->ts, rpmtsGetDBMode(priv->ts));
-+        if (rc != 0) {
-+            ret = FALSE;
-+            g_set_error(
-+                error, DNF_ERROR, DNF_ERROR_INTERNAL_ERROR, _("Error %i opening rpm database"), rc);
-+            goto out;
-+        }
-     }
--    swdb->beginTransaction(_get_current_time(), rpmdb_begin, "", priv->uid);
-+
-+    rpmdb_cookie_uptr.reset(rpmdbCookie(rpmtsGetRdb(priv->ts)));
-+    rpmdb_cookie = libdnf::string::fromCstring(rpmdb_cookie_uptr.get());
-+    if (rpmdb_cookie.empty()) {
-+        g_critical(_("The rpmdbCookie() function did not return cookie of rpm database."));
-+    }
-+    // FIXME get commandline
-+    swdb->beginTransaction(_get_current_time(), rpmdb_cookie, "", priv->uid);
- 
-     /* run the transaction */
-     priv->state = dnf_state_get_child(state);
-@@ -1481,14 +1489,12 @@ dnf_transaction_commit(DnfTransaction *transaction, HyGoal goal, DnfState *state
-     if (!ret)
-         goto out;
- 
--    // finalize swdb transaction
--    // always load a new sack with rpmdb state after the transaction
--    rpmdb_version_sack = dnf_sack_new();
--    dnf_sack_load_system_repo(rpmdb_version_sack, nullptr, DNF_SACK_LOAD_FLAG_NONE, nullptr);
--    rpmdb_end = dnf_sack_get_rpmdb_version(rpmdb_version_sack);
--    g_object_unref(rpmdb_version_sack);
--
--    swdb->endTransaction(_get_current_time(), rpmdb_end.c_str(), libdnf::TransactionState::DONE);
-+    rpmdb_cookie_uptr.reset(rpmdbCookie(rpmtsGetRdb(priv->ts)));
-+    rpmdb_cookie = libdnf::string::fromCstring(rpmdb_cookie_uptr.get());
-+    if (rpmdb_cookie.empty()) {
-+        g_critical(_("The rpmdbCookie() function did not return cookie of rpm database."));
-+    }
-+    swdb->endTransaction(_get_current_time(), rpmdb_cookie, libdnf::TransactionState::DONE);
-     swdb->closeTransaction();
- 
-     data.hookId = PLUGIN_HOOK_ID_CONTEXT_TRANSACTION;
-diff --git a/python/hawkey/sack-py.cpp b/python/hawkey/sack-py.cpp
-index 4de499cb..fcb5cd61 100644
---- a/python/hawkey/sack-py.cpp
-+++ b/python/hawkey/sack-py.cpp
-@@ -783,13 +783,6 @@ load_repo(_SackObject *self, PyObject *args, PyObject *kwds) try
-     Py_RETURN_NONE;
- } CATCH_TO_PYTHON
- 
--static PyObject *
--rpmdb_version(_SackObject *self, PyObject *unused) try
--{
--    auto result = dnf_sack_get_rpmdb_version(self->sack);
--    return PyString_FromString(result.c_str());
--} CATCH_TO_PYTHON
--
- static Py_ssize_t
- len(_SackObject *self) try
- {
-@@ -858,7 +851,6 @@ PyMethodDef sack_methods[] = {
-      METH_VARARGS | METH_KEYWORDS, NULL},
-     {"load_repo", (PyCFunction)load_repo, METH_VARARGS | METH_KEYWORDS,
-      NULL},
--    {"_rpmdb_version", (PyCFunction)rpmdb_version, METH_VARARGS | METH_KEYWORDS, NULL},
-     {NULL}                      /* sentinel */
- };
- 
--- 
-2.34.1
-
-
-From 3dae1fd8754ec9521e16e2e11a7c4bf2c81bbb02 Mon Sep 17 00:00:00 2001
-From: Jaroslav Rohel <jrohel@redhat.com>
-Date: Wed, 2 Feb 2022 18:00:39 +0100
-Subject: [PATCH 2/2] Remove class `SHA1Hash`, which is no longer used, remove
- OpenSSL require
-
-The class was used by the `dnf_sack_get_rpmdb_version` function, which was
-removed. The `rpmdbCookie` function from librpm is used instead.
----
- CMakeLists.txt                     |  1 -
- libdnf.spec                        |  1 -
- libdnf/CMakeLists.txt              |  1 -
- libdnf/utils/CMakeLists.txt        |  1 -
- libdnf/utils/crypto/CMakeLists.txt |  5 -----
- libdnf/utils/crypto/sha1.cpp       | 36 ------------------------------
- libdnf/utils/crypto/sha1.hpp       | 25 ---------------------
- 7 files changed, 70 deletions(-)
- delete mode 100644 libdnf/utils/crypto/CMakeLists.txt
- delete mode 100644 libdnf/utils/crypto/sha1.cpp
- delete mode 100644 libdnf/utils/crypto/sha1.hpp
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 60cf1b8c..7149b9e6 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -52,7 +52,6 @@ endif()
- # build dependencies
- find_package(Gpgme REQUIRED)
- find_package(LibSolv 0.6.30 REQUIRED COMPONENTS ext)
--find_package(OpenSSL REQUIRED)
- 
- 
- # build dependencies via pkg-config
-diff --git a/libdnf.spec b/libdnf.spec
-index 697911f0..89d2fb40 100644
---- a/libdnf.spec
-+++ b/libdnf.spec
-@@ -83,7 +83,6 @@ BuildRequires:  pkgconfig(zck) >= 0.9.11
- BuildRequires:  pkgconfig(sqlite3)
- BuildRequires:  pkgconfig(json-c)
- BuildRequires:  pkgconfig(cppunit)
--BuildRequires:  pkgconfig(libcrypto)
- BuildRequires:  pkgconfig(modulemd-2.0) >= %{libmodulemd_version}
- BuildRequires:  pkgconfig(smartcols)
- BuildRequires:  gettext
-diff --git a/libdnf/CMakeLists.txt b/libdnf/CMakeLists.txt
-index 998a6f94..9e71d139 100644
---- a/libdnf/CMakeLists.txt
-+++ b/libdnf/CMakeLists.txt
-@@ -75,7 +75,6 @@ target_link_libraries(libdnf
-     ${GLIB_GIO_UNIX_LIBRARIES}
-     ${LIBSOLV_LIBRARY}
-     ${LIBSOLV_EXT_LIBRARY}
--    ${OPENSSL_CRYPTO_LIBRARY}
-     ${RPM_LIBRARIES}
-     ${SCOLS_LIBRARIES}
-     ${SQLite3_LIBRARIES}
-diff --git a/libdnf/utils/CMakeLists.txt b/libdnf/utils/CMakeLists.txt
-index 71a1042c..4ec456ef 100644
---- a/libdnf/utils/CMakeLists.txt
-+++ b/libdnf/utils/CMakeLists.txt
-@@ -1,5 +1,4 @@
- add_subdirectory(bgettext)
--add_subdirectory(crypto)
- add_subdirectory(iniparser)
- add_subdirectory(regex)
- add_subdirectory(sqlite3)
-diff --git a/libdnf/utils/crypto/CMakeLists.txt b/libdnf/utils/crypto/CMakeLists.txt
-deleted file mode 100644
-index 149d100c..00000000
---- a/libdnf/utils/crypto/CMakeLists.txt
-+++ /dev/null
-@@ -1,5 +0,0 @@
--set(UTILS_SOURCES
--    ${UTILS_SOURCES}
--    ${CMAKE_CURRENT_SOURCE_DIR}/sha1.cpp
--    PARENT_SCOPE
--)
-diff --git a/libdnf/utils/crypto/sha1.cpp b/libdnf/utils/crypto/sha1.cpp
-deleted file mode 100644
-index 1533ee6b..00000000
---- a/libdnf/utils/crypto/sha1.cpp
-+++ /dev/null
-@@ -1,36 +0,0 @@
--#include <cstring>
--
--#include <iomanip>
--#include <sstream>
--
--#include "sha1.hpp"
--
--
--SHA1Hash::SHA1Hash()
--{
--    md_ctx = EVP_MD_CTX_new();
--    EVP_DigestInit_ex(md_ctx, EVP_sha1(), NULL);
--}
--
--
--void
--SHA1Hash::update(const char * data)
--{
--    EVP_DigestUpdate(md_ctx, data, strlen(data));
--}
--
--
--std::string
--SHA1Hash::hexdigest()
--{
--    unsigned char md[digestLength];
--    EVP_DigestFinal_ex(md_ctx, md, NULL);
--
--    std::stringstream ss;
--    for(int i=0; i<digestLength; i++) {
--        ss << std::setfill('0') << std::setw(2) << std::hex << static_cast<int>(md[i]);
--    }
--
--    EVP_MD_CTX_free(md_ctx);
--    return ss.str();
--}
-diff --git a/libdnf/utils/crypto/sha1.hpp b/libdnf/utils/crypto/sha1.hpp
-deleted file mode 100644
-index 9f1dfdeb..00000000
---- a/libdnf/utils/crypto/sha1.hpp
-+++ /dev/null
-@@ -1,25 +0,0 @@
--#include <string>
--#include <openssl/sha.h>
--#include <openssl/evp.h>
--
--
--/*
--USAGE:
--
--SHA1Hash h;
--h.update("foo");
--h.update("bar");
--std::cout << h.hexdigest() << std::endl;
--*/
--
--
--class SHA1Hash {
--public:
--    SHA1Hash();
--    void update(const char *data);
--    std::string hexdigest();
--    static constexpr int digestLength = SHA_DIGEST_LENGTH;
--
--private:
--    EVP_MD_CTX *md_ctx;
--};
--- 
-2.34.1
-
diff --git a/SOURCES/0001-advisory-upgrade-filter-out-advPkgs-with-different-a.patch b/SOURCES/0001-advisory-upgrade-filter-out-advPkgs-with-different-a.patch
new file mode 100644
index 0000000..46ea2ca
--- /dev/null
+++ b/SOURCES/0001-advisory-upgrade-filter-out-advPkgs-with-different-a.patch
@@ -0,0 +1,100 @@
+From c17e59faf6075e7ddb803f6393e86653afd6b16d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
+Date: Mon, 30 May 2022 08:59:41 +0200
+Subject: [PATCH] advisory upgrade: filter out advPkgs with different arch
+
+This prevents a situation in security upgrades where libsolv cannot
+upgrade dependent pkgs because we ask for an upgrade of different arch:
+
+We can get the following testcase if libdnf has filtered out
+json-c-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms
+(because there is an advisory for already installed json-c-1-1.el8.x86_64) but
+json-c-2-2.el8.i686@rhel-8-for-x86_64-baseos-rpms is not filtered out because
+it has different architecture. The resulting transaction doesn't work.
+
+```
+repo @System -99.-1000 testtags <inline>
+#>=Pkg: bind-libs-lite 1 1.el8 x86_64
+#>=Pkg: json-c 1 1.el8 x86_64
+
+repo rhel-8-for-x86_64-baseos-rpms -99.-1000 testtags <inline>
+#>=Pkg: json-c 2 2.el8 x86_64
+#>=Prv: libjson-c.so.4()(64bit)
+#>
+#>=Pkg: json-c 2 2.el8 i686
+#>=Prv: libjson-c.so.4()
+#>
+#>=Pkg: bind-libs-lite 2 2.el8 x86_64
+#>=Req: libjson-c.so.4()(64bit)
+system x86_64 rpm @System
+job update oneof json-c-1-1.el8.x86_64@@System json-c-2-2.el8.i686@rhel-8-for-x86_64-baseos-rpms bind-libs-lite-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms [forcebest,targeted,setevr,setarch]
+result transaction,problems <inline>
+#>problem f06d81a4 info package bind-libs-lite-2-2.el8.x86_64 requires libjson-c.so.4()(64bit), but none of the providers can be installed
+#>problem f06d81a4 solution 96f9031b allow bind-libs-lite-1-1.el8.x86_64@@System
+#>problem f06d81a4 solution c8daf94f allow json-c-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms
+#>upgrade bind-libs-lite-1-1.el8.x86_64@@System bind-libs-lite-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms
+#>upgrade json-c-1-1.el8.x86_64@@System json-c-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms```
+```
+
+= changelog =
+msg: Filter out advisory pkgs with different arch during advisory upgrade, fixes possible problems in dependency resulution.
+type: bugfix
+resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2088149
+---
+ libdnf/sack/query.cpp | 25 +++++++++++++++++++------
+ 1 file changed, 19 insertions(+), 6 deletions(-)
+
+diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp
+index ac2736b5..03d39659 100644
+--- a/libdnf/sack/query.cpp
++++ b/libdnf/sack/query.cpp
+@@ -1877,12 +1877,6 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
+         std::vector<Solvable *> candidates;
+         std::vector<Solvable *> installed_solvables;
+ 
+-        Id id = -1;
+-        while ((id = resultPset->next(id)) != -1) {
+-            candidates.push_back(pool_id2solvable(pool, id));
+-        }
+-        NameArchEVRComparator cmp_key(pool);
+-
+         if (cmp_type & HY_UPGRADE) {
+             Query installed(sack, ExcludeFlags::IGNORE_EXCLUDES);
+             installed.installed();
+@@ -1893,6 +1887,18 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
+                 installed_solvables.push_back(pool_id2solvable(pool, installed_id));
+             }
+             std::sort(installed_solvables.begin(), installed_solvables.end(), NameArchSolvableComparator);
++            Id id = -1;
++            while ((id = resultPset->next(id)) != -1) {
++                Solvable * s = pool_id2solvable(pool, id);
++                // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch
++                // with some already installed pkg (in other words: some other version of the pkg is already installed).
++                // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong.
++                // It can result in dependency issues, reported as: RhBug:2088149.
++                auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameArchSolvableComparator);
++                if (low != installed_solvables.end() && s->name == (*low)->name && s->arch == (*low)->arch) {
++                    candidates.push_back(s);
++                }
++            }
+ 
+             // Apply security filters only to packages with lower priority - to unify behaviour upgrade
+             // and upgrade-minimal
+@@ -1915,7 +1921,14 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
+                 }
+             }
+             std::swap(candidates, priority_candidates);
++        } else {
++            Id id = -1;
++            while ((id = resultPset->next(id)) != -1) {
++                candidates.push_back(pool_id2solvable(pool, id));
++            }
+         }
++
++        NameArchEVRComparator cmp_key(pool);
+         std::sort(candidates.begin(), candidates.end(), cmp_key);
+         for (auto & advisoryPkg : pkgs) {
+             if (cmp_type & HY_UPGRADE) {
+-- 
+2.36.1
+
diff --git a/SOURCES/0002-Add-obsoletes-to-filtering-for-advisory-candidates.patch b/SOURCES/0002-Add-obsoletes-to-filtering-for-advisory-candidates.patch
new file mode 100644
index 0000000..1bf2e2d
--- /dev/null
+++ b/SOURCES/0002-Add-obsoletes-to-filtering-for-advisory-candidates.patch
@@ -0,0 +1,71 @@
+From 549d248c9b331d19a0fd355fc605ab8912ed50f6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
+Date: Tue, 5 Jul 2022 09:02:22 +0200
+Subject: [PATCH] Add obsoletes to filtering for advisory candidates
+
+Patch https://github.com/rpm-software-management/libdnf/pull/1526
+introduced a regression where we no longer do a security upgrade if a
+package A is installed and package B obsoletes A and B is available in two
+versions while there is an advisory for the second version.
+
+Test: https://github.com/rpm-software-management/ci-dnf-stack/pull/1130
+---
+ libdnf/sack/query.cpp | 32 ++++++++++++++++++++++++++++----
+ 1 file changed, 28 insertions(+), 4 deletions(-)
+
+diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp
+index 03d39659..5355f9f7 100644
+--- a/libdnf/sack/query.cpp
++++ b/libdnf/sack/query.cpp
+@@ -1878,6 +1878,13 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
+         std::vector<Solvable *> installed_solvables;
+ 
+         if (cmp_type & HY_UPGRADE) {
++            // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch with:
++            // * some already installed pkg (in other words: some other version of the pkg is already installed)
++            // or
++            // * with pkg that obsoletes some already installed (or to be installed in this transaction) pkg
++            // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong.
++            // It can result in dependency issues, reported as: RhBug:2088149.
++
+             Query installed(sack, ExcludeFlags::IGNORE_EXCLUDES);
+             installed.installed();
+             installed.addFilter(HY_PKG_LATEST_PER_ARCH, HY_EQ, 1);
+@@ -1887,13 +1894,30 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
+                 installed_solvables.push_back(pool_id2solvable(pool, installed_id));
+             }
+             std::sort(installed_solvables.begin(), installed_solvables.end(), NameArchSolvableComparator);
++
++            Query obsoletes(sack, ExcludeFlags::IGNORE_EXCLUDES);
++            obsoletes.addFilter(HY_PKG, HY_EQ, resultPset);
++            obsoletes.available();
++
++            Query possibly_obsoleted(sack, ExcludeFlags::IGNORE_EXCLUDES);
++            possibly_obsoleted.addFilter(HY_PKG, HY_EQ, resultPset);
++            possibly_obsoleted.addFilter(HY_PKG_UPGRADES, HY_EQ, 1);
++            possibly_obsoleted.queryUnion(installed);
++            possibly_obsoleted.apply();
++
++            obsoletes.addFilter(HY_PKG_OBSOLETES, HY_EQ, possibly_obsoleted.runSet());
++            obsoletes.apply();
++            Id obsoleted_id = -1;
++            // Add to candidates resultPset pkgs that obsolete some installed (or to be installed in this transaction) pkg
++            while ((obsoleted_id = obsoletes.pImpl->result->next(obsoleted_id)) != -1) {
++                Solvable * s = pool_id2solvable(pool, obsoleted_id);
++                candidates.push_back(s);
++            }
++
+             Id id = -1;
++            // Add to candidates resultPset pkgs that match name and arch with some already installed pkg
+             while ((id = resultPset->next(id)) != -1) {
+                 Solvable * s = pool_id2solvable(pool, id);
+-                // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch
+-                // with some already installed pkg (in other words: some other version of the pkg is already installed).
+-                // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong.
+-                // It can result in dependency issues, reported as: RhBug:2088149.
+                 auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameArchSolvableComparator);
+                 if (low != installed_solvables.end() && s->name == (*low)->name && s->arch == (*low)->arch) {
+                     candidates.push_back(s);
+-- 
+2.36.1
+
diff --git a/SOURCES/0002-Skip-rich-deps-for-autodetection-of-unmet-dependencies-RhBug2033130-2048394.patch b/SOURCES/0002-Skip-rich-deps-for-autodetection-of-unmet-dependencies-RhBug2033130-2048394.patch
deleted file mode 100644
index a8770c6..0000000
--- a/SOURCES/0002-Skip-rich-deps-for-autodetection-of-unmet-dependencies-RhBug2033130-2048394.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 025d477f63baf3df2f6da3b10a21f00d4a339073 Mon Sep 17 00:00:00 2001
-From: Jaroslav Mracek <jmracek@redhat.com>
-Date: Tue, 8 Feb 2022 09:30:03 +0100
-Subject: [PATCH] Skip rich deps for autodetection of unmet dependencies (RhBug:2033130, 2048394)
-
-Rich dependencies are difficult to properly evaluate because we do not
-have enough information about past and only libsolv is capable to
-evaluate it in comparison to present state of the system.
-
-Additionally - rich deps are used for langpacks therefore disabling
-unmet rich deps will have a negative impact on UX.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=2048394
-https://bugzilla.redhat.com/show_bug.cgi?id=2033130
----
- libdnf/goal/Goal.cpp | 22 +++++++++++++++++++---
- 1 file changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/libdnf/goal/Goal.cpp b/libdnf/goal/Goal.cpp
-index 2b698f7..ebe2fbd 100644
---- a/libdnf/goal/Goal.cpp
-+++ b/libdnf/goal/Goal.cpp
-@@ -835,8 +835,12 @@ Goal::exclude_from_weak_autodetect()
-         installed_names.push_back(dnf_package_get_name(pkg));
-         std::unique_ptr<libdnf::DependencyContainer> recommends(dnf_package_get_recommends(pkg));
-         for (int i = 0; i < recommends->count(); ++i) {
--            Query query(base_query);
-             std::unique_ptr<libdnf::Dependency> dep(recommends->getPtr(i));
-+            const char * dep_string = dep->toString();
-+            if (dep_string[0] == '(') {
-+                continue;
-+            }
-+            Query query(base_query);
-             const char * version = dep->getVersion();
-             //  There can be installed provider in different version or upgraded packed can recommend a different version
-             //  Ignore version and search only by reldep name
-@@ -858,7 +862,7 @@ Goal::exclude_from_weak_autodetect()
-         }
-     }
- 
--    // Invesigate supplements of only available packages with a different name to installed packages
-+    // Investigate supplements of only available packages with a different name to installed packages
-     installed_names.push_back(nullptr);
-     base_query.addFilter(HY_PKG_NAME, HY_NEQ, installed_names.data());
-     auto * available_pset = base_query.getResultPset();
-@@ -870,8 +874,20 @@ Goal::exclude_from_weak_autodetect()
-         if (supplements->count() == 0) {
-             continue;
-         }
-+        libdnf::DependencyContainer supplements_without_rich(getSack());
-+        for (int i = 0; i < supplements->count(); ++i) {
-+            std::unique_ptr<libdnf::Dependency> dep(supplements->getPtr(i));
-+            const char * dep_string = dep->toString();
-+            if (dep_string[0] == '(') {
-+                continue;
-+            }
-+            supplements_without_rich.add(dep.get());
-+        }
-+        if (supplements_without_rich.count() == 0) {
-+            continue;
-+        }
-         Query query(installed_query);
--        query.addFilter(HY_PKG_PROVIDES, supplements.get());
-+        query.addFilter(HY_PKG_PROVIDES, &supplements_without_rich);
-         // When supplemented package already installed, exclude_from_weak available package
-         if (!query.empty()) {
-             add_exclude_from_weak(pkg);
---
-libgit2 1.1.0
-
diff --git a/SOURCES/0003-Update-translations-RHEL-9.1.patch b/SOURCES/0003-Update-translations-RHEL-9.1.patch
new file mode 100644
index 0000000..041b56b
--- /dev/null
+++ b/SOURCES/0003-Update-translations-RHEL-9.1.patch
@@ -0,0 +1,3454 @@
+From 56f44d26b12e08910e8d101932c152ab743826da Mon Sep 17 00:00:00 2001
+From: Marek Blaha <mblaha@redhat.com>
+Date: Thu, 15 Sep 2022 13:27:23 +0200
+Subject: [PATCH] Update translations RHEL 9.1
+
+---
+ po/fr.po      | 337 ++++++++++++++++++++++++-----------------
+ po/ja.po      | 404 ++++++++++++++++++++++++++++++++------------------
+ po/ko.po      | 329 +++++++++++++++++++++++++---------------
+ po/libdnf.pot | 215 +++++++++++++++++----------
+ po/zh_CN.po   | 368 ++++++++++++++++++++++++++-------------------
+ 5 files changed, 1020 insertions(+), 633 deletions(-)
+
+diff --git a/po/fr.po b/po/fr.po
+index 20e8417a..65fa6395 100644
+--- a/po/fr.po
++++ b/po/fr.po
+@@ -1,27 +1,27 @@
+-# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2016. #zanata, 2021.
++# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2016. #zanata
+ # José Fournier <jaaf64@zoraldia.com>, 2016. #zanata
+ # José Fournier <jaaf64@zoraldia.com>, 2017. #zanata
+ # Jérôme Fenal <jfenal@gmail.com>, 2017. #zanata
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2021.
+-# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata, 2021.
+-# Julien Humbert <julroy67@gmail.com>, 2020, 2021.
+-# Arnaud T. <listes.00@gmail.com>, 2020.
+-# Sundeep Anand <suanand@redhat.com>, 2021.
++# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata
++# Julien Humbert <julroy67@gmail.com>, 2020.
++# Sundeep Anand <suanand@redhat.com>, 2021, 2022.
+ # Titouan Bénard <itotutona@evta.fr>, 2021.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2022-01-05 01:53+0000\n"
+-"PO-Revision-Date: 2021-10-10 00:45+0000\n"
+-"Last-Translator: Titouan Bénard <itotutona@evta.fr>\n"
+-"Language-Team: French <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/fr/>\n"
++"POT-Creation-Date: 2022-08-30 14:53+0200\n"
++"PO-Revision-Date: 2022-03-02 10:16+0000\n"
++"Last-Translator: Sundeep Anand <suanand@redhat.com>\n"
++"Language-Team: French <https://translate.fedoraproject.org/projects/dnf/"
++"libdnf-rhel-9/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.8\n"
++"X-Generator: Weblate 4.11\n"
+ 
+ #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
+ msgid "no value specified"
+@@ -110,73 +110,72 @@ msgstr "n’a pu convertir « %s » en secondes"
+ msgid "GetValue(): Value not set"
+ msgstr "GetValue() : valeur non définie"
+ 
+-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188
+ #, 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:3196 libdnf/dnf-context.cpp:3214
++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215
+ #, 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é"
++"Impossible d'activer le flux de module '%1$s' stream '%2$s' : état du module "
++"déjà modifié"
+ 
+-#: libdnf/dnf-context.cpp:3263
++#: libdnf/dnf-context.cpp:3264
+ #, 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:3266
++#: libdnf/dnf-context.cpp:3267
+ #, c-format
+ msgid "Modular dependency problem with the latest modules: %s"
+ msgstr "Problème de dépendance modulaire avec les derniers modules : %s"
+ 
+-#: libdnf/dnf-context.cpp:3270
++#: libdnf/dnf-context.cpp:3271
+ #, c-format
+ msgid "Modular dependency problem: %s"
+ msgstr "Problème de dépendance modulaire : %s"
+ 
+-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
+-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
+-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
+-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318
++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368
++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416
++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475
+ #, c-format
+ msgid "Unable to resolve argument '%s'"
+ msgstr "Impossible de résoudre le paramètre ’%s’"
+ 
+-#: libdnf/dnf-context.cpp:3300
++#: libdnf/dnf-context.cpp:3301
+ #, c-format
+ msgid ""
+-"Only module name is required. Ignoring unneeded information in argument: "
+-"'%s'"
++"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:3314
++#: libdnf/dnf-context.cpp:3315
+ #, 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:3325
++#: libdnf/dnf-context.cpp:3326
+ #, 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:3356 libdnf/dnf-context.cpp:3452
+-#: libdnf/dnf-context.cpp:3633
++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453
++#: libdnf/dnf-context.cpp:3634
+ msgid "No modular data available"
+ msgstr "Aucune donnée modulaire disponible"
+ 
+-#: libdnf/dnf-context.cpp:3373
++#: libdnf/dnf-context.cpp:3374
+ #, c-format
+ msgid "Ignoring unneeded information in argument: '%s'"
+ msgstr "Ignorer les informations inutiles dans l'argumentation : '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3411
++#: libdnf/dnf-context.cpp:3412
+ #, c-format
+ msgid ""
+ "Problem during enablement of dependency tree for module '%1$s' stream "
+@@ -185,72 +184,71 @@ msgstr ""
+ "Problème lors de l'activation de l'arbre des dépendances pour le module "
+ "'%1$s' flux '%2$s' : %3$s"
+ 
+-#: libdnf/dnf-context.cpp:3423
++#: libdnf/dnf-context.cpp:3424
+ msgid "Problems appeared for module enable request:"
+-msgstr "Des problèmes sont apparus durant la requête d’activation du module :"
++msgstr "Des problèmes sont apparus pour la demande d'activation du module :"
+ 
+-#: libdnf/dnf-context.cpp:3518
++#: libdnf/dnf-context.cpp:3519
+ #, c-format
+ msgid "No active module packages found for module spec '%s'"
+ msgstr ""
+-"Aucun package de module actif trouvé pour la spécification de module '%s'"
++"Aucun paquetage de module actif n'a été trouvé pour le module spec '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3523
++#: libdnf/dnf-context.cpp:3524
+ #, c-format
+ msgid "Cannot install module '%s' from fail-safe repository"
+-msgstr ""
+-"Impossible d'installer le module '%s' à partir du référentiel de sécurité "
+-"intégrée"
++msgstr "Impossible d'installer le module '%s' à partir du dépôt de sécurité"
+ 
+-#: libdnf/dnf-context.cpp:3530
++#: libdnf/dnf-context.cpp:3531
+ #, c-format
+ msgid "No profile found matching '%s'"
+ msgstr "Aucun profil trouvé correspondant à '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3584
++#: libdnf/dnf-context.cpp:3585
+ #, c-format
+ msgid "No match for package '%s' for module spec %s"
+-msgstr ""
+-"Aucune correspondance pour le package '%s' pour la spécification de module "
+-"%s"
++msgstr "Aucune correspondance pour le paquet '%s' pour le module spec %s"
+ 
+-#: libdnf/dnf-context.cpp:3595
++#: libdnf/dnf-context.cpp:3596
+ #, c-format
+ msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
+-msgstr ""
+-"Problème lors de l'installation du module « %1$s » du flux « %2$s » : %3$s"
++msgstr "Problème lors de l'installation du module '%1$s' stream '%2$s' : %3$s"
+ 
+-#: libdnf/dnf-context.cpp:3604
++#: libdnf/dnf-context.cpp:3605
+ msgid "Problems appeared for module install request:"
+-msgstr ""
+-"Des problèmes sont apparus durant la requête d’installation du module :"
++msgstr "Des problèmes sont apparus pour la demande d'installation du module :"
+ 
+-#: libdnf/dnf-context.cpp:3663
++#: libdnf/dnf-context.cpp:3664
+ msgid "Problems appeared for module reset request:"
+ msgstr ""
+-"Des problèmes sont apparus durant la requête de réinitialisation du module :"
++"Des problèmes sont apparus pour la demande de réinitialisation des modules :"
+ 
+-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724
+ msgid "Problems appeared for module disable request:"
+ msgstr ""
+-"Des problèmes sont apparus durant la requête de désactivation du module :"
++"Des problèmes sont apparus pour la demande de désactivation du module :"
+ 
+-#: libdnf/dnf-context.cpp:3755
++#: libdnf/dnf-context.cpp:3756
+ #, c-format
+ msgid ""
+-"The operation would result in switching of module '%s' stream '%s' to stream"
+-" '%s'"
++"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 »"
++"Le résultat de l’opération sera le basculement du flux « %s » du module « %s "
++"» vers le flux « %s »"
+ 
+-#: libdnf/dnf-context.cpp:3759
++#: libdnf/dnf-context.cpp:3760
+ 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."
++"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. \n"
+-"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."
++"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:107
+ msgid "Could not depsolve transaction; "
+@@ -335,84 +333,126 @@ 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:395
+-msgid "failed to add solv"
+-msgstr "n’a pu ajouter solv"
++#: libdnf/dnf-sack.cpp:251
++msgid "repo_add_solv() has failed."
++msgstr "repo_add_solv() a échoué."
++
++#: libdnf/dnf-sack.cpp:415
++#, c-format
++msgid "Loading extension cache %s (%d) failed: "
++msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:414
++#: libdnf/dnf-sack.cpp:429
+ #, c-format
+ msgid "no %1$s string for %2$s"
+ msgstr "aucune chaine %1$s pour %2$s"
+ 
+-#: libdnf/dnf-sack.cpp:424
++#: libdnf/dnf-sack.cpp:439
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr "n’a pas pu ouvrir : %s"
+ 
+-#: libdnf/dnf-sack.cpp:503
++#: libdnf/dnf-sack.cpp:518
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr "n’a pas pu créer le fichier temporaire : %s"
+ 
+-#: libdnf/dnf-sack.cpp:513
++#: libdnf/dnf-sack.cpp:528
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr "n’a pas pu ouvrir le fichier tmp : %s"
+ 
+-#: libdnf/dnf-sack.cpp:525
++#: libdnf/dnf-sack.cpp:550
++#, c-format
++msgid "While writing primary cache %s repowriter write failed: %i, error: %s"
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:560
++#, fuzzy, c-format
++#| msgid "failed opening tmp file: %s"
++msgid "Failed closing tmp file %s: %s"
++msgstr "n’a pas pu ouvrir le fichier tmp : %s"
++
++#: libdnf/dnf-sack.cpp:570
+ #, c-format
+-msgid "write_main() failed writing data: %i"
+-msgstr "write_main() n’a pu écrire les données : %i"
++msgid "Failed to use newly written primary cache: %s: "
++msgstr ""
+ 
+-#: 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:576
++#, c-format
++msgid "Failed to use newly written primary cache: %s"
++msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:607
++#: libdnf/dnf-sack.cpp:626
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr "n’a pas pu créer le fichier temporaire %s"
+ 
+-#: libdnf/dnf-sack.cpp:625
++#: libdnf/dnf-sack.cpp:666
+ #, c-format
+-msgid "write_ext(%1$d) has failed: %2$d"
+-msgstr "write_ext(%1$d) a échoué : %2$d"
++msgid ""
++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s"
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:676
++#, c-format
++msgid "While writing extension cache (%d): cannot close temporary file: %s"
++msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:680
++#: libdnf/dnf-sack.cpp:692
++#, c-format
++msgid "Failed to use newly written extension cache: %s (%d): "
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:699
++#, c-format
++msgid "Failed to use newly written extension cache: %s (%d)"
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:740
+ msgid "null repo md file"
+ msgstr "fichier md de dépôt nul"
+ 
+-#: libdnf/dnf-sack.cpp:689
++#: libdnf/dnf-sack.cpp:749
+ #, 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:703
+-msgid "repo_add_solv() has failed."
+-msgstr "repo_add_solv() a échoué."
++#: libdnf/dnf-sack.cpp:764
++#, c-format
++msgid "While loading repository failed to use %s: "
++msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:716
++#: libdnf/dnf-sack.cpp:775
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+ msgstr "échec du chargement du MD_TYPE_PRIMARY."
+ 
+-#: libdnf/dnf-sack.cpp:729
+-msgid "repo_add_repomdxml/rpmmd() has failed."
+-msgstr "repo_add_repomdxml/rpmmd() a échoué."
++#: libdnf/dnf-sack.cpp:787
++#, fuzzy, c-format
++#| msgid "Loading plugin file=\"%s\""
++msgid "Loading repomd has failed: %s"
++msgstr "Chargement du fichier d’extension fichier=« %s »"
++
++#: libdnf/dnf-sack.cpp:798
++#, fuzzy, c-format
++#| msgid "Loading plugin file=\"%s\""
++msgid "Loading primary has failed: %s"
++msgstr "Chargement du fichier d’extension fichier=« %s »"
+ 
+-#: libdnf/dnf-sack.cpp:796
++#: libdnf/dnf-sack.cpp:864
+ msgid "failed to auto-detect architecture"
+ msgstr "n’a pu auto-détecter l’architecture"
+ 
+-#: libdnf/dnf-sack.cpp:961
++#: libdnf/dnf-sack.cpp:1029
+ #, c-format
+ msgid "failed creating cachedir %s"
+ msgstr "n’a pu créer le cachedir %s"
+ 
+-#: libdnf/dnf-sack.cpp:1738
++#: libdnf/dnf-sack.cpp:1806
+ msgid "failed loading RPMDB"
+ msgstr "n’a pu télécharger RPMDB"
+ 
+-#: libdnf/dnf-sack.cpp:2522
++#: libdnf/dnf-sack.cpp:2590
+ #, c-format
+ msgid "No module defaults found: %s"
+ msgstr "Aucun module par défaut n’a été trouvé : %s"
+@@ -441,75 +481,85 @@ msgstr "effectué sur un état %1$p qui n’avait pas de taille définie [%2$s]"
+ msgid "already at 100%% state [%s]"
+ msgstr "déjà en état à 100%% [%s]"
+ 
+-#: libdnf/dnf-transaction.cpp:300
++#: libdnf/dnf-transaction.cpp:302
+ #, 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
++#: libdnf/dnf-transaction.cpp:328
+ #, 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
++#: libdnf/dnf-transaction.cpp:369
+ msgid "Failed to check untrusted: "
+ msgstr "Échec de la vérification d’untrusted : "
+ 
+-#: libdnf/dnf-transaction.cpp:377
++#: libdnf/dnf-transaction.cpp:379
+ #, c-format
+ msgid "Downloaded file for %s not found"
+ msgstr "Fichier téléchargé pour %s non trouvé"
+ 
+-#: libdnf/dnf-transaction.cpp:397
++#: libdnf/dnf-transaction.cpp:399
+ #, 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
++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
+ msgid "Failed to get value for CacheDir"
+ msgstr "N’a pas pu obtenir la valeur de CacheDir"
+ 
+-#: libdnf/dnf-transaction.cpp:911
++#: libdnf/dnf-transaction.cpp:913
+ #, 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
++#: libdnf/dnf-transaction.cpp:921
+ #, 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
++#: libdnf/dnf-transaction.cpp:937
+ #, 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"
++"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible %3$s"
+ 
+-#: libdnf/dnf-transaction.cpp:1195
++#: libdnf/dnf-transaction.cpp:1196
+ msgid "failed to set root"
+ msgstr "n’a pu réussi à définir root"
+ 
+-#: libdnf/dnf-transaction.cpp:1416
++#: libdnf/dnf-transaction.cpp:1417
+ #, c-format
+ msgid "Error %i running transaction test"
+ msgstr "Erreur %i lors du test transactionnel"
+ 
+-#: libdnf/dnf-transaction.cpp:1456
++#: libdnf/dnf-transaction.cpp:1441
++#, c-format
++msgid "Error %i opening rpm database"
++msgstr "Erreur %i lors de l’ouverture de la base de données rpm"
++
++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
++msgid "The rpmdbCookie() function did not return cookie of rpm database."
++msgstr ""
++"La fonction rpmdbCookie() n'a pas retourné le cookie de la base de données "
++"rpm."
++
++#: libdnf/dnf-transaction.cpp:1464
+ #, c-format
+ msgid "Error %i running transaction"
+ msgstr "Erreur %i pendant la transaction"
+ 
+-#: libdnf/dnf-transaction.cpp:1472
++#: libdnf/dnf-transaction.cpp:1480
+ #, 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:403
++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485
+ #, c-format
+ msgid "cannot open directory %1$s: %2$s"
+ msgstr "impossible d’ouvrir le dossier %1$s : %2$s"
+@@ -528,8 +578,7 @@ msgstr ""
+ #: libdnf/goal/Goal.cpp:79
+ 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"
++"Sélecteur Ill-formed utilisé pour l’opération, type de comparaison incorrecte"
+ 
+ #: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117
+ msgid " does not belong to a distupgrade repository"
+@@ -717,63 +766,68 @@ msgstr "le module %s est en conflit avec %s fourni par lui-même"
+ msgid "both module %s and %s obsolete %s"
+ msgstr "à la fois le module %s et %s rendent obsolète %s"
+ 
+-#: libdnf/goal/Goal.cpp:1141
++#: libdnf/goal/Goal.cpp:1157
+ msgid "no solver set"
+ msgstr "aucun solveur défini"
+ 
+-#: libdnf/goal/Goal.cpp:1146
++#: libdnf/goal/Goal.cpp:1162
+ #, c-format
+ msgid "failed to make %s absolute"
+ msgstr "n’a pas pu rendre %s absolu"
+ 
+-#: libdnf/goal/Goal.cpp:1153
++#: libdnf/goal/Goal.cpp:1169
+ #, 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:1165
++#: libdnf/goal/Goal.cpp:1181
+ msgid "no solv in the goal"
+ msgstr "pas de solv dans l’objectif"
+ 
+-#: libdnf/goal/Goal.cpp:1167
++#: libdnf/goal/Goal.cpp:1183
+ msgid "no solution, cannot remove protected package"
+ msgstr "aucune solution, n’a pas pu supprimer le package protégé"
+ 
+-#: libdnf/goal/Goal.cpp:1170
++#: libdnf/goal/Goal.cpp:1186
+ msgid "no solution possible"
+ msgstr "aucune solution n’est possible"
+ 
+-#: libdnf/goal/Goal.cpp:1296
++#: libdnf/goal/Goal.cpp:1312
+ msgid "Problem: "
+ msgstr "Problème : "
+ 
+-#: libdnf/goal/Goal.cpp:1301
++#: libdnf/goal/Goal.cpp:1317
+ #, c-format
+ msgid "Problem %d: "
+ msgstr "Probléme %d : "
+ 
+-#: libdnf/goal/Goal.cpp:1634
++#: libdnf/goal/Goal.cpp:1650
+ 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/hy-iutil.cpp:326
++#: libdnf/hy-iutil.cpp:181
++#, c-format
++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu"
++msgstr ""
++
++#: libdnf/hy-iutil.cpp:408
+ #, 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"
+ 
+-#: libdnf/hy-iutil.cpp:334
++#: libdnf/hy-iutil.cpp:416
+ #, 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"
+ 
+-#: libdnf/hy-iutil.cpp:380
++#: libdnf/hy-iutil.cpp:462
+ #, c-format
+ msgid "cannot create directory %1$s: %2$s"
+ msgstr "impossible de créer le dossier %1$s : %2$s"
+ 
+-#: libdnf/hy-iutil.cpp:415
++#: libdnf/hy-iutil.cpp:497
+ #, c-format
+ msgid "cannot stat path %1$s: %2$s"
+ msgstr "impossible de stat le chemin %1$s : %2$s"
+@@ -870,8 +924,7 @@ msgstr ""
+ #: libdnf/module/ModulePackageContainer.cpp:1830
+ #, 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 »"
++msgstr "Impossible de supprimer les données de sécurité modulaires dans « %s »"
+ 
+ #: libdnf/module/ModulePackageContainer.cpp:1862
+ #, c-format
+@@ -958,8 +1011,8 @@ msgid ""
+ "operator instead."
+ msgstr ""
+ "L’utilisation de l’opérateur « == » dans reldeps peut entraîner un "
+-"comportement indéfini. Il est déprécié et le support sera abandonné dans les"
+-" prochaines versions. Utilisez plutôt l’opérateur « = »."
++"comportement indéfini. Il est déprécié et le support sera abandonné dans les "
++"prochaines versions. Utilisez plutôt l’opérateur « = »."
+ 
+ #: libdnf/repo/Repo.cpp:321
+ #, c-format
+@@ -980,8 +1033,8 @@ msgstr "repo '%s' : 'basecachedir' n'est pas fixé"
+ 
+ #: libdnf/repo/Repo.cpp:512
+ msgid ""
+-"Maximum download speed is lower than minimum. Please change configuration of"
+-" minrate or throttle"
++"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"
+@@ -1012,8 +1065,8 @@ msgstr "%s : gpgme_data_new_from_fd() : %s"
+ msgid "%s: gpgme_op_import(): %s"
+ msgstr "%s : gpgme_op_import() : %s"
+ 
+-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162
+-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279
++#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236
++#: libdnf/repo/Repo.cpp:1279
+ #, 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"
+@@ -1159,12 +1212,12 @@ msgstr "Pas en cours"
+ msgid "No transaction in progress"
+ msgstr "Aucune transaction n’est en cours"
+ 
+-#: libdnf/transaction/TransactionItem.cpp:147
++#: libdnf/transaction/TransactionItem.cpp:146
+ 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:217
+ msgid "Attempt to update transaction item in completed transaction"
+ msgstr ""
+ "Tentative de mettre à jour un élément de transaction dans une transaction "
+@@ -1199,11 +1252,23 @@ msgid "Can't add console output to unsaved transaction"
+ msgstr ""
+ "Ne peut pas ajouter une sortie de console à une transaction non enregistrée"
+ 
++#~ msgid "failed to add solv"
++#~ msgstr "n’a pu ajouter solv"
++
++#~ msgid "write_main() failed writing data: %i"
++#~ msgstr "write_main() n’a pu écrire les données : %i"
++
++#~ msgid "write_main() failed to re-load written solv file"
++#~ msgstr "write_main() n’a pas pu charger à nouveau le fichier solv"
++
++#~ msgid "write_ext(%1$d) has failed: %2$d"
++#~ msgstr "write_ext(%1$d) a échoué : %2$d"
++
++#~ msgid "repo_add_repomdxml/rpmmd() has failed."
++#~ msgstr "repo_add_repomdxml/rpmmd() a échoué."
++
+ #~ msgid "Failed to parse module artifact NEVRA '%s'"
+-#~ msgstr "Échec de l’analyse du module d’artéfact NEVRA : %s"
++#~ msgstr "Échec de l'analyse de l'artefact de module '%s'"
+ 
+ #~ 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 4005b6a0..ded77846 100644
+--- a/po/ja.po
++++ b/po/ja.po
+@@ -1,21 +1,23 @@
+ # Casey Jones <nahareport@live.com>, 2018. #zanata
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2021.
+ # Casey Jones <nahareport@yahoo.com>, 2020.
+-# Sundeep Anand <suanand@redhat.com>, 2021.
++# Sundeep Anand <suanand@redhat.com>, 2021, 2022.
++# Transtats <suanand@redhat.com>, 2022.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2022-01-05 01:53+0000\n"
+-"PO-Revision-Date: 2021-09-11 10:04+0000\n"
+-"Last-Translator: Ludek Janda <ljanda@redhat.com>\n"
+-"Language-Team: Japanese <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/ja/>\n"
++"POT-Creation-Date: 2022-08-30 14:53+0200\n"
++"PO-Revision-Date: 2022-09-06 07:19+0000\n"
++"Last-Translator: Transtats <suanand@redhat.com>\n"
++"Language-Team: Japanese <https://translate.fedoraproject.org/projects/dnf/"
++"libdnf-rhel-9/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.8\n"
++"X-Generator: Weblate 4.14\n"
+ 
+ #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
+ msgid "no value specified"
+@@ -24,7 +26,7 @@ msgstr "値が指定されていません"
+ #: libdnf/conf/ConfigMain.cpp:67 libdnf/conf/OptionSeconds.cpp:48
+ #, c-format
+ msgid "seconds value '%s' must not be negative"
+-msgstr "2個目の値 '%s' は負の数にしないでください"
++msgstr "2 個目の値 '%s' は負の数にしないでください"
+ 
+ #: libdnf/conf/ConfigMain.cpp:71
+ #, c-format
+@@ -104,130 +106,143 @@ msgstr "'%s' を 秒に変換できません"
+ msgid "GetValue(): Value not set"
+ msgstr "GetValue(): 値は設定されていません"
+ 
+-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188
+ #, c-format
+ msgid "Cannot enable more streams from module '%s' at the same time"
+ msgstr "モジュール '%s' から、さらにストリームを同時に有効にできません"
+ 
+-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214
++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215
+ #, c-format
+ msgid ""
+ "Cannot enable module '%1$s' stream '%2$s': State of module already modified"
+-msgstr "モジュール '%1$s' ストリーム '%2$s' を有効にできません。モジュールの状態はすでに変更されています"
++msgstr ""
++"モジュール '%1$s' ストリーム '%2$s' を有効にできません。モジュールの状態はす"
++"でに変更されています"
+ 
+-#: libdnf/dnf-context.cpp:3263
++#: libdnf/dnf-context.cpp:3264
+ #, c-format
+ msgid "Modular dependency problem with Defaults: %s"
+ msgstr "デフォルトのモジュラー依存問題: %s"
+ 
+-#: libdnf/dnf-context.cpp:3266
++#: libdnf/dnf-context.cpp:3267
+ #, c-format
+ msgid "Modular dependency problem with the latest modules: %s"
+ msgstr "最新のモジュールでモジュールの依存関係の問題: %s"
+ 
+-#: libdnf/dnf-context.cpp:3270
++#: libdnf/dnf-context.cpp:3271
+ #, c-format
+ msgid "Modular dependency problem: %s"
+ msgstr "モジュラーの依存に関する問題: %s"
+ 
+-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
+-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
+-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
+-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318
++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368
++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416
++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475
+ #, c-format
+ msgid "Unable to resolve argument '%s'"
+ msgstr "引数 '%s' を解決できません"
+ 
+-#: libdnf/dnf-context.cpp:3300
++#: libdnf/dnf-context.cpp:3301
+ #, c-format
+ msgid ""
+-"Only module name is required. Ignoring unneeded information in argument: "
+-"'%s'"
++"Only module name is required. Ignoring unneeded information in argument: '%s'"
+ msgstr "モジュール名のみが必要です。引数の不必要な情報は無視します: '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3314
++#: libdnf/dnf-context.cpp:3315
+ #, c-format
+ msgid "Cannot reset module '%s': State of module already modified"
+-msgstr "モジュール '%s' をリセットできません。モジュールの状態はすでに変更されています"
++msgstr ""
++"モジュール '%s' をリセットできません。モジュールの状態はすでに変更されていま"
++"す"
+ 
+-#: libdnf/dnf-context.cpp:3325
++#: libdnf/dnf-context.cpp:3326
+ #, c-format
+ msgid "Cannot disable module '%s': State of module already modified"
+-msgstr "モジュール '%s' を無効にできません。モジュールの状態はすでに変更されています"
++msgstr ""
++"モジュール '%s' を無効にできません。モジュールの状態はすでに変更されています"
+ 
+-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452
+-#: libdnf/dnf-context.cpp:3633
++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453
++#: libdnf/dnf-context.cpp:3634
+ msgid "No modular data available"
+ msgstr "モジュールデータは利用できません"
+ 
+-#: libdnf/dnf-context.cpp:3373
++#: libdnf/dnf-context.cpp:3374
+ #, c-format
+ msgid "Ignoring unneeded information in argument: '%s'"
+ msgstr "引数の不要な情報は無視します: '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3411
++#: libdnf/dnf-context.cpp:3412
+ #, c-format
+ msgid ""
+ "Problem during enablement of dependency tree for module '%1$s' stream "
+ "'%2$s': %3$s"
+-msgstr "モジュール '%1$s' ストリーム '%2$s' の依存関係ツリーの有効化中に問題: %3$s"
++msgstr ""
++"モジュール '%1$s' ストリーム '%2$s' の依存関係ツリーの有効化中に問題: %3$s"
+ 
+-#: libdnf/dnf-context.cpp:3423
++#: libdnf/dnf-context.cpp:3424
+ msgid "Problems appeared for module enable request:"
+-msgstr ""
++msgstr "モジュール有効化リクエストに発生する問題:"
+ 
+-#: libdnf/dnf-context.cpp:3518
++#: libdnf/dnf-context.cpp:3519
+ #, c-format
+ msgid "No active module packages found for module spec '%s'"
+ msgstr ""
++"モジュール仕様 '%s' について、アクティブなモジュールパッケージが見つかりませ"
++"ん"
+ 
+-#: libdnf/dnf-context.cpp:3523
+-#, fuzzy, c-format
+-#| msgid "cannot install both modules %s and %s"
++#: libdnf/dnf-context.cpp:3524
++#, c-format
+ msgid "Cannot install module '%s' from fail-safe repository"
+-msgstr "モジュール %s と %s どちらもインストールできません"
++msgstr "フェイルセーフリポジトリーからモジュール '%s' をインストールできません"
+ 
+-#: libdnf/dnf-context.cpp:3530
++#: libdnf/dnf-context.cpp:3531
+ #, c-format
+ msgid "No profile found matching '%s'"
+-msgstr ""
++msgstr "'%s' にマッチするプロファイルが見つかりません"
+ 
+-#: libdnf/dnf-context.cpp:3584
++#: libdnf/dnf-context.cpp:3585
+ #, c-format
+ msgid "No match for package '%s' for module spec %s"
+ msgstr ""
++"モジュール仕様 %s について、パッケージ '%s' にマッチする項目はありません"
+ 
+-#: libdnf/dnf-context.cpp:3595
++#: libdnf/dnf-context.cpp:3596
+ #, c-format
+ msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
+-msgstr ""
++msgstr "モジュール '%1$s' ストリーム '%2$s' のインストール中に問題: %3$s"
+ 
+-#: libdnf/dnf-context.cpp:3604
++#: libdnf/dnf-context.cpp:3605
+ msgid "Problems appeared for module install request:"
+-msgstr ""
++msgstr "モジュールインストールリクエストに発生する問題:"
+ 
+-#: libdnf/dnf-context.cpp:3663
++#: libdnf/dnf-context.cpp:3664
+ msgid "Problems appeared for module reset request:"
+-msgstr ""
++msgstr "モジュールリセットリクエストに発生する問題:"
+ 
+-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724
+ msgid "Problems appeared for module disable request:"
+-msgstr ""
++msgstr "モジュール無効化リクエストに発生する問題:"
+ 
+-#: libdnf/dnf-context.cpp:3755
++#: libdnf/dnf-context.cpp:3756
+ #, c-format
+ msgid ""
+-"The operation would result in switching of module '%s' stream '%s' to stream"
+-" '%s'"
+-msgstr "オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り替える結果となります"
++"The operation would result in switching of module '%s' stream '%s' to stream "
++"'%s'"
++msgstr ""
++"オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り"
++"替える結果となります"
+ 
+-#: libdnf/dnf-context.cpp:3759
++#: libdnf/dnf-context.cpp:3760
+ 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."
++"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>' コマンドを使用してモジュールをリセットすることを推奨します。モジュールのリセット後に、別のストリームをインストールできます。"
++"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module "
++"reset <module_name>' コマンドを使用してモジュールをリセットすることを推奨しま"
++"す。モジュールのリセット後に、別のストリームをインストールできます。"
+ 
+ #: libdnf/dnf-goal.cpp:107
+ msgid "Could not depsolve transaction; "
+@@ -254,7 +269,9 @@ msgstr " 問題: %s\n"
+ msgid ""
+ "No available modular metadata for modular package '%s'; cannot be installed "
+ "on the system"
+-msgstr "モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにインストールはできません"
++msgstr ""
++"モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにイ"
++"ンストールはできません"
+ 
+ #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
+ #, c-format
+@@ -293,7 +310,8 @@ msgstr "トランザクションの実行中にエラーが発生しました: %
+ 
+ #: libdnf/dnf-rpmts.cpp:283
+ msgid "Error running transaction and no problems were reported!"
+-msgstr "トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!"
++msgstr ""
++"トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!"
+ 
+ #: libdnf/dnf-rpmts.cpp:346
+ msgid "Fatal error, run database recovery"
+@@ -309,84 +327,125 @@ msgstr "パッケージ %s を見つけることができませんでした"
+ msgid "could not add erase element %1$s(%2$i)"
+ msgstr "erase 要素 %1$s(%2$i) を追加することができません"
+ 
+-#: libdnf/dnf-sack.cpp:395
+-msgid "failed to add solv"
+-msgstr "solv の追加に失敗しました"
++#: libdnf/dnf-sack.cpp:251
++msgid "repo_add_solv() has failed."
++msgstr "repo_add_solv() は失敗しました。"
+ 
+-#: libdnf/dnf-sack.cpp:414
++#: libdnf/dnf-sack.cpp:415
++#, c-format
++msgid "Loading extension cache %s (%d) failed: "
++msgstr "拡張キャッシュの %s (%d) の読み込みに失敗しました: "
++
++#: libdnf/dnf-sack.cpp:429
+ #, c-format
+ msgid "no %1$s string for %2$s"
+ msgstr "%2$s の %1$s 文字列はありません"
+ 
+-#: libdnf/dnf-sack.cpp:424
++#: libdnf/dnf-sack.cpp:439
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr "開くことに失敗しました: %s"
+ 
+-#: libdnf/dnf-sack.cpp:503
++#: libdnf/dnf-sack.cpp:518
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr "一時ファイルを作成できません: %s"
+ 
+-#: libdnf/dnf-sack.cpp:513
++#: libdnf/dnf-sack.cpp:528
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr "tmp ファイルを開くことに失敗しました: %s"
+ 
+-#: libdnf/dnf-sack.cpp:525
++#: libdnf/dnf-sack.cpp:550
+ #, c-format
+-msgid "write_main() failed writing data: %i"
+-msgstr "write_main() はデータの書き込みに失敗しました: %i"
++msgid "While writing primary cache %s repowriter write failed: %i, error: %s"
++msgstr "プライマリーキャッシュの %s repowriter 書き込み中に %i "
++"エラーが発生しました。エラー: %s"
+ 
+-#: libdnf/dnf-sack.cpp:542
+-msgid "write_main() failed to re-load written solv file"
+-msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました"
++#: libdnf/dnf-sack.cpp:560
++#, c-format
++msgid "Failed closing tmp file %s: %s"
++msgstr "tmp ファイル %s の終了に失敗しました: %s"
++
++#: libdnf/dnf-sack.cpp:570
++#, c-format
++msgid "Failed to use newly written primary cache: %s: "
++msgstr "新たに書き込まれたプライマリーキャッシュを使用できません: %s: "
++
++#: libdnf/dnf-sack.cpp:576
++#, c-format
++msgid "Failed to use newly written primary cache: %s"
++msgstr "新たに書き込まれたプライマリーキャッシュを使用できません: %s"
+ 
+-#: libdnf/dnf-sack.cpp:607
++#: libdnf/dnf-sack.cpp:626
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr "一時ファイル %s を作成できません"
+ 
+-#: libdnf/dnf-sack.cpp:625
++#: libdnf/dnf-sack.cpp:666
+ #, c-format
+-msgid "write_ext(%1$d) has failed: %2$d"
+-msgstr "write_ext(%1$d) は失敗しました: %2$d"
++msgid ""
++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s"
++msgstr "拡張キャッシュ %s (%d) の書き込み中: repowriter の書き込みに失敗: %i、エラー:"
++" %s"
++
++#: libdnf/dnf-sack.cpp:676
++#, c-format
++msgid "While writing extension cache (%d): cannot close temporary file: %s"
++msgstr "拡張キャッシュの書き込み中 (%d): 一時ファイルを終了できません: %s"
++
++#: libdnf/dnf-sack.cpp:692
++#, c-format
++msgid "Failed to use newly written extension cache: %s (%d): "
++msgstr "新たに書き込まれた拡張キャッシュを使用できませんでした: %s (%d): "
++
++#: libdnf/dnf-sack.cpp:699
++#, c-format
++msgid "Failed to use newly written extension cache: %s (%d)"
++msgstr "新たに書き込まれた拡張キャッシュを使用できませんでした: %s (%d)"
+ 
+-#: libdnf/dnf-sack.cpp:680
++#: libdnf/dnf-sack.cpp:740
+ msgid "null repo md file"
+ msgstr "null repo md ファイル"
+ 
+-#: libdnf/dnf-sack.cpp:689
++#: libdnf/dnf-sack.cpp:749
+ #, c-format
+ msgid "can not read file %1$s: %2$s"
+ msgstr "ファイル %1$s を読み込みできません: %2$s"
+ 
+-#: libdnf/dnf-sack.cpp:703
+-msgid "repo_add_solv() has failed."
+-msgstr "repo_add_solv() は失敗しました。"
++#: libdnf/dnf-sack.cpp:764
++#, c-format
++msgid "While loading repository failed to use %s: "
++msgstr "リポジトリーのロード中に %s が使用できませんでした: "
+ 
+-#: libdnf/dnf-sack.cpp:716
++#: libdnf/dnf-sack.cpp:775
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+ msgstr "MD_TYPE_PRIMARY のロードに失敗しました。"
+ 
+-#: libdnf/dnf-sack.cpp:729
+-msgid "repo_add_repomdxml/rpmmd() has failed."
+-msgstr "repo_add_repomdxml/rpmmd() は失敗しました。"
++#: libdnf/dnf-sack.cpp:787
++#, c-format
++msgid "Loading repomd has failed: %s"
++msgstr "repomd の読み込みに失敗しました: %s"
++
++#: libdnf/dnf-sack.cpp:798
++#, c-format
++msgid "Loading primary has failed: %s"
++msgstr "プライマリーの読み込みに失敗しました: %s"
+ 
+-#: libdnf/dnf-sack.cpp:796
++#: libdnf/dnf-sack.cpp:864
+ msgid "failed to auto-detect architecture"
+ msgstr "アーキテクチャーの自動検出に失敗しました"
+ 
+-#: libdnf/dnf-sack.cpp:961
++#: libdnf/dnf-sack.cpp:1029
+ #, c-format
+ msgid "failed creating cachedir %s"
+ msgstr "cachedir %s の作成に失敗しました"
+ 
+-#: libdnf/dnf-sack.cpp:1738
++#: libdnf/dnf-sack.cpp:1806
+ msgid "failed loading RPMDB"
+ msgstr "RPMDB のロードに失敗しました"
+ 
+-#: libdnf/dnf-sack.cpp:2522
++#: libdnf/dnf-sack.cpp:2590
+ #, c-format
+ msgid "No module defaults found: %s"
+ msgstr "モジュールのデフォルトは見つかりませんでした: %s"
+@@ -415,69 +474,84 @@ msgstr "サイズ設定のない状態 %1$p で実行されました! [%2$s]"
+ msgid "already at 100%% state [%s]"
+ msgstr "すでに 100%% の状態 [%s] にあります"
+ 
+-#: libdnf/dnf-transaction.cpp:300
++#: libdnf/dnf-transaction.cpp:302
+ #, c-format
+ msgid "Sources not set when trying to ensure package %s"
+ msgstr "パッケージ %s を確実にしようとする場合、ソースは設定されません"
+ 
+-#: libdnf/dnf-transaction.cpp:326
++#: libdnf/dnf-transaction.cpp:328
+ #, 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 はロード済み)"
++msgstr ""
++"repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo "
++"はロード済み)"
+ 
+-#: libdnf/dnf-transaction.cpp:367
++#: libdnf/dnf-transaction.cpp:369
+ msgid "Failed to check untrusted: "
+ msgstr "untrusted の確認に失敗しました: "
+ 
+-#: libdnf/dnf-transaction.cpp:377
++#: libdnf/dnf-transaction.cpp:379
+ #, c-format
+ msgid "Downloaded file for %s not found"
+ msgstr "%s にダウンロードしたファイルが見つかりませんでした"
+ 
+-#: libdnf/dnf-transaction.cpp:397
++#: libdnf/dnf-transaction.cpp:399
+ #, 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"
++msgstr ""
++"パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s"
+ 
+-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
+ msgid "Failed to get value for CacheDir"
+ msgstr "CacheDir の値の取得に失敗しました"
+ 
+-#: libdnf/dnf-transaction.cpp:911
++#: libdnf/dnf-transaction.cpp:913
+ #, c-format
+ msgid "Failed to get filesystem free size for %s: "
+ msgstr "%s に filesystem をフリーサイズで取得することに失敗しました: "
+ 
+-#: libdnf/dnf-transaction.cpp:919
++#: libdnf/dnf-transaction.cpp:921
+ #, c-format
+ msgid "Failed to get filesystem free size for %s"
+ msgstr "%s に filesystem をフリーサイズで取得することに失敗しました"
+ 
+-#: libdnf/dnf-transaction.cpp:935
++#: libdnf/dnf-transaction.cpp:937
+ #, c-format
+ msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
+-msgstr "%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です"
++msgstr ""
++"%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です"
+ 
+-#: libdnf/dnf-transaction.cpp:1195
++#: libdnf/dnf-transaction.cpp:1196
+ msgid "failed to set root"
+ msgstr "root の設定に失敗しました"
+ 
+-#: libdnf/dnf-transaction.cpp:1416
++#: libdnf/dnf-transaction.cpp:1417
+ #, c-format
+ msgid "Error %i running transaction test"
+ msgstr "トランザクションテストの実行中にエラー %i"
+ 
+-#: libdnf/dnf-transaction.cpp:1456
++#: libdnf/dnf-transaction.cpp:1441
++#, c-format
++msgid "Error %i opening rpm database"
++msgstr "rpm データベースを開く際にエラー %i"
++
++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
++msgid "The rpmdbCookie() function did not return cookie of rpm database."
++msgstr "rpmdbCookie() 関数は rpm データベースのクッキーを返しませんでした。"
++
++#: libdnf/dnf-transaction.cpp:1464
+ #, c-format
+ msgid "Error %i running transaction"
+ msgstr "トランザクションの実行中にエラー %i"
+ 
+-#: libdnf/dnf-transaction.cpp:1472
++#: libdnf/dnf-transaction.cpp:1480
+ #, c-format
+ msgid "Transaction did not go to writing phase, but returned no error(%i)"
+-msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした"
++msgstr ""
++"トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しま"
++"せんでした"
+ 
+-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403
++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485
+ #, c-format
+ msgid "cannot open directory %1$s: %2$s"
+ msgstr "ディレクトリー %1$s を開くことができません: %2$s"
+@@ -583,7 +657,9 @@ msgstr "パッケージ %s は %s を廃止しました。これは %s により
+ #: libdnf/goal/Goal.cpp:109
+ #, c-format
+ msgid "installed package %s obsoletes %s provided by %s"
+-msgstr "インストール済パッケージ %s は %s を廃止しました。これは %s により提供されます"
++msgstr ""
++"インストール済パッケージ %s は %s を廃止しました。これは %s により提供されま"
++"す"
+ 
+ #: libdnf/goal/Goal.cpp:110
+ #, c-format
+@@ -593,7 +669,9 @@ msgstr "パッケージ %s は %s を暗に廃止しました。これは %s に
+ #: libdnf/goal/Goal.cpp:111
+ #, c-format
+ msgid "package %s requires %s, but none of the providers can be installed"
+-msgstr "パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできません"
++msgstr ""
++"パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできま"
++"せん"
+ 
+ #: libdnf/goal/Goal.cpp:112
+ #, c-format
+@@ -656,7 +734,9 @@ msgstr "モジュール %s は %s を廃止しました。これは %s により
+ #: libdnf/goal/Goal.cpp:136
+ #, c-format
+ msgid "installed module %s obsoletes %s provided by %s"
+-msgstr "インストール済モジュール %s は %s を廃止しました。これは %s により提供されます"
++msgstr ""
++"インストール済モジュール %s は %s を廃止しました。これは %s により提供されま"
++"す"
+ 
+ #: libdnf/goal/Goal.cpp:137
+ #, c-format
+@@ -666,7 +746,9 @@ msgstr "モジュール %s は %s を暗に廃止しました。これは %s に
+ #: libdnf/goal/Goal.cpp:138
+ #, c-format
+ msgid "module %s requires %s, but none of the providers can be installed"
+-msgstr "モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできません"
++msgstr ""
++"モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできま"
++"せん"
+ 
+ #: libdnf/goal/Goal.cpp:139
+ #, c-format
+@@ -678,62 +760,67 @@ msgstr "モジュール %s は自己提供される %s と競合しています"
+ msgid "both module %s and %s obsolete %s"
+ msgstr "モジュール %s と %s 両方は %s を廃止しました"
+ 
+-#: libdnf/goal/Goal.cpp:1141
++#: libdnf/goal/Goal.cpp:1157
+ msgid "no solver set"
+ msgstr "設定されたソルバーはありません"
+ 
+-#: libdnf/goal/Goal.cpp:1146
++#: libdnf/goal/Goal.cpp:1162
+ #, c-format
+ msgid "failed to make %s absolute"
+ msgstr "%s を絶対的にすることに失敗しました"
+ 
+-#: libdnf/goal/Goal.cpp:1153
++#: libdnf/goal/Goal.cpp:1169
+ #, c-format
+ msgid "failed writing debugdata to %1$s: %2$s"
+ msgstr "debugdata を %1$s へ書き込むことに失敗しました: %2$s"
+ 
+-#: libdnf/goal/Goal.cpp:1165
++#: libdnf/goal/Goal.cpp:1181
+ msgid "no solv in the goal"
+ msgstr "目標に solv がありません"
+ 
+-#: libdnf/goal/Goal.cpp:1167
++#: libdnf/goal/Goal.cpp:1183
+ msgid "no solution, cannot remove protected package"
+ msgstr "ソリューションがなく、保護されたパッケージを削除できません"
+ 
+-#: libdnf/goal/Goal.cpp:1170
++#: libdnf/goal/Goal.cpp:1186
+ msgid "no solution possible"
+ msgstr "可能なソリューションがありません"
+ 
+-#: libdnf/goal/Goal.cpp:1296
++#: libdnf/goal/Goal.cpp:1312
+ msgid "Problem: "
+ msgstr "問題: "
+ 
+-#: libdnf/goal/Goal.cpp:1301
++#: libdnf/goal/Goal.cpp:1317
+ #, c-format
+ msgid "Problem %d: "
+ msgstr "問題 %d: "
+ 
+-#: libdnf/goal/Goal.cpp:1634
++#: libdnf/goal/Goal.cpp:1650
+ msgid ""
+ "The operation would result in removing the following protected packages: "
+ msgstr "操作は結果的に以下の保護されたパッケージを削除します: "
+ 
+-#: libdnf/hy-iutil.cpp:326
++#: libdnf/hy-iutil.cpp:181
++#, c-format
++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu"
++msgstr "Libsolv の solv_toolversion の長さ: %zu ですが、最大の想定値: %zu です"
++
++#: libdnf/hy-iutil.cpp:408
+ #, c-format
+ msgid "Failed renaming %1$s to %2$s: %3$s"
+ msgstr "名前を %1$s から %2$s へ変更できませんでした: %3$s"
+ 
+-#: libdnf/hy-iutil.cpp:334
++#: libdnf/hy-iutil.cpp:416
+ #, c-format
+ msgid "Failed setting perms on %1$s: %2$s"
+ msgstr "%1$s に権限を設定できませんでした: %2$s"
+ 
+-#: libdnf/hy-iutil.cpp:380
++#: libdnf/hy-iutil.cpp:462
+ #, c-format
+ msgid "cannot create directory %1$s: %2$s"
+ msgstr "ディレクトリー %1$s を作成できません : %2$s"
+ 
+-#: libdnf/hy-iutil.cpp:415
++#: libdnf/hy-iutil.cpp:497
+ #, c-format
+ msgid "cannot stat path %1$s: %2$s"
+ msgstr "パス %1$s のstatを調べられません : %2$s"
+@@ -812,7 +899,9 @@ msgstr "モジュール '%s:%s' のモジュラーフェイルセーフデータ
+ #: libdnf/module/ModulePackageContainer.cpp:1791
+ #, c-format
+ msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
+-msgstr "ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: %s"
++msgstr ""
++"ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: "
++"%s"
+ 
+ #: libdnf/module/ModulePackageContainer.cpp:1807
+ #, c-format
+@@ -829,7 +918,9 @@ msgstr "'%s' のモジュラーフェイルセーフデータを削除できま
+ msgid ""
+ "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is "
+ "disabled"
+-msgstr "ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用できません"
++msgstr ""
++"ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用"
++"できません"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:86
+ #, c-format
+@@ -859,7 +950,8 @@ msgstr "ストリームのアップグレードに失敗しました: %s"
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:221
+ #, c-format
+ msgid "Cannot retrieve module obsoletes because no stream matching %s: %s"
+-msgstr "%s に一致するストリームがないため、モジュールの廃止を取得できません: %s"
++msgstr ""
++"%s に一致するストリームがないため、モジュールの廃止を取得できません: %s"
+ 
+ #: libdnf/plugin/plugin.cpp:46
+ #, c-format
+@@ -902,9 +994,9 @@ msgid ""
+ "deprecated and the support will be dropped in future versions. Use '=' "
+ "operator instead."
+ msgstr ""
+-"reldeps で '==' "
+-"演算子を使用すると、未定義の動作が発生する可能性があります。これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' "
+-"演算子を使用してください。"
++"reldeps で '==' 演算子を使用すると、未定義の動作が発生する可能性があります。"
++"これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' 演"
++"算子を使用してください。"
+ 
+ #: libdnf/repo/Repo.cpp:321
+ #, c-format
+@@ -914,7 +1006,9 @@ msgstr "リポジトリー %s にはミラーまたは baseurl セットがあ
+ #: libdnf/repo/Repo.cpp:330
+ #, c-format
+ msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
+-msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。"
++msgstr ""
++"リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッ"
++"ピング。"
+ 
+ #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641
+ #: libdnf/repo/Repo.cpp:1400
+@@ -924,18 +1018,23 @@ msgstr "repo '%s': 'basecachedir' が設定されていません"
+ 
+ #: libdnf/repo/Repo.cpp:512
+ msgid ""
+-"Maximum download speed is lower than minimum. Please change configuration of"
+-" minrate or throttle"
+-msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください"
++"Maximum download speed is lower than minimum. Please change configuration of "
++"minrate or throttle"
++msgstr ""
++"ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの"
++"設定を変更してください"
+ 
+ #: libdnf/repo/Repo.cpp:546
+ #, c-format
+ msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
+-msgstr "repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されていません"
++msgstr ""
++"repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されてい"
++"ません"
+ 
+ #: libdnf/repo/Repo.cpp:548
+ msgid "'proxy_username' is set but not 'proxy_password'"
+-msgstr "'proxy_username' は設定済みですが、'proxy_password' は設定されていません"
++msgstr ""
++"'proxy_username' は設定済みですが、'proxy_password' は設定されていません"
+ 
+ #: libdnf/repo/Repo.cpp:629
+ #, c-format
+@@ -952,8 +1051,8 @@ msgstr "%s: gpgme_data_new_from_fd(): %s"
+ msgid "%s: gpgme_op_import(): %s"
+ msgstr "%s: gpgme_op_import(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162
+-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279
++#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236
++#: libdnf/repo/Repo.cpp:1279
+ #, c-format
+ msgid "Cannot create repo temporary directory \"%s\": %s"
+ msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s"
+@@ -996,7 +1095,8 @@ msgstr "復元中: repo '%s' はスキップされました、metalink はあり
+ #: libdnf/repo/Repo.cpp:1195
+ #, c-format
+ msgid "reviving: repo '%s' skipped, no usable hash."
+-msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。"
++msgstr ""
++"復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。"
+ 
+ #: libdnf/repo/Repo.cpp:1218
+ #, c-format
+@@ -1041,7 +1141,8 @@ msgstr "repo: キャッシュを使用: %s"
+ #: libdnf/repo/Repo.cpp:1351
+ #, c-format
+ msgid "Cache-only enabled but no cache for '%s'"
+-msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません"
++msgstr ""
++"キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません"
+ 
+ #: libdnf/repo/Repo.cpp:1355
+ #, c-format
+@@ -1095,17 +1196,18 @@ msgstr "進行中ではありません"
+ msgid "No transaction in progress"
+ msgstr "進行中のトランザクションはありません"
+ 
+-#: libdnf/transaction/TransactionItem.cpp:147
++#: libdnf/transaction/TransactionItem.cpp:146
+ msgid "Attempt to insert transaction item into completed transaction"
+ msgstr "完了したトランザクションにトランザクションアイテムの挿入を試みます"
+ 
+-#: libdnf/transaction/TransactionItem.cpp:218
++#: libdnf/transaction/TransactionItem.cpp:217
+ msgid "Attempt to update transaction item in completed transaction"
+ msgstr "完了したトランザクションにトランザクションアイテムの更新を試みます"
+ 
+ #: libdnf/transaction/Transformer.cpp:76
+ msgid "Database Corrupted: no row 'version' in table 'config'"
+-msgstr "データベースが破損しています。テーブル 'config' の行 'version' がありません"
++msgstr ""
++"データベースが破損しています。テーブル 'config' の行 'version' がありません"
+ 
+ #: libdnf/transaction/Transformer.cpp:681
+ msgid "Transformer: can't open history persist dir"
+@@ -1128,12 +1230,24 @@ msgstr "TransactionItem の状態は設定されていません: %s"
+ msgid "Can't add console output to unsaved transaction"
+ msgstr "未保存のトランザクションにコンソールの出力を追加できません"
+ 
+-#, fuzzy
++#~ msgid "failed to add solv"
++#~ msgstr "solv の追加に失敗しました"
++
++#~ msgid "write_main() failed writing data: %i"
++#~ msgstr "write_main() はデータの書き込みに失敗しました: %i"
++
++#~ msgid "write_main() failed to re-load written solv file"
++#~ msgstr ""
++#~ "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました"
++
++#~ msgid "write_ext(%1$d) has failed: %2$d"
++#~ msgstr "write_ext(%1$d) は失敗しました: %2$d"
++
++#~ msgid "repo_add_repomdxml/rpmmd() has failed."
++#~ msgstr "repo_add_repomdxml/rpmmd() は失敗しました。"
++
+ #~ msgid "Failed to parse module artifact NEVRA '%s'"
+-#~ msgstr "デフォルトのアップグレードに失敗しました: %s"
++#~ msgstr "モジュールアーティファクト NEVRA '%s' の解析に失敗しました"
+ 
+ #~ 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 94d0994e..6c1d6f74 100644
+--- a/po/ko.po
++++ b/po/ko.po
+@@ -3,20 +3,23 @@
+ # This file is distributed under the same license as the PACKAGE package.
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
+ # simmon <simmon@nplob.com>, 2021.
++# Kim InSoo <simmon@nplob.com>, 2022.
++# 김인수 <simmon@nplob.com>, 2022.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2022-01-05 01:53+0000\n"
+-"PO-Revision-Date: 2021-11-04 08:05+0000\n"
+-"Last-Translator: simmon <simmon@nplob.com>\n"
+-"Language-Team: Korean <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/ko/>\n"
++"POT-Creation-Date: 2022-08-30 14:53+0200\n"
++"PO-Revision-Date: 2022-09-02 02:19+0000\n"
++"Last-Translator: 김인수 <simmon@nplob.com>\n"
++"Language-Team: Korean <https://translate.fedoraproject.org/projects/dnf/"
++"libdnf-rhel-9/ko/>\n"
+ "Language: ko\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=1; plural=0;\n"
+-"X-Generator: Weblate 4.8\n"
++"X-Generator: Weblate 4.14\n"
+ 
+ #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
+ msgid "no value specified"
+@@ -105,129 +108,136 @@ msgstr "변환 할 수 없습니다 '%s'초까지"
+ msgid "GetValue(): Value not set"
+ msgstr "GetValue () : 값이 설정되지 않았습니다"
+ 
+-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188
+ #, c-format
+ msgid "Cannot enable more streams from module '%s' at the same time"
+ msgstr "동시에 모듈 '%s’에서 다른 스트림을 활성화 할 수 없습니다"
+ 
+-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214
++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215
+ #, c-format
+ msgid ""
+ "Cannot enable module '%1$s' stream '%2$s': State of module already modified"
+-msgstr "모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었습니다"
++msgstr ""
++"모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었"
++"습니다"
+ 
+-#: libdnf/dnf-context.cpp:3263
++#: libdnf/dnf-context.cpp:3264
+ #, c-format
+ msgid "Modular dependency problem with Defaults: %s"
+ msgstr "기본설정에 모듈 의존성 문제: %s"
+ 
+-#: libdnf/dnf-context.cpp:3266
++#: libdnf/dnf-context.cpp:3267
+ #, c-format
+ msgid "Modular dependency problem with the latest modules: %s"
+ msgstr "최신 모듈에 모듈 의존성 문제: %s"
+ 
+-#: libdnf/dnf-context.cpp:3270
++#: libdnf/dnf-context.cpp:3271
+ #, c-format
+ msgid "Modular dependency problem: %s"
+ msgstr "모듈러 의존성 문제: %s"
+ 
+-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
+-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
+-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
+-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318
++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368
++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416
++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475
+ #, c-format
+ msgid "Unable to resolve argument '%s'"
+ msgstr "인수 %s를 해결 할 수 없습니다"
+ 
+-#: libdnf/dnf-context.cpp:3300
++#: libdnf/dnf-context.cpp:3301
+ #, c-format
+ msgid ""
+-"Only module name is required. Ignoring unneeded information in argument: "
+-"'%s'"
++"Only module name is required. Ignoring unneeded information in argument: '%s'"
+ msgstr "모듈 이름만 필요합니다. 인수에서 불필요한 정보를 무시합니다: '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3314
++#: libdnf/dnf-context.cpp:3315
+ #, c-format
+ msgid "Cannot reset module '%s': State of module already modified"
+ msgstr "모듈 '%s 를 재설정 할 수 없습니다: 모듈 상태가 이미 변경되었습니다"
+ 
+-#: libdnf/dnf-context.cpp:3325
++#: libdnf/dnf-context.cpp:3326
+ #, c-format
+ msgid "Cannot disable module '%s': State of module already modified"
+ msgstr "모듈 '%s'사용 할 수 없습니다: 모듈 상태는 이미 적재되었습니다"
+ 
+-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452
+-#: libdnf/dnf-context.cpp:3633
++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453
++#: libdnf/dnf-context.cpp:3634
+ msgid "No modular data available"
+ msgstr "모듈러 자료를 이용 할 수 없습니다"
+ 
+-#: libdnf/dnf-context.cpp:3373
++#: libdnf/dnf-context.cpp:3374
+ #, c-format
+ msgid "Ignoring unneeded information in argument: '%s'"
+ msgstr "인수: '%s'에 불필요한 정보를 무시하기"
+ 
+-#: libdnf/dnf-context.cpp:3411
++#: libdnf/dnf-context.cpp:3412
+ #, c-format
+ msgid ""
+ "Problem during enablement of dependency tree for module '%1$s' stream "
+ "'%2$s': %3$s"
+-msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 중에 발생하는 문제"
++msgstr ""
++"모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 중에 발생하는 "
++"문제"
+ 
+-#: libdnf/dnf-context.cpp:3423
++#: libdnf/dnf-context.cpp:3424
+ msgid "Problems appeared for module enable request:"
+ msgstr "모듈 활성화 요청에 나타난 문제:"
+ 
+-#: libdnf/dnf-context.cpp:3518
++#: libdnf/dnf-context.cpp:3519
+ #, c-format
+ msgid "No active module packages found for module spec '%s'"
+-msgstr "모듈 상세 '%s'에 동적 모듈 꾸러미를 찾을 수 없습니다"
++msgstr "모듈 상세 '%s'를 위한 활성 모듈 꾸러미가 없습니다"
+ 
+-#: libdnf/dnf-context.cpp:3523
++#: libdnf/dnf-context.cpp:3524
+ #, c-format
+ msgid "Cannot install module '%s' from fail-safe repository"
+-msgstr "실패-방지 저장소에서 모듈 '%s'을 설치 할 수 없습니다"
++msgstr "실패-방지 저장소에서 모듈 '%s'를 설치 할 수 없습니다"
+ 
+-#: libdnf/dnf-context.cpp:3530
++#: libdnf/dnf-context.cpp:3531
+ #, c-format
+ msgid "No profile found matching '%s'"
+ msgstr "'%s'와 일치하는 프로파일을 찾을 수 없습니다"
+ 
+-#: libdnf/dnf-context.cpp:3584
++#: libdnf/dnf-context.cpp:3585
+ #, c-format
+ msgid "No match for package '%s' for module spec %s"
+-msgstr "모듈 상세 %s와 꾸러미 '%s'가 일치하지 않습니다"
++msgstr "꾸러미 '%s'가(모듈 상세 %s에 대한) 일치하지 않습니다"
+ 
+-#: libdnf/dnf-context.cpp:3595
++#: libdnf/dnf-context.cpp:3596
+ #, c-format
+ msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
+-msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 설치하는 동안에 발생하는 문제"
++msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 설치 중에 발생하는 문제"
+ 
+-#: libdnf/dnf-context.cpp:3604
++#: libdnf/dnf-context.cpp:3605
+ msgid "Problems appeared for module install request:"
+ msgstr "모듈 설치 요청을 위해 나타난 문제:"
+ 
+-#: libdnf/dnf-context.cpp:3663
++#: libdnf/dnf-context.cpp:3664
+ msgid "Problems appeared for module reset request:"
+-msgstr "모듈 재설정 요청을 위해 나타난 문제:"
++msgstr "모듈 초기화 요청을 위해 나타난 문제:"
+ 
+-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724
+ msgid "Problems appeared for module disable request:"
+ msgstr "모듈 비활성화 요청을 위해 나타난 문제:"
+ 
+-#: libdnf/dnf-context.cpp:3755
++#: libdnf/dnf-context.cpp:3756
+ #, c-format
+ msgid ""
+-"The operation would result in switching of module '%s' stream '%s' to stream"
+-" '%s'"
++"The operation would result in switching of module '%s' stream '%s' to stream "
++"'%s'"
+ msgstr "이 동작은 모듈 '%s'' 스트림 ‘%s'에서 스트림 '%s'로의 전환 결과입니다"
+ 
+-#: libdnf/dnf-context.cpp:3759
++#: libdnf/dnf-context.cpp:3760
+ 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."
++"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"
+-"설치된 모든 내용을 모듈에서 제거하고 ‘<module_name>' 명령을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니다."
++"설치된 모든 내용을 모듈에서 제거하고 ‘<module_name>' 명령을 사용하여 모듈을 "
++"재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니"
++"다."
+ 
+ #: libdnf/dnf-goal.cpp:107
+ msgid "Could not depsolve transaction; "
+@@ -254,7 +264,9 @@ msgstr " 문제: %s\n"
+ msgid ""
+ "No available modular metadata for modular package '%s'; cannot be installed "
+ "on the system"
+-msgstr "모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 할 수 없습니다"
++msgstr ""
++"모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 "
++"할 수 없습니다"
+ 
+ #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
+ #, c-format
+@@ -293,7 +305,8 @@ msgstr "연결 실행 오류 : %s"
+ 
+ #: libdnf/dnf-rpmts.cpp:283
+ msgid "Error running transaction and no problems were reported!"
+-msgstr "연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!"
++msgstr ""
++"연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!"
+ 
+ #: libdnf/dnf-rpmts.cpp:346
+ msgid "Fatal error, run database recovery"
+@@ -309,84 +322,123 @@ msgstr "꾸러미를 찾지 못했습니다. %s"
+ msgid "could not add erase element %1$s(%2$i)"
+ msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)"
+ 
+-#: libdnf/dnf-sack.cpp:395
+-msgid "failed to add solv"
+-msgstr "solv를 추가하지 못했습니다"
++#: libdnf/dnf-sack.cpp:251
++msgid "repo_add_solv() has failed."
++msgstr "repo_add_solv() 실패하였습니다."
+ 
+-#: libdnf/dnf-sack.cpp:414
++#: libdnf/dnf-sack.cpp:415
++#, c-format
++msgid "Loading extension cache %s (%d) failed: "
++msgstr "확장 캐쉬 %s (%d) 적재 중 실패함: "
++
++#: libdnf/dnf-sack.cpp:429
+ #, c-format
+ msgid "no %1$s string for %2$s"
+ msgstr "%2$s에 %1$s 문자열이 없습니다"
+ 
+-#: libdnf/dnf-sack.cpp:424
++#: libdnf/dnf-sack.cpp:439
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr "열지 못했습니다 : %s"
+ 
+-#: libdnf/dnf-sack.cpp:503
++#: libdnf/dnf-sack.cpp:518
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr "임시 파일을 만들 수 없습니다. %s"
+ 
+-#: libdnf/dnf-sack.cpp:513
++#: libdnf/dnf-sack.cpp:528
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr "여는 tmp 파일을 열지 못했습니다. %s"
+ 
+-#: libdnf/dnf-sack.cpp:525
++#: libdnf/dnf-sack.cpp:550
++#, c-format
++msgid "While writing primary cache %s repowriter write failed: %i, error: %s"
++msgstr "기본 캐쉬 %s를 쓰는 동안에 repowriter 쓰기가 실패함: %i, 오류: %s"
++
++#: libdnf/dnf-sack.cpp:560
++#, c-format
++msgid "Failed closing tmp file %s: %s"
++msgstr "tmp 파일을 닫는데 실패함 %s: %s"
++
++#: libdnf/dnf-sack.cpp:570
+ #, c-format
+-msgid "write_main() failed writing data: %i"
+-msgstr "write_main() 실패한 쓰기 자료: %i"
++msgid "Failed to use newly written primary cache: %s: "
++msgstr "새롭게 작성된 기본 캐쉬를 사용하는데 실패함: %s: "
+ 
+-#: libdnf/dnf-sack.cpp:542
+-msgid "write_main() failed to re-load written solv file"
+-msgstr "write_main ()이 작성된 solv 파일을 다시 적재하지 못했습니다"
++#: libdnf/dnf-sack.cpp:576
++#, c-format
++msgid "Failed to use newly written primary cache: %s"
++msgstr "새롭게 작성된 기본 캐쉬를 사용하는데 실패함: %s"
+ 
+-#: libdnf/dnf-sack.cpp:607
++#: libdnf/dnf-sack.cpp:626
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr "임시 파일을 만들 수 없습니다. %s"
+ 
+-#: libdnf/dnf-sack.cpp:625
++#: libdnf/dnf-sack.cpp:666
++#, c-format
++msgid ""
++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s"
++msgstr "확장 캐쉬 %s (%d)를 쓰는 동안: repowriter 쓰기가 실패함: %i, 오류: %s"
++
++#: libdnf/dnf-sack.cpp:676
++#, c-format
++msgid "While writing extension cache (%d): cannot close temporary file: %s"
++msgstr "확장 캐쉬 (%d)를 쓰는 동안: 임시 파일을 닫을 수 없습니다: %s"
++
++#: libdnf/dnf-sack.cpp:692
++#, c-format
++msgid "Failed to use newly written extension cache: %s (%d): "
++msgstr "새롭게 작성된 확장 캐쉬를 사용하는데 실패함: %s (%d): "
++
++#: libdnf/dnf-sack.cpp:699
+ #, c-format
+-msgid "write_ext(%1$d) has failed: %2$d"
+-msgstr "write_ext(%1$d) 실패하였습니다: %2$d"
++msgid "Failed to use newly written extension cache: %s (%d)"
++msgstr "새롭게 작성된 확장 캐쉬를 사용하는데 실패함: %s (%d)"
+ 
+-#: libdnf/dnf-sack.cpp:680
++#: libdnf/dnf-sack.cpp:740
+ msgid "null repo md file"
+ msgstr "null repo md 파일"
+ 
+-#: libdnf/dnf-sack.cpp:689
++#: libdnf/dnf-sack.cpp:749
+ #, c-format
+ msgid "can not read file %1$s: %2$s"
+ msgstr "파일을 읽을 수 없습니다. %1$s: %2$s"
+ 
+-#: libdnf/dnf-sack.cpp:703
+-msgid "repo_add_solv() has failed."
+-msgstr "repo_add_solv() 실패하였습니다."
++#: libdnf/dnf-sack.cpp:764
++#, c-format
++msgid "While loading repository failed to use %s: "
++msgstr "저장소를 적재하는 동안에 %s를 사용하는데 실패함: "
+ 
+-#: libdnf/dnf-sack.cpp:716
++#: libdnf/dnf-sack.cpp:775
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+ msgstr "MD_TYPE_PRIMARY를 적재하지 못했습니다."
+ 
+-#: libdnf/dnf-sack.cpp:729
+-msgid "repo_add_repomdxml/rpmmd() has failed."
+-msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다."
++#: libdnf/dnf-sack.cpp:787
++#, c-format
++msgid "Loading repomd has failed: %s"
++msgstr "repomd 적재하는데 실패함: %s"
++
++#: libdnf/dnf-sack.cpp:798
++#, c-format
++msgid "Loading primary has failed: %s"
++msgstr "기본 적재하는데 실패함: %s"
+ 
+-#: libdnf/dnf-sack.cpp:796
++#: libdnf/dnf-sack.cpp:864
+ msgid "failed to auto-detect architecture"
+ msgstr "구조 자동 검색에 실패했습니다"
+ 
+-#: libdnf/dnf-sack.cpp:961
++#: libdnf/dnf-sack.cpp:1029
+ #, c-format
+ msgid "failed creating cachedir %s"
+-msgstr "캐시 된 생성 실패 %s"
++msgstr "캐쉬 된 생성 실패 %s"
+ 
+-#: libdnf/dnf-sack.cpp:1738
++#: libdnf/dnf-sack.cpp:1806
+ msgid "failed loading RPMDB"
+ msgstr "RPMDB로드 실패"
+ 
+-#: libdnf/dnf-sack.cpp:2522
++#: libdnf/dnf-sack.cpp:2590
+ #, c-format
+ msgid "No module defaults found: %s"
+ msgstr "모듈 기본 설정을 찾을 수 없습니다: %s"
+@@ -415,69 +467,78 @@ msgstr "국가에서 행해진 %1$p 크기가 설정되지 않았습니다. [%2$
+ msgid "already at 100%% state [%s]"
+ msgstr "이미 100 %% 상태 [%s]"
+ 
+-#: libdnf/dnf-transaction.cpp:300
++#: libdnf/dnf-transaction.cpp:302
+ #, c-format
+ msgid "Sources not set when trying to ensure package %s"
+ msgstr "꾸러미를 만들 때 소스가 설정되지 않았습니다. %s"
+ 
+-#: libdnf/dnf-transaction.cpp:326
++#: libdnf/dnf-transaction.cpp:328
+ #, 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)"
+ 
+-#: libdnf/dnf-transaction.cpp:367
++#: libdnf/dnf-transaction.cpp:369
+ msgid "Failed to check untrusted: "
+ msgstr "신뢰할 수 없는지 확인하지 못했습니다. "
+ 
+-#: libdnf/dnf-transaction.cpp:377
++#: libdnf/dnf-transaction.cpp:379
+ #, c-format
+ msgid "Downloaded file for %s not found"
+ msgstr "에 대한 내려받기 파일 %s 찾을 수 없음"
+ 
+-#: libdnf/dnf-transaction.cpp:397
++#: libdnf/dnf-transaction.cpp:399
+ #, 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"
+ 
+-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
+ msgid "Failed to get value for CacheDir"
+ msgstr "CacheDir에 대한 값을 가져 오는 데 실패했습니다"
+ 
+-#: libdnf/dnf-transaction.cpp:911
++#: libdnf/dnf-transaction.cpp:913
+ #, c-format
+ msgid "Failed to get filesystem free size for %s: "
+ msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s: "
+ 
+-#: libdnf/dnf-transaction.cpp:919
++#: libdnf/dnf-transaction.cpp:921
+ #, c-format
+ msgid "Failed to get filesystem free size for %s"
+ msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s"
+ 
+-#: libdnf/dnf-transaction.cpp:935
++#: libdnf/dnf-transaction.cpp:937
+ #, c-format
+ msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
+ msgstr "여유 공간이 부족합니다. %1$s: 필요 %2$s, 이용 가능 %3$s"
+ 
+-#: libdnf/dnf-transaction.cpp:1195
++#: libdnf/dnf-transaction.cpp:1196
+ msgid "failed to set root"
+ msgstr "루트를 설정하지 못했습니다"
+ 
+-#: libdnf/dnf-transaction.cpp:1416
++#: libdnf/dnf-transaction.cpp:1417
+ #, c-format
+ msgid "Error %i running transaction test"
+ msgstr "%i 연결 실행 중 오류"
+ 
+-#: libdnf/dnf-transaction.cpp:1456
++#: libdnf/dnf-transaction.cpp:1441
++#, c-format
++msgid "Error %i opening rpm database"
++msgstr "rpm 데이타베이스를 여는 동안 오류 %i가 발생했습니다"
++
++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
++msgid "The rpmdbCookie() function did not return cookie of rpm database."
++msgstr "rpmdbCookie() 함수는 rpm 데이타베이스의 쿠키를 반환하지 않습니다."
++
++#: libdnf/dnf-transaction.cpp:1464
+ #, c-format
+ msgid "Error %i running transaction"
+ msgstr "오류 %i 실행중인 연결"
+ 
+-#: libdnf/dnf-transaction.cpp:1472
++#: libdnf/dnf-transaction.cpp:1480
+ #, c-format
+ msgid "Transaction did not go to writing phase, but returned no error(%i)"
+ msgstr "연결이 쓰기 단계로 이동하지 않았지만 오류를 반환하지 않았습니다 (%i)"
+ 
+-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403
++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485
+ #, c-format
+ msgid "cannot open directory %1$s: %2$s"
+ msgstr "디렉토리를 열 수 없습니다. %1$s: %2$s"
+@@ -678,62 +739,67 @@ msgstr "모듈 %s가 자체적으로 제공된 %s와 충돌합니다"
+ msgid "both module %s and %s obsolete %s"
+ msgstr "모듈 %s와 %s가 %s에서 폐기되었습니다"
+ 
+-#: libdnf/goal/Goal.cpp:1141
++#: libdnf/goal/Goal.cpp:1157
+ msgid "no solver set"
+ msgstr "solver 설정 없음"
+ 
+-#: libdnf/goal/Goal.cpp:1146
++#: libdnf/goal/Goal.cpp:1162
+ #, c-format
+ msgid "failed to make %s absolute"
+ msgstr "%s 절대값을 생성을 실패하였습니다"
+ 
+-#: libdnf/goal/Goal.cpp:1153
++#: libdnf/goal/Goal.cpp:1169
+ #, c-format
+ msgid "failed writing debugdata to %1$s: %2$s"
+ msgstr "%1$s: %2$s에 디버그자료 쓰기를 실패했습니다"
+ 
+-#: libdnf/goal/Goal.cpp:1165
++#: libdnf/goal/Goal.cpp:1181
+ msgid "no solv in the goal"
+ msgstr "목표에 solv가 없다"
+ 
+-#: libdnf/goal/Goal.cpp:1167
++#: libdnf/goal/Goal.cpp:1183
+ msgid "no solution, cannot remove protected package"
+ msgstr "해결책 없음, 보호 된 꾸러미를 제거 할 수 없음"
+ 
+-#: libdnf/goal/Goal.cpp:1170
++#: libdnf/goal/Goal.cpp:1186
+ msgid "no solution possible"
+ msgstr "해결책 없음"
+ 
+-#: libdnf/goal/Goal.cpp:1296
++#: libdnf/goal/Goal.cpp:1312
+ msgid "Problem: "
+ msgstr "문제: "
+ 
+-#: libdnf/goal/Goal.cpp:1301
++#: libdnf/goal/Goal.cpp:1317
+ #, c-format
+ msgid "Problem %d: "
+ msgstr "문제 %d: "
+ 
+-#: libdnf/goal/Goal.cpp:1634
++#: libdnf/goal/Goal.cpp:1650
+ msgid ""
+ "The operation would result in removing the following protected packages: "
+ msgstr "이 작업으로 인해 다음과 같은 보호 꾸러미가 제거됩니다. "
+ 
+-#: libdnf/hy-iutil.cpp:326
++#: libdnf/hy-iutil.cpp:181
++#, c-format
++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu"
++msgstr "Libsolv의 solv_toolversion은 %zu 길이지만 최대값은 %zu로 예상됩니다"
++
++#: libdnf/hy-iutil.cpp:408
+ #, c-format
+ msgid "Failed renaming %1$s to %2$s: %3$s"
+ msgstr "%1$s 을 %2$s: %3$s에 이름 바꾸기 실패"
+ 
+-#: libdnf/hy-iutil.cpp:334
++#: libdnf/hy-iutil.cpp:416
+ #, c-format
+ msgid "Failed setting perms on %1$s: %2$s"
+ msgstr "%1$s: %2$s에 perms 설정 실패하였습니다"
+ 
+-#: libdnf/hy-iutil.cpp:380
++#: libdnf/hy-iutil.cpp:462
+ #, c-format
+ msgid "cannot create directory %1$s: %2$s"
+ msgstr "디렉토리를 생성 할 수 없습니다 %1$s: %2$s"
+ 
+-#: libdnf/hy-iutil.cpp:415
++#: libdnf/hy-iutil.cpp:497
+ #, c-format
+ msgid "cannot stat path %1$s: %2$s"
+ msgstr "경로 %1$s: %2$s stat 할 수 없습니다"
+@@ -829,7 +895,9 @@ msgstr "'%s'에서 모듈식 Fail Safe 자료를 제거 할 수 없습니다"
+ msgid ""
+ "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is "
+ "disabled"
+-msgstr "'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 되어 있기 때문에)"
++msgstr ""
++"'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 "
++"되어 있기 때문에)"
+ 
+ #: libdnf/module/modulemd/ModuleMetadata.cpp:86
+ #, c-format
+@@ -902,8 +970,9 @@ msgid ""
+ "deprecated and the support will be dropped in future versions. Use '=' "
+ "operator instead."
+ msgstr ""
+-"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 연산자는 더 이상 사용되지 않으며, 향후 "
+-"버전에서는 지원이 중단됩니다. 대신 '=' 연산자를 사용하세요."
++"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 "
++"연산자는 더 이상 사용되지 않으며, 향후 버전에서는 지원이 중단됩니다. 대신 "
++"'=' 연산자를 사용하세요."
+ 
+ #: libdnf/repo/Repo.cpp:321
+ #, c-format
+@@ -923,14 +992,17 @@ msgstr "repo '%s': 'basecachedir가 구성되어 있지 않습니다"
+ 
+ #: libdnf/repo/Repo.cpp:512
+ msgid ""
+-"Maximum download speed is lower than minimum. Please change configuration of"
+-" minrate or throttle"
+-msgstr "최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주세요"
++"Maximum download speed is lower than minimum. Please change configuration of "
++"minrate or throttle"
++msgstr ""
++"최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주"
++"세요"
+ 
+ #: libdnf/repo/Repo.cpp:546
+ #, c-format
+ msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
+-msgstr "repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다"
++msgstr ""
++"repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다"
+ 
+ #: libdnf/repo/Repo.cpp:548
+ msgid "'proxy_username' is set but not 'proxy_password'"
+@@ -951,8 +1023,8 @@ msgstr "%s: gpgme_data_new_from_fd(): %s"
+ msgid "%s: gpgme_op_import(): %s"
+ msgstr "%s: gpgme_op_import(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162
+-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279
++#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236
++#: libdnf/repo/Repo.cpp:1279
+ #, c-format
+ msgid "Cannot create repo temporary directory \"%s\": %s"
+ msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s"
+@@ -1030,7 +1102,7 @@ msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s"
+ #: libdnf/repo/Repo.cpp:1316
+ #, c-format
+ msgid "Cannot rename directory \"%s\" to \"%s\": %s"
+-msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s"
++msgstr "디렉토리 \"%s\"를 \"%s\": %s로 변경 할 수 없음"
+ 
+ #: libdnf/repo/Repo.cpp:1339
+ #, c-format
+@@ -1094,17 +1166,18 @@ msgstr "진행 중이 아님"
+ msgid "No transaction in progress"
+ msgstr "진행 중인 연결 없음"
+ 
+-#: libdnf/transaction/TransactionItem.cpp:147
++#: libdnf/transaction/TransactionItem.cpp:146
+ msgid "Attempt to insert transaction item into completed transaction"
+ msgstr "연결 항목을 완료된 연결에 삽입하려고 시도했습니다"
+ 
+-#: libdnf/transaction/TransactionItem.cpp:218
++#: libdnf/transaction/TransactionItem.cpp:217
+ msgid "Attempt to update transaction item in completed transaction"
+ msgstr "완료된 연결에서 연결 항목 최신화를 시도합니다"
+ 
+ #: libdnf/transaction/Transformer.cpp:76
+ msgid "Database Corrupted: no row 'version' in table 'config'"
+-msgstr "데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다"
++msgstr ""
++"데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다"
+ 
+ #: libdnf/transaction/Transformer.cpp:681
+ msgid "Transformer: can't open history persist dir"
+@@ -1127,8 +1200,20 @@ msgstr "TransactionItem 상태가 설정되지 않았습니다. %s"
+ msgid "Can't add console output to unsaved transaction"
+ msgstr "저장되지 않은 연결에 콘솔 출력을 추가 할 수 없습니다"
+ 
+-#~ msgid "Failed to parse module artifact NEVRA '%s'"
+-#~ msgstr "모듈 artifact NERVRA '%s'를 구문 분석하는데 실패하였습니다"
++#~ msgid "failed to add solv"
++#~ msgstr "solv를 추가하지 못했습니다"
+ 
+-#~ msgid "failed calculating RPMDB checksum"
+-#~ msgstr "RPMDB 체크섬 계산 실패"
++#~ msgid "write_main() failed writing data: %i"
++#~ msgstr "write_main() 실패한 쓰기 자료: %i"
++
++#~ msgid "write_main() failed to re-load written solv file"
++#~ msgstr "write_main ()이 작성된 solv 파일을 다시 적재하지 못했습니다"
++
++#~ msgid "write_ext(%1$d) has failed: %2$d"
++#~ msgstr "write_ext(%1$d) 실패하였습니다: %2$d"
++
++#~ msgid "repo_add_repomdxml/rpmmd() has failed."
++#~ msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다."
++
++#~ msgid "Failed to parse module artifact NEVRA '%s'"
++#~ msgstr "모듈 artifact NERVE '%s' 구분 분석에 실패함"
+diff --git a/po/libdnf.pot b/po/libdnf.pot
+index 4ae537cd..dafae9c7 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: 2022-01-12 01:51+0000\n"
++"POT-Creation-Date: 2022-08-30 14:53+0200\n"
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL@li.org>\n"
+@@ -105,122 +105,122 @@ msgstr ""
+ msgid "GetValue(): Value not set"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188
+ #, c-format
+ msgid "Cannot enable more streams from module '%s' at the same time"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214
++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215
+ #, c-format
+ msgid ""
+ "Cannot enable module '%1$s' stream '%2$s': State of module already modified"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3263
++#: libdnf/dnf-context.cpp:3264
+ #, c-format
+ msgid "Modular dependency problem with Defaults: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3266
++#: libdnf/dnf-context.cpp:3267
+ #, c-format
+ msgid "Modular dependency problem with the latest modules: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3270
++#: libdnf/dnf-context.cpp:3271
+ #, c-format
+ msgid "Modular dependency problem: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
+-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
+-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
+-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318
++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368
++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416
++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475
+ #, c-format
+ msgid "Unable to resolve argument '%s'"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3300
++#: libdnf/dnf-context.cpp:3301
+ #, c-format
+ msgid ""
+ "Only module name is required. Ignoring unneeded information in argument: '%s'"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3314
++#: libdnf/dnf-context.cpp:3315
+ #, c-format
+ msgid "Cannot reset module '%s': State of module already modified"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3325
++#: libdnf/dnf-context.cpp:3326
+ #, c-format
+ msgid "Cannot disable module '%s': State of module already modified"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452
+-#: libdnf/dnf-context.cpp:3633
++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453
++#: libdnf/dnf-context.cpp:3634
+ msgid "No modular data available"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3373
++#: libdnf/dnf-context.cpp:3374
+ #, c-format
+ msgid "Ignoring unneeded information in argument: '%s'"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3411
++#: libdnf/dnf-context.cpp:3412
+ #, c-format
+ msgid ""
+ "Problem during enablement of dependency tree for module '%1$s' stream "
+ "'%2$s': %3$s"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3423
++#: libdnf/dnf-context.cpp:3424
+ msgid "Problems appeared for module enable request:"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3518
++#: libdnf/dnf-context.cpp:3519
+ #, c-format
+ msgid "No active module packages found for module spec '%s'"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3523
++#: libdnf/dnf-context.cpp:3524
+ #, c-format
+ msgid "Cannot install module '%s' from fail-safe repository"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3530
++#: libdnf/dnf-context.cpp:3531
+ #, c-format
+ msgid "No profile found matching '%s'"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3584
++#: libdnf/dnf-context.cpp:3585
+ #, c-format
+ msgid "No match for package '%s' for module spec %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3595
++#: libdnf/dnf-context.cpp:3596
+ #, c-format
+ msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3604
++#: libdnf/dnf-context.cpp:3605
+ msgid "Problems appeared for module install request:"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3663
++#: libdnf/dnf-context.cpp:3664
+ msgid "Problems appeared for module reset request:"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724
+ msgid "Problems appeared for module disable request:"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3755
++#: libdnf/dnf-context.cpp:3756
+ #, c-format
+ msgid ""
+ "The operation would result in switching of module '%s' stream '%s' to stream "
+ "'%s'"
+ msgstr ""
+ 
+-#: libdnf/dnf-context.cpp:3759
++#: libdnf/dnf-context.cpp:3760
+ 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 "
+@@ -309,84 +309,123 @@ msgstr ""
+ msgid "could not add erase element %1$s(%2$i)"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:395
+-msgid "failed to add solv"
++#: libdnf/dnf-sack.cpp:251
++msgid "repo_add_solv() has failed."
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:414
++#: libdnf/dnf-sack.cpp:415
++#, c-format
++msgid "Loading extension cache %s (%d) failed: "
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:429
+ #, c-format
+ msgid "no %1$s string for %2$s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:424
++#: libdnf/dnf-sack.cpp:439
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:503
++#: libdnf/dnf-sack.cpp:518
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:513
++#: libdnf/dnf-sack.cpp:528
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:525
++#: libdnf/dnf-sack.cpp:550
++#, c-format
++msgid "While writing primary cache %s repowriter write failed: %i, error: %s"
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:560
++#, c-format
++msgid "Failed closing tmp file %s: %s"
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:570
+ #, c-format
+-msgid "write_main() failed writing data: %i"
++msgid "Failed to use newly written primary cache: %s: "
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:542
+-msgid "write_main() failed to re-load written solv file"
++#: libdnf/dnf-sack.cpp:576
++#, c-format
++msgid "Failed to use newly written primary cache: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:607
++#: libdnf/dnf-sack.cpp:626
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:625
++#: libdnf/dnf-sack.cpp:666
++#, c-format
++msgid ""
++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s"
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:676
++#, c-format
++msgid "While writing extension cache (%d): cannot close temporary file: %s"
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:692
+ #, c-format
+-msgid "write_ext(%1$d) has failed: %2$d"
++msgid "Failed to use newly written extension cache: %s (%d): "
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:680
++#: libdnf/dnf-sack.cpp:699
++#, c-format
++msgid "Failed to use newly written extension cache: %s (%d)"
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:740
+ msgid "null repo md file"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:689
++#: libdnf/dnf-sack.cpp:749
+ #, c-format
+ msgid "can not read file %1$s: %2$s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:703
+-msgid "repo_add_solv() has failed."
++#: libdnf/dnf-sack.cpp:764
++#, c-format
++msgid "While loading repository failed to use %s: "
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:716
++#: libdnf/dnf-sack.cpp:775
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:729
+-msgid "repo_add_repomdxml/rpmmd() has failed."
++#: libdnf/dnf-sack.cpp:787
++#, c-format
++msgid "Loading repomd has failed: %s"
++msgstr ""
++
++#: libdnf/dnf-sack.cpp:798
++#, c-format
++msgid "Loading primary has failed: %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:796
++#: libdnf/dnf-sack.cpp:864
+ msgid "failed to auto-detect architecture"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:961
++#: libdnf/dnf-sack.cpp:1029
+ #, c-format
+ msgid "failed creating cachedir %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:1738
++#: libdnf/dnf-sack.cpp:1806
+ msgid "failed loading RPMDB"
+ msgstr ""
+ 
+-#: libdnf/dnf-sack.cpp:2522
++#: libdnf/dnf-sack.cpp:2590
+ #, c-format
+ msgid "No module defaults found: %s"
+ msgstr ""
+@@ -415,69 +454,78 @@ msgstr ""
+ msgid "already at 100%% state [%s]"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:300
++#: libdnf/dnf-transaction.cpp:302
+ #, c-format
+ msgid "Sources not set when trying to ensure package %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:326
++#: libdnf/dnf-transaction.cpp:328
+ #, c-format
+ msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:367
++#: libdnf/dnf-transaction.cpp:369
+ msgid "Failed to check untrusted: "
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:377
++#: libdnf/dnf-transaction.cpp:379
+ #, c-format
+ msgid "Downloaded file for %s not found"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:397
++#: libdnf/dnf-transaction.cpp:399
+ #, c-format
+ msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
+ msgid "Failed to get value for CacheDir"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:911
++#: libdnf/dnf-transaction.cpp:913
+ #, c-format
+ msgid "Failed to get filesystem free size for %s: "
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:919
++#: libdnf/dnf-transaction.cpp:921
+ #, c-format
+ msgid "Failed to get filesystem free size for %s"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:935
++#: libdnf/dnf-transaction.cpp:937
+ #, c-format
+ msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:1195
++#: libdnf/dnf-transaction.cpp:1196
+ msgid "failed to set root"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:1416
++#: libdnf/dnf-transaction.cpp:1417
+ #, c-format
+ msgid "Error %i running transaction test"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:1456
++#: libdnf/dnf-transaction.cpp:1441
++#, c-format
++msgid "Error %i opening rpm database"
++msgstr ""
++
++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
++msgid "The rpmdbCookie() function did not return cookie of rpm database."
++msgstr ""
++
++#: libdnf/dnf-transaction.cpp:1464
+ #, c-format
+ msgid "Error %i running transaction"
+ msgstr ""
+ 
+-#: libdnf/dnf-transaction.cpp:1472
++#: libdnf/dnf-transaction.cpp:1480
+ #, c-format
+ msgid "Transaction did not go to writing phase, but returned no error(%i)"
+ msgstr ""
+ 
+-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403
++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485
+ #, c-format
+ msgid "cannot open directory %1$s: %2$s"
+ msgstr ""
+@@ -678,62 +726,67 @@ msgstr ""
+ msgid "both module %s and %s obsolete %s"
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1141
++#: libdnf/goal/Goal.cpp:1157
+ msgid "no solver set"
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1146
++#: libdnf/goal/Goal.cpp:1162
+ #, c-format
+ msgid "failed to make %s absolute"
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1153
++#: libdnf/goal/Goal.cpp:1169
+ #, c-format
+ msgid "failed writing debugdata to %1$s: %2$s"
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1165
++#: libdnf/goal/Goal.cpp:1181
+ msgid "no solv in the goal"
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1167
++#: libdnf/goal/Goal.cpp:1183
+ msgid "no solution, cannot remove protected package"
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1170
++#: libdnf/goal/Goal.cpp:1186
+ msgid "no solution possible"
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1296
++#: libdnf/goal/Goal.cpp:1312
+ msgid "Problem: "
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1301
++#: libdnf/goal/Goal.cpp:1317
+ #, c-format
+ msgid "Problem %d: "
+ msgstr ""
+ 
+-#: libdnf/goal/Goal.cpp:1634
++#: libdnf/goal/Goal.cpp:1650
+ msgid ""
+ "The operation would result in removing the following protected packages: "
+ msgstr ""
+ 
+-#: libdnf/hy-iutil.cpp:326
++#: libdnf/hy-iutil.cpp:181
++#, c-format
++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu"
++msgstr ""
++
++#: libdnf/hy-iutil.cpp:408
+ #, c-format
+ msgid "Failed renaming %1$s to %2$s: %3$s"
+ msgstr ""
+ 
+-#: libdnf/hy-iutil.cpp:334
++#: libdnf/hy-iutil.cpp:416
+ #, c-format
+ msgid "Failed setting perms on %1$s: %2$s"
+ msgstr ""
+ 
+-#: libdnf/hy-iutil.cpp:380
++#: libdnf/hy-iutil.cpp:462
+ #, c-format
+ msgid "cannot create directory %1$s: %2$s"
+ msgstr ""
+ 
+-#: libdnf/hy-iutil.cpp:415
++#: libdnf/hy-iutil.cpp:497
+ #, c-format
+ msgid "cannot stat path %1$s: %2$s"
+ msgstr ""
+@@ -1092,11 +1145,11 @@ msgstr ""
+ msgid "No transaction in progress"
+ msgstr ""
+ 
+-#: libdnf/transaction/TransactionItem.cpp:147
++#: libdnf/transaction/TransactionItem.cpp:146
+ msgid "Attempt to insert transaction item into completed transaction"
+ msgstr ""
+ 
+-#: libdnf/transaction/TransactionItem.cpp:218
++#: libdnf/transaction/TransactionItem.cpp:217
+ msgid "Attempt to update transaction item in completed transaction"
+ msgstr ""
+ 
+diff --git a/po/zh_CN.po b/po/zh_CN.po
+index 787086b5..d931ab2e 100644
+--- a/po/zh_CN.po
++++ b/po/zh_CN.po
+@@ -1,21 +1,22 @@
+ # Charles Lee <lchopn@gmail.com>, 2017. #zanata, 2020, 2021.
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2021.
+-# Qiyu Yan <yanqiyu01@gmail.com>, 2021.
+-# Sundeep Anand <suanand@redhat.com>, 2021.
++# Sundeep Anand <suanand@redhat.com>, 2021, 2022.
++# Transtats <suanand@redhat.com>, 2022.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2022-01-05 01:53+0000\n"
+-"PO-Revision-Date: 2021-09-11 10:04+0000\n"
+-"Last-Translator: Ludek Janda <ljanda@redhat.com>\n"
+-"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/zh_CN/>\n"
++"POT-Creation-Date: 2022-08-30 14:53+0200\n"
++"PO-Revision-Date: 2022-09-06 07:19+0000\n"
++"Last-Translator: Transtats <suanand@redhat.com>\n"
++"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/"
++"projects/dnf/libdnf-rhel-9/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.8\n"
++"X-Generator: Weblate 4.14\n"
+ 
+ #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
+ msgid "no value specified"
+@@ -104,130 +105,131 @@ msgstr "无法把 '%s' 转换为秒"
+ msgid "GetValue(): Value not set"
+ msgstr "GetValue(): 值没有设置"
+ 
+-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
++#: libdnf/dnf-context.cpp:3179 libdnf/dnf-context.cpp:3188
+ #, c-format
+ msgid "Cannot enable more streams from module '%s' at the same time"
+ msgstr "无法同时从模块 '%s' 中启用更多流"
+ 
+-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214
++#: libdnf/dnf-context.cpp:3197 libdnf/dnf-context.cpp:3215
+ #, 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:3263
++#: libdnf/dnf-context.cpp:3264
+ #, c-format
+ msgid "Modular dependency problem with Defaults: %s"
+ msgstr "默认设置的模块依赖性问题:%s"
+ 
+-#: libdnf/dnf-context.cpp:3266
++#: libdnf/dnf-context.cpp:3267
+ #, c-format
+ msgid "Modular dependency problem with the latest modules: %s"
+ msgstr "最新模块的模块化依赖关系问题: %s"
+ 
+-#: libdnf/dnf-context.cpp:3270
++#: libdnf/dnf-context.cpp:3271
+ #, c-format
+ msgid "Modular dependency problem: %s"
+ msgstr "模块依赖问题:%s"
+ 
+-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
+-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
+-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
+-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
++#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318
++#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368
++#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416
++#: libdnf/dnf-context.cpp:3465 libdnf/dnf-context.cpp:3475
+ #, c-format
+ msgid "Unable to resolve argument '%s'"
+ msgstr "无法解析参数 '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3300
++#: libdnf/dnf-context.cpp:3301
+ #, c-format
+ msgid ""
+-"Only module name is required. Ignoring unneeded information in argument: "
+-"'%s'"
++"Only module name is required. Ignoring unneeded information in argument: '%s'"
+ msgstr "只需要模块名。忽略参数 '%s' 中的无用信息"
+ 
+-#: libdnf/dnf-context.cpp:3314
++#: libdnf/dnf-context.cpp:3315
+ #, c-format
+ msgid "Cannot reset module '%s': State of module already modified"
+ msgstr "无法重置模块 '%s':已修改的模块状态"
+ 
+-#: libdnf/dnf-context.cpp:3325
++#: libdnf/dnf-context.cpp:3326
+ #, c-format
+ msgid "Cannot disable module '%s': State of module already modified"
+ msgstr "无法禁用模块 '%s':已经修改的模块状态"
+ 
+-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452
+-#: libdnf/dnf-context.cpp:3633
++#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3453
++#: libdnf/dnf-context.cpp:3634
+ msgid "No modular data available"
+ msgstr "没有可用的模块数据"
+ 
+-#: libdnf/dnf-context.cpp:3373
++#: libdnf/dnf-context.cpp:3374
+ #, c-format
+ msgid "Ignoring unneeded information in argument: '%s'"
+-msgstr "忽略参数:\"%s\" 中不需要的信息"
++msgstr "忽略参数中不需要的信息:'%s'"
+ 
+-#: libdnf/dnf-context.cpp:3411
++#: libdnf/dnf-context.cpp:3412
+ #, c-format
+ msgid ""
+ "Problem during enablement of dependency tree for module '%1$s' stream "
+ "'%2$s': %3$s"
+ msgstr "为模块 '%1$s' 流 '%2$s' 启用依赖树时出现问题: %3$s"
+ 
+-#: libdnf/dnf-context.cpp:3423
++#: libdnf/dnf-context.cpp:3424
+ msgid "Problems appeared for module enable request:"
+-msgstr ""
++msgstr "模块启用请求出现问题:"
+ 
+-#: libdnf/dnf-context.cpp:3518
++#: libdnf/dnf-context.cpp:3519
+ #, c-format
+ msgid "No active module packages found for module spec '%s'"
+-msgstr ""
++msgstr "未找到模块规范 '%s' 的活动模块包"
+ 
+-#: libdnf/dnf-context.cpp:3523
+-#, fuzzy, c-format
+-#| msgid "cannot install both modules %s and %s"
++#: libdnf/dnf-context.cpp:3524
++#, c-format
+ msgid "Cannot install module '%s' from fail-safe repository"
+-msgstr "无法同时安装模块 %s 和 %s"
++msgstr "无法从故障保护存储库安装模块 '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3530
++#: libdnf/dnf-context.cpp:3531
+ #, c-format
+ msgid "No profile found matching '%s'"
+-msgstr ""
++msgstr "未找到匹配 '%s' 的配置文件"
+ 
+-#: libdnf/dnf-context.cpp:3584
++#: libdnf/dnf-context.cpp:3585
+ #, c-format
+ msgid "No match for package '%s' for module spec %s"
+-msgstr ""
++msgstr "没有匹配模块规范 %s 的包 '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3595
++#: libdnf/dnf-context.cpp:3596
+ #, c-format
+ msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
+-msgstr ""
++msgstr "在安装模块 '%1$s' 流 '%2$s'时的问题:%3$s"
+ 
+-#: libdnf/dnf-context.cpp:3604
++#: libdnf/dnf-context.cpp:3605
+ msgid "Problems appeared for module install request:"
+-msgstr ""
++msgstr "模块安装请求出现问题:"
+ 
+-#: libdnf/dnf-context.cpp:3663
++#: libdnf/dnf-context.cpp:3664
+ msgid "Problems appeared for module reset request:"
+-msgstr ""
++msgstr "模块重置请求出现问题:"
+ 
+-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
++#: libdnf/dnf-context.cpp:3665 libdnf/dnf-context.cpp:3724
+ msgid "Problems appeared for module disable request:"
+-msgstr ""
++msgstr "模块禁用请求出现问题:"
+ 
+-#: libdnf/dnf-context.cpp:3755
++#: libdnf/dnf-context.cpp:3756
+ #, c-format
+ msgid ""
+-"The operation would result in switching of module '%s' stream '%s' to stream"
+-" '%s'"
++"The operation would result in switching of module '%s' stream '%s' to stream "
++"'%s'"
+ msgstr "这个操作会把模块 '%s' 从流 '%s' 切换到流 '%s'"
+ 
+-#: libdnf/dnf-context.cpp:3759
++#: libdnf/dnf-context.cpp:3760
+ 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."
++"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>' 命令重置模块。在重置模块后就可以安装其他流。"
++"推荐从模块中删除所有已安装的内容,使用 'microdnf module reset <module_name>' "
++"命令重置模块。在重置模块后就可以安装其他流。"
+ 
+ #: libdnf/dnf-goal.cpp:107
+ msgid "Could not depsolve transaction; "
+@@ -309,84 +311,123 @@ msgstr "无法找到软件包 %s"
+ msgid "could not add erase element %1$s(%2$i)"
+ msgstr "无法添加删除元素 %1$s(%2$i)"
+ 
+-#: libdnf/dnf-sack.cpp:395
+-msgid "failed to add solv"
+-msgstr "添加 solv 失败"
++#: libdnf/dnf-sack.cpp:251
++msgid "repo_add_solv() has failed."
++msgstr "repo_add_solv() 已失败。"
++
++#: libdnf/dnf-sack.cpp:415
++#, c-format
++msgid "Loading extension cache %s (%d) failed: "
++msgstr "加载扩展缓存 %s (%d) 失败: "
+ 
+-#: libdnf/dnf-sack.cpp:414
++#: libdnf/dnf-sack.cpp:429
+ #, c-format
+ msgid "no %1$s string for %2$s"
+-msgstr "没有为 %2$s 的 %1$s 字符串"
++msgstr "没有 %2$s 的 %1$s 字符串"
+ 
+-#: libdnf/dnf-sack.cpp:424
++#: libdnf/dnf-sack.cpp:439
+ #, c-format
+ msgid "failed to open: %s"
+ msgstr "打开失败:%s"
+ 
+-#: libdnf/dnf-sack.cpp:503
++#: libdnf/dnf-sack.cpp:518
+ #, c-format
+ msgid "cannot create temporary file: %s"
+ msgstr "不能创建临时文件: %s"
+ 
+-#: libdnf/dnf-sack.cpp:513
++#: libdnf/dnf-sack.cpp:528
+ #, c-format
+ msgid "failed opening tmp file: %s"
+ msgstr "打开 tmp 文件失败: %s"
+ 
+-#: libdnf/dnf-sack.cpp:525
++#: libdnf/dnf-sack.cpp:550
+ #, c-format
+-msgid "write_main() failed writing data: %i"
+-msgstr "write_main() 写数据失败: %i"
++msgid "While writing primary cache %s repowriter write failed: %i, error: %s"
++msgstr "写主缓存 %s 时 repowriter 写失败:%i 错误:%s"
+ 
+-#: libdnf/dnf-sack.cpp:542
+-msgid "write_main() failed to re-load written solv file"
+-msgstr "write_main() 重新加载写的 solv 文件失败"
++#: libdnf/dnf-sack.cpp:560
++#, c-format
++msgid "Failed closing tmp file %s: %s"
++msgstr "关闭临时文件 %s 失败:%s"
++
++#: libdnf/dnf-sack.cpp:570
++#, c-format
++msgid "Failed to use newly written primary cache: %s: "
++msgstr "使用新写的主缓存失败:%s: "
+ 
+-#: libdnf/dnf-sack.cpp:607
++#: libdnf/dnf-sack.cpp:576
++#, c-format
++msgid "Failed to use newly written primary cache: %s"
++msgstr "使用新写的主缓存失败:%s"
++
++#: libdnf/dnf-sack.cpp:626
+ #, c-format
+ msgid "can not create temporary file %s"
+ msgstr "不能创建临时文件 %s"
+ 
+-#: libdnf/dnf-sack.cpp:625
++#: libdnf/dnf-sack.cpp:666
++#, c-format
++msgid ""
++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s"
++msgstr "编写扩展缓存 %s (%d) 时: repowriter 写失败: %i,错误: %s"
++
++#: libdnf/dnf-sack.cpp:676
+ #, c-format
+-msgid "write_ext(%1$d) has failed: %2$d"
+-msgstr "write_ext(%1$d) 已失败: %2$d"
++msgid "While writing extension cache (%d): cannot close temporary file: %s"
++msgstr "编写扩展缓存 (%d) 时:无法关闭临时文件:%s"
+ 
+-#: libdnf/dnf-sack.cpp:680
++#: libdnf/dnf-sack.cpp:692
++#, c-format
++msgid "Failed to use newly written extension cache: %s (%d): "
++msgstr "使用新写的扩展缓存失败:%s (%d): "
++
++#: libdnf/dnf-sack.cpp:699
++#, c-format
++msgid "Failed to use newly written extension cache: %s (%d)"
++msgstr "使用新写的扩展缓存失败:%s (%d)"
++
++#: libdnf/dnf-sack.cpp:740
+ msgid "null repo md file"
+-msgstr "null repo md 文件"
++msgstr "null 存储库 md 文件"
+ 
+-#: libdnf/dnf-sack.cpp:689
++#: libdnf/dnf-sack.cpp:749
+ #, c-format
+ msgid "can not read file %1$s: %2$s"
+ msgstr "不能读文件 %1$s: %2$s"
+ 
+-#: libdnf/dnf-sack.cpp:703
+-msgid "repo_add_solv() has failed."
+-msgstr "repo_add_solv() 已失败。"
++#: libdnf/dnf-sack.cpp:764
++#, c-format
++msgid "While loading repository failed to use %s: "
++msgstr "加载软件仓库时使用 %s 失败: "
+ 
+-#: libdnf/dnf-sack.cpp:716
++#: libdnf/dnf-sack.cpp:775
+ msgid "loading of MD_TYPE_PRIMARY has failed."
+ msgstr "加载 MD_TYPE_PRIMARY 失败。"
+ 
+-#: libdnf/dnf-sack.cpp:729
+-msgid "repo_add_repomdxml/rpmmd() has failed."
+-msgstr "repo_add_repomdxml/rpmmd() 已失败。"
++#: libdnf/dnf-sack.cpp:787
++#, c-format
++msgid "Loading repomd has failed: %s"
++msgstr "加载 repomd 失败:%s"
+ 
+-#: libdnf/dnf-sack.cpp:796
++#: libdnf/dnf-sack.cpp:798
++#, c-format
++msgid "Loading primary has failed: %s"
++msgstr "加载主设备失败:%s"
++
++#: libdnf/dnf-sack.cpp:864
+ msgid "failed to auto-detect architecture"
+ msgstr "自动检测架构失败"
+ 
+-#: libdnf/dnf-sack.cpp:961
++#: libdnf/dnf-sack.cpp:1029
+ #, c-format
+ msgid "failed creating cachedir %s"
+ msgstr "无法创建 cachedir %s"
+ 
+-#: libdnf/dnf-sack.cpp:1738
++#: libdnf/dnf-sack.cpp:1806
+ msgid "failed loading RPMDB"
+ msgstr "无法加载 RPMDB"
+ 
+-#: libdnf/dnf-sack.cpp:2522
++#: libdnf/dnf-sack.cpp:2590
+ #, c-format
+ msgid "No module defaults found: %s"
+ msgstr "没有找到模块默认设置:%s"
+@@ -415,69 +456,78 @@ msgstr "在一个没有设置大小的状态 %1$p 中做! [%2$s]"
+ msgid "already at 100%% state [%s]"
+ msgstr "已是 100%% 状态 [%s]"
+ 
+-#: libdnf/dnf-transaction.cpp:300
++#: libdnf/dnf-transaction.cpp:302
+ #, c-format
+ msgid "Sources not set when trying to ensure package %s"
+ msgstr "在尝试确保软件包 %s 时源没有设置"
+ 
+-#: libdnf/dnf-transaction.cpp:326
++#: libdnf/dnf-transaction.cpp:328
+ #, 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 已加载)"
++msgstr "无法确保 %1$s,因为存储库 %2$s 没有找到 (%3$i 存储库已加载)"
+ 
+-#: libdnf/dnf-transaction.cpp:367
++#: libdnf/dnf-transaction.cpp:369
+ msgid "Failed to check untrusted: "
+ msgstr "检查不被信任失败 : "
+ 
+-#: libdnf/dnf-transaction.cpp:377
++#: libdnf/dnf-transaction.cpp:379
+ #, c-format
+ msgid "Downloaded file for %s not found"
+ msgstr "没有找到下载的文件 %s"
+ 
+-#: libdnf/dnf-transaction.cpp:397
++#: libdnf/dnf-transaction.cpp:399
+ #, 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"
++msgstr "软件包 %1$s 不能被验证,存储库 %2$s 启用了 GPG: %3$s"
+ 
+-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
+ msgid "Failed to get value for CacheDir"
+ msgstr "无法为 CacheDir 获得值"
+ 
+-#: libdnf/dnf-transaction.cpp:911
++#: libdnf/dnf-transaction.cpp:913
+ #, c-format
+ msgid "Failed to get filesystem free size for %s: "
+ msgstr "无法为 %s 获得文件系统可用空间的大小: "
+ 
+-#: libdnf/dnf-transaction.cpp:919
++#: libdnf/dnf-transaction.cpp:921
+ #, c-format
+ msgid "Failed to get filesystem free size for %s"
+ msgstr "无法为 %s 获得文件系统可用空间的大小"
+ 
+-#: libdnf/dnf-transaction.cpp:935
++#: libdnf/dnf-transaction.cpp:937
+ #, c-format
+ msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
+ msgstr "%1$s 没有足够的空闲空间: 需要 %2$s,可用 %3$s"
+ 
+-#: libdnf/dnf-transaction.cpp:1195
++#: libdnf/dnf-transaction.cpp:1196
+ msgid "failed to set root"
+ msgstr "设置 root 失败"
+ 
+-#: libdnf/dnf-transaction.cpp:1416
++#: libdnf/dnf-transaction.cpp:1417
+ #, c-format
+ msgid "Error %i running transaction test"
+-msgstr "错误 %i 运行事务测试"
++msgstr "运行事务测试时错误 %i"
++
++#: libdnf/dnf-transaction.cpp:1441
++#, c-format
++msgid "Error %i opening rpm database"
++msgstr "打开 rpm 数据库时错误 %i"
++
++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
++msgid "The rpmdbCookie() function did not return cookie of rpm database."
++msgstr "rpmdbCookie()函数没有返回 rpm 数据库的 cookie。"
+ 
+-#: libdnf/dnf-transaction.cpp:1456
++#: libdnf/dnf-transaction.cpp:1464
+ #, c-format
+ msgid "Error %i running transaction"
+-msgstr "错误 %i 运行事务"
++msgstr "运行事务时错误 %i"
+ 
+-#: libdnf/dnf-transaction.cpp:1472
++#: libdnf/dnf-transaction.cpp:1480
+ #, c-format
+ msgid "Transaction did not go to writing phase, but returned no error(%i)"
+ msgstr "事务没有进入写阶段,但没有返回错误(%i)"
+ 
+-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403
++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485
+ #, c-format
+ msgid "cannot open directory %1$s: %2$s"
+ msgstr "无法打开目录 %1$s: %2$s"
+@@ -563,7 +613,7 @@ msgstr "软件包 %s 被排除过滤过滤掉"
+ #: libdnf/goal/Goal.cpp:105
+ #, c-format
+ msgid "nothing provides %s needed by %s"
+-msgstr "没有东西可提供 %s(%s 需要)"
++msgstr "没有提供 %s 所需要的 %s"
+ 
+ #: libdnf/goal/Goal.cpp:106
+ #, c-format
+@@ -578,17 +628,17 @@ msgstr "软件包 %s 与 %s(由 %s 提供)冲突"
+ #: libdnf/goal/Goal.cpp:108
+ #, c-format
+ msgid "package %s obsoletes %s provided by %s"
+-msgstr "软件包 %s 取代了 %s(由 %s 提供)"
++msgstr "软件包 %s 淘汰了 %s 提供的 %s"
+ 
+ #: libdnf/goal/Goal.cpp:109
+ #, c-format
+ msgid "installed package %s obsoletes %s provided by %s"
+-msgstr "已安装的软件包 %s 取代了 %s(由 %s 提供)"
++msgstr "已安装的软件包 %s 淘汰了 %s 提供的 %s"
+ 
+ #: libdnf/goal/Goal.cpp:110
+ #, c-format
+ msgid "package %s implicitly obsoletes %s provided by %s"
+-msgstr "软件包 %s 隐式地取代了 %s(由 %s 提供)"
++msgstr "软件包 %s 隐式地淘汰了 %s 提供的 %s"
+ 
+ #: libdnf/goal/Goal.cpp:111
+ #, c-format
+@@ -636,37 +686,37 @@ msgstr "模块 %s 不可安装"
+ #: libdnf/goal/Goal.cpp:132
+ #, c-format
+ msgid "nothing provides %s needed by module %s"
+-msgstr "没有东西提供 %s(模块 %s 需要它)"
++msgstr "没有提供模块 %s 所需要的 %s"
+ 
+ #: libdnf/goal/Goal.cpp:133
+ #, c-format
+ msgid "cannot install both modules %s and %s"
+-msgstr "无法同时安装模块 %s 和 %s"
++msgstr "不能同时安装模块 %s 和 %s"
+ 
+ #: libdnf/goal/Goal.cpp:134
+ #, c-format
+ msgid "module %s conflicts with %s provided by %s"
+-msgstr "模块 %s 与 %s (由 %s 提供)冲突"
++msgstr "模块 %s 与 %s 提供的 %s 冲突"
+ 
+ #: libdnf/goal/Goal.cpp:135
+ #, c-format
+ msgid "module %s obsoletes %s provided by %s"
+-msgstr "模块 %s 取代了 %s(由 %s 提供)"
++msgstr "模块 %s 淘汰了 %s 提供的 %s"
+ 
+ #: libdnf/goal/Goal.cpp:136
+ #, c-format
+ msgid "installed module %s obsoletes %s provided by %s"
+-msgstr "已安装的模块 %s 取代了 %s(由 %s 提供)"
++msgstr "已安装的模块 %s 淘汰了 %s 提供的 %s"
+ 
+ #: libdnf/goal/Goal.cpp:137
+ #, c-format
+ msgid "module %s implicitly obsoletes %s provided by %s"
+-msgstr "模块 %s 隐式地取代了 %s(由 %s 提供)"
++msgstr "模块 %s 隐式地淘汰了 %s 提供的 %s"
+ 
+ #: libdnf/goal/Goal.cpp:138
+ #, c-format
+ msgid "module %s requires %s, but none of the providers can be installed"
+-msgstr "模块 %s 需要 %s,但没有提供者可以被安装"
++msgstr "模块 %s 需要 %s,但无法安装任何提供程序"
+ 
+ #: libdnf/goal/Goal.cpp:139
+ #, c-format
+@@ -678,62 +728,67 @@ msgstr "模块 %s 与自己提供的 %s 冲突"
+ msgid "both module %s and %s obsolete %s"
+ msgstr "模块 %s 和 %s 同时取代了 %s"
+ 
+-#: libdnf/goal/Goal.cpp:1141
++#: libdnf/goal/Goal.cpp:1157
+ msgid "no solver set"
+ msgstr "无 solver 设置"
+ 
+-#: libdnf/goal/Goal.cpp:1146
++#: libdnf/goal/Goal.cpp:1162
+ #, c-format
+ msgid "failed to make %s absolute"
+ msgstr "无法使 %s 绝对"
+ 
+-#: libdnf/goal/Goal.cpp:1153
++#: libdnf/goal/Goal.cpp:1169
+ #, c-format
+ msgid "failed writing debugdata to %1$s: %2$s"
+ msgstr "把 debugdata 写入到 %1$s 失败: %2$s"
+ 
+-#: libdnf/goal/Goal.cpp:1165
++#: libdnf/goal/Goal.cpp:1181
+ msgid "no solv in the goal"
+ msgstr "在目标中没有 solv"
+ 
+-#: libdnf/goal/Goal.cpp:1167
++#: libdnf/goal/Goal.cpp:1183
+ msgid "no solution, cannot remove protected package"
+ msgstr "没有解决方案,不能删除保护的软件包"
+ 
+-#: libdnf/goal/Goal.cpp:1170
++#: libdnf/goal/Goal.cpp:1186
+ msgid "no solution possible"
+ msgstr "没有可能的解决方案"
+ 
+-#: libdnf/goal/Goal.cpp:1296
++#: libdnf/goal/Goal.cpp:1312
+ msgid "Problem: "
+ msgstr "问题: "
+ 
+-#: libdnf/goal/Goal.cpp:1301
++#: libdnf/goal/Goal.cpp:1317
+ #, c-format
+ msgid "Problem %d: "
+ msgstr "问题 %d: "
+ 
+-#: libdnf/goal/Goal.cpp:1634
++#: libdnf/goal/Goal.cpp:1650
+ msgid ""
+ "The operation would result in removing the following protected packages: "
+ msgstr "这个操作将会导致删除以下受保护的软件包: "
+ 
+-#: libdnf/hy-iutil.cpp:326
++#: libdnf/hy-iutil.cpp:181
++#, c-format
++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu"
++msgstr "Libsolv 的 solv_toolversion 为: %zu,但我们预计最大为:%zu"
++
++#: libdnf/hy-iutil.cpp:408
+ #, c-format
+ msgid "Failed renaming %1$s to %2$s: %3$s"
+ msgstr "将 %1$s 重命名为 %2$s 失败: %3$s"
+ 
+-#: libdnf/hy-iutil.cpp:334
++#: libdnf/hy-iutil.cpp:416
+ #, c-format
+ msgid "Failed setting perms on %1$s: %2$s"
+ msgstr "在 %1$s 中设置 perms 失败: %2$s"
+ 
+-#: libdnf/hy-iutil.cpp:380
++#: libdnf/hy-iutil.cpp:462
+ #, c-format
+ msgid "cannot create directory %1$s: %2$s"
+ msgstr "无法创建目录 %1$s: %2$s"
+ 
+-#: libdnf/hy-iutil.cpp:415
++#: libdnf/hy-iutil.cpp:497
+ #, c-format
+ msgid "cannot stat path %1$s: %2$s"
+ msgstr "无法 stat 路径 %1$s: %2$s"
+@@ -773,7 +828,7 @@ msgstr "无法为模块 '%s' 启用多个流"
+ #: libdnf/module/ModulePackageContainer.cpp:346
+ #, c-format
+ msgid "Conflicting defaults with repo '%s': %s"
+-msgstr "默认设置与 repo '%s' 冲突 : %s"
++msgstr "默认设置与存储库 '%s' 冲突 : %s"
+ 
+ #: libdnf/module/ModulePackageContainer.cpp:917
+ msgid "Installing module profiles:\n"
+@@ -822,7 +877,7 @@ msgstr "无法把模块 Fail Safe 数据保存到 '%s'"
+ #: libdnf/module/ModulePackageContainer.cpp:1830
+ #, c-format
+ msgid "Unable to remove a modular Fail Safe data in '%s'"
+-msgstr "无法删除 '%s' 处的模块 Fail Safe 数据"
++msgstr "无法删除 '%s' 中的模块 Fail Safe 数据"
+ 
+ #: libdnf/module/ModulePackageContainer.cpp:1862
+ #, c-format
+@@ -902,8 +957,8 @@ msgid ""
+ "deprecated and the support will be dropped in future versions. Use '=' "
+ "operator instead."
+ msgstr ""
+-"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并且在未来的版本中会取消对它的支持。请使用 '=' "
+-"操作符代替。"
++"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并"
++"且在未来的版本中会取消对它的支持。请使用 '=' 操作符代替。"
+ 
+ #: libdnf/repo/Repo.cpp:321
+ #, c-format
+@@ -919,18 +974,18 @@ msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。"
+ #: libdnf/repo/Repo.cpp:1400
+ #, c-format
+ msgid "repo '%s': 'basecachedir' is not set"
+-msgstr "Repo '%s': 'basecachedir' 没有设置"
++msgstr "存储库 '%s': 'basecachedir' 没有设置"
+ 
+ #: libdnf/repo/Repo.cpp:512
+ msgid ""
+-"Maximum download speed is lower than minimum. Please change configuration of"
+-" minrate or throttle"
++"Maximum download speed is lower than minimum. Please change configuration of "
++"minrate or throttle"
+ msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置"
+ 
+ #: libdnf/repo/Repo.cpp:546
+ #, c-format
+ msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
+-msgstr "Repo '%s': 'proxy_username' 已被设置,但没有设置 'proxy_password'"
++msgstr "存储库 '%s': 'proxy_username' 已被设置,但没有设置 'proxy_password'"
+ 
+ #: libdnf/repo/Repo.cpp:548
+ msgid "'proxy_username' is set but not 'proxy_password'"
+@@ -939,7 +994,7 @@ msgstr "'proxy_username' 已被设置,但没有设置 'proxy_password'"
+ #: libdnf/repo/Repo.cpp:629
+ #, c-format
+ msgid "Cannot find a valid baseurl for repo: %s"
+-msgstr "无法为仓库 %s 找到一个有效的 baseurl"
++msgstr "无法为存储库找到一个有效的 baseurl:%s"
+ 
+ #: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682
+ #, c-format
+@@ -951,11 +1006,11 @@ msgstr "%s: gpgme_data_new_from_fd(): %s"
+ msgid "%s: gpgme_op_import(): %s"
+ msgstr "%s: gpgme_op_import(): %s"
+ 
+-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162
+-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279
++#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236
++#: libdnf/repo/Repo.cpp:1279
+ #, c-format
+ msgid "Cannot create repo temporary directory \"%s\": %s"
+-msgstr "无法创建 repo 临时目录 \"%s\": %s"
++msgstr "无法创建存储库临时目录 \"%s\": %s"
+ 
+ #: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917
+ #, c-format
+@@ -975,7 +1030,7 @@ msgstr "为仓库 '%s' 获取 GPG 密钥失败 : %s"
+ #: libdnf/repo/Repo.cpp:890
+ #, c-format
+ msgid "repo %s: 0x%s already imported"
+-msgstr "repo %s: 0x%s 已被导入"
++msgstr "存储库 %s: 0x%s 已被导入"
+ 
+ #: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79
+ #, c-format
+@@ -985,7 +1040,7 @@ msgstr "无法创建目录 \"%s\": %d - %s"
+ #: libdnf/repo/Repo.cpp:924
+ #, c-format
+ msgid "repo %s: imported key 0x%s."
+-msgstr "repo %s: 已导入密钥 0x%s。"
++msgstr "存储库 %s: 已导入密钥 0x%s。"
+ 
+ #: libdnf/repo/Repo.cpp:1176
+ #, c-format
+@@ -1035,17 +1090,17 @@ msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s"
+ #: libdnf/repo/Repo.cpp:1339
+ #, c-format
+ msgid "repo: using cache for: %s"
+-msgstr "仓库: 正在为 %s 使用缓存"
++msgstr "存储库:使用缓存用于:%s"
+ 
+ #: libdnf/repo/Repo.cpp:1351
+ #, c-format
+ msgid "Cache-only enabled but no cache for '%s'"
+-msgstr "仅使用缓存已开启但没有 '%s' 的缓存"
++msgstr "仅启用缓存,但没有 '%s' 的缓存"
+ 
+ #: libdnf/repo/Repo.cpp:1355
+ #, c-format
+ msgid "repo: downloading from remote: %s"
+-msgstr "repo: 从远程下载: %s"
++msgstr "存储库: 从远程下载: %s"
+ 
+ #: libdnf/repo/Repo.cpp:1362
+ #, c-format
+@@ -1094,11 +1149,11 @@ msgstr "没有在进行中"
+ msgid "No transaction in progress"
+ msgstr "没有事务在进行中"
+ 
+-#: libdnf/transaction/TransactionItem.cpp:147
++#: libdnf/transaction/TransactionItem.cpp:146
+ msgid "Attempt to insert transaction item into completed transaction"
+ msgstr "试图向已完成的事务中插入事务项"
+ 
+-#: libdnf/transaction/TransactionItem.cpp:218
++#: libdnf/transaction/TransactionItem.cpp:217
+ msgid "Attempt to update transaction item in completed transaction"
+ msgstr "试图在已完成的事务中更新事务"
+ 
+@@ -1108,7 +1163,7 @@ msgstr "数据库损坏:表 'config' 中没有 'version' 行"
+ 
+ #: libdnf/transaction/Transformer.cpp:681
+ msgid "Transformer: can't open history persist dir"
+-msgstr "Transformer: 无法打开 history persist dir"
++msgstr "转换程序: 无法打开历史持久目录"
+ 
+ #: libdnf/transaction/Transformer.cpp:694
+ msgid "Couldn't find a history database"
+@@ -1127,8 +1182,23 @@ msgstr "TransactionItem 状态没有设置:%s"
+ msgid "Can't add console output to unsaved transaction"
+ msgstr "无法向未保存的事务中添加控制台输出"
+ 
++#~ msgid "failed to add solv"
++#~ msgstr "添加 solv 失败"
++
++#~ msgid "write_main() failed writing data: %i"
++#~ msgstr "write_main() 写数据失败: %i"
++
++#~ msgid "write_main() failed to re-load written solv file"
++#~ msgstr "write_main() 重新加载写的 solv 文件失败"
++
++#~ msgid "write_ext(%1$d) has failed: %2$d"
++#~ msgstr "write_ext(%1$d) 已失败: %2$d"
++
++#~ msgid "repo_add_repomdxml/rpmmd() has failed."
++#~ msgstr "repo_add_repomdxml/rpmmd() 已失败。"
++
++#~ msgid "Failed to parse module artifact NEVRA '%s'"
++#~ msgstr "无法解析模块工件 NEVRA '%s'"
++
+ #~ 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.37.3
+
diff --git a/SOURCES/0003-Update-translations-RhBug-2017349.patch b/SOURCES/0003-Update-translations-RhBug-2017349.patch
deleted file mode 100644
index e25a182..0000000
--- a/SOURCES/0003-Update-translations-RhBug-2017349.patch
+++ /dev/null
@@ -1,4689 +0,0 @@
-From 8db854d225eebe0929a2fa9cdb003f0fa4847a3e Mon Sep 17 00:00:00 2001
-From: Marek Blaha <mblaha@redhat.com>
-Date: Mon, 21 Mar 2022 10:15:10 +0100
-Subject: [PATCH] Update translations (RhBug:2017349)
-
----
- po/fr.po      | 421 +++++++++++++++++++++-------------------
- po/ja.po      | 471 ++++++++++++++++++++++++++-------------------
- po/ko.po      | 407 ++++++++++++++++++++++-----------------
- po/libdnf.pot | 247 +++++++++++++-----------
- po/zh_CN.po   | 519 +++++++++++++++++++++++++++-----------------------
- 5 files changed, 1140 insertions(+), 925 deletions(-)
-
-diff --git a/po/fr.po b/po/fr.po
-index f89cdfa8..d0b10345 100644
---- a/po/fr.po
-+++ b/po/fr.po
-@@ -1,25 +1,27 @@
--# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2016. #zanata, 2021.
-+# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2016. #zanata
- # José Fournier <jaaf64@zoraldia.com>, 2016. #zanata
- # José Fournier <jaaf64@zoraldia.com>, 2017. #zanata
- # 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, 2021.
--# Julien Humbert <julroy67@gmail.com>, 2020, 2021.
--# Arnaud T. <listes.00@gmail.com>, 2020.
-+# Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2021.
-+# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata
-+# Julien Humbert <julroy67@gmail.com>, 2020.
-+# Sundeep Anand <suanand@redhat.com>, 2021, 2022.
-+# Titouan Bénard <itotutona@evta.fr>, 2021.
- msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2021-05-16 09:18-0400\n"
--"PO-Revision-Date: 2021-05-17 03:02+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: 2022-02-28 10:38+0100\n"
-+"PO-Revision-Date: 2022-03-02 10:16+0000\n"
-+"Last-Translator: Sundeep Anand <suanand@redhat.com>\n"
-+"Language-Team: French <https://translate.fedoraproject.org/projects/dnf/"
-+"libdnf-rhel-9/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.6.2\n"
-+"X-Generator: Weblate 4.11\n"
- 
- #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
- msgid "no value specified"
-@@ -51,9 +53,9 @@ msgstr "la valeur 1 n’est pas autorisée"
- 
- #: libdnf/conf/ConfigMain.cpp:209
- msgid "negative value is not allowed"
--msgstr "une valeur négative n’est pas autorisée"
-+msgstr "la valeur négative n'est pas autorisée"
- 
--#: libdnf/conf/ConfigMain.cpp:341
-+#: libdnf/conf/ConfigMain.cpp:343
- #, c-format
- msgid "percentage '%s' is out of range"
- msgstr "le pourcentage « %s » est en dehors des limites"
-@@ -108,140 +110,161 @@ msgstr "n’a pu convertir « %s » en secondes"
- msgid "GetValue(): Value not set"
- msgstr "GetValue() : valeur non définie"
- 
--#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179
-+#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
- #, c-format
- msgid "Cannot enable more streams from module '%s' at the same time"
--msgstr "Impossible d’activer plus de flux du module « %s » en même temps"
-+msgstr "Ne peut pas activer plus de flux du module '%s' en même temps"
- 
--#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3206
-+#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214
- #, c-format
- msgid ""
- "Cannot enable module '%1$s' stream '%2$s': State of module already modified"
- msgstr ""
--"Impossible d'activer le module « %1$s » flux « %2$s » : Etat du module déjà "
--"modifié"
-+"Impossible d'activer le flux de module '%1$s' stream '%2$s' : état du module "
-+"déjà modifié"
- 
--#: libdnf/dnf-context.cpp:3253
-+#: libdnf/dnf-context.cpp:3263
- #, c-format
- msgid "Modular dependency problem with Defaults: %s"
--msgstr "Problème de dépendance Modular avec Defaults : %s"
-+msgstr "Problème de dépendance modulaire avec les valeurs par défaut : %s"
- 
--#: libdnf/dnf-context.cpp:3256
-+#: libdnf/dnf-context.cpp:3266
- #, c-format
- msgid "Modular dependency problem with the latest modules: %s"
--msgstr "Problème de dépendance modulaire avec les derniers modules : %s"
-+msgstr "Problème de dépendance modulaire avec les derniers modules : %s"
- 
--#: libdnf/dnf-context.cpp:3260
-+#: libdnf/dnf-context.cpp:3270
- #, c-format
- msgid "Modular dependency problem: %s"
--msgstr "Problème de dépendances Modular : %s"
-+msgstr "Problème de dépendance modulaire : %s"
- 
--#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318
--#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368
--#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416
--#: libdnf/dnf-context.cpp:3460 libdnf/dnf-context.cpp:3470
-+#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
-+#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
-+#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
-+#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
- #, c-format
- msgid "Unable to resolve argument '%s'"
--msgstr "Impossible de résoudre l’argument « %s »"
-+msgstr "Impossible de résoudre le paramètre ’%s’"
- 
--#: libdnf/dnf-context.cpp:3301
-+#: libdnf/dnf-context.cpp:3300
- #, c-format
- msgid ""
--"Only module name is required. Ignoring unneeded information in argument: "
--"'%s'"
-+"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 »"
-+"ignorés : ’%s’"
- 
--#: libdnf/dnf-context.cpp:3315
-+#: libdnf/dnf-context.cpp:3314
- #, c-format
- msgid "Cannot reset module '%s': State of module already modified"
- msgstr ""
--"Impossible de réinitialiser le module « %s » : Etat du module déjà modifié"
-+"Impossible de réinitialiser le module '%s' : État du module déjà modifié"
- 
--#: libdnf/dnf-context.cpp:3326
-+#: libdnf/dnf-context.cpp:3325
- #, c-format
- msgid "Cannot disable module '%s': State of module already modified"
--msgstr ""
--"Impossible de désactiver le module « %s » : Etat du module déjà modifié"
-+msgstr "Impossible de désactiver le module '%s' : État du module déjà modifié"
- 
--#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3449
--#: libdnf/dnf-context.cpp:3559
-+#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452
-+#: libdnf/dnf-context.cpp:3633
- msgid "No modular data available"
- msgstr "Aucune donnée modulaire disponible"
- 
--#: libdnf/dnf-context.cpp:3374
-+#: libdnf/dnf-context.cpp:3373
- #, c-format
- msgid "Ignoring unneeded information in argument: '%s'"
--msgstr "Ces informations inutiles ont été ignorées dans l'argument : « %s »"
-+msgstr "Ignorer les informations inutiles dans l'argumentation : '%s'"
- 
--#: libdnf/dnf-context.cpp:3412
-+#: libdnf/dnf-context.cpp:3411
- #, c-format
- msgid ""
- "Problem during enablement of dependency tree for module '%1$s' stream "
- "'%2$s': %3$s"
- msgstr ""
--"Problème durant l'activation de l'arbre de dépendances pour le module « %1$s"
--" » du flux « %2$s » : %3$s"
-+"Problème lors de l'activation de l'arbre des dépendances pour le module "
-+"'%1$s' flux '%2$s' : %3$s"
- 
--#: libdnf/dnf-context.cpp:3424
--msgid "Problems appeared for module enable request"
--msgstr "Des problèmes sont apparus durant la requête d’activation du module"
-+#: libdnf/dnf-context.cpp:3423
-+msgid "Problems appeared for module enable request:"
-+msgstr "Des problèmes sont apparus pour la demande d'activation du module :"
-+
-+#: libdnf/dnf-context.cpp:3518
-+#, c-format
-+msgid "No active module packages found for module spec '%s'"
-+msgstr "Aucun paquetage de module actif n'a été trouvé pour le module spec '%s'"
- 
--#. this really should never happen; unless the modular repodata is corrupted
--#: libdnf/dnf-context.cpp:3496
-+#: libdnf/dnf-context.cpp:3523
- #, c-format
--msgid "Failed to parse module artifact NEVRA '%s'"
--msgstr "Échec de l’analyse du module d’artéfact NEVRA : %s"
-+msgid "Cannot install module '%s' from fail-safe repository"
-+msgstr "Impossible d'installer le module '%s' à partir du dépôt de sécurité"
- 
- #: libdnf/dnf-context.cpp:3530
--msgid "Problems appeared for module install request"
--msgstr "Des problèmes sont apparus durant la requête d’installation du module"
-+#, c-format
-+msgid "No profile found matching '%s'"
-+msgstr "Aucun profil trouvé correspondant à '%s'"
- 
--#: libdnf/dnf-context.cpp:3590
--msgid "Problems appeared for module reset request"
--msgstr ""
--"Des problèmes sont apparus durant la requête de réinitialisation du module"
-+#: libdnf/dnf-context.cpp:3584
-+#, c-format
-+msgid "No match for package '%s' for module spec %s"
-+msgstr "Aucune correspondance pour le paquet '%s' pour le module spec %s"
-+
-+#: libdnf/dnf-context.cpp:3595
-+#, c-format
-+msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
-+msgstr "Problème lors de l'installation du module '%1$s' stream '%2$s' : %3$s"
-+
-+#: libdnf/dnf-context.cpp:3604
-+msgid "Problems appeared for module install request:"
-+msgstr "Des problèmes sont apparus pour la demande d'installation du module :"
- 
--#: libdnf/dnf-context.cpp:3592
--msgid "Problems appeared for module disable request"
-+#: libdnf/dnf-context.cpp:3663
-+msgid "Problems appeared for module reset request:"
- msgstr ""
--"Des problèmes sont apparus durant la requête de désactivation du module"
-+"Des problèmes sont apparus pour la demande de réinitialisation des modules :"
- 
--#: libdnf/dnf-context.cpp:3628
-+#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
-+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:3755
- #, c-format
- msgid ""
--"The operation would result in switching of module '%s' stream '%s' to stream"
--" '%s'"
-+"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 »"
-+"Le résultat de l’opération sera le basculement du flux « %s » du module « %s "
-+"» vers le flux « %s »"
- 
--#: libdnf/dnf-context.cpp:3632
-+#: libdnf/dnf-context.cpp:3759
- 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."
-+"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.\n"
--"Il est recommandé de retirer tout le contenu installé du module, et de réinitialiser le module en utilisant la commande « dnf module reset <nom_du_module> ». Après la réinitialisation, vous pourrez installer les autres flux."
-+"Il n’est pas possible de basculer les flux actifs d’un module. \n"
-+"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:85
-+#: libdnf/dnf-goal.cpp:107
- msgid "Could not depsolve transaction; "
- msgstr "Impossible de depsolve la transaction ; "
- 
--#: libdnf/dnf-goal.cpp:87
-+#: libdnf/dnf-goal.cpp:109
- #, 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:95
-+#: libdnf/dnf-goal.cpp:117
- #, c-format
- msgid " Problem %1$i: %2$s\n"
- msgstr " Problème %1$i : %2$s\n"
- 
--#: libdnf/dnf-goal.cpp:97
-+#: libdnf/dnf-goal.cpp:119
- #, c-format
- msgid " Problem: %s\n"
- msgstr " Problème : %s\n"
-@@ -308,84 +331,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:395
-+#: libdnf/dnf-sack.cpp:394
- msgid "failed to add solv"
- msgstr "n’a pu ajouter solv"
- 
--#: libdnf/dnf-sack.cpp:414
-+#: libdnf/dnf-sack.cpp:413
- #, c-format
- msgid "no %1$s string for %2$s"
- msgstr "aucune chaine %1$s pour %2$s"
- 
--#: libdnf/dnf-sack.cpp:424
-+#: libdnf/dnf-sack.cpp:423
- #, c-format
- msgid "failed to open: %s"
- msgstr "n’a pas pu ouvrir : %s"
- 
--#: libdnf/dnf-sack.cpp:503
-+#: libdnf/dnf-sack.cpp:502
- #, c-format
- msgid "cannot create temporary file: %s"
- msgstr "n’a pas pu créer le fichier temporaire : %s"
- 
--#: libdnf/dnf-sack.cpp:513
-+#: libdnf/dnf-sack.cpp:512
- #, c-format
- msgid "failed opening tmp file: %s"
- msgstr "n’a pas pu ouvrir le fichier tmp : %s"
- 
--#: libdnf/dnf-sack.cpp:525
-+#: libdnf/dnf-sack.cpp:524
- #, c-format
- msgid "write_main() failed writing data: %i"
- msgstr "write_main() n’a pu écrire les données : %i"
- 
--#: libdnf/dnf-sack.cpp:542
-+#: libdnf/dnf-sack.cpp:541
- 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:607
-+#: libdnf/dnf-sack.cpp:606
- #, c-format
- msgid "can not create temporary file %s"
- msgstr "n’a pas pu créer le fichier temporaire %s"
- 
--#: libdnf/dnf-sack.cpp:625
-+#: libdnf/dnf-sack.cpp:624
- #, c-format
- msgid "write_ext(%1$d) has failed: %2$d"
- msgstr "write_ext(%1$d) a échoué : %2$d"
- 
--#: libdnf/dnf-sack.cpp:680
-+#: libdnf/dnf-sack.cpp:679
- msgid "null repo md file"
--msgstr "null repo md file"
-+msgstr "fichier md de dépôt nul"
- 
--#: libdnf/dnf-sack.cpp:689
-+#: libdnf/dnf-sack.cpp:688
- #, 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:703
-+#: libdnf/dnf-sack.cpp:702
- msgid "repo_add_solv() has failed."
- msgstr "repo_add_solv() a échoué."
- 
--#: libdnf/dnf-sack.cpp:716
-+#: libdnf/dnf-sack.cpp:715
- msgid "loading of MD_TYPE_PRIMARY has failed."
- msgstr "échec du chargement du MD_TYPE_PRIMARY."
- 
--#: libdnf/dnf-sack.cpp:729
-+#: libdnf/dnf-sack.cpp:728
- msgid "repo_add_repomdxml/rpmmd() has failed."
- msgstr "repo_add_repomdxml/rpmmd() a échoué."
- 
--#: libdnf/dnf-sack.cpp:796
-+#: libdnf/dnf-sack.cpp:795
- msgid "failed to auto-detect architecture"
- msgstr "n’a pu auto-détecter l’architecture"
- 
--#: libdnf/dnf-sack.cpp:961
-+#: libdnf/dnf-sack.cpp:960
- #, c-format
- msgid "failed creating cachedir %s"
- msgstr "n’a pu créer le cachedir %s"
- 
--#: libdnf/dnf-sack.cpp:1738
-+#: libdnf/dnf-sack.cpp:1737
- msgid "failed loading RPMDB"
- msgstr "n’a pu télécharger RPMDB"
- 
--#: libdnf/dnf-sack.cpp:2462
-+#: libdnf/dnf-sack.cpp:2521
- #, c-format
- msgid "No module defaults found: %s"
- msgstr "Aucun module par défaut n’a été trouvé : %s"
-@@ -414,68 +437,78 @@ msgstr "effectué sur un état %1$p qui n’avait pas de taille définie [%2$s]"
- msgid "already at 100%% state [%s]"
- msgstr "déjà en état à 100%% [%s]"
- 
--#: libdnf/dnf-transaction.cpp:300
-+#: libdnf/dnf-transaction.cpp:302
- #, 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
-+#: libdnf/dnf-transaction.cpp:328
- #, 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
-+#: libdnf/dnf-transaction.cpp:369
- msgid "Failed to check untrusted: "
- msgstr "Échec de la vérification d’untrusted : "
- 
--#: libdnf/dnf-transaction.cpp:377
-+#: libdnf/dnf-transaction.cpp:379
- #, c-format
- msgid "Downloaded file for %s not found"
- msgstr "Fichier téléchargé pour %s non trouvé"
- 
--#: libdnf/dnf-transaction.cpp:397
-+#: libdnf/dnf-transaction.cpp:399
- #, 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
-+#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
- msgid "Failed to get value for CacheDir"
- msgstr "N’a pas pu obtenir la valeur de CacheDir"
- 
--#: libdnf/dnf-transaction.cpp:911
-+#: libdnf/dnf-transaction.cpp:913
- #, 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
-+#: libdnf/dnf-transaction.cpp:921
- #, 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
-+#: libdnf/dnf-transaction.cpp:937
- #, 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"
-+"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible %3$s"
- 
--#: libdnf/dnf-transaction.cpp:1195
-+#: libdnf/dnf-transaction.cpp:1196
- msgid "failed to set root"
- msgstr "n’a pu réussi à définir root"
- 
--#: libdnf/dnf-transaction.cpp:1416
-+#: libdnf/dnf-transaction.cpp:1417
- #, c-format
- msgid "Error %i running transaction test"
- msgstr "Erreur %i lors du test transactionnel"
- 
--#: libdnf/dnf-transaction.cpp:1456
-+#: libdnf/dnf-transaction.cpp:1441
-+#, c-format
-+msgid "Error %i opening rpm database"
-+msgstr "Erreur %i lors de l’ouverture de la base de données rpm"
-+
-+#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
-+msgid "The rpmdbCookie() function did not return cookie of rpm database."
-+msgstr ""
-+"La fonction rpmdbCookie() n'a pas retourné le cookie de la base de données "
-+"rpm."
-+
-+#: libdnf/dnf-transaction.cpp:1464
- #, c-format
- msgid "Error %i running transaction"
- msgstr "Erreur %i pendant la transaction"
- 
--#: libdnf/dnf-transaction.cpp:1472
-+#: libdnf/dnf-transaction.cpp:1480
- #, c-format
- msgid "Transaction did not go to writing phase, but returned no error(%i)"
- msgstr ""
-@@ -501,8 +534,7 @@ msgstr ""
- #: libdnf/goal/Goal.cpp:79
- 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"
-+"Sélecteur Ill-formed utilisé pour l’opération, type de comparaison incorrecte"
- 
- #: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117
- msgid " does not belong to a distupgrade repository"
-@@ -690,42 +722,42 @@ msgstr "le module %s est en conflit avec %s fourni par lui-même"
- msgid "both module %s and %s obsolete %s"
- msgstr "à la fois le module %s et %s rendent obsolète %s"
- 
--#: libdnf/goal/Goal.cpp:1055
-+#: libdnf/goal/Goal.cpp:1141
- msgid "no solver set"
- msgstr "aucun solveur défini"
- 
--#: libdnf/goal/Goal.cpp:1060
-+#: libdnf/goal/Goal.cpp:1146
- #, c-format
- msgid "failed to make %s absolute"
- msgstr "n’a pas pu rendre %s absolu"
- 
--#: libdnf/goal/Goal.cpp:1067
-+#: libdnf/goal/Goal.cpp:1153
- #, 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:1079
-+#: libdnf/goal/Goal.cpp:1165
- msgid "no solv in the goal"
- msgstr "pas de solv dans l’objectif"
- 
--#: libdnf/goal/Goal.cpp:1081
-+#: libdnf/goal/Goal.cpp:1167
- msgid "no solution, cannot remove protected package"
- msgstr "aucune solution, n’a pas pu supprimer le package protégé"
- 
--#: libdnf/goal/Goal.cpp:1084
-+#: libdnf/goal/Goal.cpp:1170
- msgid "no solution possible"
- msgstr "aucune solution n’est possible"
- 
--#: libdnf/goal/Goal.cpp:1210
-+#: libdnf/goal/Goal.cpp:1296
- msgid "Problem: "
--msgstr "Problème : "
-+msgstr "Problème : "
- 
--#: libdnf/goal/Goal.cpp:1215
-+#: libdnf/goal/Goal.cpp:1301
- #, c-format
- msgid "Problem %d: "
--msgstr "Problème %d : "
-+msgstr "Probléme %d : "
- 
--#: libdnf/goal/Goal.cpp:1542
-+#: libdnf/goal/Goal.cpp:1634
- msgid ""
- "The operation would result in removing the following protected packages: "
- msgstr ""
-@@ -751,33 +783,33 @@ msgstr "impossible de créer le dossier %1$s : %2$s"
- msgid "cannot stat path %1$s: %2$s"
- msgstr "impossible de stat le chemin %1$s : %2$s"
- 
--#: libdnf/module/ModulePackage.cpp:573
-+#: libdnf/module/ModulePackage.cpp:604
- #, c-format
- msgid "Invalid format of Platform module: %s"
- msgstr "Format invalide du module de plateforme : %s"
- 
--#: libdnf/module/ModulePackage.cpp:588
-+#: libdnf/module/ModulePackage.cpp:619
- 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:601
-+#: libdnf/module/ModulePackage.cpp:632
- 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:628
-+#: libdnf/module/ModulePackage.cpp:659
- #, 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:637
-+#: libdnf/module/ModulePackage.cpp:668
- #, c-format
- msgid "Missing PLATFORM_ID in %s"
- msgstr "L'identifiant de la platforme est manquant dans %s"
- 
--#: libdnf/module/ModulePackage.cpp:642
-+#: libdnf/module/ModulePackage.cpp:673
- msgid "No valid Platform ID detected"
- msgstr "Aucun identifiant de plateforme n'a été détecté"
- 
-@@ -791,69 +823,68 @@ 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:918
-+#: libdnf/module/ModulePackageContainer.cpp:917
- msgid "Installing module profiles:\n"
--msgstr "Installation des profils de module :\n"
-+msgstr "Installation des profils de module :\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:933
-+#: libdnf/module/ModulePackageContainer.cpp:932
- msgid "Disabling module profiles:\n"
--msgstr "Désactivation des profils de module\n"
-+msgstr "Désactivation des profils de module :\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:948
-+#: libdnf/module/ModulePackageContainer.cpp:947
- msgid "Enabling module streams:\n"
--msgstr "Activation des flux de modules :\n"
-+msgstr "Activation des flux de modules :\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:962
-+#: libdnf/module/ModulePackageContainer.cpp:961
- msgid "Switching module streams:\n"
--msgstr "Basculement des flux de modules :\n"
-+msgstr "Basculement des flux de modules :\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:980
-+#: libdnf/module/ModulePackageContainer.cpp:979
- msgid "Disabling modules:\n"
--msgstr "Désactivation des modules :\n"
-+msgstr "Désactivation des modules :\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:991
-+#: libdnf/module/ModulePackageContainer.cpp:990
- msgid "Resetting modules:\n"
--msgstr "Réinitialisation des modules :\n"
-+msgstr "Réinitialisation des modules :\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1674
-+#: libdnf/module/ModulePackageContainer.cpp:1704
- #, 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:1680
-+#: libdnf/module/ModulePackageContainer.cpp:1710
- #, 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:1763
-+#: libdnf/module/ModulePackageContainer.cpp:1791
- #, 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:1779
-+#: libdnf/module/ModulePackageContainer.cpp:1807
- #, 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:1802
-+#: libdnf/module/ModulePackageContainer.cpp:1830
- #, 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 »"
-+msgstr "Impossible de supprimer les données de sécurité modulaires dans « %s »"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1834
-+#: libdnf/module/ModulePackageContainer.cpp:1862
- #, c-format
- msgid ""
- "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is "
- "disabled"
- msgstr ""
--"Impossible d'appliquer les obsolescences modulaires à « %s:%s » car le "
--"module cible « %s » est désactivé"
-+"Impossible d'appliquer les obsolètes modulaires à '%s:%s' car le module "
-+"cible '%s' est désactivé"
- 
- #: libdnf/module/modulemd/ModuleMetadata.cpp:86
- #, c-format
-@@ -881,12 +912,12 @@ msgstr "Échec de la mise à jour des paramètres par défaut : %s"
- msgid "Failed to upgrade streams: %s"
- msgstr "Échec de la mise à jour des flux : %s"
- 
--#: libdnf/module/modulemd/ModuleMetadata.cpp:219
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:221
- #, c-format
- msgid "Cannot retrieve module obsoletes because no stream matching %s: %s"
- msgstr ""
--"Impossible de récupérer les obsolescences modulaires aucun flux ne "
--"correspond à « %s:%s »"
-+"Impossible de récupérer les modules obsolètes car aucune correspondance de "
-+"flux %s : %s"
- 
- #: libdnf/plugin/plugin.cpp:46
- #, c-format
-@@ -931,8 +962,8 @@ msgid ""
- "operator instead."
- msgstr ""
- "L’utilisation de l’opérateur « == » dans reldeps peut entraîner un "
--"comportement indéfini. Il est déprécié et le support sera abandonné dans les"
--" prochaines versions. Utilisez plutôt l’opérateur « = »."
-+"comportement indéfini. Il est déprécié et le support sera abandonné dans les "
-+"prochaines versions. Utilisez plutôt l’opérateur « = »."
- 
- #: libdnf/repo/Repo.cpp:321
- #, c-format
-@@ -946,15 +977,15 @@ msgstr ""
- "Le dépôt « %s » n’a pas de type pris en charge : « type=%s », passer outre."
- 
- #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641
--#: libdnf/repo/Repo.cpp:1382
-+#: libdnf/repo/Repo.cpp:1400
- #, c-format
- msgid "repo '%s': 'basecachedir' is not set"
--msgstr "dépôt « %s » : 'basecachedir' n'est pas défini"
-+msgstr "repo '%s' : 'basecachedir' n'est pas fixé"
- 
- #: libdnf/repo/Repo.cpp:512
- msgid ""
--"Maximum download speed is lower than minimum. Please change configuration of"
--" minrate or throttle"
-+"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"
-@@ -962,11 +993,13 @@ msgstr ""
- #: libdnf/repo/Repo.cpp:546
- #, c-format
- msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
--msgstr "dépôt « %s » : 'proxy_username' est défini mais pas 'proxy_password'"
-+msgstr "repo '%s' : 'proxy_username' est défini mais pas 'proxy_password'"
- 
- #: libdnf/repo/Repo.cpp:548
- msgid "'proxy_username' is set but not 'proxy_password'"
--msgstr "'proxy_username' est défini mais pas 'proxy_password'"
-+msgstr ""
-+"Le nom d'utilisateur \"proxy_username\" est défini mais pas le mot de passe "
-+"\"proxy_password\""
- 
- #: libdnf/repo/Repo.cpp:629
- #, c-format
-@@ -983,129 +1016,135 @@ msgstr "%s : gpgme_data_new_from_fd() : %s"
- msgid "%s: gpgme_op_import(): %s"
- msgstr "%s : gpgme_op_import() : %s"
- 
--#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907
-+#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236
-+#: libdnf/repo/Repo.cpp:1279
-+#, 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:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917
- #, c-format
- msgid "%s: gpgme_ctx_set_engine_info(): %s"
- msgstr "%s : gpgme_ctx_set_engine_info() : %s"
- 
--#: libdnf/repo/Repo.cpp:740 libdnf/repo/Repo.cpp:804
-+#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808
- #, c-format
- msgid "can not list keys: %s"
- msgstr "n’a pas pu lister les clés : %s"
- 
--#: libdnf/repo/Repo.cpp:833
-+#: libdnf/repo/Repo.cpp:837
- #, 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:886
-+#: libdnf/repo/Repo.cpp:890
- #, c-format
- msgid "repo %s: 0x%s already imported"
- msgstr "dépôt %s : 0x%s déjà importé"
- 
--#: libdnf/repo/Repo.cpp:914
-+#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79
-+#, c-format
-+msgid "Failed to create directory \"%s\": %d - %s"
-+msgstr "Impossible de créer le répertoire \"%s« :%d - %s"
-+
-+#: libdnf/repo/Repo.cpp:924
- #, c-format
- msgid "repo %s: imported key 0x%s."
- msgstr "dépôt %s : clé importée 0x%s."
- 
--#: libdnf/repo/Repo.cpp:1162
-+#: libdnf/repo/Repo.cpp:1176
- #, 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:1181
-+#: libdnf/repo/Repo.cpp:1195
- #, 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:1204
-+#: libdnf/repo/Repo.cpp:1218
- #, 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:1210
-+#: libdnf/repo/Repo.cpp:1224
- #, 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:1235
-+#: libdnf/repo/Repo.cpp:1253
- #, c-format
- msgid "reviving: '%s' can be revived - repomd matches."
- msgstr "relance : « %s » peut être relancé - le repomd correspond."
- 
--#: libdnf/repo/Repo.cpp:1237
-+#: libdnf/repo/Repo.cpp:1255
- #, c-format
- msgid "reviving: failed for '%s', mismatched repomd."
- msgstr "relance : échec pour « %s », le repomd ne correspond pas."
- 
--#: libdnf/repo/Repo.cpp:1255
-+#: libdnf/repo/Repo.cpp:1273
- #, 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:1261
--#, 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:1275
-+#: libdnf/repo/Repo.cpp:1293
- #, c-format
- msgid "Cannot create directory \"%s\": %s"
- msgstr "Impossible de créer le répertoire « %s » : %s"
- 
--#: libdnf/repo/Repo.cpp:1298
-+#: libdnf/repo/Repo.cpp:1316
- #, 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:1321
-+#: libdnf/repo/Repo.cpp:1339
- #, c-format
- msgid "repo: using cache for: %s"
- msgstr "dépôt : utilisation du cache pour : %s"
- 
--#: libdnf/repo/Repo.cpp:1333
-+#: libdnf/repo/Repo.cpp:1351
- #, 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:1337
-+#: libdnf/repo/Repo.cpp:1355
- #, c-format
- msgid "repo: downloading from remote: %s"
- msgstr "dépôt : téléchargement à distance en provenance de : %s"
- 
--#: libdnf/repo/Repo.cpp:1344
-+#: libdnf/repo/Repo.cpp:1362
- #, 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:1370
-+#: libdnf/repo/Repo.cpp:1388
- msgid "getCachedir(): Computation of SHA256 failed"
- msgstr "getCachedir() : échec du calcul de SHA256"
- 
--#: libdnf/repo/Repo.cpp:1398
-+#: libdnf/repo/Repo.cpp:1416
- #, c-format
- msgid "Cannot create persistdir \"%s\": %s"
- msgstr "Impossible de créer le dossier persistant « %s » : %s"
- 
--#: libdnf/repo/Repo.cpp:1775
-+#: libdnf/repo/Repo.cpp:1793
- 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:1792
-+#: libdnf/repo/Repo.cpp:1810
- #, c-format
- msgid "PackageTarget initialization failed: %s"
- msgstr "L’initialisation de Package Target a échoué : %s"
- 
--#: libdnf/repo/Repo.cpp:1898
-+#: libdnf/repo/Repo.cpp:1916
- #, c-format
- msgid "Cannot open %s: %s"
- msgstr "impossible d’ouvrir %s : %s"
- 
--#: libdnf/repo/Repo.cpp:1942
-+#: libdnf/repo/Repo.cpp:1960
- #, c-format
- msgid "Log handler with id %ld doesn't exist"
- msgstr "Log handler ayant pour id %ld n’existe pas"
-@@ -1164,8 +1203,8 @@ msgid "Can't add console output to unsaved transaction"
- msgstr ""
- "Ne peut pas ajouter une sortie de console à une transaction non enregistrée"
- 
-+#~ msgid "Failed to parse module artifact NEVRA '%s'"
-+#~ msgstr "Échec de l'analyse de l'artefact de module '%s'"
-+
- #~ 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 3d6f5c5b..de74c431 100644
---- a/po/ja.po
-+++ b/po/ja.po
-@@ -1,20 +1,22 @@
- # Casey Jones <nahareport@live.com>, 2018. #zanata
--# Ludek Janda <ljanda@redhat.com>, 2018. #zanata
-+# Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2021.
- # Casey Jones <nahareport@yahoo.com>, 2020.
-+# Sundeep Anand <suanand@redhat.com>, 2021, 2022.
- msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2021-05-16 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: 2022-02-28 10:38+0100\n"
-+"PO-Revision-Date: 2022-03-02 10:16+0000\n"
-+"Last-Translator: Sundeep Anand <suanand@redhat.com>\n"
-+"Language-Team: Japanese <https://translate.fedoraproject.org/projects/dnf/"
-+"libdnf-rhel-9/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.11\n"
- 
- #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
- msgid "no value specified"
-@@ -41,16 +43,14 @@ msgid "invalid value"
- msgstr "無効な値"
- 
- #: libdnf/conf/ConfigMain.cpp:207
--#, fuzzy
--#| msgid "'%s' is not an allowed value"
- msgid "value 1 is not allowed"
--msgstr "'%s' 値は許可されていない値です"
-+msgstr "値 1 は許可されません"
- 
- #: libdnf/conf/ConfigMain.cpp:209
- msgid "negative value is not allowed"
--msgstr ""
-+msgstr "負の値は許可されていません"
- 
--#: libdnf/conf/ConfigMain.cpp:341
-+#: libdnf/conf/ConfigMain.cpp:343
- #, c-format
- msgid "percentage '%s' is out of range"
- msgstr "パーセンテージ '%s' が範囲外にあります"
-@@ -79,12 +79,12 @@ msgstr "'%s' 値は許可されていない値です"
- #: 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
-@@ -105,130 +105,158 @@ msgstr "'%s' を 秒に変換できません"
- msgid "GetValue(): Value not set"
- msgstr "GetValue(): 値は設定されていません"
- 
--#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179
--#, fuzzy, c-format
--#| msgid "Cannot enable multiple streams for module '%s'"
-+#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
-+#, c-format
- msgid "Cannot enable more streams from module '%s' at the same time"
--msgstr "モジュール '%s' の複数ストリームを有効化できません"
-+msgstr "モジュール '%s' から、さらにストリームを同時に有効にできません"
- 
--#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3206
-+#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214
- #, 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:3253
-+#: libdnf/dnf-context.cpp:3263
- #, c-format
- msgid "Modular dependency problem with Defaults: %s"
--msgstr ""
-+msgstr "デフォルトのモジュラー依存問題: %s"
- 
--#: libdnf/dnf-context.cpp:3256
--#, fuzzy, c-format
--#| msgid "some dependency problem"
-+#: libdnf/dnf-context.cpp:3266
-+#, c-format
- msgid "Modular dependency problem with the latest modules: %s"
--msgstr "いくつかの依存問題"
-+msgstr "最新のモジュールでモジュールの依存関係の問題: %s"
- 
--#: libdnf/dnf-context.cpp:3260
--#, fuzzy, c-format
--#| msgid "some dependency problem"
-+#: libdnf/dnf-context.cpp:3270
-+#, c-format
- msgid "Modular dependency problem: %s"
--msgstr "いくつかの依存問題"
-+msgstr "モジュラーの依存に関する問題: %s"
- 
--#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318
--#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368
--#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416
--#: libdnf/dnf-context.cpp:3460 libdnf/dnf-context.cpp:3470
--#, fuzzy, c-format
--#| msgid "Failed to resolve: %s"
-+#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
-+#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
-+#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
-+#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
-+#, c-format
- msgid "Unable to resolve argument '%s'"
--msgstr "名前解決に失敗しました: %s"
-+msgstr "引数 '%s' を解決できません"
- 
--#: libdnf/dnf-context.cpp:3301
-+#: libdnf/dnf-context.cpp:3300
- #, c-format
- msgid ""
--"Only module name is required. Ignoring unneeded information in argument: "
--"'%s'"
--msgstr ""
-+"Only module name is required. Ignoring unneeded information in argument: '%s'"
-+msgstr "モジュール名のみが必要です。引数の不必要な情報は無視します: '%s'"
- 
--#: libdnf/dnf-context.cpp:3315
-+#: libdnf/dnf-context.cpp:3314
- #, c-format
- msgid "Cannot reset module '%s': State of module already modified"
- msgstr ""
-+"モジュール '%s' をリセットできません。モジュールの状態はすでに変更されていま"
-+"す"
- 
--#: libdnf/dnf-context.cpp:3326
-+#: libdnf/dnf-context.cpp:3325
- #, c-format
- msgid "Cannot disable module '%s': State of module already modified"
- msgstr ""
-+"モジュール '%s' を無効にできません。モジュールの状態はすでに変更されています"
- 
--#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3449
--#: libdnf/dnf-context.cpp:3559
-+#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452
-+#: libdnf/dnf-context.cpp:3633
- msgid "No modular data available"
--msgstr ""
-+msgstr "モジュールデータは利用できません"
- 
--#: libdnf/dnf-context.cpp:3374
-+#: libdnf/dnf-context.cpp:3373
- #, c-format
- msgid "Ignoring unneeded information in argument: '%s'"
--msgstr ""
-+msgstr "引数の不要な情報は無視します: '%s'"
- 
--#: libdnf/dnf-context.cpp:3412
-+#: libdnf/dnf-context.cpp:3411
- #, c-format
- msgid ""
- "Problem during enablement of dependency tree for module '%1$s' stream "
- "'%2$s': %3$s"
- msgstr ""
-+"モジュール '%1$s' ストリーム '%2$s' の依存関係ツリーの有効化中に問題: %3$s"
- 
--#: libdnf/dnf-context.cpp:3424
--msgid "Problems appeared for module enable request"
--msgstr ""
-+#: libdnf/dnf-context.cpp:3423
-+msgid "Problems appeared for module enable request:"
-+msgstr "モジュール有効化リクエストに発生する問題:"
- 
--#. this really should never happen; unless the modular repodata is corrupted
--#: libdnf/dnf-context.cpp:3496
--#, fuzzy, c-format
--#| msgid "Failed to upgrade defaults: %s"
--msgid "Failed to parse module artifact NEVRA '%s'"
--msgstr "デフォルトのアップグレードに失敗しました: %s"
-+#: libdnf/dnf-context.cpp:3518
-+#, c-format
-+msgid "No active module packages found for module spec '%s'"
-+msgstr "モジュール仕様 '%s' "
-+"について、アクティブなモジュールパッケージが見つかりません"
-+
-+#: libdnf/dnf-context.cpp:3523
-+#, c-format
-+msgid "Cannot install module '%s' from fail-safe repository"
-+msgstr "フェイルセーフリポジトリーからモジュール '%s' をインストールできません"
- 
- #: libdnf/dnf-context.cpp:3530
--msgid "Problems appeared for module install request"
--msgstr ""
-+#, c-format
-+msgid "No profile found matching '%s'"
-+msgstr "'%s' にマッチするプロファイルが見つかりません"
- 
--#: libdnf/dnf-context.cpp:3590
--msgid "Problems appeared for module reset request"
--msgstr ""
-+#: libdnf/dnf-context.cpp:3584
-+#, c-format
-+msgid "No match for package '%s' for module spec %s"
-+msgstr "モジュール仕様 %s について、パッケージ '%s' にマッチする項目はありません"
- 
--#: libdnf/dnf-context.cpp:3592
--msgid "Problems appeared for module disable request"
--msgstr ""
-+#: libdnf/dnf-context.cpp:3595
-+#, c-format
-+msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
-+msgstr "モジュール '%1$s' ストリーム '%2$s' のインストール中に問題: %3$s"
-+
-+#: libdnf/dnf-context.cpp:3604
-+msgid "Problems appeared for module install request:"
-+msgstr "モジュールインストールリクエストに発生する問題:"
- 
--#: libdnf/dnf-context.cpp:3628
-+#: libdnf/dnf-context.cpp:3663
-+msgid "Problems appeared for module reset request:"
-+msgstr "モジュールリセットリクエストに発生する問題:"
-+
-+#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
-+msgid "Problems appeared for module disable request:"
-+msgstr "モジュール無効化リクエストに発生する問題:"
-+
-+#: libdnf/dnf-context.cpp:3755
- #, c-format
- msgid ""
--"The operation would result in switching of module '%s' stream '%s' to stream"
--" '%s'"
-+"The operation would result in switching of module '%s' stream '%s' to stream "
-+"'%s'"
- msgstr ""
-+"オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り"
-+"替える結果となります"
- 
--#: libdnf/dnf-context.cpp:3632
-+#: libdnf/dnf-context.cpp:3759
- 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."
-+"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:85
-+#: libdnf/dnf-goal.cpp:107
- msgid "Could not depsolve transaction; "
- msgstr "トランザクションを depsolve できませんでした; "
- 
--#: libdnf/dnf-goal.cpp:87
-+#: libdnf/dnf-goal.cpp:109
- #, c-format
- msgid "%i problem detected:\n"
- msgid_plural "%i problems detected:\n"
- msgstr[0] "%i 問題を検出:\n"
- 
--#: libdnf/dnf-goal.cpp:95
-+#: libdnf/dnf-goal.cpp:117
- #, c-format
- msgid " Problem %1$i: %2$s\n"
- msgstr " 問題 %1$i: %2$s\n"
- 
--#: libdnf/dnf-goal.cpp:97
-+#: libdnf/dnf-goal.cpp:119
- #, c-format
- msgid " Problem: %s\n"
- msgstr " 問題: %s\n"
-@@ -238,7 +266,9 @@ msgstr " 問題: %s\n"
- msgid ""
- "No available modular metadata for modular package '%s'; cannot be installed "
- "on the system"
--msgstr "モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにインストールはできません"
-+msgstr ""
-+"モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにイ"
-+"ンストールはできません"
- 
- #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
- #, c-format
-@@ -277,7 +307,8 @@ msgstr "トランザクションの実行中にエラーが発生しました: %
- 
- #: libdnf/dnf-rpmts.cpp:283
- msgid "Error running transaction and no problems were reported!"
--msgstr "トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!"
-+msgstr ""
-+"トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!"
- 
- #: libdnf/dnf-rpmts.cpp:346
- msgid "Fatal error, run database recovery"
-@@ -293,87 +324,87 @@ msgstr "パッケージ %s を見つけることができませんでした"
- msgid "could not add erase element %1$s(%2$i)"
- msgstr "erase 要素 %1$s(%2$i) を追加することができません"
- 
--#: libdnf/dnf-sack.cpp:395
-+#: libdnf/dnf-sack.cpp:394
- msgid "failed to add solv"
- msgstr "solv の追加に失敗しました"
- 
--#: libdnf/dnf-sack.cpp:414
-+#: libdnf/dnf-sack.cpp:413
- #, c-format
- msgid "no %1$s string for %2$s"
- msgstr "%2$s の %1$s 文字列はありません"
- 
--#: libdnf/dnf-sack.cpp:424
-+#: libdnf/dnf-sack.cpp:423
- #, c-format
- msgid "failed to open: %s"
- msgstr "開くことに失敗しました: %s"
- 
--#: libdnf/dnf-sack.cpp:503
-+#: libdnf/dnf-sack.cpp:502
- #, c-format
- msgid "cannot create temporary file: %s"
- msgstr "一時ファイルを作成できません: %s"
- 
--#: libdnf/dnf-sack.cpp:513
-+#: libdnf/dnf-sack.cpp:512
- #, c-format
- msgid "failed opening tmp file: %s"
- msgstr "tmp ファイルを開くことに失敗しました: %s"
- 
--#: libdnf/dnf-sack.cpp:525
-+#: libdnf/dnf-sack.cpp:524
- #, c-format
- msgid "write_main() failed writing data: %i"
- msgstr "write_main() はデータの書き込みに失敗しました: %i"
- 
--#: libdnf/dnf-sack.cpp:542
-+#: libdnf/dnf-sack.cpp:541
- msgid "write_main() failed to re-load written solv file"
- msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました"
- 
--#: libdnf/dnf-sack.cpp:607
-+#: libdnf/dnf-sack.cpp:606
- #, c-format
- msgid "can not create temporary file %s"
- msgstr "一時ファイル %s を作成できません"
- 
--#: libdnf/dnf-sack.cpp:625
-+#: libdnf/dnf-sack.cpp:624
- #, c-format
- msgid "write_ext(%1$d) has failed: %2$d"
- msgstr "write_ext(%1$d) は失敗しました: %2$d"
- 
--#: libdnf/dnf-sack.cpp:680
-+#: libdnf/dnf-sack.cpp:679
- msgid "null repo md file"
- msgstr "null repo md ファイル"
- 
--#: libdnf/dnf-sack.cpp:689
-+#: libdnf/dnf-sack.cpp:688
- #, c-format
- msgid "can not read file %1$s: %2$s"
- msgstr "ファイル %1$s を読み込みできません: %2$s"
- 
--#: libdnf/dnf-sack.cpp:703
-+#: libdnf/dnf-sack.cpp:702
- msgid "repo_add_solv() has failed."
- msgstr "repo_add_solv() は失敗しました。"
- 
--#: libdnf/dnf-sack.cpp:716
-+#: libdnf/dnf-sack.cpp:715
- msgid "loading of MD_TYPE_PRIMARY has failed."
- msgstr "MD_TYPE_PRIMARY のロードに失敗しました。"
- 
--#: libdnf/dnf-sack.cpp:729
-+#: libdnf/dnf-sack.cpp:728
- msgid "repo_add_repomdxml/rpmmd() has failed."
- msgstr "repo_add_repomdxml/rpmmd() は失敗しました。"
- 
--#: libdnf/dnf-sack.cpp:796
-+#: libdnf/dnf-sack.cpp:795
- msgid "failed to auto-detect architecture"
- msgstr "アーキテクチャーの自動検出に失敗しました"
- 
--#: libdnf/dnf-sack.cpp:961
-+#: libdnf/dnf-sack.cpp:960
- #, c-format
- msgid "failed creating cachedir %s"
- msgstr "cachedir %s の作成に失敗しました"
- 
--#: libdnf/dnf-sack.cpp:1738
-+#: libdnf/dnf-sack.cpp:1737
- msgid "failed loading RPMDB"
- msgstr "RPMDB のロードに失敗しました"
- 
--#: libdnf/dnf-sack.cpp:2462
-+#: libdnf/dnf-sack.cpp:2521
- #, c-format
- msgid "No module defaults found: %s"
--msgstr ""
-+msgstr "モジュールのデフォルトは見つかりませんでした: %s"
- 
- #: libdnf/dnf-state.cpp:1184
- #, c-format
-@@ -399,67 +430,82 @@ msgstr "サイズ設定のない状態 %1$p で実行されました! [%2$s]"
- msgid "already at 100%% state [%s]"
- msgstr "すでに 100%% の状態 [%s] にあります"
- 
--#: libdnf/dnf-transaction.cpp:300
-+#: libdnf/dnf-transaction.cpp:302
- #, c-format
- msgid "Sources not set when trying to ensure package %s"
- msgstr "パッケージ %s を確実にしようとする場合、ソースは設定されません"
- 
--#: libdnf/dnf-transaction.cpp:326
-+#: libdnf/dnf-transaction.cpp:328
- #, 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 はロード済み)"
-+msgstr ""
-+"repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo "
-+"はロード済み)"
- 
--#: libdnf/dnf-transaction.cpp:367
-+#: libdnf/dnf-transaction.cpp:369
- msgid "Failed to check untrusted: "
- msgstr "untrusted の確認に失敗しました: "
- 
--#: libdnf/dnf-transaction.cpp:377
-+#: libdnf/dnf-transaction.cpp:379
- #, c-format
- msgid "Downloaded file for %s not found"
- msgstr "%s にダウンロードしたファイルが見つかりませんでした"
- 
--#: libdnf/dnf-transaction.cpp:397
-+#: libdnf/dnf-transaction.cpp:399
- #, 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"
-+msgstr ""
-+"パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s"
- 
--#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
-+#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
- msgid "Failed to get value for CacheDir"
- msgstr "CacheDir の値の取得に失敗しました"
- 
--#: libdnf/dnf-transaction.cpp:911
-+#: libdnf/dnf-transaction.cpp:913
- #, c-format
- msgid "Failed to get filesystem free size for %s: "
- msgstr "%s に filesystem をフリーサイズで取得することに失敗しました: "
- 
--#: libdnf/dnf-transaction.cpp:919
-+#: libdnf/dnf-transaction.cpp:921
- #, c-format
- msgid "Failed to get filesystem free size for %s"
- msgstr "%s に filesystem をフリーサイズで取得することに失敗しました"
- 
--#: libdnf/dnf-transaction.cpp:935
-+#: libdnf/dnf-transaction.cpp:937
- #, c-format
- msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
--msgstr "%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です"
-+msgstr ""
-+"%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です"
- 
--#: libdnf/dnf-transaction.cpp:1195
-+#: libdnf/dnf-transaction.cpp:1196
- msgid "failed to set root"
- msgstr "root の設定に失敗しました"
- 
--#: libdnf/dnf-transaction.cpp:1416
-+#: libdnf/dnf-transaction.cpp:1417
- #, c-format
- msgid "Error %i running transaction test"
- msgstr "トランザクションテストの実行中にエラー %i"
- 
--#: libdnf/dnf-transaction.cpp:1456
-+#: libdnf/dnf-transaction.cpp:1441
-+#, c-format
-+msgid "Error %i opening rpm database"
-+msgstr "rpm データベースを開く際にエラー %i"
-+
-+#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
-+msgid "The rpmdbCookie() function did not return cookie of rpm database."
-+msgstr "rpmdbCookie() 関数は rpm データベースのクッキーを返しませんでした。"
-+
-+#: libdnf/dnf-transaction.cpp:1464
- #, c-format
- msgid "Error %i running transaction"
- msgstr "トランザクションの実行中にエラー %i"
- 
--#: libdnf/dnf-transaction.cpp:1472
-+#: libdnf/dnf-transaction.cpp:1480
- #, c-format
- msgid "Transaction did not go to writing phase, but returned no error(%i)"
--msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした"
-+msgstr ""
-+"トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しま"
-+"せんでした"
- 
- #: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403
- #, c-format
-@@ -567,7 +613,9 @@ msgstr "パッケージ %s は %s を廃止しました。これは %s により
- #: libdnf/goal/Goal.cpp:109
- #, c-format
- msgid "installed package %s obsoletes %s provided by %s"
--msgstr "インストール済パッケージ %s は %s を廃止しました。これは %s により提供されます"
-+msgstr ""
-+"インストール済パッケージ %s は %s を廃止しました。これは %s により提供されま"
-+"す"
- 
- #: libdnf/goal/Goal.cpp:110
- #, c-format
-@@ -577,7 +625,9 @@ msgstr "パッケージ %s は %s を暗に廃止しました。これは %s に
- #: libdnf/goal/Goal.cpp:111
- #, c-format
- msgid "package %s requires %s, but none of the providers can be installed"
--msgstr "パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできません"
-+msgstr ""
-+"パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできま"
-+"せん"
- 
- #: libdnf/goal/Goal.cpp:112
- #, c-format
-@@ -640,7 +690,9 @@ msgstr "モジュール %s は %s を廃止しました。これは %s により
- #: libdnf/goal/Goal.cpp:136
- #, c-format
- msgid "installed module %s obsoletes %s provided by %s"
--msgstr "インストール済モジュール %s は %s を廃止しました。これは %s により提供されます"
-+msgstr ""
-+"インストール済モジュール %s は %s を廃止しました。これは %s により提供されま"
-+"す"
- 
- #: libdnf/goal/Goal.cpp:137
- #, c-format
-@@ -650,7 +702,9 @@ msgstr "モジュール %s は %s を暗に廃止しました。これは %s に
- #: libdnf/goal/Goal.cpp:138
- #, c-format
- msgid "module %s requires %s, but none of the providers can be installed"
--msgstr "モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできません"
-+msgstr ""
-+"モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできま"
-+"せん"
- 
- #: libdnf/goal/Goal.cpp:139
- #, c-format
-@@ -662,45 +716,42 @@ msgstr "モジュール %s は自己提供される %s と競合しています"
- msgid "both module %s and %s obsolete %s"
- msgstr "モジュール %s と %s 両方は %s を廃止しました"
- 
--#: libdnf/goal/Goal.cpp:1055
-+#: libdnf/goal/Goal.cpp:1141
- msgid "no solver set"
- msgstr "設定されたソルバーはありません"
- 
--#: libdnf/goal/Goal.cpp:1060
-+#: libdnf/goal/Goal.cpp:1146
- #, c-format
- msgid "failed to make %s absolute"
- msgstr "%s を絶対的にすることに失敗しました"
- 
--#: libdnf/goal/Goal.cpp:1067
-+#: libdnf/goal/Goal.cpp:1153
- #, c-format
- msgid "failed writing debugdata to %1$s: %2$s"
- msgstr "debugdata を %1$s へ書き込むことに失敗しました: %2$s"
- 
--#: libdnf/goal/Goal.cpp:1079
-+#: libdnf/goal/Goal.cpp:1165
- msgid "no solv in the goal"
- msgstr "目標に solv がありません"
- 
--#: libdnf/goal/Goal.cpp:1081
-+#: libdnf/goal/Goal.cpp:1167
- msgid "no solution, cannot remove protected package"
- msgstr "ソリューションがなく、保護されたパッケージを削除できません"
- 
--#: libdnf/goal/Goal.cpp:1084
-+#: libdnf/goal/Goal.cpp:1170
- msgid "no solution possible"
- msgstr "可能なソリューションがありません"
- 
--#: libdnf/goal/Goal.cpp:1210
--#, fuzzy
--#| msgid " Problem: %s\n"
-+#: libdnf/goal/Goal.cpp:1296
- msgid "Problem: "
--msgstr "問題: %s "
-+msgstr "問題: "
- 
--#: libdnf/goal/Goal.cpp:1215
--#, fuzzy, c-format
--#| msgid " Problem: %s\n"
-+#: libdnf/goal/Goal.cpp:1301
-+#, c-format
- msgid "Problem %d: "
--msgstr "問題: %s "
-+msgstr "問題 %d: "
- 
--#: libdnf/goal/Goal.cpp:1542
-+#: libdnf/goal/Goal.cpp:1634
- msgid ""
- "The operation would result in removing the following protected packages: "
- msgstr "操作は結果的に以下の保護されたパッケージを削除します: "
-@@ -725,30 +776,30 @@ msgstr "ディレクトリー %1$s を作成できません : %2$s"
- msgid "cannot stat path %1$s: %2$s"
- msgstr "パス %1$s のstatを調べられません : %2$s"
- 
--#: libdnf/module/ModulePackage.cpp:573
-+#: libdnf/module/ModulePackage.cpp:604
- #, c-format
- msgid "Invalid format of Platform module: %s"
- msgstr "不正なプラットフォームモジュールのフォーマット: %s"
- 
--#: libdnf/module/ModulePackage.cpp:588
-+#: libdnf/module/ModulePackage.cpp:619
- msgid "Multiple module platforms provided by available packages\n"
- msgstr "利用可能パッケージに提供される複数のモジュールプラットフォーム\n"
- 
--#: libdnf/module/ModulePackage.cpp:601
-+#: libdnf/module/ModulePackage.cpp:632
- msgid "Multiple module platforms provided by installed packages\n"
- msgstr "インストール済パッケージに提供される複数のモジュールプラットフォーム\n"
- 
--#: libdnf/module/ModulePackage.cpp:628
-+#: libdnf/module/ModulePackage.cpp:659
- #, c-format
- msgid "Detection of Platform Module in %s failed: %s"
- msgstr "%s のプラットフォームモジュールの検出に失敗しました: %s"
- 
--#: libdnf/module/ModulePackage.cpp:637
-+#: libdnf/module/ModulePackage.cpp:668
- #, c-format
- msgid "Missing PLATFORM_ID in %s"
- msgstr "%s に PLATFORM_ID が見つかりません"
- 
--#: libdnf/module/ModulePackage.cpp:642
-+#: libdnf/module/ModulePackage.cpp:673
- msgid "No valid Platform ID detected"
- msgstr "有効な Platform ID が検出されませんでした"
- 
-@@ -762,61 +813,65 @@ msgstr "モジュール '%s' の複数ストリームを有効化できません
- msgid "Conflicting defaults with repo '%s': %s"
- msgstr "repo '%s' のデフォルトが競合: %s"
- 
--#: libdnf/module/ModulePackageContainer.cpp:918
-+#: libdnf/module/ModulePackageContainer.cpp:917
- msgid "Installing module profiles:\n"
--msgstr ""
-+msgstr "モジュールプロファイルのインストール中:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:933
-+#: libdnf/module/ModulePackageContainer.cpp:932
- msgid "Disabling module profiles:\n"
--msgstr ""
-+msgstr "モジュールプロファイルの無効化中:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:948
-+#: libdnf/module/ModulePackageContainer.cpp:947
- msgid "Enabling module streams:\n"
--msgstr ""
-+msgstr "モジュールストリームの有効化中:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:962
-+#: libdnf/module/ModulePackageContainer.cpp:961
- msgid "Switching module streams:\n"
--msgstr ""
-+msgstr "モジュールストリームの切り替え中:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:980
-+#: libdnf/module/ModulePackageContainer.cpp:979
- msgid "Disabling modules:\n"
--msgstr ""
-+msgstr "モジュールの無効化:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:991
-+#: libdnf/module/ModulePackageContainer.cpp:990
- msgid "Resetting modules:\n"
--msgstr ""
-+msgstr "モジュールの再設定中:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1674
-+#: libdnf/module/ModulePackageContainer.cpp:1704
- #, c-format
- msgid "Unable to load modular Fail-Safe data at '%s'"
- msgstr "'%s' のモジュラーフェイルセーフデータをロードできません"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1680
-+#: libdnf/module/ModulePackageContainer.cpp:1710
- #, c-format
- msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
- msgstr "モジュール '%s:%s' のモジュラーフェイルセーフデータをロードできません"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1763
-+#: libdnf/module/ModulePackageContainer.cpp:1791
- #, c-format
- msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
--msgstr "ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: %s"
-+msgstr ""
-+"ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: "
-+"%s"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1779
-+#: libdnf/module/ModulePackageContainer.cpp:1807
- #, c-format
- msgid "Unable to save a modular Fail Safe data to '%s'"
- msgstr "'%s' のモジュラーフェイルセーフデータを保存できません"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1802
-+#: libdnf/module/ModulePackageContainer.cpp:1830
- #, c-format
- msgid "Unable to remove a modular Fail Safe data in '%s'"
- msgstr "'%s' のモジュラーフェイルセーフデータを削除できません"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1834
-+#: libdnf/module/ModulePackageContainer.cpp:1862
- #, c-format
- msgid ""
- "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is "
- "disabled"
- msgstr ""
-+"ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用"
-+"できません"
- 
- #: libdnf/module/modulemd/ModuleMetadata.cpp:86
- #, c-format
-@@ -831,7 +886,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
-@@ -843,10 +898,11 @@ msgstr "デフォルトのアップグレードに失敗しました: %s"
- msgid "Failed to upgrade streams: %s"
- msgstr "ストリームのアップグレードに失敗しました: %s"
- 
--#: libdnf/module/modulemd/ModuleMetadata.cpp:219
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:221
- #, c-format
- msgid "Cannot retrieve module obsoletes because no stream matching %s: %s"
- msgstr ""
-+"%s に一致するストリームがないため、モジュールの廃止を取得できません: %s"
- 
- #: libdnf/plugin/plugin.cpp:46
- #, c-format
-@@ -889,6 +945,9 @@ msgid ""
- "deprecated and the support will be dropped in future versions. Use '=' "
- "operator instead."
- msgstr ""
-+"reldeps で '==' 演算子を使用すると、未定義の動作が発生する可能性があります。"
-+"これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' 演"
-+"算子を使用してください。"
- 
- #: libdnf/repo/Repo.cpp:321
- #, c-format
-@@ -898,28 +957,35 @@ msgstr "リポジトリー %s にはミラーまたは baseurl セットがあ
- #: libdnf/repo/Repo.cpp:330
- #, c-format
- msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
--msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。"
-+msgstr ""
-+"リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッ"
-+"ピング。"
- 
- #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641
--#: libdnf/repo/Repo.cpp:1382
-+#: libdnf/repo/Repo.cpp:1400
- #, c-format
- msgid "repo '%s': 'basecachedir' is not set"
--msgstr ""
-+msgstr "repo '%s': 'basecachedir' が設定されていません"
- 
- #: libdnf/repo/Repo.cpp:512
- msgid ""
--"Maximum download speed is lower than minimum. Please change configuration of"
--" minrate or throttle"
--msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください。"
-+"Maximum download speed is lower than minimum. Please change configuration of "
-+"minrate or throttle"
-+msgstr ""
-+"ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの"
-+"設定を変更してください"
- 
- #: libdnf/repo/Repo.cpp:546
- #, c-format
- msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
- msgstr ""
-+"repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されてい"
-+"ません"
- 
- #: libdnf/repo/Repo.cpp:548
- msgid "'proxy_username' is set but not 'proxy_password'"
- msgstr ""
-+"'proxy_username' は設定済みですが、'proxy_password' は設定されていません"
- 
- #: libdnf/repo/Repo.cpp:629
- #, c-format
-@@ -936,125 +1002,133 @@ msgstr "%s: gpgme_data_new_from_fd(): %s"
- msgid "%s: gpgme_op_import(): %s"
- msgstr "%s: gpgme_op_import(): %s"
- 
--#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907
-+#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236
-+#: libdnf/repo/Repo.cpp:1279
-+#, c-format
-+msgid "Cannot create repo temporary directory \"%s\": %s"
-+msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s"
-+
-+#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917
- #, c-format
- msgid "%s: gpgme_ctx_set_engine_info(): %s"
- msgstr "%s: gpgme_ctx_set_engine_info(): %s"
- 
--#: libdnf/repo/Repo.cpp:740 libdnf/repo/Repo.cpp:804
-+#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808
- #, c-format
- msgid "can not list keys: %s"
- msgstr "キーを一覧表示できません: %s"
- 
--#: libdnf/repo/Repo.cpp:833
-+#: libdnf/repo/Repo.cpp:837
- #, c-format
- msgid "Failed to retrieve GPG key for repo '%s': %s"
- msgstr "repo '%s' のGPG鍵の回収に失敗しました : %s"
- 
--#: libdnf/repo/Repo.cpp:886
-+#: libdnf/repo/Repo.cpp:890
- #, c-format
- msgid "repo %s: 0x%s already imported"
- msgstr "repo %s: 0x%s はインポート済みです"
- 
--#: libdnf/repo/Repo.cpp:914
-+#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79
-+#, c-format
-+msgid "Failed to create directory \"%s\": %d - %s"
-+msgstr "ディレクトリー \"%s\" の作成に失敗しました: %d - %s"
-+
-+#: libdnf/repo/Repo.cpp:924
- #, c-format
- msgid "repo %s: imported key 0x%s."
- msgstr "repo %s: インポート済みのキー 0x%s。"
- 
--#: libdnf/repo/Repo.cpp:1162
-+#: libdnf/repo/Repo.cpp:1176
- #, c-format
- msgid "reviving: repo '%s' skipped, no metalink."
- msgstr "復元中: repo '%s' はスキップされました、metalink はありません。"
- 
--#: libdnf/repo/Repo.cpp:1181
-+#: libdnf/repo/Repo.cpp:1195
- #, c-format
- msgid "reviving: repo '%s' skipped, no usable hash."
--msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。"
-+msgstr ""
-+"復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。"
- 
--#: libdnf/repo/Repo.cpp:1204
-+#: libdnf/repo/Repo.cpp:1218
- #, c-format
- msgid "reviving: failed for '%s', mismatched %s sum."
- msgstr "復元中: '%s' は失敗しました、%s の合計は一致しません。"
- 
--#: libdnf/repo/Repo.cpp:1210
-+#: libdnf/repo/Repo.cpp:1224
- #, c-format
- msgid "reviving: '%s' can be revived - metalink checksums match."
- msgstr "復元中: '%s' は復元できます - metalink チェックサムが一致します。"
- 
--#: libdnf/repo/Repo.cpp:1235
-+#: libdnf/repo/Repo.cpp:1253
- #, c-format
- msgid "reviving: '%s' can be revived - repomd matches."
- msgstr "復元中: '%s' は復元できます - repomd が一致します。"
- 
--#: libdnf/repo/Repo.cpp:1237
-+#: libdnf/repo/Repo.cpp:1255
- #, c-format
- msgid "reviving: failed for '%s', mismatched repomd."
--msgstr "復元中:  '%s' に失敗しました、repomd が一致しません。"
-+msgstr "復元中: '%s' に失敗しました、repomd が一致しません。"
- 
--#: libdnf/repo/Repo.cpp:1255
-+#: libdnf/repo/Repo.cpp:1273
- #, c-format
- msgid "Cannot create repo destination directory \"%s\": %s"
- msgstr "repo 送信先ディレクトリ \"%s\" を作成できません : %s"
- 
--#: libdnf/repo/Repo.cpp:1261
--#, c-format
--msgid "Cannot create repo temporary directory \"%s\": %s"
--msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s"
--
--#: libdnf/repo/Repo.cpp:1275
-+#: libdnf/repo/Repo.cpp:1293
- #, c-format
- msgid "Cannot create directory \"%s\": %s"
- msgstr "ディレクトリー \"%s\" を作成できません: %s"
- 
--#: libdnf/repo/Repo.cpp:1298
-+#: libdnf/repo/Repo.cpp:1316
- #, c-format
- msgid "Cannot rename directory \"%s\" to \"%s\": %s"
- msgstr "ディレクトリー名を \"%s\" から \"%s\" へと変更できません: %s"
- 
--#: libdnf/repo/Repo.cpp:1321
-+#: libdnf/repo/Repo.cpp:1339
- #, c-format
- msgid "repo: using cache for: %s"
- msgstr "repo: キャッシュを使用: %s"
- 
--#: libdnf/repo/Repo.cpp:1333
-+#: libdnf/repo/Repo.cpp:1351
- #, c-format
- msgid "Cache-only enabled but no cache for '%s'"
--msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません"
-+msgstr ""
-+"キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません"
- 
--#: libdnf/repo/Repo.cpp:1337
-+#: libdnf/repo/Repo.cpp:1355
- #, c-format
- msgid "repo: downloading from remote: %s"
- msgstr "repo: リモートからダウンロード中: %s"
- 
--#: libdnf/repo/Repo.cpp:1344
-+#: libdnf/repo/Repo.cpp:1362
- #, c-format
- msgid "Failed to download metadata for repo '%s': %s"
- msgstr "repo '%s' のメタデータのダウンロードに失敗しました : %s"
- 
--#: libdnf/repo/Repo.cpp:1370
-+#: libdnf/repo/Repo.cpp:1388
- msgid "getCachedir(): Computation of SHA256 failed"
- msgstr "getCachedir(): SHA256 のコンピュテーションに失敗しました"
- 
--#: libdnf/repo/Repo.cpp:1398
-+#: libdnf/repo/Repo.cpp:1416
- #, c-format
- msgid "Cannot create persistdir \"%s\": %s"
- msgstr "persistdir \"%s\" を作成できません : %s"
- 
--#: libdnf/repo/Repo.cpp:1775
-+#: libdnf/repo/Repo.cpp:1793
- msgid "resume cannot be used simultaneously with the byterangestart param"
- msgstr "resume は byterangestart param と同時に使用できません"
- 
--#: libdnf/repo/Repo.cpp:1792
-+#: libdnf/repo/Repo.cpp:1810
- #, c-format
- msgid "PackageTarget initialization failed: %s"
- msgstr "PackageTarget の初期化に失敗しました: %s"
- 
--#: libdnf/repo/Repo.cpp:1898
-+#: libdnf/repo/Repo.cpp:1916
- #, c-format
- msgid "Cannot open %s: %s"
- msgstr "%s を開くことができません: %s"
- 
--#: libdnf/repo/Repo.cpp:1942
-+#: libdnf/repo/Repo.cpp:1960
- #, c-format
- msgid "Log handler with id %ld doesn't exist"
- msgstr "id %ld を伴うログハンドラーは存在しません"
-@@ -1084,6 +1158,7 @@ msgstr "完了したトランザクションにトランザクションアイテ
- #: 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"
-@@ -1106,8 +1181,8 @@ msgstr "TransactionItem の状態は設定されていません: %s"
- msgid "Can't add console output to unsaved transaction"
- msgstr "未保存のトランザクションにコンソールの出力を追加できません"
- 
-+#~ msgid "Failed to parse module artifact NEVRA '%s'"
-+#~ msgstr "モジュールアーティファクト NEVRA '%s' の解析に失敗しました"
-+
- #~ 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 505d1e15..5c972958 100644
---- a/po/ko.po
-+++ b/po/ko.po
-@@ -3,20 +3,22 @@
- # This file is distributed under the same license as the PACKAGE package.
- # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
- # simmon <simmon@nplob.com>, 2021.
-+# Kim InSoo <simmon@nplob.com>, 2022.
- msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2021-05-16 09:18-0400\n"
--"PO-Revision-Date: 2021-04-24 16:02+0000\n"
--"Last-Translator: simmon <simmon@nplob.com>\n"
--"Language-Team: Korean <https://translate.fedoraproject.org/projects/dnf/libdnf-dnf-4-master/ko/>\n"
-+"POT-Creation-Date: 2022-02-28 10:38+0100\n"
-+"PO-Revision-Date: 2022-03-01 07:37+0000\n"
-+"Last-Translator: Kim InSoo <simmon@nplob.com>\n"
-+"Language-Team: Korean <https://translate.fedoraproject.org/projects/dnf/"
-+"libdnf-rhel-9/ko/>\n"
- "Language: ko\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
- "Plural-Forms: nplurals=1; plural=0;\n"
--"X-Generator: Weblate 4.6\n"
-+"X-Generator: Weblate 4.11\n"
- 
- #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
- msgid "no value specified"
-@@ -44,13 +46,13 @@ msgstr "잘못된 값"
- 
- #: libdnf/conf/ConfigMain.cpp:207
- msgid "value 1 is not allowed"
--msgstr "값 1은 허용하지 않습니다"
-+msgstr "값 1은 허용되지 않습니다"
- 
- #: libdnf/conf/ConfigMain.cpp:209
- msgid "negative value is not allowed"
--msgstr "음수 값은 허용하지 않습니다"
-+msgstr "음수 값은 허용되지 않습니다"
- 
--#: libdnf/conf/ConfigMain.cpp:341
-+#: libdnf/conf/ConfigMain.cpp:343
- #, c-format
- msgid "percentage '%s' is out of range"
- msgstr "백분율 '%s' 범위를 벗어났습니다"
-@@ -105,127 +107,153 @@ msgstr "변환 할 수 없습니다 '%s'초까지"
- msgid "GetValue(): Value not set"
- msgstr "GetValue () : 값이 설정되지 않았습니다"
- 
--#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179
-+#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
- #, c-format
- msgid "Cannot enable more streams from module '%s' at the same time"
- msgstr "동시에 모듈 '%s’에서 다른 스트림을 활성화 할 수 없습니다"
- 
--#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3206
-+#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214
- #, c-format
- msgid ""
- "Cannot enable module '%1$s' stream '%2$s': State of module already modified"
--msgstr "모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었습니다"
-+msgstr ""
-+"모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었"
-+"습니다"
- 
--#: libdnf/dnf-context.cpp:3253
-+#: libdnf/dnf-context.cpp:3263
- #, c-format
- msgid "Modular dependency problem with Defaults: %s"
- msgstr "기본설정에 모듈 의존성 문제: %s"
- 
--#: libdnf/dnf-context.cpp:3256
-+#: libdnf/dnf-context.cpp:3266
- #, c-format
- msgid "Modular dependency problem with the latest modules: %s"
--msgstr "최신 모듈: %s 에 모듈러 의존성 문제"
-+msgstr "최신 모듈에 모듈 의존성 문제: %s"
- 
--#: libdnf/dnf-context.cpp:3260
-+#: libdnf/dnf-context.cpp:3270
- #, c-format
- msgid "Modular dependency problem: %s"
- msgstr "모듈러 의존성 문제: %s"
- 
--#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318
--#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368
--#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416
--#: libdnf/dnf-context.cpp:3460 libdnf/dnf-context.cpp:3470
-+#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
-+#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
-+#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
-+#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
- #, c-format
- msgid "Unable to resolve argument '%s'"
- msgstr "인수 %s를 해결 할 수 없습니다"
- 
--#: libdnf/dnf-context.cpp:3301
-+#: libdnf/dnf-context.cpp:3300
- #, c-format
- msgid ""
--"Only module name is required. Ignoring unneeded information in argument: "
--"'%s'"
-+"Only module name is required. Ignoring unneeded information in argument: '%s'"
- msgstr "모듈 이름만 필요합니다. 인수에서 불필요한 정보를 무시합니다: '%s'"
- 
--#: libdnf/dnf-context.cpp:3315
-+#: libdnf/dnf-context.cpp:3314
- #, c-format
- msgid "Cannot reset module '%s': State of module already modified"
- msgstr "모듈 '%s 를 재설정 할 수 없습니다: 모듈 상태가 이미 변경되었습니다"
- 
--#: libdnf/dnf-context.cpp:3326
-+#: libdnf/dnf-context.cpp:3325
- #, c-format
- msgid "Cannot disable module '%s': State of module already modified"
- msgstr "모듈 '%s'사용 할 수 없습니다: 모듈 상태는 이미 적재되었습니다"
- 
--#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3449
--#: libdnf/dnf-context.cpp:3559
-+#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452
-+#: libdnf/dnf-context.cpp:3633
- msgid "No modular data available"
- msgstr "모듈러 자료를 이용 할 수 없습니다"
- 
--#: libdnf/dnf-context.cpp:3374
-+#: libdnf/dnf-context.cpp:3373
- #, c-format
- msgid "Ignoring unneeded information in argument: '%s'"
- msgstr "인수: '%s'에 불필요한 정보를 무시하기"
- 
--#: libdnf/dnf-context.cpp:3412
-+#: libdnf/dnf-context.cpp:3411
- #, c-format
- msgid ""
- "Problem during enablement of dependency tree for module '%1$s' stream "
- "'%2$s': %3$s"
--msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 동안에 발생하는 문제"
-+msgstr ""
-+"모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 중에 발생하는 "
-+"문제"
- 
--#: libdnf/dnf-context.cpp:3424
--msgid "Problems appeared for module enable request"
--msgstr "모듈 활성화 요청에 나타난 문제"
-+#: libdnf/dnf-context.cpp:3423
-+msgid "Problems appeared for module enable request:"
-+msgstr "모듈 활성화 요청에 나타난 문제:"
-+
-+#: libdnf/dnf-context.cpp:3518
-+#, c-format
-+msgid "No active module packages found for module spec '%s'"
-+msgstr "모듈 상세 '%s'를 위한 활성 모듈 꾸러미가 없습니다"
- 
--#. this really should never happen; unless the modular repodata is corrupted
--#: libdnf/dnf-context.cpp:3496
-+#: libdnf/dnf-context.cpp:3523
- #, c-format
--msgid "Failed to parse module artifact NEVRA '%s'"
--msgstr "모듈 artifact NERVRA '%s'를 구문 분석하는데 실패하였습니다"
-+msgid "Cannot install module '%s' from fail-safe repository"
-+msgstr "실패-방지 저장소에서 모듈 '%s'를 설치 할 수 없습니다"
- 
- #: libdnf/dnf-context.cpp:3530
--msgid "Problems appeared for module install request"
--msgstr "모듈 설치 요청을 위해 나타난 문제"
-+#, c-format
-+msgid "No profile found matching '%s'"
-+msgstr "'%s'와 일치하는 프로파일을 찾을 수 없습니다"
-+
-+#: libdnf/dnf-context.cpp:3584
-+#, c-format
-+msgid "No match for package '%s' for module spec %s"
-+msgstr "꾸러미 '%s'가(모듈 상세 %s에 대한) 일치하지 않습니다"
- 
--#: libdnf/dnf-context.cpp:3590
--msgid "Problems appeared for module reset request"
--msgstr "모듈 초기화 요청을 위해 나나탄 문제"
-+#: libdnf/dnf-context.cpp:3595
-+#, c-format
-+msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
-+msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 설치 중에 발생하는 문제"
- 
--#: libdnf/dnf-context.cpp:3592
--msgid "Problems appeared for module disable request"
--msgstr "모듈 비활성화 요청을 위해 나타난 문제"
-+#: libdnf/dnf-context.cpp:3604
-+msgid "Problems appeared for module install request:"
-+msgstr "모듈 설치 요청을 위해 나타난 문제:"
- 
--#: libdnf/dnf-context.cpp:3628
-+#: libdnf/dnf-context.cpp:3663
-+msgid "Problems appeared for module reset request:"
-+msgstr "모듈 초기화 요청을 위해 나타난 문제:"
-+
-+#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
-+msgid "Problems appeared for module disable request:"
-+msgstr "모듈 비활성화 요청을 위해 나타난 문제:"
-+
-+#: libdnf/dnf-context.cpp:3755
- #, c-format
- msgid ""
--"The operation would result in switching of module '%s' stream '%s' to stream"
--" '%s'"
-+"The operation would result in switching of module '%s' stream '%s' to stream "
-+"'%s'"
- msgstr "이 동작은 모듈 '%s'' 스트림 ‘%s'에서 스트림 '%s'로의 전환 결과입니다"
- 
--#: libdnf/dnf-context.cpp:3632
-+#: libdnf/dnf-context.cpp:3759
- 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."
-+"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"
--"설치된 모든 내용을 모듈에서 제거하고 ‘<module_name>' 명령을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치할 수 있습니다."
-+"설치된 모든 내용을 모듈에서 제거하고 ‘<module_name>' 명령을 사용하여 모듈을 "
-+"재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니"
-+"다."
- 
--#: libdnf/dnf-goal.cpp:85
-+#: libdnf/dnf-goal.cpp:107
- msgid "Could not depsolve transaction; "
- msgstr "연결을 해제 할 수 없습니다; "
- 
--#: libdnf/dnf-goal.cpp:87
-+#: libdnf/dnf-goal.cpp:109
- #, c-format
- msgid "%i problem detected:\n"
- msgid_plural "%i problems detected:\n"
- msgstr[0] "%i 발견 된 문제 :\n"
- 
--#: libdnf/dnf-goal.cpp:95
-+#: libdnf/dnf-goal.cpp:117
- #, c-format
- msgid " Problem %1$i: %2$s\n"
- msgstr " 문제 %1$i: %2$s\n"
- 
--#: libdnf/dnf-goal.cpp:97
-+#: libdnf/dnf-goal.cpp:119
- #, c-format
- msgid " Problem: %s\n"
- msgstr " 문제: %s\n"
-@@ -235,7 +263,9 @@ msgstr " 문제: %s\n"
- msgid ""
- "No available modular metadata for modular package '%s'; cannot be installed "
- "on the system"
--msgstr "모듈 꾸러미 '%s'를 위하여 사용 가능한 메타 데이터가 없으며; 시스템에 설치할 수 없습니다"
-+msgstr ""
-+"모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 "
-+"할 수 없습니다"
- 
- #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
- #, c-format
-@@ -274,7 +304,8 @@ msgstr "연결 실행 오류 : %s"
- 
- #: libdnf/dnf-rpmts.cpp:283
- msgid "Error running transaction and no problems were reported!"
--msgstr "연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!"
-+msgstr ""
-+"연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!"
- 
- #: libdnf/dnf-rpmts.cpp:346
- msgid "Fatal error, run database recovery"
-@@ -290,84 +321,84 @@ msgstr "꾸러미를 찾지 못했습니다. %s"
- msgid "could not add erase element %1$s(%2$i)"
- msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)"
- 
--#: libdnf/dnf-sack.cpp:395
-+#: libdnf/dnf-sack.cpp:394
- msgid "failed to add solv"
- msgstr "solv를 추가하지 못했습니다"
- 
--#: libdnf/dnf-sack.cpp:414
-+#: libdnf/dnf-sack.cpp:413
- #, c-format
- msgid "no %1$s string for %2$s"
- msgstr "%2$s에 %1$s 문자열이 없습니다"
- 
--#: libdnf/dnf-sack.cpp:424
-+#: libdnf/dnf-sack.cpp:423
- #, c-format
- msgid "failed to open: %s"
- msgstr "열지 못했습니다 : %s"
- 
--#: libdnf/dnf-sack.cpp:503
-+#: libdnf/dnf-sack.cpp:502
- #, c-format
- msgid "cannot create temporary file: %s"
- msgstr "임시 파일을 만들 수 없습니다. %s"
- 
--#: libdnf/dnf-sack.cpp:513
-+#: libdnf/dnf-sack.cpp:512
- #, c-format
- msgid "failed opening tmp file: %s"
- msgstr "여는 tmp 파일을 열지 못했습니다. %s"
- 
--#: libdnf/dnf-sack.cpp:525
-+#: libdnf/dnf-sack.cpp:524
- #, c-format
- msgid "write_main() failed writing data: %i"
- msgstr "write_main() 실패한 쓰기 자료: %i"
- 
--#: libdnf/dnf-sack.cpp:542
-+#: libdnf/dnf-sack.cpp:541
- msgid "write_main() failed to re-load written solv file"
- msgstr "write_main ()이 작성된 solv 파일을 다시 적재하지 못했습니다"
- 
--#: libdnf/dnf-sack.cpp:607
-+#: libdnf/dnf-sack.cpp:606
- #, c-format
- msgid "can not create temporary file %s"
- msgstr "임시 파일을 만들 수 없습니다. %s"
- 
--#: libdnf/dnf-sack.cpp:625
-+#: libdnf/dnf-sack.cpp:624
- #, c-format
- msgid "write_ext(%1$d) has failed: %2$d"
- msgstr "write_ext(%1$d) 실패하였습니다: %2$d"
- 
--#: libdnf/dnf-sack.cpp:680
-+#: libdnf/dnf-sack.cpp:679
- msgid "null repo md file"
- msgstr "null repo md 파일"
- 
--#: libdnf/dnf-sack.cpp:689
-+#: libdnf/dnf-sack.cpp:688
- #, c-format
- msgid "can not read file %1$s: %2$s"
- msgstr "파일을 읽을 수 없습니다. %1$s: %2$s"
- 
--#: libdnf/dnf-sack.cpp:703
-+#: libdnf/dnf-sack.cpp:702
- msgid "repo_add_solv() has failed."
- msgstr "repo_add_solv() 실패하였습니다."
- 
--#: libdnf/dnf-sack.cpp:716
-+#: libdnf/dnf-sack.cpp:715
- msgid "loading of MD_TYPE_PRIMARY has failed."
- msgstr "MD_TYPE_PRIMARY를 적재하지 못했습니다."
- 
--#: libdnf/dnf-sack.cpp:729
-+#: libdnf/dnf-sack.cpp:728
- msgid "repo_add_repomdxml/rpmmd() has failed."
- msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다."
- 
--#: libdnf/dnf-sack.cpp:796
-+#: libdnf/dnf-sack.cpp:795
- msgid "failed to auto-detect architecture"
- msgstr "구조 자동 검색에 실패했습니다"
- 
--#: libdnf/dnf-sack.cpp:961
-+#: libdnf/dnf-sack.cpp:960
- #, c-format
- msgid "failed creating cachedir %s"
- msgstr "캐시 된 생성 실패 %s"
- 
--#: libdnf/dnf-sack.cpp:1738
-+#: libdnf/dnf-sack.cpp:1737
- msgid "failed loading RPMDB"
- msgstr "RPMDB로드 실패"
- 
--#: libdnf/dnf-sack.cpp:2462
-+#: libdnf/dnf-sack.cpp:2521
- #, c-format
- msgid "No module defaults found: %s"
- msgstr "모듈 기본 설정을 찾을 수 없습니다: %s"
-@@ -396,64 +427,73 @@ msgstr "국가에서 행해진 %1$p 크기가 설정되지 않았습니다. [%2$
- msgid "already at 100%% state [%s]"
- msgstr "이미 100 %% 상태 [%s]"
- 
--#: libdnf/dnf-transaction.cpp:300
-+#: libdnf/dnf-transaction.cpp:302
- #, c-format
- msgid "Sources not set when trying to ensure package %s"
- msgstr "꾸러미를 만들 때 소스가 설정되지 않았습니다. %s"
- 
--#: libdnf/dnf-transaction.cpp:326
-+#: libdnf/dnf-transaction.cpp:328
- #, 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)"
- 
--#: libdnf/dnf-transaction.cpp:367
-+#: libdnf/dnf-transaction.cpp:369
- msgid "Failed to check untrusted: "
- msgstr "신뢰할 수 없는지 확인하지 못했습니다. "
- 
--#: libdnf/dnf-transaction.cpp:377
-+#: libdnf/dnf-transaction.cpp:379
- #, c-format
- msgid "Downloaded file for %s not found"
- msgstr "에 대한 내려받기 파일 %s 찾을 수 없음"
- 
--#: libdnf/dnf-transaction.cpp:397
-+#: libdnf/dnf-transaction.cpp:399
- #, 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"
- 
--#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
-+#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
- msgid "Failed to get value for CacheDir"
- msgstr "CacheDir에 대한 값을 가져 오는 데 실패했습니다"
- 
--#: libdnf/dnf-transaction.cpp:911
-+#: libdnf/dnf-transaction.cpp:913
- #, c-format
- msgid "Failed to get filesystem free size for %s: "
- msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s: "
- 
--#: libdnf/dnf-transaction.cpp:919
-+#: libdnf/dnf-transaction.cpp:921
- #, c-format
- msgid "Failed to get filesystem free size for %s"
- msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s"
- 
--#: libdnf/dnf-transaction.cpp:935
-+#: libdnf/dnf-transaction.cpp:937
- #, c-format
- msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
- msgstr "여유 공간이 부족합니다. %1$s: 필요 %2$s, 이용 가능 %3$s"
- 
--#: libdnf/dnf-transaction.cpp:1195
-+#: libdnf/dnf-transaction.cpp:1196
- msgid "failed to set root"
- msgstr "루트를 설정하지 못했습니다"
- 
--#: libdnf/dnf-transaction.cpp:1416
-+#: libdnf/dnf-transaction.cpp:1417
- #, c-format
- msgid "Error %i running transaction test"
- msgstr "%i 연결 실행 중 오류"
- 
--#: libdnf/dnf-transaction.cpp:1456
-+#: libdnf/dnf-transaction.cpp:1441
-+#, c-format
-+msgid "Error %i opening rpm database"
-+msgstr "rpm 데이타베이스를 여는 동안 오류 %i가 발생했습니다"
-+
-+#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
-+msgid "The rpmdbCookie() function did not return cookie of rpm database."
-+msgstr "rpmdbCookie() 함수는 rpm 데이타베이스의 쿠키를 반환하지 않습니다."
-+
-+#: libdnf/dnf-transaction.cpp:1464
- #, c-format
- msgid "Error %i running transaction"
- msgstr "오류 %i 실행중인 연결"
- 
--#: libdnf/dnf-transaction.cpp:1472
-+#: libdnf/dnf-transaction.cpp:1480
- #, c-format
- msgid "Transaction did not go to writing phase, but returned no error(%i)"
- msgstr "연결이 쓰기 단계로 이동하지 않았지만 오류를 반환하지 않았습니다 (%i)"
-@@ -554,7 +594,7 @@ msgstr "%s 와 %s 모두 설치 할 수 없습니다"
- #: libdnf/goal/Goal.cpp:107
- #, c-format
- msgid "package %s conflicts with %s provided by %s"
--msgstr "제공된 꾸러미 %s 은 %s에 의해 %s 와 충돌합니다"
-+msgstr "꾸러미 %s은 %s에서 제공된 %s와 충돌합니다"
- 
- #: libdnf/goal/Goal.cpp:108
- #, c-format
-@@ -574,12 +614,12 @@ msgstr "꾸러미 %s가 %s에 의해 %s가 암시적으로 폐기되었습니다
- #: libdnf/goal/Goal.cpp:111
- #, c-format
- msgid "package %s requires %s, but none of the providers can be installed"
--msgstr "꾸러미 %s에 %s가 필요하지만 공급 업체 없어 설치할 수 없습니다"
-+msgstr "꾸러미 %s는 %s가 필요하지만, 공급자가 없어 설치 할 수 없습니다"
- 
- #: libdnf/goal/Goal.cpp:112
- #, c-format
- msgid "package %s conflicts with %s provided by itself"
--msgstr "꾸러미 %s가 %s와 자체적으로 충돌합니다"
-+msgstr "꾸러미 %s가 자체적으로 제공된 %s와 충돌합니다"
- 
- #: libdnf/goal/Goal.cpp:113
- #, c-format
-@@ -622,12 +662,12 @@ msgstr "모듈 %s 에 필요한 %s 가 제공되지 않았습니다"
- #: libdnf/goal/Goal.cpp:133
- #, c-format
- msgid "cannot install both modules %s and %s"
--msgstr "%s 와 %s 모듈을 모두 설치할 수 없습니다"
-+msgstr "모듈 %s 와 %s를 모두 설치 할 수 없습니다"
- 
- #: libdnf/goal/Goal.cpp:134
- #, c-format
- msgid "module %s conflicts with %s provided by %s"
--msgstr "모듈 %s 가 %s와 함께 %s와 충돌합니다"
-+msgstr "모듈 %s가 %s에 의해 제공된 %s와 충돌합니다"
- 
- #: libdnf/goal/Goal.cpp:135
- #, c-format
-@@ -659,42 +699,42 @@ msgstr "모듈 %s가 자체적으로 제공된 %s와 충돌합니다"
- msgid "both module %s and %s obsolete %s"
- msgstr "모듈 %s와 %s가 %s에서 폐기되었습니다"
- 
--#: libdnf/goal/Goal.cpp:1055
-+#: libdnf/goal/Goal.cpp:1141
- msgid "no solver set"
- msgstr "solver 설정 없음"
- 
--#: libdnf/goal/Goal.cpp:1060
-+#: libdnf/goal/Goal.cpp:1146
- #, c-format
- msgid "failed to make %s absolute"
- msgstr "%s 절대값을 생성을 실패하였습니다"
- 
--#: libdnf/goal/Goal.cpp:1067
-+#: libdnf/goal/Goal.cpp:1153
- #, c-format
- msgid "failed writing debugdata to %1$s: %2$s"
- msgstr "%1$s: %2$s에 디버그자료 쓰기를 실패했습니다"
- 
--#: libdnf/goal/Goal.cpp:1079
-+#: libdnf/goal/Goal.cpp:1165
- msgid "no solv in the goal"
- msgstr "목표에 solv가 없다"
- 
--#: libdnf/goal/Goal.cpp:1081
-+#: libdnf/goal/Goal.cpp:1167
- msgid "no solution, cannot remove protected package"
- msgstr "해결책 없음, 보호 된 꾸러미를 제거 할 수 없음"
- 
--#: libdnf/goal/Goal.cpp:1084
-+#: libdnf/goal/Goal.cpp:1170
- msgid "no solution possible"
- msgstr "해결책 없음"
- 
--#: libdnf/goal/Goal.cpp:1210
-+#: libdnf/goal/Goal.cpp:1296
- msgid "Problem: "
- msgstr "문제: "
- 
--#: libdnf/goal/Goal.cpp:1215
-+#: libdnf/goal/Goal.cpp:1301
- #, c-format
- msgid "Problem %d: "
- msgstr "문제 %d: "
- 
--#: libdnf/goal/Goal.cpp:1542
-+#: libdnf/goal/Goal.cpp:1634
- msgid ""
- "The operation would result in removing the following protected packages: "
- msgstr "이 작업으로 인해 다음과 같은 보호 꾸러미가 제거됩니다. "
-@@ -719,30 +759,30 @@ msgstr "디렉토리를 생성 할 수 없습니다 %1$s: %2$s"
- msgid "cannot stat path %1$s: %2$s"
- msgstr "경로 %1$s: %2$s stat 할 수 없습니다"
- 
--#: libdnf/module/ModulePackage.cpp:573
-+#: libdnf/module/ModulePackage.cpp:604
- #, c-format
- msgid "Invalid format of Platform module: %s"
- msgstr "잘못된 형식의 기반 모듈: %s"
- 
--#: libdnf/module/ModulePackage.cpp:588
-+#: libdnf/module/ModulePackage.cpp:619
- msgid "Multiple module platforms provided by available packages\n"
- msgstr "사용 가능한 꾸러미로 제공되는 다중 모듈 기반\n"
- 
--#: libdnf/module/ModulePackage.cpp:601
-+#: libdnf/module/ModulePackage.cpp:632
- msgid "Multiple module platforms provided by installed packages\n"
- msgstr "설치된 꾸러미로 제공되는 다중 모듈 기반\n"
- 
--#: libdnf/module/ModulePackage.cpp:628
-+#: libdnf/module/ModulePackage.cpp:659
- #, c-format
- msgid "Detection of Platform Module in %s failed: %s"
- msgstr "%s 실패한: %s 에서 기반(Platform) 모듈 감지"
- 
--#: libdnf/module/ModulePackage.cpp:637
-+#: libdnf/module/ModulePackage.cpp:668
- #, c-format
- msgid "Missing PLATFORM_ID in %s"
- msgstr "%s에서 PLATFORM_ID가 누락됨"
- 
--#: libdnf/module/ModulePackage.cpp:642
-+#: libdnf/module/ModulePackage.cpp:673
- msgid "No valid Platform ID detected"
- msgstr "유효한 기반(Platform) ID가 없습니다"
- 
-@@ -754,63 +794,65 @@ msgstr "모듈 '%s’를 위해 다중 스트림을 활성화 할 수 없습니
- #: libdnf/module/ModulePackageContainer.cpp:346
- #, c-format
- msgid "Conflicting defaults with repo '%s': %s"
--msgstr "repo '%s: %s'와 기본 설정이 충돌합니다"
-+msgstr "저장소 '%s: %s'와 기본 설정이 충돌합니다"
- 
--#: libdnf/module/ModulePackageContainer.cpp:918
-+#: libdnf/module/ModulePackageContainer.cpp:917
- msgid "Installing module profiles:\n"
- msgstr "모듈 프로파일 설치:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:933
-+#: libdnf/module/ModulePackageContainer.cpp:932
- msgid "Disabling module profiles:\n"
- msgstr "모듈 프로파일 비활성화:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:948
-+#: libdnf/module/ModulePackageContainer.cpp:947
- msgid "Enabling module streams:\n"
- msgstr "모듈 스트림 활성화:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:962
-+#: libdnf/module/ModulePackageContainer.cpp:961
- msgid "Switching module streams:\n"
- msgstr "모듈 스트림 전환:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:980
-+#: libdnf/module/ModulePackageContainer.cpp:979
- msgid "Disabling modules:\n"
- msgstr "모듈 비활성화:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:991
-+#: libdnf/module/ModulePackageContainer.cpp:990
- msgid "Resetting modules:\n"
- msgstr "모듈 재설정:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1674
-+#: libdnf/module/ModulePackageContainer.cpp:1704
- #, c-format
- msgid "Unable to load modular Fail-Safe data at '%s'"
- msgstr "'%s'에서 모듈식 Fail-Safe 자료를 적재 할 수 없습니다"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1680
-+#: libdnf/module/ModulePackageContainer.cpp:1710
- #, c-format
- msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
- msgstr "모듈 '%s:%s'에 대해 모듈식 Fail-Safe 자료를 적재 할 수 없습니다"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1763
-+#: libdnf/module/ModulePackageContainer.cpp:1791
- #, c-format
- msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
- msgstr "모듈식 Fail-Safe 데이터에 대한 “%s\" 디렉토리를 만들 수 없습니다: %s"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1779
-+#: libdnf/module/ModulePackageContainer.cpp:1807
- #, c-format
- msgid "Unable to save a modular Fail Safe data to '%s'"
- msgstr "모듈식 Fail Safe 자료를 '%s'에 저장 할 수 없습니다"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1802
-+#: libdnf/module/ModulePackageContainer.cpp:1830
- #, c-format
- msgid "Unable to remove a modular Fail Safe data in '%s'"
- msgstr "'%s'에서 모듈식 Fail Safe 자료를 제거 할 수 없습니다"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1834
-+#: libdnf/module/ModulePackageContainer.cpp:1862
- #, c-format
- msgid ""
- "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is "
- "disabled"
--msgstr "'%s:%s'에 모듈 폐기를 적용 할 수 없다 왜냐하면 목표 모듈 '%s' 을 사용 할 수 없기 때문입니다"
-+msgstr ""
-+"'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 "
-+"되어 있기 때문에)"
- 
- #: libdnf/module/modulemd/ModuleMetadata.cpp:86
- #, c-format
-@@ -837,10 +879,10 @@ msgstr "기본값을 최신화에 실패하였습니다: %s"
- msgid "Failed to upgrade streams: %s"
- msgstr "스트림 최신화에 실패하였습니다: %s"
- 
--#: libdnf/module/modulemd/ModuleMetadata.cpp:219
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:221
- #, c-format
- msgid "Cannot retrieve module obsoletes because no stream matching %s: %s"
--msgstr "모듈 폐기를 검색 할 수 없습니다 왜냐하면 스트림 일치 %s: %s 가 없습니다"
-+msgstr "%s: %s 일치하는 스트림이 없기 때문에 구식 모듈을 검색 할 수 없습니다"
- 
- #: libdnf/plugin/plugin.cpp:46
- #, c-format
-@@ -883,8 +925,9 @@ msgid ""
- "deprecated and the support will be dropped in future versions. Use '=' "
- "operator instead."
- msgstr ""
--"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 연산자는 더 이상 사용되지 않으며, 향후 "
--"버전에서는 지원이 중단됩니다. 대신 '=' 연산자를 사용하세요."
-+"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 "
-+"연산자는 더 이상 사용되지 않으며, 향후 버전에서는 지원이 중단됩니다. 대신 "
-+"'=' 연산자를 사용하세요."
- 
- #: libdnf/repo/Repo.cpp:321
- #, c-format
-@@ -897,21 +940,24 @@ msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
- msgstr "저장소 '%s'는 지원하지 않는 유형: 'type=%s'이며, 건너뜁니다."
- 
- #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641
--#: libdnf/repo/Repo.cpp:1382
-+#: libdnf/repo/Repo.cpp:1400
- #, c-format
- msgid "repo '%s': 'basecachedir' is not set"
- msgstr "repo '%s': 'basecachedir가 구성되어 있지 않습니다"
- 
- #: libdnf/repo/Repo.cpp:512
- msgid ""
--"Maximum download speed is lower than minimum. Please change configuration of"
--" minrate or throttle"
--msgstr "최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주세요"
-+"Maximum download speed is lower than minimum. Please change configuration of "
-+"minrate or throttle"
-+msgstr ""
-+"최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주"
-+"세요"
- 
- #: libdnf/repo/Repo.cpp:546
- #, c-format
- msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
--msgstr "repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다"
-+msgstr ""
-+"repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다"
- 
- #: libdnf/repo/Repo.cpp:548
- msgid "'proxy_username' is set but not 'proxy_password'"
-@@ -932,128 +978,134 @@ msgstr "%s: gpgme_data_new_from_fd(): %s"
- msgid "%s: gpgme_op_import(): %s"
- msgstr "%s: gpgme_op_import(): %s"
- 
--#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907
-+#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236
-+#: libdnf/repo/Repo.cpp:1279
-+#, c-format
-+msgid "Cannot create repo temporary directory \"%s\": %s"
-+msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s"
-+
-+#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917
- #, c-format
- msgid "%s: gpgme_ctx_set_engine_info(): %s"
- msgstr "%s: gpgme_ctx_set_engine_info(): %s"
- 
--#: libdnf/repo/Repo.cpp:740 libdnf/repo/Repo.cpp:804
-+#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808
- #, c-format
- msgid "can not list keys: %s"
- msgstr "열쇠를 나열 할 수 없습니다 : %s"
- 
--#: libdnf/repo/Repo.cpp:833
-+#: libdnf/repo/Repo.cpp:837
- #, c-format
- msgid "Failed to retrieve GPG key for repo '%s': %s"
- msgstr "repo '%s': %sf 를 위해 GPG key 가져오기에 실패하였습니다"
- 
--#: libdnf/repo/Repo.cpp:886
-+#: libdnf/repo/Repo.cpp:890
- #, c-format
- msgid "repo %s: 0x%s already imported"
- msgstr "repo %s: 0x%s를 이미 가져왔습니다"
- 
--#: libdnf/repo/Repo.cpp:914
-+#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79
-+#, c-format
-+msgid "Failed to create directory \"%s\": %d - %s"
-+msgstr "디렉토리를 생성 할 수 없습니다 \"%s\": %d - %s"
-+
-+#: libdnf/repo/Repo.cpp:924
- #, c-format
- msgid "repo %s: imported key 0x%s."
- msgstr "repo %s: 0x%s 키를 가져왔습니다."
- 
--#: libdnf/repo/Repo.cpp:1162
-+#: libdnf/repo/Repo.cpp:1176
- #, c-format
- msgid "reviving: repo '%s' skipped, no metalink."
--msgstr "부활 : repo '%s'건너 뛰었습니다."
-+msgstr "부활: repo '%s' 건너 뛰었으며, 메타링크가 없습니다."
- 
--#: libdnf/repo/Repo.cpp:1181
-+#: libdnf/repo/Repo.cpp:1195
- #, c-format
- msgid "reviving: repo '%s' skipped, no usable hash."
--msgstr "부활 : repo '%s'건너 뛰었습니다. 사용 가능한 해시가 없습니다."
-+msgstr "부활: repo '%s'건너 뛰었으며, 사용 가능한 해쉬가 없습니다."
- 
--#: libdnf/repo/Repo.cpp:1204
-+#: libdnf/repo/Repo.cpp:1218
- #, c-format
- msgid "reviving: failed for '%s', mismatched %s sum."
--msgstr "되살리기 : 실패한 '%s', 불일치 %s 합집합."
-+msgstr "부활 : '%s'에 실패하고, %s 합과 일치하지 않음."
- 
--#: libdnf/repo/Repo.cpp:1210
-+#: libdnf/repo/Repo.cpp:1224
- #, c-format
- msgid "reviving: '%s' can be revived - metalink checksums match."
--msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - metalink 체크섬이 일치합니다."
-+msgstr "부활: '%s'는 부활 할 수 있습니다 - 메타링크 체크섬이 일치합니다."
- 
--#: libdnf/repo/Repo.cpp:1235
-+#: libdnf/repo/Repo.cpp:1253
- #, c-format
- msgid "reviving: '%s' can be revived - repomd matches."
--msgstr "되살아 난다 : '%s'부활 할 수 있습니다 - repomd가 일치합니다."
-+msgstr "부활: '%s'는 부활 할 수 있습니다 - repomd가 일치합니다."
- 
--#: libdnf/repo/Repo.cpp:1237
-+#: libdnf/repo/Repo.cpp:1255
- #, c-format
- msgid "reviving: failed for '%s', mismatched repomd."
--msgstr "되살리기 : 실패한 '%s', 일치하지 않는 repomd."
-+msgstr "부활: '%s'에 실패하고, 일치하지 않은 repomd."
- 
--#: libdnf/repo/Repo.cpp:1255
-+#: libdnf/repo/Repo.cpp:1273
- #, c-format
- msgid "Cannot create repo destination directory \"%s\": %s"
- msgstr "repo 목적지 디렉토리 \"%s\": %s 를 생성 할 수 없습니다"
- 
--#: libdnf/repo/Repo.cpp:1261
--#, c-format
--msgid "Cannot create repo temporary directory \"%s\": %s"
--msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s"
--
--#: libdnf/repo/Repo.cpp:1275
-+#: libdnf/repo/Repo.cpp:1293
- #, c-format
- msgid "Cannot create directory \"%s\": %s"
- msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s"
- 
--#: libdnf/repo/Repo.cpp:1298
-+#: libdnf/repo/Repo.cpp:1316
- #, c-format
- msgid "Cannot rename directory \"%s\" to \"%s\": %s"
- msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s"
- 
--#: libdnf/repo/Repo.cpp:1321
-+#: libdnf/repo/Repo.cpp:1339
- #, c-format
- msgid "repo: using cache for: %s"
--msgstr "repo : 캐시 사용 : %s"
-+msgstr "repo: 캐쉬 사용: %s"
- 
--#: libdnf/repo/Repo.cpp:1333
-+#: libdnf/repo/Repo.cpp:1351
- #, c-format
- msgid "Cache-only enabled but no cache for '%s'"
--msgstr "캐시 만 사용 가능하지만 '%s'"
-+msgstr "캐쉬만 사용 가능하지만 '%s'를 위해 캐쉬가 없습니다"
- 
--#: libdnf/repo/Repo.cpp:1337
-+#: libdnf/repo/Repo.cpp:1355
- #, c-format
- msgid "repo: downloading from remote: %s"
--msgstr "repo : 원격에서 내려받기 중 : %s"
-+msgstr "repo: 원격에서 내려받기 중: %s"
- 
--#: libdnf/repo/Repo.cpp:1344
-+#: libdnf/repo/Repo.cpp:1362
- #, c-format
- msgid "Failed to download metadata for repo '%s': %s"
--msgstr "repo '%s': %s 를 위해 메타데이타 내려받기에 실패하였습니다"
-+msgstr "repo를 위한 메타자료 내려받기에 실패하였습니다 '%s': %s"
- 
--#: libdnf/repo/Repo.cpp:1370
-+#: libdnf/repo/Repo.cpp:1388
- msgid "getCachedir(): Computation of SHA256 failed"
--msgstr "getCachedir () : SHA256 계산에 실패했습니다"
-+msgstr "getCachedir(): SHA256 계산에 실패했습니다"
- 
--#: libdnf/repo/Repo.cpp:1398
-+#: libdnf/repo/Repo.cpp:1416
- #, c-format
- msgid "Cannot create persistdir \"%s\": %s"
- msgstr "persistdir \"%s\": %s 를 생성 할 수 없습니다"
- 
--#: libdnf/repo/Repo.cpp:1775
-+#: libdnf/repo/Repo.cpp:1793
- msgid "resume cannot be used simultaneously with the byterangestart param"
- msgstr "이력서는 byterangestart 매개 변수와 동시에 사용 할 수 없습니다"
- 
--#: libdnf/repo/Repo.cpp:1792
-+#: libdnf/repo/Repo.cpp:1810
- #, c-format
- msgid "PackageTarget initialization failed: %s"
--msgstr "PackageTarget 초기화에 실패했습니다 : %s"
-+msgstr "PackageTarget 초기화에 실패했습니다: %s"
- 
--#: libdnf/repo/Repo.cpp:1898
-+#: libdnf/repo/Repo.cpp:1916
- #, c-format
- msgid "Cannot open %s: %s"
--msgstr "열 수 없다 %s: %s"
-+msgstr "열 수 없습니다 %s: %s"
- 
--#: libdnf/repo/Repo.cpp:1942
-+#: libdnf/repo/Repo.cpp:1960
- #, c-format
- msgid "Log handler with id %ld doesn't exist"
--msgstr "ID가 있는 로그 처리기 %ld 존재하지 않는다"
-+msgstr "ID가 있는 로그 처리기 %ld가 존재하지 않습니다"
- 
- #: libdnf/transaction/Swdb.cpp:173
- msgid "In progress"
-@@ -1079,11 +1131,12 @@ msgstr "완료된 연결에서 연결 항목 최신화를 시도합니다"
- 
- #: libdnf/transaction/Transformer.cpp:76
- msgid "Database Corrupted: no row 'version' in table 'config'"
--msgstr "데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다"
-+msgstr ""
-+"데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다"
- 
- #: libdnf/transaction/Transformer.cpp:681
- msgid "Transformer: can't open history persist dir"
--msgstr "변형 : persist dir 기록을 열 수 없습니다"
-+msgstr "변형: persist dir 기록을 열 수 없습니다"
- 
- #: libdnf/transaction/Transformer.cpp:694
- msgid "Couldn't find a history database"
-@@ -1102,5 +1155,5 @@ msgstr "TransactionItem 상태가 설정되지 않았습니다. %s"
- msgid "Can't add console output to unsaved transaction"
- msgstr "저장되지 않은 연결에 콘솔 출력을 추가 할 수 없습니다"
- 
--#~ msgid "failed calculating RPMDB checksum"
--#~ msgstr "RPMDB 체크섬 계산 실패"
-+#~ msgid "Failed to parse module artifact NEVRA '%s'"
-+#~ msgstr "모듈 artifact NERVE '%s' 구분 분석에 실패함"
-diff --git a/po/libdnf.pot b/po/libdnf.pot
-index 7ab5b67e..d7fb56ad 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: 2021-06-13 09:18-0400\n"
-+"POT-Creation-Date: 2022-02-28 10:38+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"
-@@ -50,7 +50,7 @@ msgstr ""
- msgid "negative value is not allowed"
- msgstr ""
- 
--#: libdnf/conf/ConfigMain.cpp:341
-+#: libdnf/conf/ConfigMain.cpp:343
- #, c-format
- msgid "percentage '%s' is out of range"
- msgstr ""
-@@ -105,122 +105,122 @@ msgstr ""
- msgid "GetValue(): Value not set"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3173 libdnf/dnf-context.cpp:3182
-+#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
- #, c-format
- msgid "Cannot enable more streams from module '%s' at the same time"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3191 libdnf/dnf-context.cpp:3209
-+#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214
- #, c-format
- msgid ""
- "Cannot enable module '%1$s' stream '%2$s': State of module already modified"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3258
-+#: libdnf/dnf-context.cpp:3263
- #, c-format
- msgid "Modular dependency problem with Defaults: %s"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3261
-+#: libdnf/dnf-context.cpp:3266
- #, c-format
- msgid "Modular dependency problem with the latest modules: %s"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3265
-+#: libdnf/dnf-context.cpp:3270
- #, c-format
- msgid "Modular dependency problem: %s"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3288 libdnf/dnf-context.cpp:3312
--#: libdnf/dnf-context.cpp:3323 libdnf/dnf-context.cpp:3362
--#: libdnf/dnf-context.cpp:3378 libdnf/dnf-context.cpp:3410
--#: libdnf/dnf-context.cpp:3459 libdnf/dnf-context.cpp:3469
-+#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
-+#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
-+#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
-+#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
- #, c-format
- msgid "Unable to resolve argument '%s'"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3295
-+#: libdnf/dnf-context.cpp:3300
- #, c-format
- msgid ""
- "Only module name is required. Ignoring unneeded information in argument: '%s'"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3309
-+#: libdnf/dnf-context.cpp:3314
- #, c-format
- msgid "Cannot reset module '%s': State of module already modified"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3320
-+#: libdnf/dnf-context.cpp:3325
- #, c-format
- msgid "Cannot disable module '%s': State of module already modified"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3351 libdnf/dnf-context.cpp:3447
--#: libdnf/dnf-context.cpp:3620
-+#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452
-+#: libdnf/dnf-context.cpp:3633
- msgid "No modular data available"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3368
-+#: libdnf/dnf-context.cpp:3373
- #, c-format
- msgid "Ignoring unneeded information in argument: '%s'"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3406
-+#: libdnf/dnf-context.cpp:3411
- #, c-format
- msgid ""
- "Problem during enablement of dependency tree for module '%1$s' stream "
- "'%2$s': %3$s"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3418
-+#: libdnf/dnf-context.cpp:3423
- msgid "Problems appeared for module enable request:"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3513
-+#: libdnf/dnf-context.cpp:3518
- #, c-format
- msgid "No active module packages found for module spec '%s'"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3518
-+#: libdnf/dnf-context.cpp:3523
- #, c-format
- msgid "Cannot install module '%s' from fail-safe repository"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3525
-+#: libdnf/dnf-context.cpp:3530
- #, c-format
- msgid "No profile found matching '%s'"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3571
-+#: libdnf/dnf-context.cpp:3584
- #, c-format
- msgid "No match for package '%s' for module spec %s"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3582
-+#: libdnf/dnf-context.cpp:3595
- #, c-format
- msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3591
-+#: libdnf/dnf-context.cpp:3604
- msgid "Problems appeared for module install request:"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3650
-+#: libdnf/dnf-context.cpp:3663
- msgid "Problems appeared for module reset request:"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3651
-+#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
- msgid "Problems appeared for module disable request:"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3689
-+#: libdnf/dnf-context.cpp:3755
- #, c-format
- msgid ""
- "The operation would result in switching of module '%s' stream '%s' to stream "
- "'%s'"
- msgstr ""
- 
--#: libdnf/dnf-context.cpp:3693
-+#: libdnf/dnf-context.cpp:3759
- 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 "
-@@ -228,23 +228,23 @@ msgid ""
- "reset the module, you can install the other stream."
- msgstr ""
- 
--#: libdnf/dnf-goal.cpp:85
-+#: libdnf/dnf-goal.cpp:107
- msgid "Could not depsolve transaction; "
- msgstr ""
- 
--#: libdnf/dnf-goal.cpp:87
-+#: libdnf/dnf-goal.cpp:109
- #, c-format
- msgid "%i problem detected:\n"
- msgid_plural "%i problems detected:\n"
- msgstr[0] ""
- msgstr[1] ""
- 
--#: libdnf/dnf-goal.cpp:95
-+#: libdnf/dnf-goal.cpp:117
- #, c-format
- msgid " Problem %1$i: %2$s\n"
- msgstr ""
- 
--#: libdnf/dnf-goal.cpp:97
-+#: libdnf/dnf-goal.cpp:119
- #, c-format
- msgid " Problem: %s\n"
- msgstr ""
-@@ -309,84 +309,84 @@ msgstr ""
- msgid "could not add erase element %1$s(%2$i)"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:395
-+#: libdnf/dnf-sack.cpp:394
- msgid "failed to add solv"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:414
-+#: libdnf/dnf-sack.cpp:413
- #, c-format
- msgid "no %1$s string for %2$s"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:424
-+#: libdnf/dnf-sack.cpp:423
- #, c-format
- msgid "failed to open: %s"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:503
-+#: libdnf/dnf-sack.cpp:502
- #, c-format
- msgid "cannot create temporary file: %s"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:513
-+#: libdnf/dnf-sack.cpp:512
- #, c-format
- msgid "failed opening tmp file: %s"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:525
-+#: libdnf/dnf-sack.cpp:524
- #, c-format
- msgid "write_main() failed writing data: %i"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:542
-+#: libdnf/dnf-sack.cpp:541
- msgid "write_main() failed to re-load written solv file"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:607
-+#: libdnf/dnf-sack.cpp:606
- #, c-format
- msgid "can not create temporary file %s"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:625
-+#: libdnf/dnf-sack.cpp:624
- #, c-format
- msgid "write_ext(%1$d) has failed: %2$d"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:680
-+#: libdnf/dnf-sack.cpp:679
- msgid "null repo md file"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:689
-+#: libdnf/dnf-sack.cpp:688
- #, c-format
- msgid "can not read file %1$s: %2$s"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:703
-+#: libdnf/dnf-sack.cpp:702
- msgid "repo_add_solv() has failed."
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:716
-+#: libdnf/dnf-sack.cpp:715
- msgid "loading of MD_TYPE_PRIMARY has failed."
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:729
-+#: libdnf/dnf-sack.cpp:728
- msgid "repo_add_repomdxml/rpmmd() has failed."
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:796
-+#: libdnf/dnf-sack.cpp:795
- msgid "failed to auto-detect architecture"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:961
-+#: libdnf/dnf-sack.cpp:960
- #, c-format
- msgid "failed creating cachedir %s"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:1738
-+#: libdnf/dnf-sack.cpp:1737
- msgid "failed loading RPMDB"
- msgstr ""
- 
--#: libdnf/dnf-sack.cpp:2462
-+#: libdnf/dnf-sack.cpp:2521
- #, c-format
- msgid "No module defaults found: %s"
- msgstr ""
-@@ -415,64 +415,73 @@ msgstr ""
- msgid "already at 100%% state [%s]"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:300
-+#: libdnf/dnf-transaction.cpp:302
- #, c-format
- msgid "Sources not set when trying to ensure package %s"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:326
-+#: libdnf/dnf-transaction.cpp:328
- #, c-format
- msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:367
-+#: libdnf/dnf-transaction.cpp:369
- msgid "Failed to check untrusted: "
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:377
-+#: libdnf/dnf-transaction.cpp:379
- #, c-format
- msgid "Downloaded file for %s not found"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:397
-+#: libdnf/dnf-transaction.cpp:399
- #, c-format
- msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
-+#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
- msgid "Failed to get value for CacheDir"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:911
-+#: libdnf/dnf-transaction.cpp:913
- #, c-format
- msgid "Failed to get filesystem free size for %s: "
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:919
-+#: libdnf/dnf-transaction.cpp:921
- #, c-format
- msgid "Failed to get filesystem free size for %s"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:935
-+#: libdnf/dnf-transaction.cpp:937
- #, c-format
- msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:1195
-+#: libdnf/dnf-transaction.cpp:1196
- msgid "failed to set root"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:1416
-+#: libdnf/dnf-transaction.cpp:1417
- #, c-format
- msgid "Error %i running transaction test"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:1456
-+#: libdnf/dnf-transaction.cpp:1441
-+#, c-format
-+msgid "Error %i opening rpm database"
-+msgstr ""
-+
-+#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
-+msgid "The rpmdbCookie() function did not return cookie of rpm database."
-+msgstr ""
-+
-+#: libdnf/dnf-transaction.cpp:1464
- #, c-format
- msgid "Error %i running transaction"
- msgstr ""
- 
--#: libdnf/dnf-transaction.cpp:1472
-+#: libdnf/dnf-transaction.cpp:1480
- #, c-format
- msgid "Transaction did not go to writing phase, but returned no error(%i)"
- msgstr ""
-@@ -678,42 +687,42 @@ msgstr ""
- msgid "both module %s and %s obsolete %s"
- msgstr ""
- 
--#: libdnf/goal/Goal.cpp:1055
-+#: libdnf/goal/Goal.cpp:1141
- msgid "no solver set"
- msgstr ""
- 
--#: libdnf/goal/Goal.cpp:1060
-+#: libdnf/goal/Goal.cpp:1146
- #, c-format
- msgid "failed to make %s absolute"
- msgstr ""
- 
--#: libdnf/goal/Goal.cpp:1067
-+#: libdnf/goal/Goal.cpp:1153
- #, c-format
- msgid "failed writing debugdata to %1$s: %2$s"
- msgstr ""
- 
--#: libdnf/goal/Goal.cpp:1079
-+#: libdnf/goal/Goal.cpp:1165
- msgid "no solv in the goal"
- msgstr ""
- 
--#: libdnf/goal/Goal.cpp:1081
-+#: libdnf/goal/Goal.cpp:1167
- msgid "no solution, cannot remove protected package"
- msgstr ""
- 
--#: libdnf/goal/Goal.cpp:1084
-+#: libdnf/goal/Goal.cpp:1170
- msgid "no solution possible"
- msgstr ""
- 
--#: libdnf/goal/Goal.cpp:1210
-+#: libdnf/goal/Goal.cpp:1296
- msgid "Problem: "
- msgstr ""
- 
--#: libdnf/goal/Goal.cpp:1215
-+#: libdnf/goal/Goal.cpp:1301
- #, c-format
- msgid "Problem %d: "
- msgstr ""
- 
--#: libdnf/goal/Goal.cpp:1542
-+#: libdnf/goal/Goal.cpp:1634
- msgid ""
- "The operation would result in removing the following protected packages: "
- msgstr ""
-@@ -738,30 +747,30 @@ msgstr ""
- msgid "cannot stat path %1$s: %2$s"
- msgstr ""
- 
--#: libdnf/module/ModulePackage.cpp:573
-+#: libdnf/module/ModulePackage.cpp:604
- #, c-format
- msgid "Invalid format of Platform module: %s"
- msgstr ""
- 
--#: libdnf/module/ModulePackage.cpp:588
-+#: libdnf/module/ModulePackage.cpp:619
- msgid "Multiple module platforms provided by available packages\n"
- msgstr ""
- 
--#: libdnf/module/ModulePackage.cpp:601
-+#: libdnf/module/ModulePackage.cpp:632
- msgid "Multiple module platforms provided by installed packages\n"
- msgstr ""
- 
--#: libdnf/module/ModulePackage.cpp:628
-+#: libdnf/module/ModulePackage.cpp:659
- #, c-format
- msgid "Detection of Platform Module in %s failed: %s"
- msgstr ""
- 
--#: libdnf/module/ModulePackage.cpp:637
-+#: libdnf/module/ModulePackage.cpp:668
- #, c-format
- msgid "Missing PLATFORM_ID in %s"
- msgstr ""
- 
--#: libdnf/module/ModulePackage.cpp:642
-+#: libdnf/module/ModulePackage.cpp:673
- msgid "No valid Platform ID detected"
- msgstr ""
- 
-@@ -799,32 +808,32 @@ msgstr ""
- msgid "Resetting modules:\n"
- msgstr ""
- 
--#: libdnf/module/ModulePackageContainer.cpp:1673
-+#: libdnf/module/ModulePackageContainer.cpp:1704
- #, c-format
- msgid "Unable to load modular Fail-Safe data at '%s'"
- msgstr ""
- 
--#: libdnf/module/ModulePackageContainer.cpp:1679
-+#: libdnf/module/ModulePackageContainer.cpp:1710
- #, c-format
- msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
- msgstr ""
- 
--#: libdnf/module/ModulePackageContainer.cpp:1762
-+#: libdnf/module/ModulePackageContainer.cpp:1791
- #, c-format
- msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
- msgstr ""
- 
--#: libdnf/module/ModulePackageContainer.cpp:1778
-+#: libdnf/module/ModulePackageContainer.cpp:1807
- #, c-format
- msgid "Unable to save a modular Fail Safe data to '%s'"
- msgstr ""
- 
--#: libdnf/module/ModulePackageContainer.cpp:1801
-+#: libdnf/module/ModulePackageContainer.cpp:1830
- #, c-format
- msgid "Unable to remove a modular Fail Safe data in '%s'"
- msgstr ""
- 
--#: libdnf/module/ModulePackageContainer.cpp:1833
-+#: libdnf/module/ModulePackageContainer.cpp:1862
- #, c-format
- msgid ""
- "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is "
-@@ -856,7 +865,7 @@ msgstr ""
- msgid "Failed to upgrade streams: %s"
- msgstr ""
- 
--#: libdnf/module/modulemd/ModuleMetadata.cpp:219
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:221
- #, c-format
- msgid "Cannot retrieve module obsoletes because no stream matching %s: %s"
- msgstr ""
-@@ -914,7 +923,7 @@ msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
- msgstr ""
- 
- #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641
--#: libdnf/repo/Repo.cpp:1382
-+#: libdnf/repo/Repo.cpp:1400
- #, c-format
- msgid "repo '%s': 'basecachedir' is not set"
- msgstr ""
-@@ -949,125 +958,131 @@ msgstr ""
- msgid "%s: gpgme_op_import(): %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907
-+#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236
-+#: libdnf/repo/Repo.cpp:1279
-+#, c-format
-+msgid "Cannot create repo temporary directory \"%s\": %s"
-+msgstr ""
-+
-+#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917
- #, c-format
- msgid "%s: gpgme_ctx_set_engine_info(): %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:740 libdnf/repo/Repo.cpp:804
-+#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808
- #, c-format
- msgid "can not list keys: %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:833
-+#: libdnf/repo/Repo.cpp:837
- #, c-format
- msgid "Failed to retrieve GPG key for repo '%s': %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:886
-+#: libdnf/repo/Repo.cpp:890
- #, c-format
- msgid "repo %s: 0x%s already imported"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:914
-+#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79
-+#, c-format
-+msgid "Failed to create directory \"%s\": %d - %s"
-+msgstr ""
-+
-+#: libdnf/repo/Repo.cpp:924
- #, c-format
- msgid "repo %s: imported key 0x%s."
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1162
-+#: libdnf/repo/Repo.cpp:1176
- #, c-format
- msgid "reviving: repo '%s' skipped, no metalink."
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1181
-+#: libdnf/repo/Repo.cpp:1195
- #, c-format
- msgid "reviving: repo '%s' skipped, no usable hash."
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1204
-+#: libdnf/repo/Repo.cpp:1218
- #, c-format
- msgid "reviving: failed for '%s', mismatched %s sum."
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1210
-+#: libdnf/repo/Repo.cpp:1224
- #, c-format
- msgid "reviving: '%s' can be revived - metalink checksums match."
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1235
-+#: libdnf/repo/Repo.cpp:1253
- #, c-format
- msgid "reviving: '%s' can be revived - repomd matches."
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1237
-+#: libdnf/repo/Repo.cpp:1255
- #, c-format
- msgid "reviving: failed for '%s', mismatched repomd."
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1255
-+#: libdnf/repo/Repo.cpp:1273
- #, c-format
- msgid "Cannot create repo destination directory \"%s\": %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1261
--#, c-format
--msgid "Cannot create repo temporary directory \"%s\": %s"
--msgstr ""
--
--#: libdnf/repo/Repo.cpp:1275
-+#: libdnf/repo/Repo.cpp:1293
- #, c-format
- msgid "Cannot create directory \"%s\": %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1298
-+#: libdnf/repo/Repo.cpp:1316
- #, c-format
- msgid "Cannot rename directory \"%s\" to \"%s\": %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1321
-+#: libdnf/repo/Repo.cpp:1339
- #, c-format
- msgid "repo: using cache for: %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1333
-+#: libdnf/repo/Repo.cpp:1351
- #, c-format
- msgid "Cache-only enabled but no cache for '%s'"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1337
-+#: libdnf/repo/Repo.cpp:1355
- #, c-format
- msgid "repo: downloading from remote: %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1344
-+#: libdnf/repo/Repo.cpp:1362
- #, c-format
- msgid "Failed to download metadata for repo '%s': %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1370
-+#: libdnf/repo/Repo.cpp:1388
- msgid "getCachedir(): Computation of SHA256 failed"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1398
-+#: libdnf/repo/Repo.cpp:1416
- #, c-format
- msgid "Cannot create persistdir \"%s\": %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1775
-+#: libdnf/repo/Repo.cpp:1793
- msgid "resume cannot be used simultaneously with the byterangestart param"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1792
-+#: libdnf/repo/Repo.cpp:1810
- #, c-format
- msgid "PackageTarget initialization failed: %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1898
-+#: libdnf/repo/Repo.cpp:1916
- #, c-format
- msgid "Cannot open %s: %s"
- msgstr ""
- 
--#: libdnf/repo/Repo.cpp:1942
-+#: libdnf/repo/Repo.cpp:1960
- #, 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 9fb6834d..864983a9 100644
---- a/po/zh_CN.po
-+++ b/po/zh_CN.po
-@@ -1,20 +1,21 @@
- # Charles Lee <lchopn@gmail.com>, 2017. #zanata, 2020, 2021.
--# Ludek Janda <ljanda@redhat.com>, 2018. #zanata
--# Qiyu Yan <yanqiyu01@gmail.com>, 2021.
-+# Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2021.
-+# Sundeep Anand <suanand@redhat.com>, 2021, 2022.
- msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2021-05-16 09:18-0400\n"
--"PO-Revision-Date: 2021-04-23 08:02+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: 2022-02-28 10:38+0100\n"
-+"PO-Revision-Date: 2022-03-02 10:16+0000\n"
-+"Last-Translator: Sundeep Anand <suanand@redhat.com>\n"
-+"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/"
-+"projects/dnf/libdnf-rhel-9/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.6\n"
-+"X-Generator: Weblate 4.11\n"
- 
- #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40
- msgid "no value specified"
-@@ -33,7 +34,7 @@ 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:204 libdnf/conf/OptionEnum.cpp:83
- #: libdnf/conf/OptionNumber.cpp:88
-@@ -41,16 +42,14 @@ msgid "invalid value"
- msgstr "无效值"
- 
- #: libdnf/conf/ConfigMain.cpp:207
--#, fuzzy
--#| msgid "'%s' is not an allowed value"
- msgid "value 1 is not allowed"
--msgstr "'%s'  不是一个允许的值"
-+msgstr "1 不是一个被允许的值"
- 
- #: libdnf/conf/ConfigMain.cpp:209
- msgid "negative value is not allowed"
--msgstr ""
-+msgstr "负数值不被允许"
- 
--#: libdnf/conf/ConfigMain.cpp:341
-+#: libdnf/conf/ConfigMain.cpp:343
- #, c-format
- msgid "percentage '%s' is out of range"
- msgstr "百分数 '%s' 超出范围"
-@@ -58,23 +57,23 @@ msgstr "百分数 '%s' 超出范围"
- #: 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: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:64 libdnf/conf/OptionStringList.cpp:59
- #, c-format
- msgid "'%s' is not an allowed value"
--msgstr "'%s'  不是一个允许的值"
-+msgstr "'%s' 不是一个允许的值"
- 
- #: libdnf/conf/OptionNumber.cpp:73
- #, c-format
-@@ -105,128 +104,148 @@ msgstr "无法把 '%s' 转换为秒"
- msgid "GetValue(): Value not set"
- msgstr "GetValue(): 值没有设置"
- 
--#: libdnf/dnf-context.cpp:3170 libdnf/dnf-context.cpp:3179
-+#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187
- #, c-format
- msgid "Cannot enable more streams from module '%s' at the same time"
- msgstr "无法同时从模块 '%s' 中启用更多流"
- 
--#: libdnf/dnf-context.cpp:3188 libdnf/dnf-context.cpp:3206
-+#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214
- #, 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:3253
-+#: libdnf/dnf-context.cpp:3263
- #, c-format
- msgid "Modular dependency problem with Defaults: %s"
- msgstr "默认设置的模块依赖性问题:%s"
- 
--#: libdnf/dnf-context.cpp:3256
--#, fuzzy, c-format
--#| msgid "some dependency problem"
-+#: libdnf/dnf-context.cpp:3266
-+#, c-format
- msgid "Modular dependency problem with the latest modules: %s"
--msgstr "一些依赖问题"
-+msgstr "最新模块的模块化依赖关系问题: %s"
- 
--#: libdnf/dnf-context.cpp:3260
--#, fuzzy, c-format
--#| msgid "some dependency problem"
-+#: libdnf/dnf-context.cpp:3270
-+#, c-format
- msgid "Modular dependency problem: %s"
--msgstr "一些依赖问题"
-+msgstr "模块依赖问题:%s"
- 
--#: libdnf/dnf-context.cpp:3294 libdnf/dnf-context.cpp:3318
--#: libdnf/dnf-context.cpp:3329 libdnf/dnf-context.cpp:3368
--#: libdnf/dnf-context.cpp:3384 libdnf/dnf-context.cpp:3416
--#: libdnf/dnf-context.cpp:3460 libdnf/dnf-context.cpp:3470
--#, fuzzy, c-format
--#| msgid "Failed to resolve: %s"
-+#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317
-+#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367
-+#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415
-+#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474
-+#, c-format
- msgid "Unable to resolve argument '%s'"
--msgstr "无法解析: %s"
-+msgstr "无法解析参数 '%s'"
- 
--#: libdnf/dnf-context.cpp:3301
-+#: libdnf/dnf-context.cpp:3300
- #, c-format
- msgid ""
--"Only module name is required. Ignoring unneeded information in argument: "
--"'%s'"
-+"Only module name is required. Ignoring unneeded information in argument: '%s'"
- msgstr "只需要模块名。忽略参数 '%s' 中的无用信息"
- 
--#: libdnf/dnf-context.cpp:3315
-+#: libdnf/dnf-context.cpp:3314
- #, c-format
- msgid "Cannot reset module '%s': State of module already modified"
- msgstr "无法重置模块 '%s':已修改的模块状态"
- 
--#: libdnf/dnf-context.cpp:3326
-+#: libdnf/dnf-context.cpp:3325
- #, c-format
- msgid "Cannot disable module '%s': State of module already modified"
- msgstr "无法禁用模块 '%s':已经修改的模块状态"
- 
--#: libdnf/dnf-context.cpp:3357 libdnf/dnf-context.cpp:3449
--#: libdnf/dnf-context.cpp:3559
-+#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452
-+#: libdnf/dnf-context.cpp:3633
- msgid "No modular data available"
--msgstr ""
-+msgstr "没有可用的模块数据"
- 
--#: libdnf/dnf-context.cpp:3374
-+#: libdnf/dnf-context.cpp:3373
- #, c-format
- msgid "Ignoring unneeded information in argument: '%s'"
--msgstr ""
-+msgstr "忽略参数:\"%s\" 中不需要的信息"
- 
--#: libdnf/dnf-context.cpp:3412
-+#: libdnf/dnf-context.cpp:3411
- #, c-format
- msgid ""
- "Problem during enablement of dependency tree for module '%1$s' stream "
- "'%2$s': %3$s"
--msgstr ""
-+msgstr "为模块 '%1$s' 流 '%2$s' 启用依赖树时出现问题: %3$s"
- 
--#: libdnf/dnf-context.cpp:3424
--msgid "Problems appeared for module enable request"
--msgstr ""
-+#: libdnf/dnf-context.cpp:3423
-+msgid "Problems appeared for module enable request:"
-+msgstr "模块启用请求出现问题:"
- 
--#. this really should never happen; unless the modular repodata is corrupted
--#: libdnf/dnf-context.cpp:3496
-+#: libdnf/dnf-context.cpp:3518
- #, c-format
--msgid "Failed to parse module artifact NEVRA '%s'"
--msgstr ""
-+msgid "No active module packages found for module spec '%s'"
-+msgstr "未找到模块规范 '%s' 的活动模块包"
-+
-+#: libdnf/dnf-context.cpp:3523
-+#, c-format
-+msgid "Cannot install module '%s' from fail-safe repository"
-+msgstr "无法从故障保护存储库安装模块 '%s'"
- 
- #: libdnf/dnf-context.cpp:3530
--msgid "Problems appeared for module install request"
--msgstr ""
-+#, c-format
-+msgid "No profile found matching '%s'"
-+msgstr "未找到匹配 '%s' 的配置文件"
- 
--#: libdnf/dnf-context.cpp:3590
--msgid "Problems appeared for module reset request"
--msgstr ""
-+#: libdnf/dnf-context.cpp:3584
-+#, c-format
-+msgid "No match for package '%s' for module spec %s"
-+msgstr "没有匹配模块规范 %s 的包 '%s'"
- 
--#: libdnf/dnf-context.cpp:3592
--msgid "Problems appeared for module disable request"
--msgstr ""
-+#: libdnf/dnf-context.cpp:3595
-+#, c-format
-+msgid "Problem during install for module '%1$s' stream '%2$s': %3$s"
-+msgstr "在安装模块 '%1$s' 流 '%2$s'时的问题:%3$s"
- 
--#: libdnf/dnf-context.cpp:3628
-+#: libdnf/dnf-context.cpp:3604
-+msgid "Problems appeared for module install request:"
-+msgstr "模块安装请求出现问题:"
-+
-+#: libdnf/dnf-context.cpp:3663
-+msgid "Problems appeared for module reset request:"
-+msgstr "模块重置请求出现问题:"
-+
-+#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723
-+msgid "Problems appeared for module disable request:"
-+msgstr "模块禁用请求出现问题:"
-+
-+#: libdnf/dnf-context.cpp:3755
- #, c-format
- msgid ""
--"The operation would result in switching of module '%s' stream '%s' to stream"
--" '%s'"
--msgstr ""
-+"The operation would result in switching of module '%s' stream '%s' to stream "
-+"'%s'"
-+msgstr "这个操作会把模块 '%s' 从流 '%s' 切换到流 '%s'"
- 
--#: libdnf/dnf-context.cpp:3632
-+#: libdnf/dnf-context.cpp:3759
- 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."
-+"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:85
-+#: libdnf/dnf-goal.cpp:107
- msgid "Could not depsolve transaction; "
--msgstr "无法 depsolve 事务: "
-+msgstr "无法 depsolve 事务; "
- 
--#: libdnf/dnf-goal.cpp:87
-+#: libdnf/dnf-goal.cpp:109
- #, c-format
- msgid "%i problem detected:\n"
- msgid_plural "%i problems detected:\n"
- msgstr[0] "发现 %i 问题:\n"
- 
--#: libdnf/dnf-goal.cpp:95
-+#: libdnf/dnf-goal.cpp:117
- #, c-format
- msgid " Problem %1$i: %2$s\n"
- msgstr " 问题 %1$i: %2$s\n"
- 
--#: libdnf/dnf-goal.cpp:97
-+#: libdnf/dnf-goal.cpp:119
- #, c-format
- msgid " Problem: %s\n"
- msgstr " 问题: %s\n"
-@@ -236,7 +255,7 @@ msgstr " 问题: %s\n"
- msgid ""
- "No available modular metadata for modular package '%s'; cannot be installed "
- "on the system"
--msgstr "对于模块软件包 '%s' 没有可用的模块元数据,它将不能被安装至此系统上"
-+msgstr "模块软件包 '%s' 没有可用的模块元数据,它将不能被安装至此系统上"
- 
- #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166
- #, c-format
-@@ -291,87 +310,87 @@ msgstr "无法找到软件包 %s"
- msgid "could not add erase element %1$s(%2$i)"
- msgstr "无法添加删除元素 %1$s(%2$i)"
- 
--#: libdnf/dnf-sack.cpp:395
-+#: libdnf/dnf-sack.cpp:394
- msgid "failed to add solv"
- msgstr "添加 solv 失败"
- 
--#: libdnf/dnf-sack.cpp:414
-+#: libdnf/dnf-sack.cpp:413
- #, c-format
- msgid "no %1$s string for %2$s"
- msgstr "没有为 %2$s 的 %1$s 字符串"
- 
--#: libdnf/dnf-sack.cpp:424
-+#: libdnf/dnf-sack.cpp:423
- #, c-format
- msgid "failed to open: %s"
- msgstr "打开失败:%s"
- 
--#: libdnf/dnf-sack.cpp:503
-+#: libdnf/dnf-sack.cpp:502
- #, c-format
- msgid "cannot create temporary file: %s"
- msgstr "不能创建临时文件: %s"
- 
--#: libdnf/dnf-sack.cpp:513
-+#: libdnf/dnf-sack.cpp:512
- #, c-format
- msgid "failed opening tmp file: %s"
- msgstr "打开 tmp 文件失败: %s"
- 
--#: libdnf/dnf-sack.cpp:525
-+#: libdnf/dnf-sack.cpp:524
- #, c-format
- msgid "write_main() failed writing data: %i"
- msgstr "write_main() 写数据失败: %i"
- 
--#: libdnf/dnf-sack.cpp:542
-+#: libdnf/dnf-sack.cpp:541
- msgid "write_main() failed to re-load written solv file"
- msgstr "write_main() 重新加载写的 solv 文件失败"
- 
--#: libdnf/dnf-sack.cpp:607
-+#: libdnf/dnf-sack.cpp:606
- #, c-format
- msgid "can not create temporary file %s"
- msgstr "不能创建临时文件 %s"
- 
--#: libdnf/dnf-sack.cpp:625
-+#: libdnf/dnf-sack.cpp:624
- #, c-format
- msgid "write_ext(%1$d) has failed: %2$d"
- msgstr "write_ext(%1$d) 已失败: %2$d"
- 
--#: libdnf/dnf-sack.cpp:680
-+#: libdnf/dnf-sack.cpp:679
- msgid "null repo md file"
- msgstr "null repo md 文件"
- 
--#: libdnf/dnf-sack.cpp:689
-+#: libdnf/dnf-sack.cpp:688
- #, c-format
- msgid "can not read file %1$s: %2$s"
- msgstr "不能读文件 %1$s: %2$s"
- 
--#: libdnf/dnf-sack.cpp:703
-+#: libdnf/dnf-sack.cpp:702
- msgid "repo_add_solv() has failed."
- msgstr "repo_add_solv() 已失败。"
- 
--#: libdnf/dnf-sack.cpp:716
-+#: libdnf/dnf-sack.cpp:715
- msgid "loading of MD_TYPE_PRIMARY has failed."
- msgstr "加载 MD_TYPE_PRIMARY 失败。"
- 
--#: libdnf/dnf-sack.cpp:729
-+#: libdnf/dnf-sack.cpp:728
- msgid "repo_add_repomdxml/rpmmd() has failed."
- msgstr "repo_add_repomdxml/rpmmd() 已失败。"
- 
--#: libdnf/dnf-sack.cpp:796
-+#: libdnf/dnf-sack.cpp:795
- msgid "failed to auto-detect architecture"
- msgstr "自动检测架构失败"
- 
--#: libdnf/dnf-sack.cpp:961
-+#: libdnf/dnf-sack.cpp:960
- #, c-format
- msgid "failed creating cachedir %s"
- msgstr "无法创建 cachedir %s"
- 
--#: libdnf/dnf-sack.cpp:1738
-+#: libdnf/dnf-sack.cpp:1737
- msgid "failed loading RPMDB"
- msgstr "无法加载 RPMDB"
- 
--#: libdnf/dnf-sack.cpp:2462
-+#: libdnf/dnf-sack.cpp:2521
- #, c-format
- msgid "No module defaults found: %s"
--msgstr ""
-+msgstr "没有找到模块默认设置:%s"
- 
- #: libdnf/dnf-state.cpp:1184
- #, c-format
-@@ -397,64 +416,73 @@ msgstr "在一个没有设置大小的状态 %1$p 中做! [%2$s]"
- msgid "already at 100%% state [%s]"
- msgstr "已是 100%% 状态 [%s]"
- 
--#: libdnf/dnf-transaction.cpp:300
-+#: libdnf/dnf-transaction.cpp:302
- #, c-format
- msgid "Sources not set when trying to ensure package %s"
- msgstr "在尝试确保软件包 %s 时源没有设置"
- 
--#: libdnf/dnf-transaction.cpp:326
-+#: libdnf/dnf-transaction.cpp:328
- #, 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 已加载)"
- 
--#: libdnf/dnf-transaction.cpp:367
-+#: libdnf/dnf-transaction.cpp:369
- msgid "Failed to check untrusted: "
--msgstr "检查不被信任失败: "
-+msgstr "检查不被信任失败 : "
- 
--#: libdnf/dnf-transaction.cpp:377
-+#: libdnf/dnf-transaction.cpp:379
- #, c-format
- msgid "Downloaded file for %s not found"
- msgstr "没有找到下载的文件 %s"
- 
--#: libdnf/dnf-transaction.cpp:397
-+#: libdnf/dnf-transaction.cpp:399
- #, 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"
- 
--#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903
-+#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905
- msgid "Failed to get value for CacheDir"
- msgstr "无法为 CacheDir 获得值"
- 
--#: libdnf/dnf-transaction.cpp:911
-+#: libdnf/dnf-transaction.cpp:913
- #, c-format
- msgid "Failed to get filesystem free size for %s: "
--msgstr "无法为 %s 获得文件系统可用空间的大小: "
-+msgstr "无法为 %s 获得文件系统可用空间的大小: "
- 
--#: libdnf/dnf-transaction.cpp:919
-+#: libdnf/dnf-transaction.cpp:921
- #, c-format
- msgid "Failed to get filesystem free size for %s"
- msgstr "无法为 %s 获得文件系统可用空间的大小"
- 
--#: libdnf/dnf-transaction.cpp:935
-+#: libdnf/dnf-transaction.cpp:937
- #, c-format
- msgid "Not enough free space in %1$s: needed %2$s, available %3$s"
- msgstr "%1$s 没有足够的空闲空间: 需要 %2$s,可用 %3$s"
- 
--#: libdnf/dnf-transaction.cpp:1195
-+#: libdnf/dnf-transaction.cpp:1196
- msgid "failed to set root"
- msgstr "设置 root 失败"
- 
--#: libdnf/dnf-transaction.cpp:1416
-+#: libdnf/dnf-transaction.cpp:1417
- #, c-format
- msgid "Error %i running transaction test"
--msgstr "错误 %i 运行事务测试"
-+msgstr "运行事务测试时错误 %i"
- 
--#: libdnf/dnf-transaction.cpp:1456
-+#: libdnf/dnf-transaction.cpp:1441
-+#, c-format
-+msgid "Error %i opening rpm database"
-+msgstr "打开 rpm 数据库时错误 %i"
-+
-+#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495
-+msgid "The rpmdbCookie() function did not return cookie of rpm database."
-+msgstr "rpmdbCookie()函数没有返回 rpm 数据库的 cookie。"
-+
-+#: libdnf/dnf-transaction.cpp:1464
- #, c-format
- msgid "Error %i running transaction"
--msgstr "错误 %i 运行事务"
-+msgstr "运行事务时错误 %i"
- 
--#: libdnf/dnf-transaction.cpp:1472
-+#: libdnf/dnf-transaction.cpp:1480
- #, c-format
- msgid "Transaction did not go to writing phase, but returned no error(%i)"
- msgstr "事务没有进入写阶段,但没有返回错误(%i)"
-@@ -545,51 +573,51 @@ msgstr "软件包 %s 被排除过滤过滤掉"
- #: libdnf/goal/Goal.cpp:105
- #, c-format
- msgid "nothing provides %s needed by %s"
--msgstr ""
-+msgstr "没有东西可提供 %s(%s 需要)"
- 
- #: libdnf/goal/Goal.cpp:106
- #, c-format
- msgid "cannot install both %s and %s"
--msgstr ""
-+msgstr "无法同时安装 %s 和 %s"
- 
- #: libdnf/goal/Goal.cpp:107
- #, c-format
- msgid "package %s conflicts with %s provided by %s"
--msgstr ""
-+msgstr "软件包 %s 与 %s(由 %s 提供)冲突"
- 
- #: libdnf/goal/Goal.cpp:108
- #, c-format
- msgid "package %s obsoletes %s provided by %s"
--msgstr ""
-+msgstr "软件包 %s 取代了 %s(由 %s 提供)"
- 
- #: libdnf/goal/Goal.cpp:109
- #, c-format
- msgid "installed package %s obsoletes %s provided by %s"
--msgstr ""
-+msgstr "已安装的软件包 %s 取代了 %s(由 %s 提供)"
- 
- #: libdnf/goal/Goal.cpp:110
- #, c-format
- msgid "package %s implicitly obsoletes %s provided by %s"
--msgstr ""
-+msgstr "软件包 %s 隐式地取代了 %s(由 %s 提供)"
- 
- #: libdnf/goal/Goal.cpp:111
- #, c-format
- msgid "package %s requires %s, but none of the providers can be installed"
--msgstr ""
-+msgstr "软件包 %s 需要 %s,但没有提供者可以被安装"
- 
- #: libdnf/goal/Goal.cpp:112
- #, c-format
- msgid "package %s conflicts with %s provided by itself"
--msgstr ""
-+msgstr "软件包 %s 与自己提供的 %s 冲突"
- 
- #: libdnf/goal/Goal.cpp:113
- #, c-format
- msgid "both package %s and %s obsolete %s"
--msgstr ""
-+msgstr "软件包 %s 和 %s 同时取代了 %s"
- 
- #: libdnf/goal/Goal.cpp:119
- msgid "problem with installed module "
--msgstr ""
-+msgstr "已安装模块的问题 "
- 
- #: libdnf/goal/Goal.cpp:123
- #, c-format
-@@ -598,110 +626,107 @@ msgstr "模块 %s 不存在"
- 
- #: libdnf/goal/Goal.cpp:126
- msgid "cannot install the best update candidate for module "
--msgstr ""
-+msgstr "无法为模块安装最佳更新候选 "
- 
- #: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131
- #, c-format
- msgid "module %s is disabled"
--msgstr ""
-+msgstr "模块 %s 被禁用"
- 
- #: libdnf/goal/Goal.cpp:129
- #, c-format
- msgid "module %s does not have a compatible architecture"
--msgstr ""
-+msgstr "模块 %s 没有兼容的架构"
- 
- #: libdnf/goal/Goal.cpp:130
- #, c-format
- msgid "module %s is not installable"
--msgstr ""
-+msgstr "模块 %s 不可安装"
- 
- #: libdnf/goal/Goal.cpp:132
- #, c-format
- msgid "nothing provides %s needed by module %s"
--msgstr ""
-+msgstr "没有东西提供 %s(模块 %s 需要它)"
- 
- #: libdnf/goal/Goal.cpp:133
- #, c-format
- msgid "cannot install both modules %s and %s"
--msgstr ""
-+msgstr "无法同时安装模块 %s 和 %s"
- 
- #: libdnf/goal/Goal.cpp:134
- #, c-format
- msgid "module %s conflicts with %s provided by %s"
--msgstr ""
-+msgstr "模块 %s 与 %s (由 %s 提供)冲突"
- 
- #: libdnf/goal/Goal.cpp:135
- #, c-format
- msgid "module %s obsoletes %s provided by %s"
--msgstr ""
-+msgstr "模块 %s 取代了 %s(由 %s 提供)"
- 
- #: libdnf/goal/Goal.cpp:136
- #, c-format
- msgid "installed module %s obsoletes %s provided by %s"
--msgstr ""
-+msgstr "已安装的模块 %s 取代了 %s(由 %s 提供)"
- 
- #: libdnf/goal/Goal.cpp:137
- #, c-format
- msgid "module %s implicitly obsoletes %s provided by %s"
--msgstr ""
-+msgstr "模块 %s 隐式地取代了 %s(由 %s 提供)"
- 
- #: libdnf/goal/Goal.cpp:138
- #, c-format
- msgid "module %s requires %s, but none of the providers can be installed"
--msgstr ""
-+msgstr "模块 %s 需要 %s,但没有提供者可以被安装"
- 
- #: libdnf/goal/Goal.cpp:139
- #, c-format
- msgid "module %s conflicts with %s provided by itself"
--msgstr ""
-+msgstr "模块 %s 与自己提供的 %s 冲突"
- 
- #: libdnf/goal/Goal.cpp:140
- #, c-format
- msgid "both module %s and %s obsolete %s"
--msgstr ""
-+msgstr "模块 %s 和 %s 同时取代了 %s"
- 
--#: libdnf/goal/Goal.cpp:1055
-+#: libdnf/goal/Goal.cpp:1141
- msgid "no solver set"
- msgstr "无 solver 设置"
- 
--#: libdnf/goal/Goal.cpp:1060
-+#: libdnf/goal/Goal.cpp:1146
- #, c-format
- msgid "failed to make %s absolute"
- msgstr "无法使 %s 绝对"
- 
--#: libdnf/goal/Goal.cpp:1067
-+#: libdnf/goal/Goal.cpp:1153
- #, c-format
- msgid "failed writing debugdata to %1$s: %2$s"
- msgstr "把 debugdata 写入到 %1$s 失败: %2$s"
- 
--#: libdnf/goal/Goal.cpp:1079
-+#: libdnf/goal/Goal.cpp:1165
- msgid "no solv in the goal"
- msgstr "在目标中没有 solv"
- 
--#: libdnf/goal/Goal.cpp:1081
-+#: libdnf/goal/Goal.cpp:1167
- msgid "no solution, cannot remove protected package"
- msgstr "没有解决方案,不能删除保护的软件包"
- 
--#: libdnf/goal/Goal.cpp:1084
-+#: libdnf/goal/Goal.cpp:1170
- msgid "no solution possible"
- msgstr "没有可能的解决方案"
- 
--#: libdnf/goal/Goal.cpp:1210
--#, fuzzy
--#| msgid " Problem: %s\n"
-+#: libdnf/goal/Goal.cpp:1296
- msgid "Problem: "
--msgstr "问题: %s "
-+msgstr "问题: "
- 
--#: libdnf/goal/Goal.cpp:1215
--#, fuzzy, c-format
--#| msgid " Problem: %s\n"
-+#: libdnf/goal/Goal.cpp:1301
-+#, c-format
- msgid "Problem %d: "
--msgstr "问题: %s "
-+msgstr "问题 %d: "
- 
--#: libdnf/goal/Goal.cpp:1542
-+#: libdnf/goal/Goal.cpp:1634
- msgid ""
- "The operation would result in removing the following protected packages: "
--msgstr "这个操作可能会导致删除以下受保护的软件包: "
-+msgstr "这个操作将会导致删除以下受保护的软件包: "
- 
- #: libdnf/hy-iutil.cpp:326
- #, c-format
-@@ -721,105 +746,105 @@ msgstr "无法创建目录 %1$s: %2$s"
- #: libdnf/hy-iutil.cpp:415
- #, c-format
- msgid "cannot stat path %1$s: %2$s"
--msgstr ""
-+msgstr "无法 stat 路径 %1$s: %2$s"
- 
--#: libdnf/module/ModulePackage.cpp:573
-+#: libdnf/module/ModulePackage.cpp:604
- #, c-format
- msgid "Invalid format of Platform module: %s"
--msgstr ""
-+msgstr "Platform 模块格式无效 : %s"
- 
--#: libdnf/module/ModulePackage.cpp:588
-+#: libdnf/module/ModulePackage.cpp:619
- msgid "Multiple module platforms provided by available packages\n"
--msgstr ""
-+msgstr "可用软件包提供了多个模块平台\n"
- 
--#: libdnf/module/ModulePackage.cpp:601
-+#: libdnf/module/ModulePackage.cpp:632
- msgid "Multiple module platforms provided by installed packages\n"
--msgstr ""
-+msgstr "已安装的软件包提供了多个模块平台\n"
- 
--#: libdnf/module/ModulePackage.cpp:628
-+#: libdnf/module/ModulePackage.cpp:659
- #, c-format
- msgid "Detection of Platform Module in %s failed: %s"
--msgstr ""
-+msgstr "检测 %s 中的 Platform 模块失败: %s"
- 
--#: libdnf/module/ModulePackage.cpp:637
-+#: libdnf/module/ModulePackage.cpp:668
- #, c-format
- msgid "Missing PLATFORM_ID in %s"
--msgstr ""
-+msgstr "在 %s 中缺少 PLATFORM_ID"
- 
--#: libdnf/module/ModulePackage.cpp:642
-+#: libdnf/module/ModulePackage.cpp:673
- msgid "No valid Platform ID detected"
--msgstr ""
-+msgstr "没有检测到有效的 Platform ID"
- 
- #: libdnf/module/ModulePackageContainer.cpp:107
- #, c-format
- msgid "Cannot enable multiple streams for module '%s'"
--msgstr ""
-+msgstr "无法为模块 '%s' 启用多个流"
- 
- #: libdnf/module/ModulePackageContainer.cpp:346
- #, c-format
- msgid "Conflicting defaults with repo '%s': %s"
--msgstr ""
-+msgstr "默认设置与 repo '%s' 冲突 : %s"
- 
--#: libdnf/module/ModulePackageContainer.cpp:918
-+#: libdnf/module/ModulePackageContainer.cpp:917
- msgid "Installing module profiles:\n"
--msgstr ""
-+msgstr "安装模块配置档案:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:933
-+#: libdnf/module/ModulePackageContainer.cpp:932
- msgid "Disabling module profiles:\n"
--msgstr ""
-+msgstr "禁用模块配置档案:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:948
-+#: libdnf/module/ModulePackageContainer.cpp:947
- msgid "Enabling module streams:\n"
--msgstr ""
-+msgstr "启用模块流:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:962
-+#: libdnf/module/ModulePackageContainer.cpp:961
- msgid "Switching module streams:\n"
--msgstr ""
-+msgstr "切换模块流:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:980
-+#: libdnf/module/ModulePackageContainer.cpp:979
- msgid "Disabling modules:\n"
--msgstr ""
-+msgstr "禁用模块:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:991
-+#: libdnf/module/ModulePackageContainer.cpp:990
- msgid "Resetting modules:\n"
--msgstr ""
-+msgstr "重置模块:\n"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1674
-+#: libdnf/module/ModulePackageContainer.cpp:1704
- #, c-format
- msgid "Unable to load modular Fail-Safe data at '%s'"
--msgstr ""
-+msgstr "无法加载位于 '%s' 的模块 Fail-Safe 数据"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1680
-+#: libdnf/module/ModulePackageContainer.cpp:1710
- #, c-format
- msgid "Unable to load modular Fail-Safe data for module '%s:%s'"
--msgstr ""
-+msgstr "无法为模块 '%s:%s' 加载模块 Fail-Safe 数据"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1763
-+#: libdnf/module/ModulePackageContainer.cpp:1791
- #, c-format
- msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s"
--msgstr ""
-+msgstr "无法为模块 Fail Safe 数据创建目录 \"%s\" : %s"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1779
-+#: libdnf/module/ModulePackageContainer.cpp:1807
- #, c-format
- msgid "Unable to save a modular Fail Safe data to '%s'"
--msgstr ""
-+msgstr "无法把模块 Fail Safe 数据保存到 '%s'"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1802
-+#: libdnf/module/ModulePackageContainer.cpp:1830
- #, c-format
- msgid "Unable to remove a modular Fail Safe data in '%s'"
--msgstr ""
-+msgstr "无法删除 '%s' 处的模块 Fail Safe 数据"
- 
--#: libdnf/module/ModulePackageContainer.cpp:1834
-+#: libdnf/module/ModulePackageContainer.cpp:1862
- #, c-format
- msgid ""
- "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is "
- "disabled"
--msgstr ""
-+msgstr "无法将模块化过时应用到 '%s:%s',因为目标模块 '%s' 被禁用"
- 
- #: 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
-@@ -829,57 +854,57 @@ 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/module/modulemd/ModuleMetadata.cpp:219
-+#: libdnf/module/modulemd/ModuleMetadata.cpp:221
- #, c-format
- msgid "Cannot retrieve module obsoletes because no stream matching %s: %s"
--msgstr ""
-+msgstr "无法获取模块过时,因为没有流匹配 %s:%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 ""
-@@ -887,6 +912,8 @@ msgid ""
- "deprecated and the support will be dropped in future versions. Use '=' "
- "operator instead."
- msgstr ""
-+"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并"
-+"且在未来的版本中会取消对它的支持。请使用 '=' 操作符代替。"
- 
- #: libdnf/repo/Repo.cpp:321
- #, c-format
-@@ -899,25 +926,25 @@ msgid "Repository '%s' has unsupported type: 'type=%s', skipping."
- msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。"
- 
- #: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641
--#: libdnf/repo/Repo.cpp:1382
-+#: libdnf/repo/Repo.cpp:1400
- #, c-format
- msgid "repo '%s': 'basecachedir' is not set"
--msgstr ""
-+msgstr "Repo '%s': 'basecachedir' 没有设置"
- 
- #: libdnf/repo/Repo.cpp:512
- msgid ""
--"Maximum download speed is lower than minimum. Please change configuration of"
--" minrate or throttle"
-+"Maximum download speed is lower than minimum. Please change configuration of "
-+"minrate or throttle"
- msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置"
- 
- #: libdnf/repo/Repo.cpp:546
- #, c-format
- msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'"
--msgstr ""
-+msgstr "Repo '%s': 'proxy_username' 已被设置,但没有设置 'proxy_password'"
- 
- #: libdnf/repo/Repo.cpp:548
- msgid "'proxy_username' is set but not 'proxy_password'"
--msgstr ""
-+msgstr "'proxy_username' 已被设置,但没有设置 'proxy_password'"
- 
- #: libdnf/repo/Repo.cpp:629
- #, c-format
-@@ -934,125 +961,131 @@ msgstr "%s: gpgme_data_new_from_fd(): %s"
- msgid "%s: gpgme_op_import(): %s"
- msgstr "%s: gpgme_op_import(): %s"
- 
--#: libdnf/repo/Repo.cpp:713 libdnf/repo/Repo.cpp:779 libdnf/repo/Repo.cpp:907
-+#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236
-+#: libdnf/repo/Repo.cpp:1279
-+#, c-format
-+msgid "Cannot create repo temporary directory \"%s\": %s"
-+msgstr "无法创建 repo 临时目录 \"%s\": %s"
-+
-+#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917
- #, c-format
- msgid "%s: gpgme_ctx_set_engine_info(): %s"
- msgstr "%s: gpgme_ctx_set_engine_info(): %s"
- 
--#: libdnf/repo/Repo.cpp:740 libdnf/repo/Repo.cpp:804
-+#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808
- #, c-format
- msgid "can not list keys: %s"
- msgstr "不能列出 key: %s"
- 
--#: libdnf/repo/Repo.cpp:833
-+#: libdnf/repo/Repo.cpp:837
- #, c-format
- msgid "Failed to retrieve GPG key for repo '%s': %s"
--msgstr ""
-+msgstr "为仓库 '%s' 获取 GPG 密钥失败 : %s"
- 
--#: libdnf/repo/Repo.cpp:886
-+#: libdnf/repo/Repo.cpp:890
- #, c-format
- msgid "repo %s: 0x%s already imported"
- msgstr "repo %s: 0x%s 已被导入"
- 
--#: libdnf/repo/Repo.cpp:914
-+#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79
-+#, c-format
-+msgid "Failed to create directory \"%s\": %d - %s"
-+msgstr "无法创建目录 \"%s\": %d - %s"
-+
-+#: libdnf/repo/Repo.cpp:924
- #, c-format
- msgid "repo %s: imported key 0x%s."
- msgstr "repo %s: 已导入密钥 0x%s。"
- 
--#: libdnf/repo/Repo.cpp:1162
-+#: libdnf/repo/Repo.cpp:1176
- #, c-format
- msgid "reviving: repo '%s' skipped, no metalink."
- msgstr "恢复中: 仓库 '%s' 已被跳过,无 metalink。"
- 
--#: libdnf/repo/Repo.cpp:1181
-+#: libdnf/repo/Repo.cpp:1195
- #, c-format
- msgid "reviving: repo '%s' skipped, no usable hash."
- msgstr "恢复中: 仓库 '%s' 已被跳过,无可用 hash。"
- 
--#: libdnf/repo/Repo.cpp:1204
-+#: libdnf/repo/Repo.cpp:1218
- #, c-format
- msgid "reviving: failed for '%s', mismatched %s sum."
- msgstr "恢复: '%s' 失败,不匹配的 %s sum。"
- 
--#: libdnf/repo/Repo.cpp:1210
-+#: libdnf/repo/Repo.cpp:1224
- #, c-format
- msgid "reviving: '%s' can be revived - metalink checksums match."
- msgstr "恢复中: '%s' 可以被恢复 - metalink 校验和匹配。"
- 
--#: libdnf/repo/Repo.cpp:1235
-+#: libdnf/repo/Repo.cpp:1253
- #, c-format
- msgid "reviving: '%s' can be revived - repomd matches."
- msgstr "恢复: '%s' 可用被恢复 - repomd 匹配。"
- 
--#: libdnf/repo/Repo.cpp:1237
-+#: libdnf/repo/Repo.cpp:1255
- #, c-format
- msgid "reviving: failed for '%s', mismatched repomd."
- msgstr "恢复: '%s' 失败,不匹配的 repomd。"
- 
--#: libdnf/repo/Repo.cpp:1255
-+#: libdnf/repo/Repo.cpp:1273
- #, c-format
- msgid "Cannot create repo destination directory \"%s\": %s"
- msgstr "无法创建仓库目标目录 \"%s\": %s"
- 
--#: libdnf/repo/Repo.cpp:1261
--#, c-format
--msgid "Cannot create repo temporary directory \"%s\": %s"
--msgstr "无法创建 repo 临时目录 \"%s\": %s"
--
--#: libdnf/repo/Repo.cpp:1275
-+#: libdnf/repo/Repo.cpp:1293
- #, c-format
- msgid "Cannot create directory \"%s\": %s"
- msgstr "无法创建目录 \"%s\": %s"
- 
--#: libdnf/repo/Repo.cpp:1298
-+#: libdnf/repo/Repo.cpp:1316
- #, c-format
- msgid "Cannot rename directory \"%s\" to \"%s\": %s"
- msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s"
- 
--#: libdnf/repo/Repo.cpp:1321
-+#: libdnf/repo/Repo.cpp:1339
- #, c-format
- msgid "repo: using cache for: %s"
- msgstr "仓库: 正在为 %s 使用缓存"
- 
--#: libdnf/repo/Repo.cpp:1333
-+#: libdnf/repo/Repo.cpp:1351
- #, c-format
- msgid "Cache-only enabled but no cache for '%s'"
- msgstr "仅使用缓存已开启但没有 '%s' 的缓存"
- 
--#: libdnf/repo/Repo.cpp:1337
-+#: libdnf/repo/Repo.cpp:1355
- #, c-format
- msgid "repo: downloading from remote: %s"
- msgstr "repo: 从远程下载: %s"
- 
--#: libdnf/repo/Repo.cpp:1344
-+#: libdnf/repo/Repo.cpp:1362
- #, c-format
- msgid "Failed to download metadata for repo '%s': %s"
--msgstr ""
-+msgstr "为仓库 '%s' 下载元数据失败 : %s"
- 
--#: libdnf/repo/Repo.cpp:1370
-+#: libdnf/repo/Repo.cpp:1388
- msgid "getCachedir(): Computation of SHA256 failed"
- msgstr "getCachedir(): 计算 SHA256 失败"
- 
--#: libdnf/repo/Repo.cpp:1398
-+#: libdnf/repo/Repo.cpp:1416
- #, c-format
- msgid "Cannot create persistdir \"%s\": %s"
--msgstr ""
-+msgstr "无法创建 persistdir \"%s\": %s"
- 
--#: libdnf/repo/Repo.cpp:1775
-+#: libdnf/repo/Repo.cpp:1793
- msgid "resume cannot be used simultaneously with the byterangestart param"
- msgstr "resume 不能和 the byterangestart 参数同时使用"
- 
--#: libdnf/repo/Repo.cpp:1792
-+#: libdnf/repo/Repo.cpp:1810
- #, c-format
- msgid "PackageTarget initialization failed: %s"
- msgstr "PackageTarget 初始失败: %s"
- 
--#: libdnf/repo/Repo.cpp:1898
-+#: libdnf/repo/Repo.cpp:1916
- #, c-format
- msgid "Cannot open %s: %s"
- msgstr "无法打开 %s: %s"
- 
--#: libdnf/repo/Repo.cpp:1942
-+#: libdnf/repo/Repo.cpp:1960
- #, c-format
- msgid "Log handler with id %ld doesn't exist"
- msgstr "id 为 %ld 的日志处理器不存在"
-@@ -1081,7 +1114,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"
-@@ -1104,8 +1137,8 @@ msgstr "TransactionItem 状态没有设置:%s"
- msgid "Can't add console output to unsaved transaction"
- msgstr "无法向未保存的事务中添加控制台输出"
- 
-+#~ msgid "Failed to parse module artifact NEVRA '%s'"
-+#~ msgstr "无法解析模块工件 NEVRA '%s'"
-+
- #~ 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.35.1
-
diff --git a/SOURCES/0004-advisory-upgrade-filter-out-advPkgs-with-different-a.patch b/SOURCES/0004-advisory-upgrade-filter-out-advPkgs-with-different-a.patch
deleted file mode 100644
index 70705d9..0000000
--- a/SOURCES/0004-advisory-upgrade-filter-out-advPkgs-with-different-a.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 35a3cebb3b23b3ba9001e3d4f9f0ef5e59c499f0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
-Date: Mon, 30 May 2022 08:59:41 +0200
-Subject: [PATCH 4/5] advisory upgrade: filter out advPkgs with different arch
-
-This prevents a situation in security upgrades where libsolv cannot
-upgrade dependent pkgs because we ask for an upgrade of different arch:
-
-We can get the following testcase if libdnf has filtered out
-json-c-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms
-(because there is an advisory for already installed json-c-1-1.el8.x86_64) but
-json-c-2-2.el8.i686@rhel-8-for-x86_64-baseos-rpms is not filtered out because
-it has different architecture. The resulting transaction doesn't work.
-
-```
-repo @System -99.-1000 testtags <inline>
-#>=Pkg: bind-libs-lite 1 1.el8 x86_64
-#>=Pkg: json-c 1 1.el8 x86_64
-
-repo rhel-8-for-x86_64-baseos-rpms -99.-1000 testtags <inline>
-#>=Pkg: json-c 2 2.el8 x86_64
-#>=Prv: libjson-c.so.4()(64bit)
-#>
-#>=Pkg: json-c 2 2.el8 i686
-#>=Prv: libjson-c.so.4()
-#>
-#>=Pkg: bind-libs-lite 2 2.el8 x86_64
-#>=Req: libjson-c.so.4()(64bit)
-system x86_64 rpm @System
-job update oneof json-c-1-1.el8.x86_64@@System json-c-2-2.el8.i686@rhel-8-for-x86_64-baseos-rpms bind-libs-lite-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms [forcebest,targeted,setevr,setarch]
-result transaction,problems <inline>
-#>problem f06d81a4 info package bind-libs-lite-2-2.el8.x86_64 requires libjson-c.so.4()(64bit), but none of the providers can be installed
-#>problem f06d81a4 solution 96f9031b allow bind-libs-lite-1-1.el8.x86_64@@System
-#>problem f06d81a4 solution c8daf94f allow json-c-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms
-#>upgrade bind-libs-lite-1-1.el8.x86_64@@System bind-libs-lite-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms
-#>upgrade json-c-1-1.el8.x86_64@@System json-c-2-2.el8.x86_64@rhel-8-for-x86_64-baseos-rpms```
-```
-
-= changelog =
-msg: Filter out advisory pkgs with different arch during advisory upgrade, fixes possible problems in dependency resulution.
-type: bugfix
-resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2088149
----
- libdnf/sack/query.cpp | 25 +++++++++++++++++++------
- 1 file changed, 19 insertions(+), 6 deletions(-)
-
-diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp
-index ac2736b5..03d39659 100644
---- a/libdnf/sack/query.cpp
-+++ b/libdnf/sack/query.cpp
-@@ -1877,12 +1877,6 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
-         std::vector<Solvable *> candidates;
-         std::vector<Solvable *> installed_solvables;
- 
--        Id id = -1;
--        while ((id = resultPset->next(id)) != -1) {
--            candidates.push_back(pool_id2solvable(pool, id));
--        }
--        NameArchEVRComparator cmp_key(pool);
--
-         if (cmp_type & HY_UPGRADE) {
-             Query installed(sack, ExcludeFlags::IGNORE_EXCLUDES);
-             installed.installed();
-@@ -1893,6 +1887,18 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
-                 installed_solvables.push_back(pool_id2solvable(pool, installed_id));
-             }
-             std::sort(installed_solvables.begin(), installed_solvables.end(), NameArchSolvableComparator);
-+            Id id = -1;
-+            while ((id = resultPset->next(id)) != -1) {
-+                Solvable * s = pool_id2solvable(pool, id);
-+                // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch
-+                // with some already installed pkg (in other words: some other version of the pkg is already installed).
-+                // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong.
-+                // It can result in dependency issues, reported as: RhBug:2088149.
-+                auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameArchSolvableComparator);
-+                if (low != installed_solvables.end() && s->name == (*low)->name && s->arch == (*low)->arch) {
-+                    candidates.push_back(s);
-+                }
-+            }
- 
-             // Apply security filters only to packages with lower priority - to unify behaviour upgrade
-             // and upgrade-minimal
-@@ -1915,7 +1921,14 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
-                 }
-             }
-             std::swap(candidates, priority_candidates);
-+        } else {
-+            Id id = -1;
-+            while ((id = resultPset->next(id)) != -1) {
-+                candidates.push_back(pool_id2solvable(pool, id));
-+            }
-         }
-+
-+        NameArchEVRComparator cmp_key(pool);
-         std::sort(candidates.begin(), candidates.end(), cmp_key);
-         for (auto & advisoryPkg : pkgs) {
-             if (cmp_type & HY_UPGRADE) {
--- 
-2.37.1
-
diff --git a/SOURCES/0005-Add-obsoletes-to-filtering-for-advisory-candidates.patch b/SOURCES/0005-Add-obsoletes-to-filtering-for-advisory-candidates.patch
deleted file mode 100644
index 467ccb9..0000000
--- a/SOURCES/0005-Add-obsoletes-to-filtering-for-advisory-candidates.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 83d6c019360823504fe27284fdf4804943bb2033 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
-Date: Tue, 5 Jul 2022 09:02:22 +0200
-Subject: [PATCH 5/5] Add obsoletes to filtering for advisory candidates
-
-Patch https://github.com/rpm-software-management/libdnf/pull/1526
-introduced a regression where we no longer do a security upgrade if a
-package A is installed and package B obsoletes A and B is available in two
-versions while there is an advisory for the second version.
-
-Test: https://github.com/rpm-software-management/ci-dnf-stack/pull/1130
----
- libdnf/sack/query.cpp | 32 ++++++++++++++++++++++++++++----
- 1 file changed, 28 insertions(+), 4 deletions(-)
-
-diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp
-index 03d39659..5355f9f7 100644
---- a/libdnf/sack/query.cpp
-+++ b/libdnf/sack/query.cpp
-@@ -1878,6 +1878,13 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
-         std::vector<Solvable *> installed_solvables;
- 
-         if (cmp_type & HY_UPGRADE) {
-+            // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch with:
-+            // * some already installed pkg (in other words: some other version of the pkg is already installed)
-+            // or
-+            // * with pkg that obsoletes some already installed (or to be installed in this transaction) pkg
-+            // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong.
-+            // It can result in dependency issues, reported as: RhBug:2088149.
-+
-             Query installed(sack, ExcludeFlags::IGNORE_EXCLUDES);
-             installed.installed();
-             installed.addFilter(HY_PKG_LATEST_PER_ARCH, HY_EQ, 1);
-@@ -1887,13 +1894,30 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname)
-                 installed_solvables.push_back(pool_id2solvable(pool, installed_id));
-             }
-             std::sort(installed_solvables.begin(), installed_solvables.end(), NameArchSolvableComparator);
-+
-+            Query obsoletes(sack, ExcludeFlags::IGNORE_EXCLUDES);
-+            obsoletes.addFilter(HY_PKG, HY_EQ, resultPset);
-+            obsoletes.available();
-+
-+            Query possibly_obsoleted(sack, ExcludeFlags::IGNORE_EXCLUDES);
-+            possibly_obsoleted.addFilter(HY_PKG, HY_EQ, resultPset);
-+            possibly_obsoleted.addFilter(HY_PKG_UPGRADES, HY_EQ, 1);
-+            possibly_obsoleted.queryUnion(installed);
-+            possibly_obsoleted.apply();
-+
-+            obsoletes.addFilter(HY_PKG_OBSOLETES, HY_EQ, possibly_obsoleted.runSet());
-+            obsoletes.apply();
-+            Id obsoleted_id = -1;
-+            // Add to candidates resultPset pkgs that obsolete some installed (or to be installed in this transaction) pkg
-+            while ((obsoleted_id = obsoletes.pImpl->result->next(obsoleted_id)) != -1) {
-+                Solvable * s = pool_id2solvable(pool, obsoleted_id);
-+                candidates.push_back(s);
-+            }
-+
-             Id id = -1;
-+            // Add to candidates resultPset pkgs that match name and arch with some already installed pkg
-             while ((id = resultPset->next(id)) != -1) {
-                 Solvable * s = pool_id2solvable(pool, id);
--                // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch
--                // with some already installed pkg (in other words: some other version of the pkg is already installed).
--                // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong.
--                // It can result in dependency issues, reported as: RhBug:2088149.
-                 auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameArchSolvableComparator);
-                 if (low != installed_solvables.end() && s->name == (*low)->name && s->arch == (*low)->arch) {
-                     candidates.push_back(s);
--- 
-2.37.1
-
diff --git a/SPECS/libdnf.spec b/SPECS/libdnf.spec
index b7bc0c8..31b0f6c 100644
--- a/SPECS/libdnf.spec
+++ b/SPECS/libdnf.spec
@@ -1,10 +1,10 @@
-%global libsolv_version 0.7.20
+%global libsolv_version 0.7.21
 %global libmodulemd_version 2.13.0
 %global librepo_version 1.13.1
 %global dnf_conflict 4.10.0-4
 %global swig_version 3.0.12
 %global libdnf_major_version 0
-%global libdnf_minor_version 65
+%global libdnf_minor_version 67
 %global libdnf_micro_version 0
 
 %define __cmake_in_source_build 1
@@ -56,17 +56,14 @@
 
 Name:           libdnf
 Version:        %{libdnf_major_version}.%{libdnf_minor_version}.%{libdnf_micro_version}
-Release:        5.1%{?dist}
+Release:        3%{?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-Use-rpmdbCookie-from-librpm-remove-hawkey.Sack._rpmd.patch
-Patch2:         0002-Skip-rich-deps-for-autodetection-of-unmet-dependencies-RhBug2033130-2048394.patch
-Patch3:         0003-Update-translations-RhBug-2017349.patch
-Patch4:         0004-advisory-upgrade-filter-out-advPkgs-with-different-a.patch
-Patch5:         0005-Add-obsoletes-to-filtering-for-advisory-candidates.patch
-
+Patch1:         0001-advisory-upgrade-filter-out-advPkgs-with-different-a.patch
+Patch2:         0002-Add-obsoletes-to-filtering-for-advisory-candidates.patch
+Patch3:         0003-Update-translations-RHEL-9.1.patch
 
 BuildRequires:  cmake
 BuildRequires:  gcc
@@ -79,7 +76,7 @@ BuildRequires:  valgrind
 %endif
 BuildRequires:  pkgconfig(gio-unix-2.0) >= 2.46.0
 BuildRequires:  pkgconfig(gtk-doc)
-BuildRequires:  rpm-devel >= 4.11.0
+BuildRequires:  rpm-devel >= 4.15.0
 %if %{with rhsm}
 BuildRequires:  pkgconfig(librhsm) >= 0.0.3
 %endif
@@ -310,15 +307,21 @@ popd
 %endif
 
 %changelog
-* Wed Aug 17 2022 Lukas Hrazky <lhrazky@redhat.com> - 0.65.0-5.1
-- advisory upgrade: filter out advPkgs with different arch
-- Add obsoletes to filtering for advisory candidates
-
-* Mon Mar 21 2022 Marek Blaha <mblaha@redhat.com> - 0.65.0-5
+* Thu Sep 15 2022 Marek Blaha <mblaha@redhat.com> - 0.67.0-3
 - Update translations
 
-* Fri Mar 11 2022 Pavla Kratochvilova <pkratoch@redhat.com> - 0.65.0-4
-- Skip rich deps for autodetection of unmet dependencies (RhBug:2048394)
+* Thu Jul 21 2022 Lukas Hrazky <lhrazky@redhat.com> - 0.67.0-2
+- Add obsoletes to filtering for advisory candidates
+- advisory upgrade: filter out advPkgs with different arch
+
+* Thu Apr 28 2022 Pavla Kratochvilova <pkratoch@redhat.com> - 0.67.0-1
+- Fix handling transaction id in resolveTransactionItemReason (RhBug:2010259,2053014)
+- Remove deprecated assertions (RhBug:2027383)
+- Skip rich deps for autodetection of unmet dependencies (RhBug:2033130, 2048394)
+- Increase required rpm version since we use `rpmdbCookie()`
+- Add 'loongarch' support
+- Use dnf solv userdata to check versions and checksum (RhBug:2027445)
+- context: Substitute all repository config options (RhBug:2076853)
 
 * Mon Feb 07 2022 Pavla Kratochvilova <pkratoch@redhat.com> - 0.65.0-3
 - Use `rpmdbCookie` from librpm, remove `hawkey.Sack._rpmdb_version`