diff --git a/.dnf.metadata b/.dnf.metadata
new file mode 100644
index 0000000..1976ca8
--- /dev/null
+++ b/.dnf.metadata
@@ -0,0 +1 @@
+cad8de377a20b5cf6668eb4c4150248bfaa1ed20 SOURCES/dnf-4.10.0.tar.gz
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..133a3d1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/dnf-4.10.0.tar.gz
diff --git a/SOURCES/0001-doc-Improve-description-of-multilib_policyall-RhBug19966811995630.patch b/SOURCES/0001-doc-Improve-description-of-multilib_policyall-RhBug19966811995630.patch
new file mode 100644
index 0000000..0d1b07a
--- /dev/null
+++ b/SOURCES/0001-doc-Improve-description-of-multilib_policyall-RhBug19966811995630.patch
@@ -0,0 +1,29 @@
+From 39e759ae6afb046cf6d60fb91b3ee208cb150a2f Mon Sep 17 00:00:00 2001
+From: Jaroslav Mracek <jmracek@redhat.com>
+Date: Mon, 6 Sep 2021 12:40:59 +0200
+Subject: [PATCH] [doc] Improve description of multilib_policy=all (RhBug:1996681,1995630)
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1996681
+https://bugzilla.redhat.com/show_bug.cgi?id=1995630
+---
+ doc/conf_ref.rst | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/doc/conf_ref.rst b/doc/conf_ref.rst
+index fa310e3..60afc86 100644
+--- a/doc/conf_ref.rst
++++ b/doc/conf_ref.rst
+@@ -403,7 +403,9 @@ configuration file by your distribution to override the DNF defaults.
+ ``multilib_policy``
+     :ref:`string <string-label>`
+ 
+-    Controls how multilib packages are treated during install operations. Can either be ``"best"`` (the default) for the depsolver to prefer packages which best match the system's architecture, or ``"all"`` to install all available packages with compatible architectures.
++    Controls how multilib packages are treated during install operations. Can either be ``"best"`` (the default) for
++    the depsolver to prefer packages which best match the system's architecture, or ``"all"`` to install packages for
++    all available architectures.
+ 
+ .. _obsoletes_conf_option-label:
+ 
+--
+libgit2 1.1.0
+
diff --git a/SOURCES/0002-Fix-Python-dnf-API-does-not-respect-cacheonly-RhBug1862970.patch b/SOURCES/0002-Fix-Python-dnf-API-does-not-respect-cacheonly-RhBug1862970.patch
new file mode 100644
index 0000000..30c4395
--- /dev/null
+++ b/SOURCES/0002-Fix-Python-dnf-API-does-not-respect-cacheonly-RhBug1862970.patch
@@ -0,0 +1,33 @@
+From 9ce65d8575494887a08506583d9d4f05df404fac Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Wed, 20 Oct 2021 09:20:03 +0200
+Subject: [PATCH] Fix: Python dnf API does not respect cacheonly (RhBug:1862970)
+
+`Repo` object has always been constructed with default synchronization
+strategy. The configuration option `cacheonly` was ignored. DNF
+application set synchronization strategy later in the `Cli` object
+during processing demands.
+
+The fix takes into account the `cacheonly` option during the construction
+of the `Repo` object. Synchronization strategy may still be overriden
+during demand processing.
+---
+ dnf/repo.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dnf/repo.py b/dnf/repo.py
+index bb42230..1822cf0 100644
+--- a/dnf/repo.py
++++ b/dnf/repo.py
+@@ -434,7 +434,7 @@ class Repo(dnf.conf.RepoConf):
+         self._pkgdir = None
+         self._key_import = _NullKeyImport()
+         self.metadata = None  # :api
+-        self._repo.setSyncStrategy(self.DEFAULT_SYNC)
++        self._repo.setSyncStrategy(SYNC_ONLY_CACHE if parent_conf and parent_conf.cacheonly else self.DEFAULT_SYNC)
+         if parent_conf:
+             self._repo.setSubstitutions(parent_conf.substitutions)
+         self._substitutions = dnf.conf.substitutions.Substitutions()
+--
+libgit2 1.1.0
+
diff --git a/SOURCES/0003-Documentation-API-notes-for-cacheonly.patch b/SOURCES/0003-Documentation-API-notes-for-cacheonly.patch
new file mode 100644
index 0000000..6628678
--- /dev/null
+++ b/SOURCES/0003-Documentation-API-notes-for-cacheonly.patch
@@ -0,0 +1,26 @@
+From 5c598df3541c21d5c2758c42bd2eb0df8c74eddc Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Fri, 5 Nov 2021 08:52:56 +0100
+Subject: [PATCH] Documentation: API notes for cacheonly
+
+---
+ doc/conf_ref.rst | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/doc/conf_ref.rst b/doc/conf_ref.rst
+index 60afc86..1a593a1 100644
+--- a/doc/conf_ref.rst
++++ b/doc/conf_ref.rst
+@@ -137,6 +137,9 @@ configuration file by your distribution to override the DNF defaults.
+     If set to ``True`` DNF will run entirely from system cache, will not update
+     the cache and will use it even in case it is expired. Default is ``False``.
+ 
++    API Notes: Must be set before repository objects are created. Plugins must set
++    this in the pre_config hook. Later changes are ignored.
++
+ .. _check_config_file_age-label:
+ 
+ ``check_config_file_age``
+--
+libgit2 1.1.0
+
diff --git a/SOURCES/0004-Use-rpm.TransactionSet.dbCookie-to-determining-if-rp.patch b/SOURCES/0004-Use-rpm.TransactionSet.dbCookie-to-determining-if-rp.patch
new file mode 100644
index 0000000..b5d94c9
--- /dev/null
+++ b/SOURCES/0004-Use-rpm.TransactionSet.dbCookie-to-determining-if-rp.patch
@@ -0,0 +1,169 @@
+From 087ad3d12ba307355dd66aba54faea97d227a3dd Mon Sep 17 00:00:00 2001
+From: zhanghaolian <65838930+iWhy98@users.noreply.github.com>
+Date: Tue, 25 Jan 2022 15:41:16 +0800
+Subject: [PATCH 1/2] dnf:fix dnf mark error when history sqlite missing
+
+---
+ dnf/cli/commands/mark.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dnf/cli/commands/mark.py b/dnf/cli/commands/mark.py
+index ec16b738d..cb1f91c13 100644
+--- a/dnf/cli/commands/mark.py
++++ b/dnf/cli/commands/mark.py
+@@ -89,7 +89,7 @@ class MarkCommand(commands.Command):
+ 
+         old = self.base.history.last()
+         if old is None:
+-            rpmdb_version = self.sack._rpmdb_version()
++            rpmdb_version = self.base.sack._rpmdb_version()
+         else:
+             rpmdb_version = old.end_rpmdb_version
+ 
+-- 
+2.34.1
+
+
+From bee5b97ad159af019deda4de0d80d0011dba4f7a Mon Sep 17 00:00:00 2001
+From: Jaroslav Rohel <jrohel@redhat.com>
+Date: Fri, 28 Jan 2022 16:53:50 +0100
+Subject: [PATCH 2/2] Use rpm.TransactionSet.dbCookie() to determining if rpmdb
+ has changed
+
+DNF was using private method `hawkey.Sack._rpmdb_version()` from libdnf.
+The method computes SHA1 hash from sorted list of hashes stored in
+the headers of the instaled packages. And it adds prefix of the number
+of installed packages to the computed hash. The result was stored
+to the history database and used to detect changes in the rpm database.
+
+The patch uses new oficial librpm API function
+`rpm.TransactionSet.dbCookie()`. This is a cleaner solution.
+It is also a step to remove the `._rpmdb_version()` method from libdnf.
+It is an attempt to remove SHA1 calculations from libdnf.
+Troubleshooting FIPS compatibility.
+
+= changelog =
+msg: Use rpm.TransactionSet.dbCookie() to determining if rpmdb has changed
+type: bugfix
+resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2043476
+---
+ dnf/base.py              |  6 +++---
+ dnf/cli/commands/mark.py |  2 +-
+ dnf/cli/output.py        |  2 +-
+ dnf/rpm/transaction.py   | 16 ++++++++++++++++
+ tests/test_sack.py       |  6 ------
+ 5 files changed, 21 insertions(+), 11 deletions(-)
+
+diff --git a/dnf/base.py b/dnf/base.py
+index b0a536f7f..574e80f66 100644
+--- a/dnf/base.py
++++ b/dnf/base.py
+@@ -907,7 +907,7 @@ class Base(object):
+                     cmdline = ' '.join(self.cmds)
+                 old = self.history.last()
+                 if old is None:
+-                    rpmdb_version = self.sack._rpmdb_version()
++                    rpmdb_version = self._ts.dbCookie()
+                 else:
+                     rpmdb_version = old.end_rpmdb_version
+ 
+@@ -1046,7 +1046,7 @@ class Base(object):
+             using_pkgs_pats = list(self.conf.history_record_packages)
+             installed_query = self.sack.query().installed()
+             using_pkgs = installed_query.filter(name=using_pkgs_pats).run()
+-            rpmdbv = self.sack._rpmdb_version()
++            rpmdbv = self._ts.dbCookie()
+             lastdbv = self.history.last()
+             if lastdbv is not None:
+                 lastdbv = lastdbv.end_rpmdb_version
+@@ -1163,7 +1163,7 @@ class Base(object):
+         for tsi in transaction_items:
+             count = display_banner(tsi.pkg, count)
+ 
+-        rpmdbv = rpmdb_sack._rpmdb_version()
++        rpmdbv = self._ts.dbCookie()
+         self.history.end(rpmdbv)
+ 
+         timer()
+diff --git a/dnf/cli/commands/mark.py b/dnf/cli/commands/mark.py
+index cb1f91c13..36bf9d436 100644
+--- a/dnf/cli/commands/mark.py
++++ b/dnf/cli/commands/mark.py
+@@ -89,7 +89,7 @@ class MarkCommand(commands.Command):
+ 
+         old = self.base.history.last()
+         if old is None:
+-            rpmdb_version = self.base.sack._rpmdb_version()
++            rpmdb_version = self.base._ts.dbCookie()
+         else:
+             rpmdb_version = old.end_rpmdb_version
+ 
+diff --git a/dnf/cli/output.py b/dnf/cli/output.py
+index a4e9f6c8e..ecf05c2b0 100644
+--- a/dnf/cli/output.py
++++ b/dnf/cli/output.py
+@@ -1607,7 +1607,7 @@ Transaction Summary
+             if lastdbv is not None and trans.tid == lasttid:
+                 #  If this is the last transaction, is good and it doesn't
+                 # match the current rpmdb ... then mark it as bad.
+-                rpmdbv = self.sack._rpmdb_version()
++                rpmdbv = self.base._ts.dbCookie()
+                 trans.compare_rpmdbv(str(rpmdbv))
+             lastdbv = None
+ 
+diff --git a/dnf/rpm/transaction.py b/dnf/rpm/transaction.py
+index bcc2a7024..a11f36e7e 100644
+--- a/dnf/rpm/transaction.py
++++ b/dnf/rpm/transaction.py
+@@ -12,8 +12,10 @@
+ from __future__ import absolute_import
+ from __future__ import unicode_literals
+ from dnf.i18n import _
++import logging
+ import rpm
+ 
++_logger = logging.getLogger('dnf')
+ read_ts = None
+ ts = None
+ 
+@@ -61,6 +63,20 @@ class TransactionWrapper(object):
+             mi.pattern(tag, tp, pat)
+         return mi
+ 
++    def dbCookie(self):
++        # dbCookie() does not support lazy opening of rpm database.
++        # The following line opens the database if it is not already open.
++        if self.ts.openDB() != 0:
++            _logger.error(_('The openDB() function connot open rpm database.'))
++            return ''
++
++        cookie = self.ts.dbCookie()
++        if not cookie:
++            _logger.error(_('The dbCookie() function did not return cookie of rpm database.'))
++            return ''
++
++        return cookie
++
+     def __getattr__(self, attr):
+         if attr in self._methods:
+             return self.getMethod(attr)
+diff --git a/tests/test_sack.py b/tests/test_sack.py
+index 49a715924..2c6fe8e01 100644
+--- a/tests/test_sack.py
++++ b/tests/test_sack.py
+@@ -32,12 +32,6 @@ class SackTest(tests.support.DnfBaseTestCase):
+ 
+     REPOS = []
+ 
+-    def test_rpmdb_version(self):
+-        version = self.sack._rpmdb_version()
+-        self.assertIsNotNone(version)
+-        expected = "%s:%s" % (tests.support.TOTAL_RPMDB_COUNT, tests.support.RPMDB_CHECKSUM)
+-        self.assertEqual(version, expected)
+-
+     def test_excludepkgs(self):
+         self.base.conf.excludepkgs = ['pepper']
+         self.base._setup_excludes_includes()
+-- 
+2.34.1
+
diff --git a/SOURCES/0005-Update-translations-RhBug-2017347.patch b/SOURCES/0005-Update-translations-RhBug-2017347.patch
new file mode 100644
index 0000000..e071bf5
--- /dev/null
+++ b/SOURCES/0005-Update-translations-RhBug-2017347.patch
@@ -0,0 +1,7726 @@
+From 8b7fb547e6938b91e5e158cfe21813bc59eff704 Mon Sep 17 00:00:00 2001
+From: Marek Blaha <mblaha@redhat.com>
+Date: Mon, 21 Mar 2022 10:28:46 +0100
+Subject: [PATCH] Update translations (RhBug:2017347)
+
+---
+ po/dnf.pot  | 204 +++++++------
+ po/fr.po    | 513 ++++++++++++++++---------------
+ po/ja.po    | 867 ++++++++++++++++++++++++++++++----------------------
+ po/ko.po    | 590 ++++++++++++++++++++---------------
+ po/zh_CN.po | 449 +++++++++++++++------------
+ po/zh_TW.po | 358 ++++++++++++----------
+ 6 files changed, 1669 insertions(+), 1312 deletions(-)
+
+diff --git a/po/dnf.pot b/po/dnf.pot
+index d7612013..8d98a664 100644
+--- a/po/dnf.pot
++++ b/po/dnf.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 11:37+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"
+@@ -191,155 +191,155 @@ msgstr ""
+ msgid "Failed to add groups file for repository: %s - %s"
+ msgstr ""
+ 
+-#: dnf/base.py:904
++#: dnf/base.py:922
+ msgid "Running transaction check"
+ msgstr ""
+ 
+-#: dnf/base.py:912
++#: dnf/base.py:930
+ msgid "Error: transaction check vs depsolve:"
+ msgstr ""
+ 
+-#: dnf/base.py:918
++#: dnf/base.py:936
+ msgid "Transaction check succeeded."
+ msgstr ""
+ 
+-#: dnf/base.py:921
++#: dnf/base.py:939
+ msgid "Running transaction test"
+ msgstr ""
+ 
+-#: dnf/base.py:931 dnf/base.py:1082
++#: dnf/base.py:949 dnf/base.py:1100
+ msgid "RPM: {}"
+ msgstr ""
+ 
+-#: dnf/base.py:932
++#: dnf/base.py:950
+ msgid "Transaction test error:"
+ msgstr ""
+ 
+-#: dnf/base.py:943
++#: dnf/base.py:961
+ msgid "Transaction test succeeded."
+ msgstr ""
+ 
+-#: dnf/base.py:964
++#: dnf/base.py:982
+ msgid "Running transaction"
+ msgstr ""
+ 
+-#: dnf/base.py:1001
++#: dnf/base.py:1019
+ msgid "Disk Requirements:"
+ msgstr ""
+ 
+-#: dnf/base.py:1004
++#: dnf/base.py:1022
+ #, python-brace-format
+ msgid "At least {0}MB more space needed on the {1} filesystem."
+ msgid_plural "At least {0}MB more space needed on the {1} filesystem."
+ msgstr[0] ""
+ msgstr[1] ""
+ 
+-#: dnf/base.py:1011
++#: dnf/base.py:1029
+ msgid "Error Summary"
+ msgstr ""
+ 
+-#: dnf/base.py:1037
++#: dnf/base.py:1055
+ #, python-brace-format
+ msgid "RPMDB altered outside of {prog}."
+ msgstr ""
+ 
+-#: dnf/base.py:1083 dnf/base.py:1091
++#: dnf/base.py:1101 dnf/base.py:1109
+ msgid "Could not run transaction."
+ msgstr ""
+ 
+-#: dnf/base.py:1086
++#: dnf/base.py:1104
+ msgid "Transaction couldn't start:"
+ msgstr ""
+ 
+-#: dnf/base.py:1100
++#: dnf/base.py:1118
+ #, python-format
+ msgid "Failed to remove transaction file %s"
+ msgstr ""
+ 
+-#: dnf/base.py:1182
++#: dnf/base.py:1200
+ msgid "Some packages were not downloaded. Retrying."
+ msgstr ""
+ 
+-#: dnf/base.py:1212
++#: dnf/base.py:1230
+ #, python-format
+ msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%.1f%% saved)"
+ msgstr ""
+ 
+-#: dnf/base.py:1216
++#: dnf/base.py:1234
+ #, python-format
+ msgid ""
+ "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%.1f%% wasted)"
+ msgstr ""
+ 
+-#: dnf/base.py:1258
++#: dnf/base.py:1276
+ msgid "Cannot add local packages, because transaction job already exists"
+ msgstr ""
+ 
+-#: dnf/base.py:1272
++#: dnf/base.py:1290
+ msgid "Could not open: {}"
+ msgstr ""
+ 
+-#: dnf/base.py:1310
++#: dnf/base.py:1328
+ #, python-format
+ msgid "Public key for %s is not installed"
+ msgstr ""
+ 
+-#: dnf/base.py:1314
++#: dnf/base.py:1332
+ #, python-format
+ msgid "Problem opening package %s"
+ msgstr ""
+ 
+-#: dnf/base.py:1322
++#: dnf/base.py:1340
+ #, python-format
+ msgid "Public key for %s is not trusted"
+ msgstr ""
+ 
+-#: dnf/base.py:1326
++#: dnf/base.py:1344
+ #, python-format
+ msgid "Package %s is not signed"
+ msgstr ""
+ 
+-#: dnf/base.py:1356
++#: dnf/base.py:1374
+ #, python-format
+ msgid "Cannot remove %s"
+ msgstr ""
+ 
+-#: dnf/base.py:1360
++#: dnf/base.py:1378
+ #, python-format
+ msgid "%s removed"
+ msgstr ""
+ 
+-#: dnf/base.py:1640
++#: dnf/base.py:1658
+ msgid "No match for group package \"{}\""
+ msgstr ""
+ 
+-#: dnf/base.py:1726
++#: dnf/base.py:1740
+ #, python-format
+ msgid "Adding packages from group '%s': %s"
+ msgstr ""
+ 
+-#: dnf/base.py:1749 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
++#: dnf/base.py:1763 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
+ #: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587
+ #: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80
+ #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110
+ msgid "Nothing to do."
+ msgstr ""
+ 
+-#: dnf/base.py:1767
++#: dnf/base.py:1781
+ msgid "No groups marked for removal."
+ msgstr ""
+ 
+-#: dnf/base.py:1801
++#: dnf/base.py:1815
+ msgid "No group marked for upgrade."
+ msgstr ""
+ 
+-#: dnf/base.py:2015
++#: dnf/base.py:2029
+ #, python-format
+ msgid "Package %s not installed, cannot downgrade it."
+ msgstr ""
+ 
+-#: dnf/base.py:2017 dnf/base.py:2036 dnf/base.py:2049 dnf/base.py:2076
+-#: dnf/base.py:2129 dnf/base.py:2137 dnf/base.py:2271 dnf/cli/cli.py:417
++#: dnf/base.py:2031 dnf/base.py:2050 dnf/base.py:2063 dnf/base.py:2090
++#: dnf/base.py:2143 dnf/base.py:2151 dnf/base.py:2285 dnf/cli/cli.py:417
+ #: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477
+ #: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628
+ #: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147
+@@ -349,127 +349,127 @@ msgstr ""
+ msgid "No match for argument: %s"
+ msgstr ""
+ 
+-#: dnf/base.py:2024
++#: dnf/base.py:2038
+ #, python-format
+ msgid "Package %s of lower version already installed, cannot downgrade it."
+ msgstr ""
+ 
+-#: dnf/base.py:2047
++#: dnf/base.py:2061
+ #, python-format
+ msgid "Package %s not installed, cannot reinstall it."
+ msgstr ""
+ 
+-#: dnf/base.py:2062
++#: dnf/base.py:2076
+ #, python-format
+ msgid "File %s is a source package and cannot be updated, ignoring."
+ msgstr ""
+ 
+-#: dnf/base.py:2073
++#: dnf/base.py:2087
+ #, python-format
+ msgid "Package %s not installed, cannot update it."
+ msgstr ""
+ 
+-#: dnf/base.py:2083
++#: dnf/base.py:2097
+ #, python-format
+ msgid ""
+ "The same or higher version of %s is already installed, cannot update it."
+ msgstr ""
+ 
+-#: dnf/base.py:2126 dnf/cli/commands/reinstall.py:81
++#: dnf/base.py:2140 dnf/cli/commands/reinstall.py:81
+ #, python-format
+ msgid "Package %s available, but not installed."
+ msgstr ""
+ 
+-#: dnf/base.py:2132
++#: dnf/base.py:2146
+ #, python-format
+ msgid "Package %s available, but installed for different architecture."
+ msgstr ""
+ 
+-#: dnf/base.py:2157
++#: dnf/base.py:2171
+ #, python-format
+ msgid "No package %s installed."
+ msgstr ""
+ 
+-#: dnf/base.py:2175 dnf/cli/commands/install.py:136
++#: dnf/base.py:2189 dnf/cli/commands/install.py:136
+ #: dnf/cli/commands/remove.py:133
+ #, python-format
+ msgid "Not a valid form: %s"
+ msgstr ""
+ 
+-#: dnf/base.py:2190 dnf/cli/commands/__init__.py:676
++#: dnf/base.py:2204 dnf/cli/commands/__init__.py:676
+ #: dnf/cli/commands/remove.py:162
+ msgid "No packages marked for removal."
+ msgstr ""
+ 
+-#: dnf/base.py:2278 dnf/cli/cli.py:428
++#: dnf/base.py:2292 dnf/cli/cli.py:428
+ #, python-format
+ msgid "Packages for argument %s available, but not installed."
+ msgstr ""
+ 
+-#: dnf/base.py:2283
++#: dnf/base.py:2297
+ #, python-format
+ msgid "Package %s of lowest version already installed, cannot downgrade it."
+ msgstr ""
+ 
+-#: dnf/base.py:2383
++#: dnf/base.py:2397
+ msgid "No security updates needed, but {} update available"
+ msgstr ""
+ 
+-#: dnf/base.py:2385
++#: dnf/base.py:2399
+ msgid "No security updates needed, but {} updates available"
+ msgstr ""
+ 
+-#: dnf/base.py:2389
++#: dnf/base.py:2403
+ msgid "No security updates needed for \"{}\", but {} update available"
+ msgstr ""
+ 
+-#: dnf/base.py:2391
++#: dnf/base.py:2405
+ msgid "No security updates needed for \"{}\", but {} updates available"
+ msgstr ""
+ 
+ #. raise an exception, because po.repoid is not in self.repos
+-#: dnf/base.py:2412
++#: dnf/base.py:2426
+ #, python-format
+ msgid "Unable to retrieve a key for a commandline package: %s"
+ msgstr ""
+ 
+-#: dnf/base.py:2420
++#: dnf/base.py:2434
+ #, python-format
+ msgid ". Failing package is: %s"
+ msgstr ""
+ 
+-#: dnf/base.py:2421
++#: dnf/base.py:2435
+ #, python-format
+ msgid "GPG Keys are configured as: %s"
+ msgstr ""
+ 
+-#: dnf/base.py:2433
++#: dnf/base.py:2447
+ #, python-format
+ msgid "GPG key at %s (0x%s) is already installed"
+ msgstr ""
+ 
+-#: dnf/base.py:2469
++#: dnf/base.py:2483
+ msgid "The key has been approved."
+ msgstr ""
+ 
+-#: dnf/base.py:2472
++#: dnf/base.py:2486
+ msgid "The key has been rejected."
+ msgstr ""
+ 
+-#: dnf/base.py:2505
++#: dnf/base.py:2519
+ #, python-format
+ msgid "Key import failed (code %d)"
+ msgstr ""
+ 
+-#: dnf/base.py:2507
++#: dnf/base.py:2521
+ msgid "Key imported successfully"
+ msgstr ""
+ 
+-#: dnf/base.py:2511
++#: dnf/base.py:2525
+ msgid "Didn't install any keys"
+ msgstr ""
+ 
+-#: dnf/base.py:2514
++#: dnf/base.py:2528
+ #, python-format
+ msgid ""
+ "The GPG keys listed for the \"%s\" repository are already installed but they "
+@@ -477,49 +477,49 @@ msgid ""
+ "Check that the correct key URLs are configured for this repository."
+ msgstr ""
+ 
+-#: dnf/base.py:2525
++#: dnf/base.py:2539
+ msgid "Import of key(s) didn't help, wrong key(s)?"
+ msgstr ""
+ 
+-#: dnf/base.py:2578
++#: dnf/base.py:2592
+ msgid "  * Maybe you meant: {}"
+ msgstr ""
+ 
+-#: dnf/base.py:2610
++#: dnf/base.py:2624
+ msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
+ msgstr ""
+ 
+-#: dnf/base.py:2613
++#: dnf/base.py:2627
+ msgid "Some packages from local repository have incorrect checksum"
+ msgstr ""
+ 
+-#: dnf/base.py:2616
++#: dnf/base.py:2630
+ msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
+ msgstr ""
+ 
+-#: dnf/base.py:2619
++#: dnf/base.py:2633
+ msgid ""
+ "Some packages have invalid cache, but cannot be downloaded due to \"--"
+ "cacheonly\" option"
+ msgstr ""
+ 
+-#: dnf/base.py:2637 dnf/base.py:2657
++#: dnf/base.py:2651 dnf/base.py:2671
+ msgid "No match for argument"
+ msgstr ""
+ 
+-#: dnf/base.py:2645 dnf/base.py:2665
++#: dnf/base.py:2659 dnf/base.py:2679
+ msgid "All matches were filtered out by exclude filtering for argument"
+ msgstr ""
+ 
+-#: dnf/base.py:2647
++#: dnf/base.py:2661
+ msgid "All matches were filtered out by modular filtering for argument"
+ msgstr ""
+ 
+-#: dnf/base.py:2663
++#: dnf/base.py:2677
+ msgid "All matches were installed from a different repository for argument"
+ msgstr ""
+ 
+-#: dnf/base.py:2710
++#: dnf/base.py:2724
+ #, python-format
+ msgid "Package %s is already installed."
+ msgstr ""
+@@ -529,7 +529,7 @@ msgstr ""
+ msgid "Unexpected value of environment variable: DNF_DISABLE_ALIASES=%s"
+ msgstr ""
+ 
+-#: dnf/cli/aliases.py:105 dnf/conf/config.py:457
++#: dnf/cli/aliases.py:105 dnf/conf/config.py:475
+ #, python-format
+ msgid "Parsing file \"%s\" failed: %s"
+ msgstr ""
+@@ -3354,10 +3354,6 @@ msgstr ""
+ msgid "    State  : %s"
+ msgstr ""
+ 
+-#: dnf/comps.py:104
+-msgid "skipping."
+-msgstr ""
+-
+ #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706
+ #, python-format
+ msgid "Module or Group '%s' is not installed."
+@@ -3408,41 +3404,45 @@ msgstr ""
+ msgid "Invalid configuration value: %s=%s in %s; %s"
+ msgstr ""
+ 
+-#: dnf/conf/config.py:226
++#: dnf/conf/config.py:194
++msgid "Cannot set \"{}\" to \"{}\": {}"
++msgstr ""
++
++#: dnf/conf/config.py:244
+ msgid "Could not set cachedir: {}"
+ msgstr ""
+ 
+-#: dnf/conf/config.py:275
++#: dnf/conf/config.py:293
+ msgid ""
+ "Configuration file URL \"{}\" could not be downloaded:\n"
+ "  {}"
+ msgstr ""
+ 
+-#: dnf/conf/config.py:355 dnf/conf/config.py:391
++#: dnf/conf/config.py:373 dnf/conf/config.py:409
+ #, python-format
+ msgid "Unknown configuration option: %s = %s"
+ msgstr ""
+ 
+-#: dnf/conf/config.py:372
++#: dnf/conf/config.py:390
+ #, python-format
+ msgid "Error parsing --setopt with key '%s', value '%s': %s"
+ msgstr ""
+ 
+-#: dnf/conf/config.py:380
++#: dnf/conf/config.py:398
+ #, python-format
+ msgid "Main config did not have a %s attr. before setopt"
+ msgstr ""
+ 
+-#: dnf/conf/config.py:427 dnf/conf/config.py:445
++#: dnf/conf/config.py:445 dnf/conf/config.py:463
+ msgid "Incorrect or unknown \"{}\": {}"
+ msgstr ""
+ 
+-#: dnf/conf/config.py:501
++#: dnf/conf/config.py:519
+ #, python-format
+ msgid "Error parsing --setopt with key '%s.%s', value '%s': %s"
+ msgstr ""
+ 
+-#: dnf/conf/config.py:504
++#: dnf/conf/config.py:522
+ #, python-format
+ msgid "Repo %s did not have a %s attr. before setopt"
+ msgstr ""
+@@ -3523,32 +3523,32 @@ msgstr ""
+ msgid "Will not install a source rpm package (%s)."
+ msgstr ""
+ 
+-#: dnf/dnssec.py:168
++#: dnf/dnssec.py:171
+ msgid ""
+ "Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
+ msgstr ""
+ 
+-#: dnf/dnssec.py:239
++#: dnf/dnssec.py:243
+ msgid "DNSSEC extension: Key for user "
+ msgstr ""
+ 
+-#: dnf/dnssec.py:241
++#: dnf/dnssec.py:245
+ msgid "is valid."
+ msgstr ""
+ 
+-#: dnf/dnssec.py:243
++#: dnf/dnssec.py:247
+ msgid "has unknown status."
+ msgstr ""
+ 
+-#: dnf/dnssec.py:251
++#: dnf/dnssec.py:255
+ msgid "DNSSEC extension: "
+ msgstr ""
+ 
+-#: dnf/dnssec.py:283
++#: dnf/dnssec.py:287
+ msgid "Testing already imported keys for their validity."
+ msgstr ""
+ 
+-#: dnf/drpm.py:62 dnf/repo.py:268
++#: dnf/drpm.py:62 dnf/repo.py:267
+ #, python-format
+ msgid "unsupported checksum type: %s"
+ msgstr ""
+@@ -3591,7 +3591,7 @@ msgid_plural "Modular dependency problems with Defaults:"
+ msgstr[0] ""
+ msgstr[1] ""
+ 
+-#: dnf/exceptions.py:131 dnf/module/module_base.py:854
++#: dnf/exceptions.py:131 dnf/module/module_base.py:857
+ msgid "Modular dependency problem:"
+ msgid_plural "Modular dependency problems:"
+ msgstr[0] ""
+@@ -3680,7 +3680,7 @@ msgid ""
+ msgstr ""
+ 
+ #: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+-#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
++#: dnf/module/module_base.py:615 dnf/module/module_base.py:684
+ msgid "Ignoring unnecessary profile: '{}/{}'"
+ msgstr ""
+ 
+@@ -3736,7 +3736,7 @@ msgstr ""
+ #: dnf/module/module_base.py:310 dnf/module/module_base.py:461
+ #: dnf/module/module_base.py:486 dnf/module/module_base.py:505
+ #: dnf/module/module_base.py:552 dnf/module/module_base.py:611
+-#: dnf/module/module_base.py:677 dnf/module/module_base.py:840
++#: dnf/module/module_base.py:680 dnf/module/module_base.py:843
+ msgid "Unable to resolve argument {}"
+ msgstr ""
+ 
+@@ -3765,7 +3765,7 @@ msgid ""
+ "Only module name is required. Ignoring unneeded information in argument: '{}'"
+ msgstr ""
+ 
+-#: dnf/module/module_base.py:841
++#: dnf/module/module_base.py:844
+ msgid "No match for package {}"
+ msgstr ""
+ 
+@@ -3826,7 +3826,7 @@ msgid "Already downloaded"
+ msgstr ""
+ 
+ #. pinging mirrors, this might take a while
+-#: dnf/repo.py:347
++#: dnf/repo.py:346
+ #, python-format
+ msgid "determining the fastest mirror (%s hosts).. "
+ msgstr ""
+@@ -3850,7 +3850,15 @@ msgstr ""
+ msgid "Cannot find rpmkeys executable to verify signatures."
+ msgstr ""
+ 
+-#: dnf/rpm/transaction.py:119
++#: dnf/rpm/transaction.py:70
++msgid "The openDB() function connot open rpm database."
++msgstr ""
++
++#: dnf/rpm/transaction.py:75
++msgid "The dbCookie() function did not return cookie of rpm database."
++msgstr ""
++
++#: dnf/rpm/transaction.py:135
+ msgid "Errors occurred during test transaction."
+ msgstr ""
+ 
+diff --git a/po/fr.po b/po/fr.po
+index 15841a45..a1a64a39 100644
+--- a/po/fr.po
++++ b/po/fr.po
+@@ -9,32 +9,34 @@
+ # dominique bribanick <chepioq@gmail.com>, 2011
+ # Jérôme Fenal <jfenal@gmail.com>, 2014
+ # Kévin Raymond <shaiton@fedoraproject.org>, 2011
+-# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2016. #zanata, 2020, 2021.
++# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2016. #zanata, 2020.
+ # José Fournier <jaaf64@zoraldia.com>, 2016. #zanata
+-# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2017. #zanata, 2020, 2021.
++# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2017. #zanata, 2020.
+ # José Fournier <jaaf64@zoraldia.com>, 2017. #zanata
+ # Jérôme Fenal <jfenal@gmail.com>, 2017. #zanata
+-# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2018. #zanata, 2020, 2021.
++# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2018. #zanata, 2020.
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
+-# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata, 2020, 2021.
++# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata, 2020.
+ # Julien Humbert <julroy67@gmail.com>, 2020, 2021.
+-# Karim ALI ABDELMAKSOU ABDELHAMID <contact@maksoud-karim.net>, 2020.
+-# Arnaud T. <listes.00@gmail.com>, 2020, 2021.
++# Sundeep Anand <suanand@redhat.com>, 2021.
+ # Guillaume Jacob <abun.lp@gmail.com>, 2021.
++# Titouan Bénard <itotutona@evta.fr>, 2021.
++# Transtats <suanand@redhat.com>, 2022.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2021-06-13 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/dnf-master/fr/>\n"
++"POT-Creation-Date: 2022-02-28 11:37+0100\n"
++"PO-Revision-Date: 2022-03-09 12:39+0000\n"
++"Last-Translator: Transtats <suanand@redhat.com>\n"
++"Language-Team: French <https://translate.fedoraproject.org/projects/dnf/"
++"dnf-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.2\n"
+ 
+ #: dnf/automatic/emitter.py:32
+ #, python-format
+@@ -97,7 +99,7 @@ msgstr "La vérification GPG a ÉCHOUÉ"
+ 
+ #: dnf/automatic/main.py:274
+ msgid "Waiting for internet connection..."
+-msgstr "En attente d'une connexion Internet…"
++msgstr "En attente d'une connexion Internet..."
+ 
+ #: dnf/automatic/main.py:304
+ msgid "Started dnf-automatic."
+@@ -193,8 +195,8 @@ msgstr "Dépôts ignorés : %s"
+ #, python-format
+ msgid "Last metadata expiration check: %s ago on %s."
+ msgstr ""
+-"Dernière vérification de l’expiration des métadonnées effectuée il y a %s le"
+-" %s."
++"Dernière vérification de l’expiration des métadonnées effectuée il y a %s le "
++"%s."
+ 
+ #: dnf/base.py:512
+ msgid ""
+@@ -219,44 +221,44 @@ msgstr "tsflag invalide dans le fichier de configuration : %s"
+ msgid "Failed to add groups file for repository: %s - %s"
+ msgstr "Échec d’ajout du fichier de groupes pour le dépôt : %s - %s"
+ 
+-#: dnf/base.py:904
++#: dnf/base.py:922
+ msgid "Running transaction check"
+ msgstr "Test de la transaction"
+ 
+-#: dnf/base.py:912
++#: dnf/base.py:930
+ msgid "Error: transaction check vs depsolve:"
+ msgstr ""
+ "Erreur : vérification de transaction contre résolution des dépendances :"
+ 
+-#: dnf/base.py:918
++#: dnf/base.py:936
+ msgid "Transaction check succeeded."
+ msgstr "La vérification de la transaction a réussi."
+ 
+-#: dnf/base.py:921
++#: dnf/base.py:939
+ msgid "Running transaction test"
+ msgstr "Lancement de la transaction de test"
+ 
+-#: dnf/base.py:931 dnf/base.py:1082
++#: dnf/base.py:949 dnf/base.py:1100
+ msgid "RPM: {}"
+ msgstr "RPM : {}"
+ 
+-#: dnf/base.py:932
++#: dnf/base.py:950
+ msgid "Transaction test error:"
+ msgstr "Erreur de la transaction de test :"
+ 
+-#: dnf/base.py:943
++#: dnf/base.py:961
+ msgid "Transaction test succeeded."
+ msgstr "Transaction de test réussie."
+ 
+-#: dnf/base.py:964
++#: dnf/base.py:982
+ msgid "Running transaction"
+ msgstr "Exécution de la transaction"
+ 
+-#: dnf/base.py:1001
++#: dnf/base.py:1019
+ msgid "Disk Requirements:"
+ msgstr "Besoins en espace disque :"
+ 
+-#: dnf/base.py:1004
++#: dnf/base.py:1022
+ #, python-brace-format
+ msgid "At least {0}MB more space needed on the {1} filesystem."
+ msgid_plural "At least {0}MB more space needed on the {1} filesystem."
+@@ -264,125 +266,121 @@ msgstr[0] ""
+ "Au moins {0} Mio supplémentaire est nécessaire sur le système de fichiers "
+ "{1}."
+ msgstr[1] ""
+-"Au moins {0} Mio supplémentaires sont nécessaires sur le système de fichiers"
+-" {1}."
++"Au moins {0} Mio supplémentaires sont nécessaires sur le système de fichiers "
++"{1}."
+ 
+-#: dnf/base.py:1011
++#: dnf/base.py:1029
+ msgid "Error Summary"
+ msgstr "Résumé des erreurs"
+ 
+-#: dnf/base.py:1037
++#: dnf/base.py:1055
+ #, python-brace-format
+ msgid "RPMDB altered outside of {prog}."
+ msgstr "RPMDB modifié en dehors de {prog}."
+ 
+-#: dnf/base.py:1083 dnf/base.py:1091
++#: dnf/base.py:1101 dnf/base.py:1109
+ msgid "Could not run transaction."
+ msgstr "Impossible d’exécuter la transaction."
+ 
+-#: dnf/base.py:1086
++#: dnf/base.py:1104
+ msgid "Transaction couldn't start:"
+ msgstr "La transaction n’a pas pu démarrer :"
+ 
+-#: dnf/base.py:1100
++#: dnf/base.py:1118
+ #, python-format
+ msgid "Failed to remove transaction file %s"
+ msgstr "Échec de la suppression du fichier de transaction %s"
+ 
+-#: dnf/base.py:1182
++#: dnf/base.py:1200
+ msgid "Some packages were not downloaded. Retrying."
+ msgstr "Certains paquets n’ont pas été téléchargés. Nouvel essai."
+ 
+-#: dnf/base.py:1212
+-#, fuzzy, python-format
+-#| msgid ""
+-#| "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
++#: dnf/base.py:1230
++#, python-format
+ msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%.1f%% saved)"
+ msgstr ""
+-"Les Delta RPM ont réduit la taille des mises à jour de %.1f Mio à %.1f Mio "
+-"(%d.1%% économisés)"
++"Les RPM Delta ont réduit les mises à jour de %.1f Mo à %.1f Mo (%.1f%% "
++"économisé)"
+ 
+-#: dnf/base.py:1216
+-#, fuzzy, python-format
+-#| msgid ""
+-#| "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
++#: dnf/base.py:1234
++#, python-format
+ msgid ""
+ "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%.1f%% wasted)"
+ msgstr ""
+-"Les Delta RPMs en échec ont fait augmenter la taille des mises à jour de "
+-"%.1f Mio à %.1f Mio (%d.1%% gaspillés)"
++"Les échecs des RPM Delta ont augmenté les mises à jour de %.1f Mo à %.1f Mo ("
++"%.1f%% gaspillés)"
+ 
+-#: dnf/base.py:1258
++#: dnf/base.py:1276
+ msgid "Cannot add local packages, because transaction job already exists"
+ msgstr ""
+ "Impossible d’ajouter des paquets locaux, car un travail de transaction "
+ "existe déjà"
+ 
+-#: dnf/base.py:1272
++#: dnf/base.py:1290
+ msgid "Could not open: {}"
+ msgstr "Impossible d’ouvrir : {}"
+ 
+-#: dnf/base.py:1310
++#: dnf/base.py:1328
+ #, python-format
+ msgid "Public key for %s is not installed"
+ msgstr "La clé publique pour %s n’est pas installée"
+ 
+-#: dnf/base.py:1314
++#: dnf/base.py:1332
+ #, python-format
+ msgid "Problem opening package %s"
+ msgstr "Problème à l’ouverture du paquet %s"
+ 
+-#: dnf/base.py:1322
++#: dnf/base.py:1340
+ #, python-format
+ msgid "Public key for %s is not trusted"
+ msgstr "La clé publique pour %s n’est pas de confiance"
+ 
+-#: dnf/base.py:1326
++#: dnf/base.py:1344
+ #, python-format
+ msgid "Package %s is not signed"
+ msgstr "Le paquet %s n’est pas signé"
+ 
+-#: dnf/base.py:1356
++#: dnf/base.py:1374
+ #, python-format
+ msgid "Cannot remove %s"
+ msgstr "Impossible de supprimer %s"
+ 
+-#: dnf/base.py:1360
++#: dnf/base.py:1378
+ #, python-format
+ msgid "%s removed"
+ msgstr "%s supprimé"
+ 
+-#: dnf/base.py:1640
++#: dnf/base.py:1658
+ msgid "No match for group package \"{}\""
+ msgstr "Aucune correspondance pour le paquet du groupe « {} »"
+ 
+-#: dnf/base.py:1726
++#: dnf/base.py:1740
+ #, python-format
+ msgid "Adding packages from group '%s': %s"
+ msgstr "Ajout de paquets en provenance du groupe « %s » : %s"
+ 
+-#: dnf/base.py:1749 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
++#: dnf/base.py:1763 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
+ #: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587
+ #: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80
+ #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110
+ msgid "Nothing to do."
+ msgstr "Rien à faire."
+ 
+-#: dnf/base.py:1767
++#: dnf/base.py:1781
+ msgid "No groups marked for removal."
+ msgstr "Aucun groupe marqué pour suppression."
+ 
+-#: dnf/base.py:1801
++#: dnf/base.py:1815
+ msgid "No group marked for upgrade."
+ msgstr "Aucun groupe marqué pour mise à jour."
+ 
+-#: dnf/base.py:2015
++#: dnf/base.py:2029
+ #, python-format
+ msgid "Package %s not installed, cannot downgrade it."
+ msgstr "Le paquet %s n’est pas installé, impossible de le rétrograder."
+ 
+-#: dnf/base.py:2017 dnf/base.py:2036 dnf/base.py:2049 dnf/base.py:2076
+-#: dnf/base.py:2129 dnf/base.py:2137 dnf/base.py:2271 dnf/cli/cli.py:417
++#: dnf/base.py:2031 dnf/base.py:2050 dnf/base.py:2063 dnf/base.py:2090
++#: dnf/base.py:2143 dnf/base.py:2151 dnf/base.py:2285 dnf/cli/cli.py:417
+ #: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477
+ #: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628
+ #: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147
+@@ -392,30 +390,30 @@ msgstr "Le paquet %s n’est pas installé, impossible de le rétrograder."
+ msgid "No match for argument: %s"
+ msgstr "Aucune correspondance pour l’argument : %s"
+ 
+-#: dnf/base.py:2024
++#: dnf/base.py:2038
+ #, python-format
+ msgid "Package %s of lower version already installed, cannot downgrade it."
+ msgstr ""
+-"Le paquet %s est déjà installé dans une version inférieure, impossible de le"
+-" rétrograder."
++"Le paquet %s est déjà installé dans une version inférieure, impossible de le "
++"rétrograder."
+ 
+-#: dnf/base.py:2047
++#: dnf/base.py:2061
+ #, python-format
+ msgid "Package %s not installed, cannot reinstall it."
+ msgstr "Le paquet %s n’est pas installé, impossible de le réinstaller."
+ 
+-#: dnf/base.py:2062
++#: dnf/base.py:2076
+ #, python-format
+ msgid "File %s is a source package and cannot be updated, ignoring."
+ msgstr ""
+ "Le fichier %s est un paquet source et ne peut pas être mis à jour, ignoré."
+ 
+-#: dnf/base.py:2073
++#: dnf/base.py:2087
+ #, python-format
+ msgid "Package %s not installed, cannot update it."
+ msgstr "Le paquet %s n’est pas installé, impossible de le mettre à jour."
+ 
+-#: dnf/base.py:2083
++#: dnf/base.py:2097
+ #, python-format
+ msgid ""
+ "The same or higher version of %s is already installed, cannot update it."
+@@ -423,173 +421,176 @@ msgstr ""
+ "La même une ou version supérieure de %s est déjà installée, mise à jour "
+ "impossible."
+ 
+-#: dnf/base.py:2126 dnf/cli/commands/reinstall.py:81
++#: dnf/base.py:2140 dnf/cli/commands/reinstall.py:81
+ #, python-format
+ msgid "Package %s available, but not installed."
+ msgstr "Le paquet %s est disponible mais n’est pas installé."
+ 
+-#: dnf/base.py:2132
++#: dnf/base.py:2146
+ #, python-format
+ msgid "Package %s available, but installed for different architecture."
+ msgstr ""
+ "Le paquet %s est disponible mais est installé pour une autre architecture."
+ 
+-#: dnf/base.py:2157
++#: dnf/base.py:2171
+ #, python-format
+ msgid "No package %s installed."
+ msgstr "Aucun paquet %s installé."
+ 
+-#: dnf/base.py:2175 dnf/cli/commands/install.py:136
++#: dnf/base.py:2189 dnf/cli/commands/install.py:136
+ #: dnf/cli/commands/remove.py:133
+ #, python-format
+ msgid "Not a valid form: %s"
+ msgstr "Format invalide : %s"
+ 
+-#: dnf/base.py:2190 dnf/cli/commands/__init__.py:676
++#: dnf/base.py:2204 dnf/cli/commands/__init__.py:676
+ #: dnf/cli/commands/remove.py:162
+ msgid "No packages marked for removal."
+ msgstr "Aucun paquet marqué pour suppression."
+ 
+-#: dnf/base.py:2278 dnf/cli/cli.py:428
++#: dnf/base.py:2292 dnf/cli/cli.py:428
+ #, python-format
+ msgid "Packages for argument %s available, but not installed."
+ msgstr "Les paquets pour le paramètre %s sont disponibles mais pas installés."
+ 
+-#: dnf/base.py:2283
++#: dnf/base.py:2297
+ #, python-format
+ msgid "Package %s of lowest version already installed, cannot downgrade it."
+ msgstr ""
+ "La version la plus ancienne du paquet %s est déjà installée, impossible de "
+ "le rétrograder."
+ 
+-#: dnf/base.py:2383
++#: dnf/base.py:2397
+ msgid "No security updates needed, but {} update available"
+ msgstr ""
+ "Aucune mise à jour de sécurité n’est nécessaire, mais la mise à jour {} est "
+ "disponible"
+ 
+-#: dnf/base.py:2385
++#: dnf/base.py:2399
+ msgid "No security updates needed, but {} updates available"
+ msgstr ""
+ "Aucune mise à jour de sécurité n’est nécessaire, mais les mises à jour {} "
+ "sont disponibles"
+ 
+-#: dnf/base.py:2389
++#: dnf/base.py:2403
+ msgid "No security updates needed for \"{}\", but {} update available"
+ msgstr ""
+ "Aucune mise à jour de sécurité n’est nécessaire pour « {} », mais la mise à "
+ "jour {} est disponible"
+ 
+-#: dnf/base.py:2391
++#: dnf/base.py:2405
+ msgid "No security updates needed for \"{}\", but {} updates available"
+ msgstr ""
+ "Aucune mise à jour de sécurité n’est nécessaire pour « {} », mais les mises "
+ "à jour {} sont disponibles"
+ 
+ #. raise an exception, because po.repoid is not in self.repos
+-#: dnf/base.py:2412
++#: dnf/base.py:2426
+ #, python-format
+ msgid "Unable to retrieve a key for a commandline package: %s"
+ msgstr ""
+ "Impossible de récupérer une clé pour un paquet en ligne de commande : %s"
+ 
+-#: dnf/base.py:2420
++#: dnf/base.py:2434
+ #, python-format
+ msgid ". Failing package is: %s"
+ msgstr ". Le paquet en erreur est : %s"
+ 
+-#: dnf/base.py:2421
++#: dnf/base.py:2435
+ #, python-format
+ msgid "GPG Keys are configured as: %s"
+ msgstr "Les clés GPG sont configurées comme : %s"
+ 
+-#: dnf/base.py:2433
++#: dnf/base.py:2447
+ #, python-format
+ msgid "GPG key at %s (0x%s) is already installed"
+ msgstr "La clé GPG %s (0x%s) est déjà installée"
+ 
+-#: dnf/base.py:2469
++#: dnf/base.py:2483
+ msgid "The key has been approved."
+ msgstr "La clef a été approuvée."
+ 
+-#: dnf/base.py:2472
++#: dnf/base.py:2486
+ msgid "The key has been rejected."
+ msgstr "La clef a été rejetée."
+ 
+-#: dnf/base.py:2505
++#: dnf/base.py:2519
+ #, python-format
+ msgid "Key import failed (code %d)"
+ msgstr "L’import de la clé a échoué (code %d)"
+ 
+-#: dnf/base.py:2507
++#: dnf/base.py:2521
+ msgid "Key imported successfully"
+ msgstr "La clé a bien été importée"
+ 
+-#: dnf/base.py:2511
++#: dnf/base.py:2525
+ msgid "Didn't install any keys"
+ msgstr "Toutes les clés n’ont pas été installées"
+ 
+-#: dnf/base.py:2514
++#: dnf/base.py:2528
+ #, python-format
+ msgid ""
+-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
++"The GPG keys listed for the \"%s\" repository are already installed but they "
++"are not correct for this package.\n"
+ "Check that the correct key URLs are configured for this repository."
+ msgstr ""
+-"Les clés GPG listées pour le dépôt « %s » sont déjà installées mais sont incorrectes pour ce paquet.\n"
++"Les clés GPG listées pour le dépôt « %s » sont déjà installées mais sont "
++"incorrectes pour ce paquet.\n"
+ "Vérifiez que les URL des clés pour ce dépôt soient correctes."
+ 
+-#: dnf/base.py:2525
++#: dnf/base.py:2539
+ msgid "Import of key(s) didn't help, wrong key(s)?"
+ msgstr ""
+ "L’import de la ou des clés n’a pas résolu le problème, clés incorrectes ?"
+ 
+-#: dnf/base.py:2578
++#: dnf/base.py:2592
+ msgid "  * Maybe you meant: {}"
+ msgstr "  * Peut-être vouliez-vous dire : {}"
+ 
+-#: dnf/base.py:2610
++#: dnf/base.py:2624
+ msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
+-msgstr "Le paquet \"{}\" du dépôt local \"{}\" a une somme de contrôle incorrecte"
++msgstr ""
++"Le paquet \"{}\" du dépôt local \"{}\" a une somme de contrôle incorrecte"
+ 
+-#: dnf/base.py:2613
++#: dnf/base.py:2627
+ msgid "Some packages from local repository have incorrect checksum"
+ msgstr "Certains paquets du dépôt local ont une somme de contrôle incorrecte"
+ 
+-#: dnf/base.py:2616
++#: dnf/base.py:2630
+ msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
+ msgstr "Le paquet \"{}\" du dépôt \"{}\" a une somme de contrôle incorrecte"
+ 
+-#: dnf/base.py:2619
++#: dnf/base.py:2633
+ msgid ""
+ "Some packages have invalid cache, but cannot be downloaded due to \"--"
+ "cacheonly\" option"
+ msgstr ""
+-"Certains paquets ont un cache invalide, mais ne peuvent pas être téléchargés"
+-" à cause de l’option « --cacheonly »"
++"Certains paquets ont un cache invalide, mais ne peuvent pas être téléchargés "
++"à cause de l’option « --cacheonly »"
+ 
+-#: dnf/base.py:2637 dnf/base.py:2657
++#: dnf/base.py:2651 dnf/base.py:2671
+ msgid "No match for argument"
+ msgstr "Aucune correspondance pour le paramètre"
+ 
+-#: dnf/base.py:2645 dnf/base.py:2665
++#: dnf/base.py:2659 dnf/base.py:2679
+ msgid "All matches were filtered out by exclude filtering for argument"
+ msgstr ""
+ "Toutes les correspondances ont été filtrées en excluant le filtrage pour "
+ "l’argument"
+ 
+-#: dnf/base.py:2647
++#: dnf/base.py:2661
+ msgid "All matches were filtered out by modular filtering for argument"
+ msgstr ""
+ "Toutes les correspondances ont été filtrées par filtrage modulaire pour les "
+ "arguments"
+ 
+-#: dnf/base.py:2663
++#: dnf/base.py:2677
+ msgid "All matches were installed from a different repository for argument"
+ msgstr ""
+ "Toutes les correspondances ont été installées à partir d’un dépôt différent "
+ "pour le paramètre"
+ 
+-#: dnf/base.py:2710
++#: dnf/base.py:2724
+ #, python-format
+ msgid "Package %s is already installed."
+ msgstr "Le paquet %s est déjà installé."
+@@ -600,7 +601,7 @@ msgid "Unexpected value of environment variable: DNF_DISABLE_ALIASES=%s"
+ msgstr ""
+ "Valeur inattendue de la variable d’environnement : DNF_DISABLE_ALIASES=%s"
+ 
+-#: dnf/cli/aliases.py:105 dnf/conf/config.py:457
++#: dnf/cli/aliases.py:105 dnf/conf/config.py:475
+ #, python-format
+ msgid "Parsing file \"%s\" failed: %s"
+ msgstr "La lecture du fichier « %s » a échoué : %s"
+@@ -641,17 +642,25 @@ msgid ""
+ "The operation would result in switching of module '{0}' stream '{1}' to "
+ "stream '{2}'"
+ msgstr ""
+-"Le résulta de l’opération sera le basculement du flux« {1} » du module « {0}"
+-" » vers le flux« {2} »"
++"Le résulta de l’opération sera le basculement du flux« {1} » du module « {0} "
++"» vers le flux« {2} »"
+ 
+ #: dnf/cli/cli.py:173
+ #, python-brace-format
+ msgid ""
+-"It is not possible to switch enabled streams of a module unless explicitly enabled via configuration option module_stream_switch.\n"
+-"It is recommended to rather remove all installed content from the module, and reset the module using '{prog} 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 sauf si cela est explicitement activé par l’option de configuration module_stream_switch.\n"
+-"Il est plutôt recommandé de retirer tout contenu installé par le module, et de réinitialiser le mode en utilisant la commande « {prog} module reset <nom_du_module> ». Après la réinitialisation, vous pouvez installer les autres flux."
++"It is not possible to switch enabled streams of a module unless explicitly "
++"enabled via configuration option module_stream_switch.\n"
++"It is recommended to rather remove all installed content from the module, "
++"and reset the module using '{prog} 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 sauf si cela "
++"est explicitement activé par l’option de configuration "
++"module_stream_switch.\n"
++"Il est plutôt recommandé de retirer tout contenu installé par le module, et "
++"de réinitialiser le mode en utilisant la commande « {prog} module reset "
++"<nom_du_module> ». Après la réinitialisation, vous pouvez installer les "
++"autres flux."
+ 
+ #: dnf/cli/cli.py:212
+ #, python-brace-format
+@@ -688,7 +697,8 @@ msgid ""
+ "Refusing to automatically import keys when running unattended.\n"
+ "Use \"-y\" to override."
+ msgstr ""
+-"Refus de l’importation automatique des clés lors d’une exécution sans surveillance.\n"
++"Refus de l’importation automatique des clés lors d’une exécution sans "
++"surveillance.\n"
+ "Utilisez l’option « -y » pour passer outre."
+ 
+ #: dnf/cli/cli.py:337
+@@ -756,8 +766,8 @@ msgstr "Aucun dépôt ne correspond à %s"
+ 
+ #: dnf/cli/cli.py:719
+ msgid ""
+-"This command has to be run with superuser privileges (under the root user on"
+-" most systems)."
++"This command has to be run with superuser privileges (under the root user on "
++"most systems)."
+ msgstr ""
+ "Cette commande doit être exécutée avec les privilèges super-utilisateur "
+ "(sous l’utilisateur root sur la plupart des systèmes)."
+@@ -790,8 +800,8 @@ msgid ""
+ "--destdir or --downloaddir must be used with --downloadonly or download or "
+ "system-upgrade command."
+ msgstr ""
+-"--destdir ou --downloaddir doit être utilisé avec la commande --downloadonly"
+-" ou download ou system-upgrade command."
++"--destdir ou --downloaddir doit être utilisé avec la commande --downloadonly "
++"ou download ou system-upgrade command."
+ 
+ #: dnf/cli/cli.py:820
+ msgid ""
+@@ -863,7 +873,8 @@ msgstr ""
+ #, python-brace-format
+ msgid ""
+ "You have enabled checking of packages via GPG keys. This is a good thing.\n"
+-"However, you do not have any GPG public keys installed. You need to download\n"
++"However, you do not have any GPG public keys installed. You need to "
++"download\n"
+ "the keys for packages you wish to install and install them.\n"
+ "You can do that by running the command:\n"
+ "    rpm --import public.gpg.key\n"
+@@ -875,8 +886,10 @@ msgid ""
+ "\n"
+ "For more information contact your distribution or package provider."
+ msgstr ""
+-"Vous avez activé la vérification des paquets par clés GPG. C’est une bonne chose.\n"
+-"Cependant, vous n’avez aucune clé GPG publique installée. Vous devez télécharger\n"
++"Vous avez activé la vérification des paquets par clés GPG. C’est une bonne "
++"chose.\n"
++"Cependant, vous n’avez aucune clé GPG publique installée. Vous devez "
++"télécharger\n"
+ "et installer les clés pour les paquets que vous souhaitez installer..\n"
+ "Vous pouvez le faire en lançant la commande :\n"
+ "rpm --import public. gpg. key\n"
+@@ -886,7 +899,8 @@ msgstr ""
+ "pour un dépôt dans l’option « gpgkey » dans une section de configuration du\n"
+ "dépôt et {prog} l’installera pour vous.\n"
+ "\n"
+-"Pour plus de renseignements, contactez votre distribution ou le fournisseur du paquet."
++"Pour plus de renseignements, contactez votre distribution ou le fournisseur "
++"du paquet."
+ 
+ #: dnf/cli/commands/__init__.py:71
+ #, python-format
+@@ -1318,8 +1332,8 @@ msgstr ""
+ 
+ #: dnf/cli/commands/history.py:68
+ msgid ""
+-"For the replay command, don't check for installed packages matching those in"
+-" transaction"
++"For the replay command, don't check for installed packages matching those in "
++"transaction"
+ msgstr ""
+ "Pour la commande replay, ne vérifie pas si les paquets installés "
+ "correspondent à ceux en transaction"
+@@ -1334,8 +1348,8 @@ msgstr ""
+ 
+ #: dnf/cli/commands/history.py:74
+ msgid ""
+-"For the replay command, skip packages that are not available or have missing"
+-" dependencies"
++"For the replay command, skip packages that are not available or have missing "
++"dependencies"
+ msgstr ""
+ "Pour la commande replay, saute les paquets qui ne sont pas disponibles ou "
+ "qui ont des dépendances manquantes"
+@@ -1368,8 +1382,8 @@ msgstr "Vous n’avez pas accès à la base de données de l’historique : %s"
+ #: dnf/cli/commands/history.py:151
+ #, python-format
+ msgid ""
+-"Cannot undo transaction %s, doing so would result in an inconsistent package"
+-" database."
++"Cannot undo transaction %s, doing so would result in an inconsistent package "
++"database."
+ msgstr ""
+ "Impossible de défaire la transaction %s ; cela aboutirait à une base de "
+ "données des paquets incohérente."
+@@ -1415,7 +1429,8 @@ msgid ""
+ "Invalid transaction ID range definition '{}'.\n"
+ "Use '<transaction-id>..<transaction-id>'."
+ msgstr ""
+-"La définition de la plage d’identifiants de transaction est invalide « {} ».\n"
++"La définition de la plage d’identifiants de transaction est invalide « {} "
++"».\n"
+ "Utilisez « <transaction-id>..<transaction-id> »."
+ 
+ #: dnf/cli/commands/history.py:283
+@@ -1485,8 +1500,7 @@ msgstr "Création des fichiers de cache pour tous les fichiers de métadonnées.
+ #: dnf/cli/commands/mark.py:39
+ msgid "mark or unmark installed packages as installed by user."
+ msgstr ""
+-"marquer ou démarquer les paquets installés comme installés par "
+-"l’utilisateur."
++"marquer ou démarquer les paquets installés comme installés par l’utilisateur."
+ 
+ #: dnf/cli/commands/mark.py:44
+ msgid ""
+@@ -1525,11 +1539,11 @@ msgstr "Le paquet %s n’est pas installé."
+ 
+ #: dnf/cli/commands/module.py:54
+ msgid ""
+-"Only module name, stream, architecture or profile is used. Ignoring unneeded"
+-" information in argument: '{}'"
++"Only module name, stream, architecture or profile is used. Ignoring unneeded "
++"information in argument: '{}'"
+ msgstr ""
+-"Seul le nom, le flux, l’architecture ou le profil du module est utilisé. Les"
+-" paramètres inutiles ont été ignorés dans le paramètre : « {} »"
++"Seul le nom, le flux, l’architecture ou le profil du module est utilisé. Les "
++"paramètres inutiles ont été ignorés dans le paramètre : « {} »"
+ 
+ #: dnf/cli/commands/module.py:80
+ msgid "list all module streams, profiles and states"
+@@ -1864,8 +1878,8 @@ msgstr ""
+ #: dnf/cli/commands/repoquery.py:162
+ msgid "check dependencies exactly as given, opposite of --alldeps"
+ msgstr ""
+-"vérifie les dépendances exactement telles qu’indiquées, le contraire de "
+-"--alldeps"
++"vérifie les dépendances exactement telles qu’indiquées, le contraire de --"
++"alldeps"
+ 
+ #: dnf/cli/commands/repoquery.py:164
+ msgid ""
+@@ -1923,8 +1937,8 @@ msgstr "affiche les changelogs du paquet"
+ #: dnf/cli/commands/repoquery.py:194
+ #, python-format, python-brace-format
+ msgid ""
+-"display format for listing packages: \"%%{name} %%{version} ...\", use "
+-"--querytags to view full tag list"
++"display format for listing packages: \"%%{name} %%{version} ...\", use --"
++"querytags to view full tag list"
+ msgstr ""
+ "format d'affichage pour la liste des paquets : « %%{name} %%{version}… », "
+ "utilisez --querytags pour voir la liste complète des étiquettes"
+@@ -2072,23 +2086,23 @@ msgstr "la clé à chercher"
+ 
+ #: dnf/cli/commands/repoquery.py:295
+ msgid ""
+-"Option '--resolve' has to be used together with one of the '--conflicts', '"
+-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--"
++"Option '--resolve' has to be used together with one of the '--conflicts', '--"
++"depends', '--enhances', '--provides', '--recommends', '--requires', '--"
+ "requires-pre', '--suggests' or '--supplements' options"
+ msgstr ""
+-"Option « --resolve » doit être utilisée en conjonction avec « --conflicts »,"
+-" « --depends », « --enhances », « --provides », « --recommends », « "
+-"--requires », « --requires-pre », « --suggests » ou « --supplements"
++"Option « --resolve » doit être utilisée en conjonction avec « --conflicts », "
++"« --depends », « --enhances », « --provides », « --recommends », « --"
++"requires », « --requires-pre », « --suggests » ou « --supplements"
+ 
+ #: dnf/cli/commands/repoquery.py:305
+ msgid ""
+ "Option '--recursive' has to be used with '--whatrequires <REQ>' (optionally "
+-"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> "
+-"--resolve'"
++"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> --"
++"resolve'"
+ msgstr ""
+-"Option « --recursive » doit être utilisée avec « --whatrequires <REQ> » "
+-"(optionnellement avec « --alldeps », mais pas avec « --exactdeps »), ou avec"
+-" « --requires <REQ> --resolve »"
++"Option « --recursive » doit être utilisée avec « --whatrequires <REQ> "
++"» (optionnellement avec « --alldeps », mais pas avec « --exactdeps »), ou "
++"avec « --requires <REQ> --resolve »"
+ 
+ #: dnf/cli/commands/repoquery.py:312
+ msgid "argument {} requires --whatrequires or --whatdepends option"
+@@ -2102,13 +2116,17 @@ msgstr "Le paquet {} ne contient aucun fichier"
+ #, python-brace-format
+ msgid ""
+ "No valid switch specified\n"
+-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--"
++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--"
++"tree]\n"
+ "\n"
+ "description:\n"
+ "  For the given packages print a tree of thepackages."
+ msgstr ""
+ "Aucune option valide spécifiée\n"
+-"utilisation : {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"utilisation : {prog} repoquery [--conflicts|--enhances|--obsoletes|--"
++"provides|--recommends|--requires|--suggest|--supplements|--whatrequires] "
++"[key] [--tree]\n"
+ "\n"
+ "description :\n"
+ " Afficher une arborescence des paquets pour le paquet donné."
+@@ -2148,8 +2166,7 @@ msgstr "Description"
+ msgid "URL"
+ msgstr "URL"
+ 
+-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary
+-#. & URL)
++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL)
+ #: dnf/cli/commands/search.py:76
+ msgid " & "
+ msgstr " & "
+@@ -2283,7 +2300,8 @@ msgstr ""
+ "help                     affiche l’aide\n"
+ "repository (ou repo)     active, désactive ou liste les dépôts\n"
+ "resolvedep               résout l’ensemble de transactions\n"
+-"transaction (ou ts)      liste, réinitialise ou exécute l’ensemble de transactions\n"
++"transaction (ou ts)      liste, réinitialise ou exécute l’ensemble de "
++"transactions\n"
+ "run                      résoud et exécute l’ensemble de transactions\n"
+ "exit (ou quit)           quitte l’interpréteur de commandes"
+ 
+@@ -2333,19 +2351,19 @@ msgstr "nouveau paquet"
+ 
+ #: dnf/cli/commands/updateinfo.py:50
+ msgid "Critical/Sec."
+-msgstr "Sécurité/Niveau critique"
++msgstr "Sécurité/Niveau critique."
+ 
+ #: dnf/cli/commands/updateinfo.py:51
+ msgid "Important/Sec."
+-msgstr "Sécurité/Niveau important"
++msgstr "Sécurité/Niveau important."
+ 
+ #: dnf/cli/commands/updateinfo.py:52
+ msgid "Moderate/Sec."
+-msgstr "Sécurité/niveau modéré"
++msgstr "Sécurité/niveau modéré."
+ 
+ #: dnf/cli/commands/updateinfo.py:53
+ msgid "Low/Sec."
+-msgstr "Sécurité/Niveau bas"
++msgstr "Sécurité/Niveau bas."
+ 
+ #: dnf/cli/commands/updateinfo.py:63
+ msgid "display advisories about packages"
+@@ -2358,8 +2376,7 @@ msgstr "alertes pour les nouvelles versions de paquets installés (par défaut)"
+ #: dnf/cli/commands/updateinfo.py:80
+ msgid "advisories about equal and older versions of installed packages"
+ msgstr ""
+-"alertes pour des versions équivalentes ou plus anciennes de paquets "
+-"installés"
++"alertes pour des versions équivalentes ou plus anciennes de paquets installés"
+ 
+ #: dnf/cli/commands/updateinfo.py:83
+ msgid ""
+@@ -2455,7 +2472,7 @@ msgstr "autre(s) alertes)"
+ 
+ #: dnf/cli/commands/updateinfo.py:316
+ msgid "Unknown/Sec."
+-msgstr "Sécurité/Niveau inconnu"
++msgstr "Sécurité/Niveau inconnu."
+ 
+ #: dnf/cli/commands/updateinfo.py:357
+ msgid "Bugs"
+@@ -2529,8 +2546,8 @@ msgstr "Terminé."
+ #: dnf/cli/main.py:116
+ msgid "No read/execute access in current directory, moving to /"
+ msgstr ""
+-"Pas d’accès en lecture/exécution sur le répertoire courant, déplacement dans"
+-" /"
++"Pas d’accès en lecture/exécution sur le répertoire courant, déplacement "
++"dans /"
+ 
+ #: dnf/cli/main.py:135
+ msgid "try to add '{}' to command line to replace conflicting packages"
+@@ -2673,8 +2690,7 @@ msgstr "niveau de déboguage pour la sortie"
+ 
+ #: dnf/cli/option_parser.py:236
+ msgid "dumps detailed solving results into files"
+-msgstr ""
+-"détaille les résultats de résolution des dépendances dans des fichiers"
++msgstr "détaille les résultats de résolution des dépendances dans des fichiers"
+ 
+ #: dnf/cli/option_parser.py:240
+ msgid "show duplicates, in repos, in list/search commands"
+@@ -2691,8 +2707,8 @@ msgid ""
+ "capabilities that the package obsoletes for info, list and repoquery"
+ msgstr ""
+ "active la mécanique de traitement des paquets obsolètes de {prog} pour les "
+-"mises à jour ou affiche les fonctionnalités qu’un paquet rend obsolètes pour"
+-" les commandes « info », « list » et « repoquery »"
++"mises à jour ou affiche les fonctionnalités qu’un paquet rend obsolètes pour "
++"les commandes « info », « list » et « repoquery »"
+ 
+ #: dnf/cli/option_parser.py:251
+ msgid "debugging output level for rpm"
+@@ -2716,8 +2732,8 @@ msgstr ""
+ 
+ #: dnf/cli/option_parser.py:266
+ msgid ""
+-"Disable repositories. List option. Supports globs, can be specified multiple"
+-" times."
++"Disable repositories. List option. Supports globs, can be specified multiple "
++"times."
+ msgstr ""
+ "Désactive les dépôts. Option de liste. Prend en charge les globs, peut être "
+ "renseigné plusieurs fois."
+@@ -2727,8 +2743,8 @@ msgid ""
+ "enable just specific repositories by an id or a glob, can be specified "
+ "multiple times"
+ msgstr ""
+-"active seulement des dépôts spécifiques par id ou par le caractère générique"
+-" (*), peut être spécifié plusieurs fois"
++"active seulement des dépôts spécifiques par id ou par le caractère générique "
++"(*), peut être spécifié plusieurs fois"
+ 
+ #: dnf/cli/option_parser.py:275
+ msgid "enable repos with config-manager command (automatically saves)"
+@@ -2823,8 +2839,8 @@ msgstr ""
+ #: dnf/cli/option_parser.py:339
+ msgid "Include packages needed to fix the given BZ, in updates"
+ msgstr ""
+-"Inclut dans les mises à jour les paquets nécessaires pour résoudre le ticket"
+-" BugZilla cité"
++"Inclut dans les mises à jour les paquets nécessaires pour résoudre le ticket "
++"BugZilla cité"
+ 
+ #: dnf/cli/option_parser.py:342
+ msgid "Include packages needed to fix the given CVE, in updates"
+@@ -3094,7 +3110,7 @@ msgstr "Licence        : %s"
+ #: dnf/cli/output.py:871
+ #, python-format
+ msgid "Provide    : %s"
+-msgstr "Provide    : %s"
++msgstr "Fournir : %s"
+ 
+ #: dnf/cli/output.py:891
+ #, python-format
+@@ -3125,8 +3141,7 @@ msgstr "Taille des paquets installés : %s"
+ #: dnf/cli/output.py:970
+ msgid "There was an error calculating installed size"
+ msgstr ""
+-"Une erreur est survenue pendant le calcul de la taille des paquets "
+-"installées"
++"Une erreur est survenue pendant le calcul de la taille des paquets installées"
+ 
+ #: dnf/cli/output.py:974
+ #, python-format
+@@ -3471,7 +3486,7 @@ msgstr "Échec :"
+ 
+ #: dnf/cli/output.py:1764 dnf/cli/output.py:1766
+ msgid "Releasever     :"
+-msgstr "Releasever     :"
++msgstr "Version      :"
+ 
+ #: dnf/cli/output.py:1771 dnf/cli/output.py:1773
+ msgid "Command Line   :"
+@@ -3606,8 +3621,8 @@ msgstr "Inconnu"
+ #, python-format
+ msgid "Unable to find information about the locking process (PID %d)"
+ msgstr ""
+-"Impossible de trouver des informations sur le processus de verrouillage (PID"
+-" %d)"
++"Impossible de trouver des informations sur le processus de verrouillage (PID "
++"%d)"
+ 
+ #: dnf/cli/utils.py:117
+ #, python-format
+@@ -3629,10 +3644,6 @@ msgstr "    A débuté  : %s - il y a %s"
+ msgid "    State  : %s"
+ msgstr "    État : %s"
+ 
+-#: dnf/comps.py:104
+-msgid "skipping."
+-msgstr "ignorer."
+-
+ #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706
+ #, python-format
+ msgid "Module or Group '%s' is not installed."
+@@ -3683,11 +3694,15 @@ msgstr "Erreur lors l’analyse de « %s » : %s"
+ msgid "Invalid configuration value: %s=%s in %s; %s"
+ msgstr "Valeur de configuration non valide : %s=%s dans %s ; %s"
+ 
+-#: dnf/conf/config.py:226
++#: dnf/conf/config.py:194
++msgid "Cannot set \"{}\" to \"{}\": {}"
++msgstr "Impossible de définir \"{}\" à \"{}\" : {}"
++
++#: dnf/conf/config.py:244
+ msgid "Could not set cachedir: {}"
+ msgstr "N’a pas pu définir cachedir : {}"
+ 
+-#: dnf/conf/config.py:275
++#: dnf/conf/config.py:293
+ msgid ""
+ "Configuration file URL \"{}\" could not be downloaded:\n"
+ "  {}"
+@@ -3695,33 +3710,33 @@ msgstr ""
+ "L’URL du fichier de configuration « {} » n’a pas pu être téléchargée :\n"
+ "  {}"
+ 
+-#: dnf/conf/config.py:355 dnf/conf/config.py:391
++#: dnf/conf/config.py:373 dnf/conf/config.py:409
+ #, python-format
+ msgid "Unknown configuration option: %s = %s"
+ msgstr "Option de configuration inconnue : %s=%s"
+ 
+-#: dnf/conf/config.py:372
++#: dnf/conf/config.py:390
+ #, python-format
+ msgid "Error parsing --setopt with key '%s', value '%s': %s"
+ msgstr ""
+ "Erreur lors l’analyse de --setopt avec la clef « %s », valeur « %s » : %s"
+ 
+-#: dnf/conf/config.py:380
++#: dnf/conf/config.py:398
+ #, python-format
+ msgid "Main config did not have a %s attr. before setopt"
+ msgstr "La config principale n’avait pas d’attr. %s avant setopt"
+ 
+-#: dnf/conf/config.py:427 dnf/conf/config.py:445
++#: dnf/conf/config.py:445 dnf/conf/config.py:463
+ msgid "Incorrect or unknown \"{}\": {}"
+ msgstr "Incorrect ou inconnu « {} » : {}"
+ 
+-#: dnf/conf/config.py:501
++#: dnf/conf/config.py:519
+ #, python-format
+ msgid "Error parsing --setopt with key '%s.%s', value '%s': %s"
+ msgstr ""
+ "Erreur lors l’analyse de --setopt avec la clef « %s.%s », valeur « %s » : %s"
+ 
+-#: dnf/conf/config.py:504
++#: dnf/conf/config.py:522
+ #, python-format
+ msgid "Repo %s did not have a %s attr. before setopt"
+ msgstr "Le dépôt « %s » n’avait pas d’attr. %s avant setopt"
+@@ -3796,7 +3811,7 @@ msgstr ""
+ #: dnf/db/group.py:353
+ #, python-format
+ msgid "An rpm exception occurred: %s"
+-msgstr "Une exception rpm s’est produite : %s"
++msgstr "Une exception rpm s'est produite : %s"
+ 
+ #: dnf/db/group.py:355
+ msgid "No available modular metadata for modular package"
+@@ -3807,34 +3822,34 @@ msgstr "Aucune métadonnée de module disponible pour le paquet modulaire"
+ msgid "Will not install a source rpm package (%s)."
+ msgstr "Un paquet source rpm ne sera pas installé (%s)."
+ 
+-#: dnf/dnssec.py:168
++#: dnf/dnssec.py:171
+ msgid ""
+ "Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
+ msgstr ""
+-"L’option de configuration « gpgkey_dns_verification » nécessite "
+-"python3-unbound({})"
++"L’option de configuration « gpgkey_dns_verification » nécessite python3-"
++"unbound({})"
+ 
+-#: dnf/dnssec.py:239
++#: dnf/dnssec.py:243
+ msgid "DNSSEC extension: Key for user "
+ msgstr "Extension DNSSEC : clef pour l’utilisateur "
+ 
+-#: dnf/dnssec.py:241
++#: dnf/dnssec.py:245
+ msgid "is valid."
+ msgstr "est valide."
+ 
+-#: dnf/dnssec.py:243
++#: dnf/dnssec.py:247
+ msgid "has unknown status."
+ msgstr "a un statut inconnu."
+ 
+-#: dnf/dnssec.py:251
++#: dnf/dnssec.py:255
+ msgid "DNSSEC extension: "
+ msgstr "extension DNSSEC : "
+ 
+-#: dnf/dnssec.py:283
++#: dnf/dnssec.py:287
+ msgid "Testing already imported keys for their validity."
+ msgstr "Test de validité des clefs déjà importées."
+ 
+-#: dnf/drpm.py:62 dnf/repo.py:268
++#: dnf/drpm.py:62 dnf/repo.py:267
+ #, python-format
+ msgid "unsupported checksum type: %s"
+ msgstr "type de somme de contrôle non pris en charge : %s"
+@@ -3877,7 +3892,7 @@ msgid_plural "Modular dependency problems with Defaults:"
+ msgstr[0] "Problème de dépendance modulaire avec les valeurs par défaut :"
+ msgstr[1] "Problèmes de dépendance modulaire avec les valeurs par défaut :"
+ 
+-#: dnf/exceptions.py:131 dnf/module/module_base.py:854
++#: dnf/exceptions.py:131 dnf/module/module_base.py:857
+ msgid "Modular dependency problem:"
+ msgid_plural "Modular dependency problems:"
+ msgstr[0] "Problème de dépendance modulaire :"
+@@ -3887,10 +3902,12 @@ msgstr[1] "Problèmes de dépendance modulaire :"
+ #, python-format
+ msgid ""
+ "Malformed lock file found: %s.\n"
+-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf."
++"Ensure no other dnf/yum process is running and remove the lock file manually "
++"or run systemd-tmpfiles --remove dnf.conf."
+ msgstr ""
+ "Fichier verrou malformé trouvé : %s.\n"
+-"Assurez-vous qu’aucun autre processus {prog} n’est en cours d’exécution et supprimez le fichier verrou, ou exécutez systemd-tmpfiles --remove dnf.conf."
++"Assurez-vous qu’aucun autre processus {prog} n’est en cours d’exécution et "
++"supprimez le fichier verrou, ou exécutez systemd-tmpfiles --remove dnf.conf."
+ 
+ #: dnf/module/__init__.py:26
+ msgid "Enabling different stream for '{}'."
+@@ -3975,7 +3992,7 @@ msgstr ""
+ "Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé, [a]ctivé"
+ 
+ #: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+-#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
++#: dnf/module/module_base.py:615 dnf/module/module_base.py:684
+ msgid "Ignoring unnecessary profile: '{}/{}'"
+ msgstr "Profil inutile ignoré : {}/{}"
+ 
+@@ -3983,8 +4000,8 @@ msgstr "Profil inutile ignoré : {}/{}"
+ #, python-brace-format
+ msgid "All matches for argument '{0}' in module '{1}:{2}' are not active"
+ msgstr ""
+-"Toutes les correspondances pour le paramètre « {0} » dans le mode module « "
+-"{1}:{2} » ne sont pas actives"
++"Toutes les correspondances pour le paramètre « {0} » dans le mode module "
++"« {1}:{2} » ne sont pas actives"
+ 
+ #: dnf/module/module_base.py:94 dnf/module/module_base.py:204
+ #, python-brace-format
+@@ -4006,8 +4023,7 @@ msgstr "Impossible de faire correspondre le profil pour l’argument {}"
+ 
+ #: dnf/module/module_base.py:120
+ msgid "No default profiles for module {}:{}. Available profiles: {}"
+-msgstr ""
+-"Aucun profil par défaut pour le module {}:{}. Profils disponibles : {}"
++msgstr "Aucun profil par défaut pour le module {}:{}. Profils disponibles : {}"
+ 
+ #: dnf/module/module_base.py:124
+ msgid "No profiles for module {}:{}"
+@@ -4019,15 +4035,14 @@ msgstr "Le profil par défaut {} n’est pas disponible dans le module {} : {}"
+ 
+ #: dnf/module/module_base.py:144 dnf/module/module_base.py:247
+ msgid "Installing module from Fail-Safe repository is not allowed"
+-msgstr ""
+-"L’installation du module à partir du dépôt Fail-Safe n’est pas permise"
++msgstr "L’installation du module à partir du dépôt Fail-Safe n’est pas permise"
+ 
+ #: dnf/module/module_base.py:196
+ #, python-brace-format
+ msgid "No active matches for argument '{0}' in module '{1}:{2}'"
+ msgstr ""
+-"Aucune correspondance active pour le paramètre « {0} » dans le module « "
+-"{1}:{2} »"
++"Aucune correspondance active pour le paramètre « {0} » dans le module « {1}:"
++"{2} »"
+ 
+ #: dnf/module/module_base.py:228
+ #, python-brace-format
+@@ -4043,7 +4058,7 @@ msgstr "Aucun paquet distrosync disponible pour le nom de paquet « {} »"
+ #: dnf/module/module_base.py:310 dnf/module/module_base.py:461
+ #: dnf/module/module_base.py:486 dnf/module/module_base.py:505
+ #: dnf/module/module_base.py:552 dnf/module/module_base.py:611
+-#: dnf/module/module_base.py:677 dnf/module/module_base.py:840
++#: dnf/module/module_base.py:680 dnf/module/module_base.py:843
+ msgid "Unable to resolve argument {}"
+ msgstr "Impossible de résoudre le paramètre {}"
+ 
+@@ -4051,8 +4066,8 @@ msgstr "Impossible de résoudre le paramètre {}"
+ #, python-brace-format
+ msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed"
+ msgstr ""
+-"La mise à niveau du module « {0} » à partir du dépôt Fail-Safe {1} n’est pas"
+-" permise"
++"La mise à niveau du module « {0} » à partir du dépôt Fail-Safe {1} n’est pas "
++"permise"
+ 
+ #: dnf/module/module_base.py:340 dnf/module/module_base.py:368
+ msgid "Unable to match profile in argument {}"
+@@ -4066,21 +4081,20 @@ msgstr ""
+ #: dnf/module/module_base.py:422
+ #, python-brace-format
+ msgid ""
+-"Argument '{argument}' matches {stream_count} streams ('{streams}') of module"
+-" '{module}', but none of the streams are enabled or default"
++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module "
++"'{module}', but none of the streams are enabled or default"
+ msgstr ""
+ "L'argument « {argument} » correspond à {stream_count} flux (« {streams} ») "
+ "du module « {module} », mais aucun des flux n'est activé ou par défaut"
+ 
+ #: dnf/module/module_base.py:509
+ msgid ""
+-"Only module name is required. Ignoring unneeded information in argument: "
+-"'{}'"
++"Only module name is required. Ignoring unneeded information in argument: '{}'"
+ msgstr ""
+ "Seul le nom du module est nécessaire. Les paramètres inutiles ont été "
+ "ignorés : « {} »"
+ 
+-#: dnf/module/module_base.py:841
++#: dnf/module/module_base.py:844
+ msgid "No match for package {}"
+ msgstr "Aucune correspondance pour le paquet {}"
+ 
+@@ -4131,8 +4145,8 @@ msgstr ""
+ #: dnf/plugin.py:247
+ msgid "No matches found for the following disable plugin patterns: {}"
+ msgstr ""
+-"Aucun élément correspondant aux modèles de plugin de désactivation suivants "
+-": {}"
++"Aucun élément correspondant aux modèles de plugin de désactivation "
++"suivants : {}"
+ 
+ #: dnf/repo.py:84
+ #, python-format
+@@ -4144,7 +4158,7 @@ msgid "Already downloaded"
+ msgstr "Déjà téléchargé"
+ 
+ #. pinging mirrors, this might take a while
+-#: dnf/repo.py:347
++#: dnf/repo.py:346
+ #, python-format
+ msgid "determining the fastest mirror (%s hosts).. "
+ msgstr "détermination du miroir le plus rapide (%s hôtes).. "
+@@ -4160,18 +4174,26 @@ msgid "Added %s repo from %s"
+ msgstr "Ajout du dépôt %s depuis le %s"
+ 
+ #: dnf/rpm/miscutils.py:32
+-#, fuzzy, python-format
+-#| msgid "Cannot find rpmkeys executable to verify signatures."
++#, python-format
+ msgid "Using rpmkeys executable at %s to verify signatures"
+ msgstr ""
+-"Impossible de trouver l’exécutable rpmkeys pour vérifier les signatures."
++"Utilisation de l'exécutable rpmkeys dans %s pour vérifier les signatures"
+ 
+ #: dnf/rpm/miscutils.py:66
+ msgid "Cannot find rpmkeys executable to verify signatures."
+ msgstr ""
+ "Impossible de trouver l’exécutable rpmkeys pour vérifier les signatures."
+ 
+-#: dnf/rpm/transaction.py:119
++#: dnf/rpm/transaction.py:70
++msgid "The openDB() function connot open rpm database."
++msgstr "La fonction openDB() n'ouvre pas de base de données rpm."
++
++#: dnf/rpm/transaction.py:75
++msgid "The dbCookie() function did not return cookie of rpm database."
++msgstr ""
++"La fonction dbCookie() n'a pas retourné le cookie de la base de données rpm."
++
++#: dnf/rpm/transaction.py:135
+ msgid "Errors occurred during test transaction."
+ msgstr "Des erreurs sont survenues lors de la transaction de test."
+ 
+@@ -4180,8 +4202,8 @@ msgid ""
+ "allow_vendor_change is disabled. This option is currently not supported for "
+ "downgrade and distro-sync commands"
+ msgstr ""
+-"allow_vendor_change est désactivé. Cette option n’est actuellement pas prise"
+-" en charge pour les commandes downgrade et distro-sync"
++"allow_vendor_change est désactivé. Cette option n’est actuellement pas prise "
++"en charge pour les commandes downgrade et distro-sync"
+ 
+ #. TRANSLATORS: This is for a single package currently being downgraded.
+ #: dnf/transaction.py:80
+@@ -4259,8 +4281,8 @@ msgid ""
+ "Incompatible major version \"{major}\", supported major version is "
+ "\"{major_supp}\"."
+ msgstr ""
+-"Version majeure incompatible « {major} », la version majeure prise en charge"
+-" est « {major_supp} »."
++"Version majeure incompatible « {major} », la version majeure prise en charge "
++"est « {major_supp} »."
+ 
+ #: dnf/transaction_sr.py:224
+ msgid ""
+@@ -4286,7 +4308,8 @@ msgstr "Clé objet « {key} » manquante dans un rpm."
+ 
+ #: dnf/transaction_sr.py:289
+ #, python-brace-format
+-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
++msgid ""
++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
+ msgstr ""
+ "Valeur inattendue pour le paquet de raison « {reason} » pour le rpm nevra "
+ "« {nevra} »."
+@@ -4323,7 +4346,8 @@ msgstr ""
+ 
+ #: dnf/transaction_sr.py:370
+ #, python-brace-format
+-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
++msgid ""
++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
+ msgstr ""
+ "Valeur inattendue pour l’action de paquet « {action} » pour le rpm nevra "
+ "« {nevra} »."
+@@ -4376,7 +4400,9 @@ msgstr "Clé d’objet « {key} » manquante dans un groupe."
+ 
+ #: dnf/transaction_sr.py:571
+ #, python-brace-format
+-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"."
++msgid ""
++"Unexpected value of environment action \"{action}\" for environment "
++"\"{env}\"."
+ msgstr ""
+ "Valeur inattendue pour l’action d’environnement « {action} » pour "
+ "l’environnement « {env} »."
+@@ -4389,8 +4415,8 @@ msgstr "Clé d’objet « {key} » manquante dans un environnement."
+ #: dnf/transaction_sr.py:615
+ #, python-brace-format
+ msgid ""
+-"Package nevra \"{nevra}\", which is not present in the transaction file, was"
+-" pulled into the transaction."
++"Package nevra \"{nevra}\", which is not present in the transaction file, was "
++"pulled into the transaction."
+ msgstr ""
+ "Le paquet nevra « {nevra} », qui n’est pas présent dans le fichier de "
+ "transaction, a été retiré de la transaction."
+@@ -4432,12 +4458,15 @@ msgstr "Échec"
+ msgid "<name-unset>"
+ msgstr "<name-unset>"
+ 
++#~ msgid "skipping."
++#~ msgstr "ignorer."
++
+ #~ msgid ""
+ #~ "Using rpmkeys executable from {path} to verify signature for package: "
+ #~ "{package}."
+ #~ msgstr ""
+-#~ "Utilisation de l’exécutable rpmkeys de {path} pour vérifier la signature du "
+-#~ "paquet : {package}."
++#~ "Utilisation de l'exécutable rpmkeys de {path} pour vérifier la signature "
++#~ "du package : {package}."
+ 
+ #~ msgid "%s: %s check failed: %s vs %s"
+ #~ msgstr "%s : %s vérification a échoué : %s vs %s"
+@@ -4452,7 +4481,7 @@ msgstr "<name-unset>"
+ #~ msgstr "L’identifiant de transaction fourni est introuvable"
+ 
+ #~ msgid "Undoing transaction {}, from {}"
+-#~ msgstr "Révocation de la transaction {}, de {}"
++#~ msgstr "Révocation de lla transaction {}, de {}"
+ 
+ #~ msgid "Errors in \"{filename}\":"
+ #~ msgstr "Erreurs dans « {filename} » :"
+@@ -4464,13 +4493,15 @@ msgstr "<name-unset>"
+ #~ msgstr "format d’affichage des paquets trouvés"
+ 
+ #~ msgid "Available query-tags: use --queryformat \".. %{tag} ..\""
+-#~ msgstr "Balises de requêtes disponibles : utiliser --queryformat \"..%{tag}..\""
++#~ msgstr ""
++#~ "Balises de requêtes disponibles : utiliser --queryformat \"..%{tag}..\""
+ 
+ #~ msgid "Bad transaction IDs, or package(s), given"
+ #~ msgstr "Des paquets ou identifiants de transaction fournis sont erronés"
+ 
+ #~ msgid ""
+-#~ "Display capabilities that the package depends on for running a %%pre script."
++#~ "Display capabilities that the package depends on for running a %%pre "
++#~ "script."
+ #~ msgstr ""
+ #~ "Affiche les fonctionnalités dont le paquet dépend pour le lancement d’un "
+ #~ "script %%pre."
+diff --git a/po/ja.po b/po/ja.po
+index e81d5ceb..e1f463ce 100644
+--- a/po/ja.po
++++ b/po/ja.po
+@@ -14,7 +14,7 @@
+ # Hajime Taira <htaira@fedoraproject.org>, 2017. #zanata
+ # Ooyama Yosiyuki <qqke6wd9k@apricot.ocn.ne.jp>, 2017. #zanata
+ # Casey Jones <nahareport@live.com>, 2018. #zanata
+-# Ludek Janda <ljanda@redhat.com>, 2018. #zanata
++# Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2021.
+ # Noriko Mizumoto <noriko.mizumoto@gmail.com>, 2018. #zanata
+ # Ooyama Yosiyuki <qqke6wd9k@apricot.ocn.ne.jp>, 2018. #zanata
+ # Hajime Taira <htaira@fedoraproject.org>, 2019. #zanata
+@@ -22,20 +22,23 @@
+ # Julien Humbert <julroy67@gmail.com>, 2020.
+ # Casey Jones <nahareport@yahoo.com>, 2020.
+ # Hajime Taira <htaira@pantora.net>, 2020.
++# Sundeep Anand <suanand@redhat.com>, 2021.
++# Transtats <suanand@redhat.com>, 2022.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2021-06-13 09:18-0400\n"
+-"PO-Revision-Date: 2020-07-27 05:29+0000\n"
+-"Last-Translator: Hajime Taira <htaira@pantora.net>\n"
+-"Language-Team: Japanese <https://translate.fedoraproject.org/projects/dnf/dnf-master/ja/>\n"
++"POT-Creation-Date: 2022-02-28 11:37+0100\n"
++"PO-Revision-Date: 2022-03-09 12:39+0000\n"
++"Last-Translator: Transtats <suanand@redhat.com>\n"
++"Language-Team: Japanese <https://translate.fedoraproject.org/projects/dnf/"
++"dnf-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.1.1\n"
++"X-Generator: Weblate 4.11.2\n"
+ 
+ #: dnf/automatic/emitter.py:32
+ #, python-format
+@@ -45,7 +48,7 @@ msgstr "'%s' に以下の更新が適用されました:"
+ #: dnf/automatic/emitter.py:33
+ #, python-format
+ msgid "Updates completed at %s"
+-msgstr "'%s' に更新が適用されました。"
++msgstr "'%s' に更新が適用されました"
+ 
+ #: dnf/automatic/emitter.py:34
+ #, python-format
+@@ -105,11 +108,9 @@ msgid "Started dnf-automatic."
+ msgstr "dnf-automatic を開始しました。"
+ 
+ #: dnf/automatic/main.py:308
+-#, fuzzy
+-#| msgid "Sleep for %s seconds"
+ msgid "Sleep for {} second"
+ msgid_plural "Sleep for {} seconds"
+-msgstr[0] "%s 秒スリープします"
++msgstr[0] "{} 秒スリープします"
+ 
+ #: dnf/automatic/main.py:315
+ msgid "System is off-line."
+@@ -131,11 +132,13 @@ msgstr "repository '{}' のロードに失敗しました"
+ 
+ #: dnf/base.py:327
+ msgid "Metadata timer caching disabled when running on metered connection."
+-msgstr "metered 接続で実行する際、メタデータタイマーキャッシュは無効化されました。"
++msgstr ""
++"metered 接続で実行する際、メタデータタイマーキャッシュは無効化されました。"
+ 
+ #: dnf/base.py:332
+ msgid "Metadata timer caching disabled when running on a battery."
+-msgstr "バッテリーで実行する際、メタデータタイマーキャッシュは無効化されました。"
++msgstr ""
++"バッテリーで実行する際、メタデータタイマーキャッシュは無効化されました。"
+ 
+ #: dnf/base.py:337
+ msgid "Metadata timer caching disabled."
+@@ -178,7 +181,7 @@ msgstr "メタデータキャッシュを作成しました。"
+ #: dnf/base.py:404 dnf/base.py:471
+ #, python-format
+ msgid "%s: using metadata from %s."
+-msgstr "%s: は %s から取得したメタデータを使用中"
++msgstr "%s: は %s から取得したメタデータを使用中。"
+ 
+ #: dnf/base.py:416 dnf/base.py:484
+ #, python-format
+@@ -194,7 +197,9 @@ msgstr "メタデータの期限切れの最終確認: %s 時間前の %s に実
+ msgid ""
+ "The downloaded packages were saved in cache until the next successful "
+ "transaction."
+-msgstr "ダウンロード済みのパッケージは、次の正常なトランザクションまでキャッシュに保存されました。"
++msgstr ""
++"ダウンロード済みのパッケージは、次の正常なトランザクションまでキャッシュに保"
++"存されました。"
+ 
+ #: dnf/base.py:514
+ #, python-format
+@@ -211,158 +216,159 @@ msgstr "設定ファイルの tsflag が無効です: %s"
+ msgid "Failed to add groups file for repository: %s - %s"
+ msgstr "リポジトリーのグループファイルを追加できませんでした: %s - %s"
+ 
+-#: dnf/base.py:904
++#: dnf/base.py:922
+ msgid "Running transaction check"
+ msgstr "トランザクションの確認を実行中"
+ 
+-#: dnf/base.py:912
++#: dnf/base.py:930
+ msgid "Error: transaction check vs depsolve:"
+ msgstr "エラー: トランザクションの確認 vs depsolve:"
+ 
+-#: dnf/base.py:918
++#: dnf/base.py:936
+ msgid "Transaction check succeeded."
+ msgstr "トランザクションの確認に成功しました。"
+ 
+-#: dnf/base.py:921
++#: dnf/base.py:939
+ msgid "Running transaction test"
+ msgstr "トランザクションのテストを実行中"
+ 
+-#: dnf/base.py:931 dnf/base.py:1082
++#: dnf/base.py:949 dnf/base.py:1100
+ msgid "RPM: {}"
+ msgstr "RPM: {}"
+ 
+-#: dnf/base.py:932
++#: dnf/base.py:950
+ msgid "Transaction test error:"
+ msgstr "トランザクションテストエラー:"
+ 
+-#: dnf/base.py:943
++#: dnf/base.py:961
+ msgid "Transaction test succeeded."
+ msgstr "トランザクションのテストに成功しました。"
+ 
+-#: dnf/base.py:964
++#: dnf/base.py:982
+ msgid "Running transaction"
+ msgstr "トランザクションを実行中"
+ 
+-#: dnf/base.py:1001
++#: dnf/base.py:1019
+ msgid "Disk Requirements:"
+-msgstr "ディスク要件"
++msgstr "ディスク要件:"
+ 
+-#: dnf/base.py:1004
++#: dnf/base.py:1022
+ #, python-brace-format
+ msgid "At least {0}MB more space needed on the {1} filesystem."
+ msgid_plural "At least {0}MB more space needed on the {1} filesystem."
+ msgstr[0] "{1} ファイルシステムに最低 {0}MB の追加スペースが必要です。"
+ 
+-#: dnf/base.py:1011
++#: dnf/base.py:1029
+ msgid "Error Summary"
+ msgstr "エラーの概要"
+ 
+-#: dnf/base.py:1037
++#: dnf/base.py:1055
+ #, python-brace-format
+ msgid "RPMDB altered outside of {prog}."
+ msgstr "RPMDBは {prog} のサポート外に変更されました。"
+ 
+-#: dnf/base.py:1083 dnf/base.py:1091
++#: dnf/base.py:1101 dnf/base.py:1109
+ msgid "Could not run transaction."
+ msgstr "トランザクションを実行できませんでした。"
+ 
+-#: dnf/base.py:1086
++#: dnf/base.py:1104
+ msgid "Transaction couldn't start:"
+ msgstr "トランザクションを開始できませんでした:"
+ 
+-#: dnf/base.py:1100
++#: dnf/base.py:1118
+ #, python-format
+ msgid "Failed to remove transaction file %s"
+ msgstr "トランザクションファイル %s の削除に失敗しました"
+ 
+-#: dnf/base.py:1182
++#: dnf/base.py:1200
+ msgid "Some packages were not downloaded. Retrying."
+ msgstr "一部のパッケージはダウンロードされませんでした。再試行中です。"
+ 
+-#: dnf/base.py:1212
+-#, fuzzy, python-format
+-#| msgid ""
+-#| "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
++#: dnf/base.py:1230
++#, python-format
+ msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%.1f%% saved)"
+-msgstr "Delta RPM により %.1f MB の更新を %.1f MB に削減できました。(%d.1%% がキャッシュされていました)"
++msgstr "デルタ RPM は、更新の %.1f MB を %.1f MB に削減しました (%.1f%% "
++"節約しました)。"
+ 
+-#: dnf/base.py:1216
+-#, fuzzy, python-format
+-#| msgid ""
+-#| "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
++#: dnf/base.py:1234
++#, python-format
+ msgid ""
+ "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%.1f%% wasted)"
+-msgstr "非効率な Delta RPM により %.1f MB の更新が増加し、%.1f MB となりました。(%d.1%% が無駄になりました)"
++msgstr "失敗した Delta RPMs は、更新の %.1f MB を %.1f MB に増加しました (%.1f%% "
++"は無駄になりました)"
+ 
+-#: dnf/base.py:1258
++#: dnf/base.py:1276
+ msgid "Cannot add local packages, because transaction job already exists"
+-msgstr "ローカルパッケージを追加できません、トランザクションジョブがすでに存在するためです"
++msgstr ""
++"ローカルパッケージを追加できません、トランザクションジョブがすでに存在するた"
++"めです"
+ 
+-#: dnf/base.py:1272
++#: dnf/base.py:1290
+ msgid "Could not open: {}"
+ msgstr "開くことができませんでした: {}"
+ 
+-#: dnf/base.py:1310
++#: dnf/base.py:1328
+ #, python-format
+ msgid "Public key for %s is not installed"
+ msgstr "%s の公開鍵がインストールされていません"
+ 
+-#: dnf/base.py:1314
++#: dnf/base.py:1332
+ #, python-format
+ msgid "Problem opening package %s"
+ msgstr "パッケージ %s を開くことができません"
+ 
+-#: dnf/base.py:1322
++#: dnf/base.py:1340
+ #, python-format
+ msgid "Public key for %s is not trusted"
+ msgstr "%s の公開鍵は信頼されていません"
+ 
+-#: dnf/base.py:1326
++#: dnf/base.py:1344
+ #, python-format
+ msgid "Package %s is not signed"
+ msgstr "パッケージ %s は署名されていません"
+ 
+-#: dnf/base.py:1356
++#: dnf/base.py:1374
+ #, python-format
+ msgid "Cannot remove %s"
+ msgstr "%s を削除できません"
+ 
+-#: dnf/base.py:1360
++#: dnf/base.py:1378
+ #, python-format
+ msgid "%s removed"
+ msgstr "%s を削除しました"
+ 
+-#: dnf/base.py:1640
++#: dnf/base.py:1658
+ msgid "No match for group package \"{}\""
+-msgstr "グループパッケージ  \"{}\" に一致するものはありません"
++msgstr "グループパッケージ \"{}\" に一致するものはありません"
+ 
+-#: dnf/base.py:1726
++#: dnf/base.py:1740
+ #, python-format
+ msgid "Adding packages from group '%s': %s"
+ msgstr "グループ '%s' からのパッケージを追加します: %s"
+ 
+-#: dnf/base.py:1749 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
++#: dnf/base.py:1763 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
+ #: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587
+ #: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80
+ #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110
+ msgid "Nothing to do."
+ msgstr "行うべきことはありません。"
+ 
+-#: dnf/base.py:1767
++#: dnf/base.py:1781
+ msgid "No groups marked for removal."
+ msgstr "削除対象のパッケージはありません。"
+ 
+-#: dnf/base.py:1801
++#: dnf/base.py:1815
+ msgid "No group marked for upgrade."
+ msgstr "アップグレード対象のグループはありません。"
+ 
+-#: dnf/base.py:2015
++#: dnf/base.py:2029
+ #, python-format
+ msgid "Package %s not installed, cannot downgrade it."
+-msgstr "パッケージ %s はインストールされていないので、ダウングレードできません。"
++msgstr ""
++"パッケージ %s はインストールされていないので、ダウングレードできません。"
+ 
+-#: dnf/base.py:2017 dnf/base.py:2036 dnf/base.py:2049 dnf/base.py:2076
+-#: dnf/base.py:2129 dnf/base.py:2137 dnf/base.py:2271 dnf/cli/cli.py:417
++#: dnf/base.py:2031 dnf/base.py:2050 dnf/base.py:2063 dnf/base.py:2090
++#: dnf/base.py:2143 dnf/base.py:2151 dnf/base.py:2285 dnf/cli/cli.py:417
+ #: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477
+ #: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628
+ #: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147
+@@ -372,178 +378,197 @@ msgstr "パッケージ %s はインストールされていないので、ダ
+ msgid "No match for argument: %s"
+ msgstr "一致した引数がありません: %s"
+ 
+-#: dnf/base.py:2024
++#: dnf/base.py:2038
+ #, python-format
+ msgid "Package %s of lower version already installed, cannot downgrade it."
+-msgstr "下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできません。"
++msgstr ""
++"下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできま"
++"せん。"
+ 
+-#: dnf/base.py:2047
++#: dnf/base.py:2061
+ #, python-format
+ msgid "Package %s not installed, cannot reinstall it."
+-msgstr "パッケージ %s はインストールされていないのでの、再インストールできません。"
++msgstr ""
++"パッケージ %s はインストールされていないのでの、再インストールできません。"
+ 
+-#: dnf/base.py:2062
++#: dnf/base.py:2076
+ #, python-format
+ msgid "File %s is a source package and cannot be updated, ignoring."
+ msgstr "ファイル %s はソースパッケージで更新できません。無視します。"
+ 
+-#: dnf/base.py:2073
++#: dnf/base.py:2087
+ #, python-format
+ msgid "Package %s not installed, cannot update it."
+ msgstr "パッケージ %s はインストールされていないので、更新できません。"
+ 
+-#: dnf/base.py:2083
++#: dnf/base.py:2097
+ #, python-format
+ msgid ""
+ "The same or higher version of %s is already installed, cannot update it."
+-msgstr "同じまたはさらに新しいバージョンの %s が既にインストールされています、アップデートできません。"
++msgstr ""
++"同じまたはさらに新しいバージョンの %s が既にインストールされています、アップ"
++"デートできません。"
+ 
+-#: dnf/base.py:2126 dnf/cli/commands/reinstall.py:81
++#: dnf/base.py:2140 dnf/cli/commands/reinstall.py:81
+ #, python-format
+ msgid "Package %s available, but not installed."
+ msgstr "パッケージ %s は利用可能ですが、インストールされていません。"
+ 
+-#: dnf/base.py:2132
++#: dnf/base.py:2146
+ #, python-format
+ msgid "Package %s available, but installed for different architecture."
+-msgstr "パッケージ %s は利用可能ですが、他のアーキテクチャー用にインストールされています。"
++msgstr ""
++"パッケージ %s は利用可能ですが、他のアーキテクチャー用にインストールされてい"
++"ます。"
+ 
+-#: dnf/base.py:2157
++#: dnf/base.py:2171
+ #, python-format
+ msgid "No package %s installed."
+ msgstr "パッケージ %s はインストールされていません。"
+ 
+-#: dnf/base.py:2175 dnf/cli/commands/install.py:136
++#: dnf/base.py:2189 dnf/cli/commands/install.py:136
+ #: dnf/cli/commands/remove.py:133
+ #, python-format
+ msgid "Not a valid form: %s"
+ msgstr "有効な形式ではありません: %s"
+ 
+-#: dnf/base.py:2190 dnf/cli/commands/__init__.py:676
++#: dnf/base.py:2204 dnf/cli/commands/__init__.py:676
+ #: dnf/cli/commands/remove.py:162
+ msgid "No packages marked for removal."
+ msgstr "削除対象のパッケージはありません。"
+ 
+-#: dnf/base.py:2278 dnf/cli/cli.py:428
++#: dnf/base.py:2292 dnf/cli/cli.py:428
+ #, python-format
+ msgid "Packages for argument %s available, but not installed."
+-msgstr "引数  %s のパッケージは利用可能ですが、インストールされていません。"
++msgstr "引数 %s のパッケージは利用可能ですが、インストールされていません。"
+ 
+-#: dnf/base.py:2283
++#: dnf/base.py:2297
+ #, python-format
+ msgid "Package %s of lowest version already installed, cannot downgrade it."
+-msgstr "最下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできません。"
++msgstr ""
++"最下位バージョンのパッケージ %s はインストール済みなので、ダウングレードでき"
++"ません。"
+ 
+-#: dnf/base.py:2383
++#: dnf/base.py:2397
+ msgid "No security updates needed, but {} update available"
+ msgstr "セキュリティー更新は必要ありませんが、{} 更新が利用可能です"
+ 
+-#: dnf/base.py:2385
++#: dnf/base.py:2399
+ msgid "No security updates needed, but {} updates available"
+ msgstr "セキュリティー更新は必要ありませんが、{} 更新が利用可能です"
+ 
+-#: dnf/base.py:2389
++#: dnf/base.py:2403
+ msgid "No security updates needed for \"{}\", but {} update available"
+ msgstr "\"{}\" のセキュリティー更新は必要ありませんが、{} 更新が利用可能です"
+ 
+-#: dnf/base.py:2391
++#: dnf/base.py:2405
+ msgid "No security updates needed for \"{}\", but {} updates available"
+ msgstr "\"{}\" のセキュリティー更新は必要ありませんが、{} 更新が利用可能です"
+ 
+ #. raise an exception, because po.repoid is not in self.repos
+-#: dnf/base.py:2412
++#: dnf/base.py:2426
+ #, python-format
+ msgid "Unable to retrieve a key for a commandline package: %s"
+-msgstr ""
++msgstr "コマンドラインパッケージのキーを取得できません: %s"
+ 
+-#: dnf/base.py:2420
++#: dnf/base.py:2434
+ #, python-format
+ msgid ". Failing package is: %s"
+ msgstr ". 失敗したパッケージは: %s"
+ 
+-#: dnf/base.py:2421
++#: dnf/base.py:2435
+ #, python-format
+ msgid "GPG Keys are configured as: %s"
+ msgstr "GPG 鍵が設定されています: %s"
+ 
+-#: dnf/base.py:2433
++#: dnf/base.py:2447
+ #, python-format
+ msgid "GPG key at %s (0x%s) is already installed"
+ msgstr "%s (0x%s) の GPG 鍵はインストール済みです"
+ 
+-#: dnf/base.py:2469
++#: dnf/base.py:2483
+ msgid "The key has been approved."
+ msgstr "鍵が承認されました。"
+ 
+-#: dnf/base.py:2472
++#: dnf/base.py:2486
+ msgid "The key has been rejected."
+ msgstr "鍵が拒否されました。"
+ 
+-#: dnf/base.py:2505
++#: dnf/base.py:2519
+ #, python-format
+ msgid "Key import failed (code %d)"
+ msgstr "鍵のインポートに失敗しました (コード: %d)"
+ 
+-#: dnf/base.py:2507
++#: dnf/base.py:2521
+ msgid "Key imported successfully"
+ msgstr "鍵のインポートに成功しました"
+ 
+-#: dnf/base.py:2511
++#: dnf/base.py:2525
+ msgid "Didn't install any keys"
+ msgstr "鍵を 1 つもインストールしませんでした"
+ 
+-#: dnf/base.py:2514
++#: dnf/base.py:2528
+ #, python-format
+ msgid ""
+-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
++"The GPG keys listed for the \"%s\" repository are already installed but they "
++"are not correct for this package.\n"
+ "Check that the correct key URLs are configured for this repository."
+ msgstr ""
+-"\"%s\" リポジトリーに一覧表示されている GPG 鍵はインストール済みですが、このパッケージには適切ではありません。\n"
++"\"%s\" リポジトリーに一覧表示されている GPG 鍵はインストール済みですが、この"
++"パッケージには適切ではありません。\n"
+ "正しい鍵 URL がこのリポジトリー用に設定されているか確認してください。"
+ 
+-#: dnf/base.py:2525
++#: dnf/base.py:2539
+ msgid "Import of key(s) didn't help, wrong key(s)?"
+ msgstr "鍵をインポートしても役に立ちませんでした。鍵が間違っていませんか?"
+ 
+-#: dnf/base.py:2578
++#: dnf/base.py:2592
+ msgid "  * Maybe you meant: {}"
+ msgstr "  * おそらく: {}"
+ 
+-#: dnf/base.py:2610
++#: dnf/base.py:2624
+ msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
+-msgstr "ローカルリポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません"
++msgstr ""
++"ローカルリポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありま"
++"せん"
+ 
+-#: dnf/base.py:2613
++#: dnf/base.py:2627
+ msgid "Some packages from local repository have incorrect checksum"
+-msgstr "ローカルリポジトリーのいくつかのパッケージのチェックサムは正しくありません"
++msgstr ""
++"ローカルリポジトリーのいくつかのパッケージのチェックサムは正しくありません"
+ 
+-#: dnf/base.py:2616
++#: dnf/base.py:2630
+ msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
+-msgstr "リポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません"
++msgstr ""
++"リポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません"
+ 
+-#: dnf/base.py:2619
++#: dnf/base.py:2633
+ msgid ""
+ "Some packages have invalid cache, but cannot be downloaded due to \"--"
+ "cacheonly\" option"
+-msgstr "いくつかのパッケージには無効なキャッシュがありますが、\"--cacheonly\" オプションによりダウンロードできません"
++msgstr ""
++"いくつかのパッケージには無効なキャッシュがありますが、\"--cacheonly\" オプ"
++"ションによりダウンロードできません"
+ 
+-#: dnf/base.py:2637 dnf/base.py:2657
++#: dnf/base.py:2651 dnf/base.py:2671
+ msgid "No match for argument"
+ msgstr "一致した引数がありません"
+ 
+-#: dnf/base.py:2645 dnf/base.py:2665
++#: dnf/base.py:2659 dnf/base.py:2679
+ msgid "All matches were filtered out by exclude filtering for argument"
+-msgstr "すべての検索結果は引数の除外フィルタリングに一致しません(filter out)"
++msgstr "すべての検索結果は引数の除外フィルタリングに一致しません (filter out)"
+ 
+-#: dnf/base.py:2647
++#: dnf/base.py:2661
+ msgid "All matches were filtered out by modular filtering for argument"
+-msgstr "すべての検出結果は引数のモジュラーフィルタリングに一致しません(filter out)"
++msgstr ""
++"すべての検出結果は引数のモジュラーフィルタリングに一致しません (filter out)"
+ 
+-#: dnf/base.py:2663
++#: dnf/base.py:2677
+ msgid "All matches were installed from a different repository for argument"
+-msgstr "すべての検索結果は引数に対し異なるレポジトリからインストールされたものです"
++msgstr ""
++"すべての検索結果は引数に対し異なるレポジトリからインストールされたものです"
+ 
+-#: dnf/base.py:2710
++#: dnf/base.py:2724
+ #, python-format
+ msgid "Package %s is already installed."
+ msgstr "パッケージ %s は既にインストールされています。"
+@@ -553,7 +578,7 @@ msgstr "パッケージ %s は既にインストールされています。"
+ msgid "Unexpected value of environment variable: DNF_DISABLE_ALIASES=%s"
+ msgstr "環境変数の予期しない値: DNF_DISABLE_ALIASES=%s"
+ 
+-#: dnf/cli/aliases.py:105 dnf/conf/config.py:457
++#: dnf/cli/aliases.py:105 dnf/conf/config.py:475
+ #, python-format
+ msgid "Parsing file \"%s\" failed: %s"
+ msgstr "ファイル \"%s\" の解析に失敗しました: %s"
+@@ -593,19 +618,24 @@ msgstr "  ビルド      : %s  (日時: %s)"
+ msgid ""
+ "The operation would result in switching of module '{0}' stream '{1}' to "
+ "stream '{2}'"
+-msgstr "オペレーションは、モジュール '{0}' ストリーム '{1}' を ストリーム '{2}' へと切り替える結果となります"
++msgstr ""
++"オペレーションは、モジュール '{0}' ストリーム '{1}' を ストリーム '{2}' へと"
++"切り替える結果となります"
+ 
+ #: dnf/cli/cli.py:173
+-#, fuzzy, python-brace-format
+-#| 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 '{prog} module reset <module_name>' command. After you reset the module, you can install the other stream."
++#, python-brace-format
+ msgid ""
+-"It is not possible to switch enabled streams of a module unless explicitly enabled via configuration option module_stream_switch.\n"
+-"It is recommended to rather remove all installed content from the module, and reset the module using '{prog} module reset <module_name>' command. After you reset the module, you can install the other stream."
++"It is not possible to switch enabled streams of a module unless explicitly "
++"enabled via configuration option module_stream_switch.\n"
++"It is recommended to rather remove all installed content from the module, "
++"and reset the module using '{prog} module reset <module_name>' command. "
++"After you reset the module, you can install the other stream."
+ msgstr ""
+-"モジュールの有効なストリームを切り替えることはできません。\n"
+-"モジュールからインストールされた全てのコンテンツを削除し、 '{prog} module reset <module_name>' コマンドを使用してリセットすることが推奨されます。モジュールのリセット後、他のストリームをインストール可能です。"
++"設定オプション module_stream_switch から明示的に有効化されていない限り、モ"
++"ジュールの有効なストリームを切り替えることはできません。\n"
++"モジュールからインストールされた全てのコンテンツを削除し、'{prog} module "
++"reset <module_name>' コマンドを使用してリセットすることが推奨されます。モ"
++"ジュールのリセット後、他のストリームをインストール可能です。"
+ 
+ #: dnf/cli/cli.py:212
+ #, python-brace-format
+@@ -617,7 +647,9 @@ msgstr "{prog} はトランザクションでパッケージのダウンロー
+ msgid ""
+ "{prog} will only download packages, install gpg keys, and check the "
+ "transaction."
+-msgstr "{prog} はパッケージのダウンロード、gpgキーのインストール、トランザクションのチェックのみ行います。"
++msgstr ""
++"{prog} はパッケージのダウンロード、gpgキーのインストール、トランザクションの"
++"チェックのみ行います。"
+ 
+ #: dnf/cli/cli.py:219
+ msgid "Operation aborted."
+@@ -653,12 +685,12 @@ msgstr "パッケージの廃止"
+ 
+ #: dnf/cli/cli.py:399
+ msgid "No packages marked for distribution synchronization."
+-msgstr "ディストリビューション同期対象のパッケージがありません"
++msgstr "ディストリビューション同期対象のパッケージがありません。"
+ 
+ #: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395
+ #, python-format
+ msgid "No package %s available."
+-msgstr "利用可能なパッケージ %s がありません。"
++msgstr "利用可能なパッケージ %s はありません。"
+ 
+ #: dnf/cli/cli.py:434
+ msgid "No packages marked for downgrade."
+@@ -708,52 +740,59 @@ msgstr "一致するリポジトリーがありません: %s"
+ 
+ #: dnf/cli/cli.py:719
+ msgid ""
+-"This command has to be run with superuser privileges (under the root user on"
+-" most systems)."
+-msgstr "このコマンドはスーパーユーザー特権(大概のシステムではrootユーザー)で実行しなければいけません。"
++"This command has to be run with superuser privileges (under the root user on "
++"most systems)."
++msgstr ""
++"このコマンドはスーパーユーザー特権(大概のシステムではrootユーザー)で実行しな"
++"ければいけません。"
+ 
+ #: dnf/cli/cli.py:749
+ #, python-format
+ msgid "No such command: %s. Please use %s --help"
+-msgstr "そのようなコマンドはありません: %s. %s --help を使用してください。"
++msgstr "そのようなコマンドはありません: %s. %s --help を使用してください"
+ 
+ #: dnf/cli/cli.py:752
+ #, python-format, python-brace-format
+ msgid ""
+ "It could be a {PROG} plugin command, try: \"{prog} install 'dnf-"
+ "command(%s)'\""
+-msgstr "{PROG} プラグインコマンドを実行できません、試してください: \"{prog} install 'dnf-command(%s)'\""
++msgstr ""
++"{PROG} プラグインコマンドを実行できません、試してください: \"{prog} install "
++"'dnf-command(%s)'\""
+ 
+ #: dnf/cli/cli.py:756
+ #, python-brace-format
+ msgid ""
+ "It could be a {prog} plugin command, but loading of plugins is currently "
+ "disabled."
+-msgstr "{prog} プラグインコマンドを実行できません、プラグインのロードが現在無効になっているようです。"
++msgstr ""
++"{prog} プラグインコマンドを実行できません、プラグインのロードが現在無効になっ"
++"ているようです。"
+ 
+ #: dnf/cli/cli.py:814
+ msgid ""
+ "--destdir or --downloaddir must be used with --downloadonly or download or "
+ "system-upgrade command."
+ msgstr ""
+-"--destdir または --downloaddir は、--downloadonly、download あるいは system-upgrade "
+-"コマンドと共に使用する必要があります。"
++"--destdir または --downloaddir は、--downloadonly、download あるいは system-"
++"upgrade コマンドと共に使用する必要があります。"
+ 
+ #: dnf/cli/cli.py:820
+ msgid ""
+ "--enable, --set-enabled and --disable, --set-disabled must be used with "
+ "config-manager command."
+ msgstr ""
+-"--enable と --set-enabled および --disable と --set-disabled は、config-manager "
+-"コマンドと共に使用しなければなりません。"
++"--enable と --set-enabled および --disable と --set-disabled は、config-"
++"manager コマンドと共に使用しなければなりません。"
+ 
+ #: dnf/cli/cli.py:902
+ msgid ""
+ "Warning: Enforcing GPG signature check globally as per active RPM security "
+ "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)"
+ msgstr ""
+-"警告: アクティブな RPM セキュリティーポリシーにより、GPG 署名の確認をグローバルに強制します "
+-"(このメッセージをスケルチするには、dnf.conf(5) の 'gpgcheck' を参照してください)"
++"警告: アクティブな RPM セキュリティーポリシーにより、GPG 署名の確認をグローバ"
++"ルに強制します (このメッセージをスケルチするには、dnf.conf(5) の 'gpgcheck' "
++"を参照してください)"
+ 
+ #: dnf/cli/cli.py:922
+ msgid "Config file \"{}\" does not exist"
+@@ -763,7 +802,9 @@ msgstr "設定ファイル \"{}\" は存在しません"
+ msgid ""
+ "Unable to detect release version (use '--releasever' to specify release "
+ "version)"
+-msgstr "リリースバージョンを検出できません (リリースバージョンを指定するには '--releasever' を使用してください)"
++msgstr ""
++"リリースバージョンを検出できません (リリースバージョンを指定するには '--"
++"releasever' を使用してください)"
+ 
+ #: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471
+ msgid "argument {}: not allowed with argument {}"
+@@ -798,13 +839,16 @@ msgstr "問題を診断するには実行してみてください: '%s'."
+ #: dnf/cli/commands/__init__.py:40
+ #, python-format
+ msgid "You probably have corrupted RPMDB, running '%s' might fix the issue."
+-msgstr "RPMDB を破損させたかもしれませんが、'%s' を実行することでこの問題を解決できる可能性があります。"
++msgstr ""
++"RPMDB を破損させたかもしれませんが、'%s' を実行することでこの問題を解決できる"
++"可能性があります。"
+ 
+ #: dnf/cli/commands/__init__.py:44
+ #, python-brace-format
+ msgid ""
+ "You have enabled checking of packages via GPG keys. This is a good thing.\n"
+-"However, you do not have any GPG public keys installed. You need to download\n"
++"However, you do not have any GPG public keys installed. You need to "
++"download\n"
+ "the keys for packages you wish to install and install them.\n"
+ "You can do that by running the command:\n"
+ "    rpm --import public.gpg.key\n"
+@@ -823,11 +867,13 @@ msgstr ""
+ "    rpm --import public.gpg.key\n"
+ "\n"
+ "\n"
+-"代わりにレポジトリーセクションの 'gpgkey' オプションにあるレポジトリーを使用し\n"
++"代わりにレポジトリーセクションの 'gpgkey' オプションにあるレポジトリーを使用"
++"し\n"
+ "キーのurlを特定したのち、 {prog} がインストールされます。\n"
+ "\n"
+ "\n"
+-"詳細情報はディストリビューションまたはパッケージプロバイダーにコンタクトしてください。"
++"詳細情報はディストリビューションまたはパッケージプロバイダーにコンタクトして"
++"ください。"
+ 
+ #: dnf/cli/commands/__init__.py:71
+ #, python-format
+@@ -1062,7 +1108,8 @@ msgstr "一致するエイリアスがありません: %s"
+ #: dnf/cli/commands/autoremove.py:41
+ msgid ""
+ "remove all unneeded packages that were originally installed as dependencies"
+-msgstr "当初は依存関係としてインストールされた不要なパッケージをすべて削除します"
++msgstr ""
++"当初は依存関係としてインストールされた不要なパッケージをすべて削除します"
+ 
+ #: dnf/cli/commands/autoremove.py:46 dnf/cli/commands/remove.py:59
+ msgid "Package to remove"
+@@ -1141,12 +1188,12 @@ msgid "Waiting for process with pid %d to finish."
+ msgstr "pid %d のプロセスが終了するのを待ちます。"
+ 
+ #: dnf/cli/commands/deplist.py:32
+-#, fuzzy
+-#| msgid "List package's dependencies and what packages provide them"
+ msgid ""
+ "[deprecated, use repoquery --deplist] List package's dependencies and what "
+ "packages provide them"
+-msgstr "パッケージの依存関係とこれを提供するパッケージがどれかを一覧表示します"
++msgstr ""
++"[非推奨、epoquery --deplist を使用] パッケージの依存関係とこれを提供するパッ"
++"ケージがどれかを一覧表示します"
+ 
+ #: dnf/cli/commands/distrosync.py:32
+ msgid "synchronize installed packages to the latest available versions"
+@@ -1236,7 +1283,7 @@ msgstr "グループサブコマンドの引数"
+ #: dnf/cli/commands/group.py:343
+ #, python-format
+ msgid "Invalid groups sub-command, use: %s."
+-msgstr "groups のサブコマンドが無効です: %s. を使用します"
++msgstr "groups のサブコマンドが無効です: %s を使用します。"
+ 
+ #: dnf/cli/commands/group.py:398
+ msgid "Unable to find a mandatory group package."
+@@ -1248,25 +1295,31 @@ msgstr "トランザクション履歴を表示、または使用します"
+ 
+ #: dnf/cli/commands/history.py:66
+ msgid "For the store command, file path to store the transaction to"
+-msgstr ""
++msgstr "store コマンドの場合は、トランザクションを保存するファイルパス"
+ 
+ #: dnf/cli/commands/history.py:68
+ msgid ""
+-"For the replay command, don't check for installed packages matching those in"
+-" transaction"
++"For the replay command, don't check for installed packages matching those in "
++"transaction"
+ msgstr ""
++"replay コマンドの場合は、トランザクション内のパッケージに一致するインストール"
++"済みパッケージを確認しない"
+ 
+ #: dnf/cli/commands/history.py:71
+ msgid ""
+ "For the replay command, don't check for extra packages pulled into the "
+ "transaction"
+ msgstr ""
++"replay コマンドの場合は、トランザクションにプルされた追加パッケージを確認しな"
++"い"
+ 
+ #: dnf/cli/commands/history.py:74
+ msgid ""
+-"For the replay command, skip packages that are not available or have missing"
+-" dependencies"
++"For the replay command, skip packages that are not available or have missing "
++"dependencies"
+ msgstr ""
++"replay コマンドの場合は、利用できないパッケージや、依存関係が不足しているパッ"
++"ケージをスキップ"
+ 
+ #: dnf/cli/commands/history.py:94
+ msgid ""
+@@ -1277,16 +1330,12 @@ msgstr ""
+ "'{}' は 1 つのトランザクション ID またはパッケージ名が必要です。"
+ 
+ #: dnf/cli/commands/history.py:101
+-#, fuzzy
+-#| msgid "No transaction ID or package name given."
+ msgid "No transaction file name given."
+-msgstr "トランザクション ID、またはパッケージ名が指定されていません。"
++msgstr "トランザクションファイル名が指定されていません。"
+ 
+ #: dnf/cli/commands/history.py:103
+-#, fuzzy
+-#| msgid "Failed to remove transaction file %s"
+ msgid "More than one argument given as transaction file name."
+-msgstr "トランザクションファイル %s の削除に失敗しました"
++msgstr "トランザクションファイル名として指定された複数の引数。"
+ 
+ #: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130
+ msgid "No transaction ID or package name given."
+@@ -1300,26 +1349,29 @@ msgstr "履歴 DB にアクセスできません: %s"
+ #: dnf/cli/commands/history.py:151
+ #, python-format
+ msgid ""
+-"Cannot undo transaction %s, doing so would result in an inconsistent package"
+-" database."
+-msgstr "トランザクション %s を取り消すことはできません。取り消すことで、パッケージデータベースに矛盾が生じます。"
++"Cannot undo transaction %s, doing so would result in an inconsistent package "
++"database."
++msgstr ""
++"トランザクション %s を取り消すことはできません。取り消すことで、パッケージ"
++"データベースに矛盾が生じます。"
+ 
+ #: dnf/cli/commands/history.py:156
+ #, python-format
+ msgid ""
+ "Cannot rollback transaction %s, doing so would result in an inconsistent "
+ "package database."
+-msgstr "トランザクション %s をロールバックすることはできません。ロールバックすることで、パッケージデータベースに矛盾が生じます。"
++msgstr ""
++"トランザクション %s をロールバックすることはできません。ロールバックすること"
++"で、パッケージデータベースに矛盾が生じます。"
+ 
+ #: dnf/cli/commands/history.py:175
+ msgid "No transaction ID given"
+ msgstr "トランザクション ID は指定されていません"
+ 
+ #: dnf/cli/commands/history.py:179
+-#, fuzzy, python-brace-format
+-#| msgid "TransactionItem not found for key: {}"
++#, python-brace-format
+ msgid "Transaction ID \"{0}\" not found."
+-msgstr "TransactionItemが見つかりません鍵: {}"
++msgstr "トランザクション ID \"{0}\" が見つかりません。"
+ 
+ #: dnf/cli/commands/history.py:185
+ msgid "Found more than one transaction ID!"
+@@ -1361,27 +1413,23 @@ msgstr "パッケージ '{}' を操作するトランザクションが見つか
+ 
+ #: dnf/cli/commands/history.py:357
+ msgid "{} exists, overwrite?"
+-msgstr ""
++msgstr "{} は存在します。上書きしますか?"
+ 
+ #: dnf/cli/commands/history.py:360
+ msgid "Not overwriting {}, exiting."
+-msgstr ""
++msgstr "{} は存在するため上書きしません。"
+ 
+ #: dnf/cli/commands/history.py:367
+-#, fuzzy
+-#| msgid "Transaction failed"
+ msgid "Transaction saved to {}."
+-msgstr "トランザクションが失敗しました"
++msgstr "{} に保存されているトランザクション。"
+ 
+ #: dnf/cli/commands/history.py:370
+-#, fuzzy
+-#| msgid "Errors occurred during transaction."
+ msgid "Error storing transaction: {}"
+-msgstr "トランザクション中にエラーが発生しました。"
++msgstr "トランザクションの保存エラー: {}"
+ 
+ #: dnf/cli/commands/history.py:386
+ msgid "Warning, the following problems occurred while running a transaction:"
+-msgstr ""
++msgstr "警告: トランザクションの実行中に以下の問題が発生しました:"
+ 
+ #: dnf/cli/commands/install.py:47
+ msgid "install a package or packages on your system"
+@@ -1415,7 +1463,9 @@ msgstr "すべてのメタデータファイルのキャッシュファイルを
+ 
+ #: dnf/cli/commands/mark.py:39
+ msgid "mark or unmark installed packages as installed by user."
+-msgstr "インストール済みパッケージをユーザーがインストールしたとマークするか、またはマークをはずします。"
++msgstr ""
++"インストール済みパッケージをユーザーがインストールしたとマークするか、または"
++"マークをはずします。"
+ 
+ #: dnf/cli/commands/mark.py:44
+ msgid ""
+@@ -1454,9 +1504,11 @@ msgstr "パッケージ %s はインストールされていません。"
+ 
+ #: dnf/cli/commands/module.py:54
+ msgid ""
+-"Only module name, stream, architecture or profile is used. Ignoring unneeded"
+-" information in argument: '{}'"
+-msgstr "モジュール名、ストリーム、アーキテクチャーまたはプロファイルのみが使用されています。引数: '{}' の不要な情報は無視します"
++"Only module name, stream, architecture or profile is used. Ignoring unneeded "
++"information in argument: '{}'"
++msgstr ""
++"モジュール名、ストリーム、アーキテクチャーまたはプロファイルのみが使用されて"
++"います。引数: '{}' の不要な情報は無視します"
+ 
+ #: dnf/cli/commands/module.py:80
+ msgid "list all module streams, profiles and states"
+@@ -1500,7 +1552,7 @@ msgstr "パッケージ {} は複数のモジュールに属しています、
+ 
+ #: dnf/cli/commands/module.py:280
+ msgid "switch a module to a stream and distrosync rpm packages"
+-msgstr ""
++msgstr "モジュールをストリームに切り替え、rpm パッケージを distrosync します"
+ 
+ #: dnf/cli/commands/module.py:302
+ msgid "list modular packages"
+@@ -1727,7 +1779,9 @@ msgstr "キーワードに一致するパッケージを検索します"
+ msgid ""
+ "Query all packages (shorthand for repoquery '*' or repoquery without "
+ "argument)"
+-msgstr "すべてのパッケージをクエリーします (repoquery '*' の短縮形、または引数なしの repoquery)"
++msgstr ""
++"すべてのパッケージをクエリーします (repoquery '*' の短縮形、または引数なしの "
++"repoquery)"
+ 
+ #: dnf/cli/commands/repoquery.py:124
+ msgid "Query all versions of packages (default)"
+@@ -1749,7 +1803,9 @@ msgstr "REQ と競合する結果のみを表示します"
+ msgid ""
+ "shows results that requires, suggests, supplements, enhances,or recommends "
+ "package provides and files REQ"
+-msgstr "REQ を提供およびファイルするパッケージを必要、提案、補完、機能強化、または推奨する結果を表示します"
++msgstr ""
++"REQ を提供およびファイルするパッケージを必要、提案、補完、機能強化、または推"
++"奨する結果を表示します"
+ 
+ #: dnf/cli/commands/repoquery.py:139
+ msgid "show only results that obsolete REQ"
+@@ -1791,7 +1847,9 @@ msgstr "指定されたとおりに依存関係を確認します。--alldeps 
+ msgid ""
+ "used with --whatrequires, and --requires --resolve, query packages "
+ "recursively."
+-msgstr "--whatrequires および --requires --resolve と共に使用し、パッケージを再帰的にクエリーします。"
++msgstr ""
++"--whatrequires および --requires --resolve と共に使用し、パッケージを再帰的に"
++"クエリーします。"
+ 
+ #: dnf/cli/commands/repoquery.py:166
+ msgid "show a list of all dependencies and what packages provide them"
+@@ -1813,7 +1871,9 @@ msgstr "対応するソース RPM で操作します"
+ msgid ""
+ "show N latest packages for a given name.arch (or latest but N if N is "
+ "negative)"
+-msgstr "特定の name.arch に最新パッケージ N を表示します (または N がネガティブな場合は N 以外の最新のもの)"
++msgstr ""
++"特定の name.arch に最新パッケージ N を表示します (または N がネガティブな場合"
++"は N 以外の最新のもの)"
+ 
+ #: dnf/cli/commands/repoquery.py:177
+ msgid "list also packages of inactive module streams"
+@@ -1838,9 +1898,11 @@ msgstr "パッケージの changelogs を表示します"
+ #: dnf/cli/commands/repoquery.py:194
+ #, python-format, python-brace-format
+ msgid ""
+-"display format for listing packages: \"%%{name} %%{version} ...\", use "
+-"--querytags to view full tag list"
++"display format for listing packages: \"%%{name} %%{version} ...\", use --"
++"querytags to view full tag list"
+ msgstr ""
++"パッケージを一覧表示するための形式の表示: \"%%{name} %%{version} ...\"。--"
++"querytags を指定して完全なタグリストを表示"
+ 
+ #: dnf/cli/commands/repoquery.py:198
+ msgid "show available tags to use with --queryformat"
+@@ -1851,19 +1913,24 @@ msgid ""
+ "use name-epoch:version-release.architecture format for displaying found "
+ "packages (default)"
+ msgstr ""
+-"見つかったパッケージを表示するには  name-epoch:version-release.architecture 形式を使用します (デフォルト)"
++"見つかったパッケージを表示するには name-epoch:version-release.architecture 形"
++"式を使用します (デフォルト)"
+ 
+ #: dnf/cli/commands/repoquery.py:205
+ msgid ""
+ "use name-version-release format for displaying found packages (rpm query "
+ "default)"
+-msgstr "見つかったパッケージを表示するには name-version-release 形式を使用します (rpm クエリーデフォルト)"
++msgstr ""
++"見つかったパッケージを表示するには name-version-release 形式を使用します "
++"(rpm クエリーデフォルト)"
+ 
+ #: dnf/cli/commands/repoquery.py:211
+ msgid ""
+ "use epoch:name-version-release.architecture format for displaying found "
+ "packages"
+-msgstr "見つかったパッケージを表示するには epoch:name-version-release.architecture 形式を使用します"
++msgstr ""
++"見つかったパッケージを表示するには epoch:name-version-release.architecture 形"
++"式を使用します"
+ 
+ #: dnf/cli/commands/repoquery.py:214
+ msgid "Display in which comps groups are presented selected packages"
+@@ -1879,7 +1946,8 @@ msgstr "インストール済みの installonly パッケージへのクエリ
+ 
+ #: dnf/cli/commands/repoquery.py:228
+ msgid "limit the query to installed packages with unsatisfied dependencies"
+-msgstr "未充足な依存関係があるインストール済みパッケージへのクエリーを制限します"
++msgstr ""
++"未充足な依存関係があるインストール済みパッケージへのクエリーを制限します"
+ 
+ #: dnf/cli/commands/repoquery.py:230
+ msgid "show a location from where packages can be downloaded"
+@@ -1893,7 +1961,8 @@ msgstr "パッケージが競合する機能を表示します。"
+ msgid ""
+ "Display capabilities that the package can depend on, enhance, recommend, "
+ "suggest, and supplement."
+-msgstr "パッケージが依存、機能強化、推奨、提案、および補完できる機能を表示します。"
++msgstr ""
++"パッケージが依存、機能強化、推奨、提案、および補完できる機能を表示します。"
+ 
+ #: dnf/cli/commands/repoquery.py:236
+ msgid "Display capabilities that the package can enhance."
+@@ -1918,9 +1987,10 @@ msgid ""
+ "running %%pre and %%post scriptlets. If the package is installed display "
+ "capabilities that is depends for %%pre, %%post, %%preun and %%postun."
+ msgstr ""
+-"このパッケージがインストールされていない場合、 %%pre と %%post "
+-"スクリプトレット実行に依存するケイパビリティを表示します。このパッケージがインストールされている場合、 %%pre, %%post, %%preun と"
+-" %%postun に依存するケイパビリティを表示します。"
++"このパッケージがインストールされていない場合、 %%pre と %%post スクリプトレッ"
++"ト実行に依存するケイパビリティを表示します。このパッケージがインストールされ"
++"ている場合、 %%pre, %%post, %%preun と %%postun に依存するケイパビリティを表"
++"示します。"
+ 
+ #: dnf/cli/commands/repoquery.py:243
+ msgid "Display capabilities that the package suggests."
+@@ -1947,7 +2017,9 @@ msgstr "利用可能なリポジトリーに存在しないパッケージのみ
+ msgid ""
+ "Display only packages that provide an upgrade for some already installed "
+ "package."
+-msgstr "インストール済みのパッケージの一部にアップグレードを提供するパッケージのみを表示します。"
++msgstr ""
++"インストール済みのパッケージの一部にアップグレードを提供するパッケージのみを"
++"表示します。"
+ 
+ #: dnf/cli/commands/repoquery.py:256
+ #, python-brace-format
+@@ -1969,26 +2041,28 @@ msgstr "検索するための鍵"
+ 
+ #: dnf/cli/commands/repoquery.py:295
+ msgid ""
+-"Option '--resolve' has to be used together with one of the '--conflicts', '"
+-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--"
++"Option '--resolve' has to be used together with one of the '--conflicts', '--"
++"depends', '--enhances', '--provides', '--recommends', '--requires', '--"
+ "requires-pre', '--suggests' or '--supplements' options"
+ msgstr ""
+-"オプションの '--resolve' は、'--conflicts'、'--depends'、'--enhances'、'--provides'、'--"
+-"recommends'、'--requires'、'--requires-pre'、'--suggests' または '--supplements' "
+-"オプションのいずれか 1 つと使用する必要があります。"
++"オプションの '--resolve' は、'--conflicts'、'--depends'、'--enhances'、'--"
++"provides'、'--recommends'、'--requires'、'--requires-pre'、'--suggests' また"
++"は '--supplements' オプションのいずれか 1 つと使用する必要があります"
+ 
+ #: dnf/cli/commands/repoquery.py:305
+ msgid ""
+ "Option '--recursive' has to be used with '--whatrequires <REQ>' (optionally "
+-"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> "
+-"--resolve'"
++"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> --"
++"resolve'"
+ msgstr ""
+-"オプションの '--recursive' は、'--whatrequires <REQ>' (オプションでは '--exactdeps' ではなく、'"
+-"--alldeps' と共に使用) または '--requires <REQ> --resolve' と共に使用する必要があります。"
++"オプションの '--recursive' は、'--whatrequires <REQ>' (オプションでは '--"
++"exactdeps' ではなく、'--alldeps' と共に使用) または '--requires <REQ> --"
++"resolve' と共に使用する必要があります"
+ 
+ #: dnf/cli/commands/repoquery.py:312
+ msgid "argument {} requires --whatrequires or --whatdepends option"
+-msgstr "引数 {} は --whatrequires または --whatdepends オプションを必要とします"
++msgstr ""
++"引数 {} は --whatrequires または --whatdepends オプションを必要とします"
+ 
+ #: dnf/cli/commands/repoquery.py:344
+ msgid "Package {} contains no files"
+@@ -1998,13 +2072,17 @@ msgstr "パッケージ {} はファイルを含んでいません"
+ #, python-brace-format
+ msgid ""
+ "No valid switch specified\n"
+-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--"
++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--"
++"tree]\n"
+ "\n"
+ "description:\n"
+ "  For the given packages print a tree of thepackages."
+ msgstr ""
+ "正規のスイッチが特定されません\n"
+-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--"
++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--"
++"tree]\n"
+ "\n"
+ "説明:\n"
+ "  与えられたパッケージではパッケージのツリーを表示します。"
+@@ -2044,8 +2122,7 @@ msgstr "説明"
+ msgid "URL"
+ msgstr "URL"
+ 
+-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary
+-#. & URL)
++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL)
+ #: dnf/cli/commands/search.py:76
+ msgid " & "
+ msgstr " & "
+@@ -2121,7 +2198,8 @@ msgid ""
+ "  disable: disable repositories. option = repository id"
+ msgstr ""
+ "{} arg [オプション]\n"
+-" 一覧: リポジトリーとその状態を一覧表示します。オプション = [all | id | glob]\n"
++" 一覧: リポジトリーとその状態を一覧表示します。オプション = [all | id | "
++"glob]\n"
+ "  有効化: リポジトリーの有効化。オプション = リポジトリー id\n"
+ "  無効化: リポジトリーの無効化。オプション = リポジトリー id"
+ 
+@@ -2179,7 +2257,8 @@ msgstr ""
+ "ヘルプ                     ヘルプの印刷\n"
+ "リポジトリー (または repo)     リポジトリーの有効化、無効化、または一覧表示\n"
+ "resolvedep               トランザクションセットの解決\n"
+-"トランザクション (または ts)      トランザクションセットの一覧表示、再設定、または実行\n"
++"トランザクション (または ts)      トランザクションセットの一覧表示、再設定、"
++"または実行\n"
+ "実行                      トランザクションセットの解決および実行\n"
+ "終了 (または 中止)           シェルの終了"
+ 
+@@ -2199,7 +2278,9 @@ msgstr "シェルを終了します"
+ #: dnf/cli/commands/swap.py:35
+ #, python-brace-format
+ msgid "run an interactive {prog} mod for remove and install one spec"
+-msgstr "一つのspecを削除またはインストールするためインタラクティブ {prog} モジュールを実行"
++msgstr ""
++"一つのspecを削除またはインストールするためインタラクティブ {prog} モジュール"
++"を実行"
+ 
+ #: dnf/cli/commands/swap.py:40
+ msgid "The specs that will be removed"
+@@ -2251,13 +2332,16 @@ msgstr "インストール済みパッケージの新しいバージョンに関
+ 
+ #: dnf/cli/commands/updateinfo.py:80
+ msgid "advisories about equal and older versions of installed packages"
+-msgstr "インストール済みパッケージの同じバージョンおよび古いバージョンに関する勧告"
++msgstr ""
++"インストール済みパッケージの同じバージョンおよび古いバージョンに関する勧告"
+ 
+ #: dnf/cli/commands/updateinfo.py:83
+ msgid ""
+ "advisories about newer versions of those installed packages for which a "
+ "newer version is available"
+-msgstr "最新バージョンが利用可能なインストール済みパッケージの最新バージョンに関する勧告"
++msgstr ""
++"最新バージョンが利用可能なインストール済みパッケージの最新バージョンに関する"
++"勧告"
+ 
+ #: dnf/cli/commands/updateinfo.py:87
+ msgid "advisories about any versions of installed packages"
+@@ -2398,7 +2482,8 @@ msgstr "正"
+ 
+ #: dnf/cli/commands/upgrade.py:40
+ msgid "upgrade a package or packages on your system"
+-msgstr "システム上の 1 つのパッケージまたは複数のパッケージをアップグレードします"
++msgstr ""
++"システム上の 1 つのパッケージまたは複数のパッケージをアップグレードします"
+ 
+ #: dnf/cli/commands/upgrade.py:44
+ msgid "Package to upgrade"
+@@ -2408,7 +2493,9 @@ msgstr "アップグレードするパッケージ"
+ msgid ""
+ "upgrade, but only 'newest' package match which fixes a problem that affects "
+ "your system"
+-msgstr "システムに影響する問題を修正する「最新の」パッケージに一致したもののみをアップグレードします"
++msgstr ""
++"システムに影響する問題を修正する「最新の」パッケージに一致したもののみをアッ"
++"プグレードします"
+ 
+ #: dnf/cli/main.py:88
+ msgid "Terminated."
+@@ -2420,23 +2507,29 @@ msgstr "現在のディレクトリーには読み取り/実行権限があり
+ 
+ #: dnf/cli/main.py:135
+ msgid "try to add '{}' to command line to replace conflicting packages"
+-msgstr "競合するパッケージを置き換えるには、コマンドラインに '{}' を追加してみてください"
++msgstr ""
++"競合するパッケージを置き換えるには、コマンドラインに '{}' を追加してみてくだ"
++"さい"
+ 
+ #: dnf/cli/main.py:139
+ msgid "try to add '{}' to skip uninstallable packages"
+-msgstr "インストール不可のパッケージをスキップするには、'{}' を追加してみてください"
++msgstr ""
++"インストール不可のパッケージをスキップするには、'{}' を追加してみてください"
+ 
+ #: dnf/cli/main.py:142
+ msgid " or '{}' to skip uninstallable packages"
+-msgstr " または、'{}' を追加して、インストール不可のパッケージをスキップしてください"
++msgstr ""
++" または、'{}' を追加して、インストール不可のパッケージをスキップしてください"
+ 
+ #: dnf/cli/main.py:147
+ msgid "try to add '{}' to use not only best candidate packages"
+-msgstr "最適候補のパッケージのみを使用しないためには、'{}' を追加してみてください"
++msgstr ""
++"最適候補のパッケージのみを使用しないためには、'{}' を追加してみてください"
+ 
+ #: dnf/cli/main.py:150
+ msgid " or '{}' to use not only best candidate packages"
+-msgstr " または、'{}' を追加して、最適候補のパッケージのみを使用しないでください"
++msgstr ""
++" または、'{}' を追加して、最適候補のパッケージのみを使用しないでください"
+ 
+ #: dnf/cli/main.py:167
+ msgid "Dependencies resolved."
+@@ -2528,7 +2621,9 @@ msgstr "依存関係を解決するために、インストール済みパッケ
+ 
+ #: dnf/cli/option_parser.py:221
+ msgid "try the best available package versions in transactions."
+-msgstr "トランザクションにおいて利用可能な最適なパッケージバージョンを試してください。"
++msgstr ""
++"トランザクションにおいて利用可能な最適なパッケージバージョンを試してくださ"
++"い。"
+ 
+ #: dnf/cli/option_parser.py:223
+ msgid "do not limit the transaction to the best candidate"
+@@ -2564,8 +2659,8 @@ msgid ""
+ "enables {prog}'s obsoletes processing logic for upgrade or display "
+ "capabilities that the package obsoletes for info, list and repoquery"
+ msgstr ""
+-"アップグレードまたは、info, list, repoquery で旧パッケージのケイパビリティを表示するため、 {prog} "
+-"の旧プロセスロジックを有効化"
++"アップグレードまたは、info, list, repoquery で旧パッケージのケイパビリティを"
++"表示するため、 {prog} の旧プロセスロジックを有効化"
+ 
+ #: dnf/cli/option_parser.py:251
+ msgid "debugging output level for rpm"
+@@ -2583,19 +2678,25 @@ msgstr "すべての質問に「いいえ」(no) と自動的に答えます"
+ msgid ""
+ "Enable additional repositories. List option. Supports globs, can be "
+ "specified multiple times."
+-msgstr "追加レポジトリを有効化、オプションのリスト、globsのサポートは何度でも指定可能です。"
++msgstr ""
++"追加レポジトリを有効化、オプションのリスト、globsのサポートは何度でも指定可能"
++"です。"
+ 
+ #: dnf/cli/option_parser.py:266
+ msgid ""
+-"Disable repositories. List option. Supports globs, can be specified multiple"
+-" times."
+-msgstr "追加レポジトリを無効化、オプションのリスト、globsのサポートは何度でも指定可能です。"
++"Disable repositories. List option. Supports globs, can be specified multiple "
++"times."
++msgstr ""
++"追加レポジトリを無効化、オプションのリスト、globsのサポートは何度でも指定可能"
++"です。"
+ 
+ #: dnf/cli/option_parser.py:270
+ msgid ""
+ "enable just specific repositories by an id or a glob, can be specified "
+ "multiple times"
+-msgstr "id または glob により特定のリポジトリーだけを有効にします。複数回指定することが可能です"
++msgstr ""
++"id または glob により特定のリポジトリーだけを有効にします。複数回指定すること"
++"が可能です"
+ 
+ #: dnf/cli/option_parser.py:275
+ msgid "enable repos with config-manager command (automatically saves)"
+@@ -2617,7 +2718,9 @@ msgstr "excludepkgs を無効にします"
+ msgid ""
+ "label and path to an additional repository to use (same path as in a "
+ "baseurl), can be specified multiple times."
+-msgstr "利用する追加レポジトリ(baseurlと同じパス)のラベルとパスは何度でも指定可能です。"
++msgstr ""
++"利用する追加レポジトリ(baseurlと同じパス)のラベルとパスは何度でも指定可能で"
++"す。"
+ 
+ #: dnf/cli/option_parser.py:297
+ msgid "disable removal of dependencies that are no longer used"
+@@ -2697,7 +2800,7 @@ msgstr "主要コマンドの一覧:"
+ 
+ #: dnf/cli/option_parser.py:376
+ msgid "List of Plugin Commands:"
+-msgstr "プラグインコマンドの一覧"
++msgstr "プラグインコマンドの一覧:"
+ 
+ #: dnf/cli/option_parser.py:413
+ #, python-format
+@@ -2928,7 +3031,7 @@ msgstr "Repo        : %s"
+ 
+ #: dnf/cli/output.py:857
+ msgid "Description : "
+-msgstr "説明                : "
++msgstr "説明: "
+ 
+ #: dnf/cli/output.py:861
+ #, python-format
+@@ -3470,10 +3573,6 @@ msgstr "    開始しました   : %s - %s 秒経過"
+ msgid "    State  : %s"
+ msgstr "    状態  : %s"
+ 
+-#: dnf/comps.py:104
+-msgid "skipping."
+-msgstr "スキップします。"
+-
+ #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706
+ #, python-format
+ msgid "Module or Group '%s' is not installed."
+@@ -3490,16 +3589,14 @@ msgid "Module or Group '%s' does not exist."
+ msgstr "モジュールまたはグループ '%s' は存在しません。"
+ 
+ #: dnf/comps.py:599
+-#, fuzzy, python-format
+-#| msgid "Environment '%s' is not installed."
++#, python-format
+ msgid "Environment id '%s' does not exist."
+-msgstr "環境 '%s' はインストールされていません。"
++msgstr "環境 id '%s' は存在しません。"
+ 
+ #: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487
+-#, fuzzy, python-format
+-#| msgid "Environment '%s' is not installed."
++#, python-format
+ msgid "Environment id '%s' is not installed."
+-msgstr "環境 '%s' はインストールされていません。"
++msgstr "環境 id '%s' はインストールされていません。"
+ 
+ #: dnf/comps.py:639
+ #, python-format
+@@ -3512,10 +3609,9 @@ msgid "Environment '%s' is not available."
+ msgstr "環境 '%s' は利用不可です。"
+ 
+ #: dnf/comps.py:673
+-#, fuzzy, python-format
+-#| msgid "Group_id '%s' does not exist."
++#, python-format
+ msgid "Group id '%s' does not exist."
+-msgstr "Group_id '%s' は存在しません。"
++msgstr "グループ id '%s' は存在しません。"
+ 
+ #: dnf/conf/config.py:136
+ #, python-format
+@@ -3523,16 +3619,19 @@ msgid "Error parsing '%s': %s"
+ msgstr "'%s' の解析中にエラーが発生しました: %s"
+ 
+ #: dnf/conf/config.py:151
+-#, fuzzy, python-format
+-#| msgid "Unknown configuration value: %s=%s in %s; %s"
++#, python-format
+ msgid "Invalid configuration value: %s=%s in %s; %s"
+-msgstr "不明な設定値: %s=%s in %s; %s"
++msgstr "正しくない設定値: %s=%s in %s; %s"
++
++#: dnf/conf/config.py:194
++msgid "Cannot set \"{}\" to \"{}\": {}"
++msgstr "\"{}\" を \"{}\": {} に設定できません。"
+ 
+-#: dnf/conf/config.py:226
++#: dnf/conf/config.py:244
+ msgid "Could not set cachedir: {}"
+ msgstr "cachedir を設定できませんでした: {}"
+ 
+-#: dnf/conf/config.py:275
++#: dnf/conf/config.py:293
+ msgid ""
+ "Configuration file URL \"{}\" could not be downloaded:\n"
+ "  {}"
+@@ -3540,31 +3639,31 @@ msgstr ""
+ "設定ファイル URL \"{}\" はダウンロードできませんでした:\n"
+ "  {}"
+ 
+-#: dnf/conf/config.py:355 dnf/conf/config.py:391
++#: dnf/conf/config.py:373 dnf/conf/config.py:409
+ #, python-format
+ msgid "Unknown configuration option: %s = %s"
+ msgstr "不明な設定オプション: %s = %s"
+ 
+-#: dnf/conf/config.py:372
++#: dnf/conf/config.py:390
+ #, python-format
+ msgid "Error parsing --setopt with key '%s', value '%s': %s"
+ msgstr "鍵 '%s'、値 '%s' の --setopt を解析中にエラーが発生しました: %s"
+ 
+-#: dnf/conf/config.py:380
++#: dnf/conf/config.py:398
+ #, python-format
+ msgid "Main config did not have a %s attr. before setopt"
+ msgstr "主要設定には setopt の前に %s attr. がありませんでした"
+ 
+-#: dnf/conf/config.py:427 dnf/conf/config.py:445
++#: dnf/conf/config.py:445 dnf/conf/config.py:463
+ msgid "Incorrect or unknown \"{}\": {}"
+ msgstr "誤りかまたは不明な \"{}\": {}"
+ 
+-#: dnf/conf/config.py:501
++#: dnf/conf/config.py:519
+ #, python-format
+ msgid "Error parsing --setopt with key '%s.%s', value '%s': %s"
+ msgstr "鍵 '%s.%s'、値 '%s' の --setopt を解析中にエラーが発生しました: %s"
+ 
+-#: dnf/conf/config.py:504
++#: dnf/conf/config.py:522
+ #, python-format
+ msgid "Repo %s did not have a %s attr. before setopt"
+ msgstr "repo %s には setopt の前に %s attr. がありませんでした"
+@@ -3572,7 +3671,7 @@ msgstr "repo %s には setopt の前に %s attr. がありませんでした"
+ #: dnf/conf/read.py:60
+ #, python-format
+ msgid "Warning: failed loading '%s', skipping."
+-msgstr "警告:  '%s' のロードに失敗、スキップします。"
++msgstr "警告: '%s' のロードに失敗、スキップします。"
+ 
+ #: dnf/conf/read.py:72
+ msgid "Bad id for repo: {} ({}), byte = {} {}"
+@@ -3610,31 +3709,33 @@ msgstr "repo %s: 0x%s はインポート済みです"
+ #: dnf/crypto.py:115
+ #, python-format
+ msgid "repo %s: imported key 0x%s."
+-msgstr "repo %s: インポート済みの鍵 0x%s。"
++msgstr "repo %s: インポート済みのキー 0x%s。"
+ 
+ #: dnf/crypto.py:145
+ msgid "Verified using DNS record with DNSSEC signature."
+-msgstr ""
++msgstr "DNSSEC 署名付きの DNS レコードを使用して検証しました。"
+ 
+ #: dnf/crypto.py:147
+ msgid "NOT verified using DNS record."
+-msgstr ""
++msgstr "DNS レコードを使用して検証されませんでした。"
+ 
+ #: dnf/crypto.py:184
+ #, python-format
+ msgid "retrieving repo key for %s unencrypted from %s"
+-msgstr ""
++msgstr "%s から暗号化されていない %s の repo キーを取得しています"
+ 
+ #: dnf/db/group.py:302
+ msgid ""
+ "No available modular metadata for modular package '{}', it cannot be "
+ "installed on the system"
+-msgstr "モジュラーパッケージ '{}' のモジュラーメタデータは利用不可です、システムにインストールはできません"
++msgstr ""
++"モジュラーパッケージ '{}' のモジュラーメタデータは利用不可です、システムにイ"
++"ンストールはできません"
+ 
+ #: dnf/db/group.py:353
+ #, python-format
+ msgid "An rpm exception occurred: %s"
+-msgstr ""
++msgstr "rpm 例外が発生しました: %s"
+ 
+ #: dnf/db/group.py:355
+ msgid "No available modular metadata for modular package"
+@@ -3645,35 +3746,33 @@ msgstr "モジュラーパッケージ のモジュラーメタデータは利
+ msgid "Will not install a source rpm package (%s)."
+ msgstr "ソース rpm パッケージ (%s) をインストールしません。"
+ 
+-#: dnf/dnssec.py:168
+-#, fuzzy
+-#| msgid ""
+-#| "Configuration option 'gpgkey_dns_verification' requires libunbound ({})"
++#: dnf/dnssec.py:171
+ msgid ""
+ "Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
+-msgstr "設定オプション 'gpgkey_dns_verification' は libunbound ({}) が必要です"
++msgstr ""
++"設定オプション 'gpgkey_dns_verification' は python3-unbound ({}) が必要です"
+ 
+-#: dnf/dnssec.py:239
++#: dnf/dnssec.py:243
+ msgid "DNSSEC extension: Key for user "
+ msgstr "DNSSEC 拡張: ユーザー用の鍵 "
+ 
+-#: dnf/dnssec.py:241
++#: dnf/dnssec.py:245
+ msgid "is valid."
+ msgstr "は有効です。"
+ 
+-#: dnf/dnssec.py:243
++#: dnf/dnssec.py:247
+ msgid "has unknown status."
+ msgstr "の状態は不明です。"
+ 
+-#: dnf/dnssec.py:251
++#: dnf/dnssec.py:255
+ msgid "DNSSEC extension: "
+ msgstr "DNSSEC 拡張: "
+ 
+-#: dnf/dnssec.py:283
++#: dnf/dnssec.py:287
+ msgid "Testing already imported keys for their validity."
+ msgstr "すでにインポートされた鍵の有効性をテストします。"
+ 
+-#: dnf/drpm.py:62 dnf/repo.py:268
++#: dnf/drpm.py:62 dnf/repo.py:267
+ #, python-format
+ msgid "unsupported checksum type: %s"
+ msgstr "サポートされていないチェックサム形式: %s"
+@@ -3715,7 +3814,7 @@ msgid "Modular dependency problem with Defaults:"
+ msgid_plural "Modular dependency problems with Defaults:"
+ msgstr[0] "デフォルトのモジュラー依存問題:"
+ 
+-#: dnf/exceptions.py:131 dnf/module/module_base.py:854
++#: dnf/exceptions.py:131 dnf/module/module_base.py:857
+ msgid "Modular dependency problem:"
+ msgid_plural "Modular dependency problems:"
+ msgstr[0] "モジュラーの依存に関する問題:"
+@@ -3724,10 +3823,12 @@ msgstr[0] "モジュラーの依存に関する問題:"
+ #, python-format
+ msgid ""
+ "Malformed lock file found: %s.\n"
+-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf."
++"Ensure no other dnf/yum process is running and remove the lock file manually "
++"or run systemd-tmpfiles --remove dnf.conf."
+ msgstr ""
+ "不正な形式のロックファイル: %s 。\n"
+-"他のdnf/yum プロセスが実行されていないことを確認し、ロックファイルを手動削除するかsystemd-tmpfiles --remove dnf.conf を実行してください。"
++"他のdnf/yum プロセスが実行されていないことを確認し、ロックファイルを手動削除"
++"するかsystemd-tmpfiles --remove dnf.conf を実行してください。"
+ 
+ #: dnf/module/__init__.py:26
+ msgid "Enabling different stream for '{}'."
+@@ -3739,7 +3840,8 @@ msgstr "表示するものがありません。"
+ 
+ #: dnf/module/__init__.py:28
+ msgid "Installing newer version of '{}' than specified. Reason: {}"
+-msgstr "指定されたものよりも新しいバージョンの '{}' をインストールします。理由: {}"
++msgstr ""
++"指定されたものよりも新しいバージョンの '{}' をインストールします。理由: {}"
+ 
+ #: dnf/module/__init__.py:29
+ msgid "Enabled modules: {}."
+@@ -3747,57 +3849,49 @@ msgstr "有効なモジュール: {}."
+ 
+ #: dnf/module/__init__.py:30
+ msgid "No profile specified for '{}', please specify profile."
+-msgstr "'{}' に指定したプロファイルはありません。プロファイルを指定してください。"
++msgstr ""
++"'{}' に指定したプロファイルはありません。プロファイルを指定してください。"
+ 
+ #: dnf/module/exceptions.py:27
+-#, fuzzy
+-#| msgid "No profiles for module {}:{}"
+ msgid "No such module: {}"
+-msgstr "モジュール {}:{} にプロファイルがありません"
++msgstr "次のようなモジュールはありません: {}"
+ 
+ #: dnf/module/exceptions.py:33
+ msgid "No such stream: {}"
+-msgstr ""
++msgstr "次のようなストリームはありません: {}"
+ 
+ #: dnf/module/exceptions.py:39
+-#, fuzzy
+-#| msgid "No profiles for module {}:{}"
+ msgid "No enabled stream for module: {}"
+-msgstr "モジュール {}:{} にプロファイルがありません"
++msgstr "次のモジュールに有効化されたストリームはありません: {}"
+ 
+ #: dnf/module/exceptions.py:46
+ msgid "Cannot enable more streams from module '{}' at the same time"
+-msgstr ""
++msgstr "モジュール '{}' から、さらにストリームを同時に有効にできません"
+ 
+ #: dnf/module/exceptions.py:52
+ msgid "Different stream enabled for module: {}"
+-msgstr ""
++msgstr "次のモジュールに有効化された異なるストリーム: {}"
+ 
+ #: dnf/module/exceptions.py:58
+ msgid "No such profile: {}"
+-msgstr ""
++msgstr "次ようなプロファイルはありません: {}"
+ 
+ #: dnf/module/exceptions.py:64
+ msgid "Specified profile not installed for {}"
+-msgstr ""
++msgstr "指定のプロファイルは次にインストールされていません: {}"
+ 
+ #: dnf/module/exceptions.py:70
+-#, fuzzy
+-#| msgid "No profile specified for '{}', please specify profile."
+ msgid "No stream specified for '{}', please specify stream"
+-msgstr "'{}' に指定したプロファイルはありません。プロファイルを指定してください。"
++msgstr "'{}' に指定したストリームはありません。ストリームを指定してください"
+ 
+ #: dnf/module/exceptions.py:82
+-#, fuzzy
+-#| msgid "No repositories available"
+ msgid "No such profile: {}. No profiles available"
+-msgstr "利用できるリポジトリーがありません"
++msgstr ""
++"次のようなプロファイルはありません: {}。利用できるプロファイルはありません"
+ 
+ #: dnf/module/exceptions.py:88
+-#, fuzzy
+-#| msgid "No profiles for module {}:{}"
+ msgid "No profile to remove for '{}'"
+-msgstr "モジュール {}:{} にプロファイルがありません"
++msgstr "'{}' の削除するプロファイルがありません"
+ 
+ #: dnf/module/module_base.py:35
+ msgid ""
+@@ -3820,24 +3914,28 @@ msgstr ""
+ "ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive"
+ 
+ #: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+-#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
++#: dnf/module/module_base.py:615 dnf/module/module_base.py:684
+ msgid "Ignoring unnecessary profile: '{}/{}'"
+ msgstr "不要なプロファイルを無視します: '{}/{}'"
+ 
+ #: dnf/module/module_base.py:86
+ #, python-brace-format
+ msgid "All matches for argument '{0}' in module '{1}:{2}' are not active"
+-msgstr "モジュール '{1}:{2}' の引数 '{0}' に一致するものはすべて非アクティブです"
++msgstr ""
++"モジュール '{1}:{2}' の引数 '{0}' に一致するものはすべて非アクティブです"
+ 
+ #: dnf/module/module_base.py:94 dnf/module/module_base.py:204
+ #, python-brace-format
+ msgid "Installing module '{0}' from Fail-Safe repository {1} is not allowed"
+-msgstr "フェイルセーフレポジトリー {1} からのモジュール '{0}' インストールは許可されていません"
++msgstr ""
++"フェイルセーフレポジトリー {1} からのモジュール '{0}' インストールは許可され"
++"ていません"
+ 
+ #: dnf/module/module_base.py:104 dnf/module/module_base.py:214
+ msgid ""
+ "Unable to match profile for argument {}. Available profiles for '{}:{}': {}"
+-msgstr "引数 {} でプロファイルが見つかりません。利用可能プロファイル '{}:{}': {}"
++msgstr ""
++"引数 {} でプロファイルが見つかりません。利用可能プロファイル '{}:{}': {}"
+ 
+ #: dnf/module/module_base.py:108 dnf/module/module_base.py:218
+ msgid "Unable to match profile for argument {}"
+@@ -3845,7 +3943,9 @@ msgstr "引数 {} でプロファイルが見つかりません"
+ 
+ #: dnf/module/module_base.py:120
+ msgid "No default profiles for module {}:{}. Available profiles: {}"
+-msgstr "モジュール {}:{} にデフォルトのプロファイルがありません。利用可能プロファイル: {}"
++msgstr ""
++"モジュール {}:{} にデフォルトのプロファイルがありません。利用可能プロファイ"
++"ル: {}"
+ 
+ #: dnf/module/module_base.py:124
+ msgid "No profiles for module {}:{}"
+@@ -3857,36 +3957,38 @@ msgstr "デフォルトのプロファイル {} はモジュール {}:{} で利
+ 
+ #: dnf/module/module_base.py:144 dnf/module/module_base.py:247
+ msgid "Installing module from Fail-Safe repository is not allowed"
+-msgstr "フェイルセーフレポジトリーからのモジュールインストールは許可されていません"
++msgstr ""
++"フェイルセーフレポジトリーからのモジュールインストールは許可されていません"
+ 
+ #: dnf/module/module_base.py:196
+-#, fuzzy, python-brace-format
+-#| msgid ""
+-#| "All matches for argument '{0}' in module '{1}:{2}' are not active"
++#, python-brace-format
+ msgid "No active matches for argument '{0}' in module '{1}:{2}'"
+-msgstr "モジュール '{1}:{2}' の引数 '{0}' に一致するものはすべて非アクティブです"
++msgstr "モジュール '{1}:{2}' の引数 '{0}' には、アクティブな一致がありません"
+ 
+ #: dnf/module/module_base.py:228
+-#, fuzzy, python-brace-format
+-#| msgid "Default profile {} not available in module {}:{}"
++#, python-brace-format
+ msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'"
+-msgstr "デフォルトのプロファイル {} はモジュール {}:{} で利用不可です"
++msgstr ""
++"インストールされたプロファイル '{0}' は、モジュール '{1}' ストリーム '{2}' で"
++"は利用できません"
+ 
+ #: dnf/module/module_base.py:267
+ msgid "No packages available to distrosync for package name '{}'"
+-msgstr ""
++msgstr "パッケージ名 '{}' 向けに distrosync するパッケージはありません"
+ 
+ #: dnf/module/module_base.py:310 dnf/module/module_base.py:461
+ #: dnf/module/module_base.py:486 dnf/module/module_base.py:505
+ #: dnf/module/module_base.py:552 dnf/module/module_base.py:611
+-#: dnf/module/module_base.py:677 dnf/module/module_base.py:840
++#: dnf/module/module_base.py:680 dnf/module/module_base.py:843
+ msgid "Unable to resolve argument {}"
+ msgstr "引数 {} を解決できません"
+ 
+ #: dnf/module/module_base.py:321
+ #, python-brace-format
+ msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed"
+-msgstr "フェイルセーフレポジトリー {1} からのモジュール '{0}' アップグレードは許可されていません"
++msgstr ""
++"フェイルセーフレポジトリー {1} からのモジュール '{0}' アップグレードは許可さ"
++"れていません"
+ 
+ #: dnf/module/module_base.py:340 dnf/module/module_base.py:368
+ msgid "Unable to match profile in argument {}"
+@@ -3894,22 +3996,25 @@ msgstr "引数 {} でプロファイルを一致できません"
+ 
+ #: dnf/module/module_base.py:348
+ msgid "Upgrading module from Fail-Safe repository is not allowed"
+-msgstr "フェイルセーフレポジトリーからのモジュールアップグレードは許可されていません"
++msgstr ""
++"フェイルセーフレポジトリーからのモジュールアップグレードは許可されていません"
+ 
+ #: dnf/module/module_base.py:422
+ #, python-brace-format
+ msgid ""
+-"Argument '{argument}' matches {stream_count} streams ('{streams}') of module"
+-" '{module}', but none of the streams are enabled or default"
++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module "
++"'{module}', but none of the streams are enabled or default"
+ msgstr ""
++"引数 '{argument}' は、モジュール '{module}' の {stream_count} ストリーム "
++"('{streams}' と一致しますが、有効化されている、あるいはデフォルトのストリーム"
++"はありません"
+ 
+ #: dnf/module/module_base.py:509
+ msgid ""
+-"Only module name is required. Ignoring unneeded information in argument: "
+-"'{}'"
++"Only module name is required. Ignoring unneeded information in argument: '{}'"
+ msgstr "モジュール名のみが必要です。引数で不必要な情報を無視します: '{}'"
+ 
+-#: dnf/module/module_base.py:841
++#: dnf/module/module_base.py:844
+ msgid "No match for package {}"
+ msgstr "パッケージ {} に一致するものはありません"
+ 
+@@ -3922,12 +4027,12 @@ msgstr "%s は空のファイルです"
+ #: dnf/persistor.py:90
+ #, python-format
+ msgid "Failed to load expired repos cache: %s"
+-msgstr ""
++msgstr "期限切れのリポジトリーキャッシュのロードに失敗しました: %s"
+ 
+ #: dnf/persistor.py:98
+ #, python-format
+ msgid "Failed to store expired repos cache: %s"
+-msgstr ""
++msgstr "期限切れのリポジトリーキャッシュの保存に失敗しました: %s"
+ 
+ #: dnf/persistor.py:105
+ msgid "Failed storing last makecache time."
+@@ -3970,7 +4075,7 @@ msgid "Already downloaded"
+ msgstr "ダウンロード済み"
+ 
+ #. pinging mirrors, this might take a while
+-#: dnf/repo.py:347
++#: dnf/repo.py:346
+ #, python-format
+ msgid "determining the fastest mirror (%s hosts).. "
+ msgstr "最速のミラーを確定しています (%s hosts).. "
+@@ -3988,13 +4093,21 @@ msgstr "%s から %s repo を追加しました"
+ #: dnf/rpm/miscutils.py:32
+ #, python-format
+ msgid "Using rpmkeys executable at %s to verify signatures"
+-msgstr ""
++msgstr "%s で rpmkeys 実行可能ファイルを使用して、署名を検証します"
+ 
+ #: dnf/rpm/miscutils.py:66
+ msgid "Cannot find rpmkeys executable to verify signatures."
+-msgstr ""
++msgstr "署名を検証する rpmkeys 実行ファイルが見つかりません。"
+ 
+-#: dnf/rpm/transaction.py:119
++#: dnf/rpm/transaction.py:70
++msgid "The openDB() function connot open rpm database."
++msgstr "openDB() 関数は rpm データベースを開けません。"
++
++#: dnf/rpm/transaction.py:75
++msgid "The dbCookie() function did not return cookie of rpm database."
++msgstr "dbCookie() 関数は rpm データベースのクッキーを返しませんでした。"
++
++#: dnf/rpm/transaction.py:135
+ msgid "Errors occurred during test transaction."
+ msgstr "テストトランザクション中にエラーが発生しました。"
+ 
+@@ -4003,6 +4116,8 @@ msgid ""
+ "allow_vendor_change is disabled. This option is currently not supported for "
+ "downgrade and distro-sync commands"
+ msgstr ""
++"allow_vendor_change は無効になっています。このオプションは、downgrade コマン"
++"ドおよび distro-sync コマンドではサポートされていません"
+ 
+ #. TRANSLATORS: This is for a single package currently being downgraded.
+ #: dnf/transaction.py:80
+@@ -4056,22 +4171,22 @@ msgid ""
+ "The following problems occurred while replaying the transaction from file "
+ "\"{filename}\":"
+ msgstr ""
++"ファイル \"{filename}\" からのトランザクションの再生中に以下の問題が発生しま"
++"した:"
+ 
+ #: dnf/transaction_sr.py:68
+-#, fuzzy
+-#| msgid "Errors occurred during transaction."
+ msgid "The following problems occurred while running a transaction:"
+-msgstr "トランザクション中にエラーが発生しました。"
++msgstr "トランザクションの実行中に以下の問題が発生しました:"
+ 
+ #: dnf/transaction_sr.py:89
+ #, python-brace-format
+ msgid "Invalid major version \"{major}\", number expected."
+-msgstr ""
++msgstr "無効なメジャーバージョン \"{major}\"。数字が必要です。"
+ 
+ #: dnf/transaction_sr.py:97
+ #, python-brace-format
+ msgid "Invalid minor version \"{minor}\", number expected."
+-msgstr ""
++msgstr "無効なマイナーバージョン \"{minor}\"。数字が必要です。"
+ 
+ #: dnf/transaction_sr.py:103
+ #, python-brace-format
+@@ -4079,47 +4194,51 @@ msgid ""
+ "Incompatible major version \"{major}\", supported major version is "
+ "\"{major_supp}\"."
+ msgstr ""
++"互換性のないメジャーバージョン \"{major}\"。サポートされているメジャーバー"
++"ジョンは \"{major_supp}\" です。"
+ 
+ #: dnf/transaction_sr.py:224
+ msgid ""
+ "Conflicting TransactionReplay arguments have been specified: filename, data"
+-msgstr ""
++msgstr "競合する TransactionReplay 引数が指定されています。filename, data"
+ 
+ #: dnf/transaction_sr.py:265
+ #, python-brace-format
+ msgid "Unexpected type of \"{id}\", {exp} expected."
+-msgstr ""
++msgstr "予期しない {id}\" のタイプ。{exp} が必要です。"
+ 
+ #: dnf/transaction_sr.py:271
+ #, python-brace-format
+ msgid "Missing key \"{key}\"."
+-msgstr ""
++msgstr "\"{key}\" キーがありません。"
+ 
+ #: dnf/transaction_sr.py:285
+ #, python-brace-format
+ msgid "Missing object key \"{key}\" in an rpm."
+-msgstr ""
++msgstr "オブジェクトキー \"{key}\" が rpm にありません。"
+ 
+ #: dnf/transaction_sr.py:289
+ #, python-brace-format
+-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
+-msgstr ""
++msgid ""
++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
++msgstr "rpm nevra \"{nevra}\" の予期しないパッケージ理由 \"{reason}\" の値。"
+ 
+ #: dnf/transaction_sr.py:297
+ #, python-brace-format
+ msgid "Cannot parse NEVRA for package \"{nevra}\"."
+-msgstr ""
++msgstr "パッケージ \"{nevra}\" の NEVRA を解析できません。"
+ 
+ #: dnf/transaction_sr.py:321
+ #, python-brace-format
+ msgid "Cannot find rpm nevra \"{nevra}\"."
+-msgstr ""
++msgstr "rpm nevra \"{nevra}\" を見つけることはできません。"
+ 
+ #: dnf/transaction_sr.py:336
+-#, fuzzy, python-brace-format
+-#| msgid "Package %s is already installed."
++#, python-brace-format
+ msgid "Package \"{na}\" is already installed for action \"{action}\"."
+-msgstr "パッケージ %s は既にインストールされています。"
++msgstr ""
++"パッケージ \"{na}\" は、アクション \"{action}\" 用に既にインストールされてい"
++"ます。"
+ 
+ #: dnf/transaction_sr.py:345
+ #, python-brace-format
+@@ -4127,39 +4246,42 @@ msgid ""
+ "Package nevra \"{nevra}\" not available in repositories for action "
+ "\"{action}\"."
+ msgstr ""
++"アクション \"{action}\" に利用できる パッケージ nevra \"{nevra}\" はレポジト"
++"リーにありません。"
+ 
+ #: dnf/transaction_sr.py:356
+ #, python-brace-format
+ msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"."
+ msgstr ""
++"アクション \"{action}\" には、パッケージ nevra \"{nevra}\" インストールされて"
++"いません。"
+ 
+ #: dnf/transaction_sr.py:370
+ #, python-brace-format
+-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
++msgid ""
++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
+ msgstr ""
++"rpm nevra \"{nevra}\" の、パッケージアクション \"{action}\" の予期しない値。"
+ 
+ #: dnf/transaction_sr.py:377
+-#, fuzzy, python-format
+-#| msgid "Module or Group '%s' is not available."
++#, python-format
+ msgid "Group id '%s' is not available."
+-msgstr "モジュールまたはグループ '%s' は利用不可です。"
++msgstr "グループ id '%s' は利用できません。"
+ 
+ #: dnf/transaction_sr.py:398
+ #, python-brace-format
+ msgid "Missing object key \"{key}\" in groups.packages."
+-msgstr ""
++msgstr "オブジェクトキー \"{key}\" が groups.packages に含まれません。"
+ 
+ #: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421
+-#, fuzzy, python-format
+-#| msgid "Module or Group '%s' is not installed."
++#, python-format
+ msgid "Group id '%s' is not installed."
+-msgstr "モジュールまたはグループ '%s' がインストールされていません。"
++msgstr "グループ id '%s' がインストールされていません。"
+ 
+ #: dnf/transaction_sr.py:432
+-#, fuzzy, python-format
+-#| msgid "Environment '%s' is not available."
++#, python-format
+ msgid "Environment id '%s' is not available."
+-msgstr "環境 '%s' は利用不可です。"
++msgstr "環境 id '%s' は利用できません。"
+ 
+ #: dnf/transaction_sr.py:456
+ #, python-brace-format
+@@ -4167,38 +4289,45 @@ msgid ""
+ "Invalid value \"{group_type}\" of environments.groups.group_type, only "
+ "\"mandatory\" or \"optional\" is supported."
+ msgstr ""
++"environments.groups.group_type の無効な値 \"{group_type}\"。\"mandatory\" ま"
++"たは \"optional\" のみに対応しています。"
+ 
+ #: dnf/transaction_sr.py:464
+ #, python-brace-format
+ msgid "Missing object key \"{key}\" in environments.groups."
+-msgstr ""
++msgstr "オブジェクトキー \"{key}\" が environments.groups に含まれません。"
+ 
+ #: dnf/transaction_sr.py:542
+ #, python-brace-format
+ msgid "Unexpected value of group action \"{action}\" for group \"{group}\"."
+ msgstr ""
++"グループ \"{group}\" の グループアクション \"{action}\" の予期しない値。"
+ 
+ #: dnf/transaction_sr.py:547
+ #, python-brace-format
+ msgid "Missing object key \"{key}\" in a group."
+-msgstr ""
++msgstr "オブジェクトキー \"{key}\" がグループ内にありません。"
+ 
+ #: dnf/transaction_sr.py:571
+ #, python-brace-format
+-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"."
+-msgstr ""
++msgid ""
++"Unexpected value of environment action \"{action}\" for environment "
++"\"{env}\"."
++msgstr "環境 \"{env}\" の環境アクション \"{action}\" の予期しない値。"
+ 
+ #: dnf/transaction_sr.py:576
+ #, python-brace-format
+ msgid "Missing object key \"{key}\" in an environment."
+-msgstr ""
++msgstr "オブジェクトキー \"{key}\" が環境にありません。"
+ 
+ #: dnf/transaction_sr.py:615
+ #, python-brace-format
+ msgid ""
+-"Package nevra \"{nevra}\", which is not present in the transaction file, was"
+-" pulled into the transaction."
++"Package nevra \"{nevra}\", which is not present in the transaction file, was "
++"pulled into the transaction."
+ msgstr ""
++"トランザクションファイルに存在しないパッケージ nevra \"{nevra}\" がトランザク"
++"ションにプルされていました。"
+ 
+ # translation auto-copied from project jbpm-designer, version 6.0.1, document
+ # org.jbpm/jbpm-designer-
+@@ -4241,6 +4370,16 @@ msgstr "失敗しました"
+ msgid "<name-unset>"
+ msgstr "<name-unset>"
+ 
++#~ msgid "skipping."
++#~ msgstr "スキップします。"
++
++#~ msgid ""
++#~ "Using rpmkeys executable from {path} to verify signature for package: "
++#~ "{package}."
++#~ msgstr ""
++#~ "{path} から実行可能ファイル rpmkeys を使用して、パッケージの署名を検証しま"
++#~ "す: {package}。"
++
+ #~ msgid "%s: %s check failed: %s vs %s"
+ #~ msgstr "%s: %s の確認に失敗しました: %s vs %s"
+ 
+@@ -4266,5 +4405,7 @@ msgstr "<name-unset>"
+ #~ msgstr "不正なトランザクション ID、またはパッケージが指定されました"
+ 
+ #~ msgid ""
+-#~ "Display capabilities that the package depends on for running a %%pre script."
+-#~ msgstr "%%pre スクリプトを実行するためにパッケージが依存する機能を表示します。"
++#~ "Display capabilities that the package depends on for running a %%pre "
++#~ "script."
++#~ msgstr ""
++#~ "%%pre スクリプトを実行するためにパッケージが依存する機能を表示します。"
+diff --git a/po/ko.po b/po/ko.po
+index 6effd129..330b2b6d 100644
+--- a/po/ko.po
++++ b/po/ko.po
+@@ -2,20 +2,22 @@
+ # Eun-Ju Kim <eukim@redhat.com>, 2016. #zanata
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2020.
+ # 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-06-13 09:18-0400\n"
+-"PO-Revision-Date: 2021-06-07 17:15+0000\n"
+-"Last-Translator: simmon <simmon@nplob.com>\n"
+-"Language-Team: Korean <https://translate.fedoraproject.org/projects/dnf/dnf-master/ko/>\n"
++"POT-Creation-Date: 2022-02-28 11:37+0100\n"
++"PO-Revision-Date: 2022-03-02 04:16+0000\n"
++"Last-Translator: Kim InSoo <simmon@nplob.com>\n"
++"Language-Team: Korean <https://translate.fedoraproject.org/projects/dnf/"
++"dnf-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.2\n"
++"X-Generator: Weblate 4.11\n"
+ 
+ #: dnf/automatic/emitter.py:32
+ #, python-format
+@@ -109,7 +111,8 @@ msgstr "저장소 '{}'의 적재하기가 실패했습니다"
+ 
+ #: dnf/base.py:327
+ msgid "Metadata timer caching disabled when running on metered connection."
+-msgstr "데이터 통신 연결을 사용 할 때에 메타 자료 타이머 캐싱을 비활성화합니다."
++msgstr ""
++"데이터 통신 연결을 사용 할 때에 메타 자료 타이머 캐싱을 비활성화합니다."
+ 
+ #: dnf/base.py:332
+ msgid "Metadata timer caching disabled when running on a battery."
+@@ -166,7 +169,7 @@ msgstr "저장소를 무시합니다: %s"
+ #: dnf/base.py:419
+ #, python-format
+ msgid "Last metadata expiration check: %s ago on %s."
+-msgstr "마지막 메타자료 만료 확인: %s 이전에 %s."
++msgstr "마지막 메타자료 만료확인 %s 이전인: %s."
+ 
+ #: dnf/base.py:512
+ msgid ""
+@@ -189,154 +192,155 @@ msgstr "설정 파일에서 tsflag 사용이 잘못되었습니다: %s"
+ msgid "Failed to add groups file for repository: %s - %s"
+ msgstr "리포지토리의 그룹 파일을 추가하지 못했습니다. %s - %s"
+ 
+-#: dnf/base.py:904
++#: dnf/base.py:922
+ msgid "Running transaction check"
+ msgstr "연결 확인 실행 중"
+ 
+-#: dnf/base.py:912
++#: dnf/base.py:930
+ msgid "Error: transaction check vs depsolve:"
+-msgstr "오류 : 연결 확인 및 종속성 해결 오류:"
++msgstr "오류: 연결 확인 및 종속성 해결 오류:"
+ 
+-#: dnf/base.py:918
++#: dnf/base.py:936
+ msgid "Transaction check succeeded."
+ msgstr "연결 확인에 성공했습니다."
+ 
+-#: dnf/base.py:921
++#: dnf/base.py:939
+ msgid "Running transaction test"
+ msgstr "연결 시험 실행 중"
+ 
+-#: dnf/base.py:931 dnf/base.py:1082
++#: dnf/base.py:949 dnf/base.py:1100
+ msgid "RPM: {}"
+ msgstr "RPM: {}"
+ 
+-#: dnf/base.py:932
++#: dnf/base.py:950
+ msgid "Transaction test error:"
+ msgstr "연결 시험 오류:"
+ 
+-#: dnf/base.py:943
++#: dnf/base.py:961
+ msgid "Transaction test succeeded."
+ msgstr "연결 시험에 성공했습니다."
+ 
+-#: dnf/base.py:964
++#: dnf/base.py:982
+ msgid "Running transaction"
+ msgstr "연결 실행 중"
+ 
+-#: dnf/base.py:1001
++#: dnf/base.py:1019
+ msgid "Disk Requirements:"
+ msgstr "디스크 요구 사항 :"
+ 
+-#: dnf/base.py:1004
++#: dnf/base.py:1022
+ #, python-brace-format
+ msgid "At least {0}MB more space needed on the {1} filesystem."
+ msgid_plural "At least {0}MB more space needed on the {1} filesystem."
+ msgstr[0] "{1} 파일 시스템에 최소 {0}MB의 공간이 더 필요합니다."
+ 
+-#: dnf/base.py:1011
++#: dnf/base.py:1029
+ msgid "Error Summary"
+ msgstr "오류 요약"
+ 
+-#: dnf/base.py:1037
++#: dnf/base.py:1055
+ #, python-brace-format
+ msgid "RPMDB altered outside of {prog}."
+ msgstr "RPMDB는 {prog} 외부에서 변경되었습니다."
+ 
+-#: dnf/base.py:1083 dnf/base.py:1091
++#: dnf/base.py:1101 dnf/base.py:1109
+ msgid "Could not run transaction."
+ msgstr "연결를 실행 할 수 없습니다."
+ 
+-#: dnf/base.py:1086
++#: dnf/base.py:1104
+ msgid "Transaction couldn't start:"
+ msgstr "연결을 시작 할 수 없습니다 :"
+ 
+-#: dnf/base.py:1100
++#: dnf/base.py:1118
+ #, python-format
+ msgid "Failed to remove transaction file %s"
+ msgstr "%s 연결 파일을 삭제하지 못했습니다"
+ 
+-#: dnf/base.py:1182
++#: dnf/base.py:1200
+ msgid "Some packages were not downloaded. Retrying."
+-msgstr "일부 꾸러미가 내려받기되지 않았습니다. 다시 시도 중입니다."
++msgstr "일부 꾸러미를 내려받지 못했습니다. 다시 시도합니다."
+ 
+-#: dnf/base.py:1212
++#: dnf/base.py:1230
+ #, python-format
+ msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%.1f%% saved)"
+-msgstr "델타 RPM이 %.1f MB의 최신화를 %.1f MB로 줄였습니다. (%.1%% 절약됨)"
++msgstr "델타 RPM은 %.1f MB의 최신화를 %.1f MB으로 줄였습니다.(%.1f%% 절약됨)"
+ 
+-#: dnf/base.py:1216
++#: dnf/base.py:1234
+ #, python-format
+ msgid ""
+ "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%.1f%% wasted)"
+-msgstr "Delta RPM은 %.1f MB의 최신화를 %.1f MB로 줄이는데 실패했습니다. (%.1f%% 손실됨)"
++msgstr "Delta RPM은 %.1f MB의 최신화를 %.1f MB로 늘리는데 실패했습니다.(%.1f%% "
++"낭비됨)"
+ 
+-#: dnf/base.py:1258
++#: dnf/base.py:1276
+ msgid "Cannot add local packages, because transaction job already exists"
+ msgstr "연결 작업이 이미 존재하므로 로컬 꾸러미를 추가할 수 없습니다"
+ 
+-#: dnf/base.py:1272
++#: dnf/base.py:1290
+ msgid "Could not open: {}"
+ msgstr "열 수 없음 : {}"
+ 
+-#: dnf/base.py:1310
++#: dnf/base.py:1328
+ #, python-format
+ msgid "Public key for %s is not installed"
+ msgstr "%s의 공개 키는 설치되어 있지 않습니다"
+ 
+-#: dnf/base.py:1314
++#: dnf/base.py:1332
+ #, python-format
+ msgid "Problem opening package %s"
+ msgstr "%s 꾸러미를 여는 중에 문제가 발생했습니다"
+ 
+-#: dnf/base.py:1322
++#: dnf/base.py:1340
+ #, python-format
+ msgid "Public key for %s is not trusted"
+ msgstr "%s의 공개 키는 신뢰 할 수 없습니다"
+ 
+-#: dnf/base.py:1326
++#: dnf/base.py:1344
+ #, python-format
+ msgid "Package %s is not signed"
+ msgstr "%s 꾸러미가 서명되지 않았습니다"
+ 
+-#: dnf/base.py:1356
++#: dnf/base.py:1374
+ #, python-format
+ msgid "Cannot remove %s"
+ msgstr "%s를 삭제 할 수 없습니다"
+ 
+-#: dnf/base.py:1360
++#: dnf/base.py:1378
+ #, python-format
+ msgid "%s removed"
+ msgstr "%s가 삭제되었습니다"
+ 
+-#: dnf/base.py:1640
++#: dnf/base.py:1658
+ msgid "No match for group package \"{}\""
+ msgstr "그룹 꾸러미 \"{}\"에 일치하는 항목이 없습니다"
+ 
+-#: dnf/base.py:1726
++#: dnf/base.py:1740
+ #, python-format
+ msgid "Adding packages from group '%s': %s"
+ msgstr "'%s' 그룹에서 꾸러미 추가: %s"
+ 
+-#: dnf/base.py:1749 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
++#: dnf/base.py:1763 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
+ #: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587
+ #: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80
+ #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110
+ msgid "Nothing to do."
+ msgstr "처리가 필요하지 않습니다."
+ 
+-#: dnf/base.py:1767
++#: dnf/base.py:1781
+ msgid "No groups marked for removal."
+ msgstr "제거할 꾸러미 그룹이 없습니다."
+ 
+-#: dnf/base.py:1801
++#: dnf/base.py:1815
+ msgid "No group marked for upgrade."
+ msgstr "향상을 위해 표시된 그룹이 없습니다."
+ 
+-#: dnf/base.py:2015
++#: dnf/base.py:2029
+ #, python-format
+ msgid "Package %s not installed, cannot downgrade it."
+ msgstr "%s 꾸러미가 설치되어 있지 않기 때문에 하향설치 할 수 없습니다."
+ 
+-#: dnf/base.py:2017 dnf/base.py:2036 dnf/base.py:2049 dnf/base.py:2076
+-#: dnf/base.py:2129 dnf/base.py:2137 dnf/base.py:2271 dnf/cli/cli.py:417
++#: dnf/base.py:2031 dnf/base.py:2050 dnf/base.py:2063 dnf/base.py:2090
++#: dnf/base.py:2143 dnf/base.py:2151 dnf/base.py:2285 dnf/cli/cli.py:417
+ #: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477
+ #: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628
+ #: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147
+@@ -346,188 +350,193 @@ msgstr "%s 꾸러미가 설치되어 있지 않기 때문에 하향설치 할 
+ msgid "No match for argument: %s"
+ msgstr "인수가 일치하지 않습니다: %s"
+ 
+-#: dnf/base.py:2024
++#: dnf/base.py:2038
+ #, python-format
+ msgid "Package %s of lower version already installed, cannot downgrade it."
+-msgstr "%s 꾸러미의 하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다."
++msgstr ""
++"%s 꾸러미의 하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다."
+ 
+-#: dnf/base.py:2047
++#: dnf/base.py:2061
+ #, python-format
+ msgid "Package %s not installed, cannot reinstall it."
+-msgstr "%s 꾸러미가 설치되어 있지 않기 때문에 다시 설치할 수 없습니다."
++msgstr "꾸러미 %s가 설치되지 않아서, 다시 설치 할 수 없습니다."
+ 
+-#: dnf/base.py:2062
++#: dnf/base.py:2076
+ #, python-format
+ msgid "File %s is a source package and cannot be updated, ignoring."
+ msgstr "%s 파일은 소스 꾸러미이며 최신화 할 수 없습니다. 무시합니다."
+ 
+-#: dnf/base.py:2073
++#: dnf/base.py:2087
+ #, python-format
+ msgid "Package %s not installed, cannot update it."
+ msgstr "%s 꾸러미가 설치되어 있지 않기 때문에 최신화 할 수 없습니다."
+ 
+-#: dnf/base.py:2083
++#: dnf/base.py:2097
+ #, python-format
+ msgid ""
+ "The same or higher version of %s is already installed, cannot update it."
+ msgstr "%s 이상의 버전이 이미 설치되어 있으므로 최신화 할 수 없습니다."
+ 
+-#: dnf/base.py:2126 dnf/cli/commands/reinstall.py:81
++#: dnf/base.py:2140 dnf/cli/commands/reinstall.py:81
+ #, python-format
+ msgid "Package %s available, but not installed."
+ msgstr "%s 꾸러미는 사용할 수는 있지만 설치되어 있지 않습니다."
+ 
+-#: dnf/base.py:2132
++#: dnf/base.py:2146
+ #, python-format
+ msgid "Package %s available, but installed for different architecture."
+ msgstr "%s 꾸러미는 사용 가능하지만 다른 구조용으로 설치되어 있습니다."
+ 
+-#: dnf/base.py:2157
++#: dnf/base.py:2171
+ #, python-format
+ msgid "No package %s installed."
+ msgstr "%s 꾸러미는 설치되어 있지 않습니다."
+ 
+-#: dnf/base.py:2175 dnf/cli/commands/install.py:136
++#: dnf/base.py:2189 dnf/cli/commands/install.py:136
+ #: dnf/cli/commands/remove.py:133
+ #, python-format
+ msgid "Not a valid form: %s"
+ msgstr "잘못된 형식: %s"
+ 
+-#: dnf/base.py:2190 dnf/cli/commands/__init__.py:676
++#: dnf/base.py:2204 dnf/cli/commands/__init__.py:676
+ #: dnf/cli/commands/remove.py:162
+ msgid "No packages marked for removal."
+ msgstr "제거 대상 꾸러미가 없습니다."
+ 
+-#: dnf/base.py:2278 dnf/cli/cli.py:428
++#: dnf/base.py:2292 dnf/cli/cli.py:428
+ #, python-format
+ msgid "Packages for argument %s available, but not installed."
+ msgstr "%s 인수에 대한 꾸러미를 사용할 수 있지만 설치되어 있지 않습니다."
+ 
+-#: dnf/base.py:2283
++#: dnf/base.py:2297
+ #, python-format
+ msgid "Package %s of lowest version already installed, cannot downgrade it."
+-msgstr "%s 꾸러미의 최하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다."
++msgstr ""
++"%s 꾸러미의 최하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다."
+ 
+-#: dnf/base.py:2383
++#: dnf/base.py:2397
+ msgid "No security updates needed, but {} update available"
+ msgstr "보안 최신화가 필요하지 않지만, {} 최신화가 가능합니다"
+ 
+-#: dnf/base.py:2385
++#: dnf/base.py:2399
+ msgid "No security updates needed, but {} updates available"
+ msgstr "보안 최신화는 필요하지 않지만 {} 최신화는 가능합니다"
+ 
+-#: dnf/base.py:2389
++#: dnf/base.py:2403
+ msgid "No security updates needed for \"{}\", but {} update available"
+ msgstr "\"{}\"에는 보안 최신화가 필요하지 않지만 {} 최신화가 가능합니다"
+ 
+-#: dnf/base.py:2391
++#: dnf/base.py:2405
+ msgid "No security updates needed for \"{}\", but {} updates available"
+ msgstr "\"{}\"에는 보안 최신화가 필요하지 않지만 {} 최신화가 가능합니다"
+ 
+ #. raise an exception, because po.repoid is not in self.repos
+-#: dnf/base.py:2412
++#: dnf/base.py:2426
+ #, python-format
+ msgid "Unable to retrieve a key for a commandline package: %s"
+ msgstr "명령줄 꾸러미: %s 대한 키를 검색 할 수 없습니다"
+ 
+-#: dnf/base.py:2420
++#: dnf/base.py:2434
+ #, python-format
+ msgid ". Failing package is: %s"
+ msgstr "실패한 꾸러미는 다음과 같습니다. %s"
+ 
+-#: dnf/base.py:2421
++#: dnf/base.py:2435
+ #, python-format
+ msgid "GPG Keys are configured as: %s"
+ msgstr "GPG 키는 다음과 같이 설정되어 있습니다. %s"
+ 
+-#: dnf/base.py:2433
++#: dnf/base.py:2447
+ #, python-format
+ msgid "GPG key at %s (0x%s) is already installed"
+ msgstr "%s (0x%s)의 GPG 키가 이미 설치되어 있습니다"
+ 
+-#: dnf/base.py:2469
++#: dnf/base.py:2483
+ msgid "The key has been approved."
+ msgstr "키가 승인되었습니다."
+ 
+-#: dnf/base.py:2472
++#: dnf/base.py:2486
+ msgid "The key has been rejected."
+ msgstr "키가 거부되었습니다."
+ 
+-#: dnf/base.py:2505
++#: dnf/base.py:2519
+ #, python-format
+ msgid "Key import failed (code %d)"
+ msgstr "키 가져 오기에 실패했습니다 (코드 %d)"
+ 
+-#: dnf/base.py:2507
++#: dnf/base.py:2521
+ msgid "Key imported successfully"
+ msgstr "키 가져오기에 성공했습니다"
+ 
+-#: dnf/base.py:2511
++#: dnf/base.py:2525
+ msgid "Didn't install any keys"
+ msgstr "키를 하나도 설치하지 못했습니다"
+ 
+-#: dnf/base.py:2514
++#: dnf/base.py:2528
+ #, python-format
+ msgid ""
+-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
++"The GPG keys listed for the \"%s\" repository are already installed but they "
++"are not correct for this package.\n"
+ "Check that the correct key URLs are configured for this repository."
+ msgstr ""
+ "해당 GPG 키는 \"%s\"저장소가 이미 설치되어 있지만이 꾸러미에 맞지 않습니다.\n"
+ "이 저장소에 대해 올바른 키 URL이 구성되었는지 확인하십시오."
+ 
+-#: dnf/base.py:2525
++#: dnf/base.py:2539
+ msgid "Import of key(s) didn't help, wrong key(s)?"
+ msgstr "가져온 키에 문제가 있습니다. 잘못된 키입니까?"
+ 
+-#: dnf/base.py:2578
++#: dnf/base.py:2592
+ msgid "  * Maybe you meant: {}"
+ msgstr "  * 다음을 의미 할 수도 있습니다: {}"
+ 
+-#: dnf/base.py:2610
++#: dnf/base.py:2624
+ msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
+ msgstr "로컬 저장소 \"{}\"의 \"{}\"꾸러미에 잘못된 체크섬이 있습니다"
+ 
+-#: dnf/base.py:2613
++#: dnf/base.py:2627
+ msgid "Some packages from local repository have incorrect checksum"
+ msgstr "로컬 저장소의 일부 꾸러미에 잘못된 체크섬이 있습니다"
+ 
+-#: dnf/base.py:2616
++#: dnf/base.py:2630
+ msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
+ msgstr "저장소 \"{}\"의 꾸러미 \"{}\"에 잘못된 체크섬이 있습니다"
+ 
+-#: dnf/base.py:2619
++#: dnf/base.py:2633
+ msgid ""
+ "Some packages have invalid cache, but cannot be downloaded due to \"--"
+ "cacheonly\" option"
+-msgstr "일부 꾸러미에는 유효하지 않은 캐쉬가 있지만 \"--cacheonly\"옵션으로 인해 내려받기 할 수 없습니다"
++msgstr ""
++"일부 꾸러미에는 유효하지 않은 캐쉬가 있지만 \"--cacheonly\"옵션으로 인해 내려"
++"받기 할 수 없습니다"
+ 
+-#: dnf/base.py:2637 dnf/base.py:2657
++#: dnf/base.py:2651 dnf/base.py:2671
+ msgid "No match for argument"
+ msgstr "일치하는 인수가 없습니다"
+ 
+-#: dnf/base.py:2645 dnf/base.py:2665
++#: dnf/base.py:2659 dnf/base.py:2679
+ msgid "All matches were filtered out by exclude filtering for argument"
+ msgstr "모든 일치 항목이 인수의 제외 필터로 필터링되었습니다"
+ 
+-#: dnf/base.py:2647
++#: dnf/base.py:2661
+ msgid "All matches were filtered out by modular filtering for argument"
+ msgstr "모든 일치 항목이 인수의 모듈식 필터로 필터링되었습니다"
+ 
+-#: dnf/base.py:2663
++#: dnf/base.py:2677
+ msgid "All matches were installed from a different repository for argument"
+ msgstr "모든 일치 항목이 인수의 다른 리포지토리에서 설치되었습니다"
+ 
+-#: dnf/base.py:2710
++#: dnf/base.py:2724
+ #, python-format
+ msgid "Package %s is already installed."
+-msgstr "꾸러미 %s 가 이미 설치되어 있습니다."
++msgstr "꾸러미 %s가 이미 설치되어 있습니다."
+ 
+ #: dnf/cli/aliases.py:96
+ #, python-format
+ msgid "Unexpected value of environment variable: DNF_DISABLE_ALIASES=%s"
+ msgstr "예상치 못한 환경 변수 값 : DNF_DISABLE_ALIASES =%s"
+ 
+-#: dnf/cli/aliases.py:105 dnf/conf/config.py:457
++#: dnf/cli/aliases.py:105 dnf/conf/config.py:475
+ #, python-format
+ msgid "Parsing file \"%s\" failed: %s"
+ msgstr "\"%s\" 파일의 구문 분석에 실패했습니다 : %s"
+@@ -572,11 +581,17 @@ msgstr "이 작업은 '{0}' 모듈을 '{1}' 스트림에서 ‘{2}' 스트림으
+ #: dnf/cli/cli.py:173
+ #, python-brace-format
+ msgid ""
+-"It is not possible to switch enabled streams of a module unless explicitly enabled via configuration option module_stream_switch.\n"
+-"It is recommended to rather remove all installed content from the module, and reset the module using '{prog} module reset <module_name>' command. After you reset the module, you can install the other stream."
++"It is not possible to switch enabled streams of a module unless explicitly "
++"enabled via configuration option module_stream_switch.\n"
++"It is recommended to rather remove all installed content from the module, "
++"and reset the module using '{prog} module reset <module_name>' command. "
++"After you reset the module, you can install the other stream."
+ msgstr ""
+-"설정 선택 module_stream_switch을 통해 명시적으로 활성화 하지 않는한 모듈의 활성화된 스트림을 전환 할 수 없습니다.\n"
+-"모듈에서 설치된 모든 내용을 모듈에서 제거하고, '{prog} module reset <module_name>'명령을 사용하여 모듈을 재설정하는 것을 권장합니다. 모듈을 재설정 후에, 다른 스트림을 설치 할 수 있습니다."
++"구성 옵션 module_stream_switch를 통해 명시적으로 활성화하지 않는 한 활성화된 "
++"모듈 스트림을 전환 할 수 없습니다.\n"
++"설치된 모든 내용을 모듈에서 제거하고 ‘{prog} module reset <module_name>' 명령"
++"을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후 다른 스트림"
++"을 설치 할 수 있습니다."
+ 
+ #: dnf/cli/cli.py:212
+ #, python-brace-format
+@@ -596,7 +611,7 @@ msgstr "작업이 중지됩니다."
+ 
+ #: dnf/cli/cli.py:226
+ msgid "Downloading Packages:"
+-msgstr "꾸러미 내려받기중:"
++msgstr "꾸러미 내려받기 중:"
+ 
+ #: dnf/cli/cli.py:232
+ msgid "Error downloading packages:"
+@@ -680,9 +695,11 @@ msgstr "일치하는 저장소가 없습니다 : %s"
+ 
+ #: dnf/cli/cli.py:719
+ msgid ""
+-"This command has to be run with superuser privileges (under the root user on"
+-" most systems)."
+-msgstr "이 명령은 슈퍼유저 권한으로 실행해야합니다 (대부분의 시스템에서 root 사용자로 실행)."
++"This command has to be run with superuser privileges (under the root user on "
++"most systems)."
++msgstr ""
++"이 명령은 슈퍼유저 권한으로 실행해야합니다 (대부분의 시스템에서 root 사용자"
++"로 실행)."
+ 
+ #: dnf/cli/cli.py:749
+ #, python-format
+@@ -701,31 +718,32 @@ msgstr "{PROG} 플러그인 명령일 수 있습니다: \"{prog} 'dnf-command(%s
+ msgid ""
+ "It could be a {prog} plugin command, but loading of plugins is currently "
+ "disabled."
+-msgstr "{prog} 플러그인 명령일 수 있지만 플러그인 로딩은 현재 비활성화되어 있습니다."
++msgstr ""
++"{prog} 플러그인 명령일 수 있지만 플러그인 로딩은 현재 비활성화되어 있습니다."
+ 
+ #: dnf/cli/cli.py:814
+ msgid ""
+ "--destdir or --downloaddir must be used with --downloadonly or download or "
+ "system-upgrade command."
+ msgstr ""
+-"--destdir 또는 --downloaddir은 --downloadonly 또는 download 또는 system-upgrade 명령과"
+-" 함께 사용해야합니다."
++"--destdir 또는 --downloaddir은 --downloadonly 또는 download 또는 system-"
++"upgrade 명령과 함께 사용해야합니다."
+ 
+ #: dnf/cli/cli.py:820
+ msgid ""
+ "--enable, --set-enabled and --disable, --set-disabled must be used with "
+ "config-manager command."
+ msgstr ""
+-"--enable, --set-enabled 및 --disable, --set-disabled는 config-manager 명령과 함께 "
+-"사용해야합니다."
++"--enable, --set-enabled 및 --disable, --set-disabled는 config-manager 명령과 "
++"함께 사용해야합니다."
+ 
+ #: dnf/cli/cli.py:902
+ msgid ""
+ "Warning: Enforcing GPG signature check globally as per active RPM security "
+ "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)"
+ msgstr ""
+-"경고: 활성화된 RPM 보안 정책에 따라 GPG 서명 검사를 전체적으로 시행합니다 (이 메시지를 제거하는 방법은 dnf.conf (5)의"
+-" 'gpgcheck' 참조)"
++"경고: 활성화된 RPM 보안 정책에 따라 GPG 서명 검사를 전체적으로 시행합니다 "
++"(이 메시지를 제거하는 방법은 dnf.conf (5)의 'gpgcheck' 참조)"
+ 
+ #: dnf/cli/cli.py:922
+ msgid "Config file \"{}\" does not exist"
+@@ -735,7 +753,9 @@ msgstr "설정 파일 \"{}\" 이 존재하지 않습니다"
+ msgid ""
+ "Unable to detect release version (use '--releasever' to specify release "
+ "version)"
+-msgstr "출시 버전을 찾을 수 없습니다 ('--releasever'를 사용하여 출시 버전을 지정하십시오)"
++msgstr ""
++"출시 버전을 찾을 수 없습니다 ('--releasever'를 사용하여 출시 버전을 지정하십"
++"시오)"
+ 
+ #: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471
+ msgid "argument {}: not allowed with argument {}"
+@@ -770,13 +790,15 @@ msgstr "문제를 진단하려면 다음을 실행하십시오. '%s'."
+ #: dnf/cli/commands/__init__.py:40
+ #, python-format
+ msgid "You probably have corrupted RPMDB, running '%s' might fix the issue."
+-msgstr "RPMDB가 손상되었을 수 있습니다 '%s'를 실행하여 문제를 해결할 수 있습니다."
++msgstr ""
++"RPMDB가 손상되었을 수 있습니다 '%s'를 실행하여 문제를 해결할 수 있습니다."
+ 
+ #: dnf/cli/commands/__init__.py:44
+ #, python-brace-format
+ msgid ""
+ "You have enabled checking of packages via GPG keys. This is a good thing.\n"
+-"However, you do not have any GPG public keys installed. You need to download\n"
++"However, you do not have any GPG public keys installed. You need to "
++"download\n"
+ "the keys for packages you wish to install and install them.\n"
+ "You can do that by running the command:\n"
+ "    rpm --import public.gpg.key\n"
+@@ -790,13 +812,13 @@ msgid ""
+ msgstr ""
+ "GPG 키를 통해 꾸러미 검사를 활성화했습니다. 이는 적절한 작업 실행입니다.\n"
+ "그러나 GPG 공개 키가 설치되어 있지 않습니다.\n"
+-"설치하려는 꾸러미의 키를 내려받기하여 설치해야 합니다.\n"
++"설치하려는 꾸러미의 키를 내려 받기하여 설치해야 합니다.\n"
+ "다음 명령으로 이 작업을 수행할 수 있습니다:\n"
+ "rpm --import public.gpg.key\n"
+ "\n"
+ "\n"
+-"또는 저장소 섹션의 'gpgkey' 옵션을 사용하여\n"
+-"저장소에 사용할 키의 URL을 지정할 수 있으며 {prog}가\n"
++"또는 저장소 부분의 'gpgkey' 옵션을 사용하여\n"
++"저장소에 사용할 키의 URL을 지정 할 수 있으며 {prog}가\n"
+ "이를 설치합니다\n"
+ "\n"
+ "자세한 내용은 배포 또는 꾸러미 공급 업체에 문의하십시오."
+@@ -1116,7 +1138,9 @@ msgstr "PID %d 프로세스가 종료되기를 기다리고 있습니다."
+ msgid ""
+ "[deprecated, use repoquery --deplist] List package's dependencies and what "
+ "packages provide them"
+-msgstr "[비추천, repoquery --deplist 사용] 꾸러미 의존성과 이를 제공하는 꾸러미를 나열"
++msgstr ""
++"[더 이상 사용되지 않음, repoquery --deplist 사용] 꾸러미의 종속성과 이를 제공"
++"하는 꾸러미 목록 나열"
+ 
+ #: dnf/cli/commands/distrosync.py:32
+ msgid "synchronize installed packages to the latest available versions"
+@@ -1222,9 +1246,10 @@ msgstr "저장 명령을 위해, 트랜젝션을 저장할 파일 경로"
+ 
+ #: dnf/cli/commands/history.py:68
+ msgid ""
+-"For the replay command, don't check for installed packages matching those in"
+-" transaction"
+-msgstr "재생명령을 위하여, 연결에 그것들과 일치하는 설치된 꾸러미를 확인하지 마세요"
++"For the replay command, don't check for installed packages matching those in "
++"transaction"
++msgstr ""
++"재생명령을 위하여, 연결에 그것들과 일치하는 설치된 꾸러미를 확인하지 마세요"
+ 
+ #: dnf/cli/commands/history.py:71
+ msgid ""
+@@ -1234,9 +1259,11 @@ msgstr "응답 명령을 위하여, 연결에 추가 된 꾸러미를 확인하
+ 
+ #: dnf/cli/commands/history.py:74
+ msgid ""
+-"For the replay command, skip packages that are not available or have missing"
+-" dependencies"
+-msgstr "지연 명령을 위하여, 사용 할 수 없는 또는 찾을 수 없는 의존성을 갖는 목록 건너띄기"
++"For the replay command, skip packages that are not available or have missing "
++"dependencies"
++msgstr ""
++"지연 명령을 위하여, 사용 할 수 없는 또는 찾을 수 없는 의존성을 갖는 목록 건너"
++"띄기"
+ 
+ #: dnf/cli/commands/history.py:94
+ msgid ""
+@@ -1266,16 +1293,20 @@ msgstr "기록 DB에 액세스할 수 없습니다: %s"
+ #: dnf/cli/commands/history.py:151
+ #, python-format
+ msgid ""
+-"Cannot undo transaction %s, doing so would result in an inconsistent package"
+-" database."
+-msgstr "%s 연결을 취소 할 수 없습니다. 취소하면 꾸러미 자료 저장소가 일치하지 않게 됩니다."
++"Cannot undo transaction %s, doing so would result in an inconsistent package "
++"database."
++msgstr ""
++"%s 연결을 취소 할 수 없습니다. 취소하면 꾸러미 자료 저장소가 일치하지 않게 됩"
++"니다."
+ 
+ #: dnf/cli/commands/history.py:156
+ #, python-format
+ msgid ""
+ "Cannot rollback transaction %s, doing so would result in an inconsistent "
+ "package database."
+-msgstr "%s 연결을 되돌릴 수 없습니다. 이렇게 하면 꾸러미 데이타베이스가 일치하지 않게 됩니다."
++msgstr ""
++"%s 연결을 되돌릴 수 없습니다. 이렇게 하면 꾸러미 데이타베이스가 일치하지 않"
++"게 됩니다."
+ 
+ #: dnf/cli/commands/history.py:175
+ msgid "No transaction ID given"
+@@ -1415,9 +1446,11 @@ msgstr "꾸러미 %s가 설치되지 않았습니다."
+ 
+ #: dnf/cli/commands/module.py:54
+ msgid ""
+-"Only module name, stream, architecture or profile is used. Ignoring unneeded"
+-" information in argument: '{}'"
+-msgstr "모듈 이름, 스트림, 구조 또는 프로파일만 사용됩니다. '{}'인수에서 불필요한 정보는 무시하십시오"
++"Only module name, stream, architecture or profile is used. Ignoring unneeded "
++"information in argument: '{}'"
++msgstr ""
++"모듈 이름, 스트림, 구조 또는 프로파일만 사용됩니다. '{}'인수에서 불필요한 정"
++"보는 무시하십시오"
+ 
+ #: dnf/cli/commands/module.py:80
+ msgid "list all module streams, profiles and states"
+@@ -1665,7 +1698,7 @@ msgstr "Repo-filename : "
+ #. then chop the middle (name)...
+ #: dnf/cli/commands/repolist.py:246 dnf/cli/commands/repolist.py:273
+ msgid "repo id"
+-msgstr "리포지터리 ID"
++msgstr "레포지터리 ID"
+ 
+ #: dnf/cli/commands/repolist.py:259 dnf/cli/commands/repolist.py:260
+ #: dnf/cli/commands/repolist.py:281
+@@ -1674,7 +1707,7 @@ msgstr "상태"
+ 
+ #: dnf/cli/commands/repolist.py:275 dnf/cli/commands/repolist.py:277
+ msgid "repo name"
+-msgstr "리포지터리 이름"
++msgstr "레포지터리 이름"
+ 
+ #: dnf/cli/commands/repolist.py:291
+ msgid "Total packages: {}"
+@@ -1688,7 +1721,8 @@ msgstr "키워드와 일치하는 꾸러미 검색"
+ msgid ""
+ "Query all packages (shorthand for repoquery '*' or repoquery without "
+ "argument)"
+-msgstr "모든 꾸러미를 쿼리하십시오 (repoquery '*'의 축약형 또는 인수없는 repoquery)"
++msgstr ""
++"모든 꾸러미를 쿼리하십시오 (repoquery '*'의 축약형 또는 인수없는 repoquery)"
+ 
+ #: dnf/cli/commands/repoquery.py:124
+ msgid "Query all versions of packages (default)"
+@@ -1710,7 +1744,9 @@ msgstr "REQ와 충돌하는 결과 만 표시"
+ msgid ""
+ "shows results that requires, suggests, supplements, enhances,or recommends "
+ "package provides and files REQ"
+-msgstr "REQ를 제공하고 파일 꾸러미를 요구, 제안, 보완, 개선, 권장하는 결과를 표시합니다"
++msgstr ""
++"꾸러미 제공과 파일 REQ를 요구, 제안, 보완, 향상 또는 권장하는 결과를 표시합니"
++"다"
+ 
+ #: dnf/cli/commands/repoquery.py:139
+ msgid "show only results that obsolete REQ"
+@@ -1752,7 +1788,9 @@ msgstr "지정된대로 종속성을 확인. --alldeps와 반대됩니다"
+ msgid ""
+ "used with --whatrequires, and --requires --resolve, query packages "
+ "recursively."
+-msgstr "--whatrequires, --requires --resolve와 함계 사용하여 꾸러미를 재귀적으로 쿼리합니다."
++msgstr ""
++"--whatrequires, --requires --resolve와 함계 사용하여 꾸러미를 재귀적으로 쿼리"
++"합니다."
+ 
+ #: dnf/cli/commands/repoquery.py:166
+ msgid "show a list of all dependencies and what packages provide them"
+@@ -1774,7 +1812,9 @@ msgstr "해당 소스 RPM에서 작동합니다"
+ msgid ""
+ "show N latest packages for a given name.arch (or latest but N if N is "
+ "negative)"
+-msgstr "지정된 name.arch (또는 N이 음수인 경우 가장 오래된 꾸러미)에 대한 N 개의 최신 꾸러미를 표시합니다"
++msgstr ""
++"지정된 name.arch (또는 N이 음수인 경우 가장 오래된 꾸러미)에 대한 N 개의 최"
++"신 꾸러미를 표시합니다"
+ 
+ #: dnf/cli/commands/repoquery.py:177
+ msgid "list also packages of inactive module streams"
+@@ -1799,11 +1839,11 @@ msgstr "꾸러미의 변경 로그 표시"
+ #: dnf/cli/commands/repoquery.py:194
+ #, python-format, python-brace-format
+ msgid ""
+-"display format for listing packages: \"%%{name} %%{version} ...\", use "
+-"--querytags to view full tag list"
++"display format for listing packages: \"%%{name} %%{version} ...\", use --"
++"querytags to view full tag list"
+ msgstr ""
+-"꾸러미 목록 표시형식 : \"%%{name} %%{version} ...\" 모든 태그 목록을 보여주기 위해 --querytags "
+-"사용합니다"
++"꾸러미 목록 표시형식 : \"%%{name} %%{version} ...\" 모든 태그 목록을 보여주"
++"기 위해 --querytags 사용합니다"
+ 
+ #: dnf/cli/commands/repoquery.py:198
+ msgid "show available tags to use with --queryformat"
+@@ -1813,19 +1853,25 @@ msgstr "--queryformat과 함께 사용할 수 있는 태그를 표시합니다"
+ msgid ""
+ "use name-epoch:version-release.architecture format for displaying found "
+ "packages (default)"
+-msgstr "name-epoch:version-release.architecture 형식을 사용하여 검색된 꾸러미를 표시합니다 (기본값)"
++msgstr ""
++"name-epoch:version-release.architecture 형식을 사용하여 검색된 꾸러미를 표시"
++"합니다 (기본값)"
+ 
+ #: dnf/cli/commands/repoquery.py:205
+ msgid ""
+ "use name-version-release format for displaying found packages (rpm query "
+ "default)"
+-msgstr "name-version-release 형식을 사용하여 검색된 꾸러미를 표시합니다 (rpm 쿼리 기본값)"
++msgstr ""
++"name-version-release 형식을 사용하여 검색된 꾸러미를 표시합니다 (rpm 쿼리 기"
++"본값)"
+ 
+ #: dnf/cli/commands/repoquery.py:211
+ msgid ""
+ "use epoch:name-version-release.architecture format for displaying found "
+ "packages"
+-msgstr "epoch : name-version-release.architecture 형식을 사용하여 검색된 꾸러미를 표시합니다"
++msgstr ""
++"epoch : name-version-release.architecture 형식을 사용하여 검색된 꾸러미를 표"
++"시합니다"
+ 
+ #: dnf/cli/commands/repoquery.py:214
+ msgid "Display in which comps groups are presented selected packages"
+@@ -1855,7 +1901,9 @@ msgstr "꾸러미와 충돌하는 기능을 표시합니다."
+ msgid ""
+ "Display capabilities that the package can depend on, enhance, recommend, "
+ "suggest, and supplement."
+-msgstr "꾸러미가 종속 기능 강화, 개선, 권장, 제안 및 보완할 수 있는 기능을 표시합니다."
++msgstr ""
++"꾸러미가 종속 기능 강화, 개선, 권장, 제안 및 보완할 수 있는 기능을 표시합니"
++"다."
+ 
+ #: dnf/cli/commands/repoquery.py:236
+ msgid "Display capabilities that the package can enhance."
+@@ -1880,8 +1928,9 @@ msgid ""
+ "running %%pre and %%post scriptlets. If the package is installed display "
+ "capabilities that is depends for %%pre, %%post, %%preun and %%postun."
+ msgstr ""
+-"꾸러미가 설치되어 있지 않은 경우 %%pre 과 %%post 스크립트를 실행할 수 있는 기능이 표시됩니다. 꾸러미가 설치 되어 있는 경우"
+-" %%pre, %%post , %%preun, %%postun에 종속된 기능이 표시됩니다."
++"꾸러미가 설치되어 있지 않은 경우 %%pre 과 %%post 스크립트를 실행할 수 있는 기"
++"능이 표시됩니다. 꾸러미가 설치 되어 있는 경우 %%pre, %%post , %%preun, "
++"%%postun에 종속된 기능이 표시됩니다."
+ 
+ #: dnf/cli/commands/repoquery.py:243
+ msgid "Display capabilities that the package suggests."
+@@ -1930,22 +1979,23 @@ msgstr "검색에 사용되는 키워드"
+ 
+ #: dnf/cli/commands/repoquery.py:295
+ msgid ""
+-"Option '--resolve' has to be used together with one of the '--conflicts', '"
+-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--"
++"Option '--resolve' has to be used together with one of the '--conflicts', '--"
++"depends', '--enhances', '--provides', '--recommends', '--requires', '--"
+ "requires-pre', '--suggests' or '--supplements' options"
+ msgstr ""
+-"옵션 '--resolve'는 '--conflicts', '--depends', '--enhances', '--provides', '--"
+-"recommends', '--requires'중 하나와 함께 사용해야합니다. , '--requires-pre', '--"
+-"suggests'또는 '--supplements'옵션들"
++"옵션 '--resolve'는 '--conflicts', '--depends', '--enhances', '--provides', "
++"'--recommends', '--requires'중 하나와 함께 사용해야합니다. , '--requires-"
++"pre', '--suggests'또는 '--supplements'옵션들"
+ 
+ #: dnf/cli/commands/repoquery.py:305
+ msgid ""
+ "Option '--recursive' has to be used with '--whatrequires <REQ>' (optionally "
+-"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> "
+-"--resolve'"
++"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> --"
++"resolve'"
+ msgstr ""
+-"옵션 '--reative'를 '--whatrequires <REQ>' (선택 옵션으로 '--exactdeps' 대신 '--"
+-"alldeps'와 함께 사용), 또는 '--requires <REQ> --resolve'와 함께 사용해야 합니다"
++"옵션 '--reative'를 '--whatrequires <REQ>' (선택 옵션으로 '--exactdeps' 대신 "
++"'--alldeps'와 함께 사용), 또는 '--requires <REQ> --resolve'와 함께 사용해야 "
++"합니다"
+ 
+ #: dnf/cli/commands/repoquery.py:312
+ msgid "argument {} requires --whatrequires or --whatdepends option"
+@@ -1959,13 +2009,17 @@ msgstr "꾸러미 {}에 파일이 없습니다"
+ #, python-brace-format
+ msgid ""
+ "No valid switch specified\n"
+-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--"
++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--"
++"tree]\n"
+ "\n"
+ "description:\n"
+ "  For the given packages print a tree of thepackages."
+ msgstr ""
+ "유효한 매개 변수를 지정하지 않았습니다.\n"
+-"사용법: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"사용법: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--"
++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--"
++"tree]\n"
+ "\n"
+ "설명:\n"
+ "  지정된 꾸러미의 경우 꾸러미 트리를 출력하십시오."
+@@ -2005,8 +2059,7 @@ msgstr "설명"
+ msgid "URL"
+ msgstr "URL"
+ 
+-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary
+-#. & URL)
++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL)
+ #: dnf/cli/commands/search.py:76
+ msgid " & "
+ msgstr " & "
+@@ -2016,14 +2069,14 @@ msgstr " & "
+ #: dnf/cli/commands/search.py:80
+ #, python-format
+ msgid "%s Exactly Matched: %%s"
+-msgstr "%s 정확히 일치하는 항목: %%s"
++msgstr "%s과 정확히 일치하는 항목: %%s"
+ 
+ #. TRANSLATORS: %s  - translated package attributes,
+ #. %%s - found keys (in listed attributes)
+ #: dnf/cli/commands/search.py:84
+ #, python-format
+ msgid "%s Matched: %%s"
+-msgstr "%s 일치하는 항목: %%s"
++msgstr "%s과 일치하는 항목: %%s"
+ 
+ #: dnf/cli/commands/search.py:134
+ msgid "No matches found."
+@@ -2371,7 +2424,9 @@ msgstr "최신화 할 꾸러미"
+ msgid ""
+ "upgrade, but only 'newest' package match which fixes a problem that affects "
+ "your system"
+-msgstr "최신화 하지만 ‘최신' 꾸러미에만 시스템에 영향을 줄 수 있는 수정된 문제가 있습니다"
++msgstr ""
++"최신화 하지만 ‘최신' 꾸러미에만 시스템에 영향을 줄 수 있는 수정된 문제가 있습"
++"니다"
+ 
+ #: dnf/cli/main.py:88
+ msgid "Terminated."
+@@ -2383,7 +2438,7 @@ msgstr "현재 디렉토리에서 읽기 / 실행 액세스가 없습니다. /
+ 
+ #: dnf/cli/main.py:135
+ msgid "try to add '{}' to command line to replace conflicting packages"
+-msgstr "충돌하는 꾸러미를 바꾸려면 명령 줄에 '{}'을 (를) 추가하십시오"
++msgstr "충돌하는 꾸러미를 교체하려면 명령줄에 '{}'을 추가하세요"
+ 
+ #: dnf/cli/main.py:139
+ msgid "try to add '{}' to skip uninstallable packages"
+@@ -2475,7 +2530,7 @@ msgstr "설정 파일 및 리포지토리 파일에서 $releasever 값을 무시
+ 
+ #: dnf/cli/option_parser.py:207
+ msgid "set arbitrary config and repo options"
+-msgstr "임의의 설정 옵션 및 리포지토리 옵션 설정"
++msgstr "임의의 설정 옵션 과 저장소 옵션 설정"
+ 
+ #: dnf/cli/option_parser.py:210
+ msgid "resolve depsolve problems by skipping packages"
+@@ -2495,7 +2550,7 @@ msgstr "연결에서 사용 가능한 최상의 꾸러미 버전을 사용해보
+ 
+ #: dnf/cli/option_parser.py:223
+ msgid "do not limit the transaction to the best candidate"
+-msgstr "연결를 최상의 선택 옵션으로 제한하지 마십시오"
++msgstr "연결을 최상의 선택 옵션으로 제한하지 마십시오"
+ 
+ #: dnf/cli/option_parser.py:226
+ msgid "run entirely from system cache, don't update cache"
+@@ -2527,8 +2582,8 @@ msgid ""
+ "enables {prog}'s obsoletes processing logic for upgrade or display "
+ "capabilities that the package obsoletes for info, list and repoquery"
+ msgstr ""
+-"꾸러미가 info, list, repoquery에 더 이상 사용하지 않는 최신화 또는 표시 기능을 위해 {prog}의 더 이상 사용되지 "
+-"않는 처리 로직을 활성화합니다"
++"꾸러미가 info, list, repoquery에 더 이상 사용하지 않는 최신화 또는 표시 기능"
++"을 위해 {prog}의 더 이상 사용되지 않는 처리 로직을 활성화합니다"
+ 
+ #: dnf/cli/option_parser.py:251
+ msgid "debugging output level for rpm"
+@@ -2546,19 +2601,25 @@ msgstr "모든 질문에 대해 \"아니오\"(no)로 자동 응답합니다"
+ msgid ""
+ "Enable additional repositories. List option. Supports globs, can be "
+ "specified multiple times."
+-msgstr "추가 리포지토리를 활성화하십시오. 옵션이 나열됩니다. glob를 지원하며 여러 번 지정할 수 있습니다."
++msgstr ""
++"추가 저장소를 활성화하십시오. 옵션이 나열됩니다. glob를 지원하며 여러 번 지"
++"정 할 수 있습니다."
+ 
+ #: dnf/cli/option_parser.py:266
+ msgid ""
+-"Disable repositories. List option. Supports globs, can be specified multiple"
+-" times."
+-msgstr "리포지토리를 비활성화합니다. 옵션이 나열됩니다. glob를 지원하며 여러 번 지정할 수 있습니다."
++"Disable repositories. List option. Supports globs, can be specified multiple "
++"times."
++msgstr ""
++"저장소를 비활성화 합니다. 옵션이 나열됩니다. glob를 지원하며 여러 번 지정 할 "
++"수 있습니다."
+ 
+ #: dnf/cli/option_parser.py:270
+ msgid ""
+ "enable just specific repositories by an id or a glob, can be specified "
+ "multiple times"
+-msgstr "id 나 glob로 특정 리포지토리를 활성화할 수 있습니다. 여러 번 지정할 수 있습니다"
++msgstr ""
++"id 나 glob로 특정 리포지토리를 활성화할 수 있습니다. 여러 번 지정할 수 있습니"
++"다"
+ 
+ #: dnf/cli/option_parser.py:275
+ msgid "enable repos with config-manager command (automatically saves)"
+@@ -2580,7 +2641,9 @@ msgstr "excludepkgs 비활성화"
+ msgid ""
+ "label and path to an additional repository to use (same path as in a "
+ "baseurl), can be specified multiple times."
+-msgstr "사용할 추가 리포지터리에 대한 레이블 및 경로 (baseurl과 동일한 경로)를 여러 번 지정할 수 있습니다."
++msgstr ""
++"사용 할 추가 레포지터리에 대한 이름표와 경로 (baseurl과 동일한 경로)를 여러 "
++"번 지정와 할 수 있습니다."
+ 
+ #: dnf/cli/option_parser.py:297
+ msgid "disable removal of dependencies that are no longer used"
+@@ -2739,19 +2802,19 @@ msgstr "소스"
+ #: dnf/cli/output.py:479 dnf/cli/output.py:1253
+ msgctxt "short"
+ msgid "Repo"
+-msgstr "리포지터리"
++msgstr "레포지터리"
+ 
+ #. Translators: This is the full word 'Repository', used when
+ #. we have enough space.
+ #: dnf/cli/output.py:480 dnf/cli/output.py:1256
+ msgctxt "long"
+ msgid "Repository"
+-msgstr "리포지터리"
++msgstr "레포지터리"
+ 
+ #. Translators: This message should be no longer than 12 chars.
+ #: dnf/cli/output.py:487
+ msgid "From repo"
+-msgstr "리포지터리에서"
++msgstr "레포지터리에서"
+ 
+ #. :hawkey does not support changelog information
+ #. print(_("Committer   : %s") % ucd(pkg.committer))
+@@ -2969,7 +3032,7 @@ msgstr "그룹 꾸러미 설치"
+ #: dnf/cli/output.py:1051
+ msgctxt "summary"
+ msgid "Installing"
+-msgstr "설치중"
++msgstr "설치 중"
+ 
+ #. TRANSLATORS: This is for a list of packages to be upgraded.
+ #: dnf/cli/output.py:1053
+@@ -2991,9 +3054,9 @@ msgstr "종속 꾸러미 설치 중"
+ msgid "Installing weak dependencies"
+ msgstr "취약한 종속 꾸러미 설치 중"
+ 
+-#. TRANSLATORS: This is for a list of packages to be removed.
+ # translation auto-copied from project subscription-manager, version 1.11.X,
+ # document keys
++#. TRANSLATORS: This is for a list of packages to be removed.
+ #: dnf/cli/output.py:1060
+ msgid "Removing"
+ msgstr "삭제 중"
+@@ -3038,7 +3101,7 @@ msgstr "모듈 재설정"
+ 
+ #: dnf/cli/output.py:1142
+ msgid "Installing Environment Groups"
+-msgstr "환경 그룹 설치중"
++msgstr "환경 그룹 설치 중"
+ 
+ #: dnf/cli/output.py:1149
+ msgid "Upgrading Environment Groups"
+@@ -3066,8 +3129,8 @@ msgid ""
+ "Skipping packages with conflicts:\n"
+ "(add '%s' to command line to force their upgrade)"
+ msgstr ""
+-"충돌 꾸러미 건너 뛰기 :\n"
+-"(최신화를 강제하려면 명령행에 '%s' 추가)"
++"충돌 꾸러미 건너 뛰기:\n"
++"(향상을 강제하려면 명령행에 '%s' 추가)"
+ 
+ #: dnf/cli/output.py:1203
+ #, python-format
+@@ -3195,7 +3258,7 @@ msgstr "연결 ID 또는 꾸러미가 지정되지 않았습니다"
+ 
+ #: dnf/cli/output.py:1653
+ msgid "Erased"
+-msgstr "제거됨"
++msgstr "제거되었습니다"
+ 
+ #: dnf/cli/output.py:1654 dnf/cli/output.py:1821 dnf/util.py:614
+ msgid "Downgraded"
+@@ -3393,7 +3456,7 @@ msgstr ""
+ 
+ #: dnf/cli/utils.py:98
+ msgid "Running"
+-msgstr "실행중"
++msgstr "실행 중"
+ 
+ #: dnf/cli/utils.py:99
+ msgid "Sleeping"
+@@ -3440,10 +3503,6 @@ msgstr "    시작됨: %s - %s 전"
+ msgid "    State  : %s"
+ msgstr "    상태  : %s"
+ 
+-#: dnf/comps.py:104
+-msgid "skipping."
+-msgstr "건너 뛰기."
+-
+ #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706
+ #, python-format
+ msgid "Module or Group '%s' is not installed."
+@@ -3492,13 +3551,17 @@ msgstr "'%s' 구문 분석 중 오류 발생: %s"
+ #: dnf/conf/config.py:151
+ #, python-format
+ msgid "Invalid configuration value: %s=%s in %s; %s"
+-msgstr "알 수없는 설정 값: %s; %s에서 %s=%s"
++msgstr "잘못된 구성 값: %s=%s (%s; %s에서)"
++
++#: dnf/conf/config.py:194
++msgid "Cannot set \"{}\" to \"{}\": {}"
++msgstr "\"{}\"을 \"{}\" 으로 설정 할 수 없습니다: {}"
+ 
+-#: dnf/conf/config.py:226
++#: dnf/conf/config.py:244
+ msgid "Could not set cachedir: {}"
+ msgstr "cachedir를 설정할 수 없습니다: {}"
+ 
+-#: dnf/conf/config.py:275
++#: dnf/conf/config.py:293
+ msgid ""
+ "Configuration file URL \"{}\" could not be downloaded:\n"
+ "  {}"
+@@ -3506,31 +3569,31 @@ msgstr ""
+ "구성 파일 URL \"{}\"를 내려받기 할 수 없습니다:\n"
+ "  {}"
+ 
+-#: dnf/conf/config.py:355 dnf/conf/config.py:391
++#: dnf/conf/config.py:373 dnf/conf/config.py:409
+ #, python-format
+ msgid "Unknown configuration option: %s = %s"
+ msgstr "알 수 없는 설정 옵션 : %s = %s"
+ 
+-#: dnf/conf/config.py:372
++#: dnf/conf/config.py:390
+ #, python-format
+ msgid "Error parsing --setopt with key '%s', value '%s': %s"
+ msgstr "키 ‘%s', 값 '%s'를 사용하여 --setopt 구문 분석 중 오류 발생: %s"
+ 
+-#: dnf/conf/config.py:380
++#: dnf/conf/config.py:398
+ #, python-format
+ msgid "Main config did not have a %s attr. before setopt"
+ msgstr "기본 설정에는 setopt 이전에 %s attr이 없습니다"
+ 
+-#: dnf/conf/config.py:427 dnf/conf/config.py:445
++#: dnf/conf/config.py:445 dnf/conf/config.py:463
+ msgid "Incorrect or unknown \"{}\": {}"
+ msgstr "잘못되었거나 알 수 없음 \"{}\": {}"
+ 
+-#: dnf/conf/config.py:501
++#: dnf/conf/config.py:519
+ #, python-format
+ msgid "Error parsing --setopt with key '%s.%s', value '%s': %s"
+ msgstr "키 %s.%s', 값 '%s'를 사용하여 --setopt 구문 분석 중 오류 발생: %s"
+ 
+-#: dnf/conf/config.py:504
++#: dnf/conf/config.py:522
+ #, python-format
+ msgid "Repo %s did not have a %s attr. before setopt"
+ msgstr "Repo %s에 setopt 이전에 %s attr이 없습니다"
+@@ -3542,11 +3605,11 @@ msgstr "경고: '%s'을 적재하지 못했습니다, 건너 뛰기."
+ 
+ #: dnf/conf/read.py:72
+ msgid "Bad id for repo: {} ({}), byte = {} {}"
+-msgstr "리포지터리의 ID가 잘못되었습니다. {} ({}), byte = {} {}"
++msgstr "레포지터리의 ID가 잘못되었습니다. {} ({}), byte = {} {}"
+ 
+ #: dnf/conf/read.py:76
+ msgid "Bad id for repo: {}, byte = {} {}"
+-msgstr "리포지터리의 ID가 잘못되었습니다. {}, byte = {} {}"
++msgstr "레포지터리의 ID가 잘못되었습니다. {}, byte = {} {}"
+ 
+ #: dnf/conf/read.py:84
+ msgid "Repository '{}' ({}): Error parsing config: {}"
+@@ -3558,7 +3621,8 @@ msgstr "Repository '{}' : 구문 분석 설정 오류: {}"
+ 
+ #: dnf/conf/read.py:93
+ msgid "Repository '{}' ({}) is missing name in configuration, using id."
+-msgstr "Repository '{}' ({})의 설정에 이름이 누락되어 있습니다. id를 사용하십시오."
++msgstr ""
++"Repository '{}' ({})의 설정에 이름이 누락되어 있습니다. id를 사용하십시오."
+ 
+ #: dnf/conf/read.py:96
+ msgid "Repository '{}' is missing name in configuration, using id."
+@@ -3580,11 +3644,11 @@ msgstr "repo %s: 0x%s 키를 가져왔습니다."
+ 
+ #: dnf/crypto.py:145
+ msgid "Verified using DNS record with DNSSEC signature."
+-msgstr "DNSSEC 서명과 함께 DNS 기록을 사용하여 확인되었습니다."
++msgstr "DNSSEC 서명이 있는 DNS 레코드를 사용하여 확인됨."
+ 
+ #: dnf/crypto.py:147
+ msgid "NOT verified using DNS record."
+-msgstr "DNS 기록 사용은 검증되지 않았습니다."
++msgstr "DNS 레코드를 사용하여 확인되지 않음."
+ 
+ #: dnf/crypto.py:184
+ #, python-format
+@@ -3595,7 +3659,9 @@ msgstr "%s에서 암호화 하지 않은 %s를 위한 저장소 키 검색"
+ msgid ""
+ "No available modular metadata for modular package '{}', it cannot be "
+ "installed on the system"
+-msgstr "모듈 꾸러미 '{}'에 사용 가능한 메타 자료가 없으며 시스템에 설치 할 수 없습니다"
++msgstr ""
++"모듈 꾸러미 '{}'에 사용 가능한 메타 자료가 없으며 시스템에 설치 할 수 없습니"
++"다"
+ 
+ #: dnf/db/group.py:353
+ #, python-format
+@@ -3611,32 +3677,33 @@ msgstr "모듈 꾸러미에 사용 가능한 모듈 메타 자료가 없습니
+ msgid "Will not install a source rpm package (%s)."
+ msgstr "소스 RPM 꾸러미를 설치하지 않습니다 (%s)."
+ 
+-#: dnf/dnssec.py:168
++#: dnf/dnssec.py:171
+ msgid ""
+ "Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
+-msgstr "설정 선택 'gpgkey_dns_verification'는 python3-unbound ({}) 가 필요합니다"
++msgstr ""
++"구성 선택 'gpgkey_dns_verification'에는 python3-unbound ({})가 필요합니다"
+ 
+-#: dnf/dnssec.py:239
++#: dnf/dnssec.py:243
+ msgid "DNSSEC extension: Key for user "
+ msgstr "DNSSEC 확장 : 사용자 키 "
+ 
+-#: dnf/dnssec.py:241
++#: dnf/dnssec.py:245
+ msgid "is valid."
+ msgstr "유효합니다."
+ 
+-#: dnf/dnssec.py:243
++#: dnf/dnssec.py:247
+ msgid "has unknown status."
+ msgstr "알 수 없는 상태입니다."
+ 
+-#: dnf/dnssec.py:251
++#: dnf/dnssec.py:255
+ msgid "DNSSEC extension: "
+ msgstr "DNSSEC 확장: "
+ 
+-#: dnf/dnssec.py:283
++#: dnf/dnssec.py:287
+ msgid "Testing already imported keys for their validity."
+ msgstr "유효성 검사를 위해 이미 가져온 키를 테스트 중입니다."
+ 
+-#: dnf/drpm.py:62 dnf/repo.py:268
++#: dnf/drpm.py:62 dnf/repo.py:267
+ #, python-format
+ msgid "unsupported checksum type: %s"
+ msgstr "지원되지 않는 검사 유형: %s"
+@@ -3680,7 +3747,7 @@ msgid "Modular dependency problem with Defaults:"
+ msgid_plural "Modular dependency problems with Defaults:"
+ msgstr[0] "기본값의 모듈 종속성 문제 :"
+ 
+-#: dnf/exceptions.py:131 dnf/module/module_base.py:854
++#: dnf/exceptions.py:131 dnf/module/module_base.py:857
+ msgid "Modular dependency problem:"
+ msgid_plural "Modular dependency problems:"
+ msgstr[0] "모듈 종속성 문제 :"
+@@ -3689,10 +3756,12 @@ msgstr[0] "모듈 종속성 문제 :"
+ #, python-format
+ msgid ""
+ "Malformed lock file found: %s.\n"
+-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf."
++"Ensure no other dnf/yum process is running and remove the lock file manually "
++"or run systemd-tmpfiles --remove dnf.conf."
+ msgstr ""
+ "잘못된 잠금 파일이 발견되었습니다. %s \n"
+-"다른 dnf / yum 프로세스가 실행되고 있는지 확인하고 잠금 파일을 수동으로 제거하거나 systemd-tmpfiles --remove dnf.conf를 실행하십시오."
++"다른 dnf / yum 프로세스가 실행되고 있는지 확인하고 잠금 파일을 수동으로 제거"
++"하거나 systemd-tmpfiles --remove dnf.conf를 실행하십시오."
+ 
+ #: dnf/module/__init__.py:26
+ msgid "Enabling different stream for '{}'."
+@@ -3720,19 +3789,19 @@ msgstr "그런 모듈이 없습니다: {}"
+ 
+ #: dnf/module/exceptions.py:33
+ msgid "No such stream: {}"
+-msgstr "그런 스트림: {} 없습니다"
++msgstr "그런 스트림이 없습니다: {}"
+ 
+ #: dnf/module/exceptions.py:39
+ msgid "No enabled stream for module: {}"
+-msgstr "모듈에 대한 스트림이 없습니다 : {}"
++msgstr "모듈에 대한 활성화된 스트림이 없습니다: {}"
+ 
+ #: dnf/module/exceptions.py:46
+ msgid "Cannot enable more streams from module '{}' at the same time"
+-msgstr "동시에 모듈'{}'에서 더이상 스트림을 활성화 할 수 없습니다"
++msgstr "동시에 모듈 '{}'에서 더 많은 스트림을 활성화 할 수 없습니다"
+ 
+ #: dnf/module/exceptions.py:52
+ msgid "Different stream enabled for module: {}"
+-msgstr "모듈: {} 을 위한 다른 스트림이 활성화되었습니다"
++msgstr "모듈에 대해 활성화된 다른 스트림: {}"
+ 
+ #: dnf/module/exceptions.py:58
+ msgid "No such profile: {}"
+@@ -3740,19 +3809,19 @@ msgstr "그런 프로파일이 없습니다: {}"
+ 
+ #: dnf/module/exceptions.py:64
+ msgid "Specified profile not installed for {}"
+-msgstr "{}을 위한 지정한 프로파일이 설치되어 있지 않습니다"
++msgstr "{}를 위한 지정된 프로필이 설치되지 않았습니다"
+ 
+ #: dnf/module/exceptions.py:70
+ msgid "No stream specified for '{}', please specify stream"
+-msgstr "'{}'에 지정된 프로필이 없습니다. 프로필을 지정하십시오"
++msgstr "'{}'을 위한 지정된 스트림이 없으며, 스트림을 지정해주세요"
+ 
+ #: dnf/module/exceptions.py:82
+ msgid "No such profile: {}. No profiles available"
+-msgstr "그런 프로파일이 없습니다: {}. 가용한 프로파일이 없습니다"
++msgstr "그런 프로파일이 없습니다: {}. 사용 가능한 프로파일이 없습니다"
+ 
+ #: dnf/module/exceptions.py:88
+ msgid "No profile to remove for '{}'"
+-msgstr "'{}' 위해 제거 할 프로파일이 없습니다"
++msgstr "제거되는 프로파일이 없습니다('{}'를 위해 )"
+ 
+ #: dnf/module/module_base.py:35
+ msgid ""
+@@ -3775,14 +3844,15 @@ msgstr ""
+ "힌트 : [d] efault, [e] nabled, [x] disabled, [i] stalled, [a] ctive"
+ 
+ #: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+-#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
++#: dnf/module/module_base.py:615 dnf/module/module_base.py:684
+ msgid "Ignoring unnecessary profile: '{}/{}'"
+ msgstr "불필요한 프로파일을 무시합니다: '{}/{}'"
+ 
+ #: dnf/module/module_base.py:86
+ #, python-brace-format
+ msgid "All matches for argument '{0}' in module '{1}:{2}' are not active"
+-msgstr "모듈 '{1}:{2}'의 인수 '{0}'에 대한 모든 일치 항목이 활성화되지 않았습니다"
++msgstr ""
++"모듈 '{1}:{2}'의 인수 '{0}'에 대한 모든 일치 항목이 활성화되지 않았습니다"
+ 
+ #: dnf/module/module_base.py:94 dnf/module/module_base.py:204
+ #, python-brace-format
+@@ -3792,7 +3862,8 @@ msgstr "실패 방지 저장소 {1}에서 모듈 '{0}’를 설치 할 수 없
+ #: dnf/module/module_base.py:104 dnf/module/module_base.py:214
+ msgid ""
+ "Unable to match profile for argument {}. Available profiles for '{}:{}': {}"
+-msgstr "인수 {}의 프로파일을 찾을 수 없습니다. '{}:{}': {} 에 사용 가능한 프로파일"
++msgstr ""
++"인수 {}의 프로파일을 찾을 수 없습니다. '{}:{}': {} 에 사용 가능한 프로파일"
+ 
+ #: dnf/module/module_base.py:108 dnf/module/module_base.py:218
+ msgid "Unable to match profile for argument {}"
+@@ -3812,7 +3883,7 @@ msgstr "{} 모듈에서 기본 프로필 {}을 (를) 사용할 수 없음 : {}"
+ 
+ #: dnf/module/module_base.py:144 dnf/module/module_base.py:247
+ msgid "Installing module from Fail-Safe repository is not allowed"
+-msgstr "Fail-Safe 리포지토리에서 모듈을 설치할 수 없습니다"
++msgstr "실패-방지 저장소에서 설치된 모듈은 허용하지 않습니다"
+ 
+ #: dnf/module/module_base.py:196
+ #, python-brace-format
+@@ -3831,7 +3902,7 @@ msgstr "꾸러미 이름 '{}'를 위하여 배포판에서 사용 할 수 있는
+ #: dnf/module/module_base.py:310 dnf/module/module_base.py:461
+ #: dnf/module/module_base.py:486 dnf/module/module_base.py:505
+ #: dnf/module/module_base.py:552 dnf/module/module_base.py:611
+-#: dnf/module/module_base.py:677 dnf/module/module_base.py:840
++#: dnf/module/module_base.py:680 dnf/module/module_base.py:843
+ msgid "Unable to resolve argument {}"
+ msgstr "인수 {}을 (를) 구문 분석할 수 없습니다"
+ 
+@@ -3851,19 +3922,18 @@ msgstr "실패-방지 저장소에서 모듈을 향상 할 수 없습니다"
+ #: dnf/module/module_base.py:422
+ #, python-brace-format
+ msgid ""
+-"Argument '{argument}' matches {stream_count} streams ('{streams}') of module"
+-" '{module}', but none of the streams are enabled or default"
++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module "
++"'{module}', but none of the streams are enabled or default"
+ msgstr ""
+-"인수 '{argument}' 일치 {stream_count} 스트림 ('{streams}') of 모듈 '{module}', 그러나 "
+-"활성화 된 스트림 또는 기본 스트림이 없습니다"
++"인수 '{argument}'는 {stream_count} 스트림 ('{streams}')과 일치합니다 (모듈의 "
++"'{module}'), 하지만 활성화 되었거나 지정된 스트림이 없습니다"
+ 
+ #: dnf/module/module_base.py:509
+ msgid ""
+-"Only module name is required. Ignoring unneeded information in argument: "
+-"'{}'"
++"Only module name is required. Ignoring unneeded information in argument: '{}'"
+ msgstr "모듈 이름만 필요합니다. '{}'인수에서 불필요한 정보를 무시합니다"
+ 
+-#: dnf/module/module_base.py:841
++#: dnf/module/module_base.py:844
+ msgid "No match for package {}"
+ msgstr "{} 꾸러미와 일치하지 않습니다"
+ 
+@@ -3924,7 +3994,7 @@ msgid "Already downloaded"
+ msgstr "이미 내려받음"
+ 
+ #. pinging mirrors, this might take a while
+-#: dnf/repo.py:347
++#: dnf/repo.py:346
+ #, python-format
+ msgid "determining the fastest mirror (%s hosts).. "
+ msgstr "가장 빠른 미러 지정 (%s 호스트).. "
+@@ -3942,13 +4012,21 @@ msgstr "%s 에서 %s repo를 추가했습니다"
+ #: dnf/rpm/miscutils.py:32
+ #, python-format
+ msgid "Using rpmkeys executable at %s to verify signatures"
+-msgstr "%s에서 실행 가능한 rpmkey를 사용하여 서명 확인"
++msgstr "%s에 실행 할 수 있는 rpmkey를 사용하여 서명을 확인합니다"
+ 
+ #: dnf/rpm/miscutils.py:66
+ msgid "Cannot find rpmkeys executable to verify signatures."
+-msgstr "서명 확인에서 실행 가능한 rpmkey를 찾을 수 없습니다."
++msgstr "서명을 확인하기 위해 실행 할 수 있는 rpmkeys를 찾을 수 없습니다."
+ 
+-#: dnf/rpm/transaction.py:119
++#: dnf/rpm/transaction.py:70
++msgid "The openDB() function connot open rpm database."
++msgstr "openDB() 함수는 rpm 데이타베이스를 열 수 없습니다."
++
++#: dnf/rpm/transaction.py:75
++msgid "The dbCookie() function did not return cookie of rpm database."
++msgstr "dbCookie() 함수는 rpm 데이타베이스의 쿠키를 반환 하지 않습니다."
++
++#: dnf/rpm/transaction.py:135
+ msgid "Errors occurred during test transaction."
+ msgstr "연결 시험 중에 오류가 발생했습니다."
+ 
+@@ -3956,13 +4034,15 @@ msgstr "연결 시험 중에 오류가 발생했습니다."
+ msgid ""
+ "allow_vendor_change is disabled. This option is currently not supported for "
+ "downgrade and distro-sync commands"
+-msgstr "허용_공급업체_변화는 사용 할 수 없습니다. 이 선택은 현재 다운드레이드와 distro-sync 명령을 지원하지 않습니다"
++msgstr ""
++"허용_공급업체_변화는 사용 할 수 없습니다. 이 선택은 현재 다운드레이드와 "
++"distro-sync 명령을 지원하지 않습니다"
+ 
+ #. TRANSLATORS: This is for a single package currently being downgraded.
+ #: dnf/transaction.py:80
+ msgctxt "currently"
+ msgid "Downgrading"
+-msgstr "하향설치중"
++msgstr "하향 설치 중"
+ 
+ #: dnf/transaction.py:81 dnf/transaction.py:88 dnf/transaction.py:93
+ #: dnf/transaction.py:95
+@@ -3973,7 +4053,7 @@ msgstr "정리"
+ #: dnf/transaction.py:83
+ msgctxt "currently"
+ msgid "Installing"
+-msgstr "설치중"
++msgstr "설치 중"
+ 
+ #. TRANSLATORS: This is for a single package currently being reinstalled.
+ #: dnf/transaction.py:87
+@@ -4030,7 +4110,8 @@ msgstr "잘못된 하위 버전 \"{minor}\", 번호가 예상됩니다."
+ msgid ""
+ "Incompatible major version \"{major}\", supported major version is "
+ "\"{major_supp}\"."
+-msgstr "호환되지 않는 주요 버전 \"{major}\", 지원되는 주요 버전 \"{major_supp}\"."
++msgstr ""
++"호환되지 않는 주요 버전 \"{major}\", 지원되는 주요 버전 \"{major_supp}\"."
+ 
+ #: dnf/transaction_sr.py:224
+ msgid ""
+@@ -4054,8 +4135,10 @@ msgstr "rpm안에 누락된 객체 키 \"{key}\"."
+ 
+ #: dnf/transaction_sr.py:289
+ #, python-brace-format
+-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
+-msgstr "rpm nevra \"{nevra}\"를 위한 예상되지 않은 꾸러미 이유\"{reason}\" 의 값."
++msgid ""
++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
++msgstr ""
++"rpm nevra \"{nevra}\"를 위한 예상되지 않은 꾸러미 이유\"{reason}\" 의 값."
+ 
+ #: dnf/transaction_sr.py:297
+ #, python-brace-format
+@@ -4077,7 +4160,9 @@ msgstr "꾸러미 \"{na}\"는 활동 \"{action}\"를 위해 이미 설치되어
+ msgid ""
+ "Package nevra \"{nevra}\" not available in repositories for action "
+ "\"{action}\"."
+-msgstr "꾸러미 nervra \"{nevra}\"는 실행 \"{action}\"을 위한 저장소에서 사용 할 수 없음."
++msgstr ""
++"꾸러미 nervra \"{nevra}\"는 실행 \"{action}\"을 위한 저장소에서 사용 할 수 없"
++"음."
+ 
+ #: dnf/transaction_sr.py:356
+ #, python-brace-format
+@@ -4086,8 +4171,10 @@ msgstr "꾸러미 nevra\"{nevra}\"는 활동 \"{action}\"을 위해 설치되지
+ 
+ #: dnf/transaction_sr.py:370
+ #, python-brace-format
+-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
+-msgstr "rpm nevra \"{nevra}\"를 위해 기대하지 않는 꾸러미 활동 \"{action}\"의 값."
++msgid ""
++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
++msgstr ""
++"rpm nevra \"{nevra}\"를 위해 기대하지 않는 꾸러미 활동 \"{action}\"의 값."
+ 
+ #: dnf/transaction_sr.py:377
+ #, python-format
+@@ -4114,7 +4201,9 @@ msgstr "환경 id '%s'는 사용 할 수 없습니다."
+ msgid ""
+ "Invalid value \"{group_type}\" of environments.groups.group_type, only "
+ "\"mandatory\" or \"optional\" is supported."
+-msgstr "잘못된 environments.groups.group_type의 값 \"{group_type}\", \"필 수\" 또는 \"선택\"만 지원합니다."
++msgstr ""
++"잘못된 environments.groups.group_type의 값 \"{group_type}\", \"필 수\" 또는 "
++"\"선택\"만 지원합니다."
+ 
+ #: dnf/transaction_sr.py:464
+ #, python-brace-format
+@@ -4133,7 +4222,9 @@ msgstr "그룹 안에 누락된 객체 키 \"{key}\"."
+ 
+ #: dnf/transaction_sr.py:571
+ #, python-brace-format
+-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"."
++msgid ""
++"Unexpected value of environment action \"{action}\" for environment "
++"\"{env}\"."
+ msgstr "환경 \"{env}\"를 위해 예상하지 못한 환경 활동 \"{action}\"의 값."
+ 
+ #: dnf/transaction_sr.py:576
+@@ -4144,9 +4235,10 @@ msgstr "환경에 누락된 객체 키 \"{key}\"."
+ #: dnf/transaction_sr.py:615
+ #, python-brace-format
+ msgid ""
+-"Package nevra \"{nevra}\", which is not present in the transaction file, was"
+-" pulled into the transaction."
+-msgstr "꾸러미 nevra \"{nevra}\", 연겨 파일에 존재하지 않는 것은 연결로 가져왔습니다."
++"Package nevra \"{nevra}\", which is not present in the transaction file, was "
++"pulled into the transaction."
++msgstr ""
++"꾸러미 nevra \"{nevra}\", 연겨 파일에 존재하지 않는 것은 연결로 가져왔습니다."
+ 
+ #: dnf/util.py:417 dnf/util.py:419
+ msgid "Problem"
+@@ -4174,7 +4266,7 @@ msgstr "건너 뛰기됨"
+ 
+ #: dnf/util.py:621
+ msgid "Removed"
+-msgstr "제거됨"
++msgstr "제거되었습니다"
+ 
+ #: dnf/util.py:624
+ msgid "Failed"
+@@ -4185,10 +4277,14 @@ msgstr "실패하였습니다"
+ msgid "<name-unset>"
+ msgstr "<name-unset>"
+ 
++#~ msgid "skipping."
++#~ msgstr "건너 뛰기."
++
+ #~ msgid ""
+ #~ "Using rpmkeys executable from {path} to verify signature for package: "
+ #~ "{package}."
+-#~ msgstr "{path}에서 실행 가능한 rpmkey를 사용하여 꾸러미: {package}을 위해 서명을 확인합니다."
++#~ msgstr ""
++#~ "{path}에서 실행 할 수 있는 rpmkeys를 사용하여 꾸러미 서명 확인: {package}."
+ 
+ #~ msgid "%s: %s check failed: %s vs %s"
+ #~ msgstr "%s: %s 확인 실패 : %s 대 %s"
+diff --git a/po/zh_CN.po b/po/zh_CN.po
+index dcde2037..65c5273b 100644
+--- a/po/zh_CN.po
++++ b/po/zh_CN.po
+@@ -21,25 +21,29 @@
+ # zhouxiaobo <zhouxiaobo.500@gmail.com>, 2017. #zanata
+ # Ludek Janda <ljanda@redhat.com>, 2018. #zanata
+ # Pany <pany@fedoraproject.org>, 2018. #zanata
+-# Qiyu Yan <yanqiyu01@gmail.com>, 2018. #zanata, 2021.
+-# Qiyu Yan <yanqiyu01@gmail.com>, 2019. #zanata, 2021.
++# Qiyu Yan <yanqiyu01@gmail.com>, 2018. #zanata
++# Qiyu Yan <yanqiyu01@gmail.com>, 2019. #zanata
+ # Anonymous <noreply@weblate.org>, 2020.
+ # Hongqiao Chen <harrychen0314@gmail.com>, 2020.
+ # Harry Chen <harrychen0314@gmail.com>, 2020.
++# Sundeep Anand <suanand@redhat.com>, 2021.
++# weidong <weidongkl@sina.com>, 2021.
++# Transtats <suanand@redhat.com>, 2022.
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2021-06-13 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/dnf-master/zh_CN/>\n"
++"POT-Creation-Date: 2022-02-28 11:37+0100\n"
++"PO-Revision-Date: 2022-03-09 12:39+0000\n"
++"Last-Translator: Transtats <suanand@redhat.com>\n"
++"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/"
++"projects/dnf/dnf-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.2\n"
+ 
+ #: dnf/automatic/emitter.py:32
+ #, python-format
+@@ -213,158 +217,154 @@ msgstr "配置文件 %s 中使用 tsflag 是错误的"
+ msgid "Failed to add groups file for repository: %s - %s"
+ msgstr "为仓库 %s 添加组文件时失败:%s"
+ 
+-#: dnf/base.py:904
++#: dnf/base.py:922
+ msgid "Running transaction check"
+ msgstr "运行事务检查"
+ 
+-#: dnf/base.py:912
++#: dnf/base.py:930
+ msgid "Error: transaction check vs depsolve:"
+ msgstr "错误:事务检查与依赖解决错误:"
+ 
+-#: dnf/base.py:918
++#: dnf/base.py:936
+ msgid "Transaction check succeeded."
+ msgstr "事务检查成功。"
+ 
+-#: dnf/base.py:921
++#: dnf/base.py:939
+ msgid "Running transaction test"
+ msgstr "运行事务测试"
+ 
+-#: dnf/base.py:931 dnf/base.py:1082
++#: dnf/base.py:949 dnf/base.py:1100
+ msgid "RPM: {}"
+ msgstr "RPM软件包: {}"
+ 
+-#: dnf/base.py:932
++#: dnf/base.py:950
+ msgid "Transaction test error:"
+ msgstr "事物测试失败:"
+ 
+-#: dnf/base.py:943
++#: dnf/base.py:961
+ msgid "Transaction test succeeded."
+ msgstr "事务测试成功。"
+ 
+-#: dnf/base.py:964
++#: dnf/base.py:982
+ msgid "Running transaction"
+ msgstr "运行事务"
+ 
+-#: dnf/base.py:1001
++#: dnf/base.py:1019
+ msgid "Disk Requirements:"
+ msgstr "磁盘需求:"
+ 
+-#: dnf/base.py:1004
++#: dnf/base.py:1022
+ #, python-brace-format
+ msgid "At least {0}MB more space needed on the {1} filesystem."
+ msgid_plural "At least {0}MB more space needed on the {1} filesystem."
+-msgstr[0] "在文件系统{1}上至少需要{0}MB的可用空间。"
++msgstr[0] "在 {1} 文件系统上至少需要 {0}MB 的空间。"
+ 
+-#: dnf/base.py:1011
++#: dnf/base.py:1029
+ msgid "Error Summary"
+ msgstr "错误汇总"
+ 
+-#: dnf/base.py:1037
++#: dnf/base.py:1055
+ #, python-brace-format
+ msgid "RPMDB altered outside of {prog}."
+ msgstr "RPMDB 在 {prog} 外被改动了。"
+ 
+-#: dnf/base.py:1083 dnf/base.py:1091
++#: dnf/base.py:1101 dnf/base.py:1109
+ msgid "Could not run transaction."
+ msgstr "不能执行事务。"
+ 
+-#: dnf/base.py:1086
++#: dnf/base.py:1104
+ msgid "Transaction couldn't start:"
+ msgstr "事务无法启动:"
+ 
+-#: dnf/base.py:1100
++#: dnf/base.py:1118
+ #, python-format
+ msgid "Failed to remove transaction file %s"
+ msgstr "移除事务文件 %s 失败"
+ 
+-#: dnf/base.py:1182
++#: dnf/base.py:1200
+ msgid "Some packages were not downloaded. Retrying."
+ msgstr "某些软件包没有被下载。正在重试。"
+ 
+-#: dnf/base.py:1212
+-#, fuzzy, python-format
+-#| msgid ""
+-#| "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
++#: dnf/base.py:1230
++#, python-format
+ msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%.1f%% saved)"
+-msgstr "增量 RPM 将 %.1f MB 的更新减少至 %.1f MB(已节省 %d.1%% )"
++msgstr "增量 RPM 将更新的 %.1f MB 减少到 %.1f MB(节省了 %.1f%%)"
+ 
+-#: dnf/base.py:1216
+-#, fuzzy, python-format
+-#| msgid ""
+-#| "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
++#: dnf/base.py:1234
++#, python-format
+ msgid ""
+ "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%.1f%% wasted)"
+-msgstr "增量 RPM 未能将 %.1f MB 的更新减少至 %.1f MB(已浪费 %d.1%% )"
++msgstr "失败的增量 RPM 将更新的 %.1f MB 增加到 %.1f MB(浪费了 %.1f%%)"
+ 
+-#: dnf/base.py:1258
++#: dnf/base.py:1276
+ msgid "Cannot add local packages, because transaction job already exists"
+ msgstr "由于事物已经存在,无法添加本地软件包"
+ 
+-#: dnf/base.py:1272
++#: dnf/base.py:1290
+ msgid "Could not open: {}"
+ msgstr "无法打开: {}"
+ 
+-#: dnf/base.py:1310
++#: dnf/base.py:1328
+ #, python-format
+ msgid "Public key for %s is not installed"
+ msgstr "%s 的公钥没有安装"
+ 
+-#: dnf/base.py:1314
++#: dnf/base.py:1332
+ #, python-format
+ msgid "Problem opening package %s"
+ msgstr "打开软件包 %s 出现问题"
+ 
+-#: dnf/base.py:1322
++#: dnf/base.py:1340
+ #, python-format
+ msgid "Public key for %s is not trusted"
+ msgstr "%s 的公钥不可信任"
+ 
+-#: dnf/base.py:1326
++#: dnf/base.py:1344
+ #, python-format
+ msgid "Package %s is not signed"
+ msgstr "软件包 %s 没有签名"
+ 
+-#: dnf/base.py:1356
++#: dnf/base.py:1374
+ #, python-format
+ msgid "Cannot remove %s"
+ msgstr "无法删除 %s"
+ 
+-#: dnf/base.py:1360
++#: dnf/base.py:1378
+ #, python-format
+ msgid "%s removed"
+ msgstr "%s 已删除"
+ 
+-#: dnf/base.py:1640
++#: dnf/base.py:1658
+ msgid "No match for group package \"{}\""
+ msgstr "没有和组 \"{}\" 匹配的"
+ 
+-#: dnf/base.py:1726
++#: dnf/base.py:1740
+ #, python-format
+ msgid "Adding packages from group '%s': %s"
+ msgstr "从组 '%s': %s 添加软件包"
+ 
+-#: dnf/base.py:1749 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
++#: dnf/base.py:1763 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
+ #: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587
+ #: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80
+ #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110
+ msgid "Nothing to do."
+ msgstr "无需任何处理。"
+ 
+-#: dnf/base.py:1767
++#: dnf/base.py:1781
+ msgid "No groups marked for removal."
+ msgstr "没有软件包组需要移除。"
+ 
+-#: dnf/base.py:1801
++#: dnf/base.py:1815
+ msgid "No group marked for upgrade."
+ msgstr "没有标记为要升级的组。"
+ 
+-#: dnf/base.py:2015
++#: dnf/base.py:2029
+ #, python-format
+ msgid "Package %s not installed, cannot downgrade it."
+ msgstr "软件包 %s 并没有能够安装,无法进行降级操作。"
+ 
+-#: dnf/base.py:2017 dnf/base.py:2036 dnf/base.py:2049 dnf/base.py:2076
+-#: dnf/base.py:2129 dnf/base.py:2137 dnf/base.py:2271 dnf/cli/cli.py:417
++#: dnf/base.py:2031 dnf/base.py:2050 dnf/base.py:2063 dnf/base.py:2090
++#: dnf/base.py:2143 dnf/base.py:2151 dnf/base.py:2285 dnf/cli/cli.py:417
+ #: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477
+ #: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628
+ #: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147
+@@ -374,178 +374,179 @@ msgstr "软件包 %s 并没有能够安装,无法进行降级操作。"
+ msgid "No match for argument: %s"
+ msgstr "未找到匹配的参数: %s"
+ 
+-#: dnf/base.py:2024
++#: dnf/base.py:2038
+ #, python-format
+ msgid "Package %s of lower version already installed, cannot downgrade it."
+ msgstr "软件包 %s 的低版本已经安装,无法进行降级。"
+ 
+-#: dnf/base.py:2047
++#: dnf/base.py:2061
+ #, python-format
+ msgid "Package %s not installed, cannot reinstall it."
+ msgstr "软件包 %s 未能够安装成功,无法进行重新安装。"
+ 
+-#: dnf/base.py:2062
++#: dnf/base.py:2076
+ #, python-format
+ msgid "File %s is a source package and cannot be updated, ignoring."
+ msgstr "%s 文件无法被升级,已忽略。"
+ 
+-#: dnf/base.py:2073
++#: dnf/base.py:2087
+ #, python-format
+ msgid "Package %s not installed, cannot update it."
+ msgstr "软件包 %s 未安装,无法更新。"
+ 
+-#: dnf/base.py:2083
++#: dnf/base.py:2097
+ #, python-format
+ msgid ""
+ "The same or higher version of %s is already installed, cannot update it."
+ msgstr "已经安装了软件包%s的相同或更高版本,无法更新。"
+ 
+-#: dnf/base.py:2126 dnf/cli/commands/reinstall.py:81
++#: dnf/base.py:2140 dnf/cli/commands/reinstall.py:81
+ #, python-format
+ msgid "Package %s available, but not installed."
+ msgstr "软件包 %s 可用,但没有被安装。"
+ 
+-#: dnf/base.py:2132
++#: dnf/base.py:2146
+ #, python-format
+ msgid "Package %s available, but installed for different architecture."
+ msgstr "软件包 %s 可用,当是为其它架构安装。"
+ 
+-#: dnf/base.py:2157
++#: dnf/base.py:2171
+ #, python-format
+ msgid "No package %s installed."
+ msgstr "没有软件包 %s 安装。"
+ 
+-#: dnf/base.py:2175 dnf/cli/commands/install.py:136
++#: dnf/base.py:2189 dnf/cli/commands/install.py:136
+ #: dnf/cli/commands/remove.py:133
+ #, python-format
+ msgid "Not a valid form: %s"
+ msgstr "无效: %s"
+ 
+-#: dnf/base.py:2190 dnf/cli/commands/__init__.py:676
++#: dnf/base.py:2204 dnf/cli/commands/__init__.py:676
+ #: dnf/cli/commands/remove.py:162
+ msgid "No packages marked for removal."
+ msgstr "没有软件包需要移除。"
+ 
+-#: dnf/base.py:2278 dnf/cli/cli.py:428
++#: dnf/base.py:2292 dnf/cli/cli.py:428
+ #, python-format
+ msgid "Packages for argument %s available, but not installed."
+ msgstr "针对于参数 %s 的软件包可用, 但是目前没有安装。"
+ 
+-#: dnf/base.py:2283
++#: dnf/base.py:2297
+ #, python-format
+ msgid "Package %s of lowest version already installed, cannot downgrade it."
+ msgstr "软件包 %s 的最低版本已经安装,无法再进行降级。"
+ 
+-#: dnf/base.py:2383
++#: dnf/base.py:2397
+ msgid "No security updates needed, but {} update available"
+ msgstr "没有必须的安全更新, 但是 {} 的更新可用"
+ 
+-#: dnf/base.py:2385
++#: dnf/base.py:2399
+ msgid "No security updates needed, but {} updates available"
+ msgstr "没有必须的安全更新, 但是 {} 的更新可用"
+ 
+-#: dnf/base.py:2389
++#: dnf/base.py:2403
+ msgid "No security updates needed for \"{}\", but {} update available"
+ msgstr "没有针对于\"{}\" 所必须的安全更新, 但是 {} 的更新可用"
+ 
+-#: dnf/base.py:2391
++#: dnf/base.py:2405
+ msgid "No security updates needed for \"{}\", but {} updates available"
+ msgstr "没有针对于\"{}\" 所必须的安全更新, 但是 {} 的更新可用"
+ 
+ #. raise an exception, because po.repoid is not in self.repos
+-#: dnf/base.py:2412
++#: dnf/base.py:2426
+ #, python-format
+ msgid "Unable to retrieve a key for a commandline package: %s"
+ msgstr "无法获取来自命令行的软件包的密钥:%s"
+ 
+-#: dnf/base.py:2420
++#: dnf/base.py:2434
+ #, python-format
+ msgid ". Failing package is: %s"
+ msgstr ". 失败的软件包是:%s"
+ 
+-#: dnf/base.py:2421
++#: dnf/base.py:2435
+ #, python-format
+ msgid "GPG Keys are configured as: %s"
+ msgstr "GPG密钥配置为:%s"
+ 
+-#: dnf/base.py:2433
++#: dnf/base.py:2447
+ #, python-format
+ msgid "GPG key at %s (0x%s) is already installed"
+ msgstr "%s 的 GPG 公钥(0x%s)已安装"
+ 
+-#: dnf/base.py:2469
++#: dnf/base.py:2483
+ msgid "The key has been approved."
+ msgstr "密钥已被确认。"
+ 
+-#: dnf/base.py:2472
++#: dnf/base.py:2486
+ msgid "The key has been rejected."
+ msgstr "密钥已被拒绝。"
+ 
+-#: dnf/base.py:2505
++#: dnf/base.py:2519
+ #, python-format
+ msgid "Key import failed (code %d)"
+ msgstr "导入公钥失败(代码 %d)"
+ 
+-#: dnf/base.py:2507
++#: dnf/base.py:2521
+ msgid "Key imported successfully"
+ msgstr "导入公钥成功"
+ 
+-#: dnf/base.py:2511
++#: dnf/base.py:2525
+ msgid "Didn't install any keys"
+ msgstr "没有安装任何公钥"
+ 
+-#: dnf/base.py:2514
++#: dnf/base.py:2528
+ #, python-format
+ msgid ""
+-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
++"The GPG keys listed for the \"%s\" repository are already installed but they "
++"are not correct for this package.\n"
+ "Check that the correct key URLs are configured for this repository."
+ msgstr ""
+ "仓库 \"%s\" 的 GPG 公钥已安装,但是不适用于此软件包。\n"
+ "请检查此仓库的公钥 URL 是否配置正确。"
+ 
+-#: dnf/base.py:2525
++#: dnf/base.py:2539
+ msgid "Import of key(s) didn't help, wrong key(s)?"
+ msgstr "导入的密钥没有公钥,错误的公钥?"
+ 
+-#: dnf/base.py:2578
++#: dnf/base.py:2592
+ msgid "  * Maybe you meant: {}"
+ msgstr "  * 可能您的意思是:{}"
+ 
+-#: dnf/base.py:2610
++#: dnf/base.py:2624
+ msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
+ msgstr "软件包 \"{}\"(来自于本地仓库 \"{}\")的 checksum 不正确"
+ 
+-#: dnf/base.py:2613
++#: dnf/base.py:2627
+ msgid "Some packages from local repository have incorrect checksum"
+ msgstr "本地仓库的一些软件包校验值(checksum)不正确,无法确定软件包完整"
+ 
+-#: dnf/base.py:2616
++#: dnf/base.py:2630
+ msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
+ msgstr "软件包 \"{}\"(来自仓库 \"{}\")的 checksum 不正确"
+ 
+-#: dnf/base.py:2619
++#: dnf/base.py:2633
+ msgid ""
+ "Some packages have invalid cache, but cannot be downloaded due to \"--"
+ "cacheonly\" option"
+ msgstr "以下软件包有无效缓存,因为使用了 \"--cacheonly\" 选项不能下载"
+ 
+-#: dnf/base.py:2637 dnf/base.py:2657
++#: dnf/base.py:2651 dnf/base.py:2671
+ msgid "No match for argument"
+ msgstr "未找到匹配的参数"
+ 
+-#: dnf/base.py:2645 dnf/base.py:2665
++#: dnf/base.py:2659 dnf/base.py:2679
+ msgid "All matches were filtered out by exclude filtering for argument"
+ msgstr "由于您的搜索参数,所有相关结果都已被滤掉"
+ 
+-#: dnf/base.py:2647
++#: dnf/base.py:2661
+ msgid "All matches were filtered out by modular filtering for argument"
+ msgstr "所有的匹配结果均已经被参数的模块化过滤条件筛除"
+ 
+-#: dnf/base.py:2663
++#: dnf/base.py:2677
+ msgid "All matches were installed from a different repository for argument"
+ msgstr "已从另一个仓库安装了参数的所有匹配"
+ 
+-#: dnf/base.py:2710
++#: dnf/base.py:2724
+ #, python-format
+ msgid "Package %s is already installed."
+ msgstr "软件包 %s 已安装。"
+@@ -555,7 +556,7 @@ msgstr "软件包 %s 已安装。"
+ msgid "Unexpected value of environment variable: DNF_DISABLE_ALIASES=%s"
+ msgstr "该环境变量具有错误的值:DNF_DISABLE_ALIASES=%s"
+ 
+-#: dnf/cli/aliases.py:105 dnf/conf/config.py:457
++#: dnf/cli/aliases.py:105 dnf/conf/config.py:475
+ #, python-format
+ msgid "Parsing file \"%s\" failed: %s"
+ msgstr "解析文件 \"%s\" 失败:%s"
+@@ -600,11 +601,15 @@ msgstr "这个操作会把模块 '{0}' 从流 '{1}' 切换到流 '{2}'"
+ #: dnf/cli/cli.py:173
+ #, python-brace-format
+ msgid ""
+-"It is not possible to switch enabled streams of a module unless explicitly enabled via configuration option module_stream_switch.\n"
+-"It is recommended to rather remove all installed content from the module, and reset the module using '{prog} module reset <module_name>' command. After you reset the module, you can install the other stream."
++"It is not possible to switch enabled streams of a module unless explicitly "
++"enabled via configuration option module_stream_switch.\n"
++"It is recommended to rather remove all installed content from the module, "
++"and reset the module using '{prog} module reset <module_name>' command. "
++"After you reset the module, you can install the other stream."
+ msgstr ""
+ "无法切换已启用模块的流,除非显式的通过配置选项 module_stream_switch 启用。\n"
+-"推荐直接移除来自模块的所有已安装内容,然后通过 '{prog} module reset <module_name>' 命令重置模块。在您重置模块之后,就可以安装其他的流。"
++"推荐直接移除来自模块的所有已安装内容,然后通过 '{prog} module reset "
++"<module_name>' 命令重置模块。在您重置模块之后,就可以安装其他的流。"
+ 
+ #: dnf/cli/cli.py:212
+ #, python-brace-format
+@@ -707,8 +712,8 @@ msgstr "没有仓库匹配: %s"
+ 
+ #: dnf/cli/cli.py:719
+ msgid ""
+-"This command has to be run with superuser privileges (under the root user on"
+-" most systems)."
++"This command has to be run with superuser privileges (under the root user on "
++"most systems)."
+ msgstr "运行此命令需要管理员特权(多数系统下是root用户)。"
+ 
+ #: dnf/cli/cli.py:749
+@@ -735,21 +740,24 @@ msgid ""
+ "--destdir or --downloaddir must be used with --downloadonly or download or "
+ "system-upgrade command."
+ msgstr ""
+-"--destdir 或 --downloaddir 必须和 --downloadonly 或 download 或 system-upgrade "
+-"命令一起使用。"
++"--destdir 或 --downloaddir 必须和 --downloadonly 或 download 或 system-"
++"upgrade 命令一起使用。"
+ 
+ #: dnf/cli/cli.py:820
+ msgid ""
+ "--enable, --set-enabled and --disable, --set-disabled must be used with "
+ "config-manager command."
+ msgstr ""
+-"--enable、--set-enabled 和 --disable、--set-disabled 必须和 config-manager 命令一起使用。"
++"--enable、--set-enabled 和 --disable、--set-disabled 必须和 config-manager 命"
++"令一起使用。"
+ 
+ #: dnf/cli/cli.py:902
+ msgid ""
+ "Warning: Enforcing GPG signature check globally as per active RPM security "
+ "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)"
+-msgstr "警告:由于活动的RPM安全策略,强制执行全局GPG签名检查 (请参照dnf.conf(5)中的'gpgcheck'以了解如何阻止这条信息)"
++msgstr ""
++"警告:由于活动的RPM安全策略,强制执行全局GPG签名检查 (请参照dnf.conf(5)中"
++"的'gpgcheck'以了解如何阻止这条信息)"
+ 
+ #: dnf/cli/cli.py:922
+ msgid "Config file \"{}\" does not exist"
+@@ -800,7 +808,8 @@ msgstr "RPM 数据库可能出错,请尝试运行'%s'进行恢复。"
+ #, python-brace-format
+ msgid ""
+ "You have enabled checking of packages via GPG keys. This is a good thing.\n"
+-"However, you do not have any GPG public keys installed. You need to download\n"
++"However, you do not have any GPG public keys installed. You need to "
++"download\n"
+ "the keys for packages you wish to install and install them.\n"
+ "You can do that by running the command:\n"
+ "    rpm --import public.gpg.key\n"
+@@ -1140,7 +1149,8 @@ msgstr "正在等待 pid 为%d的进程退出。"
+ msgid ""
+ "[deprecated, use repoquery --deplist] List package's dependencies and what "
+ "packages provide them"
+-msgstr "[已弃用,请使用 repoquery --deplist] 列出软件包的依赖关系和提供这些软件包的源"
++msgstr ""
++"[已弃用,请使用 repoquery --deplist] 列出软件包的依赖关系和提供这些软件包的源"
+ 
+ #: dnf/cli/commands/distrosync.py:32
+ msgid "synchronize installed packages to the latest available versions"
+@@ -1242,12 +1252,12 @@ msgstr "显示或使用事务历史"
+ 
+ #: dnf/cli/commands/history.py:66
+ msgid "For the store command, file path to store the transaction to"
+-msgstr "对于 store 命令,将事务保存到的文件路径"
++msgstr "对于 store 命令,要将事务保存到的文件路径"
+ 
+ #: dnf/cli/commands/history.py:68
+ msgid ""
+-"For the replay command, don't check for installed packages matching those in"
+-" transaction"
++"For the replay command, don't check for installed packages matching those in "
++"transaction"
+ msgstr "对于 replay 命令,不要检查已安装的包是否与事务中符合"
+ 
+ #: dnf/cli/commands/history.py:71
+@@ -1258,8 +1268,8 @@ msgstr "对于 replay 命令,不要检查被拉入事务的额外的包"
+ 
+ #: dnf/cli/commands/history.py:74
+ msgid ""
+-"For the replay command, skip packages that are not available or have missing"
+-" dependencies"
++"For the replay command, skip packages that are not available or have missing "
++"dependencies"
+ msgstr "对于 replay 命令,跳过不可用或者缺少依赖项的软件包"
+ 
+ #: dnf/cli/commands/history.py:94
+@@ -1290,8 +1300,8 @@ msgstr "你没有权限访问历史数据库:%s"
+ #: dnf/cli/commands/history.py:151
+ #, python-format
+ msgid ""
+-"Cannot undo transaction %s, doing so would result in an inconsistent package"
+-" database."
++"Cannot undo transaction %s, doing so would result in an inconsistent package "
++"database."
+ msgstr "无法撤销事务 %s,这样做将可能导致不一致的软件包数据库。"
+ 
+ #: dnf/cli/commands/history.py:156
+@@ -1439,8 +1449,8 @@ msgstr "软件包 %s 尚未安装。"
+ 
+ #: dnf/cli/commands/module.py:54
+ msgid ""
+-"Only module name, stream, architecture or profile is used. Ignoring unneeded"
+-" information in argument: '{}'"
++"Only module name, stream, architecture or profile is used. Ignoring unneeded "
++"information in argument: '{}'"
+ msgstr "仅使用模块名称、流、架构或者配置文件。忽略参数中不需要的信息:'{}'"
+ 
+ #: dnf/cli/commands/module.py:80
+@@ -1609,15 +1619,15 @@ msgstr "禁用"
+ 
+ #: dnf/cli/commands/repolist.py:162
+ msgid "Repo-id            : "
+-msgstr "Repo-id            : "
++msgstr "仓库ID            : "
+ 
+ #: dnf/cli/commands/repolist.py:163
+ msgid "Repo-name          : "
+-msgstr "Repo-name          : "
++msgstr "仓库名称          : "
+ 
+ #: dnf/cli/commands/repolist.py:166
+ msgid "Repo-status        : "
+-msgstr "Repo-status        : "
++msgstr "仓库状态        : "
+ 
+ #: dnf/cli/commands/repolist.py:169
+ msgid "Repo-revision      : "
+@@ -1679,11 +1689,11 @@ msgstr "Repo-include       : "
+ #. TRANSLATORS: Number of packages that where excluded (5)
+ #: dnf/cli/commands/repolist.py:232
+ msgid "Repo-excluded      : "
+-msgstr "Repo-excluded      : "
++msgstr "排除的仓库      : "
+ 
+ #: dnf/cli/commands/repolist.py:236
+ msgid "Repo-filename      : "
+-msgstr "Repo-filename      : "
++msgstr "仓库文件名      : "
+ 
+ #. Work out the first (id) and last (enabled/disabled/count),
+ #. then chop the middle (name)...
+@@ -1734,7 +1744,9 @@ msgstr "只显示与 REQ 冲突的结果"
+ msgid ""
+ "shows results that requires, suggests, supplements, enhances,or recommends "
+ "package provides and files REQ"
+-msgstr "选择 requires、suggest、supplement、enhance 或 recommend 软件包提供和文件 REQ 的结果"
++msgstr ""
++"选择 requires、suggest、supplement、enhance 或 recommend 软件包提供和文件 "
++"REQ 的结果"
+ 
+ #: dnf/cli/commands/repoquery.py:139
+ msgid "show only results that obsolete REQ"
+@@ -1823,9 +1835,11 @@ msgstr "显示软件包的 changelogs"
+ #: dnf/cli/commands/repoquery.py:194
+ #, python-format, python-brace-format
+ msgid ""
+-"display format for listing packages: \"%%{name} %%{version} ...\", use "
+-"--querytags to view full tag list"
+-msgstr "软件包列表的显示格式 : \"%%{name} %%{version} ...\", 使用 --querytags 参数来查看完整的标签列表"
++"display format for listing packages: \"%%{name} %%{version} ...\", use --"
++"querytags to view full tag list"
++msgstr ""
++"软件包列表的显示格式 : \"%%{name} %%{version} ...\", 使用 --querytags 参数来"
++"查看完整的标签列表"
+ 
+ #: dnf/cli/commands/repoquery.py:198
+ msgid "show available tags to use with --queryformat"
+@@ -1835,13 +1849,16 @@ msgstr "显示可被 --queryformat 使用的标签"
+ msgid ""
+ "use name-epoch:version-release.architecture format for displaying found "
+ "packages (default)"
+-msgstr "使用 name-epoch:version-release.architecture 的格式来输出找到的软件包(默认格式)"
++msgstr ""
++"使用 name-epoch:version-release.architecture 的格式来输出找到的软件包(默认格"
++"式)"
+ 
+ #: dnf/cli/commands/repoquery.py:205
+ msgid ""
+ "use name-version-release format for displaying found packages (rpm query "
+ "default)"
+-msgstr "使用 name-version-release 的格式来输出找到的软件包(rpm 查询的默认格式)"
++msgstr ""
++"使用 name-version-release 的格式来输出找到的软件包(rpm 查询的默认格式)"
+ 
+ #: dnf/cli/commands/repoquery.py:211
+ msgid ""
+@@ -1877,7 +1894,9 @@ msgstr "显示与该软件包冲突的功能。"
+ msgid ""
+ "Display capabilities that the package can depend on, enhance, recommend, "
+ "suggest, and supplement."
+-msgstr "显示软件包可用在其中 depend on、enhance、recommend、suggest 和 supplement 的功能。"
++msgstr ""
++"显示软件包可用在其中 depend on、enhance、recommend、suggest 和 supplement 的"
++"功能。"
+ 
+ #: dnf/cli/commands/repoquery.py:236
+ msgid "Display capabilities that the package can enhance."
+@@ -1902,8 +1921,8 @@ msgid ""
+ "running %%pre and %%post scriptlets. If the package is installed display "
+ "capabilities that is depends for %%pre, %%post, %%preun and %%postun."
+ msgstr ""
+-"如果未安装软件包,则显示执行 %%pre 和 %%post 脚本所依赖的功能。如果已经了安装软件包,则显示执行 %%pre、%%post、%%preun"
+-" 和 %%postun 脚本所依赖的功能。"
++"如果未安装软件包,则显示执行 %%pre 和 %%post 脚本所依赖的功能。如果已经了安装"
++"软件包,则显示执行 %%pre、%%post、%%preun 和 %%postun 脚本所依赖的功能。"
+ 
+ #: dnf/cli/commands/repoquery.py:243
+ msgid "Display capabilities that the package suggests."
+@@ -1952,22 +1971,23 @@ msgstr "搜索所用的关键词"
+ 
+ #: dnf/cli/commands/repoquery.py:295
+ msgid ""
+-"Option '--resolve' has to be used together with one of the '--conflicts', '"
+-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--"
++"Option '--resolve' has to be used together with one of the '--conflicts', '--"
++"depends', '--enhances', '--provides', '--recommends', '--requires', '--"
+ "requires-pre', '--suggests' or '--supplements' options"
+ msgstr ""
+-"选项 '--resolve' 需要和 '--conflicts'、'--depends'、'--enhances'、'--provides'、'--"
+-"recommends'、'--requires'、'--requires-pre'、'--suggests' 或 '--supplements' "
+-"选项之一一起使用"
++"选项 '--resolve' 需要和 '--conflicts'、'--depends'、'--enhances'、'--"
++"provides'、'--recommends'、'--requires'、'--requires-pre'、'--suggests' 或 "
++"'--supplements' 选项之一一起使用"
+ 
+ #: dnf/cli/commands/repoquery.py:305
+ msgid ""
+ "Option '--recursive' has to be used with '--whatrequires <REQ>' (optionally "
+-"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> "
+-"--resolve'"
++"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> --"
++"resolve'"
+ msgstr ""
+-"选项 '--recursive' 需要和 '--whatrequires <REQ>' 一起使用(以及可选的 '--alldeps',但不能是 '--"
+-"exactdeps'),或和 '--requires <REQ> --resolve' 一起使用"
++"选项 '--recursive' 需要和 '--whatrequires <REQ>' 一起使用(以及可选的 '--"
++"alldeps',但不能是 '--exactdeps'),或和 '--requires <REQ> --resolve' 一起使"
++"用"
+ 
+ #: dnf/cli/commands/repoquery.py:312
+ msgid "argument {} requires --whatrequires or --whatdepends option"
+@@ -1981,13 +2001,17 @@ msgstr "软件包 {} 不包含文件"
+ #, python-brace-format
+ msgid ""
+ "No valid switch specified\n"
+-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--"
++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--"
++"tree]\n"
+ "\n"
+ "description:\n"
+ "  For the given packages print a tree of thepackages."
+ msgstr ""
+ "没有指定有效参数\n"
+-"用法:{prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"用法:{prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--"
++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--"
++"tree]\n"
+ "\n"
+ "描述:\n"
+ "  对于指定的软件包,打印此软件包的树状图。"
+@@ -2027,8 +2051,7 @@ msgstr "描述"
+ msgid "URL"
+ msgstr "URL"
+ 
+-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary
+-#. & URL)
++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL)
+ #: dnf/cli/commands/search.py:76
+ msgid " & "
+ msgstr " 和 "
+@@ -2546,7 +2569,9 @@ msgstr "错误输出级别"
+ msgid ""
+ "enables {prog}'s obsoletes processing logic for upgrade or display "
+ "capabilities that the package obsoletes for info, list and repoquery"
+-msgstr "对 upgrade 启用 {prog} 的过期处理逻辑,或对 info、list 和 repoquery 启用软件包过期的显示功能"
++msgstr ""
++"对 upgrade 启用 {prog} 的过期处理逻辑,或对 info、list 和 repoquery 启用软件"
++"包过期的显示功能"
+ 
+ #: dnf/cli/option_parser.py:251
+ msgid "debugging output level for rpm"
+@@ -2568,8 +2593,8 @@ msgstr "启用附加仓库。列出选项。支持通配符,可以指定多次
+ 
+ #: dnf/cli/option_parser.py:266
+ msgid ""
+-"Disable repositories. List option. Supports globs, can be specified multiple"
+-" times."
++"Disable repositories. List option. Supports globs, can be specified multiple "
++"times."
+ msgstr "停用仓库。列出选项。支持通配符,可指定多次。"
+ 
+ #: dnf/cli/option_parser.py:270
+@@ -2598,7 +2623,8 @@ msgstr "禁用 excludepkgs"
+ msgid ""
+ "label and path to an additional repository to use (same path as in a "
+ "baseurl), can be specified multiple times."
+-msgstr "附加仓库所要使用的标签和路径(与 baseurl 中的路径一致),可以指定多次。"
++msgstr ""
++"附加仓库所要使用的标签和路径(与 baseurl 中的路径一致),可以指定多次。"
+ 
+ #: dnf/cli/option_parser.py:297
+ msgid "disable removal of dependencies that are no longer used"
+@@ -3161,7 +3187,7 @@ msgstr "总计"
+ 
+ #: dnf/cli/output.py:1466
+ msgid "<unset>"
+-msgstr "<空>"
++msgstr "<unset>"
+ 
+ #: dnf/cli/output.py:1467
+ msgid "System"
+@@ -3451,10 +3477,6 @@ msgstr "    已启动: %s - %s之前"
+ msgid "    State  : %s"
+ msgstr "    状态  : %s"
+ 
+-#: dnf/comps.py:104
+-msgid "skipping."
+-msgstr "正在跳过。"
+-
+ #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706
+ #, python-format
+ msgid "Module or Group '%s' is not installed."
+@@ -3505,11 +3527,15 @@ msgstr "解析 “%s” 时错误: %s"
+ msgid "Invalid configuration value: %s=%s in %s; %s"
+ msgstr "无效配置值: %s=%s 在 %s 中; %s"
+ 
+-#: dnf/conf/config.py:226
++#: dnf/conf/config.py:194
++msgid "Cannot set \"{}\" to \"{}\": {}"
++msgstr "无法将 \"{}\" 设置为 \"{}\": {}"
++
++#: dnf/conf/config.py:244
+ msgid "Could not set cachedir: {}"
+ msgstr "不能设置 cachedir: {}"
+ 
+-#: dnf/conf/config.py:275
++#: dnf/conf/config.py:293
+ msgid ""
+ "Configuration file URL \"{}\" could not be downloaded:\n"
+ "  {}"
+@@ -3517,31 +3543,31 @@ msgstr ""
+ "配置文件的 URL \"{}\" 无法下载:\n"
+ "  {}"
+ 
+-#: dnf/conf/config.py:355 dnf/conf/config.py:391
++#: dnf/conf/config.py:373 dnf/conf/config.py:409
+ #, python-format
+ msgid "Unknown configuration option: %s = %s"
+ msgstr "未知配置选项: %s = %s"
+ 
+-#: dnf/conf/config.py:372
++#: dnf/conf/config.py:390
+ #, python-format
+ msgid "Error parsing --setopt with key '%s', value '%s': %s"
+ msgstr "解析 --setopt 时出现错误,键为 '%s',值是 '%s': %s"
+ 
+-#: dnf/conf/config.py:380
++#: dnf/conf/config.py:398
+ #, python-format
+ msgid "Main config did not have a %s attr. before setopt"
+ msgstr "主配置在 setopt 前没有一个 %s 属性"
+ 
+-#: dnf/conf/config.py:427 dnf/conf/config.py:445
++#: dnf/conf/config.py:445 dnf/conf/config.py:463
+ msgid "Incorrect or unknown \"{}\": {}"
+ msgstr "不正确或未知的 \"{}\": {}"
+ 
+-#: dnf/conf/config.py:501
++#: dnf/conf/config.py:519
+ #, python-format
+ msgid "Error parsing --setopt with key '%s.%s', value '%s': %s"
+ msgstr "解析 --setopt 时出现错误,键为 '%s.%s', 值是 '%s': %s"
+ 
+-#: dnf/conf/config.py:504
++#: dnf/conf/config.py:522
+ #, python-format
+ msgid "Repo %s did not have a %s attr. before setopt"
+ msgstr "Repo %s 在 setopt 前没有一个 %s 属性"
+@@ -3611,7 +3637,7 @@ msgstr "对于模块软件包 '{}' 没有可用的模块元数据,它将不能
+ #: dnf/db/group.py:353
+ #, python-format
+ msgid "An rpm exception occurred: %s"
+-msgstr "rpm 出现了一个异常:%s"
++msgstr "发生了 rpm 异常:%s"
+ 
+ #: dnf/db/group.py:355
+ msgid "No available modular metadata for modular package"
+@@ -3622,32 +3648,32 @@ msgstr "对于模块软件包没有可用的模块元数据"
+ msgid "Will not install a source rpm package (%s)."
+ msgstr "将不安装一个源码 RPM 软件包 (%s)。"
+ 
+-#: dnf/dnssec.py:168
++#: dnf/dnssec.py:171
+ msgid ""
+ "Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
+ msgstr "配置文件选项 'gpgkey_dns_verification' 要求 python3-unbound ({})"
+ 
+-#: dnf/dnssec.py:239
++#: dnf/dnssec.py:243
+ msgid "DNSSEC extension: Key for user "
+ msgstr "DNSSEC 扩展 : 用户的密钥 "
+ 
+-#: dnf/dnssec.py:241
++#: dnf/dnssec.py:245
+ msgid "is valid."
+ msgstr "有效。"
+ 
+-#: dnf/dnssec.py:243
++#: dnf/dnssec.py:247
+ msgid "has unknown status."
+ msgstr "具有未知的状态。"
+ 
+-#: dnf/dnssec.py:251
++#: dnf/dnssec.py:255
+ msgid "DNSSEC extension: "
+ msgstr "DNSSEC 扩展 : "
+ 
+-#: dnf/dnssec.py:283
++#: dnf/dnssec.py:287
+ msgid "Testing already imported keys for their validity."
+ msgstr "测试已导入的密钥以检查有效性。"
+ 
+-#: dnf/drpm.py:62 dnf/repo.py:268
++#: dnf/drpm.py:62 dnf/repo.py:267
+ #, python-format
+ msgid "unsupported checksum type: %s"
+ msgstr "不支持的校验类型: %s"
+@@ -3689,7 +3715,7 @@ msgid "Modular dependency problem with Defaults:"
+ msgid_plural "Modular dependency problems with Defaults:"
+ msgstr[0] "默认设置中的模块依赖问题 :"
+ 
+-#: dnf/exceptions.py:131 dnf/module/module_base.py:854
++#: dnf/exceptions.py:131 dnf/module/module_base.py:857
+ msgid "Modular dependency problem:"
+ msgid_plural "Modular dependency problems:"
+ msgstr[0] "模块依赖问题:"
+@@ -3698,10 +3724,12 @@ msgstr[0] "模块依赖问题:"
+ #, python-format
+ msgid ""
+ "Malformed lock file found: %s.\n"
+-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf."
++"Ensure no other dnf/yum process is running and remove the lock file manually "
++"or run systemd-tmpfiles --remove dnf.conf."
+ msgstr ""
+ "发现损坏的锁文件 : %s。\n"
+-"请确保没有其他 dnf/yum 进程正在运行,并手工删除锁文件,或执行 systemd-tmpfiles --remove dnf.conf 。"
++"请确保没有其他 dnf/yum 进程正在运行,并手工删除锁文件,或执行 systemd-"
++"tmpfiles --remove dnf.conf 。"
+ 
+ #: dnf/module/__init__.py:26
+ msgid "Enabling different stream for '{}'."
+@@ -3784,19 +3812,19 @@ msgstr ""
+ "提示 : [d]默认, [e]启用, [x]禁用, [i]已安装的, [a]活跃的"
+ 
+ #: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+-#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
++#: dnf/module/module_base.py:615 dnf/module/module_base.py:684
+ msgid "Ignoring unnecessary profile: '{}/{}'"
+ msgstr "正在忽略无用的配置文件'{}/{}'"
+ 
+ #: dnf/module/module_base.py:86
+ #, python-brace-format
+ msgid "All matches for argument '{0}' in module '{1}:{2}' are not active"
+-msgstr "模块 '{1}:{2}' 中参数 '{0}' 的所有匹配项目都未激活"
++msgstr "模块 '{1}:{2}' 中参数 '{0}' 的所有匹配项都未处于活动状态"
+ 
+ #: dnf/module/module_base.py:94 dnf/module/module_base.py:204
+ #, python-brace-format
+ msgid "Installing module '{0}' from Fail-Safe repository {1} is not allowed"
+-msgstr "不允许从失效保险仓库 {1} 安装模块 '{0}'"
++msgstr "不允许从自动防故障仓库 {1} 安装模块 '{0}'"
+ 
+ #: dnf/module/module_base.py:104 dnf/module/module_base.py:214
+ msgid ""
+@@ -3821,12 +3849,12 @@ msgstr "默认配置文件 {} 在模块 {}:{} 中不可用"
+ 
+ #: dnf/module/module_base.py:144 dnf/module/module_base.py:247
+ msgid "Installing module from Fail-Safe repository is not allowed"
+-msgstr "不允许从失效保险仓库中安装模块"
++msgstr "不允许从自动防故障仓库安装模块"
+ 
+ #: dnf/module/module_base.py:196
+ #, python-brace-format
+ msgid "No active matches for argument '{0}' in module '{1}:{2}'"
+-msgstr "模块 '{1}:{2}' 中的参数 '{0}' 没有已激活的匹配项目"
++msgstr "模块 '{1}:{2}' 中的参数 '{0}' 没有活动匹配项"
+ 
+ #: dnf/module/module_base.py:228
+ #, python-brace-format
+@@ -3840,14 +3868,14 @@ msgstr "软件包名称 '{}' 没有可用的软件包用于 distrosync"
+ #: dnf/module/module_base.py:310 dnf/module/module_base.py:461
+ #: dnf/module/module_base.py:486 dnf/module/module_base.py:505
+ #: dnf/module/module_base.py:552 dnf/module/module_base.py:611
+-#: dnf/module/module_base.py:677 dnf/module/module_base.py:840
++#: dnf/module/module_base.py:680 dnf/module/module_base.py:843
+ msgid "Unable to resolve argument {}"
+ msgstr "无法解析参数 {}"
+ 
+ #: dnf/module/module_base.py:321
+ #, python-brace-format
+ msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed"
+-msgstr "不允许从失效保险仓库 {1} 中升级模块 '{0}'"
++msgstr "不允许从自动防故障仓库 {1} 升级模块 '{0}'"
+ 
+ #: dnf/module/module_base.py:340 dnf/module/module_base.py:368
+ msgid "Unable to match profile in argument {}"
+@@ -3855,24 +3883,23 @@ msgstr "无法匹配参数 {} 中的配置档案"
+ 
+ #: dnf/module/module_base.py:348
+ msgid "Upgrading module from Fail-Safe repository is not allowed"
+-msgstr "不允许从失效保险仓库中升级模块"
++msgstr "不允许从自动防故障仓库升级模块"
+ 
+ #: dnf/module/module_base.py:422
+ #, python-brace-format
+ msgid ""
+-"Argument '{argument}' matches {stream_count} streams ('{streams}') of module"
+-" '{module}', but none of the streams are enabled or default"
++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module "
++"'{module}', but none of the streams are enabled or default"
+ msgstr ""
+-"参数 '{argument}' 可以匹配模块 '{module}' 的 {stream_count} "
+-"个流('{streams}'),但是这些流都未被启用或非默认"
++"参数 '{argument}' 匹配模块 '{module}' 的 {stream_count} 流 ('{streams}') "
++",但是这些流都未被启用或为默认"
+ 
+ #: dnf/module/module_base.py:509
+ msgid ""
+-"Only module name is required. Ignoring unneeded information in argument: "
+-"'{}'"
++"Only module name is required. Ignoring unneeded information in argument: '{}'"
+ msgstr "只需要模块名。正在忽略'{}'中的无用信息"
+ 
+-#: dnf/module/module_base.py:841
++#: dnf/module/module_base.py:844
+ msgid "No match for package {}"
+ msgstr "没有和{}匹配的软件包"
+ 
+@@ -3933,7 +3960,7 @@ msgid "Already downloaded"
+ msgstr "已下载"
+ 
+ #. pinging mirrors, this might take a while
+-#: dnf/repo.py:347
++#: dnf/repo.py:346
+ #, python-format
+ msgid "determining the fastest mirror (%s hosts).. "
+ msgstr "正在查找最快的镜像(%s 的主机) "
+@@ -3949,16 +3976,23 @@ msgid "Added %s repo from %s"
+ msgstr "已添加 %s 仓库来自 %s"
+ 
+ #: dnf/rpm/miscutils.py:32
+-#, fuzzy, python-format
+-#| msgid "Cannot find rpmkeys executable to verify signatures."
++#, python-format
+ msgid "Using rpmkeys executable at %s to verify signatures"
+-msgstr "无法找到 rpmkeys 的可执行文件以验证签名。"
++msgstr "使用 %s 处的 rpmkeys 可执行文件来验证签名"
+ 
+ #: dnf/rpm/miscutils.py:66
+ msgid "Cannot find rpmkeys executable to verify signatures."
+ msgstr "无法找到 rpmkeys 的可执行文件以验证签名。"
+ 
+-#: dnf/rpm/transaction.py:119
++#: dnf/rpm/transaction.py:70
++msgid "The openDB() function connot open rpm database."
++msgstr "openDB()函数不能打开 rpm 数据库。"
++
++#: dnf/rpm/transaction.py:75
++msgid "The dbCookie() function did not return cookie of rpm database."
++msgstr "dbCookie()函数没有返回 rpm 数据库的 cookie。"
++
++#: dnf/rpm/transaction.py:135
+ msgid "Errors occurred during test transaction."
+ msgstr "测试事务过程中出现错误。"
+ 
+@@ -3966,7 +4000,8 @@ msgstr "测试事务过程中出现错误。"
+ msgid ""
+ "allow_vendor_change is disabled. This option is currently not supported for "
+ "downgrade and distro-sync commands"
+-msgstr "allow_vendor_change 被禁用。此选项目前不支持 downgrade 和 distro-sync 命令"
++msgstr ""
++"allow_vendor_change 被禁用。此选项目前不支持 downgrade 和 distro-sync 命令"
+ 
+ #. TRANSLATORS: This is for a single package currently being downgraded.
+ #: dnf/transaction.py:80
+@@ -4064,8 +4099,9 @@ msgstr "在 rpm 中缺少对象键 \"{key}\"。"
+ 
+ #: dnf/transaction_sr.py:289
+ #, python-brace-format
+-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
+-msgstr "rpm nevra \"{nevra}\" 的软件包原因 \"{reason}\" 的值无效。"
++msgid ""
++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
++msgstr "rpm nevra \"{nevra}\" 的软件包原因 \"{reason}\" 的意外值。"
+ 
+ #: dnf/transaction_sr.py:297
+ #, python-brace-format
+@@ -4080,24 +4116,25 @@ msgstr "无法找到 rpm nevra \"{nevra}\"。"
+ #: dnf/transaction_sr.py:336
+ #, python-brace-format
+ msgid "Package \"{na}\" is already installed for action \"{action}\"."
+-msgstr "已为操作 \"{action}\" 安装了软件包 \"{na}\"。"
++msgstr "操作 \"{action}\" 的软件包 \"{na}\"已安装。"
+ 
+ #: dnf/transaction_sr.py:345
+ #, python-brace-format
+ msgid ""
+ "Package nevra \"{nevra}\" not available in repositories for action "
+ "\"{action}\"."
+-msgstr "对于操作 \"{action}\",软件包 nevra \"{nevra}\" 没有包括在仓库中。"
++msgstr "对于操作 \"{action}\",软件包 nevra \"{nevra}\" 未在软件仓库中提供。"
+ 
+ #: dnf/transaction_sr.py:356
+ #, python-brace-format
+ msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"."
+-msgstr "软件包 nevra \"{nevra}\" 没有为操作 \"{action}\" 安装。"
++msgstr "没有为操作 \"{action}\" 安装软件包 nevra \"{nevra}\" 。"
+ 
+ #: dnf/transaction_sr.py:370
+ #, python-brace-format
+-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
+-msgstr "rpm nevra \"{nevra}\" 的软件包操作 \"{action}\" 无效。"
++msgid ""
++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
++msgstr "rpm nevra \"{nevra}\" 的软件包操作 \"{action}\" 的意外值。"
+ 
+ #: dnf/transaction_sr.py:377
+ #, python-format
+@@ -4125,8 +4162,8 @@ msgid ""
+ "Invalid value \"{group_type}\" of environments.groups.group_type, only "
+ "\"mandatory\" or \"optional\" is supported."
+ msgstr ""
+-"environments.groups.group_type 的值 \"{group_type}\" 无效,仅支持 \"mandatory\" 或者 "
+-"\"optional\"。"
++"environments.groups.group_type 的值 \"{group_type}\" 无效,仅支持 \"mandatory"
++"\" 或者 \"optional\"。"
+ 
+ #: dnf/transaction_sr.py:464
+ #, python-brace-format
+@@ -4136,17 +4173,19 @@ msgstr "在 environment.groups 中缺少对象键 \"{key}\"。"
+ #: dnf/transaction_sr.py:542
+ #, python-brace-format
+ msgid "Unexpected value of group action \"{action}\" for group \"{group}\"."
+-msgstr "组 \"{group}\" 的组操作 \"{action}\" 的值无效。"
++msgstr "对组 \"{group}\" 的组操作 \"{action}\" 的意外值。"
+ 
+ #: dnf/transaction_sr.py:547
+ #, python-brace-format
+ msgid "Missing object key \"{key}\" in a group."
+-msgstr "在一个组中缺少对象键 \"{key}\"。"
++msgstr "在组中缺少对象键 \"{key}\"。"
+ 
+ #: dnf/transaction_sr.py:571
+ #, python-brace-format
+-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"."
+-msgstr "环境 \"{env}\" 的环境操作 \"{action}\" 的值无效。"
++msgid ""
++"Unexpected value of environment action \"{action}\" for environment "
++"\"{env}\"."
++msgstr "对环境 \"{env}\" 的环境操作 \"{action}\" 的意外值。"
+ 
+ #: dnf/transaction_sr.py:576
+ #, python-brace-format
+@@ -4156,8 +4195,8 @@ msgstr "在环境中缺少对象键 \"{key}\"。"
+ #: dnf/transaction_sr.py:615
+ #, python-brace-format
+ msgid ""
+-"Package nevra \"{nevra}\", which is not present in the transaction file, was"
+-" pulled into the transaction."
++"Package nevra \"{nevra}\", which is not present in the transaction file, was "
++"pulled into the transaction."
+ msgstr "软件包 nevra \"{nevra}\" 没有包括在事务文件中,但它被拉取到事务中。"
+ 
+ #: dnf/util.py:417 dnf/util.py:419
+@@ -4195,12 +4234,15 @@ msgstr "失败"
+ #. returns <name-unset> for everything that evaluates to False (None, empty..)
+ #: dnf/util.py:633
+ msgid "<name-unset>"
+-msgstr "<名称-未设定>"
++msgstr "<name-unset>"
++
++#~ msgid "skipping."
++#~ msgstr "正在跳过。"
+ 
+ #~ msgid ""
+ #~ "Using rpmkeys executable from {path} to verify signature for package: "
+ #~ "{package}."
+-#~ msgstr "使用来自 {path} 的 rpmkeys 可执行文件以验证此包的签名:{package}。"
++#~ msgstr "使用来自 {path} 的 rpmkeys 可执行代码验证软件包的签名:{package}。"
+ 
+ #~ msgid "%s: %s check failed: %s vs %s"
+ #~ msgstr "%s: %s 检查失败:%s vs %s"
+@@ -4227,5 +4269,6 @@ msgstr "<名称-未设定>"
+ #~ msgstr "错误的事务 ID 或软件包"
+ 
+ #~ msgid ""
+-#~ "Display capabilities that the package depends on for running a %%pre script."
++#~ "Display capabilities that the package depends on for running a %%pre "
++#~ "script."
+ #~ msgstr "显示软件包运行一个 %%pre 脚本所依赖的功能"
+diff --git a/po/zh_TW.po b/po/zh_TW.po
+index 8bf32e7d..d6f21e86 100644
+--- a/po/zh_TW.po
++++ b/po/zh_TW.po
+@@ -11,10 +11,11 @@ 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 11:37+0100\n"
+ "PO-Revision-Date: 2020-09-08 22:00+0000\n"
+ "Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
+-"Language-Team: Chinese (Traditional) <https://translate.fedoraproject.org/projects/dnf/dnf-master/zh_TW/>\n"
++"Language-Team: Chinese (Traditional) <https://translate.fedoraproject.org/"
++"projects/dnf/dnf-master/zh_TW/>\n"
+ "Language: zh_TW\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+@@ -196,82 +197,81 @@ msgstr "在 config 檔案中無效的 tsflag:%s"
+ msgid "Failed to add groups file for repository: %s - %s"
+ msgstr "為軟體庫建立群組檔案時失敗:%s - %s"
+ 
+-#: dnf/base.py:904
++#: dnf/base.py:922
+ msgid "Running transaction check"
+ msgstr "執行處理事項檢查"
+ 
+-#: dnf/base.py:912
++#: dnf/base.py:930
+ msgid "Error: transaction check vs depsolve:"
+ msgstr "錯誤:處理事項 check vs depsolve:"
+ 
+-#: dnf/base.py:918
++#: dnf/base.py:936
+ msgid "Transaction check succeeded."
+ msgstr "處理事項檢查成功。"
+ 
+-#: dnf/base.py:921
++#: dnf/base.py:939
+ msgid "Running transaction test"
+ msgstr "執行處理事項測試"
+ 
+-#: dnf/base.py:931 dnf/base.py:1082
++#: dnf/base.py:949 dnf/base.py:1100
+ msgid "RPM: {}"
+ msgstr "RPM:{}"
+ 
+-#: dnf/base.py:932
++#: dnf/base.py:950
+ msgid "Transaction test error:"
+ msgstr "處理事項測試錯誤:"
+ 
+-#: dnf/base.py:943
++#: dnf/base.py:961
+ msgid "Transaction test succeeded."
+ msgstr "處理事項測試成功。"
+ 
+-#: dnf/base.py:964
++#: dnf/base.py:982
+ msgid "Running transaction"
+ msgstr "執行處理事項"
+ 
+-#: dnf/base.py:1001
++#: dnf/base.py:1019
+ msgid "Disk Requirements:"
+ msgstr "需要磁碟:"
+ 
+-#: dnf/base.py:1004
++#: dnf/base.py:1022
+ #, python-brace-format
+ msgid "At least {0}MB more space needed on the {1} filesystem."
+ msgid_plural "At least {0}MB more space needed on the {1} filesystem."
+ msgstr[0] "{1} 檔案系統需要至少 {0}MB 以上的空間。"
+ 
+-#: dnf/base.py:1011
++#: dnf/base.py:1029
+ msgid "Error Summary"
+ msgstr "錯誤摘要"
+ 
+-#: dnf/base.py:1037
++#: dnf/base.py:1055
+ #, python-brace-format
+ msgid "RPMDB altered outside of {prog}."
+ msgstr "RPMDB 在 {prog} 外有變動。"
+ 
+-#: dnf/base.py:1083 dnf/base.py:1091
++#: dnf/base.py:1101 dnf/base.py:1109
+ msgid "Could not run transaction."
+ msgstr "無法執行處理事項。"
+ 
+-#: dnf/base.py:1086
++#: dnf/base.py:1104
+ msgid "Transaction couldn't start:"
+ msgstr "無法啓動處理事項:"
+ 
+-#: dnf/base.py:1100
++#: dnf/base.py:1118
+ #, python-format
+ msgid "Failed to remove transaction file %s"
+ msgstr "移除處理事項檔案 %s 失敗"
+ 
+-#: dnf/base.py:1182
++#: dnf/base.py:1200
+ msgid "Some packages were not downloaded. Retrying."
+ msgstr "有些軟體包未下載。重試。"
+ 
+-#: dnf/base.py:1212
++#: dnf/base.py:1230
+ #, fuzzy, python-format
+-#| msgid ""
+-#| "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
++#| msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
+ msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%.1f%% saved)"
+ msgstr "Delta RPM 已將更新所需從 %.1f MB 減少為 %.1f MB(節省 %d.1%%)"
+ 
+-#: dnf/base.py:1216
++#: dnf/base.py:1234
+ #, fuzzy, python-format
+ #| msgid ""
+ #| "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
+@@ -279,75 +279,75 @@ msgid ""
+ "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%.1f%% wasted)"
+ msgstr "失敗的 Delta RPM 已將更新所需從 %.1f MB 增加為 %.1f MB(浪費 %d.1%%)"
+ 
+-#: dnf/base.py:1258
++#: dnf/base.py:1276
+ msgid "Cannot add local packages, because transaction job already exists"
+ msgstr "因為已經有處理事項工作,無法加入本機軟體包"
+ 
+-#: dnf/base.py:1272
++#: dnf/base.py:1290
+ msgid "Could not open: {}"
+ msgstr "無法開啟:{}"
+ 
+-#: dnf/base.py:1310
++#: dnf/base.py:1328
+ #, python-format
+ msgid "Public key for %s is not installed"
+ msgstr "%s 的公鑰尚未安裝"
+ 
+-#: dnf/base.py:1314
++#: dnf/base.py:1332
+ #, python-format
+ msgid "Problem opening package %s"
+ msgstr "開啟 %s 軟體包時發生問題"
+ 
+-#: dnf/base.py:1322
++#: dnf/base.py:1340
+ #, python-format
+ msgid "Public key for %s is not trusted"
+ msgstr "%s 的公鑰未被信任"
+ 
+-#: dnf/base.py:1326
++#: dnf/base.py:1344
+ #, python-format
+ msgid "Package %s is not signed"
+ msgstr "%s 軟體包尚未簽名"
+ 
+-#: dnf/base.py:1356
++#: dnf/base.py:1374
+ #, python-format
+ msgid "Cannot remove %s"
+ msgstr "無法移除 %s"
+ 
+-#: dnf/base.py:1360
++#: dnf/base.py:1378
+ #, python-format
+ msgid "%s removed"
+ msgstr "已移除 %s"
+ 
+-#: dnf/base.py:1640
++#: dnf/base.py:1658
+ msgid "No match for group package \"{}\""
+ msgstr "找不到符合「{}」軟體包群組的項目"
+ 
+-#: dnf/base.py:1726
++#: dnf/base.py:1740
+ #, python-format
+ msgid "Adding packages from group '%s': %s"
+ msgstr "正在從群組「%s」加入軟體包:%s"
+ 
+-#: dnf/base.py:1749 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
++#: dnf/base.py:1763 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437
+ #: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587
+ #: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80
+ #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110
+ msgid "Nothing to do."
+ msgstr "無事可做。"
+ 
+-#: dnf/base.py:1767
++#: dnf/base.py:1781
+ msgid "No groups marked for removal."
+ msgstr "沒有標記為移除的群組。"
+ 
+-#: dnf/base.py:1801
++#: dnf/base.py:1815
+ msgid "No group marked for upgrade."
+ msgstr "沒有標記為升級的群組。"
+ 
+-#: dnf/base.py:2015
++#: dnf/base.py:2029
+ #, python-format
+ msgid "Package %s not installed, cannot downgrade it."
+ msgstr "尚未安裝軟體包 %s,所以無法降級。"
+ 
+-#: dnf/base.py:2017 dnf/base.py:2036 dnf/base.py:2049 dnf/base.py:2076
+-#: dnf/base.py:2129 dnf/base.py:2137 dnf/base.py:2271 dnf/cli/cli.py:417
++#: dnf/base.py:2031 dnf/base.py:2050 dnf/base.py:2063 dnf/base.py:2090
++#: dnf/base.py:2143 dnf/base.py:2151 dnf/base.py:2285 dnf/cli/cli.py:417
+ #: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477
+ #: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628
+ #: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147
+@@ -357,178 +357,179 @@ msgstr "尚未安裝軟體包 %s,所以無法降級。"
+ msgid "No match for argument: %s"
+ msgstr "引數不符:%s"
+ 
+-#: dnf/base.py:2024
++#: dnf/base.py:2038
+ #, python-format
+ msgid "Package %s of lower version already installed, cannot downgrade it."
+ msgstr "已經安裝較舊版本的軟體包 %s,所以無法降級。"
+ 
+-#: dnf/base.py:2047
++#: dnf/base.py:2061
+ #, python-format
+ msgid "Package %s not installed, cannot reinstall it."
+ msgstr "尚未安裝軟體包 %s,所以無法重新安裝。"
+ 
+-#: dnf/base.py:2062
++#: dnf/base.py:2076
+ #, python-format
+ msgid "File %s is a source package and cannot be updated, ignoring."
+ msgstr "檔案 %s 為來源軟體包且無法更新,忽略。"
+ 
+-#: dnf/base.py:2073
++#: dnf/base.py:2087
+ #, python-format
+ msgid "Package %s not installed, cannot update it."
+ msgstr "尚未安裝軟體包 %s,所以無法更新。"
+ 
+-#: dnf/base.py:2083
++#: dnf/base.py:2097
+ #, python-format
+ msgid ""
+ "The same or higher version of %s is already installed, cannot update it."
+ msgstr "已經安裝同版或更新版的 %s,無法更新。"
+ 
+-#: dnf/base.py:2126 dnf/cli/commands/reinstall.py:81
++#: dnf/base.py:2140 dnf/cli/commands/reinstall.py:81
+ #, python-format
+ msgid "Package %s available, but not installed."
+ msgstr "軟體包 %s 可用,但尚未安裝。"
+ 
+-#: dnf/base.py:2132
++#: dnf/base.py:2146
+ #, python-format
+ msgid "Package %s available, but installed for different architecture."
+ msgstr "軟體包 %s 可用,但是針對不同架構安裝。"
+ 
+-#: dnf/base.py:2157
++#: dnf/base.py:2171
+ #, python-format
+ msgid "No package %s installed."
+ msgstr "軟體包 %s 未安裝。"
+ 
+-#: dnf/base.py:2175 dnf/cli/commands/install.py:136
++#: dnf/base.py:2189 dnf/cli/commands/install.py:136
+ #: dnf/cli/commands/remove.py:133
+ #, python-format
+ msgid "Not a valid form: %s"
+ msgstr "非有效格式:%s"
+ 
+-#: dnf/base.py:2190 dnf/cli/commands/__init__.py:676
++#: dnf/base.py:2204 dnf/cli/commands/__init__.py:676
+ #: dnf/cli/commands/remove.py:162
+ msgid "No packages marked for removal."
+ msgstr "沒有軟體包標記為要移除。"
+ 
+-#: dnf/base.py:2278 dnf/cli/cli.py:428
++#: dnf/base.py:2292 dnf/cli/cli.py:428
+ #, python-format
+ msgid "Packages for argument %s available, but not installed."
+ msgstr "%s 引數的軟體包可用,但尚未安裝。"
+ 
+-#: dnf/base.py:2283
++#: dnf/base.py:2297
+ #, python-format
+ msgid "Package %s of lowest version already installed, cannot downgrade it."
+ msgstr "已經安裝最舊版本的軟體包 %s,所以無法降級。"
+ 
+-#: dnf/base.py:2383
++#: dnf/base.py:2397
+ msgid "No security updates needed, but {} update available"
+ msgstr "不需要任何的安全性更新,但有 {} 個更新可用"
+ 
+-#: dnf/base.py:2385
++#: dnf/base.py:2399
+ msgid "No security updates needed, but {} updates available"
+ msgstr "不需要任何的安全性更新,但有 {} 個更新可用"
+ 
+-#: dnf/base.py:2389
++#: dnf/base.py:2403
+ msgid "No security updates needed for \"{}\", but {} update available"
+ msgstr "不需要「{}」的任何安全性更新,但有 {} 個更新可用"
+ 
+-#: dnf/base.py:2391
++#: dnf/base.py:2405
+ msgid "No security updates needed for \"{}\", but {} updates available"
+ msgstr "不需要「{}」的任何安全性更新,但有 {} 個更新可用"
+ 
+ #. raise an exception, because po.repoid is not in self.repos
+-#: dnf/base.py:2412
++#: dnf/base.py:2426
+ #, python-format
+ msgid "Unable to retrieve a key for a commandline package: %s"
+ msgstr "無法擷取命令列軟體包的金鑰:%s"
+ 
+-#: dnf/base.py:2420
++#: dnf/base.py:2434
+ #, python-format
+ msgid ". Failing package is: %s"
+ msgstr "失敗的軟體包為:%s"
+ 
+-#: dnf/base.py:2421
++#: dnf/base.py:2435
+ #, python-format
+ msgid "GPG Keys are configured as: %s"
+ msgstr "GPG 金鑰已經設定為:%s"
+ 
+-#: dnf/base.py:2433
++#: dnf/base.py:2447
+ #, python-format
+ msgid "GPG key at %s (0x%s) is already installed"
+ msgstr "於 %s (0x%s) 的 GPG 密鑰已經安裝"
+ 
+-#: dnf/base.py:2469
++#: dnf/base.py:2483
+ msgid "The key has been approved."
+ msgstr "金鑰已經核可。"
+ 
+-#: dnf/base.py:2472
++#: dnf/base.py:2486
+ msgid "The key has been rejected."
+ msgstr "金鑰已被拒絕。"
+ 
+-#: dnf/base.py:2505
++#: dnf/base.py:2519
+ #, python-format
+ msgid "Key import failed (code %d)"
+ msgstr "密鑰匯入失敗(錯誤代碼 %d)"
+ 
+-#: dnf/base.py:2507
++#: dnf/base.py:2521
+ msgid "Key imported successfully"
+ msgstr "密鑰匯入成功"
+ 
+-#: dnf/base.py:2511
++#: dnf/base.py:2525
+ msgid "Didn't install any keys"
+ msgstr "無法安裝任何密鑰"
+ 
+-#: dnf/base.py:2514
++#: dnf/base.py:2528
+ #, python-format
+ msgid ""
+-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
++"The GPG keys listed for the \"%s\" repository are already installed but they "
++"are not correct for this package.\n"
+ "Check that the correct key URLs are configured for this repository."
+ msgstr ""
+ "列出的「%s」軟體庫 GPG 金鑰已經安裝,但這些金鑰對這個軟體包都不正確。\n"
+ "檢查這個軟體庫的不正確金鑰之網址設定。"
+ 
+-#: dnf/base.py:2525
++#: dnf/base.py:2539
+ msgid "Import of key(s) didn't help, wrong key(s)?"
+ msgstr "匯入的金鑰沒有作用,可能是因為金鑰是錯誤的?"
+ 
+-#: dnf/base.py:2578
++#: dnf/base.py:2592
+ msgid "  * Maybe you meant: {}"
+ msgstr "  * 或許您想要:{}"
+ 
+-#: dnf/base.py:2610
++#: dnf/base.py:2624
+ msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
+ msgstr "「{}」軟體包來自本機「{}」軟體庫有不正確的 checksum"
+ 
+-#: dnf/base.py:2613
++#: dnf/base.py:2627
+ msgid "Some packages from local repository have incorrect checksum"
+ msgstr "來自本機軟體庫的部份軟體包有不正確的 checksum"
+ 
+-#: dnf/base.py:2616
++#: dnf/base.py:2630
+ msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
+ msgstr "「{}」軟體包來自「{}」軟體庫有不正確的 checksum"
+ 
+-#: dnf/base.py:2619
++#: dnf/base.py:2633
+ msgid ""
+ "Some packages have invalid cache, but cannot be downloaded due to \"--"
+ "cacheonly\" option"
+ msgstr "部份的軟體包有無效的快取,但是因為「--cacheonly」選項而無法下載"
+ 
+-#: dnf/base.py:2637 dnf/base.py:2657
++#: dnf/base.py:2651 dnf/base.py:2671
+ msgid "No match for argument"
+ msgstr "沒有符合引數的項目"
+ 
+-#: dnf/base.py:2645 dnf/base.py:2665
++#: dnf/base.py:2659 dnf/base.py:2679
+ msgid "All matches were filtered out by exclude filtering for argument"
+ msgstr "所有符合項目皆被引數的排除過濾器濾掉"
+ 
+-#: dnf/base.py:2647
++#: dnf/base.py:2661
+ msgid "All matches were filtered out by modular filtering for argument"
+ msgstr "所有符合項目皆被引數的模組化過濾器濾掉"
+ 
+-#: dnf/base.py:2663
++#: dnf/base.py:2677
+ msgid "All matches were installed from a different repository for argument"
+ msgstr "所有符合項目皆從引數的不同軟體庫安裝"
+ 
+-#: dnf/base.py:2710
++#: dnf/base.py:2724
+ #, python-format
+ msgid "Package %s is already installed."
+ msgstr "已安裝 %s 軟體包。"
+@@ -538,7 +539,7 @@ msgstr "已安裝 %s 軟體包。"
+ msgid "Unexpected value of environment variable: DNF_DISABLE_ALIASES=%s"
+ msgstr "未預期的環境變數值:DNF_DISABLE_ALIASES=%s"
+ 
+-#: dnf/cli/aliases.py:105 dnf/conf/config.py:457
++#: dnf/cli/aliases.py:105 dnf/conf/config.py:475
+ #, python-format
+ msgid "Parsing file \"%s\" failed: %s"
+ msgstr "解析「%s」檔案失敗:%s"
+@@ -584,13 +585,19 @@ msgstr "動作可能會導致「{0}」模組的「{1}」串流被切換到「{2}
+ #, fuzzy, python-brace-format
+ #| 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 '{prog} 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 '{prog} module reset <module_name>' command. After "
++#| "you reset the module, you can install the other stream."
+ msgid ""
+-"It is not possible to switch enabled streams of a module unless explicitly enabled via configuration option module_stream_switch.\n"
+-"It is recommended to rather remove all installed content from the module, and reset the module using '{prog} module reset <module_name>' command. After you reset the module, you can install the other stream."
++"It is not possible to switch enabled streams of a module unless explicitly "
++"enabled via configuration option module_stream_switch.\n"
++"It is recommended to rather remove all installed content from the module, "
++"and reset the module using '{prog} module reset <module_name>' command. "
++"After you reset the module, you can install the other stream."
+ msgstr ""
+ "無法切換模組的已啟用串流。\n"
+-"建議移除模組的所有已安裝內容,並使用 '{prog} module reset <module_name>' 命令重設模組。重設完模組後,就可以安裝其他串流。"
++"建議移除模組的所有已安裝內容,並使用 '{prog} module reset <module_name>' 命令"
++"重設模組。重設完模組後,就可以安裝其他串流。"
+ 
+ #: dnf/cli/cli.py:212
+ #, python-brace-format
+@@ -693,8 +700,8 @@ msgstr "沒有軟體庫符合:%s"
+ 
+ #: dnf/cli/cli.py:719
+ msgid ""
+-"This command has to be run with superuser privileges (under the root user on"
+-" most systems)."
++"This command has to be run with superuser privileges (under the root user on "
++"most systems)."
+ msgstr "此命令需要以超級使用者權限執行(大部分系統是在 root 使用者下)。"
+ 
+ #: dnf/cli/cli.py:749
+@@ -707,7 +714,8 @@ msgstr "未知的指令:%s。請使用 %s --help"
+ msgid ""
+ "It could be a {PROG} plugin command, try: \"{prog} install 'dnf-"
+ "command(%s)'\""
+-msgstr "其可能是 {PROG} 插件的命令,請試試:「{prog} install 'dnf-command(%s)'」"
++msgstr ""
++"其可能是 {PROG} 插件的命令,請試試:「{prog} install 'dnf-command(%s)'」"
+ 
+ #: dnf/cli/cli.py:756
+ #, python-brace-format
+@@ -729,14 +737,16 @@ msgid ""
+ "--enable, --set-enabled and --disable, --set-disabled must be used with "
+ "config-manager command."
+ msgstr ""
+-"--enable、--set-enabled 及 --disable、--set-disabled 必須與 config-manager 命令一起使用。"
++"--enable、--set-enabled 及 --disable、--set-disabled 必須與 config-manager 命"
++"令一起使用。"
+ 
+ #: dnf/cli/cli.py:902
+ msgid ""
+ "Warning: Enforcing GPG signature check globally as per active RPM security "
+ "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)"
+ msgstr ""
+-"警告:因為作用中的 RPM 安全性策略,已強制執行全域 GPG 簽名檢查(請參閱 dnf.conf(5) 的「gpgcheck」以了解如何隱藏此則訊息)"
++"警告:因為作用中的 RPM 安全性策略,已強制執行全域 GPG 簽名檢查(請參閱 dnf."
++"conf(5) 的「gpgcheck」以了解如何隱藏此則訊息)"
+ 
+ #: dnf/cli/cli.py:922
+ msgid "Config file \"{}\" does not exist"
+@@ -787,7 +797,8 @@ msgstr "您的 RPMDB 可能損壞,可執行「%s」可能會修復這個問題
+ #, python-brace-format
+ msgid ""
+ "You have enabled checking of packages via GPG keys. This is a good thing.\n"
+-"However, you do not have any GPG public keys installed. You need to download\n"
++"However, you do not have any GPG public keys installed. You need to "
++"download\n"
+ "the keys for packages you wish to install and install them.\n"
+ "You can do that by running the command:\n"
+ "    rpm --import public.gpg.key\n"
+@@ -1235,8 +1246,8 @@ msgstr ""
+ 
+ #: dnf/cli/commands/history.py:68
+ msgid ""
+-"For the replay command, don't check for installed packages matching those in"
+-" transaction"
++"For the replay command, don't check for installed packages matching those in "
++"transaction"
+ msgstr ""
+ 
+ #: dnf/cli/commands/history.py:71
+@@ -1247,8 +1258,8 @@ msgstr ""
+ 
+ #: dnf/cli/commands/history.py:74
+ msgid ""
+-"For the replay command, skip packages that are not available or have missing"
+-" dependencies"
++"For the replay command, skip packages that are not available or have missing "
++"dependencies"
+ msgstr ""
+ 
+ #: dnf/cli/commands/history.py:94
+@@ -1283,8 +1294,8 @@ msgstr "您沒有權限存取歷史紀錄資料庫:%s"
+ #: dnf/cli/commands/history.py:151
+ #, python-format
+ msgid ""
+-"Cannot undo transaction %s, doing so would result in an inconsistent package"
+-" database."
++"Cannot undo transaction %s, doing so would result in an inconsistent package "
++"database."
+ msgstr "無法復原處理事項 %s,這樣做會導致軟體包資料庫不一致。"
+ 
+ #: dnf/cli/commands/history.py:156
+@@ -1437,8 +1448,8 @@ msgstr "%s 軟體包尚未安裝。"
+ 
+ #: dnf/cli/commands/module.py:54
+ msgid ""
+-"Only module name, stream, architecture or profile is used. Ignoring unneeded"
+-" information in argument: '{}'"
++"Only module name, stream, architecture or profile is used. Ignoring unneeded "
++"information in argument: '{}'"
+ msgstr "只使用模組名稱、串流、架構或設定檔。忽略引數中的非必要資訊:「{}」"
+ 
+ #: dnf/cli/commands/module.py:80
+@@ -1710,7 +1721,8 @@ msgstr "搜尋軟體包符合的關鍵詞"
+ msgid ""
+ "Query all packages (shorthand for repoquery '*' or repoquery without "
+ "argument)"
+-msgstr "查詢所有軟體包(為軟體包查詢「*」或不包含引數的軟體包查詢的 shorthand)"
++msgstr ""
++"查詢所有軟體包(為軟體包查詢「*」或不包含引數的軟體包查詢的 shorthand)"
+ 
+ #: dnf/cli/commands/repoquery.py:124
+ msgid "Query all versions of packages (default)"
+@@ -1796,7 +1808,8 @@ msgstr "在相應的來源 RPM 上執行"
+ msgid ""
+ "show N latest packages for a given name.arch (or latest but N if N is "
+ "negative)"
+-msgstr "為提供的 name.arch 顯示 N 個最新的軟體包(或最新、除了 N 如果 N 是否定的)"
++msgstr ""
++"為提供的 name.arch 顯示 N 個最新的軟體包(或最新、除了 N 如果 N 是否定的)"
+ 
+ #: dnf/cli/commands/repoquery.py:177
+ msgid "list also packages of inactive module streams"
+@@ -1821,9 +1834,11 @@ msgstr "顯示軟體包的變更紀錄"
+ #: dnf/cli/commands/repoquery.py:194
+ #, python-format, python-brace-format
+ msgid ""
+-"display format for listing packages: \"%%{name} %%{version} ...\", use "
+-"--querytags to view full tag list"
+-msgstr "軟體包清單的顯示格式:「%%{name} %%{version} ...」,使用 --querytags 檢視完整標籤清單"
++"display format for listing packages: \"%%{name} %%{version} ...\", use --"
++"querytags to view full tag list"
++msgstr ""
++"軟體包清單的顯示格式:「%%{name} %%{version} ...」,使用 --querytags 檢視完整"
++"標籤清單"
+ 
+ #: dnf/cli/commands/repoquery.py:198
+ msgid "show available tags to use with --queryformat"
+@@ -1833,7 +1848,8 @@ msgstr "與 --queryformat 顯示可供使用的標籤"
+ msgid ""
+ "use name-epoch:version-release.architecture format for displaying found "
+ "packages (default)"
+-msgstr "使用 name-epoch:version-release.architecture 格式來顯示找到的軟體包(預設值)"
++msgstr ""
++"使用 name-epoch:version-release.architecture 格式來顯示找到的軟體包(預設值)"
+ 
+ #: dnf/cli/commands/repoquery.py:205
+ msgid ""
+@@ -1900,8 +1916,8 @@ msgid ""
+ "running %%pre and %%post scriptlets. If the package is installed display "
+ "capabilities that is depends for %%pre, %%post, %%preun and %%postun."
+ msgstr ""
+-"如果未安裝軟體包,則顯示執行 %%pre 及 %%post 小令稿所依賴的功能。如果已安裝軟體包,則顯示執行 %%pre、%%post、%%preun "
+-"以及 %%postun 小令稿所依賴的功能。"
++"如果未安裝軟體包,則顯示執行 %%pre 及 %%post 小令稿所依賴的功能。如果已安裝軟"
++"體包,則顯示執行 %%pre、%%post、%%preun 以及 %%postun 小令稿所依賴的功能。"
+ 
+ #: dnf/cli/commands/repoquery.py:243
+ msgid "Display capabilities that the package suggests."
+@@ -1950,23 +1966,23 @@ msgstr "要搜尋的關鍵詞:"
+ 
+ #: dnf/cli/commands/repoquery.py:295
+ msgid ""
+-"Option '--resolve' has to be used together with one of the '--conflicts', '"
+-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--"
++"Option '--resolve' has to be used together with one of the '--conflicts', '--"
++"depends', '--enhances', '--provides', '--recommends', '--requires', '--"
+ "requires-pre', '--suggests' or '--supplements' options"
+ msgstr ""
+-"選項 '--resolve' 需要與 '--conflicts', '--depends', '--enhances', '--provides', '"
+-"--recommends', '--requires', '--requires-pre', '--suggests' 或 '--"
+-"supplements' 選項一起使用"
++"選項 '--resolve' 需要與 '--conflicts', '--depends', '--enhances', '--"
++"provides', '--recommends', '--requires', '--requires-pre', '--suggests' 或 "
++"'--supplements' 選項一起使用"
+ 
+ #: dnf/cli/commands/repoquery.py:305
+ msgid ""
+ "Option '--recursive' has to be used with '--whatrequires <REQ>' (optionally "
+-"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> "
+-"--resolve'"
++"with '--alldeps', but not with '--exactdeps'), or with '--requires <REQ> --"
++"resolve'"
+ msgstr ""
+-"「--recursive」選項必須與「--whatrequires "
+-"<REQ>」一起使用(可以選擇與「--alldeps」一起使用,但不可以是「--exactdeps」),或是與「--requires <REQ> "
+-"--resolve」一起使用"
++"「--recursive」選項必須與「--whatrequires <REQ>」一起使用(可以選擇與「--"
++"alldeps」一起使用,但不可以是「--exactdeps」),或是與「--requires <REQ> --"
++"resolve」一起使用"
+ 
+ #: dnf/cli/commands/repoquery.py:312
+ msgid "argument {} requires --whatrequires or --whatdepends option"
+@@ -1980,13 +1996,17 @@ msgstr "軟體包 {} 不包含任何檔案"
+ #, python-brace-format
+ msgid ""
+ "No valid switch specified\n"
+-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--"
++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--"
++"tree]\n"
+ "\n"
+ "description:\n"
+ "  For the given packages print a tree of thepackages."
+ msgstr ""
+ "未指定有效的開關選項\n"
+-"用法:{prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n"
++"用法:{prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--"
++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--"
++"tree]\n"
+ "\n"
+ "描述:\n"
+ "  列出提供軟體包的樹狀圖。"
+@@ -2026,8 +2046,7 @@ msgstr "描述"
+ msgid "URL"
+ msgstr "URL"
+ 
+-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary
+-#. & URL)
++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL)
+ #: dnf/cli/commands/search.py:76
+ msgid " & "
+ msgstr " & "
+@@ -2545,7 +2564,9 @@ msgstr "錯誤輸出等級"
+ msgid ""
+ "enables {prog}'s obsoletes processing logic for upgrade or display "
+ "capabilities that the package obsoletes for info, list and repoquery"
+-msgstr "啟用 {prog} 中 upgrade 的棄用處理邏輯,或啟用 info、list 和 repoquery 顯示軟體包棄用的功能"
++msgstr ""
++"啟用 {prog} 中 upgrade 的棄用處理邏輯,或啟用 info、list 和 repoquery 顯示軟"
++"體包棄用的功能"
+ 
+ #: dnf/cli/option_parser.py:251
+ msgid "debugging output level for rpm"
+@@ -2567,8 +2588,8 @@ msgstr "啟用額外軟體庫。列出選項。支援 Glob,可多次指定。"
+ 
+ #: dnf/cli/option_parser.py:266
+ msgid ""
+-"Disable repositories. List option. Supports globs, can be specified multiple"
+-" times."
++"Disable repositories. List option. Supports globs, can be specified multiple "
++"times."
+ msgstr "停用軟體庫。列出選項。支援 Glob,可多次指定。"
+ 
+ #: dnf/cli/option_parser.py:270
+@@ -2597,7 +2618,8 @@ msgstr "停用 excludepkgs"
+ msgid ""
+ "label and path to an additional repository to use (same path as in a "
+ "baseurl), can be specified multiple times."
+-msgstr "要使用之額外軟體庫的標籤與路徑(跟基礎 URL 中的路徑一致),可多次指定。"
++msgstr ""
++"要使用之額外軟體庫的標籤與路徑(跟基礎 URL 中的路徑一致),可多次指定。"
+ 
+ #: dnf/cli/option_parser.py:297
+ msgid "disable removal of dependencies that are no longer used"
+@@ -3450,10 +3472,6 @@ msgstr "    開始於:%s - %s 之前"
+ msgid "    State  : %s"
+ msgstr "    狀態:%s"
+ 
+-#: dnf/comps.py:104
+-msgid "skipping."
+-msgstr "略過。"
+-
+ #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706
+ #, python-format
+ msgid "Module or Group '%s' is not installed."
+@@ -3508,11 +3526,15 @@ msgstr "無法解析「%s」:%s"
+ msgid "Invalid configuration value: %s=%s in %s; %s"
+ msgstr "未知的設定值:%s = %s 於 %s;%s"
+ 
+-#: dnf/conf/config.py:226
++#: dnf/conf/config.py:194
++msgid "Cannot set \"{}\" to \"{}\": {}"
++msgstr ""
++
++#: dnf/conf/config.py:244
+ msgid "Could not set cachedir: {}"
+ msgstr "無法設定 cachedir:{}"
+ 
+-#: dnf/conf/config.py:275
++#: dnf/conf/config.py:293
+ msgid ""
+ "Configuration file URL \"{}\" could not be downloaded:\n"
+ "  {}"
+@@ -3520,31 +3542,31 @@ msgstr ""
+ "無法下載「{}」設定檔 URL:\n"
+ "  {}"
+ 
+-#: dnf/conf/config.py:355 dnf/conf/config.py:391
++#: dnf/conf/config.py:373 dnf/conf/config.py:409
+ #, python-format
+ msgid "Unknown configuration option: %s = %s"
+ msgstr "無效的設定選項:%s = %s"
+ 
+-#: dnf/conf/config.py:372
++#: dnf/conf/config.py:390
+ #, python-format
+ msgid "Error parsing --setopt with key '%s', value '%s': %s"
+ msgstr "以「%s」鍵,「%s」值解析 --setopt 時發生錯誤:%s"
+ 
+-#: dnf/conf/config.py:380
++#: dnf/conf/config.py:398
+ #, python-format
+ msgid "Main config did not have a %s attr. before setopt"
+ msgstr "主組態未在 setopt 之前設定 %s 屬性"
+ 
+-#: dnf/conf/config.py:427 dnf/conf/config.py:445
++#: dnf/conf/config.py:445 dnf/conf/config.py:463
+ msgid "Incorrect or unknown \"{}\": {}"
+ msgstr "錯誤的或者是無效的 \"{}\": {}"
+ 
+-#: dnf/conf/config.py:501
++#: dnf/conf/config.py:519
+ #, python-format
+ msgid "Error parsing --setopt with key '%s.%s', value '%s': %s"
+ msgstr "以「%s.%s」鍵,「%s」值解析 --setopt 時發生錯誤:%s"
+ 
+-#: dnf/conf/config.py:504
++#: dnf/conf/config.py:522
+ #, python-format
+ msgid "Repo %s did not have a %s attr. before setopt"
+ msgstr "%s 軟體庫未在 setopt 之前設定 %s 屬性"
+@@ -3625,7 +3647,7 @@ msgstr "沒有「{}」模組化軟體包可用的模組化中介資料"
+ msgid "Will not install a source rpm package (%s)."
+ msgstr "將不會安裝 RPM 原始檔(%s)。"
+ 
+-#: dnf/dnssec.py:168
++#: dnf/dnssec.py:171
+ #, fuzzy
+ #| msgid ""
+ #| "Configuration option 'gpgkey_dns_verification' requires libunbound ({})"
+@@ -3633,27 +3655,27 @@ msgid ""
+ "Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
+ msgstr "「gpgkey_dns_verification」設定選項需要 libunbound ({})"
+ 
+-#: dnf/dnssec.py:239
++#: dnf/dnssec.py:243
+ msgid "DNSSEC extension: Key for user "
+ msgstr "DNSSEC 擴充:給使用者的金鑰 "
+ 
+-#: dnf/dnssec.py:241
++#: dnf/dnssec.py:245
+ msgid "is valid."
+ msgstr "有效。"
+ 
+-#: dnf/dnssec.py:243
++#: dnf/dnssec.py:247
+ msgid "has unknown status."
+ msgstr "狀態未知。"
+ 
+-#: dnf/dnssec.py:251
++#: dnf/dnssec.py:255
+ msgid "DNSSEC extension: "
+ msgstr "DNSSEC 擴充: "
+ 
+-#: dnf/dnssec.py:283
++#: dnf/dnssec.py:287
+ msgid "Testing already imported keys for their validity."
+ msgstr "測試已經匯入的金鑰其有效性。"
+ 
+-#: dnf/drpm.py:62 dnf/repo.py:268
++#: dnf/drpm.py:62 dnf/repo.py:267
+ #, python-format
+ msgid "unsupported checksum type: %s"
+ msgstr "未支援的查核碼類型:%s"
+@@ -3695,7 +3717,7 @@ msgid "Modular dependency problem with Defaults:"
+ msgid_plural "Modular dependency problems with Defaults:"
+ msgstr[0] "預設值發生模組依賴關係問題:"
+ 
+-#: dnf/exceptions.py:131 dnf/module/module_base.py:854
++#: dnf/exceptions.py:131 dnf/module/module_base.py:857
+ msgid "Modular dependency problem:"
+ msgid_plural "Modular dependency problems:"
+ msgstr[0] "模組化的依賴關係問題:"
+@@ -3704,10 +3726,12 @@ msgstr[0] "模組化的依賴關係問題:"
+ #, python-format
+ msgid ""
+ "Malformed lock file found: %s.\n"
+-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf."
++"Ensure no other dnf/yum process is running and remove the lock file manually "
++"or run systemd-tmpfiles --remove dnf.conf."
+ msgstr ""
+ "發現格式錯誤的鎖定檔:%s。\n"
+-"請確定沒有其他正在執行的 dnf/yum 處理程序,然後手動移除鎖定檔或執行 systemd-tmpfiles --remove dnf.conf。"
++"請確定沒有其他正在執行的 dnf/yum 處理程序,然後手動移除鎖定檔或執行 systemd-"
++"tmpfiles --remove dnf.conf。"
+ 
+ #: dnf/module/__init__.py:26
+ msgid "Enabling different stream for '{}'."
+@@ -3800,7 +3824,7 @@ msgstr ""
+ "提示:[d] 預設、[e] 已啟用, [x] 已停用, [i] 已安裝, [a] 作用中"
+ 
+ #: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+-#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
++#: dnf/module/module_base.py:615 dnf/module/module_base.py:684
+ msgid "Ignoring unnecessary profile: '{}/{}'"
+ msgstr "忽略不必要的設定檔:「{}/{}」"
+ 
+@@ -3841,8 +3865,7 @@ msgstr "不允許從防故障軟體庫安裝模組"
+ 
+ #: dnf/module/module_base.py:196
+ #, fuzzy, python-brace-format
+-#| msgid ""
+-#| "All matches for argument '{0}' in module '{1}:{2}' are not active"
++#| msgid "All matches for argument '{0}' in module '{1}:{2}' are not active"
+ msgid "No active matches for argument '{0}' in module '{1}:{2}'"
+ msgstr "所有「{1}:{2}」模組中的「{0}」引數符合項目皆未作用中"
+ 
+@@ -3859,7 +3882,7 @@ msgstr ""
+ #: dnf/module/module_base.py:310 dnf/module/module_base.py:461
+ #: dnf/module/module_base.py:486 dnf/module/module_base.py:505
+ #: dnf/module/module_base.py:552 dnf/module/module_base.py:611
+-#: dnf/module/module_base.py:677 dnf/module/module_base.py:840
++#: dnf/module/module_base.py:680 dnf/module/module_base.py:843
+ msgid "Unable to resolve argument {}"
+ msgstr "無法解析 {} 引數"
+ 
+@@ -3879,17 +3902,16 @@ msgstr "不允許從防故障軟體庫升級模組"
+ #: dnf/module/module_base.py:422
+ #, python-brace-format
+ msgid ""
+-"Argument '{argument}' matches {stream_count} streams ('{streams}') of module"
+-" '{module}', but none of the streams are enabled or default"
++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module "
++"'{module}', but none of the streams are enabled or default"
+ msgstr ""
+ 
+ #: dnf/module/module_base.py:509
+ msgid ""
+-"Only module name is required. Ignoring unneeded information in argument: "
+-"'{}'"
++"Only module name is required. Ignoring unneeded information in argument: '{}'"
+ msgstr "只需要模組名稱。忽略引數中的非必要資訊:「{}」"
+ 
+-#: dnf/module/module_base.py:841
++#: dnf/module/module_base.py:844
+ msgid "No match for package {}"
+ msgstr "找不到符合的軟體包 {}"
+ 
+@@ -3950,7 +3972,7 @@ msgid "Already downloaded"
+ msgstr "已經下載"
+ 
+ #. pinging mirrors, this might take a while
+-#: dnf/repo.py:347
++#: dnf/repo.py:346
+ #, python-format
+ msgid "determining the fastest mirror (%s hosts).. "
+ msgstr "正在決定最快速的鏡像站 (%s 主機)… "
+@@ -3974,7 +3996,15 @@ msgstr ""
+ msgid "Cannot find rpmkeys executable to verify signatures."
+ msgstr ""
+ 
+-#: dnf/rpm/transaction.py:119
++#: dnf/rpm/transaction.py:70
++msgid "The openDB() function connot open rpm database."
++msgstr ""
++
++#: dnf/rpm/transaction.py:75
++msgid "The dbCookie() function did not return cookie of rpm database."
++msgstr ""
++
++#: dnf/rpm/transaction.py:135
+ msgid "Errors occurred during test transaction."
+ msgstr "測試處理事項時發生錯誤。"
+ 
+@@ -4082,7 +4112,8 @@ msgstr ""
+ 
+ #: dnf/transaction_sr.py:289
+ #, python-brace-format
+-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
++msgid ""
++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
+ msgstr ""
+ 
+ #: dnf/transaction_sr.py:297
+@@ -4115,7 +4146,8 @@ msgstr ""
+ 
+ #: dnf/transaction_sr.py:370
+ #, python-brace-format
+-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
++msgid ""
++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
+ msgstr ""
+ 
+ #: dnf/transaction_sr.py:377
+@@ -4165,7 +4197,9 @@ msgstr ""
+ 
+ #: dnf/transaction_sr.py:571
+ #, python-brace-format
+-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"."
++msgid ""
++"Unexpected value of environment action \"{action}\" for environment "
++"\"{env}\"."
+ msgstr ""
+ 
+ #: dnf/transaction_sr.py:576
+@@ -4176,8 +4210,8 @@ msgstr ""
+ #: dnf/transaction_sr.py:615
+ #, python-brace-format
+ msgid ""
+-"Package nevra \"{nevra}\", which is not present in the transaction file, was"
+-" pulled into the transaction."
++"Package nevra \"{nevra}\", which is not present in the transaction file, was "
++"pulled into the transaction."
+ msgstr ""
+ 
+ #: dnf/util.py:417 dnf/util.py:419
+@@ -4217,6 +4251,9 @@ msgstr "失敗"
+ msgid "<name-unset>"
+ msgstr "<名稱未設定>"
+ 
++#~ msgid "skipping."
++#~ msgstr "略過。"
++
+ #~ msgid "%s: %s check failed: %s vs %s"
+ #~ msgstr "%s:%s 檢查失敗:%s 比對 %s"
+ 
+@@ -4242,5 +4279,6 @@ msgstr "<名稱未設定>"
+ #~ msgstr "給予的處理事項 ID、或軟體包不良"
+ 
+ #~ msgid ""
+-#~ "Display capabilities that the package depends on for running a %%pre script."
++#~ "Display capabilities that the package depends on for running a %%pre "
++#~ "script."
+ #~ msgstr "顯示軟體包執行在 %%pre 指令上的功能。"
+-- 
+2.35.1
+
diff --git a/SPECS/dnf.spec b/SPECS/dnf.spec
new file mode 100644
index 0000000..9bafd9f
--- /dev/null
+++ b/SPECS/dnf.spec
@@ -0,0 +1,2688 @@
+# Always build out-of-source
+%define __cmake_in_source_build 1
+
+# default dependencies
+%global hawkey_version 0.65.0
+%global libcomps_version 0.1.8
+%global libmodulemd_version 2.9.3
+%global rpm_version 4.14.0
+
+# conflicts
+%global conflicts_dnf_plugins_core_version 4.0.24-3
+%global conflicts_dnf_plugins_extras_version 4.0.4
+%global conflicts_dnfdaemon_version 0.3.19
+
+# override dependencies for rhel 7
+%if 0%{?rhel} == 7
+    %global rpm_version 4.11.3-32
+%endif
+
+%if 0%{?rhel} == 7 && 0%{?centos}
+    %global rpm_version 4.11.3-25.el7.centos.1
+%endif
+
+# override dependencies for fedora 26
+%if 0%{?fedora} == 26
+    %global rpm_version 4.13.0.1-7
+%endif
+
+
+# YUM compat subpackage configuration
+#
+# level=full    -> deploy all compat symlinks (conflicts with yum < 4)
+# level=minimal -> deploy a subset of compat symlinks only
+#                  (no conflict with yum >= 3.4.3-505)*
+# level=preview -> minimal level with altered paths (no conflict with yum < 4)
+# *release 505 renamed /usr/bin/yum to /usr/bin/yum-deprecated
+%global yum_compat_level full
+%global yum_subpackage_name yum
+%if 0%{?fedora}
+    # Avoid file conflict with yum < 4 in all Fedoras
+    # It can be resolved by pretrans scriptlet but they are not recommended in Fedora
+    %global yum_compat_level minimal
+    %if 0%{?fedora} < 31
+        # Avoid name conflict with yum < 4
+        %global yum_subpackage_name %{name}-yum
+    %endif
+%endif
+%if 0%{?rhel} && 0%{?rhel} <= 7
+    %global yum_compat_level preview
+    %global yum_subpackage_name nextgen-yum4
+%endif
+
+# paths
+%global confdir %{_sysconfdir}/%{name}
+%global pluginconfpath %{confdir}/plugins
+
+%global py3pluginpath %{python3_sitelib}/%{name}-plugins
+
+# Use the same directory of the main package for subpackage licence and docs
+%global _docdir_fmt %{name}
+
+
+%global pkg_summary     Package manager
+%global pkg_description Utility that allows users to manage packages on their systems. \
+It supports RPMs, modules and comps groups & environments.
+
+Name:           dnf
+Version:        4.10.0
+Release:        5%{?dist}
+Summary:        %{pkg_summary}
+# For a breakdown of the licensing, see PACKAGE-LICENSING
+License:        GPLv2+
+URL:            https://github.com/rpm-software-management/dnf
+Source0:        %{url}/archive/%{version}/%{name}-%{version}.tar.gz
+Patch1:         0001-doc-Improve-description-of-multilib_policyall-RhBug19966811995630.patch
+Patch2:         0002-Fix-Python-dnf-API-does-not-respect-cacheonly-RhBug1862970.patch
+Patch3:         0003-Documentation-API-notes-for-cacheonly.patch
+Patch4:         0004-Use-rpm.TransactionSet.dbCookie-to-determining-if-rp.patch
+Patch5:         0005-Update-translations-RhBug-2017347.patch
+
+BuildArch:      noarch
+BuildRequires:  cmake
+BuildRequires:  gettext
+# Documentation
+BuildRequires:  systemd
+BuildRequires:  bash-completion
+BuildRequires:  %{_bindir}/sphinx-build-3
+Requires:       python3-%{name} = %{version}-%{release}
+%if 0%{?rhel} && 0%{?rhel} <= 7
+Requires:       python-dbus
+Requires:       %{_bindir}/sqlite3
+%else
+Recommends:     (python3-dbus if NetworkManager)
+%endif
+Provides:       dnf-command(alias)
+Provides:       dnf-command(autoremove)
+Provides:       dnf-command(check-update)
+Provides:       dnf-command(clean)
+Provides:       dnf-command(distro-sync)
+Provides:       dnf-command(downgrade)
+Provides:       dnf-command(group)
+Provides:       dnf-command(history)
+Provides:       dnf-command(info)
+Provides:       dnf-command(install)
+Provides:       dnf-command(list)
+Provides:       dnf-command(makecache)
+Provides:       dnf-command(mark)
+Provides:       dnf-command(provides)
+Provides:       dnf-command(reinstall)
+Provides:       dnf-command(remove)
+Provides:       dnf-command(repolist)
+Provides:       dnf-command(repoquery)
+Provides:       dnf-command(repository-packages)
+Provides:       dnf-command(search)
+Provides:       dnf-command(updateinfo)
+Provides:       dnf-command(upgrade)
+Provides:       dnf-command(upgrade-to)
+Conflicts:      python3-dnf-plugins-core < %{conflicts_dnf_plugins_core_version}
+Conflicts:      python3-dnf-plugins-extras-common < %{conflicts_dnf_plugins_extras_version}
+
+%description
+%{pkg_description}
+
+%package data
+Summary:        Common data and configuration files for DNF
+Requires:       libreport-filesystem
+Obsoletes:      %{name}-conf <= %{version}-%{release}
+Provides:       %{name}-conf = %{version}-%{release}
+
+%description data
+Common data and configuration files for DNF
+
+%package -n %{yum_subpackage_name}
+Requires:       %{name} = %{version}-%{release}
+Summary:        %{pkg_summary}
+%if 0%{?fedora}
+%if 0%{?fedora} >= 31
+Provides:       %{name}-yum = %{version}-%{release}
+Obsoletes:      %{name}-yum < 5
+%else
+Conflicts:      yum < 3.4.3-505
+%endif
+%endif
+
+%description -n %{yum_subpackage_name}
+%{pkg_description}
+
+%package -n python3-%{name}
+Summary:        Python 3 interface to DNF
+%{?python_provide:%python_provide python3-%{name}}
+BuildRequires:  python3-devel
+BuildRequires:  python3-hawkey >= %{hawkey_version}
+BuildRequires:  python3-libdnf >= %{hawkey_version}
+BuildRequires:  python3-libcomps >= %{libcomps_version}
+BuildRequires:  python3-libdnf
+BuildRequires:  libmodulemd >= %{libmodulemd_version}
+Requires:       libmodulemd >= %{libmodulemd_version}
+BuildRequires:  python3-gpg
+Requires:       python3-gpg
+Requires:       %{name}-data = %{version}-%{release}
+%if 0%{?fedora}
+Recommends:     deltarpm
+# required for DNSSEC main.gpgkey_dns_verification https://dnf.readthedocs.io/en/latest/conf_ref.html
+Recommends:     python3-unbound
+%endif
+Requires:       python3-hawkey >= %{hawkey_version}
+Requires:       python3-libdnf >= %{hawkey_version}
+Requires:       python3-libcomps >= %{libcomps_version}
+Requires:       python3-libdnf
+BuildRequires:  python3-rpm >= %{rpm_version}
+Requires:       python3-rpm >= %{rpm_version}
+%if 0%{?rhel} && 0%{?rhel} <= 7
+Requires:       rpm-plugin-systemd-inhibit
+%else
+Recommends:     (rpm-plugin-systemd-inhibit if systemd)
+%endif
+
+%description -n python3-%{name}
+Python 3 interface to DNF.
+
+%package automatic
+Summary:        %{pkg_summary} - automated upgrades
+BuildRequires:  systemd
+Requires:       %{name} = %{version}-%{release}
+%{?systemd_requires}
+
+%description automatic
+Systemd units that can periodically download package upgrades and apply them.
+
+
+%prep
+%autosetup -p1
+
+mkdir build-py3
+
+%build
+
+pushd build-py3
+%cmake .. -DPYTHON_DESIRED:FILEPATH=%{__python3} -DDNF_VERSION=%{version}
+%make_build
+make doc-man
+popd
+
+%install
+
+pushd build-py3
+%make_install
+popd
+
+%find_lang %{name}
+mkdir -p %{buildroot}%{confdir}/vars
+mkdir -p %{buildroot}%{confdir}/aliases.d
+mkdir -p %{buildroot}%{pluginconfpath}/
+mkdir -p %{buildroot}%{_sysconfdir}/%{name}/modules.d
+mkdir -p %{buildroot}%{_sysconfdir}/%{name}/modules.defaults.d
+mkdir -p %{buildroot}%{py3pluginpath}/__pycache__/
+mkdir -p %{buildroot}%{_localstatedir}/log/
+mkdir -p %{buildroot}%{_var}/cache/dnf/
+touch %{buildroot}%{_localstatedir}/log/%{name}.log
+ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/dnf
+mv %{buildroot}%{_bindir}/dnf-automatic-3 %{buildroot}%{_bindir}/dnf-automatic
+rm -vf %{buildroot}%{_bindir}/dnf-automatic-*
+
+# Strict conf distribution
+%if 0%{?rhel}
+mv -f %{buildroot}%{confdir}/%{name}-strict.conf %{buildroot}%{confdir}/%{name}.conf
+%else
+rm -vf %{buildroot}%{confdir}/%{name}-strict.conf
+%endif
+
+# YUM compat layer
+ln -sr  %{buildroot}%{confdir}/%{name}.conf %{buildroot}%{_sysconfdir}/yum.conf
+ln -sr  %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/yum
+%if "%{yum_compat_level}" == "full"
+mkdir -p %{buildroot}%{_sysconfdir}/yum
+ln -sr  %{buildroot}%{pluginconfpath} %{buildroot}%{_sysconfdir}/yum/pluginconf.d
+ln -sr  %{buildroot}%{confdir}/protected.d %{buildroot}%{_sysconfdir}/yum/protected.d
+ln -sr  %{buildroot}%{confdir}/vars %{buildroot}%{_sysconfdir}/yum/vars
+%endif
+
+
+%check
+
+pushd build-py3
+ctest -VV
+popd
+
+
+%post
+%systemd_post dnf-makecache.timer
+
+%preun
+%systemd_preun dnf-makecache.timer
+
+%postun
+%systemd_postun_with_restart dnf-makecache.timer
+
+
+%post automatic
+%systemd_post dnf-automatic.timer
+%systemd_post dnf-automatic-notifyonly.timer
+%systemd_post dnf-automatic-download.timer
+%systemd_post dnf-automatic-install.timer
+
+%preun automatic
+%systemd_preun dnf-automatic.timer
+%systemd_preun dnf-automatic-notifyonly.timer
+%systemd_preun dnf-automatic-download.timer
+%systemd_preun dnf-automatic-install.timer
+
+%postun automatic
+%systemd_postun_with_restart dnf-automatic.timer
+%systemd_postun_with_restart dnf-automatic-notifyonly.timer
+%systemd_postun_with_restart dnf-automatic-download.timer
+%systemd_postun_with_restart dnf-automatic-install.timer
+
+
+%files -f %{name}.lang
+%{_bindir}/%{name}
+%if 0%{?rhel} && 0%{?rhel} <= 7
+%{_sysconfdir}/bash_completion.d/%{name}
+%else
+%dir %{_datadir}/bash-completion
+%dir %{_datadir}/bash-completion/completions
+%{_datadir}/bash-completion/completions/%{name}
+%endif
+%{_mandir}/man8/%{name}.8*
+%{_mandir}/man8/yum2dnf.8*
+%{_mandir}/man7/dnf.modularity.7*
+%{_mandir}/man5/dnf-transaction-json.5*
+%{_unitdir}/%{name}-makecache.service
+%{_unitdir}/%{name}-makecache.timer
+%{_var}/cache/%{name}/
+
+%files data
+%license COPYING PACKAGE-LICENSING
+%doc AUTHORS README.rst
+%dir %{confdir}
+%dir %{confdir}/modules.d
+%dir %{confdir}/modules.defaults.d
+%dir %{pluginconfpath}
+%dir %{confdir}/protected.d
+%dir %{confdir}/vars
+%dir %{confdir}/aliases.d
+%exclude %{confdir}/aliases.d/zypper.conf
+%config(noreplace) %{confdir}/%{name}.conf
+%config(noreplace) %{confdir}/protected.d/%{name}.conf
+%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
+%ghost %attr(644,-,-) %{_localstatedir}/log/hawkey.log
+%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.log
+%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.librepo.log
+%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.rpm.log
+%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.plugin.log
+%ghost %attr(755,-,-) %dir %{_sharedstatedir}/%{name}
+%ghost %attr(644,-,-) %{_sharedstatedir}/%{name}/groups.json
+%ghost %attr(755,-,-) %dir %{_sharedstatedir}/%{name}/yumdb
+%ghost %attr(755,-,-) %dir %{_sharedstatedir}/%{name}/history
+%{_mandir}/man5/%{name}.conf.5*
+%{_tmpfilesdir}/%{name}.conf
+%{_sysconfdir}/libreport/events.d/collect_dnf.conf
+
+%files -n %{yum_subpackage_name}
+%if "%{yum_compat_level}" == "full"
+%{_bindir}/yum
+%{_sysconfdir}/yum.conf
+%{_sysconfdir}/yum/pluginconf.d
+%{_sysconfdir}/yum/protected.d
+%{_sysconfdir}/yum/vars
+%{_mandir}/man8/yum.8*
+%{_mandir}/man5/yum.conf.5.*
+%{_mandir}/man8/yum-shell.8*
+%{_mandir}/man1/yum-aliases.1*
+%config(noreplace) %{confdir}/protected.d/yum.conf
+%else
+%exclude %{_sysconfdir}/yum.conf
+%exclude %{_sysconfdir}/yum/pluginconf.d
+%exclude %{_sysconfdir}/yum/protected.d
+%exclude %{_sysconfdir}/yum/vars
+%exclude %{confdir}/protected.d/yum.conf
+%exclude %{_mandir}/man5/yum.conf.5.*
+%exclude %{_mandir}/man8/yum-shell.8*
+%exclude %{_mandir}/man1/yum-aliases.1*
+%endif
+
+%if "%{yum_compat_level}" == "minimal"
+%{_bindir}/yum
+%{_mandir}/man8/yum.8*
+%endif
+
+%if "%{yum_compat_level}" == "preview"
+%{_bindir}/yum4
+%{_mandir}/man8/yum4.8*
+%exclude %{_mandir}/man8/yum.8*
+%endif
+
+%files -n python3-%{name}
+%{_bindir}/%{name}-3
+%exclude %{python3_sitelib}/%{name}/automatic
+%{python3_sitelib}/%{name}/
+%dir %{py3pluginpath}
+%dir %{py3pluginpath}/__pycache__
+
+%files automatic
+%{_bindir}/%{name}-automatic
+%config(noreplace) %{confdir}/automatic.conf
+%{_mandir}/man8/%{name}-automatic.8*
+%{_unitdir}/%{name}-automatic.service
+%{_unitdir}/%{name}-automatic.timer
+%{_unitdir}/%{name}-automatic-notifyonly.service
+%{_unitdir}/%{name}-automatic-notifyonly.timer
+%{_unitdir}/%{name}-automatic-download.service
+%{_unitdir}/%{name}-automatic-download.timer
+%{_unitdir}/%{name}-automatic-install.service
+%{_unitdir}/%{name}-automatic-install.timer
+%{python3_sitelib}/%{name}/automatic/
+
+%changelog
+* Mon Mar 21 2022 Marek Blaha <mblaha@redhat.com> - 4.10.0-5
+- Update translations
+
+* Mon Feb 07 2022 Pavla Kratochvilova <pkratoch@redhat.com> - 4.10.0-4
+- Use rpm.TransactionSet.dbCookie() to determining if rpmdb has changed (RhBug:2043476)
+
+* Mon Jan 24 2022 Pavla Kratochvilova <pkratoch@redhat.com> - 4.10.0-3
+- Don't recommend python3-unbound (RhBug:1947925)
+- Recommend rpm-plugin-systemd-inhibit only if systemd (RhBug:1947924)
+- Don't recommend %{_bindir}/sqlite3 for bash-completion (RhBug:1947924)
+
+* Tue Dec 07 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 4.10.0-2
+- Respect cacheonly in python dnf API (RhBug:2026849)
+- [doc] Improve description of multilib_policy=all (RhBug:1996681,1995630)
+
+* Mon Oct 25 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 4.10.0-1
+- Update to 4.10.0
+- Do not assume that a remote rpm is complete if present
+- Use positive percentage for "Failed delta RPMs" message
+- Remove redundant new line in Groups output
+- Format empty group names outputs to <name-unset>
+- [doc] Document default colors
+- Use rpmkeys alone to verify signature
+- Add dnf.error message to explain rpm.error traceback when package not found after resolving a transaction (RhBug:1815327,1887293,1909845)
+- [API] Add method "set_or_append_opt_value" to BaseConfig (RhBug:1967925)
+- Add aliases for commands: info, updateinfo, provides (RhBug:1938333)
+- Add report about demodularized rpms into module info (RhBug:1805260)
+- Remove DNSSEC errors on COPR group email keys
+- Add support for autodetecting packages to be excluded from being installed as weak dependencies (RhBug:1699672)
+- Add support for excluding packages to be installed as weak dependencies (RhBug:1699672)
+- Add fail_fast parameter to download_payloads methods for use in reposync
+- Acquire all relevant locks during "dnf clean"
+- API: Raise CompsError when group/env not found in install_group and install_environment (RhBug:1947958)
+
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 4.7.0-2
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Wed Jun 02 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 4.7.0-1
+- Update to 4.7.0
+- Improve repo config path ordering to fix a comps merging issue (RhBug:1928181)
+- Keep reason when package is removed (RhBug:1921063)
+- Improve mechanism for application of security filters (RhBug:1918475)
+- [doc] Add description for new API
+- [API] Add new method for reset of security filters
+- [doc] Improve documentation for Hotfix repositories
+- [doc] fix: "makecache" command downloads only enabled repositories
+- Use libdnf.utils.checksum_{check,value}
+- [doc] Add info that maximum parallel downloads is 20
+- Increase loglevel in case of invalid config options
+- [doc] installonly_limit documentation follows behavior
+- Prevent traceback (catch ValueError) if pkg is from cmdline
+- Add documentation for config option sslverifystatus (RhBug:1814383)
+- Check for specific key string when verifing signatures (RhBug:1915990)
+- Use rpmkeys binary to verify package signature (RhBug:1915990)
+- Bugs fixed (RhBug:1916783)
+- Preserve file mode during log rotation (RhBug:1910084)
+
+* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 4.6.1-2
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Tue Mar 02 2021 Nicola Sella <nsella@redhat.com> - 4.6.1-1
+- Update to 4.6.1
+- Fix recreate script
+- Add unit test for fill_sack_from_repos_in_cache (RhBug:1865803)
+- Add docs and examples for fill_sack_from_repos_in_cache (RhBug:1865803)
+- [spec] remove python2 support
+- Remove problematic language
+- The noroot plugin no longer exists, remove mention
+- Run tests for fill_sack_from_repos_in_cache in installroot (RhBug:1865803)
+- expand history to full term size when output is redirected (RhBug:1852577) (RhBug:1852577,1906970)
+- [doc] Fix: "sslcacert" contains path to the file
+- [doc] Added proxy ssl configuration options, increase libdnf require
+- Set persistdir and substitutions for fill_sack_from_repos_in_cache tests (RhBug:1865803)
+- Update documentation for module_obsoletes and module_stream_switch
+- print additional information when verifying GPG key using DNS
+- Bugs fixed (RhBug:1897573)
+- Remove hardcoded logfile permissions (RhBug:1910084)
+- Enhanced detection of plugins removed in transaction (RhBug:1929163)
+
+* Thu Jan 28 2021 Nicola Sella <nsella@redhat.com> - 4.6.0-1
+- Update to 4.6.0
+- Log scriptlets output also for API users (RhBug:1847340)
+- Fix module remove --all when no match spec (RhBug:1904490)
+- yum.misc.decompress() to handle uncompressed files (RhBug:1895059)
+- Make an error message more informative (RhBug:1814831)
+- Add deprecation notice to help messages of deplist
+- Remove Base._history_undo_operations() as it was replaced with transaction_sr code
+- cli/output: Return number of listed packages from listPkgs()
+- Clean up history command error handling
+- [doc] Describe install with just a name and obsoletes (RhBug:1902279)
+- Add api function fill_sack_from_repos_in_cache to allow loading a repo cache with repomd and (solv file or primary xml) only (RhBug:1865803)
+- Packages installed/removed via DNF API are logged into dnf.log (RhBug:1855158)
+- Support comps groups in history redo (RhBug:1657123,1809565,1809639)
+- Support comps groups in history rollback (RhBug:1657123,1809565,1809639)
+- Support comps groups in history undo (RhBug:1657123,1809565,1809639)
+- New optional parameter for filter_modules enables following modular obsoletes based on a config option module_obsoletes
+- Add get_header() method to the Package class (RhBug:1876606)
+- Fix documentation of globs not supporting curly brackets (RhBug:1913418)
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 4.5.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Thu Dec 03 2020 Nicola Sella <nsella@redhat.com> - 4.5.2-1
+- Update to 4.5.2
+- Change behaviour of Package().from_repo
+
+* Wed Dec 02 2020 Nicola Sella <nsella@redhat.com> - 4.5.1-1
+- Add a get_current() method to SwdbInterface
+- Add `from_repo` attribute for Package class (RhBug:1898968,1879168)
+- Correct description of Package().reponane attribute
+- Add unittest for new API
+- Make rotated log file (mode, owner, group) match previous log settings (RhBug:1894344)
+- [doc] Improve description of modular filtering
+- [doc] add documentation for from_repo
+- [doc] deprecated alias for dnf repoquery --deplist <deplist_option-label>
+- New config option module_allow_stream_switch allows switching enabled streams
+
+* Mon Nov 23 2020 Nicola Sella <nsella@redhat.com> - 4.4.2-1
+- Update to 4.4.2
+- spec: Fix building with new cmake macros (backport from downstream)
+- Warn about key retrieval over http:
+- Fix --setopt=cachedir writing outside of installroot
+- Add vendor to dnf API (RhBug:1876561)
+- Add allow_vendor_change option (RhBug:1788371) (RhBug:1788371)
+
+* Thu Oct 29 2020 Adam Williamson <awilliam@redhat.com> - 4.4.0-3
+- Rebuild to keep NVR ahead of Fedora 32
+
+* Tue Oct 13 2020 Ales Matej <amatej@redhat.com> - 4.4.0-2
+- Increase required libdnf (hawkey) version
+
+* Wed Oct 07 2020 Nicola Sella <nsella@redhat.com> - 4.4.0-1
+- Update to 4.4.0
+- Handle empty comps group name (RhBug:1826198)
+- Remove dead history info code (RhBug:1845800)
+- Improve command emmitter in dnf-automatic
+- Enhance --querytags and --qf help output
+- [history] add option --reverse to history list (RhBug:1846692)
+- Add logfilelevel configuration (RhBug:1802074)
+- Don't turn off stdout/stderr logging longer than necessary (RhBug:1843280)
+- Mention the date/time that updates were applied
+- [dnf-automatic] Wait for internet connection (RhBug:1816308)
+- [doc] Enhance repo variables documentation (RhBug:1848161,1848615)
+- Add librepo logger for handling messages from librepo (RhBug:1816573)
+- [doc] Add package-name-spec to the list of possible specs
+- [doc] Do not use <package-nevr-spec>
+- [doc] Add section to explain -n, -na and -nevra suffixes
+- Add alias 'ls' for list command
+- README: Reference Fedora Weblate instead of Zanata
+- remove log_lock.pid after reboot(Rhbug:1863006)
+- comps: Raise CompsError when removing a non-existent group
+- Add methods for working with comps to RPMTransactionItemWrapper
+- Implement storing and replaying a transaction
+- Log failure to access last makecache time as warning
+- [doc] Document Substitutions class
+- Dont document removed attribute ``reports`` for get_best_selector
+- Change the debug log timestamps from UTC to local time
+
+* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.23-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue Jun 02 2020 Nicola Sella <nsella@redhat.com> - 4.2.23-1
+- Fix behavior of install-n, autoremove-n, remove-n, repoquery-n
+- Fix behavior of localinstall and list-updateinfo aliases
+- Add updated field to verbose output of updateinfo list (RhBug: 1801092)
+- Add comment option to transaction (RhBug:1773679)
+- Add new API for handling gpg signatures (RhBug:1339617)
+- Verify GPG signatures when running dnf-automatic (RhBug:1793298)
+- Fix up Conflicts: on python-dnf-plugins-extras
+- [doc] Move yum-plugin-post-transaction-actions to dnf-plugins-core
+- Remove args "--set-enabled", "--set-disabled" from DNF (RhBug:1727882)
+- Search command is now alphabetical (RhBug:1811802)
+- Fix downloading packages with full URL as their location
+- repo: catch libdnf.error.Error in addition to RuntimeError in load() (RhBug:1788182)
+- History table to max size when redirect to file (RhBug:1786335,1786316)
+
+* Sat May 23 2020 Miro Hrončok <mhroncok@redhat.com> - 4.2.21-2
+- Rebuilt for Python 3.9
+
+* Wed Apr 01 2020 Aleš Matěj <amatej@redhat.com> - 4.2.21-1
+- Update to 4.2.21
+- Fix completion helper if solv files not in roon cache (RhBug:1714376)
+- Add bash completion for 'dnf module' (RhBug:1565614)
+- Check command no longer reports  missing %pre and %post deps (RhBug:1543449)
+- Check if arguments can be encoded in 'utf-8'
+- [doc] Remove incorrect information about includepkgs (RhBug:1813460)
+- Fix crash with "dnf -d 6 repolist" (RhBug:1812682)
+- Do not print the first empty line for repoinfo
+- Redirect logger and repo download progress when --verbose
+- Respect repo priority when listing packages (RhBug:1800342)
+- [doc] Document that list and info commands respect repo priority
+- [repoquery] Do not protect running kernel for --unsafisfied (RhBug:1750745)
+- Remove misleading green color from the "broken dependencies" lines (RhBug:1814192)
+- [doc] Document color options
+
+* Mon Feb 24 2020 Aleš Matěj <amatej@redhat.com> - 4.2.19-1
+- List arguments: only first empty value is used (RhBug:1788154)
+- Report missing profiles or default as broken module (RhBug:1790967)
+- repoquery: fix rich deps matching by using provide expansion from libdnf (RhBug:1534123)
+- [documentation] repoquery --what* with  multiple arguments (RhBug:1790262)
+- Format history table to use actual terminal width (RhBug:1786316)
+- Update `dnf alias` documentation
+- Handle custom exceptions from libdnf
+- Fix _skipped_packages to return only skipped (RhBug:1774617)
+- Add setter for tsi.reason
+- Add new hook for commands: Run_resolved
+- Add doc entry: include url (RhBug 1786072)
+- Clean also .yaml repository metadata
+- New API function base.setup_loggers() (RhBug:1788212)
+- Use WantedBy=timers.target for all dnf timers (RhBug:1798475)
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.18-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Wed Jan 15 2020 Aleš Matěj <amatej@redhat.com> - 4.2.18-1
+- [doc] Remove note about user-agent whitelist
+- Do a substitution of variables in repo_id (RhBug:1748841)
+- Respect order of config files in aliases.d (RhBug:1680489)
+- Unify downgrade exit codes with upgrade (RhBug:1759847)
+- Improve help for 'dnf module' command (RhBug:1758447)
+- Add shell restriction for local packages (RhBug:1773483)
+- Fix detection of the latest module (RhBug:1781769)
+- Document the retries config option only works for packages (RhBug:1783041)
+- Sort packages in transaction output by nevra (RhBug:1773436)
+- Honor repo priority with check-update (RhBug:1769466)
+- Strip '\' from aliases when processing (RhBug:1680482)
+- Print the whole alias definition in case of infinite recursion (RhBug:1680488)
+- Add support of commandline packages by repoquery (RhBug:1784148)
+- Running with tsflags=test doesn't update log files
+- Restore functionality of remove --oldinstallonly
+- Allow disabling individual aliases config files (RhBug:1680566)
+
+* Fri Nov 29 2019 Ales Matej <amatej@redhat.com> - 4.2.17-1
+- Enable versionlock for check-update command (RhBug:1750620)
+- Add error message when no active modules matched (RhBug:1696204)
+- Log mirror failures as warning when repo load fails (RhBug:1713627)
+- dnf-automatic: Change all systemd timers to a fixed time of day (RhBug:1754609)
+- DNF can use config from the remote location (RhBug:1721091)
+- [doc] update reference to plugin documentation (RhBug:1706386)
+- [yum compatibility] Report all packages in repoinfo
+- [doc] Add definition of active/inactive module stream
+- repoquery: Add a switch to disable modular excludes
+- Report more informative messages when no match for argument (RhBug:1709563)
+- [doc] Add description of excludes in dnf
+- Report more descriptive message when removed package is excluded
+- Add module repoquery command
+- Fix assumptions about ARMv8 and the way the rpm features work (RhBug:1691430)
+- Add Requires information into module info commands
+- Enhance inheritance of transaction reasons (RhBug:1672618,1769788)
+- Make DNF compatible with FIPS mode (RhBug:1762032)
+- Return always alphabetically sorted modular profiles
+
+* Tue Nov 12 2019 Ales Matej <amatej@redhat.com> - 4.2.15-2
+- Revert: Fix messages for starting and failing scriptlets (RhBug:1724779)
+- Fix traceback when trying to install package with fileconflict
+
+* Wed Nov 06 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 4.2.15-1
+- Update to 4.2.15
+- Fix downloading local packages into destdir (RhBug:1727137)
+- Report skipped packages with identical nevra only once (RhBug:1643109)
+- Restore functionality of dnf remove --duplicates (RhBug:1674296)
+- Improve API documentation
+- Document NEVRA parsing in the man page
+- Do not wrap output when no terminal (RhBug:1577889)
+- Allow to ship alternative dnf.conf (RhBug:1752249)
+- Don't check if repo is expired if it doesn't have loaded metadata (RhBug:1745170)
+- Remove duplicate entries from "dnf search" output (RhBug:1742926)
+- Set default value of repo name attribute to repo id (RhBug:1669711)
+- Allow searching in disabled modules using "dnf module provides" (RhBug:1629667)
+- Group install takes obsoletes into account (RhBug:1761137)
+- Improve handling of vars
+- Do not load metadata for repolist commands (RhBug:1697472,1713055,1728894)
+- Fix messages for starting and failing scriptlets (RhBug:1724779)
+- Don't show older install-only pkgs updates in updateinfo (RhBug:1649383,1728004)
+- Add --ids option to the group command (RhBug:1706382)
+- Add --with_cve and --with_bz options to the updateinfo command (RhBug:1750528)
+
+* Tue Oct 01 2019 Ales Matej <amatej@redhat.com> - 4.2.11-2
+- Fix required hawkey_version
+
+* Tue Oct 01 2019 Ales Matej <amatej@redhat.com> - 4.2.11-1
+- Improve modularity documentation (RhBug:1730162,1730162,1730807,1734081)
+- Fix detection whether system is running on battery (used by metadata caching timer) (RhBug:1498680)
+- New repoquery queryformat: %{reason}
+- Print rpm errors during test transaction (RhBug:1730348) 
+- Fix: --setopt and repo with dots
+- Fix incorrectly marked profile and stream after failed rpm transaction check (RhBug:1719679)
+- Show transaction errors inside dnf shell (RhBug:1743644)
+- Don't reinstall modified packages with the same NEVRA (RhBug:1644241)
+- dnf-automatic now respects versionlock excludes (RhBug:1746562)
+- Fully enable the modular fail safe mechanism (RhBug:1616167)
+
+* Tue Sep 10 2019 Jaroslav Mracek <jmracek@redhat.com> - 4.2.9-3
+- Backport patch to fix reinstalling packages with a different buildtime
+
+* Fri Aug 16 2019 Miro Hrončok <mhroncok@redhat.com> - 4.2.9-2
+- Rebuilt for Python 3.8
+
+* Tue Aug 13 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 4.2.9-1
+- Update to 4.2.9
+- Accept multiple specs in repoquery options (RhBug:1667898)
+- Prevent switching modules in all cases (RhBug:1706215)
+- [history] Don't store failed transactions as succeeded
+- [history] Do not require root for informative commands
+- [dnssec] Fix UnicodeWarning when using new rpm (RhBug:1699650)
+- Print rpm error messages during transaction (RhBug:1677199)
+- Report missing default profile as an error (RhBug:1669527)
+- Apply excludes before modular excludes (RhBug:1709453)
+- Improve help for command line arguments (RhBug:1659328)
+- [doc] Describe a behavior when plugin is removed (RhBug:1700741)
+- Add new modular API method ModuleBase.get_modules
+- Mark features used by ansible, anaconda and subscription-manager as an API
+- Prevent printing empty Error Summary (RhBug: 1690414)
+- [doc] Add user_agent and countme options
+
+* Mon Aug 12 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 4.2.7-4
+- Drop %%systemd_requires from main package
+
+* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.7-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Mon Jul 22 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 4.2.7-2
+- Revert patch: [rpm] add detection for armv7hcnl
+
+* Thu Jul 04 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 4.2.7-1
+- Update to 4.2.7
+- librepo: Turn on debug logging only if debuglevel is greater than 2
+  (RhBug:1355764,1580022)
+- Fix issues with terminal hangs when attempting bash completion
+  (RhBug:1702854)
+- Rename man page from dnf.automatic to dnf-automatic to match command name
+- [provides] Enhanced detecting of file provides (RhBug:1702621)
+- [provides] Sort the output packages alphabetically
+- Set default to skip_if_unavailable=false (RhBug:1679509)
+- Fix package reinstalls during yum module remove (RhBug:1700529)
+- Fail when "-c" option is given nonexistent file (RhBug:1512457)
+- Reuse empty lock file instead of stopping dnf (RhBug:1581824)
+- Propagate comps 'default' value correctly (RhBug:1674562)
+- Better search of provides in /(s)bin/ (RhBug:1657993)
+- Add detection for armv7hcnl (RhBug:1691430)
+- Fix group install/upgrade when group is not available (RhBug:1707624)
+- Report not matching plugins when using --enableplugin/--disableplugin
+  (RhBug:1673289) (RhBug:1467304)
+- Add support of modular FailSafe (RhBug:1623128) (temporarily with warnings
+  instead of errors when installing modular RPMs without modular metadata)
+- Replace logrotate with build-in log rotation for dnf.log and dnf.rpm.log
+  (RhBug:1702690)
+
+* Thu Jun 27 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 4.2.5-2
+- Backport patches to enhance synchronization of rpm transaction to swdb
+
+* Thu Apr 25 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 4.2.5-1
+- Update to 4.2.5
+- Fix multilib obsoletes (RhBug:1672947)
+- Do not remove group package if other packages depend on it
+- Remove duplicates from "dnf list" and "dnf info" outputs
+- Installroot now requires absolute path
+- Allow globs in setopt in repoid part
+- Fix formatting of message about free space required
+- [doc] Add info of relation update_cache with fill_sack (RhBug:1658694)
+- Fix installation failiure when duplicit RPMs are specified (RhBug:1687286)
+- Add command abbreviations (RhBug:1634232)
+- Allow plugins to terminate dnf (RhBug:1701807)
+
+* Thu Apr 04 15:15:12 CET 2019 Robert-André Mauchin <zebob.m@gmail.com> - 4.2.2-2
+- Add patch fixing the installation of completion_helper.py
+- Fix #1695853
+
+* Wed Mar 27 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 4.2.2-1
+- [conf] Use environment variables prefixed with DNF_VAR_
+- Enhance documentation of --whatdepends option (RhBug:1687070)
+- Allow adjustment of repo from --repofrompath (RhBug:1689591)
+- Document cachedir option (RhBug:1691365)
+- Retain order of headers in search results (RhBug:1613860)
+- Solve traceback with the "dnf install @module" (RhBug:1688823)
+- Build "yum" instead of "dnf-yum" on Fedora 31
+
+* Mon Mar 11 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 4.2.1-1
+- Do not allow direct module switch (RhBug:1669491)
+- Use improved config parser that preserves order of data
+- Fix alias list command (RhBug:1666325)
+- Postpone yum conflict to F31
+- Update documentation: implemented plugins; options; deprecated commands (RhBug:1670835,1673278)
+- Support zchunk (".zck") compression
+- Fix behavior  of ``--bz`` option when specifying more values
+- Follow RPM security policy for package verification
+- Update modules regardless of installed profiles
+- Add protection of yum package (RhBug:1639363)
+- Fix ``list --showduplicates`` (RhBug:1655605)
+
+* Wed Feb 13 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 4.1.0-1
+- Update to 4.1.0
+- Allow to enable modules that break default modules (RhBug:1648839)
+- Enhance documentation - API examples
+- Add --nobest option
+- Revert commit that adds best as default behavior
+
+* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.10-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Wed Dec 12 2018 Jaroslav Mracek <jmracek@redhat.com> - 4.0.10-1
+- Update to 4.0.10
+- Updated difference YUM vs. DNF for yum-updateonboot
+- Added new command ``dnf alias [options] [list|add|delete] [<name>...]`` to allow the user to
+  define and manage a list of aliases
+- Enhanced documentation
+- Unifying return codes for remove operations
+- [transaction] Make transaction content available for commands
+- Triggering transaction hooks if no transaction (RhBug:1650157)
+- Add hotfix packages to install pool (RhBug:1654738)
+- Report group operation in transaction table
+- [sack] Change algorithm to calculate rpmdb_version
+
+* Thu Nov 22 2018 Jaroslav Mracek <jmracek@redhat.com> - 4.0.9-1
+- Added dnf.repo.Repo.get_http_headers
+- Added dnf.repo.Repo.set_http_headers
+- Added dnf.repo.Repo.add_metadata_type_to_download
+- Added dnf.repo.Repo.get_metadata_path
+- Added dnf.repo.Repo.get_metadata_content
+- Added --changelogs option for check-update command
+- [module] Add information about active modules
+- Hide messages created only for logging
+- Enhanced --setopt option
+- [module] Fix dnf remove @<module>
+- [transaction] Make transaction content available for plugins
+
+* Wed Nov 07 2018 Jaroslav Mracek <jmracek@redhat.com> - 4.0.4-2
+- Backport fixes for RHBZ#1642796 from upstream master
+
+* Mon Oct 15 2018 Jaroslav Mracek <jmracek@redhat.com> - 4.0.4-1
+- Update to 4.0.4
+- Add dnssec extension
+- Set termforce to AUTO to automatically detect if stdout is terminal
+- Repoquery command accepts --changelogs option (RhBug:1483458)
+- Calculate sack version from all installed packages (RhBug:1624291)
+- [module] Allow to enable module dependencies (RhBug:1622566)
+
+* Tue Oct 09 2018 Adam Williamson <awilliam@redhat.com> - 3.6.1-3
+- Backport fixes for RHBZ#1616118 from upstream master
+
+* Sat Sep 29 2018 Kevin Fenzi <kevin@scrye.com> - 3.6.1-2
+- Temp re-add python2 package to get rawhide composes working again.
+
+* Tue Sep 25 2018 Jaroslav Mracek <jmracek@redhat.com> - 3.6.1-1
+- [module] Improved module commands list, info
+- [module] Reports error from module solver
+- Fix: Error detected when calling 'RepoCB.fastestMirror' (RhBug:1628056)
+- Preserve packages from other installed mod profiles (RhBug:1629841)
+- [spec] Postpone conflict with yum to Fedora 30+ (RhBug:1600444)
+- [cli] Install command recommends alternative packages (RhBug:1625586)
+- [cli] Fix case insensitive hint (1628514)
+- Fix installed profiles for module info (RhBug:1629689)
+- Fix module provides not having consistent output (RhBug:1623866)
+- Enhance label for transaction table (RhBug:1609919)
+- Implement C_, the gettext function with a context (RhBug:1305340)
+- Actually disambiguate some messages using C_ (RhBug:1305340)
+- Restore 'strict' choice for group installs (#1461539)
+- [repoquery] More strict queryformat parsing (RhBug:1631458)
+- Redirect repo progress to std error (RhBug:1626011)
+- Unify behavior of remove and module remove (RhBug:1629848)
+- Change behavior of disabled module for module install (RhBug:1629711)
+- Allow enablement on disabled plugin (RhBug:1614539)
+
+* Thu Sep 20 2018 Adam Williamson <awilliam@redhat.com> - 3.5.1-2
+- Backport PR #1038 to make compose fail on missing group packages again
+
+* Mon Sep 10 2018 Jaroslav Mracek <jmracek@redhat.com> - 3.5.1-1
+- [module] Fixed list and info subcommands
+
+* Fri Sep 07 2018 Jaroslav Mracek <jmracek@redhat.com> - 3.5.0-1
+- New implementation of modularity
+
+* Mon Aug 13 2018 Daniel Mach <dmach@redhat.com> - 3.3.0-1
+- [misc] Fallback to os.getuid() if /proc/self/loginuid can't be read (RhBug:1597005)
+- [translations] Update translations from zanata.
+- [doc] Update module documentation.
+- [module] Fix `module provides` output.
+- [module] Add `module reset` command.
+- [module] Fix module disable command
+- [repo] Improve error message on broken repo (RhBug:1595796)
+- [doc] Enhance a command documentation (RhBug:1361617)
+- [module] Automatically save module persistor in do_transaction().
+- [drpm] Fixed setting deltarpm_percentage=0 to switch drpm off
+- [repo] Split base.download_packages into two functions
+- [output] Use libdnf wrapper for smartcols
+- [conf] Do not traceback on empty option (RhBug:1613577)
+
+* Wed Aug 08 2018 Adam Williamson <awilliam@redhat.com> - 3.2.0-2
+- Fix a crash that breaks Rawhide composes (RhBug:1613577)
+
+* Tue Aug 07 2018 Daniel Mach <dmach@redhat.com> - 3.2.0-1
+- [sack] Use module_platform_id option.
+- [module] Switch module persistor to libdnf implementation.
+- [module] Auto-enable module streams based on installed RPMs.
+- [transaction] Fix: show packages from the current transaction.
+- [conf] Convert any VectorString type to list.
+- [module] Replace 'enabled' config option with 'state'.
+- [install_specs] Do not exclude groups' packages
+- [module] Use module sack filtering from libdnf
+- [module] Many UX fixes.
+
+* Fri Jul 27 2018 Daniel Mach <dmach@redhat.com> - 3.1.0-1
+- [module] Move 'hotfixes' conf option to libdnf and rename it to 'module_hotfixes'.
+- [goal] Exclude @System repo packages from distro_sync.
+- [conf] Setup configuration values using C++ bindings.
+- [module] Drop module lock command.
+- [crypto] Use handle from repo in dnf.crypto.retrieve().
+- [module] Assume a 'default' profile exists for all modules (RhBug:1568165)
+- [base] Introduce easy installation of package, group and module specs.
+
+* Sun Jul 22 2018 Daniel Mach <dmach@redhat.com> - 3.0.4-1
+- [transaction] Fix 'TransactionItem not found for key' error.
+- [module] Allow removing module profile without specifying a stream.
+- [module] Fix 'BaseCli' object has no attribute '_yumdb' error.
+- [callback] Fix TransactionDisplay.PKG_ERASE redirect to a non-existing constant.
+- [spec] Change yum compat package version to 4.0.version.
+- [cache] Clean transaction temp files after successfull transaction
+- [log] Log messages from libdnf logger
+- [transaction] Add states to report rpm transaction progress
+- [transaction] Cache TransactionItem during handling of RPM callback (RhBug:1599597)
+- [systemd] dnf-makecache.timer: move to multi-user to fix loop
+
+* Mon Jul 16 2018 Adam Williamson <awilliam@redhat.com> - 3.0.3-4
+- Backport fix for dnf-makecache.timer loop from git
+- Resolves: rhbz#1600823
+
+* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.3-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Thu Jul 12 2018 Martin Hatina <mhatina@redhat.com> - 3.0.3-2
+- Ensure that correct python version is used for build
+
+* Thu Jul 12 2018 Martin Hatina <mhatina@redhat.com> - 3.0.3-1
+- Bug fix release
+
+* Fri Jun 29 2018 Jaroslav Mracek <jmracek@redhat.com> - 3.0.2-1
+- Update to 3.0.2-1
+
+* Tue Jun 26 2018 Jaroslav Mracek <jmracek@redhat.com> - 3.0.1-1
+- Update to 3.0.1-1
+- Support of MODULES - new DNF command `module`
+- Add attribute dnf.conf.Conf.proxy_auth_method
+- New repoquery option `--depends` and `--whatdepends`
+- Enhanced support of variables
+- Enhanced documentation
+- Resolves: rhbz#1565599
+- Resolves: rhbz#1508839
+- Resolves: rhbz#1506486
+- Resolves: rhbz#1506475
+- Resolves: rhbz#1505577
+- Resolves: rhbz#1505574
+- Resolves: rhbz#1505573
+- Resolves: rhbz#1480481
+- Resolves: rhbz#1496732
+- Resolves: rhbz#1497272
+- Resolves: rhbz#1488100
+- Resolves: rhbz#1488086
+- Resolves: rhbz#1488112
+- Resolves: rhbz#1488105
+- Resolves: rhbz#1488089
+- Resolves: rhbz#1488092
+- Resolves: rhbz#1486839
+- Resolves: rhbz#1486839
+- Resolves: rhbz#1486827
+- Resolves: rhbz#1486816
+- Resolves: rhbz#1565647
+- Resolves: rhbz#1583834
+- Resolves: rhbz#1576921
+- Resolves: rhbz#1270295
+- Resolves: rhbz#1361698
+- Resolves: rhbz#1369847
+- Resolves: rhbz#1368651
+- Resolves: rhbz#1563841
+- Resolves: rhbz#1387622
+- Resolves: rhbz#1575998
+- Resolves: rhbz#1577854
+- Resolves: rhbz#1387622
+- Resolves: rhbz#1542416
+- Resolves: rhbz#1542416
+- Resolves: rhbz#1496153
+- Resolves: rhbz#1568366
+- Resolves: rhbz#1539803
+- Resolves: rhbz#1552576
+- Resolves: rhbz#1545075
+- Resolves: rhbz#1544359
+- Resolves: rhbz#1547672
+- Resolves: rhbz#1537957
+- Resolves: rhbz#1542920
+- Resolves: rhbz#1507129
+- Resolves: rhbz#1512956
+- Resolves: rhbz#1512663
+- Resolves: rhbz#1247083
+- Resolves: rhbz#1247083
+- Resolves: rhbz#1247083
+- Resolves: rhbz#1519325
+- Resolves: rhbz#1492036
+- Resolves: rhbz#1391911
+- Resolves: rhbz#1391911
+- Resolves: rhbz#1479330
+- Resolves: rhbz#1505185
+- Resolves: rhbz#1305232
+
+* Sat Jun 16 2018 Miro Hrončok <mhroncok@redhat.com> - 2.7.5-18
+- Rebuilt for Python 3.7
+
+* Wed Jun 06 2018 Marek Blaha <mblaha@redhat.com> - 2.7.5-17
+- Demote deltarpm to weak dependencies again
+
+* Tue May 29 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-16
+- Apply util-Correctly-source-errno.EEXIST patch
+
+* Mon May 28 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-15
+- Do not require libdnf
+
+* Fri May 25 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-14
+- Fix patch applying.
+
+* Fri May 25 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-13
+- Rebase to dnf from dnf-2-modularity-6 release.
+
+* Wed Apr 18 2018 Daniel Mach <dmach@redhat.com> - 2.7.5-12
+- Fix defaults loading.
+
+* Tue Apr 17 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-11
+- Rebase to dnf from dnf-2-modularity-4 release.
+
+* Mon Mar 26 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-10
+- Require libmodulemd.
+
+* Mon Mar 26 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-9
+- Rebase to dnf from dnf-2-modularity-3 release.
+
+* Mon Feb 12 2018 Daniel Mach <dmach@redhat.com> - 2.7.5-8
+- Rebase to dnf from dnf-2-modularity branch.
+
+* Thu Feb 08 2018 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-7
+- Demote deltarpm to weak dependencies
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.5-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Wed Jan 03 2018 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-5
+- Use %%systemd_requires
+- Update Python 2 dependency declarations to new packaging standards
+  (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
+
+* Wed Nov 29 2017 Jaroslav Mracek <jmracek@redhat.com> - 2.7.5-4
+- Fix problem with demands.cacheonly that caused problems for system-upgrade
+
+* Tue Nov 07 2017 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-3
+- Remove platform-python subpackage
+
+* Fri Oct 27 2017 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-2
+- Enable usage of rich deps for NM integration
+
+* Wed Oct 18 2017 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-1
+- Improve performance for excludes and includes handling (RHBZ #1500361)
+- Fixed problem of handling checksums for local repositories (RHBZ #1502106)
+- Fix traceback when using dnf.Base.close() (RHBZ #1503575)
+
+* Mon Oct 16 2017 Jaroslav Mracek <jmracek@redhat.com> - 2.7.4-1
+- Update to 2.7.4-1
+- Enhanced performance for excludes and includes handling
+- Solved memory leaks at time of closing of dnf.Base()
+- Resolves: rhbz#1480979 - I thought it abnormal that dnf crashed.
+- Resolves: rhbz#1461423 - Memory leak in python-dnf
+- Resolves: rhbz#1499564 - dnf list installed crashes
+- Resolves: rhbz#1499534 - dnf-2 is much slower than dnf-1 when handling groups
+- Resolves: rhbz#1499623 - Mishandling stderr vs stdout (dnf search, dnf repoquery)
+
+* Fri Oct 06 2017 Igor Gnatenko <ignatenko@redhat.com> - 2.7.3-1
+- Fix URL detection (RHBZ #1472847)
+- Do not remove downloaded files with --destdir option (RHBZ #1498426)
+- Fix handling of conditional packages in comps (RHBZ #1427144)
+
+* Mon Oct 02 2017 Jaroslav Mracek <jmracek@redhat.com> - 2.7.2-1
+- Update to 2.7.2-1
+- Added new option ``--comment=<comment>`` that adds a comment to transaction in history
+- :meth:`dnf.Base.pre_configure_plugin` configure plugins by running their pre_configure() method
+- Added pre_configure() methotd for plugins and commands to configure dnf before repos are loaded
+- Resolves: rhbz#1421478 - dnf repository-packages: error: unrecognized arguments: -x rust-rpm-macros
+- Resolves: rhbz#1491560 - 'dnf check' reports spurious "has missing requires of" errors
+- Resolves: rhbz#1465292 - DNF remove protected duplicate package
+- Resolves: rhbz#1279001 - [RFE] Missing dnf --downloaddir option
+- Resolves: rhbz#1212341 - [RFE] Allow plugins to override the core configuration
+- Resolves: rhbz#1299482 - mock --init fails with message "Failed calculating RPMDB checksum"
+- Resolves: rhbz#1488398 - dnf upstream tests failures on f26
+- Resolves: rhbz#1192811 - dnf whatprovides should show which provides matched a pattern
+- Resolves: rhbz#1288845 - "dnf provides" wildcard matching is unreliable (not all packages with matches listed)
+- Resolves: rhbz#1473933 - [abrt] dnf-automatic: resolved(): rpm_conf.py:58:resolved:AttributeError: 'Rpmconf' object has no attribute '_interactive'
+- Resolves: rhbz#1237349 - dnf autoremove not removing what dnf list extras shows
+- Resolves: rhbz#1470050 - the 'priority=' option in /etc/yum.repos.d/*.repo is not respected
+- Resolves: rhbz#1347927 - dnf --cacheonly downloads packages
+- Resolves: rhbz#1478115 - [abrt] dnf: _hcmd_undo(): __init__.py:888:_hcmd_undo:IndexError: list index out of range
+- Resolves: rhbz#1461171 -  RFE: support --advisory= with install
+- Resolves: rhbz#1448874 - "dnf needs-restarting" vanished from bash completion
+- Resolves: rhbz#1495116 - Dnf version fails with traceback in container
+
+* Mon Aug 07 2017 Jaroslav Mracek <jmracek@redhat.com> 2.6.3-1
+- Fix problem with dnf.Package().remote_location() (RhBug:1476215) (Jaroslav
+  Mracek)
+- Change behavior of -C according to documentation (RhBug:1473964) (Jaroslav
+  Mracek)
+- It should prevent to ask attribute of None (RhBug:1359482) (Jaroslav Mracek)
+- Solve a problems with --arch options (RhBug:1476834) (Jaroslav Mracek)
+- Use security plugin code for dnf-automatic (Jaroslav Mracek)
+- Fix unicode error for python2 (Jaroslav Mracek)
+- Inform about packages installed for group (Jaroslav Mracek)
+- Provide info if pkg is removed due to dependency (RhBug:1244755) (Jaroslav
+  Mracek)
+- Unify format of %%{_mandir} paths in dnf.spec (Jaroslav Mracek)
+- Remove test_yumlayer.py as unneeded test (Jaroslav Mracek)
+- Provide yum4 package for rhel7 build (Jaroslav Mracek)
+- Make yum compatible layer very minimal (RhBug:1476748) (Jaroslav Mracek)
+- Remove metadata_expire from yum compatible layer (Jaroslav Mracek)
+- Remove keepcache from yum compatibility layer (Jaroslav Mracek)
+- Remove options from yum conf (Jaroslav Mracek)
+- Remove unused functionality from  yum compatible layer (Jaroslav Mracek)
+- Add deplist command for dnf (Jaroslav Mracek)
+- Fix problems with --downloaddir options (RhBug:1476464) (Jaroslav Mracek)
+- Move description of --forcearch into proper place (Jaroslav Mracek)
+- Provide description of --downloaddir option (Jaroslav Mracek)
+- Fix if in spec file (Jaroslav Mracek)
+- Add description of "test" tsflags (Jaroslav Mracek)
+- Enable import gpg_keys with tsflag test (RhBug:1464192) (Jaroslav Mracek)
+- Keep old reason when undoing erase (RhBug:1463107) (Eduard Čuba)
+- spec: eliminate other weak dependencies for el<=7 (Igor Gnatenko)
+- spec: do not strongly require inhibit plugin (Igor Gnatenko)
+- Inform that packages are only downloaded (RhBug:1426196) (Jaroslav Mracek)
+- Move releasever check after the etc/dnf/vars substitutions. (Alexander
+  Kanavin)
+- Provide substitution for Repodict.add_new_repo() (RhBug:1457507) (Jaroslav
+  Mracek)
+
+* Mon Jul 24 2017 Jaroslav Mracek <jmracek@redhat.com> 2.6.2-1
+- Remove autodeglob optimization (Jaroslav Rohel)
+- Integrate --destdir with --destdir from download plugin (Ondřej Sojka)
+- Add CLI option --destdir (RhBug:1279001) (Ondřej Sojka)
+- Add myself to the AUTHORS file (Nathaniel McCallum)
+- Add the --forcearch CLI flag (Nathaniel McCallum)
+- Add 'ignorearch' option (Nathaniel McCallum)
+- Provide an API for setting 'arch' and 'basearch' (Nathaniel McCallum)
+- Add nevra forms for repoquery command (Jaroslav Rohel)
+- Fix UnicodeDecodeError during checkSig() on non UTF-8 locale (RhBug:1397848)
+  (Jaroslav Rohel)
+- Add dnf option --noautoremove (RhBug:1361424) (Jaroslav Mracek)
+- Add group argument for mark command (Jaroslav Mracek)
+- Report problems for each pkg during gpgcheck (RhBug:1387925) (Jaroslav
+  Mracek)
+- fix minor spelling mistakes (René Genz)
+- Print warning when wrong delimiter in cache (RhBug:1332099) (Vítek Hoch)
+- Fix the loading of config for dnf-automatic command_email (RhBug:1470116)
+  (Jaroslav Rohel)
+- Enable download progress bar if redirected output (RhBug:1161950) (Jaroslav
+  Mracek)
+- Support short abbrevations of commands (RhBug:1320254) (Vítek Hoch)
+- Remove unused variables kwargs (Jaroslav Mracek)
+- Not reinstall packages if install from repository-pkgs used (Jaroslav Mracek)
+- bump dnf version to 2.6.0 (Igor Gnatenko)
+- spec: use python2- prefix for hawkey (Igor Gnatenko)
+- spec: use sphinx-build binary rather than package name (Igor Gnatenko)
+- spec: python-bugzilla is not needed for building (Igor Gnatenko)
+- spec: fix instructions about generating tarball (Igor Gnatenko)
+- po: Update translations (Igor Gnatenko)
+- Add an example of installation without weak-deps  (RhBug:1424723) (Jaroslav
+  Mracek)
+- Add detection if mirrorlist is used for metalink (Jaroslav Mracek)
+- Rename variable (Jaroslav Mracek)
+- Add --groupmember option to repoquery (RhBug:1462486) (Jaroslav Mracek)
+- Check checksum for local repositories (RhBug:1314405) (Jaroslav Mracek)
+- Spelling fixes (Ville Skyttä)
+- repoquery --obsoletes prints obsoletes (RhBug:1457368) (Matěj Cepl)
+- Provide pkg name hint for icase (RhBug:1339280) (RhBug:1138978) (Jaroslav
+  Mracek)
+- Return only latest pkgs for "dnf list upgrades" (RhBug:1423472) (Jaroslav
+  Mracek)
+- cleanup code not executed in case of exception (Marek Blaha)
+- Allow to modify message for user confirmation (Jaroslav Mracek)
+- Add autocheck_running_kernel config option (Štěpán Smetana)
+- Inform about skipped packages for group install (RhBug:1427365) (Jaroslav
+  Mracek)
+- Remove group remove unneeded pkgs (RhBug:1398871) (RhBug:1432312) (Jaroslav
+  Mracek)
+- po: update translations (Igor Gnatenko)
+
+* Mon Jun 12 2017 Jaroslav Mracek <jmracek@redhat.com> 2.5.1-1
+- bump version to 2.5.1 + update release notes (Jaroslav Mracek)
+- Fix: dnf update --refresh fails for repo_gpgcheck=1 (RhBug:1456419) (Daniel
+  Mach)
+- Don't try to cut datetime message (Jaroslav Rohel)
+- Use localized datetime format (RhBug:1445021) (Jaroslav Rohel)
+- Work with locale date (Jaroslav Rohel)
+- Use ISO 8601 time format in logfile (Jaroslav Rohel)
+- Add unitest to prevent callbacks breakage (Jaroslav Mracek)
+- Provide compatibility for tools that do not use total_drpms (Jaroslav Mracek)
+- Requires strict usage of repoquery --recursive (Jaroslav Mracek)
+- Fix output for --resolve with --installed for repoquery (Jaroslav Mracek)
+- Remove unnecessary inheritance of yum conf options (Martin Hatina)
+- Remove alwaysprompt option support (RhBug:1400714) (Jaroslav Rohel)
+- Allow to install groups with multilib_policy=all (RhBug:1250702) (Jaroslav
+  Mracek)
+- Redesign Base.install() to provide alternatives (Jaroslav Mracek)
+- Report excludes includes into logger.debug (RhBug:1381988) (Jaroslav Mracek)
+- Provide new API to parse string to NEVRA () (Jaroslav Mracek)
+- Add more repoquery querytags (Jaroslav Rohel)
+- Not hide tracebacks (Jaroslav Mracek)
+- Solve error handling for get attr in yumdb (RhBug:1397848) (Jaroslav Mracek)
+- Provide a better error if throttle to low (RhBug:1321407) (Jaroslav Mracek)
+- Change timeout to 30s (RhBug:1291867) (Jaroslav Mracek)
+- Add pre_transaction hook for plugins (Jaroslav Rohel)
+- Not download metadata if "dnf history [info|list|userinstalled]" (Jaroslav
+  Mracek)
+- Not download metadata if "dnf repo-pkgs <repo> list --installed" (Jaroslav
+  Mracek)
+- Not download metadata if "dnf list --installed" (RhBug:1372895) (Jaroslav
+  Mracek)
+- Format pkg str for repoquery --tree due to -qf (RhBug:1444751) (Jaroslav
+  Mracek)
+
+* Mon May 22 2017 Jaroslav Mracek <jmracek@redhat.com> 2.5.0-1
+- Update release notes (Jaroslav Mracek)
+- Change documentation for history --userinstalled (RhBug:1370062) (Jaroslav
+  Mracek)
+- Change example to install plugin using versionlock (Jaroslav Mracek)
+- Remove unused method Goal.best_run_diff() (Jaroslav Mracek)
+- Change recommendations if some problems appear (RhBug:1293067) (Jaroslav
+  Mracek)
+- Report problems for goals with optional=True (Jaroslav Mracek)
+- Format resolve problem messages in method in dnf.util (Jaroslav Mracek)
+- Enhance reports about broken dep (RhBug:1398040)(RhBug:1393814) (Jaroslav
+  Mracek)
+- search: do not generate error if not match anything (RhBug:1342157) (Jaroslav
+  Rohel)
+- Check if any plugin is removed in transaction (RhBug:1379906) (Jaroslav
+  Mracek)
+- Show progress for DRPM (RhBug:1198975) (Jaroslav Mracek)
+- Fix disabledplugin option (Iavael)
+- [history]: fixed info command merged output (Eduard Čuba)
+
+* Thu May 11 2017 Jaroslav Mracek <jmracek@redhat.com> 2.4.1-1
+- bump version to 2.4.1 + update release notes (Jaroslav Mracek)
+- goal: do not mark weak dependencies as userinstalled (Igor Gnatenko)
+- fix typo in supplements (RhBug:1446756) (Igor Gnatenko)
+- Describe present behavior of installonly_limit conf option (Jaroslav Mracek)
+- Reset all transaction for groups if Base.reset() (RhBug:1446432) (Jaroslav
+  Mracek)
+- Explain how add negative num for --latest-limit (RhBug:1446641) (Jaroslav
+  Mracek)
+- trivial: don't duplicate option names (Igor Gnatenko)
+- Add support for --userinstalled for repoquery command (RhBug:1278124)
+  (Jaroslav Rohel)
+- Fix header of search result sections (RhBug:1301868) (Jaroslav Rohel)
+- Filter out src for get_best_selector (Jaroslav Mracek)
+- Add minor changes in formating of documentation (Jaroslav Mracek)
+
+* Tue May 02 2017 Jaroslav Mracek <jmracek@redhat.com> 2.4.0-1
+- po: Update translations (Igor Gnatenko)
+- po: Update translations (Igor Gnatenko)
+- introduce '--enableplugin' option (Martin Hatina)
+- Improve detection of file patterns (Jaroslav Mracek)
+- Add method _get_nevra_solution() for subject (Jaroslav Mracek)
+- Do not add "*" into query filter in _nevra_to_filters() (Jaroslav Mracek)
+- Remove usage of nevra_possibilities_real() (Jaroslav Mracek)
+- Increase performance for downgrade_to() (Jaroslav Mracek)
+- Add additional keys for get_best_query() (Jaroslav Mracek)
+- Increase performance for get_best_selector() (Jaroslav Mracek)
+- Increase performance for get_best_query() (Jaroslav Mracek)
+- Fix "Package" text translation (RhBug:1302935) (Jaroslav Rohel)
+- Create a warning if releasever is None (Jaroslav Mracek)
+- Adds cost, excludepkgs, and includepkgs to Doc (RhBug:1248684) (Jaroslav
+  Mracek)
+- Change auto-detection of releasever in empty installroot (Jaroslav Mracek)
+- Do not load system repo for makecache command (RhBug:1441636) (Jaroslav
+  Mracek)
+- Do not raise assertion if group inst and rmv pkgs (RhBug:1438438) (Jaroslav
+  Mracek)
+- yum layer using python3 (Martin Hatina)
+- Filter url protocols for baseurl in Package.remote_location (Jaroslav Mracek)
+- Add armv5tl to arm basearch (Neal Gompa)
+- Setup additional parameters for handler for remote packages (Jaroslav Mracek)
+- Use same method for user/password setting of every librepo.handle (Jaroslav
+  Mracek)
+- Fix PEP8 violations and remove unused import (Jaroslav Mracek)
+- Handle unknown file size in download progress (Jaroslav Mracek)
+- Allow to delete cashed files from command line by clean command (Jaroslav
+  Mracek)
+- Save command line packages into chachedir (RhBug:1256313) (Jaroslav Mracek)
+- Add progress bar for download of commandline pkgs (RhBug:1161950) (Jaroslav
+  Mracek)
+- Fix minor typo Closes: #781 Approved by: ignatenkobrain (Yuri Chornoivan)
+- Mark unremoved packages as failed (RhBug:1421244) (Jaroslav Mracek)
+
+* Mon Apr 10 2017 Jaroslav Mracek <jmracek@redhat.com> 2.3.0-1
+- update release notes (Jaroslav Mracek)
+- po: Update translations (Igor Gnatenko)
+- Add require of subcommand for repo-pkgs command (Jaroslav Rohel)
+- shell: Fix commands initialization (Jaroslav Rohel)
+- po: Update translations (Igor Gnatenko)
+- Add support for --location for repoquery command (RhBug:1290137) (Jaroslav
+  Mracek)
+- Add support of --recursive with --resolve in repoquery (Jaroslav Mracek)
+- Add --recursive option for repoquery (Jaroslav Mracek)
+- Add --whatconflicts for repoquery (Jaroslav Mracek)
+- Add support for multiple options for repoquery (Jaroslav Mracek)
+- Add multiple format option for repoquery (Jaroslav Mracek)
+- Fix problem with "dnf repoquery --querytags" (Jaroslav Mracek)
+- Add support of 3 options into updateinfo command (Jaroslav Mracek)
+- Add inheritance of reason for obsoleting packages (Jaroslav Mracek)
+- Mark installonlypkgs correctly as user installed (RhBug:1349314) (Jaroslav
+  Mracek)
+- Solve a problem with None names in callbacks (Jaroslav Mracek)
+- Solve a problem for callbacks (Jaroslav Mracek)
+- Revert "remove: CLI: --randomwait" (RhBug:1247122) (Ondřej Sojka)
+- po: update translations (Igor Gnatenko)
+- po: update translations (Igor Gnatenko)
+- Set strings for translations (RhBug:1298717) (Jaroslav Mracek)
+
+* Mon Mar 27 2017 Jaroslav Mracek <jmracek@redhat.com> 2.2.0-1
+- bump version to 2.2.0 + update release notes (Jaroslav Mracek)
+- Add documentation of new API callback actions (RhBug:1411432) (Jaroslav
+  Mracek)
+- Fix python2 doesn't have e.__traceback__ attribute (Jaroslav Mracek)
+- Do not report erasing package as None. (Jaroslav Mracek)
+- Display scriplet for transaction (RhBug:1411423) (RhBug:1406130) (Jaroslav
+  Mracek)
+- Add support for rpmcallbacks (Jaroslav Mracek)
+- AUTHORS: updated (Jaroslav Rohel)
+- Not show expiration check if no repo enabled (RhBug:1369212) (Jaroslav
+  Mracek)
+- Fix changelog in dnf spec file (Jaroslav Mracek)
+- po: update translations (Igor Gnatenko)
+- Add myself (mhatina) to AUTHORS (Martin Hatina)
+- po: Update translations (Igor Gnatenko)
+
+* Tue Mar 21 2017 Jaroslav Mracek <jmracek@redhat.com> 2.1.1-1
+- bump version to 2.1.1 + update release notes (Jaroslav Mracek)
+- Sync the translation with locale (Jaroslav Rohel)
+- Disable exceptions in logging (Jaroslav Rohel)
+- Fix severity info in "updateinfo info" (Jaroslav Mracek)
+- Add help for shell commands (Jaroslav Rohel)
+- shell: no crash if missing args (Jaroslav Rohel)
+- proper check of releasever, when using installroot (RhBug:1417542) (Martin
+  Hatina)
+- Inform about "Cache was expired" with "dnf clean" (RhBug:1401446) (Jaroslav
+  Mracek)
+- crypto: port to the official gpgme bindings (Igor Gnatenko)
+- Fix doc example for `fill_sack` method (Lubomír Sedlář)
+- po: update translations (Igor Gnatenko)
+- Not try to install src package (RhBug:1416699) (Jaroslav Mracek)
+- Add usage for add_new_repo() with repofrompath option (Jaroslav Mracek)
+- Add new API add_new_repo() in RepoDict() (RhBug:1427132) (Jaroslav Mracek)
+- docs: adds documentation for dnf-automatic's Command and CommandEmail
+  emitters. (rhn)
+- docs: fixes typo in section description in automatic (rhn)
+- Adds new emitters for dnf-automatic. (rhn)
+- po: update translations (Igor Gnatenko)
+- Ensure that callback will not kill dnf transaction (Jaroslav Mracek)
+- Ensure that name will be not requested on None (RhBug:1397047) (Jaroslav
+  Mracek)
+- Python 3.6 invalid escape sequence deprecation fix (Ville Skyttä)
+- display severity information in updateinfo (#741) (Michael Mraka)
+- po: update translations (Igor Gnatenko)
+- Add --nodocs option for dnf (RhBug:1379628) (Jaroslav Mracek)
+- Replace passive plugin noroot (Jaroslav Mracek)
+- Fix incorrect formating of string for logger.info (Jaroslav Mracek)
+- Not print help if empty line in script for shell command (Jaroslav Mracek)
+- Run fill_sack after all repos have changed status (Jaroslav Mracek)
+- Remove Hawkey object from repo if rerun of dnf.fill_sack (Jaroslav Mracek)
+- util/on_metered_connection: be more polite to failures (Igor Gnatenko)
+- cosmetic: i18n: rewording of 'Login user' (RhBug:1424939) (Jan Silhan)
+- Fix problem with --whatprovides in repoquery (RhBug:1396992) (Jaroslav
+  Mracek)
+- Add -a and --all option for repoquery (RhBug:1412970) (Jaroslav Mracek)
+- Change camel-case of output of grouplist (Jaroslav Mracek)
+- Minor correction in release notes (Jaroslav Mracek)
+- Minor correction in release notes (Jaroslav Mracek)
+
+* Thu Feb 16 2017 Jaroslav Mracek <jmracek@redhat.com> 2.1.0-1
+- bump version to 2.1.0 + update release notes (Jaroslav Mracek)
+- Fix problem with --recent option in repoquery (Jaroslav Mracek)
+- Fix problem with duplicated --obsoletes (RhBug:1421835) (Jaroslav Mracek)
+- Python 3.6 invalid escape sequence deprecation fixes (Ville Skyttä)
+- Add --repoid as alias for --repo (Jaroslav Mracek)
+- introduce dnf.base.Base.update_cache() (Martin Hatina)
+- Try to install uninstalled packages if group installed (Jaroslav Mracek)
+- Enable search of provides in /usr/(s)bin (RgBug:1421618) (Jaroslav Mracek)
+- style: ignore E261 (Igor Gnatenko)
+- makecache: do not run on metered connections (RhBug:1415711) (Igor Gnatenko)
+- change '--disableplugins' to '--disableplugin' (Martin Hatina)
+- cosmetic: removed unused import (Jan Silhan)
+- show hint how to display why package was skipped (RhBug:1417627) (Jan Silhan)
+- spec: add information how to obtain archive (Igor Gnatenko)
+- fix messages (UX) (Jaroslav Rohel)
+- zanata update (Jan Silhan)
+
+* Thu Feb 09 2017 Jaroslav Mracek <jmracek@redhat.com> 2.0.1-1
+- bump version to 2.0.1 + update release notes (Jaroslav Mracek)
+- introduce cli 'obsoletes' option (Martin Hatina)
+- swap tids if they are in wrong order (RhBug:1409361) (Michael Mraka)
+- Disable shell command recursion (Jaroslav Rohel)
+- Honor additional arguments for DNF shell repo list command (Jaroslav Rohel)
+- don't traceback when bug title is not set (Michael Mraka)
+- introducing list-security, info-security etc. commands (Michael Mraka)
+- Add lsedlar to contributors list (Lubomír Sedlář)
+- Return just name from Package.source_name (Lubomír Sedlář)
+- introduce dnf.conf.config.MainConf.exclude() (Martin Hatina)
+- systemd: Disable daemons on ostree-managed systems (Colin Walters)
+- introduced dnf.base.Base.autoremove() (RhBug:1414512) (Martin Hatina)
+- po: update translations (Igor Gnatenko)
+- build: use relative directory for translations (Igor Gnatenko)
+- Temporary eliminate a problem with install remove loop (Jaroslav Mracek)
+- Handle info message when DRPM wastes data (RhBug:1238808) (Daniel
+  Aleksandersen)
+- Fix output for better translation (RhBug:1386085) (Abhijeet Kasurde)
+- yum layer refactored (Martin Hatina)
+- return values changed to match yum's (Martin Hatina)
+- Reword sentence after removing package (RhBug:1286553) (Abhijeet Kasurde)
+- Minor documentation revisions (Mark Szymanski)
+- Minor code fix (Abhijeet Kasurde)
+- automatic: email emitter date header (David Greenhouse)
+- Solve problem when no repo and only rpms with upgrade command (Jaroslav
+  Mracek)
+- bash_completion: use system-python if it's available (Igor Gnatenko)
+- spec: use system-python for dnf-yum as well (Igor Gnatenko)
+- comps/groups: fix tests (Michal Luscon)
+- comps: adjust group_upgrade to new CompsTransPkg style (Michal Luscon)
+- groups: refactored installation (RhBug:1337731, RhBug:1336879) (Michal
+  Luscon)
+- Increase requirement for hawkey (Jaroslav Mracek)
+- Change reporting problems for downgradePkgs() (Jaroslav Mracek)
+- Use selector for base.package_upgrade() (Jaroslav Mracek)
+- Add usage of selectors for base.package_install() (Jaroslav Mracek)
+- Use selector for base.package_downgrade() (Jaroslav Mracek)
+- Redirect base.downgrade() to base.downgrade_to() (Jaroslav Mracek)
+- Enable wildcard for downgrade command (RhBug:1173349) (Jaroslav Mracek)
+- Refactor downgrade cmd behavior (RhBug:1329617)(RhBug:1283255) (Jaroslav
+  Mracek)
+- Redirect logger.info into stderr for repolist (RhBug:1369411) (Jaroslav
+  Mracek)
+- Redirect logger.info into stderr for repoquery (RhBug:1243393) (Jaroslav
+  Mracek)
+- Add possibility for commands to redirect logger (Jaroslav Mracek)
+- Put information about metadata expiration into stdout (Jaroslav Mracek)
+- Change warning about added repo into info (RhBug:1243393) (Jaroslav Mracek)
+- Move grouplist output from logger into stdout (Jaroslav Mracek)
+- let repo exclude work the same way as global exclude (Michael Mraka)
+- Fix wrong assumptions about metalinks (RhBug:1411349) (Jaroslav Mracek)
+- handle --disablerepo/--enablerepo properly with strict (RhBug:1345976)
+  (Štěpán Smetana)
+- Add fix to notify user about no repos (RhBug:1369212) (Abhijeet Kasurde)
+- Add information about "hidden" option in dnf doc (RhBug:1349247) (Abhijeet
+  Kasurde)
+- Fix for 'history package-list' (Amit Upadhye)
+- Enable multiple args for repoquery -f (RhBug:1403930) (Jaroslav Mracek)
+- Set default repo.name as repo._section (Jaroslav Mracek)
+- Create from self.forms value forms in cmd.run() (Jaroslav Mracek)
+- Add description of swap command into documentation (Jaroslav Mracek)
+- Add swap command (RhBug:1403465) (RhBug:1110780) (Jaroslav Mracek)
+- Solve a problem with shell when empty line or EOF (Jaroslav Mracek)
+- shell: add history of commands (RhBug:1405333) (Michal Luscon)
+- Add info if no files with repoquery -l (RhBug:1254879) (Jaroslav Mracek)
+- po: update translations (Igor Gnatenko)
+- po: migrate to zanata python client and trivial fixes in build (Igor
+  Gnatenko)
+- po: include all possible languages from zanata (Igor Gnatenko)
+- po: include comments for translations (Igor Gnatenko)
+- shell: catch exceptions from depsolving (Michal Luscon)
+- shell: update documentation (Michal Luscon)
+- shell: add transaction reset cmd (Michal Luscon)
+- shell: add transaction resolve cmd (Michal Luscon)
+- shell: provide rewritable demands for cmds (Michal Luscon)
+- shell: catch tracebacks from shlex (Michal Luscon)
+- shell: handle ctrl+D more gracefully (Michal Luscon)
+- groups: set demands in configure instead of run (Michal Luscon)
+- shell: implement config cmd (Michal Luscon)
+- shell: add help (Michal Luscon)
+- shell: make alias repo list -> repolist (Michal Luscon)
+- shell: catch exceptions from do_transaction (Michal Luscon)
+- shell: resolve transaction in ts run (Michal Luscon)
+- shell: add default value for internal methods argument (Michal Luscon)
+- shell: create run alias for ts run (Michal Luscon)
+- shell: add ts list cmd (Michal Luscon)
+- shell: refill sack after every successful repo cmd (Michal Luscon)
+- shell: allow running multiple transaction in one session (Michal Luscon)
+- shell: add ts command (Michal Luscon)
+- shell: catch cmd parsing and run exceptions (Michal Luscon)
+- shell: allow to run scripts (Michal Luscon)
+- shell: add repo cmd (Michal Luscon)
+- shell: add resolving + transaction run support (Michal Luscon)
+- shell: implement quit method (Michal Luscon)
+- shell: add custom cmds stubs (Michal Luscon)
+- shell: implement basic logic (Michal Luscon)
+- shell: register new cmd (Michal Luscon)
+
+* Wed Dec 14 2016 Michal Luscon <mluscon@redhat.com> 2.0.0-1
+- tests: catch ModuleNotFoundError as well (Igor Gnatenko)
+- Switch out automatic service for automatic-download and automatic-install
+  (Pat Riehecky)
+- Make upgrade-to alias for upgrade (RhBug:1327999) (Jaroslav Mracek)
+- skip appending an empty option (RhBug: 1400081) (Michael Mraka)
+- Add description of nevra foems for commands and autoremove args (Jaroslav
+  Mracek)
+- Add support of arguments nevra forms for autoremove command (Jaroslav Mracek)
+- Add nevra forms for remove command (Jaroslav Mracek)
+- Add nevra forms for install command (Jaroslav Mracek)
+- add bin/yum into .gitignore (Michal Luscon)
+- clean: acquire all locks before cleaning (RhBug:1293782) (Michal Luscon)
+- Change hawkey version requirement (Jaroslav Mracek)
+- Add information for translators (RhBug:1386078) (Jaroslav Mracek)
+- Change info to warning for clean repoquery output (RhBug:1358245) (Jaroslav
+  Mracek)
+- Add description of pkg flag for Query (RhBug:1243393) (Jaroslav Mracek)
+- Add minor changes in documentation (Jaroslav Mracek)
+- Do not always overwrite the name with the repo ID (Neal Gompa)
+
+* Fri Dec 02 2016 Martin Hatina <mhatina@redhat.com> 2.0.0-0.rc2.1
+- See http://dnf.readthedocs.io/en/latest/release_notes.html
+
+* Thu Sep 29 2016 Michal Luscon <mluscon@redhat.com> 2.0.0-0.rc1.1
+- See http://dnf.readthedocs.io/en/latest/release_notes.html
+
+* Thu Sep 08 2016 Igor Gnatenko <ignatenko@redhat.com> - 1.1.10-2
+- Obsolete dnf-langpacks
+- Backport patch for dnf repolist disabled
+
+* Thu Aug 18 2016 Igor Gnatenko <ignatenko@redhat.com> - 1.1.10-1
+- Update to 1.1.10
+
+* Tue Aug 09 2016 Igor Gnatenko <ignatenko@redhat.com> - 1.1.9-6
+- Fix typo
+
+* Tue Aug 09 2016 Igor Gnatenko <ignatenko@redhat.com> - 1.1.9-5
+- Also change shebang for %%{?system_python_abi} in %%{_bindir}/dnf
+
+* Tue Aug 09 2016 Igor Gnatenko <ignatenko@redhat.com> - 1.1.9-4
+- Add %%{?system_python_abi}
+
+* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.1.9-3
+- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
+
+* Tue May 24 2016 Michal Luscon <mluscon@redhat.com> 1.1.9-2
+- Revert "group: treat mandatory pkgs as mandatory if strict=true" (RhBug:1337731)
+- enforce-api: reflect changes from #992475 in completion_helper (RhBug:1338504)
+- enforce-api: add compatibility methods for renamed counterparts (RhBug:1338564)
+
+* Thu May 19 2016 Igor Gnatenko <ignatenko@redhat.com> 1.1.9-1
+- doc: release notes 1.1.9 (Igor Gnatenko)
+- spec: correctly set up requirements for python subpkg (Igor Gnatenko)
+- spec: follow new packaging guidelines & make compatible with el7 (Igor
+  Gnatenko)
+- zanata update (Jan Silhan)
+- enforce-api: add missing bits of Base class (Michal Luscon)
+- help: unify help msg strings (Michal Luscon)
+- enforce-api: decorate Base class (Michal Luscon)
+- util: add decorator informing users of nonapi functions (Michal Luscon)
+- Added description for 'autoremove' in dnf help (RhBug:1324086) (Abhijeet
+  Kasurde)
+- i18n: fixup for 0db13feed (Michal Luscon)
+- i18n: use fallback mode if terminal does not support UTF-8 (RhBug:1332012)
+  (Michal Luscon)
+- Revert "spec: follow new packaging guidelines & make compatible with el7"
+  (Michal Luscon)
+- move autoglob feature directly to filterm() and filter() (Michael Mraka)
+- group: treat mandatory pkgs as mandatory if strict=true (RhBug:1292892)
+  (Michal Luscon)
+- locks: fix lock paths in tmpfsd config since cachedir has been changed
+  (Michal Luscon)
+- remove formating from translation strings (Michal Luscon)
+- base: set diskspace check filter before applying the filters (RhBug:1328674)
+  (Michal Luscon)
+- order repos by priority and cost (Michael Mraka)
+- spec: follow new packaging guidelines & make compatible with el7 (Igor
+  Gnatenko)
+- bash-completion: first try to set fallback to BASH_COMPLETION_COMPATDIR (Igor
+  Gnatenko)
+- updated copyrights for files changed this year (Michael Mraka)
+- cli: fix warning from re.split() about non-empty pattern (RhBug:1286556)
+  (Igor Gnatenko)
+- update authors file (Michal Luscon)
+- Define __hash__ method for YumHistoryPackage (RhBug:1245121) (Max Prokhorov)
+
+* Tue Apr 05 2016 Michal Luscon <mluscon@redhat.com> 1.1.8-1
+- refactor: repo: add md_expired property (Michal Domonkos)
+- test: fix cachedir usage in LocalRepoTest (Michal Domonkos)
+- clean: operate on all cached repos (RhBug:1278225) (Michal Domonkos)
+- refactor: repo: globally define valid repoid chars (Michal Domonkos)
+- RepoPersistor: only write to disk when requested (Michal Domonkos)
+- clean: remove dead subcommands (Michal Domonkos)
+- doc: --best in case of problem (RhBug:1309408) (Jan Silhan)
+- Added fix for correct error message for group info (RhBug:1209649) (Abhijeet
+  Kasurde)
+- repo: don't get current timeout for librepo (RhBug:1272977) (Igor Gnatenko)
+- doc: fix default timeout value (Michal Luscon)
+- cli: inform only about nonzero md cache check interval (Michal Luscon)
+- base: report errors in batch at the end of md downloading (Michal Luscon)
+- repo: produce more sane error if md download fails (Michal Luscon)
+- zanata update (RhBug:1322226) (Jan Silhan)
+- doc: Fixed syntax of `assumeyes` and `defaultyes` ref lables in
+  `conf_ref.rst` (Matt Sturgeon)
+- Fix output headers for dnf history command (Michael Dunphy)
+- doc: change example of 'dnf-command(repoquery)' (Jaroslav Mracek)
+- makacache.service: shorten journal logs (RhBug:1315349) (Michal Luscon)
+- config: improve UX of error msg (Michal Luscon)
+- Added user friendly message for out of range value (RhBug:1214562) (Abhijeet
+  Kasurde)
+- doc: prefer repoquery to list (Jan Silhan)
+- history: fix empty history cmd (RhBug:1313215) (Michal Luscon)
+- Very minor tweak to the docs for `--assumeyes` and `--assumeno` (Matt
+  Sturgeon)
+
+* Thu Feb 25 2016 Michal Luscon <mluscon@redhat.com> 1.1.7-1
+- Add `/etc/distro.repos.d` as a path owned by the dnf package (Neal Gompa
+  (ニール・ゴンパ))
+- Change order of search and add new default repodirs (RhBug:1286477) (Neal
+  Gompa (ニール・ゴンパ))
+- group: don't mark available packages as installed (RhBug:1305356) (Jan
+  Silhan)
+- history: adjust demands for particular subcommands (RhBug:1258503) (Michal
+  Luscon)
+- Added extension command for group list (RhBug:1283432) (Abhijeet Kasurde)
+- perf: dnf repository-packages <repo> upgrade (RhBug:1306304) (Jan Silhan)
+- sack: Pass base.conf.substitutions["arch"] to sack in build_sack() function.
+  (Daniel Mach)
+- build: make python2/3 binaries at build time (Michal Domonkos)
+- fix dnf history traceback (RhBug:1303149) (Jan Silhan)
+- cli: truncate expiration msg (RhBug:1302217) (Michal Luscon)
+
+* Mon Jan 25 2016 Michal Luscon <mluscon@redhat.com> 1.1.6-1
+- history: don't fail if there is no history (RhBug:1291895) (Michal Luscon)
+- Allow dnf to use a socks5 proxy, since curl support it (RhBug:1256587)
+  (Michael Scherer)
+- output: do not log rpm info twice (RhBug:1287221) (Michal Luscon)
+- dnf owns /var/lib/dnf dir (RhBug:1294241) (Jan Silhan)
+- Fix handling of repo that never expire (RhBug:1289166) (Jaroslav Mracek)
+- Filter out .src packages when multilib_proto=all (Jeff Smith)
+- Enable string for translation (RhBug:1294355) (Parag Nemade)
+- Let logging format messages on demand (Ville Skyttä)
+- clean: include metadata of local repos (RhBug:1226322) (Michal Domonkos)
+- completion: Install to where bash-completion.pc says (Ville Skyttä)
+- spec: bash completion is not a %%config file (Ville Skyttä)
+- Change assertion handling for rpmsack.py (RhBug:1275878) (Jaroslav Mracek)
+- cli: fix storing arguments in history (RhBug:1239274) (Ting-Wei Lan)
+
+* Thu Dec 17 2015 Michal Luscon <mluscon@redhat.com> 1.1.5-1
+- base: save group persistor only after successful transaction (RhBug:1229046)
+  (Michal Luscon)
+- base: do not clean tempfiles after remove transaction (RhBug:1282250) (Michal
+  Luscon)
+- base: clean packages that do not belong to any trans (Michal Luscon)
+- upgrade: allow group upgrade via @ syntax (RhBug:1265391) (Michal Luscon)
+- spec: Mark license files as %%license where available (Ville Skyttä)
+- Remove unused imports (Ville Skyttä)
+- Spelling fixes (Ville Skyttä)
+- Fix typos in documentation (Rob Cutmore)
+- parser: add support for braces in substitution (RhBug:1283017) (Dave
+  Johansen)
+- completion_helper: Don't omit "packages" from clean completions (Ville
+  Skyttä)
+- bash-completion: Avoid unnecessary python invocation per _dnf_helper (Ville
+  Skyttä)
+- repo: Download drpms early (RhBug:1260421) (Ville Skyttä)
+- clean: Don't hardcode list of args in two places (Ville Skyttä)
+- cli: don't crash if y/n and sys.stdin is None (RhBug:1278382) (Adam
+  Williamson)
+- sp err "environement" -> "environment" (Michael Goodwin)
+- Remove -OO from #!/usr/bin/python (RhBug:1230820) (Jaroslav Mracek)
+- cli: warn if plugins are disabled (RhBug:1280240) (Michal Luscon)
+
+* Mon Nov 16 2015 Michal Luscon <mluscon@redhat.com> 1.1.4-1
+- AUTHORS: updated (Jan Silhan)
+- query: add compatibility methods (Michal Luscon)
+- query: add recent, extras and autoremove methods to Query (Michal Luscon)
+- query: add duplicated and latest-limit queries into api (Michal Luscon)
+- format the email message with its as_string method (Olivier Andrieu)
+- added dnf.i18n.ucd* functions as deprecated API (Jan Silhan)
+- i18n: unicode resulting translations (RhBug:1278031) (Jan Silhan)
+- po: get rid of new lines in translation (Jan Silhan)
+- output: add skip count to summary (RhBug:1264032) (Michal Domonkos)
+- groups: fix environment upgrade (Michal Luscon)
+- Fix plural strings extraction (RhBug:1209056) (Baurzhan Muftakhidinov)
+- po: fixed malformed beginning / ending (Jan Silhan)
+- zanata update (Jan Silhan)
+- cli: prevent tracebacks after C^ (RhBug:1274946) (Michal Luscon)
+
+* Wed Oct 14 2015 Michal Luscon <mluscon@redhat.com> 1.1.3-1
+- Update command_ref.rst (Jaroslav Mracek)
+- Change in automatic.conf email settings to prevent email error with default
+  sender name (Jaroslav Mracek)
+- Replace assert_called() with assert_called_with() for Py35 support (Neal
+  Gompa (ニール・ゴンパ))
+- doc: improve documentation (Jaroslav Mracek)
+- doc: update the instructions related to nightly builds (Radek Holy)
+- Revert "Add the continuous integration script" (Radek Holy)
+- Revert "cosmetic: ci: fix the Copr name in the README" (Radek Holy)
+- Fix typo in Command.canonical's doctring (Timo Wilken)
+- base: group_install is able to exclude mandatory packages
+  (Related:RhBug:1199868) (Jan Silhan)
+
+* Wed Sep 30 2015 Michal Luscon <mluscon@redhat.com> 1.1.2-4
+- don't import readline as it causes crashes in Anaconda
+  (related:RhBug:1258364)
+
+* Tue Sep 22 2015 Michal Luscon <mluscon@redhat.com> 1.1.2-3
+- Revert "completion_helper: don't get IndexError (RhBug:1250038)"
+
+* Tue Sep 22 2015 Michal Luscon <mluscon@redhat.com> 1.1.2-2
+- add hawkey version requirement
+- revert commit #70956
+
+* Tue Sep 22 2015 Michal Luscon <mluscon@redhat.com> 1.1.2-1
+- doc: release notes 1.1.2 (Michal Luscon)
+- sanitize non Unicode command attributes (RhBug:1262082) (Jan Silhan)
+- don't redirect confirmation to stderr RhBug(1258364) (Vladan Kudlac)
+- clean: add rpmdb to usage (Vladan Kudlac)
+- completion_helper: don't get IndexError (RhBug:1250038) (Vladan Kudlac)
+- add --downloadonly switch (RhBug:1048433) (Adam Salih)
+- Add globbing support to base.by_provides() (RhBug:11259650) (Valentina
+  Mukhamedzhanova)
+- spec: packaging python(3)-dnf according to new Fedora guidelines
+  (RhBug:1260198) (Jaroslav Mracek)
+- Bug in Source0: URL in dnf.spec fixed (RhBug:126255) (Jaroslav Mracek)
+- To dnf.spec added provides dnf-command(command name) for 21 dnf commands
+  (RhBug:1259657) (jmracek)
+- Expire repo cache on failed package download (Valentina Mukhamedzhanova)
+- cosmetic: ci: fix the Copr name in the README (Radek Holy)
+- Add the continuous integration script (Radek Holy)
+- Set proper charset on email in dnf-automatic (RhBug:1254982) (Valentina
+  Mukhamedzhanova)
+- doc: improve configuration description (RhBug:1261766) (Michal Luscon)
+- remove: show from which repo a package is (Vladan Kudlac)
+- list: show from which repo a package is (RhBug:1234491) (Vladan Kudlac)
+- Spelling/grammar fixes (Ville Skyttä)
+- install: fix crash when terminal window is small (RhBug:1256531) (Vladan
+  Kudlac)
+- install: mark unification of the progress bar (Vladan Kudlac)
+- fix translations in python3 (RhBug:1254687) (Michal Luscon)
+- group: CompsQuery now returns group ids (RhBug:1261656) (Michal Luscon)
+
+* Tue Sep 08 2015 Michal Luscon <mluscon@redhat.com> 1.1.1-2
+- fix access to demands (RhBug:1259194) (Jan Silhan)
+- make clean_requiremets_on_remove=True (RhBug:1260280) (Jan Silhan)
+
+* Mon Aug 31 2015 Michal Luscon <mluscon@redhat.com> 1.1.1-1
+- Fixed typo (RhBug:1249319) (Adam Salih)
+- fixed downgrade with wildcard (RhBug:1234763) (Adam Salih)
+- reorganize logic of get_best_selector(s) and query (RhBug:1242946) (Adam
+  Salih)
+- completion_helper: don't crash if exception occurred (RhBug:1225225) (Igor
+  Gnatenko)
+- base: expire cache if repo is not available (Michal Luscon)
+- Don't suggest --allowerasing if it is enabled (Christian Stadelmann)
+- translation works in python3 (RhBug:1254687) (Jan Silhan)
+- logrotate less often (RhBug:1247766) (Jan Silhan)
+- implement dnf mark command (RhBug:1125925) (Michal Luscon)
+- groups: use comps data to migrate persistor (Michal Luscon)
+- groups: preserve api compatibility (Michal Luscon)
+- groups: use persistor data for removing env/group (Michal Luscon)
+- persistor: add migration and bump version (Michal Luscon)
+- persistor: store name and ui_name of group (Michal Luscon)
+- show real metadata timestamp on the server in verbose mode (Jan Silhan)
+- lock: make rpmdb lock blocking (RhBug:1210289) (Michal Luscon)
+
+* Wed Aug 12 2015 Michal Luscon <mluscon@redhat.com> 1.1.0-2
+- update: installonly pkgs are not shown in both install and skipped section
+  (RhBug:1252415) (Jan Silhan)
+- output: sort skipped packages (Jan Silhan)
+- output: skipped conflicts are set (RhBug:1252032) (Jan Silhan)
+- keep the dwongrading package installed if transaction fails (RhBug:1249379)
+  (Jan Silhan)
+- don't store empty attributes (RhBug:1246928) (Michael Mraka)
+- doc: correct dnf.conf man section (RhBug:1245349) (Michal Luscon)
+
+* Mon Aug 10 2015 Michal Luscon <mluscon@redhat.com> 1.1.0-1
+- print skipped pkg with broken deps too (Related:RhBug:1210445) (Jan Silhan)
+- history: set commands output as default (RhBug:1218401) (Michal Luscon)
+- Update es.po. save:guardar -> save:ahorrar (Máximo Castañeda)
+- cosmetic: option arg in Base.*install is replaced with strict (Jan Silhan)
+- group: don't fail on first non-existing group (Jan Silhan)
+- install: skips local pkgs of lower version when strict=0
+  (Related:RhBug:1227952) (Jan Silhan)
+- install: skip broken/conflicting packages in groups when strict=0 (Jan
+  Silhan)
+- install: skip broken/conflicting packages when strict=0 (Jan Silhan)
+- implemented `strict` config option working in install cmd (RhBug:1197456)
+  (Jan Silhan)
+- fixed 'dnf --quiet repolist' lack of output (RhBug:1236310) (Nick Coghlan)
+- Add support for MIPS architecture (Michal Toman)
+- package: respect baseurl attribute in localPkg() (RhBug:1219638) (Michal
+  Luscon)
+- Download error message is not written on the same line as progress bar
+  anymore (RhBug: 1224248) (Adam Salih)
+- dnf downgrade does not try to downgrade not installed packages (RhBug:
+  1243501) (max9631)
+- pkgs not installed due to rpm error are reported (RhBug:1207981) (Adam Salih)
+- dnf install checks availability of all given packages (RhBug:1208918) (Adam
+  Salih)
+- implemented install_weak_deps config option (RhBug:1221635) (Jan Silhan)
+- ignore SIGPIPE (RhBug:1236306) (Michael Mraka)
+- always add LoggingTransactionDisplay to the list of transaction displays
+  (RhBug:1234639) (Radek Holy)
+- Add missing FILES section (RhBug: 1225237) (Adam Salih)
+- doc: Add yum vs dnf hook information (RhBug:1244486) (Parag Nemade)
+- doc: clarify the expected type of the do_transactions's display parameter
+  (Radek Holy)
+- apichange: add dnf.cli.demand.DemandSheet.transaction_display (Radek Holy)
+- apichange: add dnf.callback.TransactionProgress (Radek Holy)
+- move the error output from TransactionDisplay into a separate class (Radek
+  Holy)
+- rename TransactionDisplay.errorlog to TransactionDisplay.error (Radek Holy)
+- report package verification as a regular RPM transaction event (Radek Holy)
+- rename TransactionDisplay.event to TransactionDisplay.progress (Radek Holy)
+- apichange: deprecate dnf.callback.LoggingTransactionDisplay (Radek Holy)
+- use both CliTransactionDisplay and demands.transaction_display (Radek Holy)
+- apichange: accept multiple displays in do_transaction (Radek Holy)
+- support multiple displays in RPMTransaction (Radek Holy)
+
+* Fri Jul 31 2015 Michal Luscon <mluscon@redhat.com> 1.0.2-3
+- Fix regression in group list command introduced by 02c3cc3 (Adam Salih)
+- AUTHORS: updated (Jan Silhan)
+- stop saying "experimental" (Matthew Miller)
+
+* Tue Jul 21 2015 Jan Silhan <jsilhan@redhat.com> 1.0.2-2
+- fixed python3 syntax error from f427aa2 (Jan Silhan)
+
+* Fri Jul 17 2015 Michal Luscon <mluscon@redhat.com> 1.0.2-1
+- give --allowerasing hint when error occurs during resolution (RhBug:1148630)
+  (Jan Silhan)
+- show --best hint with skipped packages every time (RhBug:1176351) (Jan Silhan)
+- notify about skipped packages when upgrade (RhBug:1210445) (Jan Silhan)
+- dnf-automatic: Document apply_updates=no behavior wrt keepcache (Ville
+  Skyttä)
+- persistor: share functionality of JSONDB (Jan Silhan)
+- keepcache=0 persists packages till next successful transaction
+  (RhBug:1220074) (Jan Silhan)
+- do not use releasever in cache path (related to RhBug:1173107) (Michael
+  Mraka)
+- doc: add dnf list use case (Michal Luscon)
+- repo: allow ntlm proxy auth (RhBug:1219199) (Michal Luscon)
+- add a script which updates release notes (Radek Holy)
+- doc: reverse the order of release notes (Radek Holy)
+- completion_helper: fix tb if list XXX is not known arg (RhBug:1220040) (Igor
+  Gnatenko)
+- configurable maximum number of parallel downloads (RhBug:1230975) (Igor
+  Gnatenko)
+- add info to bash_completion (1nsan3)
+- dnf upgrade does not try to upgrade uninstalled packages (RhBug: 1234763)
+  (Adam Salih)
+- dnf group list now checks every package and prints out only invalid ones
+  (Adam Salih)
+- install: return zero exit code if group is already installed (RhBug:1232815)
+  (Michal Luscon)
+- doc: add -b which does the same as --best (Igor Gnatenko)
+- support category groups (Michael Mraka)
+- cli test update for repofrompath (Michael Mraka)
+- documentation for --repofrompath (Michael Mraka)
+- implemented --repofrompath option (RhBug:1113384) (Michael Mraka)
+- doc: document filter provides and obsoletes (Michal Luscon)
+- doc: extend --quiet explanation (RhBug:1133979) (Jan Silhan)
+- fixed dnf-automatic email emitter unicode error (RhBug:1238958) (Jan Silhan)
+- doc: be specific what 'available' means in list/info (Jan Silhan)
+- cosmetic: fixed typo (RhBug:1238252) (Jan Silhan)
+- groups: clean dependencies (Michal Luscon)
+- groups: fix removing of env that contains previously removed group (Michal
+  Luscon)
+- groups: fix removing of empty group (Michal Luscon)
+- AUTHORS: updated (Jan Silhan)
+- bash-completion: ignore sqlite3 user configuration (Peter Simonyi)
+- Fix package name for rawhide .repo files (Frank Dana)
+- Add 'transaction_display' to DemandSheet (Will Woods)
+- translation: update (Jan Silhan)
+- translation: use zanata instead of transifex (Jan Silhan)
+- Updated Polish translation (Piotr Drąg)
+- updated georgian translation (George Machitidze)
+- group: fixed installing of already installed environment (Jan Silhan)
+- conf: change minrate threshold to librepo default (RhBug:1212320) (Michal
+  Luscon)
+
+* Tue Jun 09 2015 Michal Luscon <mluscon@redhat.com> 1.0.1-2
+- conf: change minrate threshold to librepo default (RhBug:1212320)
+- group: fixed installation of already installed environments
+
+* Tue Jun 09 2015 Michal Luscon <mluscon@redhat.com> 1.0.1-1
+- doc: document variables in repo conf (Michal Luscon)
+- groups: temporary fix for group remove (RhBug:1214968) (Michal Luscon)
+- group: print summary of marked groups / environments together at the end (Jan
+  Silhan)
+- group: fixed marking as installed (RhBug:1222694) (Jan Silhan)
+- doc: Spelling fixes (Ville Skyttä)
+- dnf-automatic: Fix systemd service description (thanks Ville Skyttä) (Jan
+  Silhan)
+- doc: assumeyes added to Base.conf and config option (Jan Silhan)
+- optionparser: deleted --obsoletes option that conflicted with repoquery
+  plugin (Jan Silhan)
+- dnf-automatic: Document emit_via default (Ville Skyttä)
+- man: yum2dnf don;t show content (RhBug:1225246) (Thanks Adam Salih) (Jan
+  Silhan)
+- doc: allowed chars of repo ID (Jan Silhan)
+- doc: minimal repo config file (Jan Silhan)
+- doc: configuration files replacement policy (Jan Silhan)
+- fixed typo in man page (RhBug:1225168) (Michael Mraka)
+- Update authors (Michal Luscon)
+- dnf-automatic: add random_sleep option (RhBug:1213985) (Vladan Kudlac)
+- don't print bug report statement when rpmdb is corrupted
+  (Related:RhBug:1225277) (Jan Silhan)
+- comps: fix unicode issue (RhBug:1223932) (Thanks Parag) (Parag Nemade)
+- logging: setup librepo log in verbose mode (Michal Luscon)
+- doc: document the versioning scheme (Radek Holy)
+- groups: end up empty group removal before solving (Michal Luscon)
+- groups: end up empty installation before solving (RhBug:1223614) (Michal
+  Luscon)
+- doc: add support for transactions/packages/ranges in "dnf history list"
+  (Radek Holy)
+- doc: add support for transaction ranges in "dnf history info" (Radek Holy)
+- support ssl client certificates (RhBug:1203661) (Michael Mraka)
+- doc: document the "mirrorlist" configuration option (Radek Holy)
+- doc: document the "metalink" configuration option (Radek Holy)
+- doc: document the "baseurl" configuration option (Radek Holy)
+- doc: document the "enabled" configuration option (Radek Holy)
+- doc: document the "name" configuration option (Radek Holy)
+- Revert "spec: added sqlite requirement" (Jan Silhan)
+- spec: added sqlite requirement (Jan Silhan)
+- cosmetic: fixed typo in comment (Jan Silhan)
+- man: added reference to bug reporting guide (Jan Silhan)
+- test: ignore user terminal width (Jan Silhan)
+- cosmetic: base: import dnf.util.first (Jan Silhan)
+- base.upgrade: inform user when pkg not installed and skipped (RhBug:1187741)
+  (Jan Silhan)
+- disable buildtime c/c++ dependency (Michael Mraka)
+- doc: document the new virtual provides (Radek Holy)
+- AUTHORS: updated (Jan Silhan)
+- AUTHORS: distuinguish authors and contributors (Jan Silhan)
+- Create ka.po (George Machitidze)
+- Parser: fix path handling (Haikel Guemar)
+- doc: metadata_timer_sync checked every hour (Jan Silhan)
+
+* Wed Apr 29 2015 Michal Luscon <mluscon@redhat.com> 1.0.0-1
+- doc: release notes dnf-1.0.0 (Michal Luscon)
+- completion: don't do aliases (RhBug:1215289) (Jan Silhan)
+- use Sack.load_repo() instead of Sack.load_yum_repo() (Jan Silhan)
+- Repo.name has default value of repo ID (RhBug:1215560) (Jan Silhan)
+- cosmetic: get rid of user visible yum references (Jan Silhan)
+- moved install_or_skip to dnf.comps (Jan Silhan)
+- group: see already installed group during installation (RhBug:1199648) (Jan
+  Silhan)
+- group: install_or_skip returns num of packages to install (Jan Silhan)
+- group: made global function install_or_skip (Jan Silhan)
+- AUTHORS: updated (Radek Holy)
+- describe --refresh option in --help output (Pádraig Brady)
+- better no such command message (RhBug:1208773) (Jan Silhan)
+- doc: package-cleanup example doesn't print 'No match for argument:...'
+  garbage (Jan Silhan)
+- mention yum check replacement (Michael Mraka)
+- added ref to dnf list (Michael Mraka)
+- added package-cleanup to dnf translation table (Michael Mraka)
+- python3: Repo comparison (RhBug:1208018) (Jan Silhan)
+- python3: YumHistoryRpmdbProblem comparison (RhBug:1207861) (Jan Silhan)
+- python3: YumHistoryTransaction comparison (Jan Silhan)
+- tests: use packages in test_transaction (Radek Holy)
+- cosmetic: fix some Pylint errors (Radek Holy)
+- updated documentation wrt installonlypkgs and auto removal (Michael Mraka)
+- mark installonly packages always as userinstalled (RhBug:1201445) (Michael
+  Mraka)
+- mark username/password as api (Michael Mraka)
+- document username/password repo attributes (Michael Mraka)
+- support HTTP basic auth (RhBug:1210275) (Michael Mraka)
+- cli: better metadata timestamp info (Michal Luscon)
+- repo: add metadata mirror failure callback (Michal Luscon)
+- dnf-yum: cosmetic: lower case after comma (Jan Silhan)
+- dnf-yum: print how to install migrate plugin (Jan Silhan)
+- doc: show the real package for each tool in dnf-plugins-extras (Tim
+  Lauridsen)
+- doc: improve the documentation of repo costs (Radek Holy)
+- doc: fix debuginfo-install package name (Michal Luscon)
+- doc: release notes 0.6.5 (Michal Luscon)
+- bash-completion: allow only one subcmd for help (Igor Gnatenko)
+- bash-completion: add history completion (Igor Gnatenko)
+- bash-completion: add completion for help (Igor Gnatenko)
+- bash-completion: check where pointing bin/dnf (Igor Gnatenko)
+- bash-completion: implement completion for clean cmd (Igor Gnatenko)
+- bash_completion: implement downgrade command (Igor Gnatenko)
+- bash-completion: refactor to python helper (Igor Gnatenko)
+- command downgrade does downgrade_to (RhBug:1191275) (Jan Silhan)
+- AUTHORS: updated (Jan Silhan)
+- clean: 'dnf clean all' should also clean presto and updateinfo solvx files
+  (Parag Nemade)
+- dnf-yum: modified warning message (RhBug:1207965) (Jan Silhan)
+
+* Tue Mar 31 2015 Michal Luscon <mluscon@redhat.com> 0.6.5-1
+- subject: expand every glob name only once (RhBug:1203151) (Michal Luscon)
+- group mark: skips already installed groups (Jan Silhan)
+- Merge pull request #246 from mluscon/yum2dnf (mluscon)
+- Add yum2dnf man page (Michal Luscon)
+- doc: extend cli_vs_yum (Michal Luscon)
+- dnf-yum package does not conflict with yum 3.4.3-505+ (Jan Silhan)
+- fixed double set of demand from 0e4276f (Jan Silhan)
+- group: remove cmd don't load available_repos, see 04da412 (Jan Silhan)
+- spec: /var/lib/dnf owned by dnf-conf (Jan Silhan)
+- spec: apply the weak dependencies only on F21+ (Radek Holy)
+- dnf-automatic: fixed python_sitelib (RhBug:1199450) (Jan Silhan)
+- Add release instructions (Michal Luscon)
+- setup tito to bump version in VERSION.cmake (Michal Luscon)
+- initialize to use tito (Michal Luscon)
+- prepare repo for tito build system (Michal Luscon)
+- spec: recommends bash-completion (RhBug:1190671) (Jan Silhan)
+- completion: work with just python(3)-dnf (Jan Silhan)
+- spec: move necessary files inside python(3) subpackages (RhBug:1191579) (Jan Silhan)
+- bash-completion: use python method to get commands (RhBug:1187579) (Igor Gnatenko)
+- api: exposed pluginconfpath main config (RhBug:1195325) (Jan Silhan)
+- updated AUTHORS (Jan Silhan)
+- add reinstall to bash_completion (Alberto Ruiz)
+- added new packages to @System for duplicated query test (Michael Mraka)
+- test for duplicated, installonly and latest_limit pkgs (Michael Mraka)
+- tests for autoremove, extras and recent pkgs (Michael Mraka)
+- moved push_userinstalled from base to goal (Michael Mraka)
+- filter or skip 'n' latest packages (Michael Mraka)
+- moved recent to query (Michael Mraka)
+- moved autoremove to query (Michael Mraka)
+- moved extras list to query (Michael Mraka)
+- create query for installonly packages (Michael Mraka)
+- create query for duplicated packages (Michael Mraka)
+- cosmetic: base: fixed pylint warnings (Jan Silhan)
+- do transaction cleanup after plugin hook (RhBug:1185977) (Michal Luscon)
+- base: extend download lock (RhBug:1157233) (Michal Luscon)
+- lock: output meaningful error for malformed lock file (Michal Luscon)
+- util: fix race condition in ensure_dir() (Michal Luscon)
+- lock: switch metadata lock to blocking mode (Michal Luscon)
+- install nonmandatory group packages as optional (Related:RhBug:1167881) (Michal Luscon)
+- remove command deletes whole dependency tree (RhBug:1154202) (Jan Silhan)
+- cmd list takes <package-name-specs> as parameter, revert of 526e674 (Jan Silhan)
+- spec: own /var/lib/dnf directory (RhBug:1198999) (Jan Silhan)
+- transifex update (Jan Silhan)
+- doc: fixed systemd execution of dnf-automatic (Jan Silhan)
+- doc: how to run dnf-automatic (RhBug:1195240) (Jan Silhan)
+- cosmetic: added forgotten :api mark from 05b03fc (Jan Silhan)
+- api: exposed Repo.skip_if_unavailable config (RhBug:1189083) (Jan Silhan)
+- updated documentation for 'dnf list autoremove' (Michael Mraka)
+- reuse list_autoremove() in autoremove command (Michael Mraka)
+- function for autoremove package list (Michael Mraka)
+- implemented dnf list autoremove (Michael Mraka)
+- exclude not documented history subcommands (RhBug:1193914,1193915) (Jan Silhan)
+- better file pattern recognition (RhBug:1195385) (Jan Silhan)
+- spec: fix Obsoletes of the new DNF (Radek Holy)
+- remove boot only constraint and add missing download lock (Michal Luscon)
+- util: remove unused user_run_dir() function (Michal Luscon)
+- lock: change the destination folder of locks to allow suided programs work properly (RhBug:1195661) (Michal Luscon)
+- install dnf-3 only when python3 is enabled (thanks glensc) (Jan Silhan)
+- fixed unicode Download error (RhBug:1190458) (Jan Silhan)
+- log: print metadata age along with timestamp (Petr Spacek)
+- cli: fix double expansion of cachedir (RhBug:1194685) (Michal Luscon)
+- removed unused dnf-makecache.cron (Jan Silhan)
+- renamed erase command to remove (RhBug:1160806) (Jan Silhan)
+- spec: made python3-dnf package installed by default in f23 (Jan Silhan)
+- AUTHORS: changed email address (Jan Silhan)
+- doc: improve the documentation of the "install" command (Radek Holy)
+- "dnf install non-existent" should fail (Radek Holy)
+- tests: add some tests of Base.install (Radek Holy)
+- tests: add some tests of Base.package_install (Radek Holy)
+- Revert "doesn't upgrade packages by installing local packages" (RhBug:1160950) (Radek Holy)
+- lint: fix all Pylint errors in test_install (Radek Holy)
+- tests: add some tests to test_install (Radek Holy)
+- tests: improve some tests in test_install (Radek Holy)
+- cosmetic: reorder tests in test_install (Radek Holy)
+- cosmetic: rename some tests in test_install and add some docstrings (Radek Holy)
+- AUTHORS: updated (Jan Silhan)
+- Add support for armv6hl (Peter Hjalmarsson)
+- doc: subject.__init__(): what is pkg_spec (Jan Silhan)
+- doc: mentioning raising IOError from Base.fill_sack() (Jan Silhan)
+- option_parser: fixed splitting multiple values (RhBug:1186710) (Jan Silhan)
+- AUTHORS: updated (Jan Silhan)
+- Standardize words describing boolean data type (Christopher Meng)
+
+* Wed Feb 4 2015 Jan Silhan <jsilhan@redhat.com> - 0.6.4-1
+- Adapt to librepo-1.7.13, metalink and mirrorlist are not loaded anymore when the repo is local. (Radek Holy)
+- not raises value error when no metadata exist (Jan Silhan)
+- Remove lock files during boot (RhBug:1154476) (Michal Luscon)
+- doc: groups are ordered not categories (Jan Silhan)
+- doc: added Package attributes to API (Jan Silhan)
+- README: link to bug reporting guide (Jan Silhan)
+- README: the official documentation is on readthedoc (Jan Silhan)
+- i18n: unicode encoding does not throw error (RhBug:1155877) (Jan Silhan)
+- conf: added minrate repo option (Related:RhBug:1175466) (Jan Silhan)
+- conf: added timeout repo option (RhBug:1175466) (Jan Silhan)
+- doc: api_queries: add 'file' filter description (RhBug:1186461) (Igor Gnatenko)
+- doc: documenting enablegroups (Jan Silhan)
+- log: printing metadata timestamp (RhBug:1170156) (Jan Silhan)
+- base: setup default cachedir value (RhBug:1184943) (Michal Luscon)
+- orders groups/environments by display_order tag (RhBug:1177002) (Jan Silhan)
+- no need to call create_cmdline_repo (Jan Silhan)
+- base: package-spec matches all packages which the name glob pattern fits (RhBug:1169165) (Michal Luscon)
+- doc: move dnf.conf to appropriate man page section (RhBug:1167982) (Michal Luscon)
+- tests: add test for blocking process lock (Michal Luscon)
+- lock: fix several race conditions in process lock mechanism (Michal Luscon)
+- base: use blocking process lock during download phase (RhBug:1157233) (Michal Luscon)
+- Update the Source0 generation commands in dnf.spec.in file (Parag Nemade)
+- Enhancement to dnf.spec.in file which follows current fedora packaging guidelines (Parag Nemade)
+- doc: add some examples and documentation of the core use case (RhBug:1138096) (Radek Holy)
+- bash-completion: enable downgrading packages for local files (RhBug:1181189) (Igor Gnatenko)
+- group: prints plain package name when package not in any repo (RhBug:1181397) (Jan Silhan)
+- spec: own __pycache__ for python 3 (Igor Gnatenko)
+- changed hawkey.log dir to /var/log (RhBug:1175434) (Jan Silhan)
+- bash-completion: handle sqlite errors (Igor Gnatenko)
+- use LANG=C when invoking 'dnf help' and 'sed' with regular expressions (Jakub Dorňák)
+- spec: own __pycache__ directory for py3 (Igor Gnatenko)
+- doc: mentioning Install command accepts path to local rpm package (Jan Silhan)
+- groups: in erase and install cmd non-existent group does not abort transaction (Jan Silhan)
+- doc: running tests in README (Jan Silhan)
+- api: transaction: added install_set and remove_set (RhBug:1162887) (Jan Silhan)
+- cosmetic: fixed some typos in documentation (Jan Silhan)
+- groups: environments described after @ sign works (RhBug:1156084) (Jan Silhan)
+- own /etc/dnf/protected.d (RhBug:1175098) (Jan Silhan)
+- i18n: computing width of char right (RhBug:1174136) (Jan Silhan)
+- cosmetic: renamed _splitArg -> _split_arg (Jan Silhan)
+- conf: removed include name conflict (RhBug:1055910) (Jan Silhan)
+- output: removed unpredictable decision based on probability introduced in ab4d2c5 (Jan Silhan)
+- output: history list is not limited to 20 records (RhBug:1155918) (Jan Silhan)
+- doc: referenced forgotten bug fix to release notes (Jan Silhan)
+- cosmetic: doc: removed duplicated word (Jan Silhan)
+- doc: described unavailable package corner case with skip_if_unavailable option (RhBug:1119030) (Jan Silhan)
+- log: replaced size with maxsize directive (RhBug:1177394) (Jan Silhan)
+- spec: fixed %ghost log file names (Jan Silhan)
+
+* Mon Dec 8 2014 Jan Silhan <jsilhan@redhat.com> - 0.6.3-2
+- logging: reverted naming from a6dde81
+
+* Mon Dec 8 2014 Jan Silhan <jsilhan@redhat.com> - 0.6.3-1
+- transifex update (Jan Silhan)
+- bash-completion: don't query if we trying to use local file (RhBug:1153543) (Igor Gnatenko)
+- bash-completion: fix local completion (RhBug:1151231) (Igor Gnatenko)
+- bash-completion: use sqlite cache from dnf-plugins-core (Igor Gnatenko)
+- base: output a whole list of installed packages with glob pattern (RhBug:1163063) (Michal Luscon)
+- cli: _process_demands() does not respect --caheonly (RhBug:1151854) (Michal Luscon)
+- new authors added (Jan Silhan)
+- install: allow installation of provides with glob (Related:RhBug:1148353) (Michal Luscon)
+- tests: removed mock patch for _, P_ (Jan Silhan)
+- fixed error summary traceback (RhBug:1151740) (Jan Silhan)
+- doc: swap command alternative mentioned (RhBug:1110780) (Jan Silhan)
+- base: package_reinstall works only with the same package versions (Jan Silhan)
+- base: package_install allows install different arch of installed package (Jan Silhan)
+- base: package_downgrade prints message on failure (Jan Silhan)
+- base: package_upgrade does not reinstall or downgrade (RhBug:1149972) (Jan Silhan)
+- groups: searches also within localized names (RhBug:1150474) (Jan Silhan)
+- Run tests with C locales. (Daniel Mach)
+- Adds new motd emitter for dnf-automatic (RhBug:995537) (Kushal Das)
+- Fix wrong cache directory path used to clean up binary cache (Satoshi Matsumoto)
+- fix: traceback in history info <name> (RhBug: 1149952) (Tim Lauridsen)
+- logging: added logrotate script for hawkey.log (RhBug:1149350) (Jan Silhan)
+- output: renamed displayPkgsInGroups (Jan Silhan)
+- logging: renamed log files (RhBug:1074715)" (Jan Silhan)
+- comps: Environment differentiates optional and mandatory groups (Jan Silhan)
+- group info handles environments (RhBug:1147523) (Jan Silhan)
+- deltarpm enabled by default (RhBug:1148208) (Jan Silhan)
+- doc: deplist command (Jan Silhan)
+- doc: minor fixes + repo references changed (Jan Silhan)
+- spec: requires rpm-plugin-systemd-inhibit (RhBug:1109927) (Jan Silhan)
+
+* Fri Oct 3 2014 Jan Silhan <jsilhan@redhat.com> - 0.6.2-1
+- transifex update (Jan Silhan)
+- refactor: move MakeCacheCommand out into its own file. (Ales Kozumplik)
+- api: add dnf.cli.CliError. (Ales Kozumplik)
+- Update user_faq.rst (Stef Krie)
+- Make --refresh play nice with lazy commands. (Ales Kozumplik)
+- bash-completion: more faster completing install/remove (Igor Gnatenko)
+- bash-completion: complete 'clean|groups|repolist' using help (Igor Gnatenko)
+- Allow some commands to use stale metadata. (RhBug:909856) (Ales Kozumplik)
+- does not install new pkgs when updating from local pkgs (RhBug:1134893) (Jan Silhan)
+- doesn't upgrade packages by installing local packages (Related:RhBug:1138700) (Jan Silhan)
+- refactor: repo: separate concepts of 'expiry' and 'sync strategy'. (Ales Kozumplik)
+- fix: dnf.cli.util.* leaks file handles. (Ales Kozumplik)
+- remove: YumRPMTransError. (Ales Kozumplik)
+- rename: Base's runTransaction -> _run_transaction(). (Ales Kozumplik)
+- drop unused parameter of Base.verify_transaction(). (Ales Kozumplik)
+- bash-completion: new completion from scratch (RhBug:1070902) (Igor Gnatenko)
+- py3: add queue.Queue to pycomp. (Ales Kozumplik)
+- locking: store lockfiles with the resource they are locking. (RhBug:1124316) (Ales Kozumplik)
+- groups: marks reason 'group' for packages that have no record yet (RhBug:1136584) (Jan Silhan)
+- goal: renamed undefined name variable (Jan Silhan)
+- refactor: split out and clean up the erase command. (Ales Kozumplik)
+- py3: fix traceback in fmtColumns() on a non-subscriptable 'columns'. (Ales Kozumplik)
+- groups: allow erasing depending packages on remove (RhBug:1135861) (Ales Kozumplik)
+- history: fixed wrong set operation (RhBug:1136223) (Jan Silhan)
+- base: does not reinstall pkgs from local rpms with install command (RhBug:1122617) (Jan Silhan)
+- refactor: crypto: drop the integer keyid representation altogether. (Ales Kozumplik)
+- crypto: fix importing rpmfusion keys. (RhBug:1133830) (Ales Kozumplik)
+- refactor: crypto: Key is a class, not an "info" dict. (Ales Kozumplik)
+- repos: fix total downloaded size reporting for cached packages. (RhBug:1121184) (Ales Kozumplik)
+
+* Thu Aug 28 2014 Jan Silhan <jsilhan@redhat.com> - 0.6.1-1
+- packaging: add dnf-yum. (Ales Kozumplik)
+- cli: added plugins missing hint (RhBug:1132335) (Jan Silhan)
+- using ts.addReinstall for package reinstallation (RhBug:1071854) (Jan Silhan)
+- Add history redo command. (Radek Holy)
+- Add a TransactionConverter class. (Radek Holy)
+- bash-completion: complete `help` with commands (Igor Gnatenko)
+- bash-completion: generate commands dynamically (Igor Gnatenko)
+- base: group_install accepts glob exclude names (RhBug:1131969) (Jan Silhan)
+- README: changed references to new repo location (Jan Silhan)
+- transifex update (Jan Silhan)
+- syntax: fixed indentation (Jan Silhan)
+- removed lt.po which was accidentally added in c2e9b39 (Jan Silhan)
+- lint: fix convention violations in the new source files (Radek Holy)
+- Fix setting of the resolving demand for repo-pkgs command. (Radek Holy)
+- Add repository-packages remove-or-distro-sync command. (RhBug:908764) (Radek Holy)
+- fix: traceback that GroupPersistor._original might not exist. (RhBug:1130878) (Ales Kozumplik)
+- pycomp: drop to_ord(). (Ales Kozumplik)
+- refactor: crypto.keyids_from_pubring() using _extract_signing_subkey(). (Ales Kozumplik)
+- fix: another 32-bit hex() problem in crypto. (Ales Kozumplik)
+- remove: pgpmsg.py. (Ales Kozumplik)
+- replace the whole of pgpmsg.py with gpgme and a dummy context. (Ales Kozumplik)
+- cosmetic: sort methods of Repo according to the coding standard. (Ales Kozumplik)
+- Fix dnf.crypto.keyinfo2keyid(). (Ales Kozumplik)
+- util: get rid of an inconvenient 'default_handle' constant. (Ales Kozumplik)
+- simplify misc.import_key_to_pubring()'s signature. (Ales Kozumplik)
+- cleanup: header of dnf.yum.pgpmsg. (Ales Kozumplik)
+- crypto: add crypto.retrieve() and drop Base._retrievePublicKey() (Ales Kozumplik)
+- cosmetic: order of functions in dnf.crypto. (Ales Kozumplik)
+- unicode: fixed locale.format error (RhBug:1130432) (Jan Silhan)
+- remove: misc.valid_detached_sig(). (Ales Kozumplik)
+- tests: some tests for dnf.crypto. (Ales Kozumplik)
+- crypto: use pubring_dir() context manager systematically. (Ales Kozumplik)
+- Drop unused argument from getgpgkeyinfo(). (Ales Kozumplik)
+- remove: Base._log_key_import(). (Ales Kozumplik)
+- doc: cosmetic: conf_ref: maintain alphabetical order of the options. (Ales Kozumplik)
+- crypto: document crypto options for repo. (Ales Kozumplik)
+- crypto: fixup procgpgkey() to work with Py3 bytes. (Ales Kozumplik)
+- dnf.util.urlopen(): do not create unicode streams for Py3 and bytes for Py2 by default. (Ales Kozumplik)
+- lint: delinting of the repo_gpgcheck patchset. (Ales Kozumplik)
+- Add CLI parts to let the user confirm key imports. (RhBug:1118236) (Ales Kozumplik)
+- gpg: make key decoding work under Py3. (Ales Kozumplik)
+- crypto: add dnf.crypto and fix things up so untrusted repo keys can be imported. (Ales Kozumplik)
+- transifex update (Jan Silhan)
+- syntax: fixed indentation (Jan Silhan)
+- packaging: pygpgme is a requirement. (Ales Kozumplik)
+- remove: support for gpgcakey gets dropped for now. (Ales Kozumplik)
+- repo: smarter _DetailedLibrepoError construction. (Ales Kozumplik)
+- repo: nicer error message on librepo's perform() failure. (Ales Kozumplik)
+- get_best_selector returns empty selector instead of None (Jan Silhan)
+- packaging: add automatic's systemd unit files. (RhBug:1109915) (Ales Kozumplik)
+- automatic: handle 'security' update_cmd. (Ales Kozumplik)
+
+* Tue Aug 12 2014 Aleš Kozumplík <ales@redhat.com> - 0.6.0-1
+- lint: fix convention violations in the new source files (Radek Holy)
+- Add "updateinfo [<output>] [<availability>] security" command. (RhBug:850912) (Radek Holy)
+- Add "updateinfo [<output>] [<availability>] bugfix" command. (Radek Holy)
+- Add "updateinfo [<output>] [<availability>] enhancement" command. (Radek Holy)
+- Add "updateinfo [<output>] [<availability>] [<package-name>...]" command. (Radek Holy)
+- Add "updateinfo [<output>] [<availability>] [<advisory>...]" command. (Radek Holy)
+- Add "updateinfo [<output>] all" command. (Radek Holy)
+- Add "updateinfo [<output>] updates" command. (Radek Holy)
+- Add "updateinfo [<output>] installed" command. (Radek Holy)
+- Add "-v updateinfo info" command. (Radek Holy)
+- Add "updateinfo info" command. (Radek Holy)
+- Add "updateinfo list" command. (Radek Holy)
+- Add "updateinfo available" command. (Radek Holy)
+- Add "updateinfo summary" command. (Radek Holy)
+- Add basic updateinfo command. (Radek Holy)
+- test: add updateinfo to the testing repository (Radek Holy)
+- test: support adding directory repos to Base stubs (Radek Holy)
+- test: really don't break other tests with the DRPM fixture (Radek Holy)
+- Load UpdateInfo.xml during the sack preparation. (Radek Holy)
+- Add Repo.updateinfo_fn. (Radek Holy)
+- lint: add Selector calls to false positives, it's a hawkey type. (Ales Kozumplik)
+- removed recursive calling of ucd in DownloadError (Jan Silhan)
+- does not throw error when selector is empty (RhBug:1127206) (Jan Silhan)
+- remove etc/version-groups.conf, not used. (Ales Kozumplik)
+- lint: dnf.conf.parser (Ales Kozumplik)
+- rename: dnf.conf.parser.varReplace()->substitute() (Ales Kozumplik)
+- pycomp: add urlparse/urllib.parser. (Ales Kozumplik)
+- move: dnf.yum.parser -> dnf.conf.parser. (Ales Kozumplik)
+- packaging: add dnf-automatic subpackage. (Ales Kozumplik)
+- doc: properly list the authors. (Ales Kozumplik)
+- automatic: add documentation, including dnf.automatic(8) man page. (Ales Kozumplik)
+- dnf-automatic: tool supplying the yum-cron functionality. (Ales Kozumplik)
+- doc: cosmetic: fixed indent in proxy directive (Jan Silhan)
+- include directive support added (RhBug:1055910) (Jan Silhan)
+- refactor: move MultiCallList to util. (Ales Kozumplik)
+- cli: do not output that extra starting newline in list_transaction(). (Ales Kozumplik)
+- refactor: extract CLI cachedir magic to cli.cachedir_fit. (Ales Kozumplik)
+- transifex update (Jan Silhan)
+- move: test_output to tests/cli. (Ales Kozumplik)
+- refactor: move Term into its own module. (Ales Kozumplik)
+- refactoring: cleanup and linting in dnf.exceptions. (Ales Kozumplik)
+- lint: test_cli.py (Ales Kozumplik)
+- lint: rudimentary cleanups in tests.support. (Ales Kozumplik)
+- refactor: loggers are module-level variables. (Ales Kozumplik)
+- groups: promote unknown-reason installed packages to 'group' on group install. (RhBug:1116666) (Ales Kozumplik)
+- c82267f refactoring droppped plugins.run_transaction(). (Ales Kozumplik)
+- cli: sort packages in the transaction summary. (Ales Kozumplik)
+- refactor: cli: massively simplify how errors are propagated from do_transaction(). (Ales Kozumplik)
+- groups: rearrange things in CLI so user has to confirm the group changes. (Ales Kozumplik)
+- groups: committing the persistor data should only happen at one place. (Ales Kozumplik)
+- groups: visualizing the groups transactions. (Ales Kozumplik)
+- Add dnf.util.get_in() to navigate nested dicts with sequences of keys. (Ales Kozumplik)
+- group persistor: generate diffs between old and new DBs. (Ales Kozumplik)
+- Better quoting in dnf_pylint. (Ales Kozumplik)
+- lint: logging.py. (Ales Kozumplik)
+- Do not print tracebacks to the tty on '-d 10' (RhBug:1118272) (Ales Kozumplik)
+- search: do not double-report no matches. (Ales Kozumplik)
+- refactor: move UpgradeToCommand to its own module. (Ales Kozumplik)
+
+* Mon Jul 28 2014 Aleš Kozumplík <ales@redhat.com> - 0.5.5-1
+- packaging: also add pyliblzma to BuildRequires. (Ales Kozumplik)
+- essential cleanup in dnf.yum.misc, removing a couple of functions too. (Ales Kozumplik)
+- remove: Base.findDeps and friends. (Ales Kozumplik)
+- Make pyliblzma a requriement. (RhBug:1123688) (Ales Kozumplik)
+- whole user name can contain non-ascii chars (RhBug:1121280) (Jan Silhan)
+- Straighten up the exceptions when getting a packages header. (RhBug:1122900) (Ales Kozumplik)
+- tests: refactor: rename test_resource_path() -> resource_path() and use it more. (Ales Kozumplik)
+- transifex update (Jan Silhan)
+- remove: conf.commands. (Ales Kozumplik)
+- proxy username and password, for both CLI and API. (RhBug:1120583) (Ales Kozumplik)
+- conf: only 'main' is a reserved section name. (Ales Kozumplik)
+- refactoring: cleanup a couple of lint warnings in base.py. (Ales Kozumplik)
+- refactoring: move repo reading implementation out of dnf.Base. (Ales Kozumplik)
+- refactor: repo_setopts is a CLI thing and doesn't belong to Base. (Ales Kozumplik)
+- refactor: move cleanup methods to dnf.cli.commands.clean. (Ales Kozumplik)
+- depsolving: doesn't install both architectures of pkg by filename (RhBug:1100946) (Jan Silhan)
+- refactor: put CleanCommand in its own module. (Ales Kozumplik)
+- cli: avoid 'Error: None' output on malformed CLI commands. (Ales Kozumplik)
+- remove the special SIGQUIT handler. (Ales Kozumplik)
+- api: In Repo(), cachedir is a required argument. (Ales Kozumplik)
+- api: better describe how Repos should be created, example. (RhBug:1117789) (Ales Kozumplik)
+- Base._conf lasts the lifetime of Base and can be passed via constructor. (Ales Kozumplik)
+- doc: faq: having Yum and DNF installed at the same time. (Ales Kozumplik)
+- remove: protected_packages config option, it has been ignored. (Ales Kozumplik)
+- fix: misleading error message when no repo is enabled. (Ales Kozumplik)
+
+* Wed Jul 16 2014 Aleš Kozumplík <ales@redhat.com> - 0.5.4-1
+- pkg name from rpm transaction callback is in Unicode (RhBug:1118796) (Jan Silhan)
+- packaging: python3-dnf depends on dnf. (RhBug:1119032) (Ales Kozumplik)
+- Ship /usr/bin/dnf-3 to run DNF under Py3. (RhBug:1117678) (Ales Kozumplik)
+- packaging: own /etc/dnf/plugins. (RhBug:1118178) (Ales Kozumplik)
+- fix: pluginconfpath is a list. (Ales Kozumplik)
+- cosmetic: use classmethod as a decorator in config.py. (Ales Kozumplik)
+- cleanup: imports in dnf.cli.output (Ales Kozumplik)
+- lint: straightforward lint fixes in dnf.cli.output. (Ales Kozumplik)
+- Repo.__setattr__ has to use the parsed value. (Ales Kozumplik)
+- Repo priorities. (RhBug:1048973) (Ales Kozumplik)
+- repo: simplify how things are propagated to repo.hawkey_repo. (Ales Kozumplik)
+- refactor: concentrate Repo.hawkey_repo construction in Repo.__init__(). (Ales Kozumplik)
+- bash-completion: Update command and option lists, sort in same order as --help (Ville Skyttä)
+- bash-completion: Use grep -E instead of deprecated egrep (Ville Skyttä)
+- output: fixed identation of info command output (Jan Silhan)
+- i18n: calculates right width of asian utf-8 strings (RhBug:1116544) (Jan Silhan)
+- transifex update + renamed po files to Fedora conventions (Jan Silhan)
+- remove: CLI: --randomwait (Ales Kozumplik)
+- cli: fix: --installroot has to be used with --releasever (RhBug:1117293) (Ales Kozumplik)
+- Base.reset(goal=True) also resets the group persistor (RhBug:1116839) (Ales Kozumplik)
+- tests: fix failing DistroSync.test_distro_sync(). (Ales Kozumplik)
+- logging: RPM transaction markers are too loud. (Ales Kozumplik)
+- logging: silence drpm a bit. (Ales Kozumplik)
+- logging: put timing functionality into one place. (Ales Kozumplik)
+- repolist: fix traceback with disabled repos. (RhBug:1116845) (Ales Kozumplik)
+- refactor: cleanups in repolist. (Ales Kozumplik)
+- lint: remove some unused imports. (Ales Kozumplik)
+- cli: break out the repolsit command into a separate module. (Ales Kozumplik)
+- does not crash with non-ascii user name (RhBug:1108908) (Jan Silhan)
+- doc: document 'pluginpath' configuration option. (RhBug:1117102) (Ales Kozumplik)
+- Spelling fixes (Ville Skyttä)
+- cli: Fix software name in --version help (Ville Skyttä)
+- doc: ip_resolve documented at two places. remove one. (Ales Kozumplik)
+
+* Thu Jul 3 2014 Aleš Kozumplík <ales@redhat.com> - 0.5.3-1
+- packaging: bump hawkey dep to 0.4.17. (Ales Kozumplik)
+- api: remove Base.select_group(). (Ales Kozumplik)
+- tests: cleanup our base test case classes a bit. (Ales Kozumplik)
+- Add DNF itself among the protected packages. (Ales Kozumplik)
+- api: plugins: add the resolved() hook. (Ales Kozumplik)
+- api: expose Transaction introspecting in the API. (RhBug:1067156) (Ales Kozumplik)
+- api: add basic documentation for dnf.package.Package. (Ales Kozumplik)
+- tests: cosmetic: conf.protected_packages is ignored, drop it in FakeConf. (Ales Kozumplik)
+- cli: simplify exception handling more. (Ales Kozumplik)
+- Fixed a minor typo in user_faq - 'intall' should be 'install' (Martin Preisler)
+- fixed encoding of parsed config line (RhBug:1110800) (Jan Silhan)
+- syntax: replaced tab with spaces (Jan Silhan)
+- doc: acknowledge the existence of plugins on the man page (RhBug:1112669) (Ales Kozumplik)
+- improve the 'got root?' message of why a transaction couldn't start. (RhBug:1111569) (Ales Kozumplik)
+- traceback in Base.do_transaction. to_utf8() is gone since 06fb280. (Ales Kozumplik)
+- fix traceback from broken string formatting in _retrievePublicKey(). (RhBug:1111997) (Ales Kozumplik)
+- doc: replace Yum with DNF in command_ref.rst (Viktor Ashirov)
+- Fix a missing s in the title (mscherer)
+- api: add dnf.rpm.detect_releasever() (Ales Kozumplik)
+- Detect distroverpkg from 'system-release(release)' (RhBug:1047049) (Ales Kozumplik)
+- bulid: add dnf/conf to cmake. (Ales Kozumplik)
+- lint: clean up most lint messages in dnf.yum.config (Ales Kozumplik)
+- remove: couple of dead-code methods in dnf.yum.config. (Ales Kozumplik)
+- api: document client's responsibility to preset the substitutions. (RhBug:1104757) (Ales Kozumplik)
+- move: rpmUtils -> rpm. (Ales Kozumplik)
+- refactor: move yumvar out into its proper module dnf.conf.substitutions. (Ales Kozumplik)
+- refactor: turn dnf.conf into a package. (Ales Kozumplik)
+- doc: api_base.rst pointing to nonexistent method. (Ales Kozumplik)
+- remove: some logging from Transaction.populate_rpm_ts(). (Ales Kozumplik)
+- Update cli_vs_yum.rst (James Pearson)
+- api: doc: queries relation specifiers, with an example. (RhBug:1105009) (Ales Kozumplik)
+- doc: phrasing in ip_resolve documentation. (Ales Kozumplik)
+- cli: refactored transferring cmdline options to conf (Jan Silhan)
+- cli: added -4/-6 option for using ipv4/ipv6 connection (RhBug:1093420) (Jan Silhan)
+- cosmetic: empty set inicialization (Jan Silhan)
+- repo: improve the RepoError message to include URL. (Ales Kozumplik)
+- remove: dnf.yum.config.writeRawRepoFile(). (Ales Kozumplik)
+- remove: bunch of (now) blank config options. (Ales Kozumplik)
+- removed unique function (Jan Silhan)
+- tests: mock.assert_has_calls() enforces its iterable arguments in py3.4. (Ales Kozumplik)
+- logging: improve how repolist logs the total number of packages. (Ales Kozumplik)
+- logging: Base.close() should not log to the terminal. (Ales Kozumplik)
+
+* Wed May 28 2014 Aleš Kozumplík <ales@redhat.com> - 0.5.2-1
+- doc: packaging: add license block to each .rst. (Ales Kozumplik)
+- cosmetic: replaced yum with dnf in comment (Jan Silhan)
+- takes non-ascii cmd line input (RhBug:1092777) (Jan Silhan)
+- replaced 'unicode' conversion functions with 'ucd' (RhBug:1095861) (Jan Silhan)
+- using write_to_file py2/py3 compatibility write function (Jan Silhan)
+- encoding: all encode methods are using utf-8 coding instead of default ascii (Jan Silhan)
+- fixed rpmbuild warning of missing file (Jan Silhan)
+- transifex update (Jan Silhan)
+- fixed typos in comments (Jan Silhan)
+- Drop --debugrepodata and susetags generation with it. (Ales Kozumplik)
+- doc: document --debugsolver. (Ales Kozumplik)
+- fix: 'dnf repo-pkgs' failures (RhBug:1092006) (Radek Holy)
+- lint: make dnf_pylint take '-s' that suppresses line/column numbers. (Ales Kozumplik)
+- doc: cli_vs_yum: we do not promote installs to the obsoleting package. (RhBug:1096506) (Ales Kozumplik)
+- dealing with installonlies, we always need RPMPROB_FILTER_OLDPACKAGE (RhBug:1095580) (Ales Kozumplik)
+- transifex update (Jan Silhan)
+- arch: recognize noarch as noarch's basearch. (RhBug:1094594) (Ales Kozumplik)
+- pylint: clean up dnf.repo. (Ales Kozumplik)
+- sslverify: documentation and bumped librepo require. (Ales Kozumplik)
+- repos: support sslverify setting. (RhBug:1076045) (Ales Kozumplik)
+- search: exact matches should propagate higher. (RhBug:1093888) (Ales Kozumplik)
+- refactor: concentrate specific search functionality in commands.search. (Ales Kozumplik)
+- refactor: SearchCommand in its own file. (Ales Kozumplik)
+- pylint: fix around one hundred pylint issues in dnf.base. (Ales Kozumplik)
+- pylint: add simple pylint script (Ales Kozumplik)
+- autoerase: write out the debugdata used to calculate redundant packages. (Ales Kozumplik)
+- cosmetic: fix pylint comment in test_group.py. (Ales Kozumplik)
+- refactor: err_mini_usage() is public. (Ales Kozumplik)
+- refactor: fix several pylint errors in dnf.cli.commands.group. (Ales Kozumplik)
+- fix: 'dnf remove' is deprecated so autoremove should be autoerase. (Ales Kozumplik)
+- doc: command_ref: remove the deprecated aliases from the initial list. (Ales Kozumplik)
+- Add autoremove command. (RhBug:963345) (Ales Kozumplik)
+- refactor: Base.push_userinstalled() is public. (Ales Kozumplik)
+- Remove sudo from dnf-completion.bash RhBug:1073457 (Elad Alfassa)
+- exclude switch takes <package-spec> as a parameter (Jan Silhan)
+- using nevra glob query during list command (RhBug:1083679) (Jan Silhan)
+- removed rpm.RPMPROB_FILTER_REPLACEOLDFILES filter flag (Jan Silhan)
+- test: changed tests according to new distro-sync behavior (Jan Silhan)
+- packaging: cosmetic: copyright years in bin/dnf. (Ales Kozumplik)
+- bin/dnf: run the python interpreter with -OO. (Ales Kozumplik)
+
+* Fri May 2 2014 Aleš Kozumplík <ales@redhat.com> - 0.5.1-1
+- drpm: output stats (RhBug:1065882) (Ales Kozumplik)
+- refactor: architectures. (Ales Kozumplik)
+- cli: be lot less verbose about dep processing. (Ales Kozumplik)
+- groups: do not error out if group install/remove produces no RPM transaction. (Ales Kozumplik)
+- fix: do not traceback on comps remove operations if proper pkg reasons can not be found. (Ales Kozumplik)
+- fix: tracebacks in 'group remove ...' (Ales Kozumplik)
+- groups: move all the logic of persistor saving from main.py to Base. (Ales Kozumplik)
+- groups: auto-saving the groups persistor. (RhBug:1089864) (Ales Kozumplik)
+- transifex update (Jan Silhan)
+- remove: profiling code from cli.main. (Ales Kozumplik)
+- remove: removal of dead code (Miroslav Suchý)
+- doc: changes to rhbug.py to work on readthedocs.org. (Ales Kozumplik)
+- doc: build the documentation without any dependencies (on DNF or anything else). (Ales Kozumplik)
+- doc: make clear where one should expect bin/dnf (Miroslav Suchý)
+- abrt: disable abrt for 'dnf makecache timer' run from systemd.service. (RhBug:1081753) (Ales Kozumplik)
+- remove: stray itertools import from group.py. (Ales Kozumplik)
+
+* Wed Apr 23 2014 Aleš Kozumplík <ales@redhat.com> - 0.5.0-1
+- doc: fix formatting in api_cli.rst. (Ales Kozumplik)
+- doc: document operation of 'group upgrade'. (Ales Kozumplik)
+- comps: ensure only packages of 'group' reason get deleted on 'group erase'. (Ales Kozumplik)
+- comps: store 'group' reason when installing a group-membering package. (Ales Kozumplik)
+- Override Goal.get_reason(). (Ales Kozumplik)
+- Add dnf.goal.Goal deriving from hawkey.Goal. (Ales Kozumplik)
+- fix: encoding of yumdb directory names in py3. (Ales Kozumplik)
+- tests: clean up the functions that load seeded comps a bit. (Ales Kozumplik)
+- remove: cli._*aybeYouMeant(). (Ales Kozumplik)
+- simplify groups/envs API methods in Base a lot. (Ales Kozumplik)
+- tests: add test for Base._translate_comps_pkg_types() (Ales Kozumplik)
+- refactor: move the group listing etc. methods() away from Base into GroupCommand. (Ales Kozumplik)
+- api: add group.upgrade opration to Base and CLI (RhBug:1029022) (Ales Kozumplik)
+- remove: OriginalGroupPersistor. (Ales Kozumplik)
+- groups: store format version of the groups db. (Ales Kozumplik)
+- groups: saving the persistent data. (Ales Kozumplik)
+- refactor: extract out the transactioning part of _main(). (Ales Kozumplik)
+- groups: Integrate the redone components with Base. (Ales Kozumplik)
+- Add comps Solver. (Ales Kozumplik)
+- groups: redo the GroupPersistor class. (Ales Kozumplik)
+- doc: faq: why we don't check for root. (RhBug:1088166) (Ales Kozumplik)
+- cosmetic: reordered import statements (Jan Silhan)
+- added --refresh option (RhBug:1064226) (Jan Silhan)
+- added forgotten import (Jan Silhan)
+- fixed import errors after yum/i18n.py removal (Jan Silhan)
+- removed to_utf8 from yum/i18n.py (Jan Silhan)
+- removed to_str from yum/i18n.py (Jan Silhan)
+- removed utf8_text_fill from yum/i18n.py (Jan Silhan)
+- removed utf8_width from yum/i18n.py (Jan Silhan)
+- removed utf8_width_fill from yum/i18n.py (Jan Silhan)
+- removed to_unicode from yum/i18n.py (Jan Silhan)
+- make all strings unicode_literals implicitly (Jan Silhan)
+- moved _, P_ to dnf/i18n.py (Jan Silhan)
+- removed utf8_valid from yum/i18n.py (Jan Silhan)
+- removed str_eq from yum/i18n.py (Jan Silhan)
+- removed exception2msg from yum/i18n.py (Jan Silhan)
+- removed dummy_wrapper from yum/i18n.py (Jan Silhan)
+- cosmetics: leave around the good things from 660c3e5 (documentation, UT). (Ales Kozumplik)
+- Revert "fix: provides are not recognized for erase command. (RhBug:1087063)" (Ales Kozumplik)
+- fix: provides are not recognized for erase command. (RhBug:1087063) (Ales Kozumplik)
+- test: fix UsageTest test, so it work without dnf is installed on the system PEP8 cleanup (Tim Lauridsen)
+- cleanup: getSummary() and getUsage() can be dropped entirely now. (Ales Kozumplik)
+- test: use Command.usage & Command.summary API in unittest (Tim Lauridsen)
+- show plugin commands in separate block api: add new public Command.usage & Command.summary API cleanup: make Commands (Tim Lauridsen)
+- tests: move libcomps test to a separate test file. (Ales Kozumplik)
+- refactor: put DistoSyncCommand into its own file (Tim Lauridsen)
+- refactor: commands.group: _split_extcmd is a static method. (Ales Kozumplik)
+- GroupsCommand: make the way comps are searched more robust. (RhBug:1051869) (Ales Kozumplik)
+- tests: move GroupCommand tests to a more proper place. (Ales Kozumplik)
+- fix leak: Base.__del__ causes GC-uncollectable circles. (Ales Kozumplik)
+- gruops: 'list' and similar commands should run without root. (RhBug:1080331) (Ales Kozumplik)
+- refactor: conf is given to Output on instantiation. (Ales Kozumplik)
+- remove: Command.done_command_once and Command.hidden. (Ales Kozumplik)
+- [doc] improve documentation of '--best' (RhBug:1084553) (Ales Kozumplik)
+- api: Command.base and Command.cli are API attributes. (Ales Kozumplik)
+- demands: similarly to 78661a4, commands should set the exit success_exit_status directly. (Ales Kozumplik)
+- demands: commands requiring resolving dymamically need to set the demand now. (Ales Kozumplik)
+- doc: typo in group doc. (RhBug:1084139) (Ales Kozumplik)
+- api: Base.resolve() takes allow_erasing. (RhBug:1073859) (Ales Kozumplik)
+- refactor: OptionParser._checkAbsInstallRoot is static. (Ales Kozumplik)
+- option_parser: remove base dependency. (Ales Kozumplik)
+- move: dnf.cli.cli.OptionParser -> dnf.cli.option_parser.OptionParser. (Ales Kozumplik)
+- doc: 'clean packages' incorrectly mentions we do not delete cached packages. (RhBug:1083767) (Ales Kozumplik)
+- fix: TypeError in dnf history info <id> (RHBug: #1082230) (Tim Lauridsen)
+- Start new version: 0.5.0. (Ales Kozumplik)
+- remove: instance attrs of Base, namely cacheonly. (Ales Kozumplik)
+- tests: remove: support.MockCli. (Ales Kozumplik)
+- tests: fix locale independence. (Radek Holy)
+- cleanups in cli.OptionParser. (Ales Kozumplik)
+- fix: PendingDeprecationWarning from RPM in gpgKeyCheck(). (Ales Kozumplik)
+- api: add Cli.demands.root_user (RhBug:1062889) (Ales Kozumplik)
+- api: add Cli.demands and Command.config() to the API (RhBug:1062884) (Ales Kozumplik)
+- Integrate DemandSheet into CLI. (Ales Kozumplik)
+- Command.configure() takes the command arguments like run(). (Ales Kozumplik)
+- Add dnf.cli.demand.DemandSheet. (Ales Kozumplik)
+- remove: dead code for deplist, version and check-rpmdb commands. (Ales Kozumplik)
+- sync with transifex (Jan Silhan)
+- removed _enc method that did nothing without specspo (Jan Silhan)
+- fixed local reinstall error (Jan Silhan)
+- Fix Term.MODE setting under Python 3 in case of incapable tty stdout. (Radek Holy)
+- tests: move Term tests to better file. (Radek Holy)
+- refactor: move ReinstallCommand in its own module. (Ales Kozumplik)
+- rename: yumbase (case insensitive) -> base. (Ales Kozumplik)
+- fixed py3 error thrown by search command (Jan Silhan)
+- fixed wrong named variable (Jan Silhan)
+- fixed local downgrade error (Jan Silhan)
+- doc: fix Package references that are ambiguous now. (Ales Kozumplik)
+- fix: resource leak in yum.misc.checksum() under py3. (Ales Kozumplik)
+- fix: leak: couple of files objects left open. (Ales Kozumplik)
+- fix PendingDepreaction warning from rpm in _getsysver(). (Ales Kozumplik)
+- repo: Repo.cachedir is not a list. (Ales Kozumplik)
+- api: add Base.package_install et al. and Base.add_remote_rpm(). (RhBug:1079519) (Ales Kozumplik)
+- tests: fix tests broken under foreign locale after 32818b2. (Ales Kozumplik)
+- refactor: move install, downgrade and upgrade commands into separate modules. (Ales Kozumplik)
+- tests: refactor: make Term tests more isolated. (Radek Holy)
+- tests: fix terminfo capability independence. (Radek Holy)
+- api: explain that Base is a context manager with a close(). (Ales Kozumplik)
+- cosmetic: move stuff around in comps. (Ales Kozumplik)
+- api: groups: add comps.Package, add group.package_iter(). (RhBug:1079932) (Ales Kozumplik)
+- fixed installation of conflicted packages (RhBug:1061780) (Jan Silhan)
+- removed never executed code based on _ts_saved_file variable (Jan Silhan)
+- added logrotate script and ownership of log files to dnf (RhBug:1064211) (Jan Silhan)
+- fixed: highlight characters broken under py3 (RhBug:1076884) (Jan Silhan)
+- remove: base.deselectGroup(). it is not used. (Ales Kozumplik)
+- tests: fix broken InstallMultilib.test_install_src_fails(). (Ales Kozumplik)
+- groups: support manipulation with environments (RhBug:1063666) (Ales Kozumplik)
+- add dnf.util.partition(). (Ales Kozumplik)
+- refactor: RepoPersistor: use the global logger instead of an instance variable. (Ales Kozumplik)
+- groups: besides installed groups also store persistently the environments. (Ales Kozumplik)
+- rename: persistor.Groups -> ClonableDict. (Ales Kozumplik)
+- doc: cli_vs_yum: typography in bandwidth limiting section. (Ales Kozumplik)
+- doc: cli_vs_yum: we do not partially allow operations that install .srpm. (RhBug:1080489) (Ales Kozumplik)
+- refactor: imports order in cli/commands/__init__.py. (Ales Kozumplik)
+- refactor: groups: make all commands use _patterns2groups(). (Ales Kozumplik)
+- kernel: remove kernel-source from const.INSTALLONLYPKGS. (Ales Kozumplik)
+- build: 0.4.19-1 (Ales Kozumplik)
+- New version: 0.4.19 (Ales Kozumplik)
+- downloads: bump number of downloaded files on a skip. (RhBug:1079621) (Ales Kozumplik)
+- packaging: add dnf.cli.commands to the installation. (Ales Kozumplik)
+- refactor: put GroupCommand into its separate module. (Ales Kozumplik)
+- rename: make cli.commands a subpackage. (Ales Kozumplik)
+- AUTHORS: added Albert. (Ales Kozumplik)
+- test: fixed CacheTest.test_noroot() when running as root (Albert Uchytil)
+- AUTHORS: added Tim. (Ales Kozumplik)
+- fixes TypeError: '_DownloadErrors' object is not iterable (RhBug:1078832) (Tim Lauridsen)
+- fixed not including .mo files (Jan Silhan)
+- comps: _by_pattern() no longer does the comma splitting. (Ales Kozumplik)
+
+* Mon Mar 24 2014 Aleš Kozumplík <ales@redhat.com> - 0.4.19-1
+- downloads: bump number of downloaded files on a skip. (RhBug:1079621) (Ales Kozumplik)
+- packaging: add dnf.cli.commands to the installation. (Ales Kozumplik)
+- refactor: put GroupCommand into its separate module. (Ales Kozumplik)
+- rename: make cli.commands a subpackage. (Ales Kozumplik)
+- AUTHORS: added Albert. (Ales Kozumplik)
+- test: fixed CacheTest.test_noroot() when running as root (Albert Uchytil)
+- AUTHORS: added Tim. (Ales Kozumplik)
+- fixes TypeError: '_DownloadErrors' object is not iterable (RhBug:1078832) (Tim Lauridsen)
+- fixed not including .mo files (Jan Silhan)
+- comps: _by_pattern() no longer does the comma splitting. (Ales Kozumplik)
+- including .mo files correctly (Jan Silhan)
+- tests: fix locale independence. (Radek Holy)
+- remove: unused trashy methods in dnf.yum.misc. (Ales Kozumplik)
+- persistor: do not save Groups if it didn't change (RhBug:1077173) (Ales Kozumplik)
+- tests: simplify the traceback logging. (Ales Kozumplik)
+- main: log IO errors etc. thrown even during Base.__exit__. (Ales Kozumplik)
+- logging: do not log IOError tracebacks in verbose mode. (Ales Kozumplik)
+- refactor: move out main._main()'s inner error handlers. (Ales Kozumplik)
+- added gettext as a build dependency  for translation files (Jan Silhan)
+- translation: updated .pot file and fetched fresh .po files from transifex (Jan Silhan)
+- removed redundant word from persistor translation (Jan Silhan)
+- translation: show relative path in generated pot file (Jan Silhan)
+- refactor: replaced type comparisons with isinstance (Jan Silhan)
+- translation: added mo files generation and including them in rpm package (Jan Silhan)
+- removed unused imports in base.py (Jan Silhan)
+- doc: typo in Base.group_install(). (Ales Kozumplik)
+
+* Mon Mar 17 2014 Aleš Kozumplík <ales@redhat.com> - 0.4.18-1
+- api: drop items deprecated since 0.4.9 or earlier. (Ales Kozumplik)
+- api: deprecate Base.select_group() (Ales Kozumplik)
+- doc: document the group marking operations. (Ales Kozumplik)
+- api: add Base.group_install() with exclude capability. (Ales Kozumplik)
+- groups: recognize 'mark install' instead of 'mark-install'. (Ales Kozumplik)
+- Allow installing optional packages from a group. (RhBug:1067136) (Ales Kozumplik)
+- groups: add installing groups the object marking style. (Ales Kozumplik)
+- groups: add Base.group_remove(). (Ales Kozumplik)
+- groups: add support for marking/unmarking groups. (Ales Kozumplik)
+- groups: add dnf.persistor.GroupPersistor(), to store the installed groups. (Ales Kozumplik)
+- logging: log plugin import tracebacks on the subdebug level. (Ales Kozumplik)
+- rename: dnf.persistor.Persistor -> RepoPersistor. (Ales Kozumplik)
+- doc: update README and FAQ with the unabbreviated name. (Ales Kozumplik)
+- groups: fix grouplist crashes with new libcomps. (Ales Kozumplik)
+- Do not terminate for unreadable repository config. (RhBug:1071212) (Ales Kozumplik)
+- cli: get rid of ridiculous slashes and the file:// scheme on config read fails. (Ales Kozumplik)
+- repo: log more than nothing about a remote repo MD download. (Ales Kozumplik)
+- drpm: fallback to .rpm download on drpm rebuild error. (RhBug:1071501) (Ales Kozumplik)
+- remove: Base.download_packages()' inner function mediasort(). (Ales Kozumplik)
+- tests: tidy up the imports, in particular import mock from support. (Ales Kozumplik)
+- changed documentation of distro-sync command (Jan Silhan)
+- added distro-sync explicit packages support (RhBug:963710) (Jan Silhan)
+- renamed testcase to distro_sync_all (Jan Silhan)
+- Minor spelling (Arjun Temurnikar)
+- i18n: translate repo sync error message. (Ales Kozumplik)
+- add support for ppc64le (Dennis Gilmore)
+- there is no arch called arm64 it is aarch64 (Dennis Gilmore)
+
+* Wed Mar 5 2014 Aleš Kozumplík <ales@redhat.com> - 0.4.17-1
+- doc: in the faq, warn users who might install rawhide packages on stable. (RhBug:1071677) (Ales Kozumplik)
+- cli: better format the download errors report. (Ales Kozumplik)
+- drpm: properly report applydeltarpm errors. (RhBug:1071501) (Ales Kozumplik)
+- fixed Japanese translatated message (RhBug:1071455) (Jan Silhan)
+- generated and synchronized translations with transifex (Jan Silhan)
+- added transifex support to cmake (gettext-export, gettext-update) (Jan Silhan)
+- api: expose RepoDict.get_matching() and RepoDict.all() (RhBug:1071323) (Ales Kozumplik)
+- api: add Repo.set_progress_bar() to the API. (Ales Kozumplik)
+- tests: test_cli_progress uses StringIO to check the output. (Ales Kozumplik)
+- downloads: fix counting past 100% on mirror failures (RhBug:1070598) (Ales Kozumplik)
+- repo: log callback calls to librepo. (Ales Kozumplik)
+- Add repository-packages remove-or-reinstall command. (Radek Holy)
+- Support negative filtering by new repository name in Base.reinstall. (Radek Holy)
+- Support removal N/A packages in Base.reinstall. (Radek Holy)
+- Add repository-packages remove command. (Radek Holy)
+- refactor: Reduce amount of code in repository-packages subcommands. (Radek Holy)
+- Support filtering by repository name in Base.remove. (Radek Holy)
+- remove: BaseCli.erasePkgs (Radek Holy)
+- Add repository-packages reinstall command. (Radek Holy)
+- exceptions: improve empty key handling in DownloadError.__str__(). (Ales Kozumplik)
+- downloads: fix fatal error message return value from download_payloads() (RhBug:1071518) (Ales Kozumplik)
+- fixes problem with TypeError in Base.read_comps() in python3 (RhBug:1070710) (Tim Lauridsen)
+- fix read_comps: not throwing exceptions when repo has no repodata (RhBug:1059704) (Jan Silhan)
+- not decompressing groups when --cacheonly option is set (RhBug:1058224) (Jan Silhan)
+- added forgotten import (Jan Silhan)
+- Add repository-packages move-to command. (Radek Holy)
+- Add repository-packages reinstall-old command. (Radek Holy)
+- Support filtering by repository name in Base.reinstall. (Radek Holy)
+- tests: test effects instead of mock calls. (Radek Holy)
+- Wrap some recently added long lines. (Radek Holy)
+- remove: BaseCli.reinstallPkgs (Radek Holy)
+- repos: repos can never expire. (RhBug:1069538) (Ales Kozumplik)
+- build: rebuild with 9d95442 (updated summaries_cache). (Ales Kozumplik)
+- doc: update summaries_cache. (Ales Kozumplik)
+
+* Wed Feb 26 2014 Aleš Kozumplík <ales@redhat.com> - 0.4.16-1
+- fix: ensure MDPayload always has a valid progress attribute. (RhBug:1069996) (Ales Kozumplik)
+- refactor: Move repo-pkgs upgrade-to to a standalone class instead of reusing the UpgradeToCommand. (Radek Holy)
+- remove: BaseCli.updatePkgs (Radek Holy)
+- refactor: Remove the reference to updatePkgs from UpgradeSubCommand. (Radek Holy)
+- refactor: Remove the reference to updatePkgs from UpgradeCommand. (Radek Holy)
+- refactor: Move repo-pkgs upgrade to a standalone class instead of reusing the UpgradeCommand. (Radek Holy)
+- remove: BaseCli.installPkgs (Radek Holy)
+- refactor: Remove the reference to installPkgs from InstallSubCommand. (Radek Holy)
+- refactor: Remove the reference to installPkgs from InstallCommand. (Radek Holy)
+- refactor: Move repo-pkgs install to a standalone class instead of reusing the InstallCommand. (Radek Holy)
+- Revert "Support filtering by repository name in install_groupie." (Radek Holy)
+- Revert "Support filtering by repository name in Base.select_group." (Radek Holy)
+- Drop group filtering by repository name from installPkgs. (Radek Holy)
+- Drop "repo-pkgs install @Group" support. (Radek Holy)
+- refactor: Move CheckUpdateCommand.check_updates to BaseCli. (Radek Holy)
+- refactor: Move repo-pkgs check-update to a standalone class instead of reusing the CheckUpdateCommand. (Radek Holy)
+- refactor: Move repo-pkgs list to a standalone class instead of reusing the ListCommand. (Radek Holy)
+- tests: Add tests of repo-pkgs info against the documentation. (Radek Holy)
+- Fix "repo-pkgs info installed" behavior with respect to the documentation. (Radek Holy)
+- refactor: Move MockBase methods to BaseStubMixin. (Radek Holy)
+- refactor: Move repo-pkgs info to a standalone class instead of reusing the InfoCommand. (Radek Holy)
+- refactor: Move InfoCommand._print_packages to BaseCli.output_packages. (Radek Holy)