richardphibel / rpms / dnf

Forked from rpms/dnf 2 years ago
Clone
Blob Blame History Raw
From 688eefb336006b0b7f115ae110e97e1e59d1564b Mon Sep 17 00:00:00 2001
From: Marek Blaha <mblaha@redhat.com>
Date: Fri, 18 Mar 2022 13:14:01 +0100
Subject: [PATCH] Update translations (RhBug: 2017270)

---
 po/dnf.pot  | 1166 ++++++++++++++------------
 po/fr.po    | 1523 +++++++++++++++++++---------------
 po/ja.po    | 1739 +++++++++++++++++++++-----------------
 po/ko.po    | 2291 +++++++++++++++++++++++++++------------------------
 po/zh_CN.po | 1491 ++++++++++++++++++---------------
 po/zh_TW.po | 1345 ++++++++++++++++--------------
 6 files changed, 5259 insertions(+), 4296 deletions(-)

diff --git a/po/dnf.pot b/po/dnf.pot
index f7101537..62a8df83 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: 2020-10-05 09:18-0400\n"
+"POT-Creation-Date: 2022-02-28 11:24+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"
@@ -63,7 +63,7 @@ msgstr ""
 msgid "Failed to execute command '%s': returned %d"
 msgstr ""
 
-#: dnf/automatic/main.py:164 dnf/conf/config.py:151
+#: dnf/automatic/main.py:164
 #, python-format
 msgid "Unknown configuration value: %s=%s in %s; %s"
 msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
 msgid "Unknown configuration option: %s = %s in %s"
 msgstr ""
 
-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299
+#: dnf/automatic/main.py:237 dnf/cli/cli.py:305
 msgid "GPG check FAILED"
 msgstr ""
 
@@ -86,9 +86,10 @@ msgid "Started dnf-automatic."
 msgstr ""
 
 #: dnf/automatic/main.py:308
-#, python-format
-msgid "Sleep for %s seconds"
-msgstr ""
+msgid "Sleep for {} second"
+msgid_plural "Sleep for {} seconds"
+msgstr[0] ""
+msgstr[1] ""
 
 #: dnf/automatic/main.py:315
 msgid "System is off-line."
@@ -100,389 +101,375 @@ msgstr ""
 msgid "Error: %s"
 msgstr ""
 
-#: dnf/base.py:146
+#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479
 msgid "loading repo '{}' failure: {}"
 msgstr ""
 
-#: dnf/base.py:148
+#: dnf/base.py:150
 msgid "Loading repository '{}' has failed"
 msgstr ""
 
-#: dnf/base.py:320
+#: dnf/base.py:327
 msgid "Metadata timer caching disabled when running on metered connection."
 msgstr ""
 
-#: dnf/base.py:325
+#: dnf/base.py:332
 msgid "Metadata timer caching disabled when running on a battery."
 msgstr ""
 
-#: dnf/base.py:330
+#: dnf/base.py:337
 msgid "Metadata timer caching disabled."
 msgstr ""
 
-#: dnf/base.py:335
+#: dnf/base.py:342
 msgid "Metadata cache refreshed recently."
 msgstr ""
 
-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91
+#: dnf/base.py:348 dnf/cli/commands/__init__.py:91
 msgid "There are no enabled repositories in \"{}\"."
 msgstr ""
 
-#: dnf/base.py:348
+#: dnf/base.py:355
 #, python-format
 msgid "%s: will never be expired and will not be refreshed."
 msgstr ""
 
-#: dnf/base.py:350
+#: dnf/base.py:357
 #, python-format
 msgid "%s: has expired and will be refreshed."
 msgstr ""
 
 #. expires within the checking period:
-#: dnf/base.py:354
+#: dnf/base.py:361
 #, python-format
 msgid "%s: metadata will expire after %d seconds and will be refreshed now"
 msgstr ""
 
-#: dnf/base.py:358
+#: dnf/base.py:365
 #, python-format
 msgid "%s: will expire after %d seconds."
 msgstr ""
 
 #. performs the md sync
-#: dnf/base.py:364
+#: dnf/base.py:371
 msgid "Metadata cache created."
 msgstr ""
 
-#: dnf/base.py:397
+#: dnf/base.py:404 dnf/base.py:471
 #, python-format
 msgid "%s: using metadata from %s."
 msgstr ""
 
-#: dnf/base.py:409
+#: dnf/base.py:416 dnf/base.py:484
 #, python-format
 msgid "Ignoring repositories: %s"
 msgstr ""
 
-#: dnf/base.py:412
+#: dnf/base.py:419
 #, python-format
 msgid "Last metadata expiration check: %s ago on %s."
 msgstr ""
 
-#: dnf/base.py:443
+#: dnf/base.py:512
 msgid ""
 "The downloaded packages were saved in cache until the next successful "
 "transaction."
 msgstr ""
 
-#: dnf/base.py:445
+#: dnf/base.py:514
 #, python-format
 msgid "You can remove cached packages by executing '%s'."
 msgstr ""
 
-#: dnf/base.py:535
+#: dnf/base.py:606
 #, python-format
 msgid "Invalid tsflag in config file: %s"
 msgstr ""
 
-#: dnf/base.py:591
+#: dnf/base.py:662
 #, python-format
 msgid "Failed to add groups file for repository: %s - %s"
 msgstr ""
 
-#: dnf/base.py:823
+#: dnf/base.py:904
 msgid "Running transaction check"
 msgstr ""
 
-#: dnf/base.py:831
+#: dnf/base.py:912
 msgid "Error: transaction check vs depsolve:"
 msgstr ""
 
-#: dnf/base.py:837
+#: dnf/base.py:918
 msgid "Transaction check succeeded."
 msgstr ""
 
-#: dnf/base.py:840
+#: dnf/base.py:921
 msgid "Running transaction test"
 msgstr ""
 
-#: dnf/base.py:850 dnf/base.py:992
+#: dnf/base.py:931 dnf/base.py:1082
 msgid "RPM: {}"
 msgstr ""
 
-#: dnf/base.py:851
+#: dnf/base.py:932
 msgid "Transaction test error:"
 msgstr ""
 
-#: dnf/base.py:862
+#: dnf/base.py:943
 msgid "Transaction test succeeded."
 msgstr ""
 
-#: dnf/base.py:883
+#: dnf/base.py:964
 msgid "Running transaction"
 msgstr ""
 
-#: dnf/base.py:911
+#: dnf/base.py:1001
 msgid "Disk Requirements:"
 msgstr ""
 
-#: dnf/base.py:914
+#: dnf/base.py:1004
 #, 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:921
+#: dnf/base.py:1011
 msgid "Error Summary"
 msgstr ""
 
-#: dnf/base.py:947
+#: dnf/base.py:1037
 #, python-brace-format
 msgid "RPMDB altered outside of {prog}."
 msgstr ""
 
-#: dnf/base.py:993 dnf/base.py:1001
+#: dnf/base.py:1083 dnf/base.py:1091
 msgid "Could not run transaction."
 msgstr ""
 
-#: dnf/base.py:996
+#: dnf/base.py:1086
 msgid "Transaction couldn't start:"
 msgstr ""
 
-#: dnf/base.py:1010
+#: dnf/base.py:1100
 #, python-format
 msgid "Failed to remove transaction file %s"
 msgstr ""
 
-#: dnf/base.py:1092
+#: dnf/base.py:1182
 msgid "Some packages were not downloaded. Retrying."
 msgstr ""
 
-#: dnf/base.py:1122
+#: dnf/base.py:1212
 #, python-format
 msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
 msgstr ""
 
-#: dnf/base.py:1125
+#: dnf/base.py:1215
 #, python-format
 msgid ""
 "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
 msgstr ""
 
-#: dnf/base.py:1167
+#: dnf/base.py:1257
 msgid "Cannot add local packages, because transaction job already exists"
 msgstr ""
 
-#: dnf/base.py:1181
+#: dnf/base.py:1271
 msgid "Could not open: {}"
 msgstr ""
 
-#: dnf/base.py:1219
+#: dnf/base.py:1309
 #, python-format
 msgid "Public key for %s is not installed"
 msgstr ""
 
-#: dnf/base.py:1223
+#: dnf/base.py:1313
 #, python-format
 msgid "Problem opening package %s"
 msgstr ""
 
-#: dnf/base.py:1231
+#: dnf/base.py:1321
 #, python-format
 msgid "Public key for %s is not trusted"
 msgstr ""
 
-#: dnf/base.py:1235
+#: dnf/base.py:1325
 #, python-format
 msgid "Package %s is not signed"
 msgstr ""
 
-#: dnf/base.py:1265
+#: dnf/base.py:1355
 #, python-format
 msgid "Cannot remove %s"
 msgstr ""
 
-#: dnf/base.py:1269
+#: dnf/base.py:1359
 #, python-format
 msgid "%s removed"
 msgstr ""
 
-#: dnf/base.py:1549
+#: dnf/base.py:1639
 msgid "No match for group package \"{}\""
 msgstr ""
 
-#: dnf/base.py:1635
+#: dnf/base.py:1721
 #, python-format
 msgid "Adding packages from group '%s': %s"
 msgstr ""
 
-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442
-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592
-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80
+#: dnf/base.py:1744 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:1676
+#: dnf/base.py:1762
 msgid "No groups marked for removal."
 msgstr ""
 
-#: dnf/base.py:1710
+#: dnf/base.py:1796
 msgid "No group marked for upgrade."
 msgstr ""
 
-#: dnf/base.py:1925
+#: dnf/base.py:2010
 #, python-format
 msgid "Package %s not installed, cannot downgrade it."
 msgstr ""
 
-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980
-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411
-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482
-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633
-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147
+#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071
+#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 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
 #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84
-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121
+#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116
 #, python-format
 msgid "No match for argument: %s"
 msgstr ""
 
-#: dnf/base.py:1934
+#: dnf/base.py:2019
 #, python-format
 msgid "Package %s of lower version already installed, cannot downgrade it."
 msgstr ""
 
-#: dnf/base.py:1957
+#: dnf/base.py:2042
 #, python-format
 msgid "Package %s not installed, cannot reinstall it."
 msgstr ""
 
-#: dnf/base.py:1972
+#: dnf/base.py:2057
 #, python-format
 msgid "File %s is a source package and cannot be updated, ignoring."
 msgstr ""
 
-#: dnf/base.py:1978
+#: dnf/base.py:2068
 #, python-format
 msgid "Package %s not installed, cannot update it."
 msgstr ""
 
-#: dnf/base.py:1987
+#: dnf/base.py:2078
 #, python-format
 msgid ""
 "The same or higher version of %s is already installed, cannot update it."
 msgstr ""
 
-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81
+#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81
 #, python-format
 msgid "Package %s available, but not installed."
 msgstr ""
 
-#: dnf/base.py:2032
+#: dnf/base.py:2127
 #, python-format
 msgid "Package %s available, but installed for different architecture."
 msgstr ""
 
-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699
+#: dnf/base.py:2152
 #, python-format
 msgid "No package %s installed."
 msgstr ""
 
-#: dnf/base.py:2075 dnf/cli/commands/install.py:136
+#: dnf/base.py:2170 dnf/cli/commands/install.py:136
 #: dnf/cli/commands/remove.py:133
 #, python-format
 msgid "Not a valid form: %s"
 msgstr ""
 
-#: dnf/base.py:2091 dnf/cli/commands/__init__.py:681
-#: dnf/cli/commands/remove.py:163
+#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676
+#: dnf/cli/commands/remove.py:162
 msgid "No packages marked for removal."
 msgstr ""
 
-#: dnf/base.py:2179 dnf/cli/cli.py:422
+#: dnf/base.py:2273 dnf/cli/cli.py:428
 #, python-format
 msgid "Packages for argument %s available, but not installed."
 msgstr ""
 
-#: dnf/base.py:2184
+#: dnf/base.py:2278
 #, python-format
 msgid "Package %s of lowest version already installed, cannot downgrade it."
 msgstr ""
 
-#: dnf/base.py:2242
-msgid "Action not handled: {}"
-msgstr ""
-
-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703
-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169
-#, python-format
-msgid "No package %s available."
-msgstr ""
-
-#: dnf/base.py:2269
-msgid "no package matched"
-msgstr ""
-
-#: dnf/base.py:2290
+#: dnf/base.py:2378
 msgid "No security updates needed, but {} update available"
 msgstr ""
 
-#: dnf/base.py:2292
+#: dnf/base.py:2380
 msgid "No security updates needed, but {} updates available"
 msgstr ""
 
-#: dnf/base.py:2296
+#: dnf/base.py:2384
 msgid "No security updates needed for \"{}\", but {} update available"
 msgstr ""
 
-#: dnf/base.py:2298
+#: dnf/base.py:2386
 msgid "No security updates needed for \"{}\", but {} updates available"
 msgstr ""
 
 #. raise an exception, because po.repoid is not in self.repos
-#: dnf/base.py:2319
+#: dnf/base.py:2407
 #, python-format
 msgid "Unable to retrieve a key for a commandline package: %s"
 msgstr ""
 
-#: dnf/base.py:2327
+#: dnf/base.py:2415
 #, python-format
 msgid ". Failing package is: %s"
 msgstr ""
 
-#: dnf/base.py:2328
+#: dnf/base.py:2416
 #, python-format
 msgid "GPG Keys are configured as: %s"
 msgstr ""
 
-#: dnf/base.py:2340
+#: dnf/base.py:2428
 #, python-format
 msgid "GPG key at %s (0x%s) is already installed"
 msgstr ""
 
-#: dnf/base.py:2373
+#: dnf/base.py:2464
 msgid "The key has been approved."
 msgstr ""
 
-#: dnf/base.py:2376
+#: dnf/base.py:2467
 msgid "The key has been rejected."
 msgstr ""
 
-#: dnf/base.py:2409
+#: dnf/base.py:2500
 #, python-format
 msgid "Key import failed (code %d)"
 msgstr ""
 
-#: dnf/base.py:2411
+#: dnf/base.py:2502
 msgid "Key imported successfully"
 msgstr ""
 
-#: dnf/base.py:2415
+#: dnf/base.py:2506
 msgid "Didn't install any keys"
 msgstr ""
 
-#: dnf/base.py:2418
+#: dnf/base.py:2509
 #, python-format
 msgid ""
 "The GPG keys listed for the \"%s\" repository are already installed but they "
@@ -490,49 +477,49 @@ msgid ""
 "Check that the correct key URLs are configured for this repository."
 msgstr ""
 
-#: dnf/base.py:2429
+#: dnf/base.py:2520
 msgid "Import of key(s) didn't help, wrong key(s)?"
 msgstr ""
 
-#: dnf/base.py:2482
+#: dnf/base.py:2573
 msgid "  * Maybe you meant: {}"
 msgstr ""
 
-#: dnf/base.py:2514
+#: dnf/base.py:2605
 msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
 msgstr ""
 
-#: dnf/base.py:2517
+#: dnf/base.py:2608
 msgid "Some packages from local repository have incorrect checksum"
 msgstr ""
 
-#: dnf/base.py:2520
+#: dnf/base.py:2611
 msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
 msgstr ""
 
-#: dnf/base.py:2523
+#: dnf/base.py:2614
 msgid ""
 "Some packages have invalid cache, but cannot be downloaded due to \"--"
 "cacheonly\" option"
 msgstr ""
 
-#: dnf/base.py:2541 dnf/base.py:2561
+#: dnf/base.py:2632 dnf/base.py:2652
 msgid "No match for argument"
 msgstr ""
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2640 dnf/base.py:2660
 msgid "All matches were filtered out by exclude filtering for argument"
 msgstr ""
 
-#: dnf/base.py:2551
+#: dnf/base.py:2642
 msgid "All matches were filtered out by modular filtering for argument"
 msgstr ""
 
-#: dnf/base.py:2567
+#: dnf/base.py:2658
 msgid "All matches were installed from a different repository for argument"
 msgstr ""
 
-#: dnf/base.py:2583
+#: dnf/base.py:2705
 #, python-format
 msgid "Package %s is already installed."
 msgstr ""
@@ -552,8 +539,8 @@ msgstr ""
 msgid "Cannot read file \"%s\": %s"
 msgstr ""
 
-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902
-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108
+#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804
+#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108
 #, python-format
 msgid "Config error: %s"
 msgstr ""
@@ -584,208 +571,188 @@ msgid ""
 "stream '{2}'"
 msgstr ""
 
-#: dnf/cli/cli.py:172
+#: dnf/cli/cli.py:173
 #, 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 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 ""
 
-#: dnf/cli/cli.py:210
+#: dnf/cli/cli.py:212
 #, python-brace-format
 msgid "{prog} will only download packages for the transaction."
 msgstr ""
 
-#: dnf/cli/cli.py:213
+#: dnf/cli/cli.py:215
 #, python-brace-format
 msgid ""
 "{prog} will only download packages, install gpg keys, and check the "
 "transaction."
 msgstr ""
 
-#: dnf/cli/cli.py:217
+#: dnf/cli/cli.py:219
 msgid "Operation aborted."
 msgstr ""
 
-#: dnf/cli/cli.py:224
+#: dnf/cli/cli.py:226
 msgid "Downloading Packages:"
 msgstr ""
 
-#: dnf/cli/cli.py:230
+#: dnf/cli/cli.py:232
 msgid "Error downloading packages:"
 msgstr ""
 
-#: dnf/cli/cli.py:258
+#: dnf/cli/cli.py:264
 msgid "Transaction failed"
 msgstr ""
 
-#: dnf/cli/cli.py:281
+#: dnf/cli/cli.py:287
 msgid ""
 "Refusing to automatically import keys when running unattended.\n"
 "Use \"-y\" to override."
 msgstr ""
 
-#: dnf/cli/cli.py:331
+#: dnf/cli/cli.py:337
 msgid "Changelogs for {}"
 msgstr ""
 
-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511
+#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517
 msgid "Obsoleting Packages"
 msgstr ""
 
-#: dnf/cli/cli.py:393
+#: dnf/cli/cli.py:399
 msgid "No packages marked for distribution synchronization."
 msgstr ""
 
-#: dnf/cli/cli.py:428
+#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395
+#, python-format
+msgid "No package %s available."
+msgstr ""
+
+#: dnf/cli/cli.py:434
 msgid "No packages marked for downgrade."
 msgstr ""
 
-#: dnf/cli/cli.py:479
+#: dnf/cli/cli.py:485
 msgid "Installed Packages"
 msgstr ""
 
-#: dnf/cli/cli.py:487
+#: dnf/cli/cli.py:493
 msgid "Available Packages"
 msgstr ""
 
-#: dnf/cli/cli.py:491
+#: dnf/cli/cli.py:497
 msgid "Autoremove Packages"
 msgstr ""
 
-#: dnf/cli/cli.py:493
+#: dnf/cli/cli.py:499
 msgid "Extra Packages"
 msgstr ""
 
-#: dnf/cli/cli.py:497
+#: dnf/cli/cli.py:503
 msgid "Available Upgrades"
 msgstr ""
 
-#: dnf/cli/cli.py:513
+#: dnf/cli/cli.py:519
 msgid "Recently Added Packages"
 msgstr ""
 
-#: dnf/cli/cli.py:518
+#: dnf/cli/cli.py:523
 msgid "No matching Packages to list"
 msgstr ""
 
-#: dnf/cli/cli.py:599
+#: dnf/cli/cli.py:604
 msgid "No Matches found"
 msgstr ""
 
-#: dnf/cli/cli.py:609
-msgid "No transaction ID given"
-msgstr ""
-
-#: dnf/cli/cli.py:614
-msgid "Not found given transaction ID"
-msgstr ""
-
-#: dnf/cli/cli.py:623
-msgid "Found more than one transaction ID!"
-msgstr ""
-
-#: dnf/cli/cli.py:640
-#, python-format
-msgid "Transaction history is incomplete, before %u."
-msgstr ""
-
-#: dnf/cli/cli.py:642
-#, python-format
-msgid "Transaction history is incomplete, after %u."
-msgstr ""
-
-#: dnf/cli/cli.py:689
-msgid "Undoing transaction {}, from {}"
-msgstr ""
-
-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237
+#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237
 #, python-format
 msgid "Unknown repo: '%s'"
 msgstr ""
 
-#: dnf/cli/cli.py:783
+#: dnf/cli/cli.py:685
 #, python-format
 msgid "No repository match: %s"
 msgstr ""
 
-#: dnf/cli/cli.py:817
+#: dnf/cli/cli.py:719
 msgid ""
 "This command has to be run with superuser privileges (under the root user on "
 "most systems)."
 msgstr ""
 
-#: dnf/cli/cli.py:847
+#: dnf/cli/cli.py:749
 #, python-format
 msgid "No such command: %s. Please use %s --help"
 msgstr ""
 
-#: dnf/cli/cli.py:850
+#: 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 ""
 
-#: dnf/cli/cli.py:854
+#: dnf/cli/cli.py:756
 #, python-brace-format
 msgid ""
 "It could be a {prog} plugin command, but loading of plugins is currently "
 "disabled."
 msgstr ""
 
-#: dnf/cli/cli.py:912
+#: dnf/cli/cli.py:814
 msgid ""
 "--destdir or --downloaddir must be used with --downloadonly or download or "
 "system-upgrade command."
 msgstr ""
 
-#: dnf/cli/cli.py:918
+#: dnf/cli/cli.py:820
 msgid ""
 "--enable, --set-enabled and --disable, --set-disabled must be used with "
 "config-manager command."
 msgstr ""
 
-#: dnf/cli/cli.py:1000
+#: 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 ""
 
-#: dnf/cli/cli.py:1020
+#: dnf/cli/cli.py:922
 msgid "Config file \"{}\" does not exist"
 msgstr ""
 
-#: dnf/cli/cli.py:1040
+#: dnf/cli/cli.py:942
 msgid ""
 "Unable to detect release version (use '--releasever' to specify release "
 "version)"
 msgstr ""
 
-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471
+#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471
 msgid "argument {}: not allowed with argument {}"
 msgstr ""
 
-#: dnf/cli/cli.py:1134
+#: dnf/cli/cli.py:1023
 #, python-format
 msgid "Command \"%s\" already defined"
 msgstr ""
 
-#: dnf/cli/cli.py:1154
+#: dnf/cli/cli.py:1043
 msgid "Excludes in dnf.conf: "
 msgstr ""
 
-#: dnf/cli/cli.py:1157
+#: dnf/cli/cli.py:1046
 msgid "Includes in dnf.conf: "
 msgstr ""
 
-#: dnf/cli/cli.py:1160
+#: dnf/cli/cli.py:1049
 msgid "Excludes in repo "
 msgstr ""
 
-#: dnf/cli/cli.py:1163
+#: dnf/cli/cli.py:1052
 msgid "Includes in repo "
 msgstr ""
 
@@ -826,38 +793,38 @@ msgstr ""
 msgid "display details about a package or group of packages"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740
+#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735
 msgid "show all packages (default)"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743
-#: dnf/cli/commands/module.py:351
+#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738
+#: dnf/cli/commands/module.py:376
 msgid "show only available packages"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746
+#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741
 msgid "show only installed packages"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749
+#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744
 msgid "show only extras packages"
 msgstr ""
 
 #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183
-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755
+#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750
 msgid "show only upgrades packages"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758
+#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753
 msgid "show only autoremove packages"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761
+#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756
 msgid "show only recently changed packages"
 msgstr ""
 
 #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265
-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48
+#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48
 #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44
 #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46
 msgid "PACKAGE"
@@ -895,70 +862,70 @@ msgstr ""
 msgid "show changelogs before update"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414
-#: dnf/cli/commands/__init__.py:470
+#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409
+#: dnf/cli/commands/__init__.py:465
 msgid "No package available."
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:376
+#: dnf/cli/commands/__init__.py:371
 msgid "No packages marked for install."
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:412
+#: dnf/cli/commands/__init__.py:407
 msgid "No package installed."
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489
+#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484
 #: dnf/cli/commands/reinstall.py:91
 #, python-format
 msgid " (from %s)"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490
+#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485
 #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105
 #, python-format
 msgid "Installed package %s%s not available."
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576
-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666
+#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571
+#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661
 msgid "No package installed from the repository."
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101
+#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101
 msgid "No packages marked for reinstall."
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89
+#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84
 msgid "No packages marked for upgrade."
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:726
+#: dnf/cli/commands/__init__.py:721
 msgid "run commands on top of all packages in given repository"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "REPOID"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "Repository ID"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48
+#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48
 #: dnf/cli/commands/updateinfo.py:108
 msgid "Package specification"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:801
+#: dnf/cli/commands/__init__.py:796
 msgid "display a helpful usage message"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:805
+#: dnf/cli/commands/__init__.py:800
 msgid "COMMAND"
 msgstr ""
 
-#: dnf/cli/commands/__init__.py:806
+#: dnf/cli/commands/__init__.py:801
 #, python-brace-format
 msgid "{prog} command to get help for"
 msgstr ""
@@ -1130,7 +1097,9 @@ msgid "Waiting for process with pid %d to finish."
 msgstr ""
 
 #: dnf/cli/commands/deplist.py:32
-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 ""
 
 #: dnf/cli/commands/distrosync.py:32
@@ -1157,78 +1126,78 @@ msgstr ""
 msgid "No group data available for configured repositories."
 msgstr ""
 
-#: dnf/cli/commands/group.py:129
+#: dnf/cli/commands/group.py:126
 #, python-format
 msgid "Warning: Group %s does not exist."
 msgstr ""
 
-#: dnf/cli/commands/group.py:170
+#: dnf/cli/commands/group.py:167
 msgid "Warning: No groups match:"
 msgstr ""
 
-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193
-#: dnf/cli/output.py:1226
+#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190
+#: dnf/cli/output.py:1139
 msgid "<name-unset>"
 msgstr ""
 
-#: dnf/cli/commands/group.py:199
+#: dnf/cli/commands/group.py:196
 msgid "Available Environment Groups:"
 msgstr ""
 
-#: dnf/cli/commands/group.py:201
+#: dnf/cli/commands/group.py:198
 msgid "Installed Environment Groups:"
 msgstr ""
 
-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294
+#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291
 msgid "Installed Groups:"
 msgstr ""
 
-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301
+#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298
 msgid "Installed Language Groups:"
 msgstr ""
 
-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308
+#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305
 msgid "Available Groups:"
 msgstr ""
 
-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315
+#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312
 msgid "Available Language Groups:"
 msgstr ""
 
-#: dnf/cli/commands/group.py:322
+#: dnf/cli/commands/group.py:319
 msgid "include optional packages from group"
 msgstr ""
 
-#: dnf/cli/commands/group.py:325
+#: dnf/cli/commands/group.py:322
 msgid "show also hidden groups"
 msgstr ""
 
-#: dnf/cli/commands/group.py:327
+#: dnf/cli/commands/group.py:324
 msgid "show only installed groups"
 msgstr ""
 
-#: dnf/cli/commands/group.py:329
+#: dnf/cli/commands/group.py:326
 msgid "show only available groups"
 msgstr ""
 
-#: dnf/cli/commands/group.py:331
+#: dnf/cli/commands/group.py:328
 msgid "show also ID of groups"
 msgstr ""
 
-#: dnf/cli/commands/group.py:333
+#: dnf/cli/commands/group.py:330
 msgid "available subcommands: {} (default), {}"
 msgstr ""
 
-#: dnf/cli/commands/group.py:337
+#: dnf/cli/commands/group.py:334
 msgid "argument for group subcommand"
 msgstr ""
 
-#: dnf/cli/commands/group.py:346
+#: dnf/cli/commands/group.py:343
 #, python-format
 msgid "Invalid groups sub-command, use: %s."
 msgstr ""
 
-#: dnf/cli/commands/group.py:403
+#: dnf/cli/commands/group.py:398
 msgid "Unable to find a mandatory group package."
 msgstr ""
 
@@ -1272,69 +1241,90 @@ msgstr ""
 msgid "More than one argument given as transaction file name."
 msgstr ""
 
-#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:126
+#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130
 msgid "No transaction ID or package name given."
 msgstr ""
 
-#: dnf/cli/commands/history.py:138
+#: dnf/cli/commands/history.py:142
 #, python-format
 msgid "You don't have access to the history DB: %s"
 msgstr ""
 
-#: dnf/cli/commands/history.py:147
+#: dnf/cli/commands/history.py:151
 #, python-format
 msgid ""
 "Cannot undo transaction %s, doing so would result in an inconsistent package "
 "database."
 msgstr ""
 
-#: dnf/cli/commands/history.py:152
+#: dnf/cli/commands/history.py:156
 #, python-format
 msgid ""
 "Cannot rollback transaction %s, doing so would result in an inconsistent "
 "package database."
 msgstr ""
 
-#: dnf/cli/commands/history.py:222
+#: dnf/cli/commands/history.py:175
+msgid "No transaction ID given"
+msgstr ""
+
+#: dnf/cli/commands/history.py:179
+#, python-brace-format
+msgid "Transaction ID \"{0}\" not found."
+msgstr ""
+
+#: dnf/cli/commands/history.py:185
+msgid "Found more than one transaction ID!"
+msgstr ""
+
+#: dnf/cli/commands/history.py:203
+#, python-format
+msgid "Transaction history is incomplete, before %u."
+msgstr ""
+
+#: dnf/cli/commands/history.py:205
+#, python-format
+msgid "Transaction history is incomplete, after %u."
+msgstr ""
+
+#: dnf/cli/commands/history.py:256
+msgid "No packages to list"
+msgstr ""
+
+#: dnf/cli/commands/history.py:279
 msgid ""
 "Invalid transaction ID range definition '{}'.\n"
 "Use '<transaction-id>..<transaction-id>'."
 msgstr ""
 
-#: dnf/cli/commands/history.py:226
+#: dnf/cli/commands/history.py:283
 msgid ""
 "Can't convert '{}' to transaction ID.\n"
 "Use '<number>', 'last', 'last-<number>'."
 msgstr ""
 
-#: dnf/cli/commands/history.py:255
+#: dnf/cli/commands/history.py:312
 msgid "No transaction which manipulates package '{}' was found."
 msgstr ""
 
-#: dnf/cli/commands/history.py:305
-#, python-brace-format
-msgid "Transaction ID \"{id}\" not found."
-msgstr ""
-
-#: dnf/cli/commands/history.py:313
+#: dnf/cli/commands/history.py:357
 msgid "{} exists, overwrite?"
 msgstr ""
 
-#: dnf/cli/commands/history.py:316
+#: dnf/cli/commands/history.py:360
 msgid "Not overwriting {}, exiting."
 msgstr ""
 
-#: dnf/cli/commands/history.py:323
+#: dnf/cli/commands/history.py:367
 msgid "Transaction saved to {}."
 msgstr ""
 
-#: dnf/cli/commands/history.py:326
+#: dnf/cli/commands/history.py:370
 msgid "Error storing transaction: {}"
 msgstr ""
 
-#: dnf/cli/commands/history.py:350
-msgid ""
-"Warning, the following problems occurred while replaying the transaction:"
+#: dnf/cli/commands/history.py:386
+msgid "Warning, the following problems occurred while running a transaction:"
 msgstr ""
 
 #: dnf/cli/commands/install.py:47
@@ -1354,7 +1344,7 @@ msgstr ""
 msgid "Not a valid rpm file path: %s"
 msgstr ""
 
-#: dnf/cli/commands/install.py:167
+#: dnf/cli/commands/install.py:166
 #, python-brace-format
 msgid "There are following alternatives for \"{0}\": {1}"
 msgstr ""
@@ -1394,7 +1384,7 @@ msgid "%s marked as group installed."
 msgstr ""
 
 #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129
-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279
+#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282
 msgid "Error:"
 msgstr ""
 
@@ -1403,89 +1393,93 @@ msgstr ""
 msgid "Package %s is not installed."
 msgstr ""
 
-#: dnf/cli/commands/module.py:51
+#: dnf/cli/commands/module.py:54
 msgid ""
 "Only module name, stream, architecture or profile is used. Ignoring unneeded "
 "information in argument: '{}'"
 msgstr ""
 
-#: dnf/cli/commands/module.py:77
+#: dnf/cli/commands/module.py:80
 msgid "list all module streams, profiles and states"
 msgstr ""
 
-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128
+#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131
 msgid "No matching Modules to list"
 msgstr ""
 
-#: dnf/cli/commands/module.py:111
+#: dnf/cli/commands/module.py:114
 msgid "print detailed information about a module"
 msgstr ""
 
-#: dnf/cli/commands/module.py:133
+#: dnf/cli/commands/module.py:136
 msgid "enable a module stream"
 msgstr ""
 
-#: dnf/cli/commands/module.py:157
+#: dnf/cli/commands/module.py:160
 msgid "disable a module with all its streams"
 msgstr ""
 
-#: dnf/cli/commands/module.py:181
+#: dnf/cli/commands/module.py:184
 msgid "reset a module"
 msgstr ""
 
-#: dnf/cli/commands/module.py:202
+#: dnf/cli/commands/module.py:205
 msgid "install a module profile including its packages"
 msgstr ""
 
-#: dnf/cli/commands/module.py:223
+#: dnf/cli/commands/module.py:226
 msgid "update packages associated with an active stream"
 msgstr ""
 
-#: dnf/cli/commands/module.py:240
+#: dnf/cli/commands/module.py:243
 msgid "remove installed module profiles and their packages"
 msgstr ""
 
-#: dnf/cli/commands/module.py:264
+#: dnf/cli/commands/module.py:267
 msgid "Package {} belongs to multiple modules, skipping"
 msgstr ""
 
-#: dnf/cli/commands/module.py:277
+#: dnf/cli/commands/module.py:280
+msgid "switch a module to a stream and distrosync rpm packages"
+msgstr ""
+
+#: dnf/cli/commands/module.py:302
 msgid "list modular packages"
 msgstr ""
 
-#: dnf/cli/commands/module.py:292
+#: dnf/cli/commands/module.py:317
 msgid "list packages belonging to a module"
 msgstr ""
 
-#: dnf/cli/commands/module.py:327
+#: dnf/cli/commands/module.py:352
 msgid "Interact with Modules."
 msgstr ""
 
-#: dnf/cli/commands/module.py:340
+#: dnf/cli/commands/module.py:365
 msgid "show only enabled modules"
 msgstr ""
 
-#: dnf/cli/commands/module.py:343
+#: dnf/cli/commands/module.py:368
 msgid "show only disabled modules"
 msgstr ""
 
-#: dnf/cli/commands/module.py:346
+#: dnf/cli/commands/module.py:371
 msgid "show only installed modules or packages"
 msgstr ""
 
-#: dnf/cli/commands/module.py:349
+#: dnf/cli/commands/module.py:374
 msgid "show profile content"
 msgstr ""
 
-#: dnf/cli/commands/module.py:354
+#: dnf/cli/commands/module.py:379
 msgid "remove all modular packages"
 msgstr ""
 
-#: dnf/cli/commands/module.py:364
+#: dnf/cli/commands/module.py:389
 msgid "Module specification"
 msgstr ""
 
-#: dnf/cli/commands/module.py:386
+#: dnf/cli/commands/module.py:411
 msgid "{} {} {}: too few arguments"
 msgstr ""
 
@@ -1960,22 +1954,22 @@ msgstr ""
 msgid "Keyword to search for"
 msgstr ""
 
-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506
+#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460
 msgctxt "long"
 msgid "Name"
 msgstr ""
 
-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559
+#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513
 msgctxt "long"
 msgid "Summary"
 msgstr ""
 
-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569
+#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523
 msgctxt "long"
 msgid "Description"
 msgstr ""
 
-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562
+#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516
 msgid "URL"
 msgstr ""
 
@@ -2087,16 +2081,16 @@ msgid ""
 "exit (or quit)           exit the shell"
 msgstr ""
 
-#: dnf/cli/commands/shell.py:259
+#: dnf/cli/commands/shell.py:262
 #, python-format
 msgid "Error: Cannot open %s for reading"
 msgstr ""
 
-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187
+#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187
 msgid "Complete!"
 msgstr ""
 
-#: dnf/cli/commands/shell.py:291
+#: dnf/cli/commands/shell.py:294
 msgid "Leaving Shell"
 msgstr ""
 
@@ -2287,8 +2281,8 @@ msgstr ""
 msgid "Files"
 msgstr ""
 
-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499
-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
+#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654
+#: dnf/cli/output.py:1656 dnf/util.py:617
 msgid "Installed"
 msgstr ""
 
@@ -2609,13 +2603,13 @@ msgstr ""
 #. Translators: This is abbreviated 'Name'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:505
+#: dnf/cli/output.py:459
 msgctxt "short"
 msgid "Name"
 msgstr ""
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:511
+#: dnf/cli/output.py:465
 msgid "Epoch"
 msgstr ""
 
@@ -2623,38 +2617,38 @@ msgstr ""
 #. use the full (unabbreviated) term 'Version' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:512 dnf/cli/output.py:1335
+#: dnf/cli/output.py:466 dnf/cli/output.py:1248
 msgctxt "short"
 msgid "Version"
 msgstr ""
 
 #. Translators: This is the full (unabbreviated) term 'Version'.
-#: dnf/cli/output.py:513 dnf/cli/output.py:1337
+#: dnf/cli/output.py:467 dnf/cli/output.py:1250
 msgctxt "long"
 msgid "Version"
 msgstr ""
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:516
+#: dnf/cli/output.py:470
 msgid "Release"
 msgstr ""
 
 #. Translators: This is abbreviated 'Architecture', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:517 dnf/cli/output.py:1326
+#: dnf/cli/output.py:471 dnf/cli/output.py:1239
 msgctxt "short"
 msgid "Arch"
 msgstr ""
 
 #. Translators: This is the full word 'Architecture', used when
 #. we have enough space.
-#: dnf/cli/output.py:518 dnf/cli/output.py:1329
+#: dnf/cli/output.py:472 dnf/cli/output.py:1242
 msgctxt "long"
 msgid "Architecture"
 msgstr ""
 
 #. Translators: This is the full (unabbreviated) term 'Size'.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1352
+#: dnf/cli/output.py:474 dnf/cli/output.py:1265
 msgctxt "long"
 msgid "Size"
 msgstr ""
@@ -2663,32 +2657,32 @@ msgstr ""
 #. not be longer than 5 characters. If the term 'Size' in your
 #. language is not longer than 5 characters then you can use it
 #. unabbreviated.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1350
+#: dnf/cli/output.py:474 dnf/cli/output.py:1263
 msgctxt "short"
 msgid "Size"
 msgstr ""
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:524
+#: dnf/cli/output.py:478
 msgid "Source"
 msgstr ""
 
 #. Translators: This is abbreviated 'Repository', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:525 dnf/cli/output.py:1341
+#: dnf/cli/output.py:479 dnf/cli/output.py:1254
 msgctxt "short"
 msgid "Repo"
 msgstr ""
 
 #. Translators: This is the full word 'Repository', used when
 #. we have enough space.
-#: dnf/cli/output.py:526 dnf/cli/output.py:1344
+#: dnf/cli/output.py:480 dnf/cli/output.py:1257
 msgctxt "long"
 msgid "Repository"
 msgstr ""
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:533
+#: dnf/cli/output.py:487
 msgid "From repo"
 msgstr ""
 
@@ -2696,324 +2690,320 @@ msgstr ""
 #. print(_("Committer   : %s") % ucd(pkg.committer))
 #. print(_("Committime  : %s") % time.ctime(pkg.committime))
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:539
+#: dnf/cli/output.py:493
 msgid "Packager"
 msgstr ""
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:541
+#: dnf/cli/output.py:495
 msgid "Buildtime"
 msgstr ""
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:545
+#: dnf/cli/output.py:499
 msgid "Install time"
 msgstr ""
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:554
+#: dnf/cli/output.py:508
 msgid "Installed by"
 msgstr ""
 
 #. Translators: This is abbreviated 'Summary'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:558
+#: dnf/cli/output.py:512
 msgctxt "short"
 msgid "Summary"
 msgstr ""
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:564
+#: dnf/cli/output.py:518
 msgid "License"
 msgstr ""
 
 #. Translators: This is abbreviated 'Description'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:568
+#: dnf/cli/output.py:522
 msgctxt "short"
 msgid "Description"
 msgstr ""
 
-#: dnf/cli/output.py:695
-msgid "No packages to list"
-msgstr ""
-
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "y"
 msgstr ""
 
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "yes"
 msgstr ""
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "n"
 msgstr ""
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "no"
 msgstr ""
 
-#: dnf/cli/output.py:711
+#: dnf/cli/output.py:655
 msgid "Is this ok [y/N]: "
 msgstr ""
 
-#: dnf/cli/output.py:715
+#: dnf/cli/output.py:659
 msgid "Is this ok [Y/n]: "
 msgstr ""
 
-#: dnf/cli/output.py:795
+#: dnf/cli/output.py:739
 #, python-format
 msgid "Group: %s"
 msgstr ""
 
-#: dnf/cli/output.py:799
+#: dnf/cli/output.py:743
 #, python-format
 msgid " Group-Id: %s"
 msgstr ""
 
-#: dnf/cli/output.py:801 dnf/cli/output.py:840
+#: dnf/cli/output.py:745 dnf/cli/output.py:784
 #, python-format
 msgid " Description: %s"
 msgstr ""
 
-#: dnf/cli/output.py:803
+#: dnf/cli/output.py:747
 #, python-format
 msgid " Language: %s"
 msgstr ""
 
-#: dnf/cli/output.py:806
+#: dnf/cli/output.py:750
 msgid " Mandatory Packages:"
 msgstr ""
 
-#: dnf/cli/output.py:807
+#: dnf/cli/output.py:751
 msgid " Default Packages:"
 msgstr ""
 
-#: dnf/cli/output.py:808
+#: dnf/cli/output.py:752
 msgid " Optional Packages:"
 msgstr ""
 
-#: dnf/cli/output.py:809
+#: dnf/cli/output.py:753
 msgid " Conditional Packages:"
 msgstr ""
 
-#: dnf/cli/output.py:834
+#: dnf/cli/output.py:778
 #, python-format
 msgid "Environment Group: %s"
 msgstr ""
 
-#: dnf/cli/output.py:837
+#: dnf/cli/output.py:781
 #, python-format
 msgid " Environment-Id: %s"
 msgstr ""
 
-#: dnf/cli/output.py:843
+#: dnf/cli/output.py:787
 msgid " Mandatory Groups:"
 msgstr ""
 
-#: dnf/cli/output.py:844
+#: dnf/cli/output.py:788
 msgid " Optional Groups:"
 msgstr ""
 
-#: dnf/cli/output.py:865
+#: dnf/cli/output.py:809
 msgid "Matched from:"
 msgstr ""
 
-#: dnf/cli/output.py:879
+#: dnf/cli/output.py:823
 #, python-format
 msgid "Filename    : %s"
 msgstr ""
 
-#: dnf/cli/output.py:904
+#: dnf/cli/output.py:848
 #, python-format
 msgid "Repo        : %s"
 msgstr ""
 
-#: dnf/cli/output.py:913
+#: dnf/cli/output.py:857
 msgid "Description : "
 msgstr ""
 
-#: dnf/cli/output.py:917
+#: dnf/cli/output.py:861
 #, python-format
 msgid "URL         : %s"
 msgstr ""
 
-#: dnf/cli/output.py:921
+#: dnf/cli/output.py:865
 #, python-format
 msgid "License     : %s"
 msgstr ""
 
-#: dnf/cli/output.py:927
+#: dnf/cli/output.py:871
 #, python-format
 msgid "Provide    : %s"
 msgstr ""
 
-#: dnf/cli/output.py:947
+#: dnf/cli/output.py:891
 #, python-format
 msgid "Other       : %s"
 msgstr ""
 
-#: dnf/cli/output.py:996
+#: dnf/cli/output.py:940
 msgid "There was an error calculating total download size"
 msgstr ""
 
-#: dnf/cli/output.py:1002
+#: dnf/cli/output.py:946
 #, python-format
 msgid "Total size: %s"
 msgstr ""
 
-#: dnf/cli/output.py:1005
+#: dnf/cli/output.py:949
 #, python-format
 msgid "Total download size: %s"
 msgstr ""
 
-#: dnf/cli/output.py:1008
+#: dnf/cli/output.py:952
 #, python-format
 msgid "Installed size: %s"
 msgstr ""
 
-#: dnf/cli/output.py:1026
+#: dnf/cli/output.py:970
 msgid "There was an error calculating installed size"
 msgstr ""
 
-#: dnf/cli/output.py:1030
+#: dnf/cli/output.py:974
 #, python-format
 msgid "Freed space: %s"
 msgstr ""
 
-#: dnf/cli/output.py:1039
+#: dnf/cli/output.py:983
 msgid "Marking packages as installed by the group:"
 msgstr ""
 
-#: dnf/cli/output.py:1046
+#: dnf/cli/output.py:990
 msgid "Marking packages as removed by the group:"
 msgstr ""
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Group"
 msgstr ""
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Packages"
 msgstr ""
 
-#: dnf/cli/output.py:1133
+#: dnf/cli/output.py:1046
 msgid "Installing group/module packages"
 msgstr ""
 
-#: dnf/cli/output.py:1134
+#: dnf/cli/output.py:1047
 msgid "Installing group packages"
 msgstr ""
 
 #. TRANSLATORS: This is for a list of packages to be installed.
-#: dnf/cli/output.py:1138
+#: dnf/cli/output.py:1051
 msgctxt "summary"
 msgid "Installing"
 msgstr ""
 
 #. TRANSLATORS: This is for a list of packages to be upgraded.
-#: dnf/cli/output.py:1140
+#: dnf/cli/output.py:1053
 msgctxt "summary"
 msgid "Upgrading"
 msgstr ""
 
 #. TRANSLATORS: This is for a list of packages to be reinstalled.
-#: dnf/cli/output.py:1142
+#: dnf/cli/output.py:1055
 msgctxt "summary"
 msgid "Reinstalling"
 msgstr ""
 
-#: dnf/cli/output.py:1144
+#: dnf/cli/output.py:1057
 msgid "Installing dependencies"
 msgstr ""
 
-#: dnf/cli/output.py:1145
+#: dnf/cli/output.py:1058
 msgid "Installing weak dependencies"
 msgstr ""
 
 #. TRANSLATORS: This is for a list of packages to be removed.
-#: dnf/cli/output.py:1147
+#: dnf/cli/output.py:1060
 msgid "Removing"
 msgstr ""
 
-#: dnf/cli/output.py:1148
+#: dnf/cli/output.py:1061
 msgid "Removing dependent packages"
 msgstr ""
 
-#: dnf/cli/output.py:1149
+#: dnf/cli/output.py:1062
 msgid "Removing unused dependencies"
 msgstr ""
 
 #. TRANSLATORS: This is for a list of packages to be downgraded.
-#: dnf/cli/output.py:1151
+#: dnf/cli/output.py:1064
 msgctxt "summary"
 msgid "Downgrading"
 msgstr ""
 
-#: dnf/cli/output.py:1176
+#: dnf/cli/output.py:1089
 msgid "Installing module profiles"
 msgstr ""
 
-#: dnf/cli/output.py:1185
+#: dnf/cli/output.py:1098
 msgid "Disabling module profiles"
 msgstr ""
 
-#: dnf/cli/output.py:1194
+#: dnf/cli/output.py:1107
 msgid "Enabling module streams"
 msgstr ""
 
-#: dnf/cli/output.py:1202
+#: dnf/cli/output.py:1115
 msgid "Switching module streams"
 msgstr ""
 
-#: dnf/cli/output.py:1210
+#: dnf/cli/output.py:1123
 msgid "Disabling modules"
 msgstr ""
 
-#: dnf/cli/output.py:1218
+#: dnf/cli/output.py:1131
 msgid "Resetting modules"
 msgstr ""
 
-#: dnf/cli/output.py:1230
+#: dnf/cli/output.py:1143
 msgid "Installing Environment Groups"
 msgstr ""
 
-#: dnf/cli/output.py:1237
+#: dnf/cli/output.py:1150
 msgid "Upgrading Environment Groups"
 msgstr ""
 
-#: dnf/cli/output.py:1244
+#: dnf/cli/output.py:1157
 msgid "Removing Environment Groups"
 msgstr ""
 
-#: dnf/cli/output.py:1251
+#: dnf/cli/output.py:1164
 msgid "Installing Groups"
 msgstr ""
 
-#: dnf/cli/output.py:1258
+#: dnf/cli/output.py:1171
 msgid "Upgrading Groups"
 msgstr ""
 
-#: dnf/cli/output.py:1265
+#: dnf/cli/output.py:1178
 msgid "Removing Groups"
 msgstr ""
 
-#: dnf/cli/output.py:1281
+#: dnf/cli/output.py:1194
 #, python-format
 msgid ""
 "Skipping packages with conflicts:\n"
 "(add '%s' to command line to force their upgrade)"
 msgstr ""
 
-#: dnf/cli/output.py:1291
+#: dnf/cli/output.py:1204
 #, python-format
 msgid "Skipping packages with broken dependencies%s"
 msgstr ""
 
-#: dnf/cli/output.py:1295
+#: dnf/cli/output.py:1208
 msgid " or part of a group"
 msgstr ""
 
@@ -3021,22 +3011,22 @@ msgstr ""
 #. use the full (unabbreviated) term 'Package' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:1320
+#: dnf/cli/output.py:1233
 msgctxt "short"
 msgid "Package"
 msgstr ""
 
 #. Translators: This is the full (unabbreviated) term 'Package'.
-#: dnf/cli/output.py:1322
+#: dnf/cli/output.py:1235
 msgctxt "long"
 msgid "Package"
 msgstr ""
 
-#: dnf/cli/output.py:1371
+#: dnf/cli/output.py:1284
 msgid "replacing"
 msgstr ""
 
-#: dnf/cli/output.py:1378
+#: dnf/cli/output.py:1291
 #, python-format
 msgid ""
 "\n"
@@ -3045,289 +3035,273 @@ msgid ""
 msgstr ""
 
 #. TODO: remove
-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933
+#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815
 msgid "Install"
 msgstr ""
 
-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941
+#: dnf/cli/output.py:1300 dnf/cli/output.py:1823
 msgid "Upgrade"
 msgstr ""
 
-#: dnf/cli/output.py:1388
+#: dnf/cli/output.py:1301
 msgid "Remove"
 msgstr ""
 
-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939
+#: dnf/cli/output.py:1303 dnf/cli/output.py:1821
 msgid "Downgrade"
 msgstr ""
 
-#: dnf/cli/output.py:1391
+#: dnf/cli/output.py:1304
 msgid "Skip"
 msgstr ""
 
-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416
+#: dnf/cli/output.py:1313 dnf/cli/output.py:1329
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] ""
 msgstr[1] ""
 
-#: dnf/cli/output.py:1418
+#: dnf/cli/output.py:1331
 msgid "Dependent package"
 msgid_plural "Dependent packages"
 msgstr[0] ""
 msgstr[1] ""
 
-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942
-msgid "Upgraded"
-msgstr ""
-
-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940
-msgid "Downgraded"
-msgstr ""
-
-#: dnf/cli/output.py:1503
-msgid "Reinstalled"
-msgstr ""
-
-#: dnf/cli/output.py:1504
-msgid "Skipped"
-msgstr ""
-
-#: dnf/cli/output.py:1505
-msgid "Removed"
-msgstr ""
-
-#: dnf/cli/output.py:1508
-msgid "Failed"
-msgstr ""
-
-#: dnf/cli/output.py:1559
+#: dnf/cli/output.py:1439
 msgid "Total"
 msgstr ""
 
-#: dnf/cli/output.py:1587
+#: dnf/cli/output.py:1467
 msgid "<unset>"
 msgstr ""
 
-#: dnf/cli/output.py:1588
+#: dnf/cli/output.py:1468
 msgid "System"
 msgstr ""
 
-#: dnf/cli/output.py:1638
+#: dnf/cli/output.py:1518
 msgid "Command line"
 msgstr ""
 
 #. TRANSLATORS: user names who executed transaction in history command output
-#: dnf/cli/output.py:1649
+#: dnf/cli/output.py:1531
 msgid "User name"
 msgstr ""
 
-#: dnf/cli/output.py:1651
+#: dnf/cli/output.py:1533
 msgid "ID"
 msgstr ""
 
-#: dnf/cli/output.py:1653
+#: dnf/cli/output.py:1535
 msgid "Date and time"
 msgstr ""
 
-#: dnf/cli/output.py:1654
+#: dnf/cli/output.py:1536
 msgid "Action(s)"
 msgstr ""
 
-#: dnf/cli/output.py:1655
+#: dnf/cli/output.py:1537
 msgid "Altered"
 msgstr ""
 
-#: dnf/cli/output.py:1698
+#: dnf/cli/output.py:1580
 msgid "No transactions"
 msgstr ""
 
-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715
+#: dnf/cli/output.py:1581 dnf/cli/output.py:1597
 msgid "Failed history info"
 msgstr ""
 
-#: dnf/cli/output.py:1714
+#: dnf/cli/output.py:1596
 msgid "No transaction ID, or package, given"
 msgstr ""
 
-#: dnf/cli/output.py:1772
+#: dnf/cli/output.py:1654
 msgid "Erased"
 msgstr ""
 
-#: dnf/cli/output.py:1774
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616
+msgid "Downgraded"
+msgstr ""
+
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615
+msgid "Upgraded"
+msgstr ""
+
+#: dnf/cli/output.py:1656
 msgid "Not installed"
 msgstr ""
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Newer"
 msgstr ""
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Older"
 msgstr ""
 
-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825
+#: dnf/cli/output.py:1705 dnf/cli/output.py:1707
 msgid "Transaction ID :"
 msgstr ""
 
-#: dnf/cli/output.py:1828
+#: dnf/cli/output.py:1710
 msgid "Begin time     :"
 msgstr ""
 
-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833
+#: dnf/cli/output.py:1713 dnf/cli/output.py:1715
 msgid "Begin rpmdb    :"
 msgstr ""
 
-#: dnf/cli/output.py:1839
+#: dnf/cli/output.py:1721
 #, python-format
 msgid "(%u seconds)"
 msgstr ""
 
-#: dnf/cli/output.py:1841
+#: dnf/cli/output.py:1723
 #, python-format
 msgid "(%u minutes)"
 msgstr ""
 
-#: dnf/cli/output.py:1843
+#: dnf/cli/output.py:1725
 #, python-format
 msgid "(%u hours)"
 msgstr ""
 
-#: dnf/cli/output.py:1845
+#: dnf/cli/output.py:1727
 #, python-format
 msgid "(%u days)"
 msgstr ""
 
-#: dnf/cli/output.py:1846
+#: dnf/cli/output.py:1728
 msgid "End time       :"
 msgstr ""
 
-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851
+#: dnf/cli/output.py:1731 dnf/cli/output.py:1733
 msgid "End rpmdb      :"
 msgstr ""
 
-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860
+#: dnf/cli/output.py:1740 dnf/cli/output.py:1742
 msgid "User           :"
 msgstr ""
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1753
 msgid "Aborted"
 msgstr ""
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869
-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751
+#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757
 msgid "Return-Code    :"
 msgstr ""
 
-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1749 dnf/cli/output.py:1757
 msgid "Success"
 msgstr ""
 
-#: dnf/cli/output.py:1869
+#: dnf/cli/output.py:1751
 msgid "Failures:"
 msgstr ""
 
-#: dnf/cli/output.py:1873
+#: dnf/cli/output.py:1755
 msgid "Failure:"
 msgstr ""
 
-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885
+#: dnf/cli/output.py:1765 dnf/cli/output.py:1767
 msgid "Releasever     :"
 msgstr ""
 
-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892
+#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
 msgid "Command Line   :"
 msgstr ""
 
-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899
+#: dnf/cli/output.py:1779 dnf/cli/output.py:1781
 msgid "Comment        :"
 msgstr ""
 
-#: dnf/cli/output.py:1903
+#: dnf/cli/output.py:1785
 msgid "Transaction performed with:"
 msgstr ""
 
-#: dnf/cli/output.py:1912
+#: dnf/cli/output.py:1794
 msgid "Packages Altered:"
 msgstr ""
 
-#: dnf/cli/output.py:1918
+#: dnf/cli/output.py:1800
 msgid "Scriptlet output:"
 msgstr ""
 
-#: dnf/cli/output.py:1925
+#: dnf/cli/output.py:1807
 msgid "Errors:"
 msgstr ""
 
-#: dnf/cli/output.py:1934
+#: dnf/cli/output.py:1816
 msgid "Dep-Install"
 msgstr ""
 
-#: dnf/cli/output.py:1935
+#: dnf/cli/output.py:1817
 msgid "Obsoleted"
 msgstr ""
 
-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85
+#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85
 msgid "Obsoleting"
 msgstr ""
 
-#: dnf/cli/output.py:1937
+#: dnf/cli/output.py:1819
 msgid "Erase"
 msgstr ""
 
-#: dnf/cli/output.py:1938
+#: dnf/cli/output.py:1820
 msgid "Reinstall"
 msgstr ""
 
-#: dnf/cli/output.py:2016
+#: dnf/cli/output.py:1894
 #, python-format
 msgid "---> Package %s.%s %s will be installed"
 msgstr ""
 
-#: dnf/cli/output.py:2018
+#: dnf/cli/output.py:1896
 #, python-format
 msgid "---> Package %s.%s %s will be an upgrade"
 msgstr ""
 
-#: dnf/cli/output.py:2020
+#: dnf/cli/output.py:1898
 #, python-format
 msgid "---> Package %s.%s %s will be erased"
 msgstr ""
 
-#: dnf/cli/output.py:2022
+#: dnf/cli/output.py:1900
 #, python-format
 msgid "---> Package %s.%s %s will be reinstalled"
 msgstr ""
 
-#: dnf/cli/output.py:2024
+#: dnf/cli/output.py:1902
 #, python-format
 msgid "---> Package %s.%s %s will be a downgrade"
 msgstr ""
 
-#: dnf/cli/output.py:2026
+#: dnf/cli/output.py:1904
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleting"
 msgstr ""
 
-#: dnf/cli/output.py:2028
+#: dnf/cli/output.py:1906
 #, python-format
 msgid "---> Package %s.%s %s will be upgraded"
 msgstr ""
 
-#: dnf/cli/output.py:2030
+#: dnf/cli/output.py:1908
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleted"
 msgstr ""
 
-#: dnf/cli/output.py:2039
+#: dnf/cli/output.py:1917
 msgid "--> Starting dependency resolution"
 msgstr ""
 
-#: dnf/cli/output.py:2044
+#: dnf/cli/output.py:1921
 msgid "--> Finished dependency resolution"
 msgstr ""
 
-#: dnf/cli/output.py:2058 dnf/crypto.py:132
+#: dnf/cli/output.py:1935 dnf/crypto.py:132
 #, python-format
 msgid ""
 "Importing GPG key 0x%s:\n"
@@ -3385,10 +3359,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."
@@ -3409,7 +3379,7 @@ msgstr ""
 msgid "Environment id '%s' does not exist."
 msgstr ""
 
-#: dnf/comps.py:622 dnf/transaction_sr.py:443 dnf/transaction_sr.py:453
+#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487
 #, python-format
 msgid "Environment id '%s' is not installed."
 msgstr ""
@@ -3434,6 +3404,11 @@ msgstr ""
 msgid "Error parsing '%s': %s"
 msgstr ""
 
+#: dnf/conf/config.py:151
+#, python-format
+msgid "Invalid configuration value: %s=%s in %s; %s"
+msgstr ""
+
 #: dnf/conf/config.py:226
 msgid "Could not set cachedir: {}"
 msgstr ""
@@ -3473,36 +3448,36 @@ msgstr ""
 msgid "Repo %s did not have a %s attr. before setopt"
 msgstr ""
 
-#: dnf/conf/read.py:51
+#: dnf/conf/read.py:60
 #, python-format
 msgid "Warning: failed loading '%s', skipping."
 msgstr ""
 
-#: dnf/conf/read.py:63
+#: dnf/conf/read.py:72
 msgid "Bad id for repo: {} ({}), byte = {} {}"
 msgstr ""
 
-#: dnf/conf/read.py:67
+#: dnf/conf/read.py:76
 msgid "Bad id for repo: {}, byte = {} {}"
 msgstr ""
 
-#: dnf/conf/read.py:75
+#: dnf/conf/read.py:84
 msgid "Repository '{}' ({}): Error parsing config: {}"
 msgstr ""
 
-#: dnf/conf/read.py:78
+#: dnf/conf/read.py:87
 msgid "Repository '{}': Error parsing config: {}"
 msgstr ""
 
-#: dnf/conf/read.py:84
+#: dnf/conf/read.py:93
 msgid "Repository '{}' ({}) is missing name in configuration, using id."
 msgstr ""
 
-#: dnf/conf/read.py:87
+#: dnf/conf/read.py:96
 msgid "Repository '{}' is missing name in configuration, using id."
 msgstr ""
 
-#: dnf/conf/read.py:104
+#: dnf/conf/read.py:113
 msgid "Parsing file \"{}\" failed: {}"
 msgstr ""
 
@@ -3516,23 +3491,37 @@ msgstr ""
 msgid "repo %s: imported key 0x%s."
 msgstr ""
 
-#: dnf/db/group.py:293
+#: dnf/crypto.py:145
+msgid "Verified using DNS record with DNSSEC signature."
+msgstr ""
+
+#: dnf/crypto.py:147
+msgid "NOT verified using DNS record."
+msgstr ""
+
+#: dnf/crypto.py:184
+#, python-format
+msgid "retrieving repo key for %s unencrypted from %s"
+msgstr ""
+
+#: dnf/db/group.py:301
 msgid ""
 "No available modular metadata for modular package '{}', it cannot be "
 "installed on the system"
 msgstr ""
 
-#: dnf/db/group.py:343
+#: dnf/db/group.py:351
 msgid "No available modular metadata for modular package"
 msgstr ""
 
-#: dnf/db/group.py:377
+#: dnf/db/group.py:385
 #, python-format
 msgid "Will not install a source rpm package (%s)."
 msgstr ""
 
 #: dnf/dnssec.py:168
-msgid "Configuration option 'gpgkey_dns_verification' requires libunbound ({})"
+msgid ""
+"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
 msgstr ""
 
 #: dnf/dnssec.py:239
@@ -3555,7 +3544,7 @@ msgstr ""
 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 ""
@@ -3598,7 +3587,7 @@ msgid_plural "Modular dependency problems with Defaults:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: dnf/exceptions.py:131 dnf/module/module_base.py:686
+#: dnf/exceptions.py:131 dnf/module/module_base.py:854
 msgid "Modular dependency problem:"
 msgid_plural "Modular dependency problems:"
 msgstr[0] ""
@@ -3632,92 +3621,148 @@ msgstr ""
 msgid "No profile specified for '{}', please specify profile."
 msgstr ""
 
-#: dnf/module/module_base.py:33
+#: dnf/module/exceptions.py:27
+msgid "No such module: {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:33
+msgid "No such stream: {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:39
+msgid "No enabled stream for module: {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:46
+msgid "Cannot enable more streams from module '{}' at the same time"
+msgstr ""
+
+#: dnf/module/exceptions.py:52
+msgid "Different stream enabled for module: {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:58
+msgid "No such profile: {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:64
+msgid "Specified profile not installed for {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:70
+msgid "No stream specified for '{}', please specify stream"
+msgstr ""
+
+#: dnf/module/exceptions.py:82
+msgid "No such profile: {}. No profiles available"
+msgstr ""
+
+#: dnf/module/exceptions.py:88
+msgid "No profile to remove for '{}'"
+msgstr ""
+
+#: dnf/module/module_base.py:35
 msgid ""
 "\n"
 "\n"
 "Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled"
 msgstr ""
 
-#: dnf/module/module_base.py:34
+#: dnf/module/module_base.py:36
 msgid ""
 "\n"
 "\n"
 "Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive"
 msgstr ""
 
-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421
-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543
+#: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
 msgid "Ignoring unnecessary profile: '{}/{}'"
 msgstr ""
 
-#: dnf/module/module_base.py:84
+#: dnf/module/module_base.py:86
 #, python-brace-format
 msgid "All matches for argument '{0}' in module '{1}:{2}' are not active"
 msgstr ""
 
-#: dnf/module/module_base.py:92
+#: 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 ""
 
-#: dnf/module/module_base.py:102
+#: dnf/module/module_base.py:104 dnf/module/module_base.py:214
 msgid ""
 "Unable to match profile for argument {}. Available profiles for '{}:{}': {}"
 msgstr ""
 
-#: dnf/module/module_base.py:106
+#: dnf/module/module_base.py:108 dnf/module/module_base.py:218
 msgid "Unable to match profile for argument {}"
 msgstr ""
 
-#: dnf/module/module_base.py:118
+#: dnf/module/module_base.py:120
 msgid "No default profiles for module {}:{}. Available profiles: {}"
 msgstr ""
 
-#: dnf/module/module_base.py:122
+#: dnf/module/module_base.py:124
 msgid "No profiles for module {}:{}"
 msgstr ""
 
-#: dnf/module/module_base.py:129
+#: dnf/module/module_base.py:131
 msgid "Default profile {} not available in module {}:{}"
 msgstr ""
 
-#: dnf/module/module_base.py:142
+#: dnf/module/module_base.py:144 dnf/module/module_base.py:247
 msgid "Installing module from Fail-Safe repository is not allowed"
 msgstr ""
 
-#: dnf/module/module_base.py:159 dnf/module/module_base.py:193
-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355
-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417
-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539
+#: dnf/module/module_base.py:196
+#, python-brace-format
+msgid "No active matches for argument '{0}' in module '{1}:{2}'"
+msgstr ""
+
+#: dnf/module/module_base.py:228
+#, python-brace-format
+msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'"
+msgstr ""
+
+#: dnf/module/module_base.py:267
+msgid "No packages available to distrosync for package name '{}'"
+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
 msgid "Unable to resolve argument {}"
 msgstr ""
 
-#: dnf/module/module_base.py:160
-msgid "No match for package {}"
-msgstr ""
-
-#: dnf/module/module_base.py:204
+#: dnf/module/module_base.py:321
 #, python-brace-format
 msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed"
 msgstr ""
 
-#: dnf/module/module_base.py:223 dnf/module/module_base.py:251
+#: dnf/module/module_base.py:340 dnf/module/module_base.py:368
 msgid "Unable to match profile in argument {}"
 msgstr ""
 
-#: dnf/module/module_base.py:231
+#: dnf/module/module_base.py:348
 msgid "Upgrading module from Fail-Safe repository is not allowed"
 msgstr ""
 
-#: dnf/module/module_base.py:367
+#: 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"
+msgstr ""
+
+#: dnf/module/module_base.py:509
 msgid ""
 "Only module name is required. Ignoring unneeded information in argument: '{}'"
 msgstr ""
 
-#: dnf/package.py:298
-#, python-format
-msgid "%s: %s check failed: %s vs %s"
+#: dnf/module/module_base.py:841
+msgid "No match for package {}"
 msgstr ""
 
 #. empty file is invalid json format
@@ -3754,16 +3799,16 @@ msgstr ""
 msgid "Loaded plugins: %s"
 msgstr ""
 
-#: dnf/plugin.py:199
+#: dnf/plugin.py:211
 #, python-format
 msgid "Failed loading plugin \"%s\": %s"
 msgstr ""
 
-#: dnf/plugin.py:231
+#: dnf/plugin.py:243
 msgid "No matches found for the following enable plugin patterns: {}"
 msgstr ""
 
-#: dnf/plugin.py:235
+#: dnf/plugin.py:247
 msgid "No matches found for the following disable plugin patterns: {}"
 msgstr ""
 
@@ -3777,7 +3822,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 ""
@@ -3792,10 +3837,25 @@ msgstr ""
 msgid "Added %s repo from %s"
 msgstr ""
 
+#: dnf/rpm/miscutils.py:32
+#, python-format
+msgid "Using rpmkeys executable at %s to verify signatures"
+msgstr ""
+
+#: dnf/rpm/miscutils.py:66
+msgid "Cannot find rpmkeys executable to verify signatures."
+msgstr ""
+
 #: dnf/rpm/transaction.py:119
 msgid "Errors occurred during test transaction."
 msgstr ""
 
+#: dnf/sack.py:47
+msgid ""
+"allow_vendor_change is disabled. This option is currently not supported for "
+"downgrade and distro-sync commands"
+msgstr ""
+
 #. TRANSLATORS: This is for a single package currently being downgraded.
 #: dnf/transaction.py:80
 msgctxt "currently"
@@ -3842,160 +3902,182 @@ msgstr ""
 msgid "Preparing"
 msgstr ""
 
-#: dnf/transaction_sr.py:60
+#: dnf/transaction_sr.py:66
 #, python-brace-format
-msgid "Errors in \"{filename}\":"
+msgid ""
+"The following problems occurred while replaying the transaction from file "
+"\"{filename}\":"
 msgstr ""
 
-#: dnf/transaction_sr.py:70
-#, python-brace-format
-msgid "Error in \"{filename}\": {error}"
+#: dnf/transaction_sr.py:68
+msgid "The following problems occurred while running a transaction:"
 msgstr ""
 
-#: dnf/transaction_sr.py:87
+#: dnf/transaction_sr.py:89
 #, python-brace-format
 msgid "Invalid major version \"{major}\", number expected."
 msgstr ""
 
-#: dnf/transaction_sr.py:95
+#: dnf/transaction_sr.py:97
 #, python-brace-format
 msgid "Invalid minor version \"{minor}\", number expected."
 msgstr ""
 
-#: dnf/transaction_sr.py:101
+#: dnf/transaction_sr.py:103
 #, python-brace-format
 msgid ""
 "Incompatible major version \"{major}\", supported major version is "
 "\"{major_supp}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:244
+#: dnf/transaction_sr.py:224
+msgid ""
+"Conflicting TransactionReplay arguments have been specified: filename, data"
+msgstr ""
+
+#: dnf/transaction_sr.py:265
 #, python-brace-format
 msgid "Unexpected type of \"{id}\", {exp} expected."
 msgstr ""
 
-#: dnf/transaction_sr.py:250
+#: dnf/transaction_sr.py:271
 #, python-brace-format
 msgid "Missing key \"{key}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:263
+#: dnf/transaction_sr.py:285
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an rpm."
 msgstr ""
 
-#: dnf/transaction_sr.py:267
+#: dnf/transaction_sr.py:289
 #, python-brace-format
 msgid ""
 "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:275
+#: dnf/transaction_sr.py:297
 #, python-brace-format
 msgid "Cannot parse NEVRA for package \"{nevra}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:286
+#: dnf/transaction_sr.py:321
 #, python-brace-format
 msgid "Cannot find rpm nevra \"{nevra}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:301
+#: dnf/transaction_sr.py:336
 #, python-brace-format
 msgid "Package \"{na}\" is already installed for action \"{action}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:311
+#: dnf/transaction_sr.py:345
 #, python-brace-format
 msgid ""
 "Package nevra \"{nevra}\" not available in repositories for action "
 "\"{action}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:322
+#: dnf/transaction_sr.py:356
 #, python-brace-format
 msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:336
+#: dnf/transaction_sr.py:370
 #, python-brace-format
 msgid ""
 "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:343
+#: dnf/transaction_sr.py:377
 #, python-format
 msgid "Group id '%s' is not available."
 msgstr ""
 
-#: dnf/transaction_sr.py:364
+#: dnf/transaction_sr.py:398
 #, python-brace-format
 msgid "Missing object key \"{key}\" in groups.packages."
 msgstr ""
 
-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387
+#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421
 #, python-format
 msgid "Group id '%s' is not installed."
 msgstr ""
 
-#: dnf/transaction_sr.py:398
+#: dnf/transaction_sr.py:432
 #, python-format
 msgid "Environment id '%s' is not available."
 msgstr ""
 
-#: dnf/transaction_sr.py:422
+#: dnf/transaction_sr.py:456
 #, python-brace-format
 msgid ""
 "Invalid value \"{group_type}\" of environments.groups.group_type, only "
 "\"mandatory\" or \"optional\" is supported."
 msgstr ""
 
-#: dnf/transaction_sr.py:430
+#: dnf/transaction_sr.py:464
 #, python-brace-format
 msgid "Missing object key \"{key}\" in environments.groups."
 msgstr ""
 
-#: dnf/transaction_sr.py:508
+#: dnf/transaction_sr.py:542
 #, python-brace-format
 msgid "Unexpected value of group action \"{action}\" for group \"{group}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:513
+#: dnf/transaction_sr.py:547
 #, python-brace-format
 msgid "Missing object key \"{key}\" in a group."
 msgstr ""
 
-#: dnf/transaction_sr.py:537
+#: dnf/transaction_sr.py:571
 #, python-brace-format
 msgid ""
 "Unexpected value of environment action \"{action}\" for environment "
 "\"{env}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:542
+#: dnf/transaction_sr.py:576
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an environment."
 msgstr ""
 
-#: dnf/transaction_sr.py:581
+#: 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 ""
 
-#: dnf/util.py:391 dnf/util.py:393
+#: dnf/util.py:419 dnf/util.py:421
 msgid "Problem"
 msgstr ""
 
-#: dnf/util.py:444
+#: dnf/util.py:472
 msgid "TransactionItem not found for key: {}"
 msgstr ""
 
-#: dnf/util.py:454
+#: dnf/util.py:482
 msgid "TransactionSWDBItem not found for key: {}"
 msgstr ""
 
-#: dnf/util.py:457
+#: dnf/util.py:485
 msgid "Errors occurred during transaction."
 msgstr ""
+
+#: dnf/util.py:621
+msgid "Reinstalled"
+msgstr ""
+
+#: dnf/util.py:622
+msgid "Skipped"
+msgstr ""
+
+#: dnf/util.py:623
+msgid "Removed"
+msgstr ""
+
+#: dnf/util.py:626
+msgid "Failed"
+msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 4e883335..bb2d3677 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -15,23 +15,28 @@
 # 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.
-# Ludek Janda <ljanda@redhat.com>, 2018. #zanata
+# Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2021.
 # Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata, 2020.
-# Julien Humbert <julroy67@gmail.com>, 2020.
+# Julien Humbert <julroy67@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: 2020-10-05 09:18-0400\n"
-"PO-Revision-Date: 2020-09-12 11:29+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:24+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-8/fr/>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.2.2\n"
+"X-Generator: Weblate 4.11.2\n"
 
 #: dnf/automatic/emitter.py:32
 #, python-format
@@ -78,7 +83,7 @@ msgstr "Échec de l’envoi d’un courriel par « %s » : %s"
 msgid "Failed to execute command '%s': returned %d"
 msgstr "Échec dans l’exécution de la commande « %s » : code retour %d"
 
-#: dnf/automatic/main.py:164 dnf/conf/config.py:151
+#: dnf/automatic/main.py:164
 #, python-format
 msgid "Unknown configuration value: %s=%s in %s; %s"
 msgstr "Valeur de configuration inconnue : %s=%s dans %s ; %s"
@@ -88,22 +93,23 @@ msgstr "Valeur de configuration inconnue : %s=%s dans %s ; %s"
 msgid "Unknown configuration option: %s = %s in %s"
 msgstr "Option de configuration inconnue : %s=%s dans %s"
 
-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299
+#: dnf/automatic/main.py:237 dnf/cli/cli.py:305
 msgid "GPG check FAILED"
 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."
 msgstr "dnf-automatic démarré."
 
 #: dnf/automatic/main.py:308
-#, python-format
-msgid "Sleep for %s seconds"
-msgstr "Mise en sommeil pendant %s secondes"
+msgid "Sleep for {} second"
+msgid_plural "Sleep for {} seconds"
+msgstr[0] "Mise en sommeil pendant {} seconde"
+msgstr[1] "Mise en sommeil pendant {} secondes"
 
 #: dnf/automatic/main.py:315
 msgid "System is off-line."
@@ -115,84 +121,84 @@ msgstr "Le système est hors-ligne."
 msgid "Error: %s"
 msgstr "Erreur : %s"
 
-#: dnf/base.py:146
+#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479
 msgid "loading repo '{}' failure: {}"
 msgstr "Erreur lors du chargement du dépôt « {} » : {}"
 
-#: dnf/base.py:148
+#: dnf/base.py:150
 msgid "Loading repository '{}' has failed"
 msgstr "Échec du chargement du dépôt « {} »"
 
-#: dnf/base.py:320
+#: dnf/base.py:327
 msgid "Metadata timer caching disabled when running on metered connection."
 msgstr ""
 "Mise en cache temporisée des métadonnées désactivée lors du fonctionnement "
 "sur connexion limitée."
 
-#: dnf/base.py:325
+#: dnf/base.py:332
 msgid "Metadata timer caching disabled when running on a battery."
 msgstr ""
 "Mise en cache temporisée des métadonnées désactivée lors du fonctionnement "
 "sur batterie."
 
-#: dnf/base.py:330
+#: dnf/base.py:337
 msgid "Metadata timer caching disabled."
 msgstr "Mise en cache temporisée des métadonnées désactivée."
 
-#: dnf/base.py:335
+#: dnf/base.py:342
 msgid "Metadata cache refreshed recently."
 msgstr "Cache des métadonnées mis à jour récemment."
 
-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91
+#: dnf/base.py:348 dnf/cli/commands/__init__.py:91
 msgid "There are no enabled repositories in \"{}\"."
 msgstr "Il n’y a pas de dépôts activés dans « {} »."
 
-#: dnf/base.py:348
+#: dnf/base.py:355
 #, python-format
 msgid "%s: will never be expired and will not be refreshed."
 msgstr "%s : n’expirera jamais et ne sera pas réinitialisé."
 
-#: dnf/base.py:350
+#: dnf/base.py:357
 #, python-format
 msgid "%s: has expired and will be refreshed."
 msgstr "%s : a expiré et sera réinitialisé."
 
 #. expires within the checking period:
-#: dnf/base.py:354
+#: dnf/base.py:361
 #, python-format
 msgid "%s: metadata will expire after %d seconds and will be refreshed now"
 msgstr ""
 "%s : métadonnées expireront après %d secondes et seront réinitialisées "
 "maintenant"
 
-#: dnf/base.py:358
+#: dnf/base.py:365
 #, python-format
 msgid "%s: will expire after %d seconds."
 msgstr "%s : expireront après %d secondes."
 
 #. performs the md sync
-#: dnf/base.py:364
+#: dnf/base.py:371
 msgid "Metadata cache created."
 msgstr "Cache des métadonnées créé."
 
-#: dnf/base.py:397
+#: dnf/base.py:404 dnf/base.py:471
 #, python-format
 msgid "%s: using metadata from %s."
 msgstr "%s : utilisation des métadonnées depuis le %s."
 
-#: dnf/base.py:409
+#: dnf/base.py:416 dnf/base.py:484
 #, python-format
 msgid "Ignoring repositories: %s"
 msgstr "Dépôts ignorés : %s"
 
-#: dnf/base.py:412
+#: dnf/base.py:419
 #, 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:443
+#: dnf/base.py:512
 msgid ""
 "The downloaded packages were saved in cache until the next successful "
 "transaction."
@@ -200,59 +206,59 @@ msgstr ""
 "Les paquets téléchargés ont été mis en cache jusqu’à la prochaine "
 "transaction réussie."
 
-#: dnf/base.py:445
+#: dnf/base.py:514
 #, python-format
 msgid "You can remove cached packages by executing '%s'."
 msgstr "Vous pouvez supprimer les paquets en cache en exécutant « %s »."
 
-#: dnf/base.py:535
+#: dnf/base.py:606
 #, python-format
 msgid "Invalid tsflag in config file: %s"
 msgstr "tsflag invalide dans le fichier de configuration : %s"
 
-#: dnf/base.py:591
+#: dnf/base.py:662
 #, python-format
 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:823
+#: dnf/base.py:904
 msgid "Running transaction check"
 msgstr "Test de la transaction"
 
-#: dnf/base.py:831
+#: dnf/base.py:912
 msgid "Error: transaction check vs depsolve:"
 msgstr ""
 "Erreur : vérification de transaction contre résolution des dépendances :"
 
-#: dnf/base.py:837
+#: dnf/base.py:918
 msgid "Transaction check succeeded."
 msgstr "La vérification de la transaction a réussi."
 
-#: dnf/base.py:840
+#: dnf/base.py:921
 msgid "Running transaction test"
 msgstr "Lancement de la transaction de test"
 
-#: dnf/base.py:850 dnf/base.py:992
+#: dnf/base.py:931 dnf/base.py:1082
 msgid "RPM: {}"
 msgstr "RPM : {}"
 
-#: dnf/base.py:851
+#: dnf/base.py:932
 msgid "Transaction test error:"
 msgstr "Erreur de la transaction de test :"
 
-#: dnf/base.py:862
+#: dnf/base.py:943
 msgid "Transaction test succeeded."
 msgstr "Transaction de test réussie."
 
-#: dnf/base.py:883
+#: dnf/base.py:964
 msgid "Running transaction"
 msgstr "Exécution de la transaction"
 
-#: dnf/base.py:911
+#: dnf/base.py:1001
 msgid "Disk Requirements:"
 msgstr "Besoins en espace disque :"
 
-#: dnf/base.py:914
+#: dnf/base.py:1004
 #, 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."
@@ -260,154 +266,154 @@ 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:921
+#: dnf/base.py:1011
 msgid "Error Summary"
 msgstr "Résumé des erreurs"
 
-#: dnf/base.py:947
+#: dnf/base.py:1037
 #, python-brace-format
 msgid "RPMDB altered outside of {prog}."
 msgstr "RPMDB modifié en dehors de {prog}."
 
-#: dnf/base.py:993 dnf/base.py:1001
+#: dnf/base.py:1083 dnf/base.py:1091
 msgid "Could not run transaction."
 msgstr "Impossible d’exécuter la transaction."
 
-#: dnf/base.py:996
+#: dnf/base.py:1086
 msgid "Transaction couldn't start:"
 msgstr "La transaction n’a pas pu démarrer :"
 
-#: dnf/base.py:1010
+#: dnf/base.py:1100
 #, python-format
 msgid "Failed to remove transaction file %s"
 msgstr "Échec de la suppression du fichier de transaction %s"
 
-#: dnf/base.py:1092
+#: dnf/base.py:1182
 msgid "Some packages were not downloaded. Retrying."
 msgstr "Certains paquets n’ont pas été téléchargés. Nouvel essai."
 
-#: dnf/base.py:1122
+#: dnf/base.py:1212
 #, python-format
 msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
 msgstr ""
 "Les Delta RPM ont réduit la taille des mises à jour de %.1f Mio à %.1f Mio "
 "(%d.1%% économisés)"
 
-#: dnf/base.py:1125
+#: dnf/base.py:1215
 #, python-format
 msgid ""
 "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
 msgstr ""
-"L’échec des Delta RPMs ont fait augmenter les %.1f MO de mises à jour de "
-"%.1f MB (%d.1%% gaspillés)"
+"Les Delta RPMs en échec ont fait augmenter la taille des mises à jour de "
+"%.1f Mio à %.1f Mio (%d.1%% gaspillés)"
 
-#: dnf/base.py:1167
+#: dnf/base.py:1257
 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:1181
+#: dnf/base.py:1271
 msgid "Could not open: {}"
 msgstr "Impossible d’ouvrir : {}"
 
-#: dnf/base.py:1219
+#: dnf/base.py:1309
 #, python-format
 msgid "Public key for %s is not installed"
 msgstr "La clé publique pour %s n’est pas installée"
 
-#: dnf/base.py:1223
+#: dnf/base.py:1313
 #, python-format
 msgid "Problem opening package %s"
 msgstr "Problème à l’ouverture du paquet %s"
 
-#: dnf/base.py:1231
+#: dnf/base.py:1321
 #, python-format
 msgid "Public key for %s is not trusted"
 msgstr "La clé publique pour %s n’est pas de confiance"
 
-#: dnf/base.py:1235
+#: dnf/base.py:1325
 #, python-format
 msgid "Package %s is not signed"
 msgstr "Le paquet %s n’est pas signé"
 
-#: dnf/base.py:1265
+#: dnf/base.py:1355
 #, python-format
 msgid "Cannot remove %s"
 msgstr "Impossible de supprimer %s"
 
-#: dnf/base.py:1269
+#: dnf/base.py:1359
 #, python-format
 msgid "%s removed"
 msgstr "%s supprimé"
 
-#: dnf/base.py:1549
+#: dnf/base.py:1639
 msgid "No match for group package \"{}\""
 msgstr "Aucune correspondance pour le paquet du groupe « {} »"
 
-#: dnf/base.py:1635
+#: dnf/base.py:1721
 #, python-format
 msgid "Adding packages from group '%s': %s"
 msgstr "Ajout de paquets en provenance du groupe « %s » : %s"
 
-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442
-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592
-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80
+#: dnf/base.py:1744 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:1676
+#: dnf/base.py:1762
 msgid "No groups marked for removal."
 msgstr "Aucun groupe marqué pour suppression."
 
-#: dnf/base.py:1710
+#: dnf/base.py:1796
 msgid "No group marked for upgrade."
 msgstr "Aucun groupe marqué pour mise à jour."
 
-#: dnf/base.py:1925
+#: dnf/base.py:2010
 #, 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:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980
-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411
-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482
-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633
-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147
+#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071
+#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 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
 #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84
-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121
+#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116
 #, python-format
 msgid "No match for argument: %s"
 msgstr "Aucune correspondance pour l’argument : %s"
 
-#: dnf/base.py:1934
+#: dnf/base.py:2019
 #, 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:1957
+#: dnf/base.py:2042
 #, 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:1972
+#: dnf/base.py:2057
 #, 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:1978
+#: dnf/base.py:2068
 #, 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:1987
+#: dnf/base.py:2078
 #, python-format
 msgid ""
 "The same or higher version of %s is already installed, cannot update it."
@@ -415,187 +421,176 @@ msgstr ""
 "La même une ou version supérieure de %s est déjà installée, mise à jour "
 "impossible."
 
-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81
+#: dnf/base.py:2121 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:2032
+#: dnf/base.py:2127
 #, 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:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699
+#: dnf/base.py:2152
 #, python-format
 msgid "No package %s installed."
 msgstr "Aucun paquet %s installé."
 
-#: dnf/base.py:2075 dnf/cli/commands/install.py:136
+#: dnf/base.py:2170 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:2091 dnf/cli/commands/__init__.py:681
-#: dnf/cli/commands/remove.py:163
+#: dnf/base.py:2185 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:2179 dnf/cli/cli.py:422
+#: dnf/base.py:2273 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:2184
+#: dnf/base.py:2278
 #, 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:2242
-msgid "Action not handled: {}"
-msgstr "Action non gérée : {}"
-
-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703
-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169
-#, python-format
-msgid "No package %s available."
-msgstr "Aucun paquet %s n’est disponible."
-
-#: dnf/base.py:2269
-msgid "no package matched"
-msgstr "aucun paquet correspondant"
-
-#: dnf/base.py:2290
+#: dnf/base.py:2378
 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:2292
+#: dnf/base.py:2380
 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:2296
+#: dnf/base.py:2384
 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:2298
+#: dnf/base.py:2386
 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:2319
+#: dnf/base.py:2407
 #, 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:2327
+#: dnf/base.py:2415
 #, python-format
 msgid ". Failing package is: %s"
 msgstr ". Le paquet en erreur est : %s"
 
-#: dnf/base.py:2328
+#: dnf/base.py:2416
 #, python-format
 msgid "GPG Keys are configured as: %s"
 msgstr "Les clés GPG sont configurées comme : %s"
 
-#: dnf/base.py:2340
+#: dnf/base.py:2428
 #, 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:2373
+#: dnf/base.py:2464
 msgid "The key has been approved."
 msgstr "La clef a été approuvée."
 
-#: dnf/base.py:2376
+#: dnf/base.py:2467
 msgid "The key has been rejected."
 msgstr "La clef a été rejetée."
 
-#: dnf/base.py:2409
+#: dnf/base.py:2500
 #, python-format
 msgid "Key import failed (code %d)"
 msgstr "L’import de la clé a échoué (code %d)"
 
-#: dnf/base.py:2411
+#: dnf/base.py:2502
 msgid "Key imported successfully"
 msgstr "La clé a bien été importée"
 
-#: dnf/base.py:2415
+#: dnf/base.py:2506
 msgid "Didn't install any keys"
 msgstr "Toutes les clés n’ont pas été installées"
 
-#: dnf/base.py:2418
+#: dnf/base.py:2509
 #, 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:2429
+#: dnf/base.py:2520
 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:2482
+#: dnf/base.py:2573
 msgid "  * Maybe you meant: {}"
 msgstr "  * Peut-être vouliez-vous dire : {}"
 
-#: dnf/base.py:2514
+#: dnf/base.py:2605
 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:2517
+#: dnf/base.py:2608
 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:2520
+#: dnf/base.py:2611
 msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
 msgstr "Le paquet \"{}\" du dépôt \"{}\" a une somme de contrôle incorrecte"
 
-#: dnf/base.py:2523
+#: dnf/base.py:2614
 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:2541 dnf/base.py:2561
+#: dnf/base.py:2632 dnf/base.py:2652
 msgid "No match for argument"
 msgstr "Aucune correspondance pour le paramètre"
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2640 dnf/base.py:2660
 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:2551
+#: dnf/base.py:2642
 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:2567
+#: dnf/base.py:2658
 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:2583
+#: dnf/base.py:2705
 #, python-format
 msgid "Package %s is already installed."
 msgstr "Le paquet %s est déjà installé."
@@ -616,8 +611,8 @@ msgstr "La lecture du fichier « %s » a échoué : %s"
 msgid "Cannot read file \"%s\": %s"
 msgstr "Impossible de lire le fichier « %s » : %s"
 
-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902
-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108
+#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804
+#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108
 #, python-format
 msgid "Config error: %s"
 msgstr "Erreur de configuration : %s"
@@ -647,24 +642,32 @@ 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:172
+#: dnf/cli/cli.py:173
 #, 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 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.\n"
-"Il et 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."
+"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:210
+#: dnf/cli/cli.py:212
 #, python-brace-format
 msgid "{prog} will only download packages for the transaction."
 msgstr "{prog} ne téléchargera que les paquets pour la transaction."
 
-#: dnf/cli/cli.py:213
+#: dnf/cli/cli.py:215
 #, python-brace-format
 msgid ""
 "{prog} will only download packages, install gpg keys, and check the "
@@ -673,128 +676,108 @@ msgstr ""
 "{prog} ne téléchargera que les paquets, installera les clefs GPG et "
 "vérifiera la transaction."
 
-#: dnf/cli/cli.py:217
+#: dnf/cli/cli.py:219
 msgid "Operation aborted."
 msgstr "Opération avortée."
 
-#: dnf/cli/cli.py:224
+#: dnf/cli/cli.py:226
 msgid "Downloading Packages:"
 msgstr "Téléchargement des paquets :"
 
-#: dnf/cli/cli.py:230
+#: dnf/cli/cli.py:232
 msgid "Error downloading packages:"
 msgstr "Erreur de téléchargement des paquets :"
 
-#: dnf/cli/cli.py:258
+#: dnf/cli/cli.py:264
 msgid "Transaction failed"
 msgstr "La transaction a échoué"
 
-#: dnf/cli/cli.py:281
+#: dnf/cli/cli.py:287
 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:331
+#: dnf/cli/cli.py:337
 msgid "Changelogs for {}"
 msgstr "Changements pour {}"
 
-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511
+#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517
 msgid "Obsoleting Packages"
 msgstr "Passage de paquets en obsolètes"
 
-#: dnf/cli/cli.py:393
+#: dnf/cli/cli.py:399
 msgid "No packages marked for distribution synchronization."
 msgstr "Aucun paquet marqué pour la synchronisation de la distribution."
 
-#: dnf/cli/cli.py:428
+#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395
+#, python-format
+msgid "No package %s available."
+msgstr "Aucun paquet %s n’est disponible."
+
+#: dnf/cli/cli.py:434
 msgid "No packages marked for downgrade."
 msgstr "Aucun paquet n’a été marqué pour passer à une version antérieure."
 
-#: dnf/cli/cli.py:479
+#: dnf/cli/cli.py:485
 msgid "Installed Packages"
 msgstr "Paquets installés"
 
-#: dnf/cli/cli.py:487
+#: dnf/cli/cli.py:493
 msgid "Available Packages"
 msgstr "Paquets disponibles"
 
-#: dnf/cli/cli.py:491
+#: dnf/cli/cli.py:497
 msgid "Autoremove Packages"
 msgstr "Supprime des paquets automatiquement"
 
-#: dnf/cli/cli.py:493
+#: dnf/cli/cli.py:499
 msgid "Extra Packages"
 msgstr "Paquets supplémentaires"
 
-#: dnf/cli/cli.py:497
+#: dnf/cli/cli.py:503
 msgid "Available Upgrades"
 msgstr "Mises à jour disponibles"
 
-#: dnf/cli/cli.py:513
+#: dnf/cli/cli.py:519
 msgid "Recently Added Packages"
 msgstr "Paquets récemment ajoutés"
 
-#: dnf/cli/cli.py:518
+#: dnf/cli/cli.py:523
 msgid "No matching Packages to list"
 msgstr "Aucun paquet correspondant à lister"
 
-#: dnf/cli/cli.py:599
+#: dnf/cli/cli.py:604
 msgid "No Matches found"
 msgstr "Aucune correspondance trouvée"
 
-#: dnf/cli/cli.py:609
-msgid "No transaction ID given"
-msgstr "Aucun identifiant de transaction n’a été fourni"
-
-#: dnf/cli/cli.py:614
-msgid "Not found given transaction ID"
-msgstr "L’identifiant de transaction fourni est introuvable"
-
-#: dnf/cli/cli.py:623
-msgid "Found more than one transaction ID!"
-msgstr "Plus d’un identifiant de transaction ont été trouvés !"
-
-#: dnf/cli/cli.py:640
-#, python-format
-msgid "Transaction history is incomplete, before %u."
-msgstr "L’historique des transactions est incomplet, avant %u."
-
-#: dnf/cli/cli.py:642
-#, python-format
-msgid "Transaction history is incomplete, after %u."
-msgstr "L’historique des transactions est incomplet, après %u."
-
-#: dnf/cli/cli.py:689
-msgid "Undoing transaction {}, from {}"
-msgstr "Révocation de lla transaction {}, de {}"
-
-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237
+#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237
 #, python-format
 msgid "Unknown repo: '%s'"
 msgstr "Dépôt inconnu : « %s »"
 
-#: dnf/cli/cli.py:783
+#: dnf/cli/cli.py:685
 #, python-format
 msgid "No repository match: %s"
 msgstr "Aucun dépôt ne correspond à %s"
 
-#: dnf/cli/cli.py:817
+#: 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)."
 
-#: dnf/cli/cli.py:847
+#: dnf/cli/cli.py:749
 #, python-format
 msgid "No such command: %s. Please use %s --help"
 msgstr "Aucune commande telle que : %s. Veuillez utiliser %s --help"
 
-#: dnf/cli/cli.py:850
+#: dnf/cli/cli.py:752
 #, python-format, python-brace-format
 msgid ""
 "It could be a {PROG} plugin command, try: \"{prog} install 'dnf-"
@@ -803,7 +786,7 @@ msgstr ""
 "Cela est peut-être une commande d’un module supplémentaire de {PROG}, "
 "essayez : « {prog} install 'dnf-command(%s)' »"
 
-#: dnf/cli/cli.py:854
+#: dnf/cli/cli.py:756
 #, python-brace-format
 msgid ""
 "It could be a {prog} plugin command, but loading of plugins is currently "
@@ -812,15 +795,15 @@ msgstr ""
 "Cela est peut-être une commande d’un module supplémentaire de {prog}, mais "
 "le chargement de modules supplémentaires est actuellement désactivé."
 
-#: dnf/cli/cli.py:912
+#: dnf/cli/cli.py:814
 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:918
+#: dnf/cli/cli.py:820
 msgid ""
 "--enable, --set-enabled and --disable, --set-disabled must be used with "
 "config-manager command."
@@ -828,7 +811,7 @@ msgstr ""
 "--enable, --set-enabled et --disable, --set-disabled doit être utilisé avec "
 "la commande config-manager."
 
-#: dnf/cli/cli.py:1000
+#: 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)"
@@ -837,11 +820,11 @@ msgstr ""
 "politique de sécurité RPM active (voir « gpgcheck » dans dnf.conf(5) pour "
 "savoir comment interpréter ce message)"
 
-#: dnf/cli/cli.py:1020
+#: dnf/cli/cli.py:922
 msgid "Config file \"{}\" does not exist"
 msgstr "Le fichier de configuration \"{}\" n’existe pas"
 
-#: dnf/cli/cli.py:1040
+#: dnf/cli/cli.py:942
 msgid ""
 "Unable to detect release version (use '--releasever' to specify release "
 "version)"
@@ -849,28 +832,28 @@ msgstr ""
 "Impossible de détecter le numéro de version (utilisez « --releasever » pour "
 "spécifier une version)"
 
-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471
+#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471
 msgid "argument {}: not allowed with argument {}"
 msgstr "paramètre {} : non autorisé avec le paramètre {}"
 
-#: dnf/cli/cli.py:1134
+#: dnf/cli/cli.py:1023
 #, python-format
 msgid "Command \"%s\" already defined"
 msgstr "Commande « %s » déjà définie"
 
-#: dnf/cli/cli.py:1154
+#: dnf/cli/cli.py:1043
 msgid "Excludes in dnf.conf: "
 msgstr "Exclut dans dnf.conf : "
 
-#: dnf/cli/cli.py:1157
+#: dnf/cli/cli.py:1046
 msgid "Includes in dnf.conf: "
 msgstr "Inclut dans dnf.conf : "
 
-#: dnf/cli/cli.py:1160
+#: dnf/cli/cli.py:1049
 msgid "Excludes in repo "
 msgstr "Exclut dans dépôt "
 
-#: dnf/cli/cli.py:1163
+#: dnf/cli/cli.py:1052
 msgid "Includes in repo "
 msgstr "Inclut dans dépôt "
 
@@ -890,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"
@@ -902,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"
@@ -913,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
@@ -924,38 +911,38 @@ msgstr "Problème avec le dépôt : %s"
 msgid "display details about a package or group of packages"
 msgstr "affiche les détails d’un paquet ou d’un groupe de paquets"
 
-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740
+#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735
 msgid "show all packages (default)"
 msgstr "affiche tous les paquets (par défaut)"
 
-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743
-#: dnf/cli/commands/module.py:351
+#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738
+#: dnf/cli/commands/module.py:376
 msgid "show only available packages"
 msgstr "affiche uniquement les paquets disponibles"
 
-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746
+#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741
 msgid "show only installed packages"
 msgstr "affiche uniquement les paquets installés"
 
-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749
+#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744
 msgid "show only extras packages"
 msgstr "affiche uniquement les paquets supplémentaires"
 
 #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183
-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755
+#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750
 msgid "show only upgrades packages"
 msgstr "affiche uniquement les paquets à mettre à jour"
 
-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758
+#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753
 msgid "show only autoremove packages"
 msgstr "affiche uniquement les paquets à suppression automatique"
 
-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761
+#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756
 msgid "show only recently changed packages"
 msgstr "affiche uniquement les paquet modifiés récemment"
 
 #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265
-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48
+#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48
 #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44
 #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46
 msgid "PACKAGE"
@@ -993,70 +980,70 @@ msgstr "recherche les mises à jour de paquets disponibles"
 msgid "show changelogs before update"
 msgstr "affiche les changelogs avant la mise à jour"
 
-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414
-#: dnf/cli/commands/__init__.py:470
+#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409
+#: dnf/cli/commands/__init__.py:465
 msgid "No package available."
 msgstr "Pas de paquet disponible."
 
-#: dnf/cli/commands/__init__.py:376
+#: dnf/cli/commands/__init__.py:371
 msgid "No packages marked for install."
 msgstr "Aucun paquet marqué en vue d’être installé."
 
-#: dnf/cli/commands/__init__.py:412
+#: dnf/cli/commands/__init__.py:407
 msgid "No package installed."
 msgstr "Pas de paquet installé."
 
-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489
+#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484
 #: dnf/cli/commands/reinstall.py:91
 #, python-format
 msgid " (from %s)"
 msgstr " (depuis %s)"
 
-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490
+#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485
 #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105
 #, python-format
 msgid "Installed package %s%s not available."
 msgstr "Le paquet installé %s%s est indisponible."
 
-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576
-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666
+#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571
+#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661
 msgid "No package installed from the repository."
 msgstr "Aucun paquet installé depuis le dépôt."
 
-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101
+#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101
 msgid "No packages marked for reinstall."
 msgstr "Aucun paquet marqué pour réinstallation."
 
-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89
+#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84
 msgid "No packages marked for upgrade."
 msgstr "Aucun paquet marqué pour mise à jour."
 
-#: dnf/cli/commands/__init__.py:726
+#: dnf/cli/commands/__init__.py:721
 msgid "run commands on top of all packages in given repository"
 msgstr "exécute des commandes pour chaque paquet d’un dépôt donné"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "REPOID"
 msgstr "REPOID"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "Repository ID"
 msgstr "ID du dépôt"
 
-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48
+#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48
 #: dnf/cli/commands/updateinfo.py:108
 msgid "Package specification"
 msgstr "Caractéristiques de paquet"
 
-#: dnf/cli/commands/__init__.py:801
+#: dnf/cli/commands/__init__.py:796
 msgid "display a helpful usage message"
 msgstr "affiche un message d’aide à l’utilisation"
 
-#: dnf/cli/commands/__init__.py:805
+#: dnf/cli/commands/__init__.py:800
 msgid "COMMAND"
 msgstr "COMMANDE"
 
-#: dnf/cli/commands/__init__.py:806
+#: dnf/cli/commands/__init__.py:801
 #, python-brace-format
 msgid "{prog} command to get help for"
 msgstr "{prog} commande pour obtenir de l’aide"
@@ -1231,9 +1218,12 @@ msgstr ""
 "En attente de la fin d’exécution du processus ayant l’identifiant (pid) %d."
 
 #: dnf/cli/commands/deplist.py:32
-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 ""
-"Liste les dépendances du paquet et indique quels paquets les fournissent"
+"[obsolète, utilsez repoquery --deplist] Liste les dépendances du paquet et "
+"indique quels paquets les fournissent"
 
 #: dnf/cli/commands/distrosync.py:32
 msgid "synchronize installed packages to the latest available versions"
@@ -1260,78 +1250,78 @@ msgstr "affiche ou utilise les informations des groupes"
 msgid "No group data available for configured repositories."
 msgstr "Aucune donnée sur les groupes disponibles pour les dépôts configurés."
 
-#: dnf/cli/commands/group.py:129
+#: dnf/cli/commands/group.py:126
 #, python-format
 msgid "Warning: Group %s does not exist."
 msgstr "Attention : le groupe %s n’existe pas."
 
-#: dnf/cli/commands/group.py:170
+#: dnf/cli/commands/group.py:167
 msgid "Warning: No groups match:"
 msgstr "Attention : aucun groupe ne correspond à :"
 
-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193
-#: dnf/cli/output.py:1226
+#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190
+#: dnf/cli/output.py:1139
 msgid "<name-unset>"
 msgstr "<name-unset>"
 
-#: dnf/cli/commands/group.py:199
+#: dnf/cli/commands/group.py:196
 msgid "Available Environment Groups:"
 msgstr "Groupes d’environnements disponibles :"
 
-#: dnf/cli/commands/group.py:201
+#: dnf/cli/commands/group.py:198
 msgid "Installed Environment Groups:"
 msgstr "Groupes d’environnements installés :"
 
-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294
+#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291
 msgid "Installed Groups:"
 msgstr "Groupes installés :"
 
-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301
+#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298
 msgid "Installed Language Groups:"
 msgstr "Groupes de langues installés :"
 
-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308
+#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305
 msgid "Available Groups:"
 msgstr "Groupes disponibles :"
 
-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315
+#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312
 msgid "Available Language Groups:"
 msgstr "Groupes de langues disponibles :"
 
-#: dnf/cli/commands/group.py:322
+#: dnf/cli/commands/group.py:319
 msgid "include optional packages from group"
 msgstr "inclure les paquets optionnels du groupe"
 
-#: dnf/cli/commands/group.py:325
+#: dnf/cli/commands/group.py:322
 msgid "show also hidden groups"
 msgstr "affiche également les groupes cachés"
 
-#: dnf/cli/commands/group.py:327
+#: dnf/cli/commands/group.py:324
 msgid "show only installed groups"
 msgstr "affiche seulement les groupes installés"
 
-#: dnf/cli/commands/group.py:329
+#: dnf/cli/commands/group.py:326
 msgid "show only available groups"
 msgstr "affiche uniquement les groupes disponibles"
 
-#: dnf/cli/commands/group.py:331
+#: dnf/cli/commands/group.py:328
 msgid "show also ID of groups"
 msgstr "affiche également les ID des groupes"
 
-#: dnf/cli/commands/group.py:333
+#: dnf/cli/commands/group.py:330
 msgid "available subcommands: {} (default), {}"
 msgstr "sous-commandes disponibles : {} (par défaut), {}"
 
-#: dnf/cli/commands/group.py:337
+#: dnf/cli/commands/group.py:334
 msgid "argument for group subcommand"
 msgstr "paramètre pour la sous-commande group"
 
-#: dnf/cli/commands/group.py:346
+#: dnf/cli/commands/group.py:343
 #, python-format
 msgid "Invalid groups sub-command, use: %s."
 msgstr "Sous-commande de groupes invalide, utilisez : %s."
 
-#: dnf/cli/commands/group.py:403
+#: dnf/cli/commands/group.py:398
 msgid "Unable to find a mandatory group package."
 msgstr "Impossible de trouver un paquet obligatoire du groupe."
 
@@ -1347,8 +1337,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"
@@ -1363,8 +1353,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"
@@ -1385,25 +1375,25 @@ msgstr "Pas de transaction ou de nom de fichier fourni."
 msgid "More than one argument given as transaction file name."
 msgstr "Plus d’un argument donné comme nom de fichier de transaction."
 
-#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:126
+#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130
 msgid "No transaction ID or package name given."
 msgstr "Pas d’identifiant de transaction ou de nom de paquet fourni."
 
-#: dnf/cli/commands/history.py:138
+#: dnf/cli/commands/history.py:142
 #, python-format
 msgid "You don't have access to the history DB: %s"
 msgstr "Vous n’avez pas accès à la base de données de l’historique : %s"
 
-#: dnf/cli/commands/history.py:147
+#: 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."
 
-#: dnf/cli/commands/history.py:152
+#: dnf/cli/commands/history.py:156
 #, python-format
 msgid ""
 "Cannot rollback transaction %s, doing so would result in an inconsistent "
@@ -1412,15 +1402,43 @@ msgstr ""
 "Impossible de défaire la transaction %s ; cela aboutirait à une base de "
 "données des paquets incohérente."
 
-#: dnf/cli/commands/history.py:222
+#: dnf/cli/commands/history.py:175
+msgid "No transaction ID given"
+msgstr "Aucun identifiant de transaction n’a été fourni"
+
+#: dnf/cli/commands/history.py:179
+#, python-brace-format
+msgid "Transaction ID \"{0}\" not found."
+msgstr "ID de transaction « {0} » non trouvé."
+
+#: dnf/cli/commands/history.py:185
+msgid "Found more than one transaction ID!"
+msgstr "Plus d’un identifiant de transaction ont été trouvés !"
+
+#: dnf/cli/commands/history.py:203
+#, python-format
+msgid "Transaction history is incomplete, before %u."
+msgstr "L’historique des transactions est incomplet, avant %u."
+
+#: dnf/cli/commands/history.py:205
+#, python-format
+msgid "Transaction history is incomplete, after %u."
+msgstr "L’historique des transactions est incomplet, après %u."
+
+#: dnf/cli/commands/history.py:256
+msgid "No packages to list"
+msgstr "Aucun paquet à lister"
+
+#: dnf/cli/commands/history.py:279
 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:226
+#: dnf/cli/commands/history.py:283
 msgid ""
 "Can't convert '{}' to transaction ID.\n"
 "Use '<number>', 'last', 'last-<number>'."
@@ -1428,36 +1446,30 @@ msgstr ""
 "Impossible de convertir « {} » à ID transaction.\n"
 "Utiliser « <number>», « last », « last-<number> »."
 
-#: dnf/cli/commands/history.py:255
+#: dnf/cli/commands/history.py:312
 msgid "No transaction which manipulates package '{}' was found."
 msgstr "Aucune transaction manipulant le paquet « {} » n’a été trouvée."
 
-#: dnf/cli/commands/history.py:305
-#, python-brace-format
-msgid "Transaction ID \"{id}\" not found."
-msgstr "ID de Transaction « {id} » non trouvé."
-
-#: dnf/cli/commands/history.py:313
+#: dnf/cli/commands/history.py:357
 msgid "{} exists, overwrite?"
 msgstr "{} existe, l’écraser ?"
 
-#: dnf/cli/commands/history.py:316
+#: dnf/cli/commands/history.py:360
 msgid "Not overwriting {}, exiting."
 msgstr "{} non écrasé, sortie."
 
-#: dnf/cli/commands/history.py:323
+#: dnf/cli/commands/history.py:367
 msgid "Transaction saved to {}."
 msgstr "Transaction enregistrée vers {}."
 
-#: dnf/cli/commands/history.py:326
+#: dnf/cli/commands/history.py:370
 msgid "Error storing transaction: {}"
 msgstr "Erreur lors du stockage de la transaction : {}"
 
-#: dnf/cli/commands/history.py:350
-msgid ""
-"Warning, the following problems occurred while replaying the transaction:"
+#: dnf/cli/commands/history.py:386
+msgid "Warning, the following problems occurred while running a transaction:"
 msgstr ""
-"Attention, les problèmes suivants sont survenus lors de la relecture de la "
+"Attention, les problèmes suivants sont survenus lors de l'exécution d’une "
 "transaction :"
 
 #: dnf/cli/commands/install.py:47
@@ -1477,7 +1489,7 @@ msgstr "Impossible de trouver une correspondance"
 msgid "Not a valid rpm file path: %s"
 msgstr "Chemin du fichier RPM invalide : %s"
 
-#: dnf/cli/commands/install.py:167
+#: dnf/cli/commands/install.py:166
 #, python-brace-format
 msgid "There are following alternatives for \"{0}\": {1}"
 msgstr "Il existe les alternatives suivantes pour \"{0}\" : {1}"
@@ -1493,8 +1505,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 ""
@@ -1522,7 +1533,7 @@ msgid "%s marked as group installed."
 msgstr "%s marqué comme étant installé par un groupe."
 
 #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129
-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279
+#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282
 msgid "Error:"
 msgstr "Erreur :"
 
@@ -1531,91 +1542,95 @@ msgstr "Erreur :"
 msgid "Package %s is not installed."
 msgstr "Le paquet %s n’est pas installé."
 
-#: dnf/cli/commands/module.py:51
+#: 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:77
+#: dnf/cli/commands/module.py:80
 msgid "list all module streams, profiles and states"
 msgstr "dresser la liste de tous les flux, profils et états des modules"
 
-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128
+#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131
 msgid "No matching Modules to list"
 msgstr "Aucun module correspondant à lister"
 
-#: dnf/cli/commands/module.py:111
+#: dnf/cli/commands/module.py:114
 msgid "print detailed information about a module"
 msgstr "afficher les informations détaillées à propos d’un module"
 
-#: dnf/cli/commands/module.py:133
+#: dnf/cli/commands/module.py:136
 msgid "enable a module stream"
 msgstr "activer un flux de modules"
 
-#: dnf/cli/commands/module.py:157
+#: dnf/cli/commands/module.py:160
 msgid "disable a module with all its streams"
 msgstr "désactiver un module avec tous ses flux"
 
-#: dnf/cli/commands/module.py:181
+#: dnf/cli/commands/module.py:184
 msgid "reset a module"
 msgstr "réinitialiser un module"
 
-#: dnf/cli/commands/module.py:202
+#: dnf/cli/commands/module.py:205
 msgid "install a module profile including its packages"
 msgstr "installer un profil de module, y compris ses paquets"
 
-#: dnf/cli/commands/module.py:223
+#: dnf/cli/commands/module.py:226
 msgid "update packages associated with an active stream"
 msgstr "mettre à jour les paquets associés à un flux actif"
 
-#: dnf/cli/commands/module.py:240
+#: dnf/cli/commands/module.py:243
 msgid "remove installed module profiles and their packages"
 msgstr "supprimer les profils de modules installés et leurs paquets"
 
-#: dnf/cli/commands/module.py:264
+#: dnf/cli/commands/module.py:267
 msgid "Package {} belongs to multiple modules, skipping"
 msgstr "Le paquet {} appartient à de multiples modules, ignorer"
 
-#: dnf/cli/commands/module.py:277
+#: dnf/cli/commands/module.py:280
+msgid "switch a module to a stream and distrosync rpm packages"
+msgstr "passer un module à un flux et à des paquets de rpm de distrosync"
+
+#: dnf/cli/commands/module.py:302
 msgid "list modular packages"
 msgstr "dresser une liste des paquets modulaires"
 
-#: dnf/cli/commands/module.py:292
+#: dnf/cli/commands/module.py:317
 msgid "list packages belonging to a module"
 msgstr "dresser une liste des paquets appartenant à un module"
 
-#: dnf/cli/commands/module.py:327
+#: dnf/cli/commands/module.py:352
 msgid "Interact with Modules."
 msgstr "Interagit avec les modules."
 
-#: dnf/cli/commands/module.py:340
+#: dnf/cli/commands/module.py:365
 msgid "show only enabled modules"
 msgstr "n’affiche que les modules activés"
 
-#: dnf/cli/commands/module.py:343
+#: dnf/cli/commands/module.py:368
 msgid "show only disabled modules"
 msgstr "n’affiche que les modules désactivés"
 
-#: dnf/cli/commands/module.py:346
+#: dnf/cli/commands/module.py:371
 msgid "show only installed modules or packages"
 msgstr "affiche uniquement les paquets ou modules installés"
 
-#: dnf/cli/commands/module.py:349
+#: dnf/cli/commands/module.py:374
 msgid "show profile content"
 msgstr "affiche le contenu du profil"
 
-#: dnf/cli/commands/module.py:354
+#: dnf/cli/commands/module.py:379
 msgid "remove all modular packages"
 msgstr "Supprimer les paquets modulaires"
 
-#: dnf/cli/commands/module.py:364
+#: dnf/cli/commands/module.py:389
 msgid "Module specification"
 msgstr "Caractéristique de module"
 
-#: dnf/cli/commands/module.py:386
+#: dnf/cli/commands/module.py:411
 msgid "{} {} {}: too few arguments"
 msgstr "{} {} {} : trop peu de paramètres"
 
@@ -1868,8 +1883,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 ""
@@ -1927,8 +1942,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"
@@ -2076,23 +2091,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"
@@ -2106,13 +2121,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é."
@@ -2133,27 +2152,26 @@ msgstr "MOTCLEF"
 msgid "Keyword to search for"
 msgstr "Mot-clef à chercher"
 
-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506
+#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460
 msgctxt "long"
 msgid "Name"
 msgstr "Nom"
 
-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559
+#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513
 msgctxt "long"
 msgid "Summary"
 msgstr "Résumé"
 
-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569
+#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523
 msgctxt "long"
 msgid "Description"
 msgstr "Description"
 
-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562
+#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516
 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 " & "
@@ -2287,20 +2305,21 @@ 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"
 
-#: dnf/cli/commands/shell.py:259
+#: dnf/cli/commands/shell.py:262
 #, python-format
 msgid "Error: Cannot open %s for reading"
 msgstr "Erreur : %s n’a pu être ouvert pour lecture"
 
-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187
+#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187
 msgid "Complete!"
 msgstr "Terminé !"
 
-#: dnf/cli/commands/shell.py:291
+#: dnf/cli/commands/shell.py:294
 msgid "Leaving Shell"
 msgstr "Abandon de l’interpréteur de commandes"
 
@@ -2337,19 +2356,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"
@@ -2362,8 +2381,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 ""
@@ -2459,7 +2477,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"
@@ -2497,8 +2515,8 @@ msgstr "Criticité"
 msgid "Files"
 msgstr "Fichiers"
 
-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499
-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
+#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654
+#: dnf/cli/output.py:1656 dnf/util.py:617
 msgid "Installed"
 msgstr "Installé"
 
@@ -2533,8 +2551,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"
@@ -2677,8 +2695,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"
@@ -2695,8 +2712,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"
@@ -2720,8 +2737,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."
@@ -2731,8 +2748,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)"
@@ -2827,8 +2844,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"
@@ -2862,13 +2879,13 @@ msgstr "Impossible d’encoder l’argument « %s » : %s"
 #. Translators: This is abbreviated 'Name'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:505
+#: dnf/cli/output.py:459
 msgctxt "short"
 msgid "Name"
 msgstr "Nom"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:511
+#: dnf/cli/output.py:465
 msgid "Epoch"
 msgstr "Époque"
 
@@ -2876,38 +2893,38 @@ msgstr "Époque"
 #. use the full (unabbreviated) term 'Version' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:512 dnf/cli/output.py:1335
+#: dnf/cli/output.py:466 dnf/cli/output.py:1248
 msgctxt "short"
 msgid "Version"
 msgstr "Version"
 
 #. Translators: This is the full (unabbreviated) term 'Version'.
-#: dnf/cli/output.py:513 dnf/cli/output.py:1337
+#: dnf/cli/output.py:467 dnf/cli/output.py:1250
 msgctxt "long"
 msgid "Version"
 msgstr "Version"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:516
+#: dnf/cli/output.py:470
 msgid "Release"
 msgstr "Publication"
 
 #. Translators: This is abbreviated 'Architecture', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:517 dnf/cli/output.py:1326
+#: dnf/cli/output.py:471 dnf/cli/output.py:1239
 msgctxt "short"
 msgid "Arch"
 msgstr "Architecture"
 
 #. Translators: This is the full word 'Architecture', used when
 #. we have enough space.
-#: dnf/cli/output.py:518 dnf/cli/output.py:1329
+#: dnf/cli/output.py:472 dnf/cli/output.py:1242
 msgctxt "long"
 msgid "Architecture"
 msgstr "Architecture"
 
 #. Translators: This is the full (unabbreviated) term 'Size'.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1352
+#: dnf/cli/output.py:474 dnf/cli/output.py:1265
 msgctxt "long"
 msgid "Size"
 msgstr "Taille"
@@ -2916,32 +2933,32 @@ msgstr "Taille"
 #. not be longer than 5 characters. If the term 'Size' in your
 #. language is not longer than 5 characters then you can use it
 #. unabbreviated.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1350
+#: dnf/cli/output.py:474 dnf/cli/output.py:1263
 msgctxt "short"
 msgid "Size"
 msgstr "Taille"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:524
+#: dnf/cli/output.py:478
 msgid "Source"
 msgstr "Source"
 
 #. Translators: This is abbreviated 'Repository', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:525 dnf/cli/output.py:1341
+#: dnf/cli/output.py:479 dnf/cli/output.py:1254
 msgctxt "short"
 msgid "Repo"
 msgstr "Dépôt"
 
 #. Translators: This is the full word 'Repository', used when
 #. we have enough space.
-#: dnf/cli/output.py:526 dnf/cli/output.py:1344
+#: dnf/cli/output.py:480 dnf/cli/output.py:1257
 msgctxt "long"
 msgid "Repository"
 msgstr "Dépôt"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:533
+#: dnf/cli/output.py:487
 msgid "From repo"
 msgstr "Depuis le dépôt"
 
@@ -2949,316 +2966,311 @@ msgstr "Depuis le dépôt"
 #. print(_("Committer   : %s") % ucd(pkg.committer))
 #. print(_("Committime  : %s") % time.ctime(pkg.committime))
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:539
+#: dnf/cli/output.py:493
 msgid "Packager"
 msgstr "Empaqueteur"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:541
+#: dnf/cli/output.py:495
 msgid "Buildtime"
 msgstr "Date de compilation"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:545
+#: dnf/cli/output.py:499
 msgid "Install time"
 msgstr "Date d’installation"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:554
+#: dnf/cli/output.py:508
 msgid "Installed by"
 msgstr "Installé par"
 
 #. Translators: This is abbreviated 'Summary'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:558
+#: dnf/cli/output.py:512
 msgctxt "short"
 msgid "Summary"
 msgstr "Résumé"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:564
+#: dnf/cli/output.py:518
 msgid "License"
 msgstr "Licence"
 
 #. Translators: This is abbreviated 'Description'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:568
+#: dnf/cli/output.py:522
 msgctxt "short"
 msgid "Description"
 msgstr "Description"
 
-#: dnf/cli/output.py:695
-msgid "No packages to list"
-msgstr "Aucun paquet à lister"
-
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "y"
 msgstr "o"
 
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "yes"
 msgstr "oui"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "n"
 msgstr "n"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "no"
 msgstr "non"
 
-#: dnf/cli/output.py:711
+#: dnf/cli/output.py:655
 msgid "Is this ok [y/N]: "
 msgstr "Voulez-vous continuer ? [o/N] : "
 
-#: dnf/cli/output.py:715
+#: dnf/cli/output.py:659
 msgid "Is this ok [Y/n]: "
 msgstr "Voulez-vous continuer ? [O/n] : "
 
-#: dnf/cli/output.py:795
+#: dnf/cli/output.py:739
 #, python-format
 msgid "Group: %s"
 msgstr "Groupe : %s"
 
-#: dnf/cli/output.py:799
+#: dnf/cli/output.py:743
 #, python-format
 msgid " Group-Id: %s"
 msgstr " Identifiant du groupe : %s"
 
-#: dnf/cli/output.py:801 dnf/cli/output.py:840
+#: dnf/cli/output.py:745 dnf/cli/output.py:784
 #, python-format
 msgid " Description: %s"
 msgstr " Description : %s"
 
-#: dnf/cli/output.py:803
+#: dnf/cli/output.py:747
 #, python-format
 msgid " Language: %s"
 msgstr " Langue : %s"
 
-#: dnf/cli/output.py:806
+#: dnf/cli/output.py:750
 msgid " Mandatory Packages:"
 msgstr " Paquets obligatoires :"
 
-#: dnf/cli/output.py:807
+#: dnf/cli/output.py:751
 msgid " Default Packages:"
 msgstr " Paquets par défaut :"
 
-#: dnf/cli/output.py:808
+#: dnf/cli/output.py:752
 msgid " Optional Packages:"
 msgstr " Paquets optionnels :"
 
-#: dnf/cli/output.py:809
+#: dnf/cli/output.py:753
 msgid " Conditional Packages:"
 msgstr " Paquets conditionnels :"
 
-#: dnf/cli/output.py:834
+#: dnf/cli/output.py:778
 #, python-format
 msgid "Environment Group: %s"
 msgstr "Groupe d’environnement : %s"
 
-#: dnf/cli/output.py:837
+#: dnf/cli/output.py:781
 #, python-format
 msgid " Environment-Id: %s"
 msgstr " Identifiant d’environnement : %s"
 
-#: dnf/cli/output.py:843
+#: dnf/cli/output.py:787
 msgid " Mandatory Groups:"
 msgstr " Groupes obligatoires :"
 
-#: dnf/cli/output.py:844
+#: dnf/cli/output.py:788
 msgid " Optional Groups:"
 msgstr " Groupes optionnels :"
 
-#: dnf/cli/output.py:865
+#: dnf/cli/output.py:809
 msgid "Matched from:"
 msgstr "Correspondances trouvées dans  :"
 
-#: dnf/cli/output.py:879
+#: dnf/cli/output.py:823
 #, python-format
 msgid "Filename    : %s"
 msgstr "Nom de fichier : %s"
 
-#: dnf/cli/output.py:904
+#: dnf/cli/output.py:848
 #, python-format
 msgid "Repo        : %s"
 msgstr "Dépôt               : %s"
 
-#: dnf/cli/output.py:913
+#: dnf/cli/output.py:857
 msgid "Description : "
 msgstr "Description  : "
 
-#: dnf/cli/output.py:917
+#: dnf/cli/output.py:861
 #, python-format
 msgid "URL         : %s"
 msgstr "URL                 : %s"
 
-#: dnf/cli/output.py:921
+#: dnf/cli/output.py:865
 #, python-format
 msgid "License     : %s"
 msgstr "Licence        : %s"
 
-#: dnf/cli/output.py:927
+#: dnf/cli/output.py:871
 #, python-format
 msgid "Provide    : %s"
-msgstr "Provide    : %s"
+msgstr "Fournir : %s"
 
-#: dnf/cli/output.py:947
+#: dnf/cli/output.py:891
 #, python-format
 msgid "Other       : %s"
 msgstr "Autre  : %s"
 
-#: dnf/cli/output.py:996
+#: dnf/cli/output.py:940
 msgid "There was an error calculating total download size"
 msgstr ""
 "Une erreur est survenue pendant le calcul de la taille totale des "
 "téléchargements"
 
-#: dnf/cli/output.py:1002
+#: dnf/cli/output.py:946
 #, python-format
 msgid "Total size: %s"
 msgstr "Taille totale  : %s"
 
-#: dnf/cli/output.py:1005
+#: dnf/cli/output.py:949
 #, python-format
 msgid "Total download size: %s"
 msgstr "Taille totale des téléchargements : %s"
 
-#: dnf/cli/output.py:1008
+#: dnf/cli/output.py:952
 #, python-format
 msgid "Installed size: %s"
 msgstr "Taille des paquets installés : %s"
 
-#: dnf/cli/output.py:1026
+#: 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:1030
+#: dnf/cli/output.py:974
 #, python-format
 msgid "Freed space: %s"
 msgstr "Espace libéré : %s"
 
-#: dnf/cli/output.py:1039
+#: dnf/cli/output.py:983
 msgid "Marking packages as installed by the group:"
 msgstr "Marquage des paquets installés par le groupe :"
 
-#: dnf/cli/output.py:1046
+#: dnf/cli/output.py:990
 msgid "Marking packages as removed by the group:"
 msgstr "Marquage des paquets supprimés par le groupe :"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Group"
 msgstr "Groupe"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Packages"
 msgstr "Paquets"
 
-#: dnf/cli/output.py:1133
+#: dnf/cli/output.py:1046
 msgid "Installing group/module packages"
 msgstr "Installation des paquets du groupe/module"
 
-#: dnf/cli/output.py:1134
+#: dnf/cli/output.py:1047
 msgid "Installing group packages"
 msgstr "Installation du groupe de paquets"
 
 #. TRANSLATORS: This is for a list of packages to be installed.
-#: dnf/cli/output.py:1138
+#: dnf/cli/output.py:1051
 msgctxt "summary"
 msgid "Installing"
 msgstr "Installation"
 
 #. TRANSLATORS: This is for a list of packages to be upgraded.
-#: dnf/cli/output.py:1140
+#: dnf/cli/output.py:1053
 msgctxt "summary"
 msgid "Upgrading"
 msgstr "Mise à jour"
 
 #. TRANSLATORS: This is for a list of packages to be reinstalled.
-#: dnf/cli/output.py:1142
+#: dnf/cli/output.py:1055
 msgctxt "summary"
 msgid "Reinstalling"
 msgstr "Réinstallation"
 
-#: dnf/cli/output.py:1144
+#: dnf/cli/output.py:1057
 msgid "Installing dependencies"
 msgstr "Installation des dépendances"
 
-#: dnf/cli/output.py:1145
+#: dnf/cli/output.py:1058
 msgid "Installing weak dependencies"
 msgstr "Installation des dépendances faibles"
 
 #. TRANSLATORS: This is for a list of packages to be removed.
-#: dnf/cli/output.py:1147
+#: dnf/cli/output.py:1060
 msgid "Removing"
 msgstr "Suppression"
 
-#: dnf/cli/output.py:1148
+#: dnf/cli/output.py:1061
 msgid "Removing dependent packages"
 msgstr "Supprimer des paquets dépendants"
 
-#: dnf/cli/output.py:1149
+#: dnf/cli/output.py:1062
 msgid "Removing unused dependencies"
 msgstr "Suppression des dépendances inutilisées"
 
 #. TRANSLATORS: This is for a list of packages to be downgraded.
-#: dnf/cli/output.py:1151
+#: dnf/cli/output.py:1064
 msgctxt "summary"
 msgid "Downgrading"
 msgstr "Rétrogradation"
 
-#: dnf/cli/output.py:1176
+#: dnf/cli/output.py:1089
 msgid "Installing module profiles"
 msgstr "Installation des profils de module"
 
-#: dnf/cli/output.py:1185
+#: dnf/cli/output.py:1098
 msgid "Disabling module profiles"
 msgstr "Désactivation des profils de module"
 
-#: dnf/cli/output.py:1194
+#: dnf/cli/output.py:1107
 msgid "Enabling module streams"
 msgstr "Activation des flux de modules"
 
-#: dnf/cli/output.py:1202
+#: dnf/cli/output.py:1115
 msgid "Switching module streams"
 msgstr "Basculement des flux de modules"
 
-#: dnf/cli/output.py:1210
+#: dnf/cli/output.py:1123
 msgid "Disabling modules"
 msgstr "Désactivation des modules"
 
-#: dnf/cli/output.py:1218
+#: dnf/cli/output.py:1131
 msgid "Resetting modules"
 msgstr "Réinitialisation des modules"
 
-#: dnf/cli/output.py:1230
+#: dnf/cli/output.py:1143
 msgid "Installing Environment Groups"
 msgstr "Installation des groupes d’environnement"
 
-#: dnf/cli/output.py:1237
+#: dnf/cli/output.py:1150
 msgid "Upgrading Environment Groups"
 msgstr "Mise à niveau des groupes d’environnement"
 
-#: dnf/cli/output.py:1244
+#: dnf/cli/output.py:1157
 msgid "Removing Environment Groups"
 msgstr "Suppression des groupes d’environnement"
 
-#: dnf/cli/output.py:1251
+#: dnf/cli/output.py:1164
 msgid "Installing Groups"
 msgstr "Installation des groupes"
 
-#: dnf/cli/output.py:1258
+#: dnf/cli/output.py:1171
 msgid "Upgrading Groups"
 msgstr "Mise à niveau des groupes"
 
-#: dnf/cli/output.py:1265
+#: dnf/cli/output.py:1178
 msgid "Removing Groups"
 msgstr "Suppression des groupes"
 
-#: dnf/cli/output.py:1281
+#: dnf/cli/output.py:1194
 #, python-format
 msgid ""
 "Skipping packages with conflicts:\n"
@@ -3267,12 +3279,12 @@ msgstr ""
 "Ignorer les paquets en conflit :\n"
 "(ajouter « %s » à la ligne de commande pour forcer leur mise à niveau)"
 
-#: dnf/cli/output.py:1291
+#: dnf/cli/output.py:1204
 #, python-format
 msgid "Skipping packages with broken dependencies%s"
 msgstr "Ignorer les paquets ayant des dépendances cassées %s"
 
-#: dnf/cli/output.py:1295
+#: dnf/cli/output.py:1208
 msgid " or part of a group"
 msgstr " ou qui fait parti d’un groupe"
 
@@ -3280,22 +3292,22 @@ msgstr " ou qui fait parti d’un groupe"
 #. use the full (unabbreviated) term 'Package' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:1320
+#: dnf/cli/output.py:1233
 msgctxt "short"
 msgid "Package"
 msgstr "Paquet"
 
 #. Translators: This is the full (unabbreviated) term 'Package'.
-#: dnf/cli/output.py:1322
+#: dnf/cli/output.py:1235
 msgctxt "long"
 msgid "Package"
 msgstr "Paquet"
 
-#: dnf/cli/output.py:1371
+#: dnf/cli/output.py:1284
 msgid "replacing"
 msgstr "remplacement"
 
-#: dnf/cli/output.py:1378
+#: dnf/cli/output.py:1291
 #, python-format
 msgid ""
 "\n"
@@ -3307,289 +3319,273 @@ msgstr ""
 "%s\n"
 
 #. TODO: remove
-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933
+#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815
 msgid "Install"
 msgstr "Installer"
 
-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941
+#: dnf/cli/output.py:1300 dnf/cli/output.py:1823
 msgid "Upgrade"
 msgstr "Mettre à niveau"
 
-#: dnf/cli/output.py:1388
+#: dnf/cli/output.py:1301
 msgid "Remove"
 msgstr "Supprimer"
 
-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939
+#: dnf/cli/output.py:1303 dnf/cli/output.py:1821
 msgid "Downgrade"
 msgstr "Retrograder"
 
-#: dnf/cli/output.py:1391
+#: dnf/cli/output.py:1304
 msgid "Skip"
 msgstr "Ignorer"
 
-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416
+#: dnf/cli/output.py:1313 dnf/cli/output.py:1329
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "Paquet"
 msgstr[1] "Paquets"
 
-#: dnf/cli/output.py:1418
+#: dnf/cli/output.py:1331
 msgid "Dependent package"
 msgid_plural "Dependent packages"
 msgstr[0] "Paquet dépendant"
 msgstr[1] "Paquets dépendants"
 
-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942
-msgid "Upgraded"
-msgstr "Mis à niveau"
-
-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940
-msgid "Downgraded"
-msgstr "Rétrogradé"
-
-#: dnf/cli/output.py:1503
-msgid "Reinstalled"
-msgstr "Réinstallé"
-
-#: dnf/cli/output.py:1504
-msgid "Skipped"
-msgstr "Ignoré"
-
-#: dnf/cli/output.py:1505
-msgid "Removed"
-msgstr "Supprimé"
-
-#: dnf/cli/output.py:1508
-msgid "Failed"
-msgstr "Échec"
-
-#: dnf/cli/output.py:1559
+#: dnf/cli/output.py:1439
 msgid "Total"
 msgstr "Total"
 
-#: dnf/cli/output.py:1587
+#: dnf/cli/output.py:1467
 msgid "<unset>"
 msgstr "<unset>"
 
-#: dnf/cli/output.py:1588
+#: dnf/cli/output.py:1468
 msgid "System"
 msgstr "Système"
 
-#: dnf/cli/output.py:1638
+#: dnf/cli/output.py:1518
 msgid "Command line"
 msgstr "Ligne de commande"
 
 #. TRANSLATORS: user names who executed transaction in history command output
-#: dnf/cli/output.py:1649
+#: dnf/cli/output.py:1531
 msgid "User name"
 msgstr "Nom d’utilisateur"
 
-#: dnf/cli/output.py:1651
+#: dnf/cli/output.py:1533
 msgid "ID"
 msgstr "ID"
 
-#: dnf/cli/output.py:1653
+#: dnf/cli/output.py:1535
 msgid "Date and time"
 msgstr "Date et heure"
 
-#: dnf/cli/output.py:1654
+#: dnf/cli/output.py:1536
 msgid "Action(s)"
 msgstr "Action(s)"
 
-#: dnf/cli/output.py:1655
+#: dnf/cli/output.py:1537
 msgid "Altered"
 msgstr "Modifié"
 
-#: dnf/cli/output.py:1698
+#: dnf/cli/output.py:1580
 msgid "No transactions"
 msgstr "Pas de transaction"
 
-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715
+#: dnf/cli/output.py:1581 dnf/cli/output.py:1597
 msgid "Failed history info"
 msgstr "Infos sur l’historique des échecs"
 
-#: dnf/cli/output.py:1714
+#: dnf/cli/output.py:1596
 msgid "No transaction ID, or package, given"
 msgstr "Pas de paquet ou d’identifiant de transaction fourni"
 
-#: dnf/cli/output.py:1772
+#: dnf/cli/output.py:1654
 msgid "Erased"
 msgstr "Effacé"
 
-#: dnf/cli/output.py:1774
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616
+msgid "Downgraded"
+msgstr "Rétrogradé"
+
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615
+msgid "Upgraded"
+msgstr "Mis à niveau"
+
+#: dnf/cli/output.py:1656
 msgid "Not installed"
 msgstr "Non installé"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Newer"
 msgstr "Plus récent"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Older"
 msgstr "Plus ancien"
 
-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825
+#: dnf/cli/output.py:1705 dnf/cli/output.py:1707
 msgid "Transaction ID :"
 msgstr "Identifiant de transaction :"
 
-#: dnf/cli/output.py:1828
+#: dnf/cli/output.py:1710
 msgid "Begin time     :"
 msgstr "Temps de début    :"
 
-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833
+#: dnf/cli/output.py:1713 dnf/cli/output.py:1715
 msgid "Begin rpmdb    :"
 msgstr "Début de RPMDB    :"
 
-#: dnf/cli/output.py:1839
+#: dnf/cli/output.py:1721
 #, python-format
 msgid "(%u seconds)"
 msgstr "(%u secondes)"
 
-#: dnf/cli/output.py:1841
+#: dnf/cli/output.py:1723
 #, python-format
 msgid "(%u minutes)"
 msgstr "(%u minutes)"
 
-#: dnf/cli/output.py:1843
+#: dnf/cli/output.py:1725
 #, python-format
 msgid "(%u hours)"
 msgstr "(%u heures)"
 
-#: dnf/cli/output.py:1845
+#: dnf/cli/output.py:1727
 #, python-format
 msgid "(%u days)"
 msgstr "(%u jours)"
 
-#: dnf/cli/output.py:1846
+#: dnf/cli/output.py:1728
 msgid "End time       :"
 msgstr "Temps de fin :"
 
-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851
+#: dnf/cli/output.py:1731 dnf/cli/output.py:1733
 msgid "End rpmdb      :"
 msgstr "Fin de RPMDB :"
 
-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860
+#: dnf/cli/output.py:1740 dnf/cli/output.py:1742
 msgid "User           :"
 msgstr "Utilisateur  :"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1753
 msgid "Aborted"
 msgstr "Avorté"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869
-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751
+#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757
 msgid "Return-Code    :"
 msgstr "Code de retour  :"
 
-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1749 dnf/cli/output.py:1757
 msgid "Success"
 msgstr "Réussi"
 
-#: dnf/cli/output.py:1869
+#: dnf/cli/output.py:1751
 msgid "Failures:"
 msgstr "Échecs :"
 
-#: dnf/cli/output.py:1873
+#: dnf/cli/output.py:1755
 msgid "Failure:"
 msgstr "Échec :"
 
-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885
+#: dnf/cli/output.py:1765 dnf/cli/output.py:1767
 msgid "Releasever     :"
-msgstr "Releasever     :"
+msgstr "Version      :"
 
-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892
+#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
 msgid "Command Line   :"
 msgstr "Ligne de commande :"
 
-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899
+#: dnf/cli/output.py:1779 dnf/cli/output.py:1781
 msgid "Comment        :"
 msgstr "Commentaire :"
 
-#: dnf/cli/output.py:1903
+#: dnf/cli/output.py:1785
 msgid "Transaction performed with:"
 msgstr "Transaction effectuée avec :"
 
-#: dnf/cli/output.py:1912
+#: dnf/cli/output.py:1794
 msgid "Packages Altered:"
 msgstr "Paquets modifiés :"
 
-#: dnf/cli/output.py:1918
+#: dnf/cli/output.py:1800
 msgid "Scriptlet output:"
 msgstr "Sortie du mini script :"
 
-#: dnf/cli/output.py:1925
+#: dnf/cli/output.py:1807
 msgid "Errors:"
 msgstr "Erreurs :"
 
-#: dnf/cli/output.py:1934
+#: dnf/cli/output.py:1816
 msgid "Dep-Install"
 msgstr "Installation des dépendances"
 
-#: dnf/cli/output.py:1935
+#: dnf/cli/output.py:1817
 msgid "Obsoleted"
 msgstr "Rendu obsolète"
 
-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85
+#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85
 msgid "Obsoleting"
 msgstr "Rend obsolète"
 
-#: dnf/cli/output.py:1937
+#: dnf/cli/output.py:1819
 msgid "Erase"
 msgstr "Effacement"
 
-#: dnf/cli/output.py:1938
+#: dnf/cli/output.py:1820
 msgid "Reinstall"
 msgstr "Réinstallation"
 
-#: dnf/cli/output.py:2016
+#: dnf/cli/output.py:1894
 #, python-format
 msgid "---> Package %s.%s %s will be installed"
 msgstr "---> Le paquet %s.%s %s sera installé"
 
-#: dnf/cli/output.py:2018
+#: dnf/cli/output.py:1896
 #, python-format
 msgid "---> Package %s.%s %s will be an upgrade"
 msgstr "---> Le paquet %s.%s %s sera une mise à jour"
 
-#: dnf/cli/output.py:2020
+#: dnf/cli/output.py:1898
 #, python-format
 msgid "---> Package %s.%s %s will be erased"
 msgstr "---> Le paquet %s.%s %s sera supprimé"
 
-#: dnf/cli/output.py:2022
+#: dnf/cli/output.py:1900
 #, python-format
 msgid "---> Package %s.%s %s will be reinstalled"
 msgstr "---> Le paquet %s.%s %s sera réinstallé"
 
-#: dnf/cli/output.py:2024
+#: dnf/cli/output.py:1902
 #, python-format
 msgid "---> Package %s.%s %s will be a downgrade"
 msgstr "---> Le paquet %s.%s %s sera une rétrogradation"
 
-#: dnf/cli/output.py:2026
+#: dnf/cli/output.py:1904
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleting"
 msgstr "---> Le paquet %s.%s %s sera rendu obsolète"
 
-#: dnf/cli/output.py:2028
+#: dnf/cli/output.py:1906
 #, python-format
 msgid "---> Package %s.%s %s will be upgraded"
 msgstr "---> Le paquet %s.%s %s sera mis à jour"
 
-#: dnf/cli/output.py:2030
+#: dnf/cli/output.py:1908
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleted"
 msgstr "---> Le paquet %s.%s %s sera rendu obsolète"
 
-#: dnf/cli/output.py:2039
+#: dnf/cli/output.py:1917
 msgid "--> Starting dependency resolution"
 msgstr "--> Début de la résolution des dépendances"
 
-#: dnf/cli/output.py:2044
+#: dnf/cli/output.py:1921
 msgid "--> Finished dependency resolution"
 msgstr "--> Résolution des dépendances terminée"
 
-#: dnf/cli/output.py:2058 dnf/crypto.py:132
+#: dnf/cli/output.py:1935 dnf/crypto.py:132
 #, python-format
 msgid ""
 "Importing GPG key 0x%s:\n"
@@ -3630,8 +3626,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
@@ -3653,10 +3649,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."
@@ -3677,7 +3669,7 @@ msgstr "Module ou Groupe « %s » n’existe pas."
 msgid "Environment id '%s' does not exist."
 msgstr "L’id d’environnement « %s » n’existe pas."
 
-#: dnf/comps.py:622 dnf/transaction_sr.py:443 dnf/transaction_sr.py:453
+#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487
 #, python-format
 msgid "Environment id '%s' is not installed."
 msgstr "L’id d’environnement « %s » n’est pas installé."
@@ -3702,6 +3694,11 @@ msgstr "L’id de groupe « %s » n’existe pas."
 msgid "Error parsing '%s': %s"
 msgstr "Erreur lors l’analyse de « %s » : %s"
 
+#: dnf/conf/config.py:151
+#, python-format
+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
 msgid "Could not set cachedir: {}"
 msgstr "N’a pas pu définir cachedir : {}"
@@ -3745,39 +3742,39 @@ msgstr ""
 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"
 
-#: dnf/conf/read.py:51
+#: dnf/conf/read.py:60
 #, python-format
 msgid "Warning: failed loading '%s', skipping."
 msgstr "Attention : lecture de « %s » erronée ; ignorer."
 
-#: dnf/conf/read.py:63
+#: dnf/conf/read.py:72
 msgid "Bad id for repo: {} ({}), byte = {} {}"
 msgstr "Id erroné pour le dépôt : {} ({}), byte = {} {}"
 
-#: dnf/conf/read.py:67
+#: dnf/conf/read.py:76
 msgid "Bad id for repo: {}, byte = {} {}"
 msgstr "Id erroné pour le dépôt : {}, byte = {} {}"
 
-#: dnf/conf/read.py:75
+#: dnf/conf/read.py:84
 msgid "Repository '{}' ({}): Error parsing config: {}"
 msgstr "Dépôt « {} » ({}) : erreur lors de l’analyse de la configuration : {}"
 
-#: dnf/conf/read.py:78
+#: dnf/conf/read.py:87
 msgid "Repository '{}': Error parsing config: {}"
 msgstr "Dépôt « {} » : erreur lors de l’analyse de la configuration : {}"
 
-#: dnf/conf/read.py:84
+#: dnf/conf/read.py:93
 msgid "Repository '{}' ({}) is missing name in configuration, using id."
 msgstr ""
 "Il manque le nom du dépôt « {} » ({}) dans la configuration, utilisation de "
 "l’id."
 
-#: dnf/conf/read.py:87
+#: dnf/conf/read.py:96
 msgid "Repository '{}' is missing name in configuration, using id."
 msgstr ""
 "Il manque le nom du dépôt « {} » dans la configuration, utilisation de l’id."
 
-#: dnf/conf/read.py:104
+#: dnf/conf/read.py:113
 msgid "Parsing file \"{}\" failed: {}"
 msgstr "La lecture du fichier « {} » a échoué : {}"
 
@@ -3791,7 +3788,20 @@ msgstr "dépôt %s : 0x%s déjà importé"
 msgid "repo %s: imported key 0x%s."
 msgstr "dépôt %s : clé importée 0x%s."
 
-#: dnf/db/group.py:293
+#: dnf/crypto.py:145
+msgid "Verified using DNS record with DNSSEC signature."
+msgstr "Vérifié en utilisant un enregistrement DNS avec une signature DNSSEC."
+
+#: dnf/crypto.py:147
+msgid "NOT verified using DNS record."
+msgstr "NON vérifié avec un enregistrement DNS."
+
+#: dnf/crypto.py:184
+#, python-format
+msgid "retrieving repo key for %s unencrypted from %s"
+msgstr "récupération de la clé de dépôt pour %s déchiffrée à partir de %s"
+
+#: dnf/db/group.py:301
 msgid ""
 "No available modular metadata for modular package '{}', it cannot be "
 "installed on the system"
@@ -3799,21 +3809,21 @@ msgstr ""
 "Aucune métadonnée de module disponible pour le paquet modulaire « {} », ne "
 "peut pas être installé dans le système"
 
-#: dnf/db/group.py:343
+#: dnf/db/group.py:351
 msgid "No available modular metadata for modular package"
 msgstr "Aucune métadonnée de module disponible pour le paquet modulaire"
 
-#: dnf/db/group.py:377
+#: dnf/db/group.py:385
 #, python-format
 msgid "Will not install a source rpm package (%s)."
 msgstr "Un paquet source rpm ne sera pas installé (%s)."
 
 #: dnf/dnssec.py:168
 msgid ""
-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})"
+"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
 msgstr ""
-"L’option de configuration « gpgkey_dns_verification » nécessite libunbound "
-"({})"
+"L’option de configuration « gpgkey_dns_verification » nécessite python3-"
+"unbound({})"
 
 #: dnf/dnssec.py:239
 msgid "DNSSEC extension: Key for user "
@@ -3835,7 +3845,7 @@ msgstr "extension DNSSEC : "
 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"
@@ -3878,7 +3888,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:686
+#: dnf/exceptions.py:131 dnf/module/module_base.py:854
 msgid "Modular dependency problem:"
 msgid_plural "Modular dependency problems:"
 msgstr[0] "Problème de dépendance modulaire :"
@@ -3888,10 +3898,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 '{}'."
@@ -3915,7 +3927,47 @@ msgstr "Modules activés : {}."
 msgid "No profile specified for '{}', please specify profile."
 msgstr "Aucun profil spécifié pour « {} », veuillez spécifier un profil."
 
-#: dnf/module/module_base.py:33
+#: dnf/module/exceptions.py:27
+msgid "No such module: {}"
+msgstr "Aucun module de ce type : {}"
+
+#: dnf/module/exceptions.py:33
+msgid "No such stream: {}"
+msgstr "Aucun flux de ce type : {}"
+
+#: dnf/module/exceptions.py:39
+msgid "No enabled stream for module: {}"
+msgstr "Aucun flux activé pour le module : {}"
+
+#: dnf/module/exceptions.py:46
+msgid "Cannot enable more streams from module '{}' at the same time"
+msgstr "Ne peut pas activer plus de flux du module « {} » en même temps"
+
+#: dnf/module/exceptions.py:52
+msgid "Different stream enabled for module: {}"
+msgstr "Différent flux activé pour le module : {}"
+
+#: dnf/module/exceptions.py:58
+msgid "No such profile: {}"
+msgstr "Aucun profil de ce type : {}"
+
+#: dnf/module/exceptions.py:64
+msgid "Specified profile not installed for {}"
+msgstr "Le profil spécifié n'est pas installé pour {}"
+
+#: dnf/module/exceptions.py:70
+msgid "No stream specified for '{}', please specify stream"
+msgstr "Aucun flux spécifié pour « {} », veuillez spécifier un flux"
+
+#: dnf/module/exceptions.py:82
+msgid "No such profile: {}. No profiles available"
+msgstr "Aucun dépôt de ce type : {}. Aucun profile n’est disponible"
+
+#: dnf/module/exceptions.py:88
+msgid "No profile to remove for '{}'"
+msgstr "Aucun profil à retirer pour « {} »"
+
+#: dnf/module/module_base.py:35
 msgid ""
 "\n"
 "\n"
@@ -3925,7 +3977,7 @@ msgstr ""
 "\n"
 "Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé"
 
-#: dnf/module/module_base.py:34
+#: dnf/module/module_base.py:36
 msgid ""
 "\n"
 "\n"
@@ -3935,93 +3987,112 @@ msgstr ""
 "\n"
 "Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé, [a]ctivé"
 
-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421
-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543
+#: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
 msgid "Ignoring unnecessary profile: '{}/{}'"
 msgstr "Profil inutile ignoré : {}/{}"
 
-#: dnf/module/module_base.py:84
+#: dnf/module/module_base.py:86
 #, python-brace-format
 msgid "All matches for argument '{0}' in module '{1}:{2}' are not active"
 msgstr ""
-"Toutes les correspondance 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:92
+#: 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 ""
 "L’installation du module « {0} » à partir du dépôt Fail-Safe {1} n’est pas "
 "permise"
 
-#: dnf/module/module_base.py:102
+#: dnf/module/module_base.py:104 dnf/module/module_base.py:214
 msgid ""
 "Unable to match profile for argument {}. Available profiles for '{}:{}': {}"
 msgstr ""
 "Impossible de faire correspondre le profil pour l’argument {}. Profils "
 "disponibles pour « {}:{} » : {}"
 
-#: dnf/module/module_base.py:106
+#: dnf/module/module_base.py:108 dnf/module/module_base.py:218
 msgid "Unable to match profile for argument {}"
 msgstr "Impossible de faire correspondre le profil pour l’argument {}"
 
-#: dnf/module/module_base.py:118
+#: 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:122
+#: dnf/module/module_base.py:124
 msgid "No profiles for module {}:{}"
 msgstr "Aucun profil pour le module {} : {}"
 
-#: dnf/module/module_base.py:129
+#: dnf/module/module_base.py:131
 msgid "Default profile {} not available in module {}:{}"
 msgstr "Le profil par défaut {} n’est pas disponible dans le module {} : {}"
 
-#: dnf/module/module_base.py:142
+#: 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"
+
+#: 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} »"
+
+#: dnf/module/module_base.py:228
+#, python-brace-format
+msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'"
 msgstr ""
-"L’installation du module à partir du dépôt Fail-Safe n’est pas permise"
+"Le profil installé « {0} » n’est pas disponible dans le module « {1} » flux "
+"« {2} »"
+
+#: dnf/module/module_base.py:267
+msgid "No packages available to distrosync for package name '{}'"
+msgstr "Aucun paquet distrosync disponible pour le nom de paquet « {} »"
 
-#: dnf/module/module_base.py:159 dnf/module/module_base.py:193
-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355
-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417
-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539
+#: 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
 msgid "Unable to resolve argument {}"
 msgstr "Impossible de résoudre le paramètre {}"
 
-#: dnf/module/module_base.py:160
-msgid "No match for package {}"
-msgstr "Aucune correspondance pour le paquet {}"
-
-#: dnf/module/module_base.py:204
+#: dnf/module/module_base.py:321
 #, 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:223 dnf/module/module_base.py:251
+#: dnf/module/module_base.py:340 dnf/module/module_base.py:368
 msgid "Unable to match profile in argument {}"
 msgstr "Impossible de faire correspondre le profil dans l’argument {}"
 
-#: dnf/module/module_base.py:231
+#: dnf/module/module_base.py:348
 msgid "Upgrading module from Fail-Safe repository is not allowed"
 msgstr ""
 "La mise à niveau du module à partir du dépôt Fail-Safe n’est pas permise"
 
-#: dnf/module/module_base.py:367
+#: dnf/module/module_base.py:422
+#, python-brace-format
 msgid ""
-"Only module name is required. Ignoring unneeded information in argument: "
-"'{}'"
+"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: '{}'"
 msgstr ""
 "Seul le nom du module est nécessaire. Les paramètres inutiles ont été "
 "ignorés : « {} »"
 
-#: dnf/package.py:298
-#, python-format
-msgid "%s: %s check failed: %s vs %s"
-msgstr "%s : %s vérification a échoué : %s vs %s"
+#: dnf/module/module_base.py:841
+msgid "No match for package {}"
+msgstr "Aucune correspondance pour le paquet {}"
 
 #. empty file is invalid json format
 #: dnf/persistor.py:54
@@ -4032,12 +4103,12 @@ msgstr "%s est un fichier vide"
 #: dnf/persistor.py:91
 #, python-format
 msgid "Failed to load expired repos cache: %s"
-msgstr ""
+msgstr "Échec du chargement du cache des dépôts expirés : %s"
 
 #: dnf/persistor.py:99
 #, python-format
 msgid "Failed to store expired repos cache: %s"
-msgstr ""
+msgstr "Échec du stockage du cache des dépôts expirés : %s"
 
 #: dnf/persistor.py:106
 msgid "Failed storing last makecache time."
@@ -4057,21 +4128,21 @@ msgstr "La lecture du fichier a échoué : %s"
 msgid "Loaded plugins: %s"
 msgstr "Plugins chargés : %s"
 
-#: dnf/plugin.py:199
+#: dnf/plugin.py:211
 #, python-format
 msgid "Failed loading plugin \"%s\": %s"
 msgstr "Échec lors du chargement du module « %s » : %s"
 
-#: dnf/plugin.py:231
+#: dnf/plugin.py:243
 msgid "No matches found for the following enable plugin patterns: {}"
 msgstr ""
 "Aucun élément correspondant aux modèles de plugin d’activation suivants : {}"
 
-#: dnf/plugin.py:235
+#: 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
@@ -4083,7 +4154,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).. "
@@ -4098,10 +4169,29 @@ msgstr "activation du dépôt %s"
 msgid "Added %s repo from %s"
 msgstr "Ajout du dépôt %s depuis le %s"
 
+#: dnf/rpm/miscutils.py:32
+#, python-format
+msgid "Using rpmkeys executable at %s to verify signatures"
+msgstr ""
+"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
 msgid "Errors occurred during test transaction."
 msgstr "Des erreurs sont survenues lors de la transaction de test."
 
+#: dnf/sack.py:47
+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"
+
 #. TRANSLATORS: This is for a single package currently being downgraded.
 #: dnf/transaction.py:80
 msgctxt "currently"
@@ -4148,177 +4238,252 @@ msgstr "Exécution du scriptlet"
 msgid "Preparing"
 msgstr "Préparation"
 
-#: dnf/transaction_sr.py:60
+#: dnf/transaction_sr.py:66
 #, python-brace-format
-msgid "Errors in \"{filename}\":"
-msgstr "Erreurs dans « {filename} » :"
+msgid ""
+"The following problems occurred while replaying the transaction from file "
+"\"{filename}\":"
+msgstr ""
+"Les problèmes suivants sont survenus lors de la relecture de la transaction "
+"à partir du fichier « {filename} » :"
 
-#: dnf/transaction_sr.py:70
-#, python-brace-format
-msgid "Error in \"{filename}\": {error}"
-msgstr "Erreur dans « {filename} » : {error}"
+#: dnf/transaction_sr.py:68
+msgid "The following problems occurred while running a transaction:"
+msgstr ""
+"Les problèmes suivants sont survenus lors de l'exécution d'une transaction :"
 
-#: dnf/transaction_sr.py:87
+#: dnf/transaction_sr.py:89
 #, python-brace-format
 msgid "Invalid major version \"{major}\", number expected."
 msgstr "Version majeur invalide « {major} », numéro attendu."
 
-#: dnf/transaction_sr.py:95
+#: dnf/transaction_sr.py:97
 #, python-brace-format
 msgid "Invalid minor version \"{minor}\", number expected."
 msgstr "Version mineure invalide « {minor} », numéro attendu."
 
-#: dnf/transaction_sr.py:101
+#: dnf/transaction_sr.py:103
 #, python-brace-format
 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:244
+#: dnf/transaction_sr.py:224
+msgid ""
+"Conflicting TransactionReplay arguments have been specified: filename, data"
+msgstr ""
+"Des arguments contradictoires de TransactionReplay ont été spécifiés : nom "
+"de fichier, données"
+
+#: dnf/transaction_sr.py:265
 #, python-brace-format
 msgid "Unexpected type of \"{id}\", {exp} expected."
 msgstr "Type de « {id} » inattendu, {exp} attendu."
 
-#: dnf/transaction_sr.py:250
+#: dnf/transaction_sr.py:271
 #, python-brace-format
 msgid "Missing key \"{key}\"."
 msgstr "Clé « {key} » manquante."
 
-#: dnf/transaction_sr.py:263
+#: dnf/transaction_sr.py:285
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an rpm."
 msgstr "Clé objet « {key} » manquante dans un rpm."
 
-#: dnf/transaction_sr.py:267
+#: 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} »."
 
-#: dnf/transaction_sr.py:275
+#: dnf/transaction_sr.py:297
 #, python-brace-format
 msgid "Cannot parse NEVRA for package \"{nevra}\"."
-msgstr ""
+msgstr "Impossible d’analyser NEVRA pour le paquet « {nevra} »."
 
-#: dnf/transaction_sr.py:286
+#: dnf/transaction_sr.py:321
 #, python-brace-format
 msgid "Cannot find rpm nevra \"{nevra}\"."
-msgstr ""
+msgstr "Impossible de trouver le rpm nevra « {nevra} »."
 
-#: dnf/transaction_sr.py:301
-#, fuzzy, python-brace-format
-#| msgid "Package %s is already installed."
+#: dnf/transaction_sr.py:336
+#, python-brace-format
 msgid "Package \"{na}\" is already installed for action \"{action}\"."
-msgstr "Le paquet %s est déjà installé."
+msgstr "Le paquet « {na} » est déjà installé pour l’action « {action} »."
 
-#: dnf/transaction_sr.py:311
+#: dnf/transaction_sr.py:345
 #, python-brace-format
 msgid ""
 "Package nevra \"{nevra}\" not available in repositories for action "
 "\"{action}\"."
 msgstr ""
+"Le paquet nevra « {nevra} » n’est pas disponible dans les dépôts pour "
+"l’action « {action} »."
 
-#: dnf/transaction_sr.py:322
+#: dnf/transaction_sr.py:356
 #, python-brace-format
 msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"."
 msgstr ""
+"Le paquet nevra « {nevra} » n’est pas installé pour l’action « {action} »."
 
-#: dnf/transaction_sr.py:336
+#: 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} »."
 
-#: dnf/transaction_sr.py:343
-#, fuzzy, python-format
-#| msgid "Module or Group '%s' is not available."
+#: dnf/transaction_sr.py:377
+#, python-format
 msgid "Group id '%s' is not available."
-msgstr "Module ou Groupe « %s » non disponible."
+msgstr "ID de groupe « %s » non disponible."
 
-#: dnf/transaction_sr.py:364
+#: dnf/transaction_sr.py:398
 #, python-brace-format
 msgid "Missing object key \"{key}\" in groups.packages."
-msgstr ""
+msgstr "Clé d’objet « {key} » manquante dans groups.packages."
 
-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387
-#, fuzzy, python-format
-#| msgid "Module or Group '%s' is not installed."
+#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421
+#, python-format
 msgid "Group id '%s' is not installed."
-msgstr "Module ou Groupe « %s » non installé."
+msgstr "ID de groupe « %s » non installé."
 
-#: dnf/transaction_sr.py:398
-#, fuzzy, python-format
-#| msgid "Environment '%s' is not available."
+#: dnf/transaction_sr.py:432
+#, python-format
 msgid "Environment id '%s' is not available."
-msgstr "L’environnement « %s » n’est pas disponible."
+msgstr "ID d’environnement « %s » non disponible."
 
-#: dnf/transaction_sr.py:422
+#: dnf/transaction_sr.py:456
 #, python-brace-format
 msgid ""
 "Invalid value \"{group_type}\" of environments.groups.group_type, only "
 "\"mandatory\" or \"optional\" is supported."
 msgstr ""
+"Valeur invalide « {group_type} » pour environments.groups.group_type, seuls "
+"« mandatory » ou « optional » sont pris en charge."
 
-#: dnf/transaction_sr.py:430
+#: dnf/transaction_sr.py:464
 #, python-brace-format
 msgid "Missing object key \"{key}\" in environments.groups."
-msgstr ""
+msgstr "Clé d’objet « {key} » manquante dans environments.groups."
 
-#: dnf/transaction_sr.py:508
+#: dnf/transaction_sr.py:542
 #, python-brace-format
 msgid "Unexpected value of group action \"{action}\" for group \"{group}\"."
 msgstr ""
+"Valeur inattendue pour l’action de groupe « {action} » pour le groupe "
+"« {group} »."
 
-#: dnf/transaction_sr.py:513
+#: dnf/transaction_sr.py:547
 #, python-brace-format
 msgid "Missing object key \"{key}\" in a group."
-msgstr ""
+msgstr "Clé d’objet « {key} » manquante dans un groupe."
 
-#: dnf/transaction_sr.py:537
+#: 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} »."
 
-#: dnf/transaction_sr.py:542
+#: dnf/transaction_sr.py:576
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an environment."
-msgstr ""
+msgstr "Clé d’objet « {key} » manquante dans un environnement."
 
-#: dnf/transaction_sr.py:581
+#: 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."
 
-#: dnf/util.py:391 dnf/util.py:393
+#: dnf/util.py:419 dnf/util.py:421
 msgid "Problem"
 msgstr "Problème"
 
-#: dnf/util.py:444
+#: dnf/util.py:472
 msgid "TransactionItem not found for key: {}"
 msgstr "TransactionItem n’a pas été trouvé pour la clef : {}"
 
-#: dnf/util.py:454
+#: dnf/util.py:482
 msgid "TransactionSWDBItem not found for key: {}"
 msgstr "TransactionSWDBItem n’a pas été trouvé pour la clef : {}"
 
-#: dnf/util.py:457
+#: dnf/util.py:485
 msgid "Errors occurred during transaction."
 msgstr "Des erreurs sont survenues lors de la transaction."
 
+#: dnf/util.py:621
+msgid "Reinstalled"
+msgstr "Réinstallé"
+
+#: dnf/util.py:622
+msgid "Skipped"
+msgstr "Ignoré"
+
+#: dnf/util.py:623
+msgid "Removed"
+msgstr "Supprimé"
+
+#: dnf/util.py:626
+msgid "Failed"
+msgstr "Échec"
+
+#~ 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 package : {package}."
+
+#~ msgid "%s: %s check failed: %s vs %s"
+#~ msgstr "%s : %s vérification a échoué : %s vs %s"
+
+#~ msgid "Action not handled: {}"
+#~ msgstr "Action non gérée : {}"
+
+#~ msgid "no package matched"
+#~ msgstr "aucun paquet correspondant"
+
+#~ msgid "Not found given transaction ID"
+#~ msgstr "L’identifiant de transaction fourni est introuvable"
+
+#~ msgid "Undoing transaction {}, from {}"
+#~ msgstr "Révocation de lla transaction {}, de {}"
+
+#~ msgid "Errors in \"{filename}\":"
+#~ msgstr "Erreurs dans « {filename} » :"
+
+#~ msgid "Error in \"{filename}\": {error}"
+#~ msgstr "Erreur dans « {filename} » : {error}"
+
 #~ msgid "format for displaying found packages"
 #~ 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 6435271c..05bbda02 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: 2020-10-05 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:24+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-8/ja/>\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.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
@@ -82,7 +85,7 @@ msgstr "'%s' を使用した電子メールの送信に失敗しました: %s"
 msgid "Failed to execute command '%s': returned %d"
 msgstr "コマンド '%s' の実行に失敗しました: %d を返しました"
 
-#: dnf/automatic/main.py:164 dnf/conf/config.py:151
+#: dnf/automatic/main.py:164
 #, python-format
 msgid "Unknown configuration value: %s=%s in %s; %s"
 msgstr "不明な設定値: %s=%s in %s; %s"
@@ -92,7 +95,7 @@ msgstr "不明な設定値: %s=%s in %s; %s"
 msgid "Unknown configuration option: %s = %s in %s"
 msgstr "不明な設定オプション: %s = %s in %s"
 
-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299
+#: dnf/automatic/main.py:237 dnf/cli/cli.py:305
 msgid "GPG check FAILED"
 msgstr "GPG の確認に失敗しました"
 
@@ -105,9 +108,9 @@ msgid "Started dnf-automatic."
 msgstr "dnf-automatic を開始しました。"
 
 #: dnf/automatic/main.py:308
-#, python-format
-msgid "Sleep for %s seconds"
-msgstr "%s 秒スリープします"
+msgid "Sleep for {} second"
+msgid_plural "Sleep for {} seconds"
+msgstr[0] "{} 秒スリープします"
 
 #: dnf/automatic/main.py:315
 msgid "System is off-line."
@@ -119,439 +122,455 @@ msgstr "システムはオフラインです。"
 msgid "Error: %s"
 msgstr "エラー: %s"
 
-#: dnf/base.py:146
+#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479
 msgid "loading repo '{}' failure: {}"
 msgstr "repo '{}' のロードに失敗しました: {}"
 
-#: dnf/base.py:148
+#: dnf/base.py:150
 msgid "Loading repository '{}' has failed"
 msgstr "repository '{}' のロードに失敗しました"
 
-#: dnf/base.py:320
+#: dnf/base.py:327
 msgid "Metadata timer caching disabled when running on metered connection."
-msgstr "metered 接続で実行する際、メタデータタイマーキャッシュは無効化されました。"
+msgstr ""
+"metered 接続で実行する際、メタデータタイマーキャッシュは無効化されました。"
 
-#: dnf/base.py:325
+#: dnf/base.py:332
 msgid "Metadata timer caching disabled when running on a battery."
-msgstr "バッテリーで実行する際、メタデータタイマーキャッシュは無効化されました。"
+msgstr ""
+"バッテリーで実行する際、メタデータタイマーキャッシュは無効化されました。"
 
-#: dnf/base.py:330
+#: dnf/base.py:337
 msgid "Metadata timer caching disabled."
 msgstr "メタデータタイマーキャッシュは無効化されました。"
 
-#: dnf/base.py:335
+#: dnf/base.py:342
 msgid "Metadata cache refreshed recently."
 msgstr "メタデータキャッシュは最近、リフレッシュされました。"
 
-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91
+#: dnf/base.py:348 dnf/cli/commands/__init__.py:91
 msgid "There are no enabled repositories in \"{}\"."
 msgstr "\"{}\" には有効化されたリポジトリーがありません。"
 
-#: dnf/base.py:348
+#: dnf/base.py:355
 #, python-format
 msgid "%s: will never be expired and will not be refreshed."
 msgstr "%s: は期限切れになることはなく、リフレッシュされることもありません。"
 
-#: dnf/base.py:350
+#: dnf/base.py:357
 #, python-format
 msgid "%s: has expired and will be refreshed."
 msgstr "%s: は期限切れとなったのでリフレッシュされます。"
 
 #. expires within the checking period:
-#: dnf/base.py:354
+#: dnf/base.py:361
 #, python-format
 msgid "%s: metadata will expire after %d seconds and will be refreshed now"
 msgstr "%s: メタデータは %d 秒後に期限切れとなり、すぐにリフレッシュされます"
 
-#: dnf/base.py:358
+#: dnf/base.py:365
 #, python-format
 msgid "%s: will expire after %d seconds."
 msgstr "%s: は %d 秒後に期限切れとなります。"
 
 #. performs the md sync
-#: dnf/base.py:364
+#: dnf/base.py:371
 msgid "Metadata cache created."
 msgstr "メタデータキャッシュを作成しました。"
 
-#: dnf/base.py:397
+#: 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:409
+#: dnf/base.py:416 dnf/base.py:484
 #, python-format
 msgid "Ignoring repositories: %s"
 msgstr "リポジトリーを無視します: %s"
 
-#: dnf/base.py:412
+#: dnf/base.py:419
 #, python-format
 msgid "Last metadata expiration check: %s ago on %s."
 msgstr "メタデータの期限切れの最終確認: %s 時間前の %s に実施しました。"
 
-#: dnf/base.py:443
+#: dnf/base.py:512
 msgid ""
 "The downloaded packages were saved in cache until the next successful "
 "transaction."
-msgstr "ダウンロード済みのパッケージは、次の正常なトランザクションまでキャッシュに保存されました。"
+msgstr ""
+"ダウンロード済みのパッケージは、次の正常なトランザクションまでキャッシュに保"
+"存されました。"
 
-#: dnf/base.py:445
+#: dnf/base.py:514
 #, python-format
 msgid "You can remove cached packages by executing '%s'."
 msgstr "'%s' を実行することでキャッシュパッケージを削除できます。"
 
-#: dnf/base.py:535
+#: dnf/base.py:606
 #, python-format
 msgid "Invalid tsflag in config file: %s"
 msgstr "設定ファイルの tsflag が無効です: %s"
 
-#: dnf/base.py:591
+#: dnf/base.py:662
 #, python-format
 msgid "Failed to add groups file for repository: %s - %s"
 msgstr "リポジトリーのグループファイルを追加できませんでした: %s - %s"
 
-#: dnf/base.py:823
+#: dnf/base.py:904
 msgid "Running transaction check"
 msgstr "トランザクションの確認を実行中"
 
-#: dnf/base.py:831
+#: dnf/base.py:912
 msgid "Error: transaction check vs depsolve:"
 msgstr "エラー: トランザクションの確認 vs depsolve:"
 
-#: dnf/base.py:837
+#: dnf/base.py:918
 msgid "Transaction check succeeded."
 msgstr "トランザクションの確認に成功しました。"
 
-#: dnf/base.py:840
+#: dnf/base.py:921
 msgid "Running transaction test"
 msgstr "トランザクションのテストを実行中"
 
-#: dnf/base.py:850 dnf/base.py:992
+#: dnf/base.py:931 dnf/base.py:1082
 msgid "RPM: {}"
 msgstr "RPM: {}"
 
-#: dnf/base.py:851
+#: dnf/base.py:932
 msgid "Transaction test error:"
 msgstr "トランザクションテストエラー:"
 
-#: dnf/base.py:862
+#: dnf/base.py:943
 msgid "Transaction test succeeded."
 msgstr "トランザクションのテストに成功しました。"
 
-#: dnf/base.py:883
+#: dnf/base.py:964
 msgid "Running transaction"
 msgstr "トランザクションを実行中"
 
-#: dnf/base.py:911
+#: dnf/base.py:1001
 msgid "Disk Requirements:"
-msgstr "ディスク要件"
+msgstr "ディスク要件:"
 
-#: dnf/base.py:914
+#: dnf/base.py:1004
 #, 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:921
+#: dnf/base.py:1011
 msgid "Error Summary"
 msgstr "エラーの概要"
 
-#: dnf/base.py:947
+#: dnf/base.py:1037
 #, python-brace-format
 msgid "RPMDB altered outside of {prog}."
 msgstr "RPMDBは {prog} のサポート外に変更されました。"
 
-#: dnf/base.py:993 dnf/base.py:1001
+#: dnf/base.py:1083 dnf/base.py:1091
 msgid "Could not run transaction."
 msgstr "トランザクションを実行できませんでした。"
 
-#: dnf/base.py:996
+#: dnf/base.py:1086
 msgid "Transaction couldn't start:"
 msgstr "トランザクションを開始できませんでした:"
 
-#: dnf/base.py:1010
+#: dnf/base.py:1100
 #, python-format
 msgid "Failed to remove transaction file %s"
 msgstr "トランザクションファイル %s の削除に失敗しました"
 
-#: dnf/base.py:1092
+#: dnf/base.py:1182
 msgid "Some packages were not downloaded. Retrying."
 msgstr "一部のパッケージはダウンロードされませんでした。再試行中です。"
 
-#: dnf/base.py:1122
+#: dnf/base.py:1212
 #, python-format
 msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
-msgstr "Delta RPM により %.1f MB の更新を %.1f MB に削減できました。(%d.1%% がキャッシュされていました)"
+msgstr ""
+"Delta RPM により %.1f MB の更新を %.1f MB に削減できました。(%d.1%% がキャッ"
+"シュされていました)"
 
-#: dnf/base.py:1125
+#: dnf/base.py:1215
 #, python-format
 msgid ""
 "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
-msgstr "非効率な Delta RPM により %.1f MB の更新が増加し、%.1f MB となりました。(%d.1%% が無駄になりました)"
+msgstr ""
+"非効率な Delta RPM により %.1f MB の更新が増加し、%.1f MB となりました。"
+"(%d.1%% が無駄になりました)"
 
-#: dnf/base.py:1167
+#: dnf/base.py:1257
 msgid "Cannot add local packages, because transaction job already exists"
-msgstr "ローカルパッケージを追加できません、トランザクションジョブがすでに存在するためです"
+msgstr ""
+"ローカルパッケージを追加できません、トランザクションジョブがすでに存在するた"
+"めです"
 
-#: dnf/base.py:1181
+#: dnf/base.py:1271
 msgid "Could not open: {}"
 msgstr "開くことができませんでした: {}"
 
-#: dnf/base.py:1219
+#: dnf/base.py:1309
 #, python-format
 msgid "Public key for %s is not installed"
 msgstr "%s の公開鍵がインストールされていません"
 
-#: dnf/base.py:1223
+#: dnf/base.py:1313
 #, python-format
 msgid "Problem opening package %s"
 msgstr "パッケージ %s を開くことができません"
 
-#: dnf/base.py:1231
+#: dnf/base.py:1321
 #, python-format
 msgid "Public key for %s is not trusted"
 msgstr "%s の公開鍵は信頼されていません"
 
-#: dnf/base.py:1235
+#: dnf/base.py:1325
 #, python-format
 msgid "Package %s is not signed"
 msgstr "パッケージ %s は署名されていません"
 
-#: dnf/base.py:1265
+#: dnf/base.py:1355
 #, python-format
 msgid "Cannot remove %s"
 msgstr "%s を削除できません"
 
-#: dnf/base.py:1269
+#: dnf/base.py:1359
 #, python-format
 msgid "%s removed"
 msgstr "%s を削除しました"
 
-#: dnf/base.py:1549
+#: dnf/base.py:1639
 msgid "No match for group package \"{}\""
-msgstr "グループパッケージ  \"{}\" に一致するものはありません"
+msgstr "グループパッケージ \"{}\" に一致するものはありません"
 
-#: dnf/base.py:1635
+#: dnf/base.py:1721
 #, python-format
 msgid "Adding packages from group '%s': %s"
 msgstr "グループ '%s' からのパッケージを追加します: %s"
 
-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442
-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592
-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80
+#: dnf/base.py:1744 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:1676
+#: dnf/base.py:1762
 msgid "No groups marked for removal."
 msgstr "削除対象のパッケージはありません。"
 
-#: dnf/base.py:1710
+#: dnf/base.py:1796
 msgid "No group marked for upgrade."
 msgstr "アップグレード対象のグループはありません。"
 
-#: dnf/base.py:1925
+#: dnf/base.py:2010
 #, python-format
 msgid "Package %s not installed, cannot downgrade it."
-msgstr "パッケージ %s はインストールされていないので、ダウングレードできません。"
+msgstr ""
+"パッケージ %s はインストールされていないので、ダウングレードできません。"
 
-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980
-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411
-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482
-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633
-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147
+#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071
+#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 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
 #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84
-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121
+#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116
 #, python-format
 msgid "No match for argument: %s"
 msgstr "一致した引数がありません: %s"
 
-#: dnf/base.py:1934
+#: dnf/base.py:2019
 #, python-format
 msgid "Package %s of lower version already installed, cannot downgrade it."
-msgstr "下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできません。"
+msgstr ""
+"下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできま"
+"せん。"
 
-#: dnf/base.py:1957
+#: dnf/base.py:2042
 #, python-format
 msgid "Package %s not installed, cannot reinstall it."
-msgstr "パッケージ %s はインストールされていないのでの、再インストールできません。"
+msgstr ""
+"パッケージ %s はインストールされていないのでの、再インストールできません。"
 
-#: dnf/base.py:1972
+#: dnf/base.py:2057
 #, python-format
 msgid "File %s is a source package and cannot be updated, ignoring."
 msgstr "ファイル %s はソースパッケージで更新できません。無視します。"
 
-#: dnf/base.py:1978
+#: dnf/base.py:2068
 #, python-format
 msgid "Package %s not installed, cannot update it."
 msgstr "パッケージ %s はインストールされていないので、更新できません。"
 
-#: dnf/base.py:1987
+#: dnf/base.py:2078
 #, python-format
 msgid ""
 "The same or higher version of %s is already installed, cannot update it."
-msgstr "同じまたはさらに新しいバージョンの %s が既にインストールされています、アップデートできません。"
+msgstr ""
+"同じまたはさらに新しいバージョンの %s が既にインストールされています、アップ"
+"デートできません。"
 
-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81
+#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81
 #, python-format
 msgid "Package %s available, but not installed."
 msgstr "パッケージ %s は利用可能ですが、インストールされていません。"
 
-#: dnf/base.py:2032
+#: dnf/base.py:2127
 #, python-format
 msgid "Package %s available, but installed for different architecture."
-msgstr "パッケージ %s は利用可能ですが、他のアーキテクチャー用にインストールされています。"
+msgstr ""
+"パッケージ %s は利用可能ですが、他のアーキテクチャー用にインストールされてい"
+"ます。"
 
-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699
+#: dnf/base.py:2152
 #, python-format
 msgid "No package %s installed."
 msgstr "パッケージ %s はインストールされていません。"
 
-#: dnf/base.py:2075 dnf/cli/commands/install.py:136
+#: dnf/base.py:2170 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:2091 dnf/cli/commands/__init__.py:681
-#: dnf/cli/commands/remove.py:163
+#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676
+#: dnf/cli/commands/remove.py:162
 msgid "No packages marked for removal."
 msgstr "削除対象のパッケージはありません。"
 
-#: dnf/base.py:2179 dnf/cli/cli.py:422
+#: dnf/base.py:2273 dnf/cli/cli.py:428
 #, python-format
 msgid "Packages for argument %s available, but not installed."
-msgstr "引数  %s のパッケージは利用可能ですが、インストールされていません。"
+msgstr "引数 %s のパッケージは利用可能ですが、インストールされていません。"
 
-#: dnf/base.py:2184
+#: dnf/base.py:2278
 #, python-format
 msgid "Package %s of lowest version already installed, cannot downgrade it."
-msgstr "最下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできません。"
+msgstr ""
+"最下位バージョンのパッケージ %s はインストール済みなので、ダウングレードでき"
+"ません。"
 
-#: dnf/base.py:2242
-msgid "Action not handled: {}"
-msgstr "動作は対処されていません: {}"
-
-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703
-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169
-#, python-format
-msgid "No package %s available."
-msgstr "利用可能なパッケージ %s がありません。"
-
-#: dnf/base.py:2269
-msgid "no package matched"
-msgstr "一致したパッケージはありません。"
-
-#: dnf/base.py:2290
+#: dnf/base.py:2378
 msgid "No security updates needed, but {} update available"
 msgstr "セキュリティー更新は必要ありませんが、{} 更新が利用可能です"
 
-#: dnf/base.py:2292
+#: dnf/base.py:2380
 msgid "No security updates needed, but {} updates available"
 msgstr "セキュリティー更新は必要ありませんが、{} 更新が利用可能です"
 
-#: dnf/base.py:2296
+#: dnf/base.py:2384
 msgid "No security updates needed for \"{}\", but {} update available"
 msgstr "\"{}\" のセキュリティー更新は必要ありませんが、{} 更新が利用可能です"
 
-#: dnf/base.py:2298
+#: dnf/base.py:2386
 msgid "No security updates needed for \"{}\", but {} updates available"
 msgstr "\"{}\" のセキュリティー更新は必要ありませんが、{} 更新が利用可能です"
 
 #. raise an exception, because po.repoid is not in self.repos
-#: dnf/base.py:2319
+#: dnf/base.py:2407
 #, python-format
 msgid "Unable to retrieve a key for a commandline package: %s"
-msgstr ""
+msgstr "コマンドラインパッケージのキーを取得できません: %s"
 
-#: dnf/base.py:2327
+#: dnf/base.py:2415
 #, python-format
 msgid ". Failing package is: %s"
 msgstr ". 失敗したパッケージは: %s"
 
-#: dnf/base.py:2328
+#: dnf/base.py:2416
 #, python-format
 msgid "GPG Keys are configured as: %s"
 msgstr "GPG 鍵が設定されています: %s"
 
-#: dnf/base.py:2340
+#: dnf/base.py:2428
 #, python-format
 msgid "GPG key at %s (0x%s) is already installed"
 msgstr "%s (0x%s) の GPG 鍵はインストール済みです"
 
-#: dnf/base.py:2373
+#: dnf/base.py:2464
 msgid "The key has been approved."
 msgstr "鍵が承認されました。"
 
-#: dnf/base.py:2376
+#: dnf/base.py:2467
 msgid "The key has been rejected."
 msgstr "鍵が拒否されました。"
 
-#: dnf/base.py:2409
+#: dnf/base.py:2500
 #, python-format
 msgid "Key import failed (code %d)"
 msgstr "鍵のインポートに失敗しました (コード: %d)"
 
-#: dnf/base.py:2411
+#: dnf/base.py:2502
 msgid "Key imported successfully"
 msgstr "鍵のインポートに成功しました"
 
-#: dnf/base.py:2415
+#: dnf/base.py:2506
 msgid "Didn't install any keys"
 msgstr "鍵を 1 つもインストールしませんでした"
 
-#: dnf/base.py:2418
+#: dnf/base.py:2509
 #, 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:2429
+#: dnf/base.py:2520
 msgid "Import of key(s) didn't help, wrong key(s)?"
 msgstr "鍵をインポートしても役に立ちませんでした。鍵が間違っていませんか?"
 
-#: dnf/base.py:2482
+#: dnf/base.py:2573
 msgid "  * Maybe you meant: {}"
 msgstr "  * おそらく: {}"
 
-#: dnf/base.py:2514
+#: dnf/base.py:2605
 msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
-msgstr "ローカルリポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません"
+msgstr ""
+"ローカルリポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありま"
+"せん"
 
-#: dnf/base.py:2517
+#: dnf/base.py:2608
 msgid "Some packages from local repository have incorrect checksum"
-msgstr "ローカルリポジトリーのいくつかのパッケージのチェックサムは正しくありません"
+msgstr ""
+"ローカルリポジトリーのいくつかのパッケージのチェックサムは正しくありません"
 
-#: dnf/base.py:2520
+#: dnf/base.py:2611
 msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
-msgstr "リポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません"
+msgstr ""
+"リポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません"
 
-#: dnf/base.py:2523
+#: dnf/base.py:2614
 msgid ""
 "Some packages have invalid cache, but cannot be downloaded due to \"--"
 "cacheonly\" option"
-msgstr "いくつかのパッケージには無効なキャッシュがありますが、\"--cacheonly\" オプションによりダウンロードできません"
+msgstr ""
+"いくつかのパッケージには無効なキャッシュがありますが、\"--cacheonly\" オプ"
+"ションによりダウンロードできません"
 
-#: dnf/base.py:2541 dnf/base.py:2561
+#: dnf/base.py:2632 dnf/base.py:2652
 msgid "No match for argument"
 msgstr "一致した引数がありません"
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2640 dnf/base.py:2660
 msgid "All matches were filtered out by exclude filtering for argument"
-msgstr "すべての検索結果は引数の除外フィルタリングに一致しません(filter out)"
+msgstr "すべての検索結果は引数の除外フィルタリングに一致しません (filter out)"
 
-#: dnf/base.py:2551
+#: dnf/base.py:2642
 msgid "All matches were filtered out by modular filtering for argument"
-msgstr "すべての検出結果は引数のモジュラーフィルタリングに一致しません(filter out)"
+msgstr ""
+"すべての検出結果は引数のモジュラーフィルタリングに一致しません (filter out)"
 
-#: dnf/base.py:2567
+#: dnf/base.py:2658
 msgid "All matches were installed from a different repository for argument"
-msgstr "すべての検索結果は引数に対し異なるレポジトリからインストールされたものです"
+msgstr ""
+"すべての検索結果は引数に対し異なるレポジトリからインストールされたものです"
 
-#: dnf/base.py:2583
+#: dnf/base.py:2705
 #, python-format
 msgid "Package %s is already installed."
 msgstr "パッケージ %s は既にインストールされています。"
@@ -571,8 +590,8 @@ msgstr "ファイル \"%s\" の解析に失敗しました: %s"
 msgid "Cannot read file \"%s\": %s"
 msgstr "ファイル \"%s\" を読み込めません: %s"
 
-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902
-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108
+#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804
+#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108
 #, python-format
 msgid "Config error: %s"
 msgstr "設定エラー: %s"
@@ -601,46 +620,56 @@ 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:172
+#: dnf/cli/cli.py:173
 #, 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 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:210
+#: dnf/cli/cli.py:212
 #, python-brace-format
 msgid "{prog} will only download packages for the transaction."
 msgstr "{prog} はトランザクションでパッケージのダウンロードのみ行います。"
 
-#: dnf/cli/cli.py:213
+#: dnf/cli/cli.py:215
 #, python-brace-format
 msgid ""
 "{prog} will only download packages, install gpg keys, and check the "
 "transaction."
-msgstr "{prog} はパッケージのダウンロード、gpgキーのインストール、トランザクションのチェックのみ行います。"
+msgstr ""
+"{prog} はパッケージのダウンロード、gpgキーのインストール、トランザクションの"
+"チェックのみ行います。"
 
-#: dnf/cli/cli.py:217
+#: dnf/cli/cli.py:219
 msgid "Operation aborted."
 msgstr "操作が中断されました。"
 
-#: dnf/cli/cli.py:224
+#: dnf/cli/cli.py:226
 msgid "Downloading Packages:"
 msgstr "パッケージのダウンロード:"
 
-#: dnf/cli/cli.py:230
+#: dnf/cli/cli.py:232
 msgid "Error downloading packages:"
 msgstr "パッケージのダウンロード中にエラーが発生しました:"
 
-#: dnf/cli/cli.py:258
+#: dnf/cli/cli.py:264
 msgid "Transaction failed"
 msgstr "トランザクションが失敗しました"
 
-#: dnf/cli/cli.py:281
+#: dnf/cli/cli.py:287
 msgid ""
 "Refusing to automatically import keys when running unattended.\n"
 "Use \"-y\" to override."
@@ -648,171 +677,159 @@ msgstr ""
 "無人での実行中に鍵の自動インポートを拒否します。\n"
 "オーバーライドするには \"-y\" を使用してください。"
 
-#: dnf/cli/cli.py:331
+#: dnf/cli/cli.py:337
 msgid "Changelogs for {}"
 msgstr "{} の Changelogs"
 
-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511
+#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517
 msgid "Obsoleting Packages"
 msgstr "パッケージの廃止"
 
-#: dnf/cli/cli.py:393
+#: dnf/cli/cli.py:399
 msgid "No packages marked for distribution synchronization."
-msgstr "ディストリビューション同期対象のパッケージがありません"
+msgstr "ディストリビューション同期対象のパッケージがありません。"
 
-#: dnf/cli/cli.py:428
+#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395
+#, python-format
+msgid "No package %s available."
+msgstr "利用可能なパッケージ %s はありません。"
+
+#: dnf/cli/cli.py:434
 msgid "No packages marked for downgrade."
 msgstr "ダウングレード対象のパッケージはありません。"
 
-#: dnf/cli/cli.py:479
+#: dnf/cli/cli.py:485
 msgid "Installed Packages"
 msgstr "インストール済みパッケージ"
 
-#: dnf/cli/cli.py:487
+#: dnf/cli/cli.py:493
 msgid "Available Packages"
 msgstr "利用可能なパッケージ"
 
-#: dnf/cli/cli.py:491
+#: dnf/cli/cli.py:497
 msgid "Autoremove Packages"
 msgstr "パッケージを自動削除します"
 
-#: dnf/cli/cli.py:493
+#: dnf/cli/cli.py:499
 msgid "Extra Packages"
 msgstr "エクストラパッケージ"
 
-#: dnf/cli/cli.py:497
+#: dnf/cli/cli.py:503
 msgid "Available Upgrades"
 msgstr "利用可能なアップグレード"
 
-#: dnf/cli/cli.py:513
+#: dnf/cli/cli.py:519
 msgid "Recently Added Packages"
 msgstr "最近追加したパッケージ"
 
-#: dnf/cli/cli.py:518
+#: dnf/cli/cli.py:523
 msgid "No matching Packages to list"
 msgstr "表示するための一致したパッケージはありません"
 
-#: dnf/cli/cli.py:599
+#: dnf/cli/cli.py:604
 msgid "No Matches found"
 msgstr "一致したものは見つかりませんでした"
 
-#: dnf/cli/cli.py:609
-msgid "No transaction ID given"
-msgstr "トランザクション ID は指定されていません"
-
-#: dnf/cli/cli.py:614
-msgid "Not found given transaction ID"
-msgstr "指定されたトランザクション ID は見つかりません"
-
-#: dnf/cli/cli.py:623
-msgid "Found more than one transaction ID!"
-msgstr "1 つ以上のトランザクション ID が見つかりました!"
-
-#: dnf/cli/cli.py:640
-#, python-format
-msgid "Transaction history is incomplete, before %u."
-msgstr "%u の前のトランザクション履歴が不完全です。"
-
-#: dnf/cli/cli.py:642
-#, python-format
-msgid "Transaction history is incomplete, after %u."
-msgstr "%u の後のトランザクション履歴が不完全です。"
-
-#: dnf/cli/cli.py:689
-msgid "Undoing transaction {}, from {}"
-msgstr "トランザクション {} を {} から取り消しています"
-
-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237
+#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237
 #, python-format
 msgid "Unknown repo: '%s'"
 msgstr "不明な repo : '%s'"
 
-#: dnf/cli/cli.py:783
+#: dnf/cli/cli.py:685
 #, python-format
 msgid "No repository match: %s"
 msgstr "一致するリポジトリーがありません: %s"
 
-#: dnf/cli/cli.py:817
+#: 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:847
+#: 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:850
+#: 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:854
+#: 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:912
+#: 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:918
+#: 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:1000
+#: 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:1020
+#: dnf/cli/cli.py:922
 msgid "Config file \"{}\" does not exist"
 msgstr "設定ファイル \"{}\" は存在しません"
 
-#: dnf/cli/cli.py:1040
+#: dnf/cli/cli.py:942
 msgid ""
 "Unable to detect release version (use '--releasever' to specify release "
 "version)"
-msgstr "リリースバージョンを検出できません (リリースバージョンを指定するには '--releasever' を使用してください)"
+msgstr ""
+"リリースバージョンを検出できません (リリースバージョンを指定するには '--"
+"releasever' を使用してください)"
 
-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471
+#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471
 msgid "argument {}: not allowed with argument {}"
 msgstr "引数 {}: 引数 {} と許可されていません"
 
-#: dnf/cli/cli.py:1134
+#: dnf/cli/cli.py:1023
 #, python-format
 msgid "Command \"%s\" already defined"
 msgstr "コマンド \"%s\" はすでに定義済みです"
 
-#: dnf/cli/cli.py:1154
+#: dnf/cli/cli.py:1043
 msgid "Excludes in dnf.conf: "
 msgstr "dnf.conf で除外します: "
 
-#: dnf/cli/cli.py:1157
+#: dnf/cli/cli.py:1046
 msgid "Includes in dnf.conf: "
 msgstr "dnf.conf で含めます: "
 
-#: dnf/cli/cli.py:1160
+#: dnf/cli/cli.py:1049
 msgid "Excludes in repo "
 msgstr "repo で除外します "
 
-#: dnf/cli/cli.py:1163
+#: dnf/cli/cli.py:1052
 msgid "Includes in repo "
 msgstr "repo に含めます "
 
@@ -824,13 +841,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"
@@ -849,11 +869,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
@@ -864,38 +886,38 @@ msgstr "問題のリポジトリ: %s"
 msgid "display details about a package or group of packages"
 msgstr "パッケージもしくはパッケージのグループについての詳細を表示します"
 
-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740
+#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735
 msgid "show all packages (default)"
 msgstr "すべてのパッケージを表示します (デフォルト)"
 
-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743
-#: dnf/cli/commands/module.py:351
+#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738
+#: dnf/cli/commands/module.py:376
 msgid "show only available packages"
 msgstr "利用可能なパッケージのみを表示します"
 
-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746
+#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741
 msgid "show only installed packages"
 msgstr "インストール済みのパッケージのみを表示します"
 
-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749
+#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744
 msgid "show only extras packages"
 msgstr "エクストラパッケージのみを表示します"
 
 #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183
-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755
+#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750
 msgid "show only upgrades packages"
 msgstr "アップグレードパッケージのみを表示します"
 
-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758
+#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753
 msgid "show only autoremove packages"
 msgstr "自動削除パッケージのみを表示します"
 
-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761
+#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756
 msgid "show only recently changed packages"
 msgstr "最近変更されたパッケージのみを表示します"
 
 #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265
-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48
+#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48
 #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44
 #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46
 msgid "PACKAGE"
@@ -933,70 +955,70 @@ msgstr "利用可能なパッケージのアップグレードを確認します
 msgid "show changelogs before update"
 msgstr "更新前に changelogs を表示します"
 
-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414
-#: dnf/cli/commands/__init__.py:470
+#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409
+#: dnf/cli/commands/__init__.py:465
 msgid "No package available."
 msgstr "利用可能なパッケージがありません。"
 
-#: dnf/cli/commands/__init__.py:376
+#: dnf/cli/commands/__init__.py:371
 msgid "No packages marked for install."
 msgstr "インストール対象のパッケージはありません。"
 
-#: dnf/cli/commands/__init__.py:412
+#: dnf/cli/commands/__init__.py:407
 msgid "No package installed."
 msgstr "インストールされたパッケージはありません。"
 
-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489
+#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484
 #: dnf/cli/commands/reinstall.py:91
 #, python-format
 msgid " (from %s)"
 msgstr " (%s から)"
 
-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490
+#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485
 #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105
 #, python-format
 msgid "Installed package %s%s not available."
 msgstr "インストール済みパッケージ %s%s は利用できません。"
 
-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576
-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666
+#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571
+#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661
 msgid "No package installed from the repository."
 msgstr "リポジトリーからインストールされたパッケージはありません。"
 
-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101
+#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101
 msgid "No packages marked for reinstall."
 msgstr "再インストール対象のパッケージはありません。"
 
-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89
+#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84
 msgid "No packages marked for upgrade."
 msgstr "アップグレード対象のパッケージがありません。"
 
-#: dnf/cli/commands/__init__.py:726
+#: dnf/cli/commands/__init__.py:721
 msgid "run commands on top of all packages in given repository"
 msgstr "特定のリポジトリーのすべてのパッケージに対して、コマンドを実行します"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "REPOID"
 msgstr "REPOID"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "Repository ID"
 msgstr "リポジトリーID"
 
-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48
+#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48
 #: dnf/cli/commands/updateinfo.py:108
 msgid "Package specification"
 msgstr "パッケージspec"
 
-#: dnf/cli/commands/__init__.py:801
+#: dnf/cli/commands/__init__.py:796
 msgid "display a helpful usage message"
 msgstr "有用な使用方法のメッセージを表示します"
 
-#: dnf/cli/commands/__init__.py:805
+#: dnf/cli/commands/__init__.py:800
 msgid "COMMAND"
 msgstr "コマンド"
 
-#: dnf/cli/commands/__init__.py:806
+#: dnf/cli/commands/__init__.py:801
 #, python-brace-format
 msgid "{prog} command to get help for"
 msgstr "{prog} コマンドでヘルプ表示"
@@ -1088,7 +1110,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"
@@ -1167,8 +1190,12 @@ msgid "Waiting for process with pid %d to finish."
 msgstr "pid %d のプロセスが終了するのを待ちます。"
 
 #: dnf/cli/commands/deplist.py:32
-msgid "List package's dependencies and what packages provide them"
-msgstr "パッケージの依存関係とこれを提供するパッケージがどれかを一覧表示します"
+msgid ""
+"[deprecated, use repoquery --deplist] List package's dependencies and what "
+"packages provide them"
+msgstr ""
+"[非推奨、epoquery --deplist を使用] パッケージの依存関係とこれを提供するパッ"
+"ケージがどれかを一覧表示します"
 
 #: dnf/cli/commands/distrosync.py:32
 msgid "synchronize installed packages to the latest available versions"
@@ -1194,78 +1221,78 @@ msgstr "グループ情報を表示または使用します"
 msgid "No group data available for configured repositories."
 msgstr "設定されたリポジトリーが利用可能なグループデータはありません。"
 
-#: dnf/cli/commands/group.py:129
+#: dnf/cli/commands/group.py:126
 #, python-format
 msgid "Warning: Group %s does not exist."
 msgstr "警告: グループ %s は存在しません。"
 
-#: dnf/cli/commands/group.py:170
+#: dnf/cli/commands/group.py:167
 msgid "Warning: No groups match:"
 msgstr "警告: 一致するグループはありません:"
 
-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193
-#: dnf/cli/output.py:1226
+#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190
+#: dnf/cli/output.py:1139
 msgid "<name-unset>"
 msgstr "<name-unset>"
 
-#: dnf/cli/commands/group.py:199
+#: dnf/cli/commands/group.py:196
 msgid "Available Environment Groups:"
 msgstr "利用可能な環境グループ:"
 
-#: dnf/cli/commands/group.py:201
+#: dnf/cli/commands/group.py:198
 msgid "Installed Environment Groups:"
 msgstr "インストール済みの環境グループ:"
 
-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294
+#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291
 msgid "Installed Groups:"
 msgstr "インストール済みのグループ:"
 
-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301
+#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298
 msgid "Installed Language Groups:"
 msgstr "インストール済みの言語グループ:"
 
-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308
+#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305
 msgid "Available Groups:"
 msgstr "利用可能なグループ:"
 
-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315
+#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312
 msgid "Available Language Groups:"
 msgstr "利用可能な言語グループ:"
 
-#: dnf/cli/commands/group.py:322
+#: dnf/cli/commands/group.py:319
 msgid "include optional packages from group"
 msgstr "グループのオプションパッケージを含めます"
 
-#: dnf/cli/commands/group.py:325
+#: dnf/cli/commands/group.py:322
 msgid "show also hidden groups"
 msgstr "非表示のグループも表示します"
 
-#: dnf/cli/commands/group.py:327
+#: dnf/cli/commands/group.py:324
 msgid "show only installed groups"
 msgstr "インストール済みのグループのみを表示します"
 
-#: dnf/cli/commands/group.py:329
+#: dnf/cli/commands/group.py:326
 msgid "show only available groups"
 msgstr "利用可能なグループのみを表示します"
 
-#: dnf/cli/commands/group.py:331
+#: dnf/cli/commands/group.py:328
 msgid "show also ID of groups"
 msgstr "グループIDも表示"
 
-#: dnf/cli/commands/group.py:333
+#: dnf/cli/commands/group.py:330
 msgid "available subcommands: {} (default), {}"
 msgstr "利用可能なサブコマンド: {} (default), {}"
 
-#: dnf/cli/commands/group.py:337
+#: dnf/cli/commands/group.py:334
 msgid "argument for group subcommand"
 msgstr "グループサブコマンドの引数"
 
-#: dnf/cli/commands/group.py:346
+#: 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:403
+#: dnf/cli/commands/group.py:398
 msgid "Unable to find a mandatory group package."
 msgstr "必須のグループパッケージを見つけることができません。"
 
@@ -1275,25 +1302,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 ""
@@ -1304,41 +1337,68 @@ 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:126
+#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130
 msgid "No transaction ID or package name given."
 msgstr "トランザクション ID、またはパッケージ名が指定されていません。"
 
-#: dnf/cli/commands/history.py:138
+#: dnf/cli/commands/history.py:142
 #, python-format
 msgid "You don't have access to the history DB: %s"
 msgstr "履歴 DB にアクセスできません: %s"
 
-#: dnf/cli/commands/history.py:147
+#: 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:152
+#: 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:222
+#: dnf/cli/commands/history.py:175
+msgid "No transaction ID given"
+msgstr "トランザクション ID は指定されていません"
+
+#: dnf/cli/commands/history.py:179
+#, python-brace-format
+msgid "Transaction ID \"{0}\" not found."
+msgstr "トランザクション ID \"{0}\" が見つかりません。"
+
+#: dnf/cli/commands/history.py:185
+msgid "Found more than one transaction ID!"
+msgstr "1 つ以上のトランザクション ID が見つかりました!"
+
+#: dnf/cli/commands/history.py:203
+#, python-format
+msgid "Transaction history is incomplete, before %u."
+msgstr "%u の前のトランザクション履歴が不完全です。"
+
+#: dnf/cli/commands/history.py:205
+#, python-format
+msgid "Transaction history is incomplete, after %u."
+msgstr "%u の後のトランザクション履歴が不完全です。"
+
+#: dnf/cli/commands/history.py:256
+msgid "No packages to list"
+msgstr "一覧表示するパッケージはありません"
+
+#: dnf/cli/commands/history.py:279
 msgid ""
 "Invalid transaction ID range definition '{}'.\n"
 "Use '<transaction-id>..<transaction-id>'."
@@ -1346,7 +1406,7 @@ msgstr ""
 "無効なトランザクション ID の範囲の定義 '{}'。\n"
 "'<transaction-id>..<transaction-id>' を使用してください。"
 
-#: dnf/cli/commands/history.py:226
+#: dnf/cli/commands/history.py:283
 msgid ""
 "Can't convert '{}' to transaction ID.\n"
 "Use '<number>', 'last', 'last-<number>'."
@@ -1354,40 +1414,29 @@ msgstr ""
 "'{}' をトランザクション IDに変換できません。\n"
 "'<number>', 'last', 'last-<number>' を使用してください。"
 
-#: dnf/cli/commands/history.py:255
+#: dnf/cli/commands/history.py:312
 msgid "No transaction which manipulates package '{}' was found."
 msgstr "パッケージ '{}' を操作するトランザクションが見つかりません。"
 
-#: dnf/cli/commands/history.py:305
-#, fuzzy, python-brace-format
-#| msgid "TransactionItem not found for key: {}"
-msgid "Transaction ID \"{id}\" not found."
-msgstr "TransactionItemが見つかりません鍵: {}"
-
-#: dnf/cli/commands/history.py:313
+#: dnf/cli/commands/history.py:357
 msgid "{} exists, overwrite?"
-msgstr ""
+msgstr "{} は存在します。上書きしますか?"
 
-#: dnf/cli/commands/history.py:316
+#: dnf/cli/commands/history.py:360
 msgid "Not overwriting {}, exiting."
-msgstr ""
+msgstr "{} は存在するため上書きしません。"
 
-#: dnf/cli/commands/history.py:323
-#, fuzzy
-#| msgid "Transaction failed"
+#: dnf/cli/commands/history.py:367
 msgid "Transaction saved to {}."
-msgstr "トランザクションが失敗しました"
+msgstr "{} に保存されているトランザクション。"
 
-#: dnf/cli/commands/history.py:326
-#, fuzzy
-#| msgid "Errors occurred during transaction."
+#: dnf/cli/commands/history.py:370
 msgid "Error storing transaction: {}"
-msgstr "トランザクション中にエラーが発生しました。"
+msgstr "トランザクションの保存エラー: {}"
 
-#: dnf/cli/commands/history.py:350
-msgid ""
-"Warning, the following problems occurred while replaying the transaction:"
-msgstr ""
+#: dnf/cli/commands/history.py:386
+msgid "Warning, the following problems occurred while running a transaction:"
+msgstr "警告: トランザクションの実行中に以下の問題が発生しました:"
 
 #: dnf/cli/commands/install.py:47
 msgid "install a package or packages on your system"
@@ -1406,7 +1455,7 @@ msgstr "一致するものが見つかりません"
 msgid "Not a valid rpm file path: %s"
 msgstr "有効な rpm ファイルパスではありません: %s"
 
-#: dnf/cli/commands/install.py:167
+#: dnf/cli/commands/install.py:166
 #, python-brace-format
 msgid "There are following alternatives for \"{0}\": {1}"
 msgstr "\"{0}\"には次の選択肢があります: {1}"
@@ -1421,7 +1470,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 ""
@@ -1449,7 +1500,7 @@ msgid "%s marked as group installed."
 msgstr "グループインストールには %s のマークがついています。"
 
 #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129
-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279
+#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282
 msgid "Error:"
 msgstr "エラー:"
 
@@ -1458,89 +1509,95 @@ msgstr "エラー:"
 msgid "Package %s is not installed."
 msgstr "パッケージ %s はインストールされていません。"
 
-#: dnf/cli/commands/module.py:51
+#: 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:77
+#: dnf/cli/commands/module.py:80
 msgid "list all module streams, profiles and states"
 msgstr "全てのモジュールストリーム、プロファイル、状態をリスト"
 
-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128
+#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131
 msgid "No matching Modules to list"
 msgstr "表示する一致モジュールはありません"
 
-#: dnf/cli/commands/module.py:111
+#: dnf/cli/commands/module.py:114
 msgid "print detailed information about a module"
 msgstr "モジュールに関する詳細情報を表示"
 
-#: dnf/cli/commands/module.py:133
+#: dnf/cli/commands/module.py:136
 msgid "enable a module stream"
 msgstr "モジュールストリームを有効化"
 
-#: dnf/cli/commands/module.py:157
+#: dnf/cli/commands/module.py:160
 msgid "disable a module with all its streams"
 msgstr "すべてのストリームのモジュールを無効化"
 
-#: dnf/cli/commands/module.py:181
+#: dnf/cli/commands/module.py:184
 msgid "reset a module"
 msgstr "モジュールのリセット"
 
-#: dnf/cli/commands/module.py:202
+#: dnf/cli/commands/module.py:205
 msgid "install a module profile including its packages"
 msgstr "パッケージを含むモジュールプロファイルのインストール"
 
-#: dnf/cli/commands/module.py:223
+#: dnf/cli/commands/module.py:226
 msgid "update packages associated with an active stream"
 msgstr "アクティブストリームに紐づいたパッケージをアップデート"
 
-#: dnf/cli/commands/module.py:240
+#: dnf/cli/commands/module.py:243
 msgid "remove installed module profiles and their packages"
 msgstr "インストールされたモジュールプロファイルとそのパッケージを削除"
 
-#: dnf/cli/commands/module.py:264
+#: dnf/cli/commands/module.py:267
 msgid "Package {} belongs to multiple modules, skipping"
 msgstr "パッケージ {} は複数のモジュールに属しています、スキップします"
 
-#: dnf/cli/commands/module.py:277
+#: dnf/cli/commands/module.py:280
+msgid "switch a module to a stream and distrosync rpm packages"
+msgstr "モジュールをストリームに切り替え、rpm パッケージを distrosync します"
+
+#: dnf/cli/commands/module.py:302
 msgid "list modular packages"
 msgstr "モジュラーパッケージをリスト"
 
-#: dnf/cli/commands/module.py:292
+#: dnf/cli/commands/module.py:317
 msgid "list packages belonging to a module"
 msgstr "モジュールに属するパッケージをリスト"
 
-#: dnf/cli/commands/module.py:327
+#: dnf/cli/commands/module.py:352
 msgid "Interact with Modules."
 msgstr "モジュールと対話します。"
 
-#: dnf/cli/commands/module.py:340
+#: dnf/cli/commands/module.py:365
 msgid "show only enabled modules"
 msgstr "有効なモジュールのみを表示します"
 
-#: dnf/cli/commands/module.py:343
+#: dnf/cli/commands/module.py:368
 msgid "show only disabled modules"
 msgstr "無効なモジュールのみを表示します"
 
-#: dnf/cli/commands/module.py:346
+#: dnf/cli/commands/module.py:371
 msgid "show only installed modules or packages"
 msgstr "インストールされたモジュールまたはパッケージのみ表示"
 
-#: dnf/cli/commands/module.py:349
+#: dnf/cli/commands/module.py:374
 msgid "show profile content"
 msgstr "プロファイルコンテンツを表示します"
 
-#: dnf/cli/commands/module.py:354
+#: dnf/cli/commands/module.py:379
 msgid "remove all modular packages"
 msgstr "すべてのモジュラーパッケージを削除"
 
-#: dnf/cli/commands/module.py:364
+#: dnf/cli/commands/module.py:389
 msgid "Module specification"
 msgstr "モジュールspec"
 
-#: dnf/cli/commands/module.py:386
+#: dnf/cli/commands/module.py:411
 msgid "{} {} {}: too few arguments"
 msgstr "{} {} {}: 引数が足りません"
 
@@ -1729,7 +1786,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)"
@@ -1751,7 +1810,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"
@@ -1793,7 +1854,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"
@@ -1815,7 +1878,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"
@@ -1840,9 +1905,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"
@@ -1853,19 +1920,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"
@@ -1881,7 +1953,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"
@@ -1895,7 +1968,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."
@@ -1920,9 +1994,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."
@@ -1949,7 +2024,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
@@ -1971,26 +2048,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"
@@ -2000,13 +2079,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"
 "  与えられたパッケージではパッケージのツリーを表示します。"
@@ -2027,27 +2110,26 @@ msgstr "KEYWORD"
 msgid "Keyword to search for"
 msgstr "検索のキーワード"
 
-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506
+#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460
 msgctxt "long"
 msgid "Name"
 msgstr "名前"
 
-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559
+#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513
 msgctxt "long"
 msgid "Summary"
 msgstr "概要"
 
-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569
+#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523
 msgctxt "long"
 msgid "Description"
 msgstr "説明"
 
-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562
+#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516
 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 " & "
@@ -2123,7 +2205,8 @@ msgid ""
 "  disable: disable repositories. option = repository id"
 msgstr ""
 "{} arg [オプション]\n"
-" 一覧: リポジトリーとその状態を一覧表示します。オプション = [all | id | glob]\n"
+" 一覧: リポジトリーとその状態を一覧表示します。オプション = [all | id | "
+"glob]\n"
 "  有効化: リポジトリーの有効化。オプション = リポジトリー id\n"
 "  無効化: リポジトリーの無効化。オプション = リポジトリー id"
 
@@ -2181,27 +2264,30 @@ msgstr ""
 "ヘルプ                     ヘルプの印刷\n"
 "リポジトリー (または repo)     リポジトリーの有効化、無効化、または一覧表示\n"
 "resolvedep               トランザクションセットの解決\n"
-"トランザクション (または ts)      トランザクションセットの一覧表示、再設定、または実行\n"
+"トランザクション (または ts)      トランザクションセットの一覧表示、再設定、"
+"または実行\n"
 "実行                      トランザクションセットの解決および実行\n"
 "終了 (または 中止)           シェルの終了"
 
-#: dnf/cli/commands/shell.py:259
+#: dnf/cli/commands/shell.py:262
 #, python-format
 msgid "Error: Cannot open %s for reading"
 msgstr "エラー: 読み込み用に %s を開くことができません"
 
-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187
+#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187
 msgid "Complete!"
 msgstr "完了しました!"
 
-#: dnf/cli/commands/shell.py:291
+#: dnf/cli/commands/shell.py:294
 msgid "Leaving Shell"
 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"
@@ -2253,13 +2339,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"
@@ -2385,8 +2474,8 @@ msgstr "重大度"
 msgid "Files"
 msgstr "ファイル"
 
-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499
-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
+#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654
+#: dnf/cli/output.py:1656 dnf/util.py:617
 msgid "Installed"
 msgstr "インストール済み"
 
@@ -2400,7 +2489,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"
@@ -2410,7 +2500,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."
@@ -2422,23 +2514,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."
@@ -2530,7 +2628,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"
@@ -2566,8 +2666,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"
@@ -2585,19 +2685,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)"
@@ -2619,7 +2725,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"
@@ -2699,7 +2807,7 @@ msgstr "主要コマンドの一覧:"
 
 #: dnf/cli/option_parser.py:376
 msgid "List of Plugin Commands:"
-msgstr "プラグインコマンドの一覧"
+msgstr "プラグインコマンドの一覧:"
 
 #: dnf/cli/option_parser.py:413
 #, python-format
@@ -2709,13 +2817,13 @@ msgstr "引数をエンコードできません '%s': %s"
 #. Translators: This is abbreviated 'Name'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:505
+#: dnf/cli/output.py:459
 msgctxt "short"
 msgid "Name"
 msgstr "名前"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:511
+#: dnf/cli/output.py:465
 msgid "Epoch"
 msgstr "エポック"
 
@@ -2723,38 +2831,38 @@ msgstr "エポック"
 #. use the full (unabbreviated) term 'Version' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:512 dnf/cli/output.py:1335
+#: dnf/cli/output.py:466 dnf/cli/output.py:1248
 msgctxt "short"
 msgid "Version"
 msgstr "バージョン"
 
 #. Translators: This is the full (unabbreviated) term 'Version'.
-#: dnf/cli/output.py:513 dnf/cli/output.py:1337
+#: dnf/cli/output.py:467 dnf/cli/output.py:1250
 msgctxt "long"
 msgid "Version"
 msgstr "バージョン"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:516
+#: dnf/cli/output.py:470
 msgid "Release"
 msgstr "リリース"
 
 #. Translators: This is abbreviated 'Architecture', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:517 dnf/cli/output.py:1326
+#: dnf/cli/output.py:471 dnf/cli/output.py:1239
 msgctxt "short"
 msgid "Arch"
 msgstr "Arch"
 
 #. Translators: This is the full word 'Architecture', used when
 #. we have enough space.
-#: dnf/cli/output.py:518 dnf/cli/output.py:1329
+#: dnf/cli/output.py:472 dnf/cli/output.py:1242
 msgctxt "long"
 msgid "Architecture"
 msgstr "アーキテクチャー"
 
 #. Translators: This is the full (unabbreviated) term 'Size'.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1352
+#: dnf/cli/output.py:474 dnf/cli/output.py:1265
 msgctxt "long"
 msgid "Size"
 msgstr "サイズ"
@@ -2763,32 +2871,32 @@ msgstr "サイズ"
 #. not be longer than 5 characters. If the term 'Size' in your
 #. language is not longer than 5 characters then you can use it
 #. unabbreviated.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1350
+#: dnf/cli/output.py:474 dnf/cli/output.py:1263
 msgctxt "short"
 msgid "Size"
 msgstr "サイズ"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:524
+#: dnf/cli/output.py:478
 msgid "Source"
 msgstr "ソース"
 
 #. Translators: This is abbreviated 'Repository', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:525 dnf/cli/output.py:1341
+#: dnf/cli/output.py:479 dnf/cli/output.py:1254
 msgctxt "short"
 msgid "Repo"
 msgstr "Repo"
 
 #. Translators: This is the full word 'Repository', used when
 #. we have enough space.
-#: dnf/cli/output.py:526 dnf/cli/output.py:1344
+#: dnf/cli/output.py:480 dnf/cli/output.py:1257
 msgctxt "long"
 msgid "Repository"
 msgstr "リポジトリー"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:533
+#: dnf/cli/output.py:487
 msgid "From repo"
 msgstr "repo から"
 
@@ -2796,312 +2904,308 @@ msgstr "repo から"
 #. print(_("Committer   : %s") % ucd(pkg.committer))
 #. print(_("Committime  : %s") % time.ctime(pkg.committime))
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:539
+#: dnf/cli/output.py:493
 msgid "Packager"
 msgstr "パッケージャー"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:541
+#: dnf/cli/output.py:495
 msgid "Buildtime"
 msgstr "ビルド時間"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:545
+#: dnf/cli/output.py:499
 msgid "Install time"
 msgstr "インストール時間"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:554
+#: dnf/cli/output.py:508
 msgid "Installed by"
 msgstr "インストール済み"
 
 #. Translators: This is abbreviated 'Summary'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:558
+#: dnf/cli/output.py:512
 msgctxt "short"
 msgid "Summary"
 msgstr "概要"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:564
+#: dnf/cli/output.py:518
 msgid "License"
 msgstr "ライセンス"
 
 #. Translators: This is abbreviated 'Description'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:568
+#: dnf/cli/output.py:522
 msgctxt "short"
 msgid "Description"
 msgstr "説明"
 
-#: dnf/cli/output.py:695
-msgid "No packages to list"
-msgstr "一覧表示するパッケージはありません"
-
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "y"
 msgstr "y"
 
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "yes"
 msgstr "はい"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "n"
 msgstr "n"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "no"
 msgstr "いいえ"
 
-#: dnf/cli/output.py:711
+#: dnf/cli/output.py:655
 msgid "Is this ok [y/N]: "
 msgstr "これでよろしいですか? [y/N]: "
 
-#: dnf/cli/output.py:715
+#: dnf/cli/output.py:659
 msgid "Is this ok [Y/n]: "
 msgstr "これでよろしいですか? [Y/n]: "
 
-#: dnf/cli/output.py:795
+#: dnf/cli/output.py:739
 #, python-format
 msgid "Group: %s"
 msgstr "グループ: %s"
 
-#: dnf/cli/output.py:799
+#: dnf/cli/output.py:743
 #, python-format
 msgid " Group-Id: %s"
 msgstr " グループ ID: %s"
 
-#: dnf/cli/output.py:801 dnf/cli/output.py:840
+#: dnf/cli/output.py:745 dnf/cli/output.py:784
 #, python-format
 msgid " Description: %s"
 msgstr " 説明: %s"
 
-#: dnf/cli/output.py:803
+#: dnf/cli/output.py:747
 #, python-format
 msgid " Language: %s"
 msgstr " 言語: %s"
 
-#: dnf/cli/output.py:806
+#: dnf/cli/output.py:750
 msgid " Mandatory Packages:"
 msgstr " 必須なパッケージ:"
 
-#: dnf/cli/output.py:807
+#: dnf/cli/output.py:751
 msgid " Default Packages:"
 msgstr " 標準パッケージ:"
 
-#: dnf/cli/output.py:808
+#: dnf/cli/output.py:752
 msgid " Optional Packages:"
 msgstr " オプション パッケージ:"
 
-#: dnf/cli/output.py:809
+#: dnf/cli/output.py:753
 msgid " Conditional Packages:"
 msgstr " 条件付きパッケージ:"
 
-#: dnf/cli/output.py:834
+#: dnf/cli/output.py:778
 #, python-format
 msgid "Environment Group: %s"
 msgstr "環境グループ: %s"
 
-#: dnf/cli/output.py:837
+#: dnf/cli/output.py:781
 #, python-format
 msgid " Environment-Id: %s"
 msgstr " 環境 Id: %s"
 
-#: dnf/cli/output.py:843
+#: dnf/cli/output.py:787
 msgid " Mandatory Groups:"
 msgstr " 必須なグループ:"
 
-#: dnf/cli/output.py:844
+#: dnf/cli/output.py:788
 msgid " Optional Groups:"
 msgstr " 任意なグループ:"
 
-#: dnf/cli/output.py:865
+#: dnf/cli/output.py:809
 msgid "Matched from:"
 msgstr "一致:"
 
-#: dnf/cli/output.py:879
+#: dnf/cli/output.py:823
 #, python-format
 msgid "Filename    : %s"
 msgstr "ファイル名    : %s"
 
-#: dnf/cli/output.py:904
+#: dnf/cli/output.py:848
 #, python-format
 msgid "Repo        : %s"
 msgstr "Repo        : %s"
 
-#: dnf/cli/output.py:913
+#: dnf/cli/output.py:857
 msgid "Description : "
-msgstr "説明                : "
+msgstr "説明: "
 
-#: dnf/cli/output.py:917
+#: dnf/cli/output.py:861
 #, python-format
 msgid "URL         : %s"
 msgstr "URL                 : %s"
 
-#: dnf/cli/output.py:921
+#: dnf/cli/output.py:865
 #, python-format
 msgid "License     : %s"
 msgstr "ライセンス    : %s"
 
-#: dnf/cli/output.py:927
+#: dnf/cli/output.py:871
 #, python-format
 msgid "Provide    : %s"
 msgstr "提供する    : %s"
 
-#: dnf/cli/output.py:947
+#: dnf/cli/output.py:891
 #, python-format
 msgid "Other       : %s"
 msgstr "その他       : %s"
 
-#: dnf/cli/output.py:996
+#: dnf/cli/output.py:940
 msgid "There was an error calculating total download size"
 msgstr "ダウンロードサイズの合計を計算中にエラーが発生しました"
 
-#: dnf/cli/output.py:1002
+#: dnf/cli/output.py:946
 #, python-format
 msgid "Total size: %s"
 msgstr "合計サイズ: %s"
 
-#: dnf/cli/output.py:1005
+#: dnf/cli/output.py:949
 #, python-format
 msgid "Total download size: %s"
 msgstr "ダウンロードサイズの合計: %s"
 
-#: dnf/cli/output.py:1008
+#: dnf/cli/output.py:952
 #, python-format
 msgid "Installed size: %s"
 msgstr "インストール後のサイズ: %s"
 
-#: dnf/cli/output.py:1026
+#: dnf/cli/output.py:970
 msgid "There was an error calculating installed size"
 msgstr "インストール後のサイズを計算中にエラーが発生しました"
 
-#: dnf/cli/output.py:1030
+#: dnf/cli/output.py:974
 #, python-format
 msgid "Freed space: %s"
 msgstr "解放された容量: %s"
 
-#: dnf/cli/output.py:1039
+#: dnf/cli/output.py:983
 msgid "Marking packages as installed by the group:"
 msgstr "パッケージをグループごとにインストール済みとマークします:"
 
-#: dnf/cli/output.py:1046
+#: dnf/cli/output.py:990
 msgid "Marking packages as removed by the group:"
 msgstr "パッケージをグループごとに削除済みとマークします:"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Group"
 msgstr "グループ"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Packages"
 msgstr "パッケージ"
 
-#: dnf/cli/output.py:1133
+#: dnf/cli/output.py:1046
 msgid "Installing group/module packages"
 msgstr "group/moduleパッケージをインストール"
 
-#: dnf/cli/output.py:1134
+#: dnf/cli/output.py:1047
 msgid "Installing group packages"
 msgstr "グループパッケージのインストール"
 
 #. TRANSLATORS: This is for a list of packages to be installed.
-#: dnf/cli/output.py:1138
+#: dnf/cli/output.py:1051
 msgctxt "summary"
 msgid "Installing"
 msgstr "インストール"
 
 #. TRANSLATORS: This is for a list of packages to be upgraded.
-#: dnf/cli/output.py:1140
+#: dnf/cli/output.py:1053
 msgctxt "summary"
 msgid "Upgrading"
 msgstr "アップグレード"
 
 #. TRANSLATORS: This is for a list of packages to be reinstalled.
-#: dnf/cli/output.py:1142
+#: dnf/cli/output.py:1055
 msgctxt "summary"
 msgid "Reinstalling"
 msgstr "再インストール"
 
-#: dnf/cli/output.py:1144
+#: dnf/cli/output.py:1057
 msgid "Installing dependencies"
 msgstr "依存関係のインストール"
 
-#: dnf/cli/output.py:1145
+#: dnf/cli/output.py:1058
 msgid "Installing weak dependencies"
 msgstr "弱い依存関係のインストール"
 
 #. TRANSLATORS: This is for a list of packages to be removed.
-#: dnf/cli/output.py:1147
+#: dnf/cli/output.py:1060
 msgid "Removing"
 msgstr "削除中"
 
-#: dnf/cli/output.py:1148
+#: dnf/cli/output.py:1061
 msgid "Removing dependent packages"
 msgstr "依存関係パッケージの削除"
 
-#: dnf/cli/output.py:1149
+#: dnf/cli/output.py:1062
 msgid "Removing unused dependencies"
 msgstr "未使用の依存関係の削除"
 
 #. TRANSLATORS: This is for a list of packages to be downgraded.
-#: dnf/cli/output.py:1151
+#: dnf/cli/output.py:1064
 msgctxt "summary"
 msgid "Downgrading"
 msgstr "ダウングレード"
 
-#: dnf/cli/output.py:1176
+#: dnf/cli/output.py:1089
 msgid "Installing module profiles"
 msgstr "モジュールプロファイルのインストール中"
 
-#: dnf/cli/output.py:1185
+#: dnf/cli/output.py:1098
 msgid "Disabling module profiles"
 msgstr "モジュールプロファイルの無効化中"
 
-#: dnf/cli/output.py:1194
+#: dnf/cli/output.py:1107
 msgid "Enabling module streams"
 msgstr "モジュールストリームの有効化中"
 
-#: dnf/cli/output.py:1202
+#: dnf/cli/output.py:1115
 msgid "Switching module streams"
 msgstr "モジュールストリームの切り替え中"
 
-#: dnf/cli/output.py:1210
+#: dnf/cli/output.py:1123
 msgid "Disabling modules"
 msgstr "モジュールの無効化"
 
-#: dnf/cli/output.py:1218
+#: dnf/cli/output.py:1131
 msgid "Resetting modules"
 msgstr "モジュールの再設定中"
 
-#: dnf/cli/output.py:1230
+#: dnf/cli/output.py:1143
 msgid "Installing Environment Groups"
 msgstr "環境グループのインストール中"
 
-#: dnf/cli/output.py:1237
+#: dnf/cli/output.py:1150
 msgid "Upgrading Environment Groups"
 msgstr "環境グループのアップグレード中"
 
-#: dnf/cli/output.py:1244
+#: dnf/cli/output.py:1157
 msgid "Removing Environment Groups"
 msgstr "環境グループの削除中"
 
-#: dnf/cli/output.py:1251
+#: dnf/cli/output.py:1164
 msgid "Installing Groups"
 msgstr "グループのインストール中"
 
-#: dnf/cli/output.py:1258
+#: dnf/cli/output.py:1171
 msgid "Upgrading Groups"
 msgstr "グループのアップグレード中"
 
-#: dnf/cli/output.py:1265
+#: dnf/cli/output.py:1178
 msgid "Removing Groups"
 msgstr "グループの削除中"
 
-#: dnf/cli/output.py:1281
+#: dnf/cli/output.py:1194
 #, python-format
 msgid ""
 "Skipping packages with conflicts:\n"
@@ -3110,12 +3214,12 @@ msgstr ""
 "競合するパッケージをスキップします:\n"
 "(アップグレードを強制するにはコマンドラインに '%s' を追加します)"
 
-#: dnf/cli/output.py:1291
+#: dnf/cli/output.py:1204
 #, python-format
 msgid "Skipping packages with broken dependencies%s"
 msgstr "壊れた dependencies%s のパッケージをスキップします"
 
-#: dnf/cli/output.py:1295
+#: dnf/cli/output.py:1208
 msgid " or part of a group"
 msgstr " またはグループの一部"
 
@@ -3123,22 +3227,22 @@ msgstr " またはグループの一部"
 #. use the full (unabbreviated) term 'Package' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:1320
+#: dnf/cli/output.py:1233
 msgctxt "short"
 msgid "Package"
 msgstr "パッケージ"
 
 #. Translators: This is the full (unabbreviated) term 'Package'.
-#: dnf/cli/output.py:1322
+#: dnf/cli/output.py:1235
 msgctxt "long"
 msgid "Package"
 msgstr "パッケージ"
 
-#: dnf/cli/output.py:1371
+#: dnf/cli/output.py:1284
 msgid "replacing"
 msgstr "置き換え"
 
-#: dnf/cli/output.py:1378
+#: dnf/cli/output.py:1291
 #, python-format
 msgid ""
 "\n"
@@ -3150,287 +3254,271 @@ msgstr ""
 "%s\n"
 
 #. TODO: remove
-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933
+#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815
 msgid "Install"
 msgstr "インストール"
 
-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941
+#: dnf/cli/output.py:1300 dnf/cli/output.py:1823
 msgid "Upgrade"
 msgstr "アップグレード"
 
-#: dnf/cli/output.py:1388
+#: dnf/cli/output.py:1301
 msgid "Remove"
 msgstr "削除"
 
-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939
+#: dnf/cli/output.py:1303 dnf/cli/output.py:1821
 msgid "Downgrade"
 msgstr "ダウングレード"
 
-#: dnf/cli/output.py:1391
+#: dnf/cli/output.py:1304
 msgid "Skip"
 msgstr "スキップ"
 
-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416
+#: dnf/cli/output.py:1313 dnf/cli/output.py:1329
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "パッケージ"
 
-#: dnf/cli/output.py:1418
+#: dnf/cli/output.py:1331
 msgid "Dependent package"
 msgid_plural "Dependent packages"
 msgstr[0] "依存パッケージ"
 
-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942
-msgid "Upgraded"
-msgstr "アップグレード済み"
-
-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940
-msgid "Downgraded"
-msgstr "ダウングレード済み"
-
-#: dnf/cli/output.py:1503
-msgid "Reinstalled"
-msgstr "再インストール済み"
-
-#: dnf/cli/output.py:1504
-msgid "Skipped"
-msgstr "スキップ済み"
-
-#: dnf/cli/output.py:1505
-msgid "Removed"
-msgstr "削除しました"
-
-#: dnf/cli/output.py:1508
-msgid "Failed"
-msgstr "失敗しました"
-
-#: dnf/cli/output.py:1559
+#: dnf/cli/output.py:1439
 msgid "Total"
 msgstr "合計"
 
-#: dnf/cli/output.py:1587
+#: dnf/cli/output.py:1467
 msgid "<unset>"
 msgstr "<未設定>"
 
-#: dnf/cli/output.py:1588
+#: dnf/cli/output.py:1468
 msgid "System"
 msgstr "システム"
 
-#: dnf/cli/output.py:1638
+#: dnf/cli/output.py:1518
 msgid "Command line"
 msgstr "コマンドライン"
 
 #. TRANSLATORS: user names who executed transaction in history command output
-#: dnf/cli/output.py:1649
+#: dnf/cli/output.py:1531
 msgid "User name"
 msgstr "ユーザー名"
 
-#: dnf/cli/output.py:1651
+#: dnf/cli/output.py:1533
 msgid "ID"
 msgstr "ID"
 
-#: dnf/cli/output.py:1653
+#: dnf/cli/output.py:1535
 msgid "Date and time"
 msgstr "日時"
 
-#: dnf/cli/output.py:1654
+#: dnf/cli/output.py:1536
 msgid "Action(s)"
 msgstr "動作"
 
-#: dnf/cli/output.py:1655
+#: dnf/cli/output.py:1537
 msgid "Altered"
 msgstr "変更されました"
 
-#: dnf/cli/output.py:1698
+#: dnf/cli/output.py:1580
 msgid "No transactions"
 msgstr "トランザクションがありません"
 
-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715
+#: dnf/cli/output.py:1581 dnf/cli/output.py:1597
 msgid "Failed history info"
 msgstr "失敗した履歴情報"
 
-#: dnf/cli/output.py:1714
+#: dnf/cli/output.py:1596
 msgid "No transaction ID, or package, given"
 msgstr "トランザクション ID、またはパッケージが指定されていません"
 
-#: dnf/cli/output.py:1772
+#: dnf/cli/output.py:1654
 msgid "Erased"
 msgstr "削除されました"
 
-#: dnf/cli/output.py:1774
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616
+msgid "Downgraded"
+msgstr "ダウングレード済み"
+
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615
+msgid "Upgraded"
+msgstr "アップグレード済み"
+
+#: dnf/cli/output.py:1656
 msgid "Not installed"
 msgstr "インストールされていません"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Newer"
 msgstr "新しい"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Older"
 msgstr "古い"
 
-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825
+#: dnf/cli/output.py:1705 dnf/cli/output.py:1707
 msgid "Transaction ID :"
 msgstr "トランザクション ID :"
 
-#: dnf/cli/output.py:1828
+#: dnf/cli/output.py:1710
 msgid "Begin time     :"
 msgstr "開始時間            :"
 
-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833
+#: dnf/cli/output.py:1713 dnf/cli/output.py:1715
 msgid "Begin rpmdb    :"
 msgstr "開始 rpmdb          :"
 
-#: dnf/cli/output.py:1839
+#: dnf/cli/output.py:1721
 #, python-format
 msgid "(%u seconds)"
 msgstr "(%u 秒)"
 
-#: dnf/cli/output.py:1841
+#: dnf/cli/output.py:1723
 #, python-format
 msgid "(%u minutes)"
 msgstr "(%u 分)"
 
-#: dnf/cli/output.py:1843
+#: dnf/cli/output.py:1725
 #, python-format
 msgid "(%u hours)"
 msgstr "(%u 時間)"
 
-#: dnf/cli/output.py:1845
+#: dnf/cli/output.py:1727
 #, python-format
 msgid "(%u days)"
 msgstr "(%u 日)"
 
-#: dnf/cli/output.py:1846
+#: dnf/cli/output.py:1728
 msgid "End time       :"
 msgstr "終了時間            :"
 
-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851
+#: dnf/cli/output.py:1731 dnf/cli/output.py:1733
 msgid "End rpmdb      :"
 msgstr "終了 rpmdb          :"
 
-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860
+#: dnf/cli/output.py:1740 dnf/cli/output.py:1742
 msgid "User           :"
 msgstr "ユーザー            :"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1753
 msgid "Aborted"
 msgstr "中断しました"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869
-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751
+#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757
 msgid "Return-Code    :"
 msgstr "終了コード          :"
 
-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1749 dnf/cli/output.py:1757
 msgid "Success"
 msgstr "成功"
 
-#: dnf/cli/output.py:1869
+#: dnf/cli/output.py:1751
 msgid "Failures:"
 msgstr "失敗:"
 
-#: dnf/cli/output.py:1873
+#: dnf/cli/output.py:1755
 msgid "Failure:"
 msgstr "失敗しました:"
 
-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885
+#: dnf/cli/output.py:1765 dnf/cli/output.py:1767
 msgid "Releasever     :"
 msgstr "Releasever     :"
 
-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892
+#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
 msgid "Command Line   :"
 msgstr "コマンドライン      :"
 
-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899
+#: dnf/cli/output.py:1779 dnf/cli/output.py:1781
 msgid "Comment        :"
 msgstr "コメント        :"
 
-#: dnf/cli/output.py:1903
+#: dnf/cli/output.py:1785
 msgid "Transaction performed with:"
 msgstr "実行されたトランザクション:"
 
-#: dnf/cli/output.py:1912
+#: dnf/cli/output.py:1794
 msgid "Packages Altered:"
 msgstr "変更されたパッケージ:"
 
-#: dnf/cli/output.py:1918
+#: dnf/cli/output.py:1800
 msgid "Scriptlet output:"
 msgstr "Scriptlet の出力:"
 
-#: dnf/cli/output.py:1925
+#: dnf/cli/output.py:1807
 msgid "Errors:"
 msgstr "エラー:"
 
-#: dnf/cli/output.py:1934
+#: dnf/cli/output.py:1816
 msgid "Dep-Install"
 msgstr "Dep-Install"
 
-#: dnf/cli/output.py:1935
+#: dnf/cli/output.py:1817
 msgid "Obsoleted"
 msgstr "廃止された"
 
-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85
+#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85
 msgid "Obsoleting"
 msgstr "廃止"
 
-#: dnf/cli/output.py:1937
+#: dnf/cli/output.py:1819
 msgid "Erase"
 msgstr "削除"
 
-#: dnf/cli/output.py:1938
+#: dnf/cli/output.py:1820
 msgid "Reinstall"
 msgstr "再インストール"
 
-#: dnf/cli/output.py:2016
+#: dnf/cli/output.py:1894
 #, python-format
 msgid "---> Package %s.%s %s will be installed"
 msgstr "---> パッケージ %s.%s %s はインストールされます"
 
-#: dnf/cli/output.py:2018
+#: dnf/cli/output.py:1896
 #, python-format
 msgid "---> Package %s.%s %s will be an upgrade"
 msgstr "---> パッケージ %s.%s %s はアップグレードされます"
 
-#: dnf/cli/output.py:2020
+#: dnf/cli/output.py:1898
 #, python-format
 msgid "---> Package %s.%s %s will be erased"
 msgstr "---> パッケージ %s.%s %s は消去されます"
 
-#: dnf/cli/output.py:2022
+#: dnf/cli/output.py:1900
 #, python-format
 msgid "---> Package %s.%s %s will be reinstalled"
 msgstr "---> パッケージ %s.%s %s は再インストールされます"
 
-#: dnf/cli/output.py:2024
+#: dnf/cli/output.py:1902
 #, python-format
 msgid "---> Package %s.%s %s will be a downgrade"
 msgstr "---> パッケージ %s.%s %s はダウングレードされます"
 
-#: dnf/cli/output.py:2026
+#: dnf/cli/output.py:1904
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleting"
 msgstr "---> パッケージ %s.%s %s は廃止となります"
 
-#: dnf/cli/output.py:2028
+#: dnf/cli/output.py:1906
 #, python-format
 msgid "---> Package %s.%s %s will be upgraded"
 msgstr "---> パッケージ %s.%s %s はアップグレードされます"
 
-#: dnf/cli/output.py:2030
+#: dnf/cli/output.py:1908
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleted"
 msgstr "---> パッケージ %s.%s %s は廃止されます"
 
-#: dnf/cli/output.py:2039
+#: dnf/cli/output.py:1917
 msgid "--> Starting dependency resolution"
 msgstr "--> 依存関係の解決を開始しました"
 
-#: dnf/cli/output.py:2044
+#: dnf/cli/output.py:1921
 msgid "--> Finished dependency resolution"
 msgstr "--> 依存関係の解決が完了しました"
 
-#: dnf/cli/output.py:2058 dnf/crypto.py:132
+#: dnf/cli/output.py:1935 dnf/crypto.py:132
 #, python-format
 msgid ""
 "Importing GPG key 0x%s:\n"
@@ -3492,10 +3580,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."
@@ -3512,16 +3596,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:443 dnf/transaction_sr.py:453
-#, fuzzy, python-format
-#| msgid "Environment '%s' is not installed."
+#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487
+#, python-format
 msgid "Environment id '%s' is not installed."
-msgstr "環境 '%s' はインストールされていません。"
+msgstr "環境 id '%s' はインストールされていません。"
 
 #: dnf/comps.py:639
 #, python-format
@@ -3534,16 +3616,20 @@ 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
 msgid "Error parsing '%s': %s"
 msgstr "'%s' の解析中にエラーが発生しました: %s"
 
+#: dnf/conf/config.py:151
+#, python-format
+msgid "Invalid configuration value: %s=%s in %s; %s"
+msgstr "正しくない設定値: %s=%s in %s; %s"
+
 #: dnf/conf/config.py:226
 msgid "Could not set cachedir: {}"
 msgstr "cachedir を設定できませんでした: {}"
@@ -3585,36 +3671,36 @@ msgstr "鍵 '%s.%s'、値 '%s' の --setopt を解析中にエラーが発生し
 msgid "Repo %s did not have a %s attr. before setopt"
 msgstr "repo %s には setopt の前に %s attr. がありませんでした"
 
-#: dnf/conf/read.py:51
+#: dnf/conf/read.py:60
 #, python-format
 msgid "Warning: failed loading '%s', skipping."
-msgstr "警告:  '%s' のロードに失敗、スキップします。"
+msgstr "警告: '%s' のロードに失敗、スキップします。"
 
-#: dnf/conf/read.py:63
+#: dnf/conf/read.py:72
 msgid "Bad id for repo: {} ({}), byte = {} {}"
 msgstr "repo: {} ({}) に正しくないid、 byte = {} {}"
 
-#: dnf/conf/read.py:67
+#: dnf/conf/read.py:76
 msgid "Bad id for repo: {}, byte = {} {}"
 msgstr "repo: {} に正しくないid、byte = {} {}"
 
-#: dnf/conf/read.py:75
+#: dnf/conf/read.py:84
 msgid "Repository '{}' ({}): Error parsing config: {}"
 msgstr "レポジトリ '{}' ({}): 設定変更エラー: {}"
 
-#: dnf/conf/read.py:78
+#: dnf/conf/read.py:87
 msgid "Repository '{}': Error parsing config: {}"
 msgstr "レポジトリ '{}': 設定変更エラー: {}"
 
-#: dnf/conf/read.py:84
+#: dnf/conf/read.py:93
 msgid "Repository '{}' ({}) is missing name in configuration, using id."
 msgstr "レポジトリ '{}' ({}) はidを使用した設定内に見つかりません。"
 
-#: dnf/conf/read.py:87
+#: dnf/conf/read.py:96
 msgid "Repository '{}' is missing name in configuration, using id."
 msgstr "レポジトリ '{}' idを使用した設定内に見つかりません。"
 
-#: dnf/conf/read.py:104
+#: dnf/conf/read.py:113
 msgid "Parsing file \"{}\" failed: {}"
 msgstr "ファイル \"{}\" の解析に失敗しました: {}"
 
@@ -3626,27 +3712,43 @@ 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/db/group.py:293
+#: dnf/crypto.py:145
+msgid "Verified using DNS record with DNSSEC signature."
+msgstr "DNSSEC 署名付きの DNS レコードを使用して検証しました。"
+
+#: dnf/crypto.py:147
+msgid "NOT verified using DNS record."
+msgstr "DNS レコードを使用して検証されませんでした。"
+
+#: dnf/crypto.py:184
+#, python-format
+msgid "retrieving repo key for %s unencrypted from %s"
+msgstr "%s から暗号化されていない %s の repo キーを取得しています"
+
+#: dnf/db/group.py:301
 msgid ""
 "No available modular metadata for modular package '{}', it cannot be "
 "installed on the system"
-msgstr "モジュラーパッケージ '{}' のモジュラーメタデータは利用不可です、システムにインストールはできません"
+msgstr ""
+"モジュラーパッケージ '{}' のモジュラーメタデータは利用不可です、システムにイ"
+"ンストールはできません"
 
-#: dnf/db/group.py:343
+#: dnf/db/group.py:351
 msgid "No available modular metadata for modular package"
 msgstr "モジュラーパッケージ のモジュラーメタデータは利用不可です"
 
-#: dnf/db/group.py:377
+#: dnf/db/group.py:385
 #, python-format
 msgid "Will not install a source rpm package (%s)."
 msgstr "ソース rpm パッケージ (%s) をインストールしません。"
 
 #: dnf/dnssec.py:168
 msgid ""
-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})"
-msgstr "設定オプション 'gpgkey_dns_verification' は libunbound ({}) が必要です"
+"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
+msgstr ""
+"設定オプション 'gpgkey_dns_verification' は python3-unbound ({}) が必要です"
 
 #: dnf/dnssec.py:239
 msgid "DNSSEC extension: Key for user "
@@ -3668,7 +3770,7 @@ msgstr "DNSSEC 拡張: "
 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"
@@ -3710,7 +3812,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:686
+#: dnf/exceptions.py:131 dnf/module/module_base.py:854
 msgid "Modular dependency problem:"
 msgid_plural "Modular dependency problems:"
 msgstr[0] "モジュラーの依存に関する問題:"
@@ -3719,10 +3821,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 '{}'."
@@ -3734,7 +3838,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: {}."
@@ -3742,9 +3847,51 @@ msgstr "有効なモジュール: {}."
 
 #: dnf/module/__init__.py:30
 msgid "No profile specified for '{}', please specify profile."
-msgstr "'{}' に指定したプロファイルはありません。プロファイルを指定してください。"
+msgstr ""
+"'{}' に指定したプロファイルはありません。プロファイルを指定してください。"
 
-#: dnf/module/module_base.py:33
+#: dnf/module/exceptions.py:27
+msgid "No such module: {}"
+msgstr "次のようなモジュールはありません: {}"
+
+#: dnf/module/exceptions.py:33
+msgid "No such stream: {}"
+msgstr "次のようなストリームはありません: {}"
+
+#: dnf/module/exceptions.py:39
+msgid "No enabled stream for module: {}"
+msgstr "次のモジュールに有効化されたストリームはありません: {}"
+
+#: dnf/module/exceptions.py:46
+msgid "Cannot enable more streams from module '{}' at the same time"
+msgstr "モジュール '{}' から、さらにストリームを同時に有効にできません"
+
+#: dnf/module/exceptions.py:52
+msgid "Different stream enabled for module: {}"
+msgstr "次のモジュールに有効化された異なるストリーム: {}"
+
+#: dnf/module/exceptions.py:58
+msgid "No such profile: {}"
+msgstr "次ようなプロファイルはありません: {}"
+
+#: dnf/module/exceptions.py:64
+msgid "Specified profile not installed for {}"
+msgstr "指定のプロファイルは次にインストールされていません: {}"
+
+#: dnf/module/exceptions.py:70
+msgid "No stream specified for '{}', please specify stream"
+msgstr "'{}' に指定したストリームはありません。ストリームを指定してください"
+
+#: dnf/module/exceptions.py:82
+msgid "No such profile: {}. No profiles available"
+msgstr ""
+"次のようなプロファイルはありません: {}。利用できるプロファイルはありません"
+
+#: dnf/module/exceptions.py:88
+msgid "No profile to remove for '{}'"
+msgstr "'{}' の削除するプロファイルがありません"
+
+#: dnf/module/module_base.py:35
 msgid ""
 "\n"
 "\n"
@@ -3754,7 +3901,7 @@ msgstr ""
 "\n"
 "ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled"
 
-#: dnf/module/module_base.py:34
+#: dnf/module/module_base.py:36
 msgid ""
 "\n"
 "\n"
@@ -3764,80 +3911,110 @@ msgstr ""
 "\n"
 "ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive"
 
-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421
-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543
+#: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
 msgid "Ignoring unnecessary profile: '{}/{}'"
 msgstr "不要なプロファイルを無視します: '{}/{}'"
 
-#: dnf/module/module_base.py:84
+#: 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:92
+#: 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:102
+#: 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:106
+#: dnf/module/module_base.py:108 dnf/module/module_base.py:218
 msgid "Unable to match profile for argument {}"
 msgstr "引数 {} でプロファイルが見つかりません"
 
-#: dnf/module/module_base.py:118
+#: dnf/module/module_base.py:120
 msgid "No default profiles for module {}:{}. Available profiles: {}"
-msgstr "モジュール {}:{} にデフォルトのプロファイルがありません。利用可能プロファイル: {}"
+msgstr ""
+"モジュール {}:{} にデフォルトのプロファイルがありません。利用可能プロファイ"
+"ル: {}"
 
-#: dnf/module/module_base.py:122
+#: dnf/module/module_base.py:124
 msgid "No profiles for module {}:{}"
 msgstr "モジュール {}:{} にプロファイルがありません"
 
-#: dnf/module/module_base.py:129
+#: dnf/module/module_base.py:131
 msgid "Default profile {} not available in module {}:{}"
 msgstr "デフォルトのプロファイル {} はモジュール {}:{} で利用不可です"
 
-#: dnf/module/module_base.py:142
+#: 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:159 dnf/module/module_base.py:193
-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355
-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417
-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539
+#: dnf/module/module_base.py:196
+#, python-brace-format
+msgid "No active matches for argument '{0}' in module '{1}:{2}'"
+msgstr "モジュール '{1}:{2}' の引数 '{0}' には、アクティブな一致がありません"
+
+#: dnf/module/module_base.py:228
+#, python-brace-format
+msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'"
+msgstr ""
+"インストールされたプロファイル '{0}' は、モジュール '{1}' ストリーム '{2}' で"
+"は利用できません"
+
+#: dnf/module/module_base.py:267
+msgid "No packages available to distrosync for package name '{}'"
+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
 msgid "Unable to resolve argument {}"
 msgstr "引数 {} を解決できません"
 
-#: dnf/module/module_base.py:160
-msgid "No match for package {}"
-msgstr "パッケージ {} に一致するものはありません"
-
-#: dnf/module/module_base.py:204
+#: 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:223 dnf/module/module_base.py:251
+#: dnf/module/module_base.py:340 dnf/module/module_base.py:368
 msgid "Unable to match profile in argument {}"
 msgstr "引数 {} でプロファイルを一致できません"
 
-#: dnf/module/module_base.py:231
+#: dnf/module/module_base.py:348
 msgid "Upgrading module from Fail-Safe repository is not allowed"
-msgstr "フェイルセーフレポジトリーからのモジュールアップグレードは許可されていません"
+msgstr ""
+"フェイルセーフレポジトリーからのモジュールアップグレードは許可されていません"
 
-#: dnf/module/module_base.py:367
+#: dnf/module/module_base.py:422
+#, python-brace-format
 msgid ""
-"Only module name is required. Ignoring unneeded information in argument: "
-"'{}'"
+"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: '{}'"
 msgstr "モジュール名のみが必要です。引数で不必要な情報を無視します: '{}'"
 
-#: dnf/package.py:298
-#, python-format
-msgid "%s: %s check failed: %s vs %s"
-msgstr "%s: %s の確認に失敗しました: %s vs %s"
+#: dnf/module/module_base.py:841
+msgid "No match for package {}"
+msgstr "パッケージ {} に一致するものはありません"
 
 #. empty file is invalid json format
 #: dnf/persistor.py:54
@@ -3848,12 +4025,12 @@ msgstr "%s は空のファイルです"
 #: dnf/persistor.py:91
 #, python-format
 msgid "Failed to load expired repos cache: %s"
-msgstr ""
+msgstr "期限切れのリポジトリーキャッシュのロードに失敗しました: %s"
 
 #: dnf/persistor.py:99
 #, python-format
 msgid "Failed to store expired repos cache: %s"
-msgstr ""
+msgstr "期限切れのリポジトリーキャッシュの保存に失敗しました: %s"
 
 #: dnf/persistor.py:106
 msgid "Failed storing last makecache time."
@@ -3873,16 +4050,16 @@ msgstr "ファイルの解析に失敗しました: %s"
 msgid "Loaded plugins: %s"
 msgstr "ロードされたプラグイン: %s"
 
-#: dnf/plugin.py:199
+#: dnf/plugin.py:211
 #, python-format
 msgid "Failed loading plugin \"%s\": %s"
 msgstr "plugin \"%s\" のロードに失敗しました: %s"
 
-#: dnf/plugin.py:231
+#: dnf/plugin.py:243
 msgid "No matches found for the following enable plugin patterns: {}"
 msgstr "以下有効プラグインパターンが見つかりません: {}"
 
-#: dnf/plugin.py:235
+#: dnf/plugin.py:247
 msgid "No matches found for the following disable plugin patterns: {}"
 msgstr "以下無効プラグインパターンが見つかりません: {}"
 
@@ -3896,7 +4073,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).. "
@@ -3911,10 +4088,27 @@ msgstr "%s リポジトリーの有効化"
 msgid "Added %s repo from %s"
 msgstr "%s から %s repo を追加しました"
 
+#: dnf/rpm/miscutils.py:32
+#, python-format
+msgid "Using rpmkeys executable at %s to verify signatures"
+msgstr "%s で rpmkeys 実行可能ファイルを使用して、署名を検証します"
+
+#: dnf/rpm/miscutils.py:66
+msgid "Cannot find rpmkeys executable to verify signatures."
+msgstr "署名を検証する rpmkeys 実行ファイルが見つかりません。"
+
 #: dnf/rpm/transaction.py:119
 msgid "Errors occurred during test transaction."
 msgstr "テストトランザクション中にエラーが発生しました。"
 
+#: dnf/sack.py:47
+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
 msgctxt "currently"
@@ -3961,168 +4155,231 @@ msgstr "scriptletの実行中"
 msgid "Preparing"
 msgstr "準備"
 
-#: dnf/transaction_sr.py:60
+#: dnf/transaction_sr.py:66
 #, python-brace-format
-msgid "Errors in \"{filename}\":"
+msgid ""
+"The following problems occurred while replaying the transaction from file "
+"\"{filename}\":"
 msgstr ""
+"ファイル \"{filename}\" からのトランザクションの再生中に以下の問題が発生しま"
+"した:"
 
-#: dnf/transaction_sr.py:70
-#, python-brace-format
-msgid "Error in \"{filename}\": {error}"
-msgstr ""
+#: dnf/transaction_sr.py:68
+msgid "The following problems occurred while running a transaction:"
+msgstr "トランザクションの実行中に以下の問題が発生しました:"
 
-#: dnf/transaction_sr.py:87
+#: dnf/transaction_sr.py:89
 #, python-brace-format
 msgid "Invalid major version \"{major}\", number expected."
-msgstr ""
+msgstr "無効なメジャーバージョン \"{major}\"。数字が必要です。"
 
-#: dnf/transaction_sr.py:95
+#: dnf/transaction_sr.py:97
 #, python-brace-format
 msgid "Invalid minor version \"{minor}\", number expected."
-msgstr ""
+msgstr "無効なマイナーバージョン \"{minor}\"。数字が必要です。"
 
-#: dnf/transaction_sr.py:101
+#: dnf/transaction_sr.py:103
 #, python-brace-format
 msgid ""
 "Incompatible major version \"{major}\", supported major version is "
 "\"{major_supp}\"."
 msgstr ""
+"互換性のないメジャーバージョン \"{major}\"。サポートされているメジャーバー"
+"ジョンは \"{major_supp}\" です。"
 
-#: dnf/transaction_sr.py:244
+#: dnf/transaction_sr.py:224
+msgid ""
+"Conflicting TransactionReplay arguments have been specified: filename, data"
+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:250
+#: dnf/transaction_sr.py:271
 #, python-brace-format
 msgid "Missing key \"{key}\"."
-msgstr ""
+msgstr "\"{key}\" キーがありません。"
 
-#: dnf/transaction_sr.py:263
+#: dnf/transaction_sr.py:285
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an rpm."
-msgstr ""
+msgstr "オブジェクトキー \"{key}\" が rpm にありません。"
 
-#: dnf/transaction_sr.py:267
+#: 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:275
+#: dnf/transaction_sr.py:297
 #, python-brace-format
 msgid "Cannot parse NEVRA for package \"{nevra}\"."
-msgstr ""
+msgstr "パッケージ \"{nevra}\" の NEVRA を解析できません。"
 
-#: dnf/transaction_sr.py:286
+#: dnf/transaction_sr.py:321
 #, python-brace-format
 msgid "Cannot find rpm nevra \"{nevra}\"."
-msgstr ""
+msgstr "rpm nevra \"{nevra}\" を見つけることはできません。"
 
-#: dnf/transaction_sr.py:301
-#, fuzzy, python-brace-format
-#| msgid "Package %s is already installed."
+#: dnf/transaction_sr.py:336
+#, python-brace-format
 msgid "Package \"{na}\" is already installed for action \"{action}\"."
-msgstr "パッケージ %s は既にインストールされています。"
+msgstr ""
+"パッケージ \"{na}\" は、アクション \"{action}\" 用に既にインストールされてい"
+"ます。"
 
-#: dnf/transaction_sr.py:311
+#: dnf/transaction_sr.py:345
 #, python-brace-format
 msgid ""
 "Package nevra \"{nevra}\" not available in repositories for action "
 "\"{action}\"."
 msgstr ""
+"アクション \"{action}\" に利用できる パッケージ nevra \"{nevra}\" はレポジト"
+"リーにありません。"
 
-#: dnf/transaction_sr.py:322
+#: 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:336
+#: 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:343
-#, fuzzy, python-format
-#| msgid "Module or Group '%s' is not available."
+#: dnf/transaction_sr.py:377
+#, python-format
 msgid "Group id '%s' is not available."
-msgstr "モジュールまたはグループ '%s' は利用不可です。"
+msgstr "グループ id '%s' は利用できません。"
 
-#: dnf/transaction_sr.py:364
+#: 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:377 dnf/transaction_sr.py:387
-#, fuzzy, python-format
-#| msgid "Module or Group '%s' is not installed."
+#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421
+#, python-format
 msgid "Group id '%s' is not installed."
-msgstr "モジュールまたはグループ '%s' がインストールされていません。"
+msgstr "グループ id '%s' がインストールされていません。"
 
-#: dnf/transaction_sr.py:398
-#, fuzzy, python-format
-#| msgid "Environment '%s' is not available."
+#: dnf/transaction_sr.py:432
+#, python-format
 msgid "Environment id '%s' is not available."
-msgstr "環境 '%s' は利用不可です。"
+msgstr "環境 id '%s' は利用できません。"
 
-#: dnf/transaction_sr.py:422
+#: dnf/transaction_sr.py:456
 #, python-brace-format
 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:430
+#: 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:508
+#: 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:513
+#: dnf/transaction_sr.py:547
 #, python-brace-format
 msgid "Missing object key \"{key}\" in a group."
-msgstr ""
+msgstr "オブジェクトキー \"{key}\" がグループ内にありません。"
 
-#: dnf/transaction_sr.py:537
+#: 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:542
+#: dnf/transaction_sr.py:576
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an environment."
-msgstr ""
+msgstr "オブジェクトキー \"{key}\" が環境にありません。"
 
-#: dnf/transaction_sr.py:581
+#: 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-
 # api/resources/org/jbpm/designer/resources/i18n/DesignerConstants, author
 # nmirasch
-#: dnf/util.py:391 dnf/util.py:393
+#: dnf/util.py:419 dnf/util.py:421
 msgid "Problem"
 msgstr "問題"
 
-#: dnf/util.py:444
+#: dnf/util.py:472
 msgid "TransactionItem not found for key: {}"
 msgstr "TransactionItemが見つかりません鍵: {}"
 
-#: dnf/util.py:454
+#: dnf/util.py:482
 msgid "TransactionSWDBItem not found for key: {}"
 msgstr "TransactionSWDBItemが見つかりません鍵: {}"
 
-#: dnf/util.py:457
+#: dnf/util.py:485
 msgid "Errors occurred during transaction."
 msgstr "トランザクション中にエラーが発生しました。"
 
+#: dnf/util.py:621
+msgid "Reinstalled"
+msgstr "再インストール済み"
+
+#: dnf/util.py:622
+msgid "Skipped"
+msgstr "スキップ済み"
+
+#: dnf/util.py:623
+msgid "Removed"
+msgstr "削除しました"
+
+#: dnf/util.py:626
+msgid "Failed"
+msgstr "失敗しました"
+
+#~ 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"
+
+#~ msgid "Action not handled: {}"
+#~ msgstr "動作は対処されていません: {}"
+
+#~ msgid "no package matched"
+#~ msgstr "一致したパッケージはありません。"
+
+#~ msgid "Not found given transaction ID"
+#~ msgstr "指定されたトランザクション ID は見つかりません"
+
+#~ msgid "Undoing transaction {}, from {}"
+#~ msgstr "トランザクション {} を {} から取り消しています"
+
 #~ msgid "format for displaying found packages"
 #~ msgstr "見つかったパッケージを表示する形式"
 
@@ -4133,5 +4390,7 @@ msgstr "トランザクション中にエラーが発生しました。"
 #~ 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 449f6130..cf15d9cf 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,68 +1,70 @@
 # MinWoo Joh <igtzhsou@naver.com>, 2015. #zanata
 # 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: 2020-10-05 09:18-0400\n"
-"PO-Revision-Date: 2020-09-12 11:29+0000\n"
-"Last-Translator: Ludek Janda <ljanda@redhat.com>\n"
-"Language-Team: Korean <https://translate.fedoraproject.org/projects/dnf/dnf-master/ko/>\n"
+"POT-Creation-Date: 2022-02-28 11:24+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-8/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.2.2\n"
+"X-Generator: Weblate 4.11\n"
 
 #: dnf/automatic/emitter.py:32
 #, python-format
 msgid "The following updates have been applied on '%s':"
-msgstr "'%s'에 다음 업데이트가 적용되었습니다:"
+msgstr "다음 최신화가 '%s'에 적용되었습니다:"
 
 #: dnf/automatic/emitter.py:33
-#, fuzzy, python-format
-#| msgid "Updates applied on '%s'."
+#, python-format
 msgid "Updates completed at %s"
-msgstr "'%s'에 업데이트가 적용 되었습니다."
+msgstr "'%s'에 최신화가 적용 되었습니다"
 
 #: dnf/automatic/emitter.py:34
 #, python-format
 msgid "The following updates are available on '%s':"
-msgstr "'%s'에서 다음 업데이트를 사용할 수 있습니다:"
+msgstr "다음 최신화가 '%s'에서 사용 할 수 있습니다:"
 
 #: dnf/automatic/emitter.py:35
 #, python-format
 msgid "The following updates were downloaded on '%s':"
-msgstr "'%s'에 다음 업데이트가 다운로드되었습니다:"
+msgstr "'%s'에 다음 최신화가 내려받기 되었습니다:"
 
 #: dnf/automatic/emitter.py:83
 #, python-format
 msgid "Updates applied on '%s'."
-msgstr "'%s'에 업데이트가 적용되었습니다."
+msgstr "'%s'에서 적용되어 최신화되었습니다."
 
 #: dnf/automatic/emitter.py:85
 #, python-format
 msgid "Updates downloaded on '%s'."
-msgstr "'%s'에 업데이트가 다운로드되었습니다."
+msgstr "'%s'에 최신화가 내려받기 되었습니다."
 
 #: dnf/automatic/emitter.py:87
 #, python-format
 msgid "Updates available on '%s'."
-msgstr "'%s'에서 업데이트가 가능합니다."
+msgstr "'%s'에서 가능한 최신화입니다."
 
 #: dnf/automatic/emitter.py:110
 #, python-format
 msgid "Failed to send an email via '%s': %s"
-msgstr "'%s'를 통한 이메일 전송을 실패했습니다: %s"
+msgstr "'%s'를 통한 전자우편 전송을 실패했습니다: %s"
 
 #: dnf/automatic/emitter.py:140
 #, python-format
 msgid "Failed to execute command '%s': returned %d"
 msgstr "명령’%s'을 실행하지 못했습니다: %d를 반환했습니다"
 
-#: dnf/automatic/main.py:164 dnf/conf/config.py:151
+#: dnf/automatic/main.py:164
 #, python-format
 msgid "Unknown configuration value: %s=%s in %s; %s"
 msgstr "알 수없는 설정: %s=%s in %s; %s"
@@ -72,26 +74,26 @@ msgstr "알 수없는 설정: %s=%s in %s; %s"
 msgid "Unknown configuration option: %s = %s in %s"
 msgstr "알 수없는 옵션 : %s = %s in %s"
 
-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299
+#: dnf/automatic/main.py:237 dnf/cli/cli.py:305
 msgid "GPG check FAILED"
 msgstr "GPG 확인 실패"
 
 #: dnf/automatic/main.py:274
 msgid "Waiting for internet connection..."
-msgstr ""
+msgstr "인터넷 연결을 위한 대기..."
 
 #: dnf/automatic/main.py:304
 msgid "Started dnf-automatic."
 msgstr "dnf-automatic을 시작했습니다."
 
 #: dnf/automatic/main.py:308
-#, python-format
-msgid "Sleep for %s seconds"
-msgstr "%s 초 동안 절전합니다"
+msgid "Sleep for {} second"
+msgid_plural "Sleep for {} seconds"
+msgstr[0] "{} 초 동안 절전합니다"
 
 #: dnf/automatic/main.py:315
 msgid "System is off-line."
-msgstr ""
+msgstr "네트웍 끊김."
 
 #: dnf/automatic/main.py:344 dnf/cli/main.py:59 dnf/cli/main.py:80
 #: dnf/cli/main.py:83
@@ -99,442 +101,436 @@ msgstr ""
 msgid "Error: %s"
 msgstr "오류: %s"
 
-#: dnf/base.py:146
+#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479
 msgid "loading repo '{}' failure: {}"
-msgstr "repo '{}'의 로드에 실패했습니다 : {}"
+msgstr "repo '{}'의 적재에 실패했습니다 : {}"
 
-#: dnf/base.py:148
+#: dnf/base.py:150
 msgid "Loading repository '{}' has failed"
-msgstr "리포지토리 '{}'의 로드에 실패했습니다"
+msgstr "저장소 '{}'의 적재하기가 실패했습니다"
 
-#: dnf/base.py:320
+#: dnf/base.py:327
 msgid "Metadata timer caching disabled when running on metered connection."
-msgstr "데이터 통신 연결을 사용할 때 메타 데이터 타이머 캐싱을 비활성화합니다."
+msgstr ""
+"데이터 통신 연결을 사용 할 때에 메타 자료 타이머 캐싱을 비활성화합니다."
 
-#: dnf/base.py:325
+#: dnf/base.py:332
 msgid "Metadata timer caching disabled when running on a battery."
-msgstr "배터리를 사용할할 때 메타 데이터 타이머 캐싱을 비활성화합니다."
+msgstr "배터리에서 동작 할 때에 메타자료 타이머 캐싱을 비활성화합니다."
 
-#: dnf/base.py:330
+#: dnf/base.py:337
 msgid "Metadata timer caching disabled."
-msgstr "메타 데이터 타이머 캐싱이 비활성화되었습니다."
+msgstr "메타자료 타이머 캐싱이 비활성화되었습니다."
 
-#: dnf/base.py:335
+#: dnf/base.py:342
 msgid "Metadata cache refreshed recently."
-msgstr "최근에 메타 데이터 캐시가 새로 고쳐졌습니다."
+msgstr "최근에 메타 자료 캐쉬가 새로 고쳐졌습니다."
 
-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91
+#: dnf/base.py:348 dnf/cli/commands/__init__.py:91
 msgid "There are no enabled repositories in \"{}\"."
 msgstr "\"{}\"에 사용 가능한 저장소가 없습니다."
 
-#: dnf/base.py:348
+#: dnf/base.py:355
 #, python-format
 msgid "%s: will never be expired and will not be refreshed."
 msgstr "%s: 만료되지 않고 새로 고침되지 않습니다."
 
-#: dnf/base.py:350
+#: dnf/base.py:357
 #, python-format
 msgid "%s: has expired and will be refreshed."
 msgstr "%s: 만료되어 새로 고침됩니다."
 
 #. expires within the checking period:
-#: dnf/base.py:354
+#: dnf/base.py:361
 #, python-format
 msgid "%s: metadata will expire after %d seconds and will be refreshed now"
-msgstr "%s: 메타 데이터는 %d 초 이후에 만료되며 이제 새로 고침됩니다."
+msgstr "%s: 메타 데이터는 %d 초 이후에 만료되며 이제 새로 고침됩니다"
 
-#: dnf/base.py:358
+#: dnf/base.py:365
 #, python-format
 msgid "%s: will expire after %d seconds."
 msgstr "%s: %d 초 후에 만료됩니다."
 
 #. performs the md sync
-#: dnf/base.py:364
+#: dnf/base.py:371
 msgid "Metadata cache created."
-msgstr "메타 데이터 캐시가 생성되었습니다."
+msgstr "메타 자료 캐쉬가 생성되었습니다."
 
-#: dnf/base.py:397
+#: 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:409
+#: dnf/base.py:416 dnf/base.py:484
 #, python-format
 msgid "Ignoring repositories: %s"
-msgstr "리포지토리를 무시합니다: %s"
+msgstr "저장소를 무시합니다: %s"
 
-#: dnf/base.py:412
+#: dnf/base.py:419
 #, python-format
 msgid "Last metadata expiration check: %s ago on %s."
-msgstr "마지막 메타 데이터 만료 확인 :%s. %s 이전에 확인"
+msgstr "마지막 메타자료 만료확인 %s 이전인: %s."
 
-#: dnf/base.py:443
+#: dnf/base.py:512
 msgid ""
 "The downloaded packages were saved in cache until the next successful "
 "transaction."
-msgstr "다운로드된 패키지는 다음 번 성공적인 트랜잭션까지 캐시에 저장됩니다."
+msgstr "내려받기된 꾸러미는 다음 번 성공적인 연결까지 캐쉬에 저장됩니다."
 
-#: dnf/base.py:445
+#: dnf/base.py:514
 #, python-format
 msgid "You can remove cached packages by executing '%s'."
-msgstr "'%s'을/를 실행하여 캐시 패키지를 삭제할 수 있습니다."
+msgstr "'%s' 를 실행하여 캐쉬 꾸러미를 삭제 할 수 있습니다."
 
-#: dnf/base.py:535
+#: dnf/base.py:606
 #, python-format
 msgid "Invalid tsflag in config file: %s"
 msgstr "설정 파일에서 tsflag 사용이 잘못되었습니다: %s"
 
-#: dnf/base.py:591
+#: dnf/base.py:662
 #, python-format
 msgid "Failed to add groups file for repository: %s - %s"
 msgstr "리포지토리의 그룹 파일을 추가하지 못했습니다. %s - %s"
 
-#: dnf/base.py:823
+#: dnf/base.py:904
 msgid "Running transaction check"
-msgstr "트랜잭션 확인 실행 중"
+msgstr "연결 확인 실행 중"
 
-#: dnf/base.py:831
+#: dnf/base.py:912
 msgid "Error: transaction check vs depsolve:"
-msgstr "오류 : 트랜잭션 확인 및 종속성 해결 오류"
+msgstr "오류: 연결 확인 및 종속성 해결 오류:"
 
-#: dnf/base.py:837
+#: dnf/base.py:918
 msgid "Transaction check succeeded."
-msgstr "트랜잭션 확인에 성공했습니다."
+msgstr "연결 확인에 성공했습니다."
 
-#: dnf/base.py:840
+#: dnf/base.py:921
 msgid "Running transaction test"
-msgstr "트랜잭션 테스트 실행 중"
+msgstr "연결 시험 실행 중"
 
-#: dnf/base.py:850 dnf/base.py:992
+#: dnf/base.py:931 dnf/base.py:1082
 msgid "RPM: {}"
 msgstr "RPM: {}"
 
-#: dnf/base.py:851
+#: dnf/base.py:932
 msgid "Transaction test error:"
-msgstr "트랜잭션 테스트 오류:"
+msgstr "연결 시험 오류:"
 
-#: dnf/base.py:862
+#: dnf/base.py:943
 msgid "Transaction test succeeded."
-msgstr "트랜잭션 테스트에 성공했습니다."
+msgstr "연결 시험에 성공했습니다."
 
-#: dnf/base.py:883
+#: dnf/base.py:964
 msgid "Running transaction"
-msgstr "트랜잭션 실행 중"
+msgstr "연결 실행 중"
 
-#: dnf/base.py:911
+#: dnf/base.py:1001
 msgid "Disk Requirements:"
 msgstr "디스크 요구 사항 :"
 
-#: dnf/base.py:914
+#: dnf/base.py:1004
 #, 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:921
+#: dnf/base.py:1011
 msgid "Error Summary"
 msgstr "오류 요약"
 
-#: dnf/base.py:947
+#: dnf/base.py:1037
 #, python-brace-format
 msgid "RPMDB altered outside of {prog}."
 msgstr "RPMDB는 {prog} 외부에서 변경되었습니다."
 
-#: dnf/base.py:993 dnf/base.py:1001
+#: dnf/base.py:1083 dnf/base.py:1091
 msgid "Could not run transaction."
-msgstr "트랜잭션을 실행할 수 없습니다."
+msgstr "연결를 실행 할 수 없습니다."
 
-#: dnf/base.py:996
+#: dnf/base.py:1086
 msgid "Transaction couldn't start:"
-msgstr "트랜잭션을 시작할 수 없습니다 :"
+msgstr "연결을 시작 할 수 없습니다 :"
 
-#: dnf/base.py:1010
+#: dnf/base.py:1100
 #, python-format
 msgid "Failed to remove transaction file %s"
-msgstr "%s 트랜잭션 파일을 삭제하지 못했습니다"
+msgstr "%s 연결 파일을 삭제하지 못했습니다"
 
-#: dnf/base.py:1092
+#: dnf/base.py:1182
 msgid "Some packages were not downloaded. Retrying."
-msgstr "일부 패키지가 다운로드되지 않았습니다. 다시 시도 중입니다."
+msgstr "일부 꾸러미를 내려받지 못했습니다. 다시 시도합니다."
 
-#: dnf/base.py:1122
+#: dnf/base.py:1212
 #, python-format
 msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
-msgstr "Delta RPM이 %.1f MB의 업데이트를 %.1f MB로 줄였습니다. (%d.1 %% 절약됨)"
+msgstr "델타 RPM이 %.1f MB의 최신화를 %.1f MB로 줄였습니다. (%d.1%% 절약됨)"
 
-#: dnf/base.py:1125
+#: dnf/base.py:1215
 #, python-format
 msgid ""
 "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
-msgstr "Delta RPM은 %.1f MB의 업데이트를 %.1f MB로 줄이는데 실패했습니다. (%d.1 %% 손실됨)"
+msgstr ""
+"Delta RPM은 %.1f MB의 최신화를 %.1f MB로 줄이는데 실패했습니다. (%d.1 %% 손실"
+"됨)"
 
-#: dnf/base.py:1167
+#: dnf/base.py:1257
 msgid "Cannot add local packages, because transaction job already exists"
-msgstr "트랜잭션 작업이 이미 존재하므로 로컬 패키지를 추가할 수 없습니다"
+msgstr "연결 작업이 이미 존재하므로 로컬 꾸러미를 추가할 수 없습니다"
 
-#: dnf/base.py:1181
+#: dnf/base.py:1271
 msgid "Could not open: {}"
 msgstr "열 수 없음 : {}"
 
-#: dnf/base.py:1219
+#: dnf/base.py:1309
 #, python-format
 msgid "Public key for %s is not installed"
-msgstr "%s의 공개 키는 설치되어 있지 않습니다."
+msgstr "%s의 공개 키는 설치되어 있지 않습니다"
 
-#: dnf/base.py:1223
+#: dnf/base.py:1313
 #, python-format
 msgid "Problem opening package %s"
-msgstr "%s 패키지를 여는 중에 문제가 발생했습니다"
+msgstr "%s 꾸러미를 여는 중에 문제가 발생했습니다"
 
-#: dnf/base.py:1231
+#: dnf/base.py:1321
 #, python-format
 msgid "Public key for %s is not trusted"
-msgstr "%s의 공개 키는 신뢰할 수 없습니다"
+msgstr "%s의 공개 키는 신뢰 할 수 없습니다"
 
-#: dnf/base.py:1235
+#: dnf/base.py:1325
 #, python-format
 msgid "Package %s is not signed"
-msgstr "%s 패키지가 서명되지 않았습니다"
+msgstr "%s 꾸러미가 서명되지 않았습니다"
 
-#: dnf/base.py:1265
+#: dnf/base.py:1355
 #, python-format
 msgid "Cannot remove %s"
-msgstr "%s을/를 삭제할 수 없습니다."
+msgstr "%s를 삭제 할 수 없습니다"
 
-#: dnf/base.py:1269
+#: dnf/base.py:1359
 #, python-format
 msgid "%s removed"
 msgstr "%s가 삭제되었습니다"
 
-#: dnf/base.py:1549
+#: dnf/base.py:1639
 msgid "No match for group package \"{}\""
-msgstr "그룹 패키지 \"{}\"에 일치하는 항목이 없습니다"
+msgstr "그룹 꾸러미 \"{}\"에 일치하는 항목이 없습니다"
 
-#: dnf/base.py:1635
+#: dnf/base.py:1721
 #, python-format
 msgid "Adding packages from group '%s': %s"
-msgstr "'%s' 그룹에서 패키지 추가: %s"
+msgstr "'%s' 그룹에서 꾸러미 추가: %s"
 
-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442
-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592
-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80
+#: dnf/base.py:1744 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 "처리가 필요하지 않습니다"
+msgstr "처리가 필요하지 않습니다."
 
-#: dnf/base.py:1676
+#: dnf/base.py:1762
 msgid "No groups marked for removal."
-msgstr "제거할 패키지 그룹이 없습니다"
+msgstr "제거할 꾸러미 그룹이 없습니다."
 
-#: dnf/base.py:1710
+#: dnf/base.py:1796
 msgid "No group marked for upgrade."
-msgstr "업그레이드용으로 표시된 그룹이 없습니다."
+msgstr "향상을 위해 표시된 그룹이 없습니다."
 
-#: dnf/base.py:1925
+#: dnf/base.py:2010
 #, python-format
 msgid "Package %s not installed, cannot downgrade it."
-msgstr "%s 패키지가 설치되어 있지 않기 때문에 다운 그레이드할 수 없습니다."
+msgstr "%s 꾸러미가 설치되어 있지 않기 때문에 하향설치 할 수 없습니다."
 
-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980
-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411
-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482
-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633
-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147
+#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071
+#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 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
 #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84
-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121
+#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116
 #, python-format
 msgid "No match for argument: %s"
-msgstr "일치하는 인수가 없습니다 : %s"
+msgstr "인수가 일치하지 않습니다: %s"
 
-#: dnf/base.py:1934
+#: dnf/base.py:2019
 #, python-format
 msgid "Package %s of lower version already installed, cannot downgrade it."
-msgstr "%s 패키지의 하위 버전이 이미 설치되어 있으므로 다운 그레이드할 수 없습니다."
+msgstr ""
+"%s 꾸러미의 하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다."
 
-#: dnf/base.py:1957
+#: dnf/base.py:2042
 #, python-format
 msgid "Package %s not installed, cannot reinstall it."
-msgstr "%s 패키지가 설치되어 있지 않기 때문에 다시 설치할 수 없습니다."
+msgstr "꾸러미 %s가 설치되지 않아서, 다시 설치 할 수 없습니다."
 
-#: dnf/base.py:1972
+#: dnf/base.py:2057
 #, python-format
 msgid "File %s is a source package and cannot be updated, ignoring."
-msgstr "%s 파일은 소스 패키지이며 업데이트할 수 없습니다. 무시합니다."
+msgstr "%s 파일은 소스 꾸러미이며 최신화 할 수 없습니다. 무시합니다."
 
-#: dnf/base.py:1978
+#: dnf/base.py:2068
 #, python-format
 msgid "Package %s not installed, cannot update it."
-msgstr "%s 패키지가 설치되어 있지 않기 때문에 업데이트할 수 없습니다."
+msgstr "%s 꾸러미가 설치되어 있지 않기 때문에 최신화 할 수 없습니다."
 
-#: dnf/base.py:1987
+#: dnf/base.py:2078
 #, python-format
 msgid ""
 "The same or higher version of %s is already installed, cannot update it."
-msgstr "%s 이상의 버전이 이미 설치되어 있으므로 업데이트할 수 없습니다."
+msgstr "%s 이상의 버전이 이미 설치되어 있으므로 최신화 할 수 없습니다."
 
-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81
+#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81
 #, python-format
 msgid "Package %s available, but not installed."
-msgstr "%s 패키지는 사용할 수는 있지만 설치되어 있지 않습니다."
+msgstr "%s 꾸러미는 사용할 수는 있지만 설치되어 있지 않습니다."
 
-#: dnf/base.py:2032
+#: dnf/base.py:2127
 #, python-format
 msgid "Package %s available, but installed for different architecture."
-msgstr "%s 패키지는 사용 가능하지만 다른 아키텍처 용으로 설치되어 있습니다."
+msgstr "%s 꾸러미는 사용 가능하지만 다른 구조용으로 설치되어 있습니다."
 
-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699
+#: dnf/base.py:2152
 #, python-format
 msgid "No package %s installed."
-msgstr "%s 패키지는 설치되어 있지 않습니다"
+msgstr "%s 꾸러미는 설치되어 있지 않습니다."
 
-#: dnf/base.py:2075 dnf/cli/commands/install.py:136
+#: dnf/base.py:2170 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:2091 dnf/cli/commands/__init__.py:681
-#: dnf/cli/commands/remove.py:163
+#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676
+#: dnf/cli/commands/remove.py:162
 msgid "No packages marked for removal."
-msgstr "제거 대상 패키지가 없습니다."
+msgstr "제거 대상 꾸러미가 없습니다."
 
-#: dnf/base.py:2179 dnf/cli/cli.py:422
+#: dnf/base.py:2273 dnf/cli/cli.py:428
 #, python-format
 msgid "Packages for argument %s available, but not installed."
-msgstr "%s 인수에 대한 패키지를 사용할 수 있지만 설치되어 있지 않습니다."
+msgstr "%s 인수에 대한 꾸러미를 사용할 수 있지만 설치되어 있지 않습니다."
 
-#: dnf/base.py:2184
+#: dnf/base.py:2278
 #, python-format
 msgid "Package %s of lowest version already installed, cannot downgrade it."
-msgstr "%s 패키지의 최하위 버전이 이미 설치되어 있으므로 다운 그레이드할 수 없습니다."
+msgstr ""
+"%s 꾸러미의 최하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다."
 
-#: dnf/base.py:2242
-msgid "Action not handled: {}"
-msgstr "작업이 처리되지 않았습니다: {}"
-
-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703
-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169
-#, python-format
-msgid "No package %s available."
-msgstr "사용 가능한 패키지 %s가 없습니다."
-
-#: dnf/base.py:2269
-msgid "no package matched"
-msgstr "일치하는 패키지가 없습니다."
-
-#: dnf/base.py:2290
+#: dnf/base.py:2378
 msgid "No security updates needed, but {} update available"
-msgstr "보안 업데이트가 필요하지 않지만 {} 업데이트가 가능합니다"
+msgstr "보안 최신화가 필요하지 않지만, {} 최신화가 가능합니다"
 
-#: dnf/base.py:2292
+#: dnf/base.py:2380
 msgid "No security updates needed, but {} updates available"
-msgstr "보안 업데이트는 필요하지 않지만 {} 업데이트가 가능합니다"
+msgstr "보안 최신화는 필요하지 않지만 {} 최신화는 가능합니다"
 
-#: dnf/base.py:2296
+#: dnf/base.py:2384
 msgid "No security updates needed for \"{}\", but {} update available"
-msgstr "\"{}\"에는 보안 업데이트가 필요하지 않지만 {} 업데이트가 가능합니다"
+msgstr "\"{}\"에는 보안 최신화가 필요하지 않지만 {} 최신화가 가능합니다"
 
-#: dnf/base.py:2298
+#: dnf/base.py:2386
 msgid "No security updates needed for \"{}\", but {} updates available"
-msgstr "\"{}\"에는 보안 업데이트가 필요하지 않지만 {} 업데이트가 가능합니다"
+msgstr "\"{}\"에는 보안 최신화가 필요하지 않지만 {} 최신화가 가능합니다"
 
 #. raise an exception, because po.repoid is not in self.repos
-#: dnf/base.py:2319
+#: dnf/base.py:2407
 #, python-format
 msgid "Unable to retrieve a key for a commandline package: %s"
-msgstr ""
+msgstr "명령줄 꾸러미: %s 대한 키를 검색 할 수 없습니다"
 
-#: dnf/base.py:2327
+#: dnf/base.py:2415
 #, python-format
 msgid ". Failing package is: %s"
-msgstr "실패한 패키지는 다음과 같습니다. %s"
+msgstr "실패한 꾸러미는 다음과 같습니다. %s"
 
-#: dnf/base.py:2328
+#: dnf/base.py:2416
 #, python-format
 msgid "GPG Keys are configured as: %s"
 msgstr "GPG 키는 다음과 같이 설정되어 있습니다. %s"
 
-#: dnf/base.py:2340
+#: dnf/base.py:2428
 #, python-format
 msgid "GPG key at %s (0x%s) is already installed"
 msgstr "%s (0x%s)의 GPG 키가 이미 설치되어 있습니다"
 
-#: dnf/base.py:2373
+#: dnf/base.py:2464
 msgid "The key has been approved."
 msgstr "키가 승인되었습니다."
 
-#: dnf/base.py:2376
+#: dnf/base.py:2467
 msgid "The key has been rejected."
 msgstr "키가 거부되었습니다."
 
-#: dnf/base.py:2409
+#: dnf/base.py:2500
 #, python-format
 msgid "Key import failed (code %d)"
 msgstr "키 가져 오기에 실패했습니다 (코드 %d)"
 
-#: dnf/base.py:2411
+#: dnf/base.py:2502
 msgid "Key imported successfully"
 msgstr "키 가져오기에 성공했습니다"
 
-#: dnf/base.py:2415
+#: dnf/base.py:2506
 msgid "Didn't install any keys"
 msgstr "키를 하나도 설치하지 못했습니다"
 
-#: dnf/base.py:2418
+#: dnf/base.py:2509
 #, 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"
+"해당 GPG 키는 \"%s\"저장소가 이미 설치되어 있지만이 꾸러미에 맞지 않습니다.\n"
 "이 저장소에 대해 올바른 키 URL이 구성되었는지 확인하십시오."
 
-#: dnf/base.py:2429
+#: dnf/base.py:2520
 msgid "Import of key(s) didn't help, wrong key(s)?"
 msgstr "가져온 키에 문제가 있습니다. 잘못된 키입니까?"
 
-#: dnf/base.py:2482
+#: dnf/base.py:2573
 msgid "  * Maybe you meant: {}"
-msgstr "  * 다음을 의미할 수도 있습니다: {}"
+msgstr "  * 다음을 의미 할 수도 있습니다: {}"
 
-#: dnf/base.py:2514
+#: dnf/base.py:2605
 msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
-msgstr "로컬 저장소 \"{}\"의 \"{}\"패키지에 잘못된 체크섬이 있습니다"
+msgstr "로컬 저장소 \"{}\"의 \"{}\"꾸러미에 잘못된 체크섬이 있습니다"
 
-#: dnf/base.py:2517
+#: dnf/base.py:2608
 msgid "Some packages from local repository have incorrect checksum"
-msgstr "로컬 저장소의 일부 패키지에 잘못된 체크섬이 있습니다"
+msgstr "로컬 저장소의 일부 꾸러미에 잘못된 체크섬이 있습니다"
 
-#: dnf/base.py:2520
+#: dnf/base.py:2611
 msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
-msgstr "저장소 \"{}\"의 패키지 \"{}\"에 잘못된 체크섬이 있습니다"
+msgstr "저장소 \"{}\"의 꾸러미 \"{}\"에 잘못된 체크섬이 있습니다"
 
-#: dnf/base.py:2523
+#: dnf/base.py:2614
 msgid ""
 "Some packages have invalid cache, but cannot be downloaded due to \"--"
 "cacheonly\" option"
-msgstr "일부 패키지에는 유효하지 않은 캐시가 있지만 \"--cacheonly\"옵션으로 인해 다운로드할 수 없습니다"
+msgstr ""
+"일부 꾸러미에는 유효하지 않은 캐쉬가 있지만 \"--cacheonly\"옵션으로 인해 내려"
+"받기 할 수 없습니다"
 
-#: dnf/base.py:2541 dnf/base.py:2561
+#: dnf/base.py:2632 dnf/base.py:2652
 msgid "No match for argument"
 msgstr "일치하는 인수가 없습니다"
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2640 dnf/base.py:2660
 msgid "All matches were filtered out by exclude filtering for argument"
 msgstr "모든 일치 항목이 인수의 제외 필터로 필터링되었습니다"
 
-#: dnf/base.py:2551
+#: dnf/base.py:2642
 msgid "All matches were filtered out by modular filtering for argument"
 msgstr "모든 일치 항목이 인수의 모듈식 필터로 필터링되었습니다"
 
-#: dnf/base.py:2567
+#: dnf/base.py:2658
 msgid "All matches were installed from a different repository for argument"
 msgstr "모든 일치 항목이 인수의 다른 리포지토리에서 설치되었습니다"
 
-#: dnf/base.py:2583
+#: dnf/base.py:2705
 #, python-format
 msgid "Package %s is already installed."
-msgstr "패키지 %s이/가 이미 설치되어 있습니다."
+msgstr "꾸러미 %s가 이미 설치되어 있습니다."
 
 #: dnf/cli/aliases.py:96
 #, python-format
@@ -551,8 +547,8 @@ msgstr "\"%s\" 파일의 구문 분석에 실패했습니다 : %s"
 msgid "Cannot read file \"%s\": %s"
 msgstr "\"%s\" 파일을 읽을 수 없습니다: %s"
 
-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902
-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108
+#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804
+#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108
 #, python-format
 msgid "Config error: %s"
 msgstr "설정 오류: %s"
@@ -564,17 +560,17 @@ msgstr "별칭에는 무한 재귀가 포함되어 있습니다"
 #: dnf/cli/aliases.py:209
 #, python-format
 msgid "%s, using original arguments."
-msgstr "%s, 원래 인수를 사용하고 있습니다"
+msgstr "%s, 원래 인수를 사용."
 
 #: dnf/cli/cli.py:137
 #, python-format
 msgid "  Installed: %s-%s at %s"
-msgstr "  설치됨:  %s-%s (일시: %s)"
+msgstr "  설치되었습니다: %s-%s (일시: %s)"
 
 #: dnf/cli/cli.py:139
 #, python-format
 msgid "  Built    : %s at %s"
-msgstr "  빌드됨    :%s (일시: %s)"
+msgstr "  구성 :%s (일시: %s)"
 
 #: dnf/cli/cli.py:147
 #, python-brace-format
@@ -583,44 +579,50 @@ msgid ""
 "stream '{2}'"
 msgstr "이 작업은 '{0}' 모듈을 '{1}' 스트림에서 ‘{2}' 스트림으로 전환합니다"
 
-#: dnf/cli/cli.py:172
+#: dnf/cli/cli.py:173
 #, 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 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:210
+#: dnf/cli/cli.py:212
 #, python-brace-format
 msgid "{prog} will only download packages for the transaction."
-msgstr "{prog}은/는 트랜잭션용 패키지 만 다운로드합니다."
+msgstr "{prog}은/는 연결용 꾸러미만 내려받기합니다."
 
-#: dnf/cli/cli.py:213
+#: dnf/cli/cli.py:215
 #, python-brace-format
 msgid ""
 "{prog} will only download packages, install gpg keys, and check the "
 "transaction."
-msgstr "{prog}은/는 패키지 만 다운로드하고 gpg 키를 설치하며 트랜잭션을 확인합니다."
+msgstr "{prog}은/는 꾸러미만 내려받기하고 gpg 키를 설치하며 연결을 확인합니다."
 
-#: dnf/cli/cli.py:217
+#: dnf/cli/cli.py:219
 msgid "Operation aborted."
-msgstr "작업이 중지됨."
+msgstr "작업이 중지됩니다."
 
-#: dnf/cli/cli.py:224
+#: dnf/cli/cli.py:226
 msgid "Downloading Packages:"
-msgstr "패키지 다운로드중:"
+msgstr "꾸러미 내려받기 중:"
 
-#: dnf/cli/cli.py:230
+#: dnf/cli/cli.py:232
 msgid "Error downloading packages:"
-msgstr "패키지 다운로드중 오류 발생:"
+msgstr "꾸러미 내려받기 중 오류 발생:"
 
-#: dnf/cli/cli.py:258
+#: dnf/cli/cli.py:264
 msgid "Transaction failed"
-msgstr "트랜잭션 실패"
+msgstr "연결 실패"
 
-#: dnf/cli/cli.py:281
+#: dnf/cli/cli.py:287
 msgid ""
 "Refusing to automatically import keys when running unattended.\n"
 "Use \"-y\" to override."
@@ -628,172 +630,156 @@ msgstr ""
 "키를 자동으로 가져 오는 것을 거부합니다.\n"
 "동작을 무시하려면 \"-y\"를 사용하십시오."
 
-#: dnf/cli/cli.py:331
+#: dnf/cli/cli.py:337
 msgid "Changelogs for {}"
 msgstr "{}의 변경 사항"
 
-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511
+#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517
 msgid "Obsoleting Packages"
-msgstr "더 이상 사용되지 않는 패키지"
+msgstr "더 이상 사용되지 않는 꾸러미"
 
-#: dnf/cli/cli.py:393
+#: dnf/cli/cli.py:399
 msgid "No packages marked for distribution synchronization."
-msgstr "배포 동기화가 필요한 패키지가 없습니다."
+msgstr "배포 동기화가 필요한 꾸러미가 없습니다."
 
-#: dnf/cli/cli.py:428
+#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395
+#, python-format
+msgid "No package %s available."
+msgstr "가용한 꾸러미(package) %s가 없습니다."
+
+#: dnf/cli/cli.py:434
 msgid "No packages marked for downgrade."
-msgstr "다운 그레이드 대상으로 표시된 패키지가 없습니다."
+msgstr "하향설치 대상으로 표시된 꾸러미가 없습니다."
 
-#: dnf/cli/cli.py:479
+#: dnf/cli/cli.py:485
 msgid "Installed Packages"
-msgstr "설치된 패키지"
+msgstr "설치된 꾸러미"
 
-#: dnf/cli/cli.py:487
+#: dnf/cli/cli.py:493
 msgid "Available Packages"
-msgstr "사용 가능한 패키지"
+msgstr "사용 가능한 꾸러미"
 
-#: dnf/cli/cli.py:491
+#: dnf/cli/cli.py:497
 msgid "Autoremove Packages"
-msgstr "패키지 자동 삭제"
+msgstr "꾸러미 자동 삭제"
 
 # ctx::sourcefile::Systems Navigation Menu
-#: dnf/cli/cli.py:493
+#: dnf/cli/cli.py:499
 msgid "Extra Packages"
-msgstr "추가 패키지"
+msgstr "추가 꾸러미"
 
-#: dnf/cli/cli.py:497
+#: dnf/cli/cli.py:503
 msgid "Available Upgrades"
-msgstr "사용 가능한 업그레이드"
+msgstr "사용 가능한 최신화"
 
-#: dnf/cli/cli.py:513
+#: dnf/cli/cli.py:519
 msgid "Recently Added Packages"
-msgstr "최근에 추가 된 패키지"
+msgstr "최근에 추가 된 꾸러미"
 
-#: dnf/cli/cli.py:518
+#: dnf/cli/cli.py:523
 msgid "No matching Packages to list"
-msgstr "목록과 일치하는 패키지가 없습니다"
+msgstr "목록과 일치하는 꾸러미가 없습니다"
 
-#: dnf/cli/cli.py:599
+#: dnf/cli/cli.py:604
 msgid "No Matches found"
 msgstr "검색 결과가 없습니다"
 
-#: dnf/cli/cli.py:609
-msgid "No transaction ID given"
-msgstr "지정된 트랜잭션 ID가 없습니다"
-
-#: dnf/cli/cli.py:614
-msgid "Not found given transaction ID"
-msgstr "주어진 트랜잭션 ID를 찾을 수 없습니다"
-
-#: dnf/cli/cli.py:623
-msgid "Found more than one transaction ID!"
-msgstr "두 개 이상의 트랜잭션 ID를 찾았습니다!"
-
-#: dnf/cli/cli.py:640
-#, python-format
-msgid "Transaction history is incomplete, before %u."
-msgstr "%u이전 트랜잭션 내역이 불완전합니다."
-
-#: dnf/cli/cli.py:642
-#, python-format
-msgid "Transaction history is incomplete, after %u."
-msgstr "%u이후 트랜잭션 내역이 불완전합니다."
-
-#: dnf/cli/cli.py:689
-msgid "Undoing transaction {}, from {}"
-msgstr "{}에서 {} 트랜잭션 실행을 취소하고 있습니다"
-
-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237
+#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237
 #, python-format
 msgid "Unknown repo: '%s'"
 msgstr "알 수 없는 저장소: '%s'"
 
-#: dnf/cli/cli.py:783
+#: dnf/cli/cli.py:685
 #, python-format
 msgid "No repository match: %s"
 msgstr "일치하는 저장소가 없습니다 : %s"
 
-#: dnf/cli/cli.py:817
+#: 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:847
+#: dnf/cli/cli.py:749
 #, python-format
 msgid "No such command: %s. Please use %s --help"
 msgstr "명령을 찾을 수 없습니다: %s . %s --help를 사용하십시오"
 
-#: dnf/cli/cli.py:850
+#: 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} 'dnf-command(%s)'\""
 
-#: dnf/cli/cli.py:854
+#: 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:912
+#: 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:918
+#: 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:1000
+#: 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:1020
+#: dnf/cli/cli.py:922
 msgid "Config file \"{}\" does not exist"
-msgstr "\"{}\" 설정 파일이 존재하지 않습니다"
+msgstr "설정 파일 \"{}\" 이 존재하지 않습니다"
 
-#: dnf/cli/cli.py:1040
+#: dnf/cli/cli.py:942
 msgid ""
 "Unable to detect release version (use '--releasever' to specify release "
 "version)"
-msgstr "릴리스 버전을 찾을 수 없습니다 ('--releasever'를 사용하여 릴리스 버전을 지정하십시오)"
+msgstr ""
+"출시 버전을 찾을 수 없습니다 ('--releasever'를 사용하여 출시 버전을 지정하십"
+"시오)"
 
-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471
+#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471
 msgid "argument {}: not allowed with argument {}"
 msgstr "인수 {}: 인수 {}과 함께 사용할 수 없습니다"
 
-#: dnf/cli/cli.py:1134
+#: dnf/cli/cli.py:1023
 #, python-format
 msgid "Command \"%s\" already defined"
 msgstr "\"%s\" 명령이 이미 정의되어 있습니다"
 
-#: dnf/cli/cli.py:1154
+#: dnf/cli/cli.py:1043
 msgid "Excludes in dnf.conf: "
 msgstr "dnf.conf에서 제외: "
 
-#: dnf/cli/cli.py:1157
+#: dnf/cli/cli.py:1046
 msgid "Includes in dnf.conf: "
 msgstr "dnf.conf에 포함:. "
 
-#: dnf/cli/cli.py:1160
+#: dnf/cli/cli.py:1049
 msgid "Excludes in repo "
 msgstr "리포지토리에서 제외 "
 
-#: dnf/cli/cli.py:1163
+#: dnf/cli/cli.py:1052
 msgid "Includes in repo "
 msgstr "리포지토리에 포함 "
 
@@ -805,13 +791,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"
@@ -823,17 +811,18 @@ msgid ""
 "\n"
 "For more information contact your distribution or package provider."
 msgstr ""
-"GPG 키를 통해 패키지 검사를 활성화했습니다. 이는 적절한 작업 실행입니다. \n"
-"그러나 GPG 공개 키가 설치되어 있지 않습니다. 설치하려는 패키지의 키를 다운로드하여 설치해야합니다.\n"
+"GPG 키를 통해 꾸러미 검사를 활성화했습니다. 이는 적절한 작업 실행입니다.\n"
+"그러나 GPG 공개 키가 설치되어 있지 않습니다.\n"
+"설치하려는 꾸러미의 키를 내려 받기하여 설치해야 합니다.\n"
 "다음 명령으로 이 작업을 수행할 수 있습니다:\n"
-"    rpm --import public.gpg.key\n"
+"rpm --import public.gpg.key\n"
 "\n"
 "\n"
-"또는 리포지토리 섹션의 'gpgkey' 옵션을 사용하여 \n"
-"리포지토리에 사용할 키의 URL을 지정할 수 있으며 {prog}이/가 \n"
-"이를 설치합니다 \n"
+"또는 저장소 부분의 'gpgkey' 옵션을 사용하여\n"
+"저장소에 사용할 키의 URL을 지정 할 수 있으며 {prog}가\n"
+"이를 설치합니다\n"
 "\n"
-"자세한 내용은 배포 또는 패키지 공급 업체에 문의하십시오."
+"자세한 내용은 배포 또는 꾸러미 공급 업체에 문의하십시오."
 
 #: dnf/cli/commands/__init__.py:71
 #, python-format
@@ -842,56 +831,56 @@ msgstr "문제 저장소 : %s"
 
 #: dnf/cli/commands/__init__.py:158
 msgid "display details about a package or group of packages"
-msgstr "패키지 또는 패키지 그룹에 대한 세부 정보 표시"
+msgstr "꾸러미 또는 꾸러미 그룹에 대한 세부 정보 표시"
 
-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740
+#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735
 msgid "show all packages (default)"
-msgstr "모든 패키지 표시 (기본값)"
+msgstr "모든 꾸러미 표시 (기본값)"
 
-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743
-#: dnf/cli/commands/module.py:351
+#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738
+#: dnf/cli/commands/module.py:376
 msgid "show only available packages"
-msgstr "사용 가능한 패키지 만 표시"
+msgstr "사용 가능한 꾸러미만 표시"
 
-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746
+#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741
 msgid "show only installed packages"
-msgstr "설치된 패키지 만 표시"
+msgstr "설치된 꾸러미만 보여주기"
 
-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749
+#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744
 msgid "show only extras packages"
-msgstr "엑스트라 패키지 만 표시"
+msgstr "엑스트라 꾸러미만 표시"
 
 #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183
-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755
+#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750
 msgid "show only upgrades packages"
-msgstr "업그레이드 패키지 만 표시"
+msgstr "향상 꾸러미만 표시"
 
-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758
+#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753
 msgid "show only autoremove packages"
-msgstr "자동 삭제 패키지 만 표시"
+msgstr "자동 삭제 꾸러미만 표시"
 
-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761
+#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756
 msgid "show only recently changed packages"
-msgstr "최근에 변경된 패키지 만 표시"
+msgstr "최근에 변경된 꾸러미만 표시"
 
 #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265
-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48
+#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48
 #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44
 #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46
 msgid "PACKAGE"
-msgstr "패키지"
+msgstr "꾸러미(package)"
 
 #: dnf/cli/commands/__init__.py:193
 msgid "Package name specification"
-msgstr "패키지 이름 사양"
+msgstr "꾸러미 이름 사양"
 
 #: dnf/cli/commands/__init__.py:221
 msgid "list a package or groups of packages"
-msgstr "패키지 또는 패키지 그룹 나열"
+msgstr "꾸러미 또는 꾸러미 그룹 나열"
 
 #: dnf/cli/commands/__init__.py:235
 msgid "find what package provides the given value"
-msgstr "지정된 컨텐츠를 제공하는 패키지 찾기"
+msgstr "지정된 내용을 제공하는 꾸러미 찾기"
 
 #: dnf/cli/commands/__init__.py:239
 msgid "PROVIDE"
@@ -903,80 +892,80 @@ msgstr "검색할 사양 제공"
 
 #: dnf/cli/commands/__init__.py:249 dnf/cli/commands/search.py:159
 msgid "Searching Packages: "
-msgstr "패키지 검색 : "
+msgstr "꾸러미 검색 : "
 
 #: dnf/cli/commands/__init__.py:258
 msgid "check for available package upgrades"
-msgstr "사용 가능한 패키지 업그레이드 확인"
+msgstr "사용 가능한 꾸러미 향상 확인"
 
 #: dnf/cli/commands/__init__.py:264
 msgid "show changelogs before update"
-msgstr "업데이트 전에 changelog 표시"
+msgstr "최신화 전에 변경기록 표시"
 
-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414
-#: dnf/cli/commands/__init__.py:470
+#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409
+#: dnf/cli/commands/__init__.py:465
 msgid "No package available."
-msgstr "사용할 수 있는 패키지가 없습니다."
+msgstr "사용할 수 있는 꾸러미가 없습니다."
 
-#: dnf/cli/commands/__init__.py:376
+#: dnf/cli/commands/__init__.py:371
 msgid "No packages marked for install."
-msgstr "설치용으로 표시된 패키지가 없습니다."
+msgstr "설치용으로 표시된 꾸러미 없습니다."
 
-#: dnf/cli/commands/__init__.py:412
+#: dnf/cli/commands/__init__.py:407
 msgid "No package installed."
-msgstr "설치된 패키지가 없습니다."
+msgstr "설치된 꾸러미가 없습니다."
 
-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489
+#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484
 #: dnf/cli/commands/reinstall.py:91
 #, python-format
 msgid " (from %s)"
 msgstr " (%s에서)"
 
-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490
+#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485
 #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105
 #, python-format
 msgid "Installed package %s%s not available."
-msgstr "설치된 패키지 %s%s 사용 불가."
+msgstr "설치된 꾸러미 %s%s 사용 불가."
 
-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576
-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666
+#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571
+#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661
 msgid "No package installed from the repository."
-msgstr "저장소에서 설치된 패키지가 없습니다."
+msgstr "저장소에서 설치된 꾸러미가 없습니다."
 
-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101
+#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101
 msgid "No packages marked for reinstall."
-msgstr "다시 설치하도록 표시된 패키지가 없습니다."
+msgstr "다시 설치하도록 표시된 꾸러미가 없습니다."
 
-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89
+#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84
 msgid "No packages marked for upgrade."
-msgstr "업그레이드할 패키지 없음."
+msgstr "최신화 할 꾸러미 없음."
 
-#: dnf/cli/commands/__init__.py:726
+#: dnf/cli/commands/__init__.py:721
 msgid "run commands on top of all packages in given repository"
-msgstr "지정된 저장소의 모든 패키지에 대해 명령을 실행합니다"
+msgstr "지정된 저장소의 모든 꾸러미에 대해 명령을 실행합니다"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "REPOID"
 msgstr "REPOID"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "Repository ID"
-msgstr "리포지터리 ID"
+msgstr "저장소 ID"
 
-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48
+#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48
 #: dnf/cli/commands/updateinfo.py:108
 msgid "Package specification"
-msgstr "패키지 사양"
+msgstr "꾸러미 사양"
 
-#: dnf/cli/commands/__init__.py:801
+#: dnf/cli/commands/__init__.py:796
 msgid "display a helpful usage message"
 msgstr "유용한 사용법 메시지 표시"
 
-#: dnf/cli/commands/__init__.py:805
+#: dnf/cli/commands/__init__.py:800
 msgid "COMMAND"
 msgstr "명령"
 
-#: dnf/cli/commands/__init__.py:806
+#: dnf/cli/commands/__init__.py:801
 #, python-brace-format
 msgid "{prog} command to get help for"
 msgstr "{prog} 명령 도움말 표시"
@@ -1068,11 +1057,11 @@ 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"
-msgstr "제거할 패키지"
+msgstr "제거할 꾸러미"
 
 #: dnf/cli/commands/check.py:34
 msgid "check for problems in the packagedb"
@@ -1092,7 +1081,7 @@ msgstr "중복된 문제를 표시"
 
 #: dnf/cli/commands/check.py:49
 msgid "show obsoleted packages"
-msgstr "더 이상 사용되지 않는 패키지 표시"
+msgstr "더 이상 사용되지 않는꾸러미 표시"
 
 #: dnf/cli/commands/check.py:52
 msgid "show problems with provides"
@@ -1121,7 +1110,7 @@ msgstr "%s 파일 제거 중"
 
 #: dnf/cli/commands/clean.py:87
 msgid "remove cached data"
-msgstr "캐시된 데이터 제거"
+msgstr "캐쉬된 자료 제거"
 
 #: dnf/cli/commands/clean.py:93
 msgid "Metadata type to clean"
@@ -1133,7 +1122,7 @@ msgstr "데이터 정리 중:  "
 
 #: dnf/cli/commands/clean.py:111
 msgid "Cache was expired"
-msgstr "캐시가 만료되었습니다"
+msgstr "캐쉬가 만료되었습니다"
 
 #: dnf/cli/commands/clean.py:115
 #, python-format
@@ -1147,24 +1136,28 @@ msgid "Waiting for process with pid %d to finish."
 msgstr "PID %d 프로세스가 종료되기를 기다리고 있습니다."
 
 #: dnf/cli/commands/deplist.py:32
-msgid "List package's dependencies and what packages provide them"
-msgstr "패키지의 종속성 및 패키지를 제공하는 소스 목록 나열"
+msgid ""
+"[deprecated, use repoquery --deplist] List package's dependencies and what "
+"packages provide them"
+msgstr ""
+"[더 이상 사용되지 않음, repoquery --deplist 사용] 꾸러미의 종속성과 이를 제공"
+"하는 꾸러미 목록 나열"
 
 #: dnf/cli/commands/distrosync.py:32
 msgid "synchronize installed packages to the latest available versions"
-msgstr "설치된 패키지를 사용 가능한 최신 버전으로 동기화합니다"
+msgstr "설치된 꾸러미를 사용 가능한 최신 버전으로 동기화합니다"
 
 #: dnf/cli/commands/distrosync.py:36
 msgid "Package to synchronize"
-msgstr "동기화할 패키지"
+msgstr "동기화할 꾸러미"
 
 #: dnf/cli/commands/downgrade.py:34
 msgid "Downgrade a package"
-msgstr "패키지 다운그레이드"
+msgstr "꾸러미 하향설치"
 
 #: dnf/cli/commands/downgrade.py:38
 msgid "Package to downgrade"
-msgstr "다운그레이드할 패키지"
+msgstr "하향설치 할 꾸러미"
 
 #: dnf/cli/commands/group.py:46
 msgid "display, or use, the groups information"
@@ -1174,207 +1167,227 @@ msgstr "그룹 정보를 표시하거나 사용합니다"
 msgid "No group data available for configured repositories."
 msgstr "설정된 리포지토리에 사용할 수있는 그룹 데이터가 없습니다."
 
-#: dnf/cli/commands/group.py:129
+#: dnf/cli/commands/group.py:126
 #, python-format
 msgid "Warning: Group %s does not exist."
 msgstr "경고: %s 그룹이 존재하지 않습니다."
 
-#: dnf/cli/commands/group.py:170
+#: dnf/cli/commands/group.py:167
 msgid "Warning: No groups match:"
-msgstr "경고: 일치하는 그룹이 없습니다"
+msgstr "경고: 일치하는 그룹이 없습니다:"
 
-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193
-#: dnf/cli/output.py:1226
+#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190
+#: dnf/cli/output.py:1139
 msgid "<name-unset>"
 msgstr "<name-unset>"
 
-#: dnf/cli/commands/group.py:199
+#: dnf/cli/commands/group.py:196
 msgid "Available Environment Groups:"
 msgstr "사용 가능한 환경 그룹 :"
 
-#: dnf/cli/commands/group.py:201
+#: dnf/cli/commands/group.py:198
 msgid "Installed Environment Groups:"
 msgstr "설치된 환경 그룹 :"
 
-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294
+#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291
 msgid "Installed Groups:"
 msgstr "설치된 그룹 :"
 
-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301
+#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298
 msgid "Installed Language Groups:"
 msgstr "설치된 언어 그룹 :"
 
-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308
+#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305
 msgid "Available Groups:"
 msgstr "사용 가능한 그룹 :"
 
-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315
+#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312
 msgid "Available Language Groups:"
 msgstr "사용 가능한 언어 그룹 :"
 
-#: dnf/cli/commands/group.py:322
+#: dnf/cli/commands/group.py:319
 msgid "include optional packages from group"
-msgstr "그룹의 선택 패키지를 포함합니다"
+msgstr "그룹의 선택 꾸러미를 포함합니다"
 
-#: dnf/cli/commands/group.py:325
+#: dnf/cli/commands/group.py:322
 msgid "show also hidden groups"
 msgstr "숨겨진 그룹도 표시합니다"
 
-#: dnf/cli/commands/group.py:327
+#: dnf/cli/commands/group.py:324
 msgid "show only installed groups"
 msgstr "설치된 그룹 만 표시합니다"
 
-#: dnf/cli/commands/group.py:329
+#: dnf/cli/commands/group.py:326
 msgid "show only available groups"
 msgstr "사용 가능한 그룹 만 표시합니다"
 
-#: dnf/cli/commands/group.py:331
+#: dnf/cli/commands/group.py:328
 msgid "show also ID of groups"
 msgstr "그룹 ID 표시"
 
-#: dnf/cli/commands/group.py:333
+#: dnf/cli/commands/group.py:330
 msgid "available subcommands: {} (default), {}"
 msgstr "사용 가능한 하위 명령: {} (기본값), {}"
 
-#: dnf/cli/commands/group.py:337
+#: dnf/cli/commands/group.py:334
 msgid "argument for group subcommand"
 msgstr "그룹 하위 명령의 인수"
 
-#: dnf/cli/commands/group.py:346
+#: dnf/cli/commands/group.py:343
 #, python-format
 msgid "Invalid groups sub-command, use: %s."
-msgstr "그룹 하위 명령이 잘못되었습니다. %s을/를 사용합니다."
+msgstr "그룹 하위 명령이 잘못되었습니다. %s를 사용합니다."
 
-#: dnf/cli/commands/group.py:403
+#: dnf/cli/commands/group.py:398
 msgid "Unable to find a mandatory group package."
-msgstr "필수 그룹 패키지를 찾을 수 없습니다."
+msgstr "필수 그룹 꾸러미를 찾을 수 없습니다."
 
 #: dnf/cli/commands/history.py:48
 msgid "display, or use, the transaction history"
-msgstr "트랜잭션 내역 표시 또는 사용"
+msgstr "연결 내역 표시 또는 사용"
 
 #: dnf/cli/commands/history.py:66
 msgid "For the store command, file path to store the transaction to"
-msgstr ""
+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
 msgid ""
 "For the replay command, don't check for extra packages pulled into the "
 "transaction"
-msgstr ""
+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
 msgid ""
 "Found more than one transaction ID.\n"
 "'{}' requires one transaction ID or package name."
 msgstr ""
-"둘 이상의 트랜잭션 ID를 찾았습니다.\n"
-"'{}'에는 하나의 트랜잭션 ID 또는 패키지 이름이 필요합니다."
+"둘 이상의 연결 ID를 찾았습니다.\n"
+"'{}'에는 하나의 연결 ID 또는 꾸러미 이름이 필요합니다."
 
 #: dnf/cli/commands/history.py:101
-#, fuzzy
-#| msgid "No transaction ID 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:126
+#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130
 msgid "No transaction ID or package name given."
-msgstr "트랜잭션 ID 또는 패키지 이름이 없습니다."
+msgstr "연결 ID 또는 꾸러미 이름이 없습니다."
 
-#: dnf/cli/commands/history.py:138
+#: dnf/cli/commands/history.py:142
 #, python-format
 msgid "You don't have access to the history DB: %s"
 msgstr "기록 DB에 액세스할 수 없습니다: %s"
 
-#: dnf/cli/commands/history.py:147
+#: 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:152
+#: 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:222
+#: dnf/cli/commands/history.py:175
+msgid "No transaction ID given"
+msgstr "지정된 연결 ID가 없습니다"
+
+#: dnf/cli/commands/history.py:179
+#, python-brace-format
+msgid "Transaction ID \"{0}\" not found."
+msgstr "Transaction ID \"{0}\" 를 찾을 수 없음."
+
+#: dnf/cli/commands/history.py:185
+msgid "Found more than one transaction ID!"
+msgstr "두 개 이상의 연결 ID를 찾았습니다!"
+
+#: dnf/cli/commands/history.py:203
+#, python-format
+msgid "Transaction history is incomplete, before %u."
+msgstr "%u이전 연결 내역이 불완전합니다."
+
+#: dnf/cli/commands/history.py:205
+#, python-format
+msgid "Transaction history is incomplete, after %u."
+msgstr "%u 이후 연결 내역이 불완전합니다."
+
+#: dnf/cli/commands/history.py:256
+msgid "No packages to list"
+msgstr "목록에 꾸러미가 없습니다"
+
+#: dnf/cli/commands/history.py:279
 msgid ""
 "Invalid transaction ID range definition '{}'.\n"
 "Use '<transaction-id>..<transaction-id>'."
 msgstr ""
-"잘못된 트랜잭션 ID 범위 정의 '{}'. \n"
+"잘못된 연결 ID 범위 정의 '{}'.\n"
 "'<transaction-id>..<transaction-id>' 사용."
 
-#: dnf/cli/commands/history.py:226
+#: dnf/cli/commands/history.py:283
 msgid ""
 "Can't convert '{}' to transaction ID.\n"
 "Use '<number>', 'last', 'last-<number>'."
 msgstr ""
-"'{}'을 (를) 트랜잭션 ID로 변환할 수 없습니다. \n"
+"'{}'을 (를) 연결 ID로 변환 할 수 없습니다.\n"
 "'<number>', 'last', 'last-<number>' 사용."
 
-#: dnf/cli/commands/history.py:255
+#: dnf/cli/commands/history.py:312
 msgid "No transaction which manipulates package '{}' was found."
-msgstr "패키지 '{}'을 (를) 사용하는 트랜잭션이 없습니다."
+msgstr "꾸러미 '{}'를 사용하는 연결이 없습니다."
 
-#: dnf/cli/commands/history.py:305
-#, python-brace-format
-msgid "Transaction ID \"{id}\" not found."
-msgstr ""
-
-#: dnf/cli/commands/history.py:313
+#: dnf/cli/commands/history.py:357
 msgid "{} exists, overwrite?"
-msgstr ""
+msgstr "{} 존재합니다, 덮어 쓸까요?"
 
-#: dnf/cli/commands/history.py:316
+#: dnf/cli/commands/history.py:360
 msgid "Not overwriting {}, exiting."
-msgstr ""
+msgstr "존재하기 때문에, {} 덮어 쓸 수 없습니다."
 
-#: dnf/cli/commands/history.py:323
-#, fuzzy
-#| msgid "Transaction test succeeded."
+#: dnf/cli/commands/history.py:367
 msgid "Transaction saved to {}."
-msgstr "트랜잭션 테스트가 완료되었습니다."
+msgstr "연결이 {}에 저장되었습니다."
 
-#: dnf/cli/commands/history.py:326
-#, fuzzy
-#| msgid "Errors occurred during transaction."
+#: dnf/cli/commands/history.py:370
 msgid "Error storing transaction: {}"
-msgstr "거래 중에 오류가 발생했습니다."
+msgstr "저장 중 연결 오류: {}"
 
-#: dnf/cli/commands/history.py:350
-msgid ""
-"Warning, the following problems occurred while replaying the transaction:"
-msgstr ""
+#: dnf/cli/commands/history.py:386
+msgid "Warning, the following problems occurred while running a transaction:"
+msgstr "경고, 연결 동작 중에 다음 문제가 발생하였습니다:"
 
 #: dnf/cli/commands/install.py:47
 msgid "install a package or packages on your system"
-msgstr "시스템에 패키지를 설치합니다"
+msgstr "시스템에 꾸러미를 설치합니다"
 
 #: dnf/cli/commands/install.py:53
 msgid "Package to install"
-msgstr "설치할 패키지"
+msgstr "설치할 꾸러미"
 
 #: dnf/cli/commands/install.py:118
 msgid "Unable to find a match"
@@ -1385,22 +1398,22 @@ msgstr "일치하는 항목을 찾을 수 없습니다"
 msgid "Not a valid rpm file path: %s"
 msgstr "올바른 rpm 파일 경로가 아닙니다. %s"
 
-#: dnf/cli/commands/install.py:167
+#: dnf/cli/commands/install.py:166
 #, python-brace-format
 msgid "There are following alternatives for \"{0}\": {1}"
 msgstr "다음은 “{0}\"의 대안입니다. {1}"
 
 #: dnf/cli/commands/makecache.py:37
 msgid "generate the metadata cache"
-msgstr "메타 데이터 캐시를 생성합니다"
+msgstr "메타 자료 캐쉬를 생성합니다"
 
 #: dnf/cli/commands/makecache.py:48
 msgid "Making cache files for all metadata files."
-msgstr "모든 메타 데이터 파일의 캐시 파일을 만듭니다."
+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 ""
@@ -1415,7 +1428,7 @@ msgstr ""
 #: dnf/cli/commands/mark.py:52
 #, python-format
 msgid "%s marked as user installed."
-msgstr "%s은/는 사용자가 설치한 것으로 표시되었습니다"
+msgstr "%s은사용자가 설치한 것으로 표시."
 
 #: dnf/cli/commands/mark.py:56
 #, python-format
@@ -1425,131 +1438,137 @@ msgstr "%s은/는 사용자가 설치한 것으로 표시되지 않았습니다.
 #: dnf/cli/commands/mark.py:60
 #, python-format
 msgid "%s marked as group installed."
-msgstr "%s은/는 그룹이 설치한 것으로 표시되었습니다"
+msgstr "%s은 그룹으로 설치된 것으로 표시."
 
 #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129
-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279
+#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282
 msgid "Error:"
 msgstr "오류:"
 
 #: dnf/cli/commands/mark.py:87
 #, python-format
 msgid "Package %s is not installed."
-msgstr "%s 패키지가 설치되지 않았습니다."
+msgstr "꾸러미 %s가 설치되지 않았습니다."
 
-#: dnf/cli/commands/module.py:51
+#: 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:77
+#: dnf/cli/commands/module.py:80
 msgid "list all module streams, profiles and states"
 msgstr "모든 모듈 스트림, 프로파일 및 상태 나열"
 
-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128
+#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131
 msgid "No matching Modules to list"
 msgstr "일치하는 모듈을 나열할 수 없습니다"
 
-#: dnf/cli/commands/module.py:111
+#: dnf/cli/commands/module.py:114
 msgid "print detailed information about a module"
 msgstr "모듈 세부 사항을 인쇄"
 
-#: dnf/cli/commands/module.py:133
+#: dnf/cli/commands/module.py:136
 msgid "enable a module stream"
 msgstr "모듈 스트림을 활성화합니다"
 
-#: dnf/cli/commands/module.py:157
+#: dnf/cli/commands/module.py:160
 msgid "disable a module with all its streams"
 msgstr "모듈의 모든 스트림을 비활성화합니다"
 
-#: dnf/cli/commands/module.py:181
+#: dnf/cli/commands/module.py:184
 msgid "reset a module"
 msgstr "모듈 재설정"
 
-#: dnf/cli/commands/module.py:202
+#: dnf/cli/commands/module.py:205
 msgid "install a module profile including its packages"
-msgstr "패키지를 포함한 모듈 프로파일 설치"
+msgstr "꾸러미를 포함한 모듈 프로파일 설치"
 
-#: dnf/cli/commands/module.py:223
+#: dnf/cli/commands/module.py:226
 msgid "update packages associated with an active stream"
-msgstr "활성 스트림과 관련된 패키지 업데이트"
+msgstr "활성 스트림과 관련된 꾸러미 최신화"
 
-#: dnf/cli/commands/module.py:240
+#: dnf/cli/commands/module.py:243
 msgid "remove installed module profiles and their packages"
-msgstr "설치된 모듈 프로파일과 패키지를 제거"
+msgstr "설치된 모듈 프로파일과 꾸러미를 제거"
 
-#: dnf/cli/commands/module.py:264
+#: dnf/cli/commands/module.py:267
 msgid "Package {} belongs to multiple modules, skipping"
-msgstr "{} 패키지는 여러 모듈에 속합니다. 건너 뛰기"
+msgstr "{} 꾸러미는 여러 모듈에 속합니다. 건너 뛰기"
 
-#: dnf/cli/commands/module.py:277
+#: dnf/cli/commands/module.py:280
+msgid "switch a module to a stream and distrosync rpm packages"
+msgstr "모듈을 스트림과 distrosync rpm 꾸러미로 전환합니다"
+
+#: dnf/cli/commands/module.py:302
 msgid "list modular packages"
-msgstr "모듈 패키지 목록"
+msgstr "모듈러 꾸러미지 목록"
 
-#: dnf/cli/commands/module.py:292
+#: dnf/cli/commands/module.py:317
 msgid "list packages belonging to a module"
-msgstr "모듈에 속하는 패키지를 나열하십시오"
+msgstr "모듈에 속하는 꾸러미를 나열하십시오"
 
-#: dnf/cli/commands/module.py:327
+#: dnf/cli/commands/module.py:352
 msgid "Interact with Modules."
 msgstr "모듈과 상호 작용합니다."
 
-#: dnf/cli/commands/module.py:340
+#: dnf/cli/commands/module.py:365
 msgid "show only enabled modules"
 msgstr "활성화된 모듈 만 표시"
 
-#: dnf/cli/commands/module.py:343
+#: dnf/cli/commands/module.py:368
 msgid "show only disabled modules"
 msgstr "비활성화된 모듈 만 표시"
 
-#: dnf/cli/commands/module.py:346
+#: dnf/cli/commands/module.py:371
 msgid "show only installed modules or packages"
-msgstr "설치된 모듈 또는 패키지 만 표시"
+msgstr "설치된 모듈 또는 꾸러미만 표시"
 
-#: dnf/cli/commands/module.py:349
+#: dnf/cli/commands/module.py:374
 msgid "show profile content"
 msgstr "프로파일 내용 표시"
 
-#: dnf/cli/commands/module.py:354
+#: dnf/cli/commands/module.py:379
 msgid "remove all modular packages"
-msgstr "모든 모듈 패키지 삭제"
+msgstr "모든 모듈 꾸러미 삭제"
 
-#: dnf/cli/commands/module.py:364
+#: dnf/cli/commands/module.py:389
 msgid "Module specification"
 msgstr "모듈 사양"
 
-#: dnf/cli/commands/module.py:386
+#: dnf/cli/commands/module.py:411
 msgid "{} {} {}: too few arguments"
 msgstr "{} {} {}: 인수가 부족합니다"
 
 #: dnf/cli/commands/reinstall.py:38
 msgid "reinstall a package"
-msgstr "패키지 다시 설치"
+msgstr "꾸러미 다시 설치"
 
 #: dnf/cli/commands/reinstall.py:42
 msgid "Package to reinstall"
-msgstr "다시 설치할 패키지"
+msgstr "다시 설치할 꾸러미"
 
 #: dnf/cli/commands/remove.py:46
 msgid "remove a package or packages from your system"
-msgstr "시스템에서 패키지를 제거합니다"
+msgstr "시스템에서 꾸러미를 제거합니다"
 
 #: dnf/cli/commands/remove.py:53
 msgid "remove duplicated packages"
-msgstr "중복된 패키지 제거"
+msgstr "중복된 꾸러미 제거"
 
 #: dnf/cli/commands/remove.py:58
 msgid "remove installonly packages over the limit"
-msgstr "오래된 설치 전용 패키지 제거"
+msgstr "오래된 설치 전용 꾸러미 제거"
 
 #: dnf/cli/commands/remove.py:95
 msgid "No duplicated packages found for removal."
-msgstr "제거할 중복 패키지가 없습니다."
+msgstr "제거할 중복 꾸러미가 없습니다."
 
 #: dnf/cli/commands/remove.py:127
 msgid "No old installonly packages found for removal."
-msgstr "제거할 오래된 설치 전용 패키지가 없습니다."
+msgstr "제거할 오래된 설치 전용 꾸러미가 없습니다."
 
 #: dnf/cli/commands/repolist.py:38 dnf/cli/commands/updateinfo.py:47
 #: dnf/cli/commands/updateinfo.py:318 dnf/cli/commands/updateinfo.py:364
@@ -1593,7 +1612,7 @@ msgstr "리포지토리 사양"
 
 #: dnf/cli/commands/repolist.py:125
 msgid "No repositories available"
-msgstr "사용 가능한 리포지토리가 없습니다"
+msgstr "사용 가능한 저장소가 없습니다"
 
 #: dnf/cli/commands/repolist.py:143 dnf/cli/commands/repolist.py:144
 msgid "enabled"
@@ -1605,87 +1624,87 @@ msgstr "사용 안함"
 
 #: dnf/cli/commands/repolist.py:162
 msgid "Repo-id            : "
-msgstr "Repo-id            : "
+msgstr "Repo-id : "
 
 #: dnf/cli/commands/repolist.py:163
 msgid "Repo-name          : "
-msgstr "Repo-name          : "
+msgstr "Repo-name : "
 
 #: dnf/cli/commands/repolist.py:166
 msgid "Repo-status        : "
-msgstr "Repo-status        : "
+msgstr "Repo-status : "
 
 #: dnf/cli/commands/repolist.py:169
 msgid "Repo-revision      : "
-msgstr "Repo-revision      : "
+msgstr "Repo-revision : "
 
 #: dnf/cli/commands/repolist.py:173
 msgid "Repo-tags          : "
-msgstr "Repo-tags          : "
+msgstr "Repo-tags  : "
 
 #: dnf/cli/commands/repolist.py:180
 msgid "Repo-distro-tags      : "
-msgstr "Repo-distro-tags      : "
+msgstr "Repo-distro-tags : "
 
 #: dnf/cli/commands/repolist.py:192
 msgid "Repo-updated       : "
-msgstr "Repo-updated       : "
+msgstr "Repo-updated : "
 
 #: dnf/cli/commands/repolist.py:194
 msgid "Repo-pkgs          : "
-msgstr "Repo-pkgs          : "
+msgstr "Repo-pkgs : "
 
 #: dnf/cli/commands/repolist.py:195
 msgid "Repo-available-pkgs: "
-msgstr "Repo-available-pkgs: "
+msgstr "저장소-이용 할 수 있는-꾸러미: "
 
 #: dnf/cli/commands/repolist.py:196
 msgid "Repo-size          : "
-msgstr "Repo-size          : "
+msgstr "Repo-size : "
 
 #: dnf/cli/commands/repolist.py:199
 msgid "Repo-metalink      : "
-msgstr "Repo-metalink      : "
+msgstr "Repo-metalink : "
 
 #: dnf/cli/commands/repolist.py:204
 msgid "  Updated          : "
-msgstr "  Updated          : "
+msgstr "  Updated : "
 
 #: dnf/cli/commands/repolist.py:206
 msgid "Repo-mirrors       : "
-msgstr "Repo-mirrors       : "
+msgstr "Repo-mirrors : "
 
 #: dnf/cli/commands/repolist.py:210 dnf/cli/commands/repolist.py:216
 msgid "Repo-baseurl       : "
-msgstr "Repo-baseurl       : "
+msgstr "Repo-baseurl : "
 
 #: dnf/cli/commands/repolist.py:219
 msgid "Repo-expire        : "
-msgstr "Repo-expire        : "
+msgstr "Repo-expire : "
 
 #. TRANSLATORS: Packages that are excluded - their names like (dnf systemd)
 #: dnf/cli/commands/repolist.py:223
 msgid "Repo-exclude       : "
-msgstr "Repo-exclude       : "
+msgstr "Repo-exclude : "
 
 #: dnf/cli/commands/repolist.py:227
 msgid "Repo-include       : "
-msgstr "Repo-include       : "
+msgstr "Repo-include : "
 
 #. TRANSLATORS: Number of packages that where excluded (5)
 #: dnf/cli/commands/repolist.py:232
 msgid "Repo-excluded      : "
-msgstr "Repo-excluded      : "
+msgstr "Repo-excluded : "
 
 #: dnf/cli/commands/repolist.py:236
 msgid "Repo-filename      : "
-msgstr "Repo-filename      : "
+msgstr "Repo-filename : "
 
 #. Work out the first (id) and last (enabled/disabled/count),
 #. 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
@@ -1694,25 +1713,26 @@ 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: {}"
-msgstr "총 패키지: {}"
+msgstr "총 꾸러미: {}"
 
 #: dnf/cli/commands/repoquery.py:107
 msgid "search for packages matching keyword"
-msgstr "키워드와 일치하는 패키지 검색"
+msgstr "키워드와 일치하는 꾸러미 검색"
 
 #: dnf/cli/commands/repoquery.py:121
 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)"
-msgstr "패키지의 모든 버전 쿼리 (기본값)"
+msgstr "꾸러미의 모든 버전 질문 (기본값)"
 
 #: dnf/cli/commands/repoquery.py:127
 msgid "show only results from this ARCH"
@@ -1730,7 +1750,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"
@@ -1742,7 +1764,7 @@ msgstr "REQ를 제공하는 결과 만 표시"
 
 #: dnf/cli/commands/repoquery.py:145
 msgid "shows results that requires package provides and files REQ"
-msgstr "REQ를 제공 및 파일 패키지가 필요한 결과를 표시"
+msgstr "REQ를 제공 및 파일 꾸러미가 필요한 결과를 표시"
 
 #: dnf/cli/commands/repoquery.py:148
 msgid "show only results that recommend REQ"
@@ -1772,19 +1794,21 @@ 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"
-msgstr "모든 종속성 목록과 이를 제공하는 패키지를 표시합니다"
+msgstr "모든 종속성 목록과 이를 제공하는꾸러미지를 표시합니다"
 
 #: dnf/cli/commands/repoquery.py:168
 msgid "resolve capabilities to originating package(s)"
-msgstr "원래 패키지의 기능을 제공합니다"
+msgstr "원래 꾸러미의 기능을 제공합니다"
 
 #: dnf/cli/commands/repoquery.py:170
 msgid "show recursive tree for package(s)"
-msgstr "패키지의 재귀 트리를 표시합니다"
+msgstr "꾸러미의 재귀 트리를 표시합니다"
 
 #: dnf/cli/commands/repoquery.py:172
 msgid "operate on corresponding source RPM"
@@ -1794,34 +1818,38 @@ 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"
-msgstr "비활성 모듈 스트림의 패키지 목록"
+msgstr "비활성 모듈 스트림의 꾸러미 목록"
 
 #: dnf/cli/commands/repoquery.py:182
 msgid "show detailed information about the package"
-msgstr "패키지에 대한 자세한 정보 표시"
+msgstr "꾸러미에 대한 자세한 정보 표시"
 
 #: dnf/cli/commands/repoquery.py:185
 msgid "show list of files in the package"
-msgstr "패키지에 있는 파일 목록 표시"
+msgstr "꾸러미에 있는 파일 목록 표시"
 
 #: dnf/cli/commands/repoquery.py:188
 msgid "show package source RPM name"
-msgstr "패키지 소스 RPM 이름 표시"
+msgstr "꾸러미 소스 RPM 이름 표시"
 
 #: dnf/cli/commands/repoquery.py:191
 msgid "show changelogs of the package"
-msgstr "패키지의 변경 로그 표시"
+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 사용합니다"
 
 #: dnf/cli/commands/repoquery.py:198
 msgid "show available tags to use with --queryformat"
@@ -1831,65 +1859,73 @@ 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"
-msgstr "선택한 패키지에 제시된 comps 그룹 표시"
+msgstr "선택한 꾸러미에 제시된 comps 그룹 표시"
 
 #: dnf/cli/commands/repoquery.py:218
 msgid "limit the query to installed duplicate packages"
-msgstr "설치된 중복 패키지로 쿼리 제한"
+msgstr "설치된 중복 꾸러미로 쿼리 제한"
 
 #: dnf/cli/commands/repoquery.py:225
 msgid "limit the query to installed installonly packages"
-msgstr "설치된 설치 전용 패키지로 쿼리 제한"
+msgstr "설치된 설치 전용 꾸러미로 쿼리 제한"
 
 #: 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"
-msgstr "패키지를 다운로드할 위치 표시"
+msgstr "꾸러미를 내려받기 할 위치 표시"
 
 #: dnf/cli/commands/repoquery.py:233
 msgid "Display capabilities that the package conflicts with."
-msgstr "패키지와 충돌하는 기능을 표시합니다."
+msgstr "꾸러미와 충돌하는 기능을 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:234
 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."
-msgstr "패키지를 확장할 수 있는 기능을 표시합니다."
+msgstr "꾸러미를 확장 할 수 있는 기능을 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:237
 msgid "Display capabilities provided by the package."
-msgstr "패키지가 제공하는 기능을 표시합니다."
+msgstr "꾸러미가 제공하는 기능을 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:238
 msgid "Display capabilities that the package recommends."
-msgstr "패키지에서 권장하는 기능을 표시합니다."
+msgstr "꾸러미에서 권장하는 기능을 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:239
 msgid "Display capabilities that the package depends on."
-msgstr "패키지가 의존하는 기능을 표시합니다."
+msgstr "꾸러미가 의존하는 기능을 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:240
 #, python-format
@@ -1898,49 +1934,50 @@ 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."
-msgstr "패키지에서 제안하는 기능을 표시합니다."
+msgstr "꾸러미에서 제안하는 기능을 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:244
 msgid "Display capabilities that the package can supplement."
-msgstr "패키지가 보완할 수있는 기능을 표시합니다."
+msgstr "꾸러미가 보완할 수있는 기능을 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:250
 msgid "Display only available packages."
-msgstr "사용 가능한 패키지 만 표시합니다."
+msgstr "사용 가능한 꾸러미만 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:253
 msgid "Display only installed packages."
-msgstr "설치된 패키지 만 표시합니다."
+msgstr "설치된 꾸러미만 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:254
 msgid ""
 "Display only packages that are not present in any of available repositories."
-msgstr "사용 가능한 리포지토리에없는 패키지 만 표시합니다."
+msgstr "사용 가능한 저장소에 없는 꾸러미만 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:255
 msgid ""
 "Display only packages that provide an upgrade for some already installed "
 "package."
-msgstr "이미 설치된 일부 패키지에 대한 업그레이드를 제공하는 패키지 만 표시합니다."
+msgstr "이미 설치된 일부 꾸러미에 대한 향상를 제공하는 꾸러미만 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:256
 #, python-brace-format
 msgid ""
 "Display only packages that can be removed by \"{prog} autoremove\" command."
-msgstr "\"{prog} autoremove\" 명령으로 제거할 수 있는 패키지 만 표시합니다."
+msgstr "\"{prog} autoremove\" 명령으로 제거할 수 있는 꾸러미만 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:258
 msgid "Display only packages that were installed by user."
-msgstr "사용자가 설치한 패키지 만 표시합니다."
+msgstr "사용자가 설치한 꾸러미만 표시합니다."
 
 #: dnf/cli/commands/repoquery.py:270
 msgid "Display only recently edited packages"
-msgstr "최근에 수정한 패키지 만 표시합니다"
+msgstr "최근에 수정한 꾸러미만 표시합니다"
 
 #: dnf/cli/commands/repoquery.py:273
 msgid "the key to search for"
@@ -1948,22 +1985,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"
@@ -1971,30 +2009,34 @@ msgstr "인수 {}에는 --whatrequires 또는 --whatdepends 옵션이 필요합
 
 #: dnf/cli/commands/repoquery.py:344
 msgid "Package {} contains no files"
-msgstr "패키지 {}에 파일이 없습니다"
+msgstr "꾸러미 {}에 파일이 없습니다"
 
 #: dnf/cli/commands/repoquery.py:561
 #, 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"
-"  지정된 패키지의 경우 패키지 트리를 출력하십시오."
+"  지정된 꾸러미의 경우 꾸러미 트리를 출력하십시오."
 
 #: dnf/cli/commands/search.py:46
 msgid "search package details for the given string"
-msgstr "지정된 문자열의 패키지 정보를 검색합니다"
+msgstr "지정된 문자열의 꾸러미 정보를 검색합니다"
 
 #: dnf/cli/commands/search.py:51
 msgid "search also package description and URL"
-msgstr "패키지 설명 및 URL 검색"
+msgstr "꾸러미 설명 및 URL 검색"
 
 #: dnf/cli/commands/search.py:52
 msgid "KEYWORD"
@@ -2004,27 +2046,26 @@ msgstr "KEYWORD"
 msgid "Keyword to search for"
 msgstr "검색 키워드"
 
-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506
+#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460
 msgctxt "long"
 msgid "Name"
 msgstr "이름"
 
-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559
+#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513
 msgctxt "long"
 msgid "Summary"
 msgstr "요약"
 
-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569
+#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523
 msgctxt "long"
 msgid "Description"
 msgstr "설명"
 
-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562
+#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516
 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 " & "
@@ -2034,18 +2075,18 @@ 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."
-msgstr "일치하는 항목이 없습니다."
+msgstr "일치 항목이 없습니다."
 
 #: dnf/cli/commands/shell.py:47
 #, python-brace-format
@@ -2110,7 +2151,7 @@ msgid ""
 "    resolve the transaction set"
 msgstr ""
 "{}\n"
-"    트랜잭션 집합을 분석합니다"
+" 연결 집합을 분석합니다"
 
 #: dnf/cli/commands/shell.py:195
 msgid ""
@@ -2120,9 +2161,9 @@ msgid ""
 "  run: run the transaction"
 msgstr ""
 "{} arg\n"
-"  list : 트랜잭션 내용을 나열합니다\n"
-"  reset : 트랜잭션을 재설정합니다 (zero-out)\n"
-"  run: 트랜잭션을 실행합니다"
+"  list : 연결 내용을 나열합니다\n"
+"  reset : 연결을 재설정합니다 (zero-out)\n"
+"  run: 연결을 실행합니다"
 
 #: dnf/cli/commands/shell.py:201
 msgid ""
@@ -2130,7 +2171,7 @@ msgid ""
 "    run the transaction"
 msgstr ""
 "{}\n"
-"    트랜잭션을 실행합니다."
+"연결을 실행합니다"
 
 #: dnf/cli/commands/shell.py:205
 msgid ""
@@ -2154,24 +2195,24 @@ msgid ""
 msgstr ""
 "쉘 관련 인수:\n"
 "\n"
-"config                   설정 옵션 설정\n"
-"help                     도움말 인쇄\n"
-"repository (or repo)     리포지토리 활성화,비활성화 또는 나열\n"
-"resolvedep               트랜잭션 세트 분석\n"
-"transaction (or ts)      트랜잭션 세트 목록,재설정 또는 실행\n"
-"run                      트랜잭션 세트 분석 및 실행\n"
-"exit (or quit)           쉘 종료"
+"config  설정 옵션 설정\n"
+"help  도움말 인쇄\n"
+"repository (or repo)  저장소 활성화,비활성화 또는 나열\n"
+"resolvedep  연결 구성 분석\n"
+"transaction (or ts)  연결 구성 목록,재설정 또는 실행\n"
+"run  연결 구성 분석 및 실행\n"
+"exit (or quit)  쉘 종료"
 
-#: dnf/cli/commands/shell.py:259
+#: dnf/cli/commands/shell.py:262
 #, python-format
 msgid "Error: Cannot open %s for reading"
 msgstr "오류: 읽기 전용 %s를 열 수 없습니다"
 
-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187
+#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187
 msgid "Complete!"
 msgstr "완료되었습니다!"
 
-#: dnf/cli/commands/shell.py:291
+#: dnf/cli/commands/shell.py:294
 msgid "Leaving Shell"
 msgstr "쉘 나가기"
 
@@ -2202,45 +2243,45 @@ msgstr "보안"
 
 #: dnf/cli/commands/updateinfo.py:48
 msgid "newpackage"
-msgstr "새 패키지"
+msgstr "새 꾸러미"
 
 #: dnf/cli/commands/updateinfo.py:50
 msgid "Critical/Sec."
-msgstr "심각/보안 취약점"
+msgstr "심각/보안."
 
 #: dnf/cli/commands/updateinfo.py:51
 msgid "Important/Sec."
-msgstr "중요/보안 취약점"
+msgstr "중요/보안."
 
 #: dnf/cli/commands/updateinfo.py:52
 msgid "Moderate/Sec."
-msgstr "보통/보안 취약점"
+msgstr "보통/보안."
 
 #: dnf/cli/commands/updateinfo.py:53
 msgid "Low/Sec."
-msgstr "낮음/보안 취약점"
+msgstr "낮음/보안."
 
 #: dnf/cli/commands/updateinfo.py:63
 msgid "display advisories about packages"
-msgstr "패키지관련 권고 표시"
+msgstr "꾸러미관련 권고 표시"
 
 #: dnf/cli/commands/updateinfo.py:77
 msgid "advisories about newer versions of installed packages (default)"
-msgstr "설치된 최신 버전의 패키지에 대한 권고 (기본값)"
+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"
-msgstr "설치된 패키지 모든 버전에 대한 권고"
+msgstr "설치된 꾸러미 모든 버전에 대한 권고"
 
 #: dnf/cli/commands/updateinfo.py:92
 msgid "show summary of advisories (default)"
@@ -2264,11 +2305,11 @@ msgstr "bugzilla 참조가 있는 권고 만 표시"
 
 #: dnf/cli/commands/updateinfo.py:168
 msgid "installed"
-msgstr "설치됨"
+msgstr "설치되었습니다"
 
 #: dnf/cli/commands/updateinfo.py:171
 msgid "updates"
-msgstr "업데이트"
+msgstr "최신화"
 
 #: dnf/cli/commands/updateinfo.py:174
 msgid "all"
@@ -2280,11 +2321,11 @@ msgstr "사용 가능"
 
 #: dnf/cli/commands/updateinfo.py:278
 msgid "Updates Information Summary: "
-msgstr "업데이트 정보 요약 "
+msgstr "최신화 정보 요약: "
 
 #: dnf/cli/commands/updateinfo.py:281
 msgid "New Package notice(s)"
-msgstr "새 패키지 알림"
+msgstr "새 꾸러미 알림"
 
 #: dnf/cli/commands/updateinfo.py:282
 msgid "Security notice(s)"
@@ -2324,11 +2365,11 @@ msgstr "기타 다른 공지"
 
 #: dnf/cli/commands/updateinfo.py:316
 msgid "Unknown/Sec."
-msgstr "알 수 없음 /보안 취약점"
+msgstr "알 수 없음/보안."
 
 #: dnf/cli/commands/updateinfo.py:357
 msgid "Bugs"
-msgstr "버그"
+msgstr "결점"
 
 #: dnf/cli/commands/updateinfo.py:357
 msgid "Type"
@@ -2336,11 +2377,11 @@ msgstr "유형"
 
 #: dnf/cli/commands/updateinfo.py:357
 msgid "Update ID"
-msgstr "ID 업데이트"
+msgstr "ID 최신화"
 
 #: dnf/cli/commands/updateinfo.py:357
 msgid "Updated"
-msgstr "업데이트됨"
+msgstr "최신화됨"
 
 #: dnf/cli/commands/updateinfo.py:358
 msgid "CVEs"
@@ -2364,10 +2405,10 @@ msgstr "파일"
 
 # translation auto-copied from project subscription-manager, version 1.11.X,
 # document keys
-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499
-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
+#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654
+#: dnf/cli/output.py:1656 dnf/util.py:617
 msgid "Installed"
-msgstr "설치됨"
+msgstr "설치되었습니다"
 
 #: dnf/cli/commands/updateinfo.py:385
 msgid "false"
@@ -2379,17 +2420,19 @@ msgstr "true"
 
 #: dnf/cli/commands/upgrade.py:40
 msgid "upgrade a package or packages on your system"
-msgstr "시스템에서 패키지를 업그레이드하십시오."
+msgstr "시스템에서 꾸러미를 최신화하세요"
 
 #: dnf/cli/commands/upgrade.py:44
 msgid "Package to upgrade"
-msgstr "업그레이드할 패키지"
+msgstr "최신화 할 꾸러미"
 
 #: dnf/cli/commands/upgrademinimal.py:31
 msgid ""
 "upgrade, but only 'newest' package match which fixes a problem that affects "
 "your system"
-msgstr "업그레이드하지만 ‘최신' 패키지에만 시스템에 영향을 줄 수 있는 수정된 문제가 있습니다"
+msgstr ""
+"최신화 하지만 ‘최신' 꾸러미에만 시스템에 영향을 줄 수 있는 수정된 문제가 있습"
+"니다"
 
 #: dnf/cli/main.py:88
 msgid "Terminated."
@@ -2401,23 +2444,23 @@ 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."
@@ -2493,11 +2536,11 @@ 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"
-msgstr "패키지를 건너 뛰어 종속성 문제 해결"
+msgstr "꾸러미를 건너 뛰어 종속성 문제 해결"
 
 #: dnf/cli/option_parser.py:213
 msgid "show command help"
@@ -2505,19 +2548,19 @@ msgstr "명령 도움말 표시"
 
 #: dnf/cli/option_parser.py:217
 msgid "allow erasing of installed packages to resolve dependencies"
-msgstr "종속성을 해결하기 위해 설치된 패키지 지우기 허용"
+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"
-msgstr "트랜잭션을 최상의 선택 옵션으로 제한하지 마십시오"
+msgstr "연결을 최상의 선택 옵션으로 제한하지 마십시오"
 
 #: dnf/cli/option_parser.py:226
 msgid "run entirely from system cache, don't update cache"
-msgstr "시스템 캐시에서 완전히 실행하고, 캐시를 업데이트하지 않습니다."
+msgstr "시스템 캐쉬에서 완전히 실행하고, 캐쉬를 최신화하지 않습니다"
 
 #: dnf/cli/option_parser.py:230
 msgid "maximum command wait time"
@@ -2529,11 +2572,11 @@ msgstr "디버깅 출력 레벨"
 
 #: dnf/cli/option_parser.py:236
 msgid "dumps detailed solving results into files"
-msgstr "자세한 해결 결과를 파일로 덤프합니다."
+msgstr "자세한 해결 결과를 파일로 덤프합니다"
 
 #: dnf/cli/option_parser.py:240
 msgid "show duplicates, in repos, in list/search commands"
-msgstr "repos에 있는 중복 목록을 목록/검색 명령에 표시합니다."
+msgstr "repos에 있는 중복 목록을 목록/검색 명령에 표시합니다"
 
 #: dnf/cli/option_parser.py:243
 msgid "error output level"
@@ -2545,8 +2588,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"
@@ -2564,19 +2607,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)"
@@ -2588,7 +2637,7 @@ msgstr "config-manager 명령으로 repos를 비활성화합니다 (자동 저
 
 #: dnf/cli/option_parser.py:283
 msgid "exclude packages by name or glob"
-msgstr "이름이나 glob로 패키지를 제거합니다"
+msgstr "이름이나 glob로 꾸러미를 제거합니다"
 
 #: dnf/cli/option_parser.py:288
 msgid "disable excludepkgs"
@@ -2598,7 +2647,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"
@@ -2626,51 +2677,51 @@ msgstr "IPv6 주소 만 확인"
 
 #: dnf/cli/option_parser.py:314
 msgid "set directory to copy packages to"
-msgstr "패키지를 복사할 디렉토리를 설정하십시오"
+msgstr "꾸러미를 복사할 디렉토리를 설정하십시오"
 
 #: dnf/cli/option_parser.py:317
 msgid "only download packages"
-msgstr "패키지 만 다운로드"
+msgstr "꾸러미만 내려받기"
 
 #: dnf/cli/option_parser.py:319
 msgid "add a comment to transaction"
-msgstr "트랜잭션에 의견을 추가하십시오"
+msgstr "연결에 의견을 추가하십시오"
 
 #: dnf/cli/option_parser.py:322
 msgid "Include bugfix relevant packages, in updates"
-msgstr "버그 수정 관련 패키지를 업데이트에 포함"
+msgstr "결점(bug) 수정 관련 꾸러미 최신화에 포함"
 
 #: dnf/cli/option_parser.py:325
 msgid "Include enhancement relevant packages, in updates"
-msgstr "개선된 기능과 관련된 패키지를 업데이트에 포함"
+msgstr "개선된 기능과 관련된 꾸러미를 초신화에 포함"
 
 #: dnf/cli/option_parser.py:328
 msgid "Include newpackage relevant packages, in updates"
-msgstr "새 패키지 관련 패키지를 업데이트에 포함"
+msgstr "새 꾸러미 관련 꾸러미 최신화에 포함"
 
 #: dnf/cli/option_parser.py:331
 msgid "Include security relevant packages, in updates"
-msgstr "보안 관련 패키지 업데이트에 포함"
+msgstr "보안 관련 꾸러미 최신화에 포함"
 
 #: dnf/cli/option_parser.py:335
 msgid "Include packages needed to fix the given advisory, in updates"
-msgstr "주어진 권고를 수정하는 데 필요한 패키지를 업데이트에 포함"
+msgstr "주어진 권고를 수정하는 데 필요한 꾸러미를 최신화에 포함"
 
 #: dnf/cli/option_parser.py:339
 msgid "Include packages needed to fix the given BZ, in updates"
-msgstr "주어진 BZ를 수정하는 데 필요한 패키지를 업데이트에 포함"
+msgstr "주어진 BZ를 수정하는 데 필요한 꾸러미를 최신화에 포함"
 
 #: dnf/cli/option_parser.py:342
 msgid "Include packages needed to fix the given CVE, in updates"
-msgstr "주어진 CVE를 수정하는 데 필요한 패키지를 업데이트에 포함"
+msgstr "주어진 CVE를 수정하는 데 필요한 꾸러미를 최신화에 포함"
 
 #: dnf/cli/option_parser.py:347
 msgid "Include security relevant packages matching the severity, in updates"
-msgstr "심각도와 일치하는 보안 관련 패키지를 업데이트에 포함"
+msgstr "심각도와 일치하는 보안 관련 꾸러미를 최신화에 포함"
 
 #: dnf/cli/option_parser.py:353
 msgid "Force the use of an architecture"
-msgstr "아키텍처의 사용을 강제합니다"
+msgstr "구조의 사용을 강제합니다"
 
 #: dnf/cli/option_parser.py:375
 msgid "List of Main Commands:"
@@ -2688,13 +2739,13 @@ msgstr "‘%s' 인수를 인코딩할 수 없습니다: %s"
 #. Translators: This is abbreviated 'Name'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:505
+#: dnf/cli/output.py:459
 msgctxt "short"
 msgid "Name"
 msgstr "이름"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:511
+#: dnf/cli/output.py:465
 msgid "Epoch"
 msgstr "기간"
 
@@ -2702,38 +2753,38 @@ msgstr "기간"
 #. use the full (unabbreviated) term 'Version' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:512 dnf/cli/output.py:1335
+#: dnf/cli/output.py:466 dnf/cli/output.py:1248
 msgctxt "short"
 msgid "Version"
 msgstr "버전"
 
 #. Translators: This is the full (unabbreviated) term 'Version'.
-#: dnf/cli/output.py:513 dnf/cli/output.py:1337
+#: dnf/cli/output.py:467 dnf/cli/output.py:1250
 msgctxt "long"
 msgid "Version"
 msgstr "버전"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:516
+#: dnf/cli/output.py:470
 msgid "Release"
 msgstr "릴리즈"
 
 #. Translators: This is abbreviated 'Architecture', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:517 dnf/cli/output.py:1326
+#: dnf/cli/output.py:471 dnf/cli/output.py:1239
 msgctxt "short"
 msgid "Arch"
-msgstr "아키텍처"
+msgstr "구조"
 
 #. Translators: This is the full word 'Architecture', used when
 #. we have enough space.
-#: dnf/cli/output.py:518 dnf/cli/output.py:1329
+#: dnf/cli/output.py:472 dnf/cli/output.py:1242
 msgctxt "long"
 msgid "Architecture"
-msgstr "아키텍처"
+msgstr "구조"
 
 #. Translators: This is the full (unabbreviated) term 'Size'.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1352
+#: dnf/cli/output.py:474 dnf/cli/output.py:1265
 msgctxt "long"
 msgid "Size"
 msgstr "크기"
@@ -2742,361 +2793,357 @@ msgstr "크기"
 #. not be longer than 5 characters. If the term 'Size' in your
 #. language is not longer than 5 characters then you can use it
 #. unabbreviated.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1350
+#: dnf/cli/output.py:474 dnf/cli/output.py:1263
 msgctxt "short"
 msgid "Size"
 msgstr "크기"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:524
+#: dnf/cli/output.py:478
 msgid "Source"
 msgstr "소스"
 
 #. Translators: This is abbreviated 'Repository', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:525 dnf/cli/output.py:1341
+#: dnf/cli/output.py:479 dnf/cli/output.py:1254
 msgctxt "short"
 msgid "Repo"
-msgstr "리포지터리"
+msgstr "레포지터리"
 
 #. Translators: This is the full word 'Repository', used when
 #. we have enough space.
-#: dnf/cli/output.py:526 dnf/cli/output.py:1344
+#: dnf/cli/output.py:480 dnf/cli/output.py:1257
 msgctxt "long"
 msgid "Repository"
-msgstr "리포지터리"
+msgstr "레포지터리"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:533
+#: dnf/cli/output.py:487
 msgid "From repo"
-msgstr "리포지터리에서"
+msgstr "레포지터리에서"
 
 #. :hawkey does not support changelog information
 #. print(_("Committer   : %s") % ucd(pkg.committer))
 #. print(_("Committime  : %s") % time.ctime(pkg.committime))
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:539
+#: dnf/cli/output.py:493
 msgid "Packager"
-msgstr "패키지 프로그램"
+msgstr "꾸러미 생성자"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:541
+#: dnf/cli/output.py:495
 msgid "Buildtime"
 msgstr "빌드 시간"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:545
+#: dnf/cli/output.py:499
 msgid "Install time"
 msgstr "설치 시간"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:554
+#: dnf/cli/output.py:508
 msgid "Installed by"
 msgstr "설치자"
 
 #. Translators: This is abbreviated 'Summary'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:558
+#: dnf/cli/output.py:512
 msgctxt "short"
 msgid "Summary"
 msgstr "요약"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:564
+#: dnf/cli/output.py:518
 msgid "License"
-msgstr "라이센스"
+msgstr "저작권"
 
 #. Translators: This is abbreviated 'Description'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:568
+#: dnf/cli/output.py:522
 msgctxt "short"
 msgid "Description"
 msgstr "설명"
 
-#: dnf/cli/output.py:695
-msgid "No packages to list"
-msgstr "목록에 패키지가 없습니다"
-
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "y"
 msgstr "y"
 
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "yes"
 msgstr "예"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "n"
 msgstr "n"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "no"
-msgstr "아니요"
+msgstr "아니"
 
-#: dnf/cli/output.py:711
+#: dnf/cli/output.py:655
 msgid "Is this ok [y/N]: "
-msgstr "정말입니까 [y/N]: "
+msgstr "진행 할 까요? [y/N]: "
 
-#: dnf/cli/output.py:715
+#: dnf/cli/output.py:659
 msgid "Is this ok [Y/n]: "
-msgstr "정말입니까 [Y/n]: "
+msgstr "진행 할 까요? [Y/n]: "
 
-#: dnf/cli/output.py:795
+#: dnf/cli/output.py:739
 #, python-format
 msgid "Group: %s"
 msgstr "그룹 %s"
 
-#: dnf/cli/output.py:799
+#: dnf/cli/output.py:743
 #, python-format
 msgid " Group-Id: %s"
 msgstr " 그룹 ID: %s"
 
-#: dnf/cli/output.py:801 dnf/cli/output.py:840
+#: dnf/cli/output.py:745 dnf/cli/output.py:784
 #, python-format
 msgid " Description: %s"
 msgstr " 설명: %s"
 
-#: dnf/cli/output.py:803
+#: dnf/cli/output.py:747
 #, python-format
 msgid " Language: %s"
 msgstr " 언어: %s"
 
-#: dnf/cli/output.py:806
+#: dnf/cli/output.py:750
 msgid " Mandatory Packages:"
-msgstr " 필수 패키지 :"
+msgstr " 필수 꾸러미 :"
 
-#: dnf/cli/output.py:807
+#: dnf/cli/output.py:751
 msgid " Default Packages:"
-msgstr " 기본 패키지 :"
+msgstr " 기본 꾸러미 :"
 
-#: dnf/cli/output.py:808
+#: dnf/cli/output.py:752
 msgid " Optional Packages:"
-msgstr " 선택적인 패키지 :"
+msgstr " 선택적인 꾸러미 :"
 
-#: dnf/cli/output.py:809
+#: dnf/cli/output.py:753
 msgid " Conditional Packages:"
-msgstr " 추가 가능 패키지 :"
+msgstr " 추가 가능 꾸러미 :"
 
-#: dnf/cli/output.py:834
+#: dnf/cli/output.py:778
 #, python-format
 msgid "Environment Group: %s"
 msgstr "환경 그룹 : %s"
 
-#: dnf/cli/output.py:837
+#: dnf/cli/output.py:781
 #, python-format
 msgid " Environment-Id: %s"
 msgstr " 환경 -ID : %s"
 
-#: dnf/cli/output.py:843
+#: dnf/cli/output.py:787
 msgid " Mandatory Groups:"
 msgstr " 필수 그룹 :"
 
-#: dnf/cli/output.py:844
+#: dnf/cli/output.py:788
 msgid " Optional Groups:"
 msgstr " 선택적인 그룹 :"
 
-#: dnf/cli/output.py:865
+#: dnf/cli/output.py:809
 msgid "Matched from:"
 msgstr "일치하는 항목 :"
 
-#: dnf/cli/output.py:879
+#: dnf/cli/output.py:823
 #, python-format
 msgid "Filename    : %s"
 msgstr "파일 이름 : %s"
 
-#: dnf/cli/output.py:904
+#: dnf/cli/output.py:848
 #, python-format
 msgid "Repo        : %s"
 msgstr "리포지토리      : %s"
 
-#: dnf/cli/output.py:913
+#: dnf/cli/output.py:857
 msgid "Description : "
 msgstr "설명 : "
 
-#: dnf/cli/output.py:917
+#: dnf/cli/output.py:861
 #, python-format
 msgid "URL         : %s"
 msgstr "URL         : %s"
 
-#: dnf/cli/output.py:921
+#: dnf/cli/output.py:865
 #, python-format
 msgid "License     : %s"
-msgstr "라이센스    : %s"
+msgstr "저작권 : %s"
 
-#: dnf/cli/output.py:927
+#: dnf/cli/output.py:871
 #, python-format
 msgid "Provide    : %s"
 msgstr "제공        : %s"
 
-#: dnf/cli/output.py:947
+#: dnf/cli/output.py:891
 #, python-format
 msgid "Other       : %s"
 msgstr "기타       : %s"
 
-#: dnf/cli/output.py:996
+#: dnf/cli/output.py:940
 msgid "There was an error calculating total download size"
-msgstr "총 다운로드 크기를 계산하는 중에 오류가 발생했습니다"
+msgstr "총 내려받기 크기를 계산하는 중에 오류가 발생했습니다"
 
-#: dnf/cli/output.py:1002
+#: dnf/cli/output.py:946
 #, python-format
 msgid "Total size: %s"
 msgstr "전체 크기: %s"
 
-#: dnf/cli/output.py:1005
+#: dnf/cli/output.py:949
 #, python-format
 msgid "Total download size: %s"
-msgstr "총 다운로드 크기 : %s"
+msgstr "총계 내려받기 크기: %s"
 
-#: dnf/cli/output.py:1008
+#: dnf/cli/output.py:952
 #, python-format
 msgid "Installed size: %s"
 msgstr "설치된 크기 : %s"
 
-#: dnf/cli/output.py:1026
+#: dnf/cli/output.py:970
 msgid "There was an error calculating installed size"
 msgstr "설치된 크기를 계산하는 동안 오류가 발생했습니다"
 
-#: dnf/cli/output.py:1030
+#: dnf/cli/output.py:974
 #, python-format
 msgid "Freed space: %s"
 msgstr "사용 가능한 공간 : %s"
 
-#: dnf/cli/output.py:1039
+#: dnf/cli/output.py:983
 msgid "Marking packages as installed by the group:"
-msgstr "그룹에 설치된 패키지 표시:"
+msgstr "그룹에 설치된 꾸러미 표시:"
 
-#: dnf/cli/output.py:1046
+#: dnf/cli/output.py:990
 msgid "Marking packages as removed by the group:"
-msgstr "그룹에 의해 제거된 패키지 표시:"
+msgstr "그룹에 의해 제거된 꾸러미 표시:"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Group"
 msgstr "그룹"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Packages"
-msgstr "패키지"
+msgstr "꾸러미"
 
-#: dnf/cli/output.py:1133
+#: dnf/cli/output.py:1046
 msgid "Installing group/module packages"
-msgstr "그룹 / 모듈 패키지 설치"
+msgstr "그룹/모듈 꾸러미 설치"
 
-#: dnf/cli/output.py:1134
+#: dnf/cli/output.py:1047
 msgid "Installing group packages"
-msgstr "그룹 패키지 설치"
+msgstr "그룹 꾸러미 설치"
 
 #. TRANSLATORS: This is for a list of packages to be installed.
-#: dnf/cli/output.py:1138
+#: dnf/cli/output.py:1051
 msgctxt "summary"
 msgid "Installing"
 msgstr "설치 중"
 
 #. TRANSLATORS: This is for a list of packages to be upgraded.
-#: dnf/cli/output.py:1140
+#: dnf/cli/output.py:1053
 msgctxt "summary"
 msgid "Upgrading"
-msgstr "업그레이드 중"
+msgstr "향상 중"
 
 #. TRANSLATORS: This is for a list of packages to be reinstalled.
-#: dnf/cli/output.py:1142
+#: dnf/cli/output.py:1055
 msgctxt "summary"
 msgid "Reinstalling"
 msgstr "재설치 중"
 
-#: dnf/cli/output.py:1144
+#: dnf/cli/output.py:1057
 msgid "Installing dependencies"
-msgstr "종속 패키지 설치 중"
+msgstr "종속 꾸러미 설치 중"
 
-#: dnf/cli/output.py:1145
+#: dnf/cli/output.py:1058
 msgid "Installing weak dependencies"
-msgstr "취약한 종속 패키지 설치 중"
+msgstr "취약한 종속 꾸러미 설치 중"
 
+# translation auto-copied from project subscription-manager, version 1.11.X,
+# document keys
 #. TRANSLATORS: This is for a list of packages to be removed.
-# translation auto-copied from project subscription-manager, version 1.11.X,
-# document keys
-#: dnf/cli/output.py:1147
+#: dnf/cli/output.py:1060
 msgid "Removing"
 msgstr "삭제 중"
 
-#: dnf/cli/output.py:1148
+#: dnf/cli/output.py:1061
 msgid "Removing dependent packages"
-msgstr "종속 패키지 제거"
+msgstr "종속 꾸러미지 제거"
 
-#: dnf/cli/output.py:1149
+#: dnf/cli/output.py:1062
 msgid "Removing unused dependencies"
-msgstr "사용하지 않는 종속 패키지 제거"
+msgstr "사용하지 않는 종속 꾸러미 제거"
 
 #. TRANSLATORS: This is for a list of packages to be downgraded.
-#: dnf/cli/output.py:1151
+#: dnf/cli/output.py:1064
 msgctxt "summary"
 msgid "Downgrading"
-msgstr "다운그레이드 중"
+msgstr "하향설치 중"
 
-#: dnf/cli/output.py:1176
+#: dnf/cli/output.py:1089
 msgid "Installing module profiles"
 msgstr "모듈 프로파일 설치"
 
-#: dnf/cli/output.py:1185
+#: dnf/cli/output.py:1098
 msgid "Disabling module profiles"
 msgstr "모듈 프로파일 비활성화"
 
-#: dnf/cli/output.py:1194
+#: dnf/cli/output.py:1107
 msgid "Enabling module streams"
 msgstr "모듈 스트림 활성화"
 
-#: dnf/cli/output.py:1202
+#: dnf/cli/output.py:1115
 msgid "Switching module streams"
 msgstr "모듈 스트림 전환"
 
-#: dnf/cli/output.py:1210
+#: dnf/cli/output.py:1123
 msgid "Disabling modules"
 msgstr "모듈 비활성화"
 
-#: dnf/cli/output.py:1218
+#: dnf/cli/output.py:1131
 msgid "Resetting modules"
 msgstr "모듈 재설정"
 
-#: dnf/cli/output.py:1230
+#: dnf/cli/output.py:1143
 msgid "Installing Environment Groups"
-msgstr "환경 그룹 설치"
+msgstr "환경 그룹 설치 중"
 
-#: dnf/cli/output.py:1237
+#: dnf/cli/output.py:1150
 msgid "Upgrading Environment Groups"
-msgstr "환경 그룹 업그레이드"
+msgstr "환경 그룹 향상"
 
-#: dnf/cli/output.py:1244
+#: dnf/cli/output.py:1157
 msgid "Removing Environment Groups"
 msgstr "환경 그룹 제거"
 
-#: dnf/cli/output.py:1251
+#: dnf/cli/output.py:1164
 msgid "Installing Groups"
 msgstr "그룹 설치"
 
-#: dnf/cli/output.py:1258
+#: dnf/cli/output.py:1171
 msgid "Upgrading Groups"
-msgstr "그룹 업그레이드"
+msgstr "그룹 향상"
 
-#: dnf/cli/output.py:1265
+#: dnf/cli/output.py:1178
 msgid "Removing Groups"
 msgstr "그룹 제거"
 
-#: dnf/cli/output.py:1281
+#: dnf/cli/output.py:1194
 #, python-format
 msgid ""
 "Skipping packages with conflicts:\n"
 "(add '%s' to command line to force their upgrade)"
 msgstr ""
-"충돌 패키지 건너 뛰기 :\n"
-"(업그레이드를 강제하려면 명령행에 '%s' 추가)"
+"충돌 꾸러미 건너 뛰기:\n"
+"(향상을 강제하려면 명령행에 '%s' 추가)"
 
-#: dnf/cli/output.py:1291
+#: dnf/cli/output.py:1204
 #, python-format
 msgid "Skipping packages with broken dependencies%s"
-msgstr "손상된 종속성이 있는 %s 패키지 건너 뛰기"
+msgstr "손상된 종속성이 있는 %s 꾸러미 건너 뛰기"
 
-#: dnf/cli/output.py:1295
+#: dnf/cli/output.py:1208
 msgid " or part of a group"
 msgstr " 또는 그룹의 일부"
 
@@ -3104,22 +3151,22 @@ msgstr " 또는 그룹의 일부"
 #. use the full (unabbreviated) term 'Package' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:1320
+#: dnf/cli/output.py:1233
 msgctxt "short"
 msgid "Package"
-msgstr "패키지"
+msgstr "꾸러미"
 
 #. Translators: This is the full (unabbreviated) term 'Package'.
-#: dnf/cli/output.py:1322
+#: dnf/cli/output.py:1235
 msgctxt "long"
 msgid "Package"
-msgstr "패키지"
+msgstr "꾸러미"
 
-#: dnf/cli/output.py:1371
+#: dnf/cli/output.py:1284
 msgid "replacing"
 msgstr "교체"
 
-#: dnf/cli/output.py:1378
+#: dnf/cli/output.py:1291
 #, python-format
 msgid ""
 "\n"
@@ -3127,296 +3174,280 @@ msgid ""
 "%s\n"
 msgstr ""
 "\n"
-"트랜잭션 요약\n"
+"연결 요약\n"
 "%s\n"
 
 #. TODO: remove
-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933
+#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815
 msgid "Install"
 msgstr "설치"
 
 # ctx::sourcefile::Navigation Menu
-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941
+#: dnf/cli/output.py:1300 dnf/cli/output.py:1823
 msgid "Upgrade"
-msgstr "업그레이드"
+msgstr "향상"
 
-#: dnf/cli/output.py:1388
+#: dnf/cli/output.py:1301
 msgid "Remove"
 msgstr "삭제"
 
-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939
+#: dnf/cli/output.py:1303 dnf/cli/output.py:1821
 msgid "Downgrade"
-msgstr "다운 그레이드"
+msgstr "하향설치"
 
-#: dnf/cli/output.py:1391
+#: dnf/cli/output.py:1304
 msgid "Skip"
 msgstr "건너뛰기"
 
-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416
+#: dnf/cli/output.py:1313 dnf/cli/output.py:1329
 msgid "Package"
 msgid_plural "Packages"
-msgstr[0] "패키지"
+msgstr[0] "꾸러미"
 
-#: dnf/cli/output.py:1418
+#: dnf/cli/output.py:1331
 msgid "Dependent package"
 msgid_plural "Dependent packages"
-msgstr[0] "종속 패키지"
-
-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942
-msgid "Upgraded"
-msgstr "업그레이드 됨"
-
-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940
-msgid "Downgraded"
-msgstr "다운 그레이드"
-
-#: dnf/cli/output.py:1503
-msgid "Reinstalled"
-msgstr "다시 설치됨"
-
-#: dnf/cli/output.py:1504
-msgid "Skipped"
-msgstr "건너 뛰기됨"
-
-#: dnf/cli/output.py:1505
-msgid "Removed"
-msgstr "제거됨"
-
-#: dnf/cli/output.py:1508
-msgid "Failed"
-msgstr "실패하였습니다"
+msgstr[0] "종속 꾸러미"
 
 # auto translated by TM merge from project: RHOSP Director Installation and
 # Usage , version: 11-Korean, DocId: master
-#: dnf/cli/output.py:1559
+#: dnf/cli/output.py:1439
 msgid "Total"
 msgstr "합계"
 
-#: dnf/cli/output.py:1587
+#: dnf/cli/output.py:1467
 msgid "<unset>"
 msgstr "<unset>"
 
-#: dnf/cli/output.py:1588
+#: dnf/cli/output.py:1468
 msgid "System"
 msgstr "시스템"
 
-#: dnf/cli/output.py:1638
+#: dnf/cli/output.py:1518
 msgid "Command line"
 msgstr "명령행"
 
 #. TRANSLATORS: user names who executed transaction in history command output
-#: dnf/cli/output.py:1649
+#: dnf/cli/output.py:1531
 msgid "User name"
 msgstr "사용자 이름"
 
 # translation auto-copied from project subscription-manager, version 1.11.X,
 # document keys
-#: dnf/cli/output.py:1651
+#: dnf/cli/output.py:1533
 msgid "ID"
 msgstr "ID"
 
-#: dnf/cli/output.py:1653
+#: dnf/cli/output.py:1535
 msgid "Date and time"
 msgstr "날짜와 시간"
 
-#: dnf/cli/output.py:1654
+#: dnf/cli/output.py:1536
 msgid "Action(s)"
 msgstr "작업"
 
-#: dnf/cli/output.py:1655
+#: dnf/cli/output.py:1537
 msgid "Altered"
 msgstr "변경됨"
 
-#: dnf/cli/output.py:1698
+#: dnf/cli/output.py:1580
 msgid "No transactions"
-msgstr "트랜잭션 없음"
+msgstr "연결 없음"
 
-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715
+#: dnf/cli/output.py:1581 dnf/cli/output.py:1597
 msgid "Failed history info"
 msgstr "실패 기록 정보"
 
-#: dnf/cli/output.py:1714
+#: dnf/cli/output.py:1596
 msgid "No transaction ID, or package, given"
-msgstr "트랜잭션 ID 또는 패키지가 지정되지 않았습니다"
+msgstr "연결 ID 또는 꾸러미가 지정되지 않았습니다"
 
-#: dnf/cli/output.py:1772
+#: dnf/cli/output.py:1654
 msgid "Erased"
-msgstr "삭제됨"
+msgstr "제거되었습니다"
 
-#: dnf/cli/output.py:1774
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616
+msgid "Downgraded"
+msgstr "하향설치됨"
+
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615
+msgid "Upgraded"
+msgstr "향상되었습니다"
+
+#: dnf/cli/output.py:1656
 msgid "Not installed"
 msgstr "설치되지 않음"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Newer"
 msgstr "최신"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Older"
 msgstr "이전"
 
-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825
+#: dnf/cli/output.py:1705 dnf/cli/output.py:1707
 msgid "Transaction ID :"
-msgstr "트랜잭션 ID :"
+msgstr "연결 ID :"
 
-#: dnf/cli/output.py:1828
+#: dnf/cli/output.py:1710
 msgid "Begin time     :"
 msgstr "시작 시간 :"
 
-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833
+#: dnf/cli/output.py:1713 dnf/cli/output.py:1715
 msgid "Begin rpmdb    :"
 msgstr "rpmdb 시작 :"
 
-#: dnf/cli/output.py:1839
+#: dnf/cli/output.py:1721
 #, python-format
 msgid "(%u seconds)"
 msgstr "(%u 초)"
 
-#: dnf/cli/output.py:1841
+#: dnf/cli/output.py:1723
 #, python-format
 msgid "(%u minutes)"
 msgstr "(%u 분)"
 
-#: dnf/cli/output.py:1843
+#: dnf/cli/output.py:1725
 #, python-format
 msgid "(%u hours)"
 msgstr "(%u 시간)"
 
-#: dnf/cli/output.py:1845
+#: dnf/cli/output.py:1727
 #, python-format
 msgid "(%u days)"
 msgstr "(%u 일)"
 
-#: dnf/cli/output.py:1846
+#: dnf/cli/output.py:1728
 msgid "End time       :"
 msgstr "종료 시간 :"
 
-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851
+#: dnf/cli/output.py:1731 dnf/cli/output.py:1733
 msgid "End rpmdb      :"
 msgstr "rpmdb 종료:"
 
-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860
+#: dnf/cli/output.py:1740 dnf/cli/output.py:1742
 msgid "User           :"
 msgstr "사용자            :"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1753
 msgid "Aborted"
 msgstr "중지됨"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869
-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751
+#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757
 msgid "Return-Code    :"
 msgstr "반환 코드 :"
 
-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1749 dnf/cli/output.py:1757
 msgid "Success"
 msgstr "성공"
 
-#: dnf/cli/output.py:1869
+#: dnf/cli/output.py:1751
 msgid "Failures:"
 msgstr "실패 :"
 
-#: dnf/cli/output.py:1873
+#: dnf/cli/output.py:1755
 msgid "Failure:"
 msgstr "실패:"
 
-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885
+#: dnf/cli/output.py:1765 dnf/cli/output.py:1767
 msgid "Releasever     :"
-msgstr "Releasever     :"
+msgstr "Releasever :"
 
-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892
+#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
 msgid "Command Line   :"
 msgstr "명령 줄 :"
 
-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899
+#: dnf/cli/output.py:1779 dnf/cli/output.py:1781
 msgid "Comment        :"
 msgstr "댓글 :"
 
-#: dnf/cli/output.py:1903
+#: dnf/cli/output.py:1785
 msgid "Transaction performed with:"
-msgstr "실행된 트랜잭션:"
+msgstr "실행된 연결:"
 
-#: dnf/cli/output.py:1912
+#: dnf/cli/output.py:1794
 msgid "Packages Altered:"
-msgstr "변경된 패키지 :"
+msgstr "변경된 꾸러미 :"
 
-#: dnf/cli/output.py:1918
+#: dnf/cli/output.py:1800
 msgid "Scriptlet output:"
-msgstr "Scriptlet 출력 :"
+msgstr "스크립트릿 출력 :"
 
-#: dnf/cli/output.py:1925
+#: dnf/cli/output.py:1807
 msgid "Errors:"
 msgstr "오류 :"
 
-#: dnf/cli/output.py:1934
+#: dnf/cli/output.py:1816
 msgid "Dep-Install"
-msgstr "Dep-Install"
+msgstr "설치-시작"
 
-#: dnf/cli/output.py:1935
+#: dnf/cli/output.py:1817
 msgid "Obsoleted"
 msgstr "사용 중지됨"
 
-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85
+#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85
 msgid "Obsoleting"
 msgstr "사용 중지"
 
-#: dnf/cli/output.py:1937
+#: dnf/cli/output.py:1819
 msgid "Erase"
 msgstr "삭제"
 
-#: dnf/cli/output.py:1938
+#: dnf/cli/output.py:1820
 msgid "Reinstall"
 msgstr "재설치"
 
-#: dnf/cli/output.py:2016
+#: dnf/cli/output.py:1894
 #, python-format
 msgid "---> Package %s.%s %s will be installed"
-msgstr "---> 패키지 %s.%s %s이/가 설치됩니다"
+msgstr "---> 꾸러미 %s.%s %s가 설치됩니다"
 
-#: dnf/cli/output.py:2018
+#: dnf/cli/output.py:1896
 #, python-format
 msgid "---> Package %s.%s %s will be an upgrade"
-msgstr "---> 패키지 %s.%s %s이/가 업그레이드됩니다"
+msgstr "---> 꾸러미 %s.%s %s가 최신화됩니다"
 
-#: dnf/cli/output.py:2020
+#: dnf/cli/output.py:1898
 #, python-format
 msgid "---> Package %s.%s %s will be erased"
-msgstr "---> 패키지 %s.%s %s이/가 제거됩니다"
+msgstr "---> 꾸러미 %s.%s %s가 제거됩니다"
 
-#: dnf/cli/output.py:2022
+#: dnf/cli/output.py:1900
 #, python-format
 msgid "---> Package %s.%s %s will be reinstalled"
-msgstr "---> 패키지 %s.%s %s이/가 다시 설치됩니다"
+msgstr "---> 꾸러미 %s.%s %s가 다시 설치됩니다"
 
-#: dnf/cli/output.py:2024
+#: dnf/cli/output.py:1902
 #, python-format
 msgid "---> Package %s.%s %s will be a downgrade"
-msgstr "---> 패키지 %s.%s %s이/가 다운그레이드됩니다"
+msgstr "---> 꾸러미 %s.%s %s가 하향설치됩니다"
 
-#: dnf/cli/output.py:2026
+#: dnf/cli/output.py:1904
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleting"
-msgstr "---> 패키지 %s.%s %s이/가 더 이상 사용되지 않습니다"
+msgstr "---> 꾸러미 %s.%s %s가 더 이상 사용되지 않습니다"
 
-#: dnf/cli/output.py:2028
+#: dnf/cli/output.py:1906
 #, python-format
 msgid "---> Package %s.%s %s will be upgraded"
-msgstr "---> 패키지 %s.%s %s이/가 업그레이드됩니다"
+msgstr "---> 꾸러미 %s.%s %s가 최신화됩니다"
 
-#: dnf/cli/output.py:2030
+#: dnf/cli/output.py:1908
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleted"
-msgstr "---> 패키지 %s.%s %s이/가 더 이상 사용되지 않습니다"
+msgstr "---> 꾸러미 %s.%s %s가 더 이상 사용되지 않습니다"
 
-#: dnf/cli/output.py:2039
+#: dnf/cli/output.py:1917
 msgid "--> Starting dependency resolution"
 msgstr "-> 종석성 해결 시작"
 
-#: dnf/cli/output.py:2044
+#: dnf/cli/output.py:1921
 msgid "--> Finished dependency resolution"
 msgstr "-> 종속성 해결 완료"
 
-#: dnf/cli/output.py:2058 dnf/crypto.py:132
+#: dnf/cli/output.py:1935 dnf/crypto.py:132
 #, python-format
 msgid ""
 "Importing GPG key 0x%s:\n"
@@ -3425,13 +3456,13 @@ msgid ""
 " From       : %s"
 msgstr ""
 "GPG키 0x%s 가져오는 중:\n"
-" 사용자 ID     : \"%s\"\n"
-"  지문: %s\n"
-" 출처        : %s"
+"사용자 ID : \"%s\"\n"
+"지문: %s\n"
+"출처 : %s"
 
 #: dnf/cli/utils.py:98
 msgid "Running"
-msgstr "실행중"
+msgstr "실행 중"
 
 #: dnf/cli/utils.py:99
 msgid "Sleeping"
@@ -3478,36 +3509,30 @@ 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."
-msgstr "모듈 또는 그룹 '%s'이/가 설치되지 않았습니다."
+msgstr "모듈 또는 그룹 '%s'가 설치되지 않았습니다."
 
 #: dnf/comps.py:198 dnf/comps.py:708
 #, python-format
 msgid "Module or Group '%s' is not available."
-msgstr "모듈 또는 그룹 '%s'을/를 사용할 수 없습니다."
+msgstr "모듈 또는 그룹 '%s'을 사용 할 수 없습니다."
 
 #: dnf/comps.py:200
 #, python-format
 msgid "Module or Group '%s' does not exist."
-msgstr "모듈 또는 그룹 '%s'이/가 존재하지 않습니다."
+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:443 dnf/transaction_sr.py:453
-#, fuzzy, python-format
-#| msgid "Environment '%s' is not installed."
+#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487
+#, python-format
 msgid "Environment id '%s' is not installed."
-msgstr "환경 '%s'이 설치되지 않았습니다."
+msgstr "환경id '%s'가 설치되지 않았습니다."
 
 #: dnf/comps.py:639
 #, python-format
@@ -3517,19 +3542,23 @@ msgstr "환경 '%s'이 설치되지 않았습니다."
 #: dnf/comps.py:641
 #, python-format
 msgid "Environment '%s' is not available."
-msgstr "환경 '%s'을/를 사용할 수 없습니다."
+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 "Group id '%s' 가 존재하지 않습니다."
 
 #: dnf/conf/config.py:136
 #, python-format
 msgid "Error parsing '%s': %s"
 msgstr "'%s' 구문 분석 중 오류 발생: %s"
 
+#: dnf/conf/config.py:151
+#, python-format
+msgid "Invalid configuration value: %s=%s in %s; %s"
+msgstr "잘못된 구성 값: %s=%s (%s; %s에서)"
+
 #: dnf/conf/config.py:226
 msgid "Could not set cachedir: {}"
 msgstr "cachedir를 설정할 수 없습니다: {}"
@@ -3539,7 +3568,7 @@ msgid ""
 "Configuration file URL \"{}\" could not be downloaded:\n"
 "  {}"
 msgstr ""
-"구성 파일 URL \"{}\"을 (를) 다운로드 할 수 없습니다:\n"
+"구성 파일 URL \"{}\"를 내려받기 할 수 없습니다:\n"
 "  {}"
 
 #: dnf/conf/config.py:355 dnf/conf/config.py:391
@@ -3550,7 +3579,7 @@ msgstr "알 수 없는 설정 옵션 : %s = %s"
 #: dnf/conf/config.py:372
 #, python-format
 msgid "Error parsing --setopt with key '%s', value '%s': %s"
-msgstr "키 ‘%s', 값 '%s'을/를 사용하여 --setopt 구문 분석 중 오류 발생: %s"
+msgstr "키 ‘%s', 값 '%s'를 사용하여 --setopt 구문 분석 중 오류 발생: %s"
 
 #: dnf/conf/config.py:380
 #, python-format
@@ -3564,75 +3593,92 @@ msgstr "잘못되었거나 알 수 없음 \"{}\": {}"
 #: dnf/conf/config.py:501
 #, python-format
 msgid "Error parsing --setopt with key '%s.%s', value '%s': %s"
-msgstr "키 %s.%s', 값 '%s'을/를 사용하여 --setopt 구문 분석 중 오류 발생: %s"
+msgstr "키 %s.%s', 값 '%s'를 사용하여 --setopt 구문 분석 중 오류 발생: %s"
 
 #: dnf/conf/config.py:504
 #, python-format
 msgid "Repo %s did not have a %s attr. before setopt"
 msgstr "Repo %s에 setopt 이전에 %s attr이 없습니다"
 
-#: dnf/conf/read.py:51
+#: dnf/conf/read.py:60
 #, python-format
 msgid "Warning: failed loading '%s', skipping."
-msgstr "경고: '%s'을/를 로드하지 못했습니다, 건너 뛰기."
+msgstr "경고: '%s'을 적재하지 못했습니다, 건너 뛰기."
 
-#: dnf/conf/read.py:63
+#: dnf/conf/read.py:72
 msgid "Bad id for repo: {} ({}), byte = {} {}"
-msgstr "리포지터리의 ID가 잘못되었습니다. {} ({}), byte = {} {}"
+msgstr "레포지터리의 ID가 잘못되었습니다. {} ({}), byte = {} {}"
 
-#: dnf/conf/read.py:67
+#: dnf/conf/read.py:76
 msgid "Bad id for repo: {}, byte = {} {}"
-msgstr "리포지터리의 ID가 잘못되었습니다. {}, byte = {} {}"
+msgstr "레포지터리의 ID가 잘못되었습니다. {}, byte = {} {}"
 
-#: dnf/conf/read.py:75
+#: dnf/conf/read.py:84
 msgid "Repository '{}' ({}): Error parsing config: {}"
 msgstr "Repository '{}' ({}): 구문 분석 설정 오류: {}"
 
-#: dnf/conf/read.py:78
+#: dnf/conf/read.py:87
 msgid "Repository '{}': Error parsing config: {}"
 msgstr "Repository '{}' : 구문 분석 설정 오류: {}"
 
-#: dnf/conf/read.py:84
+#: dnf/conf/read.py:93
 msgid "Repository '{}' ({}) is missing name in configuration, using id."
-msgstr "Repository '{}' ({})의 설정에 이름이 누락되어 있습니다. id를 사용하십시오."
+msgstr ""
+"Repository '{}' ({})의 설정에 이름이 누락되어 있습니다. id를 사용하십시오."
 
-#: dnf/conf/read.py:87
+#: dnf/conf/read.py:96
 msgid "Repository '{}' is missing name in configuration, using id."
 msgstr "Repository '{}'의 설정에 이름이 누락되어 있습니다. id를 사용하십시오."
 
-#: dnf/conf/read.py:104
+#: dnf/conf/read.py:113
 msgid "Parsing file \"{}\" failed: {}"
 msgstr "\"{}\" 파일을 구문 분석하지 못했습니다: {}"
 
 #: dnf/crypto.py:108
 #, python-format
 msgid "repo %s: 0x%s already imported"
-msgstr "repo %s: 0x%s을/를 이미 가져왔습니다"
+msgstr "repo %s: 0x%s를 이미 가져왔습니다"
 
 #: dnf/crypto.py:115
 #, python-format
 msgid "repo %s: imported key 0x%s."
 msgstr "repo %s: 0x%s 키를 가져왔습니다."
 
-#: dnf/db/group.py:293
+#: dnf/crypto.py:145
+msgid "Verified using DNS record with DNSSEC signature."
+msgstr "DNSSEC 서명이 있는 DNS 레코드를 사용하여 확인됨."
+
+#: dnf/crypto.py:147
+msgid "NOT verified using DNS record."
+msgstr "DNS 레코드를 사용하여 확인되지 않음."
+
+#: dnf/crypto.py:184
+#, python-format
+msgid "retrieving repo key for %s unencrypted from %s"
+msgstr "%s에서 암호화 하지 않은 %s를 위한 저장소 키 검색"
+
+#: dnf/db/group.py:301
 msgid ""
 "No available modular metadata for modular package '{}', it cannot be "
 "installed on the system"
-msgstr "모듈 패키지 '{}'에 사용 가능한 메타 데이터가 없으며 시스템에 설치할 수 없습니다"
+msgstr ""
+"모듈 꾸러미 '{}'에 사용 가능한 메타 자료가 없으며 시스템에 설치 할 수 없습니"
+"다"
 
-#: dnf/db/group.py:343
+#: dnf/db/group.py:351
 msgid "No available modular metadata for modular package"
-msgstr "모듈 패키지에 사용 가능한 모듈 메타 데이터가 없습니다"
+msgstr "모듈 꾸러미에 사용 가능한 모듈 메타 자료가 없습니다"
 
-#: dnf/db/group.py:377
+#: dnf/db/group.py:385
 #, python-format
 msgid "Will not install a source rpm package (%s)."
-msgstr "소스 RPM패키지를 설치하지 않습니다 (%s)."
+msgstr "소스 RPM 꾸러미를 설치하지 않습니다 (%s)."
 
 #: dnf/dnssec.py:168
 msgid ""
-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})"
-msgstr "설정 옵션 'gpgkey_dns_verification'에는 libunbound ({})가 필요합니다"
+"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
+msgstr ""
+"구성 선택 'gpgkey_dns_verification'에는 python3-unbound ({})가 필요합니다"
 
 #: dnf/dnssec.py:239
 msgid "DNSSEC extension: Key for user "
@@ -3654,7 +3700,7 @@ msgstr "DNSSEC 확장: "
 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"
@@ -3679,11 +3725,11 @@ msgstr "요청 중인 문제 :"
 
 #: dnf/exceptions.py:115
 msgid "missing packages: "
-msgstr "누락된 패키지: "
+msgstr "누락된 꾸러미: "
 
 #: dnf/exceptions.py:117
 msgid "broken packages: "
-msgstr "잘못된 패키지: "
+msgstr "잘못된 꾸러미: "
 
 #: dnf/exceptions.py:119
 msgid "missing groups or modules: "
@@ -3698,7 +3744,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:686
+#: dnf/exceptions.py:131 dnf/module/module_base.py:854
 msgid "Modular dependency problem:"
 msgid_plural "Modular dependency problems:"
 msgstr[0] "모듈 종속성 문제 :"
@@ -3707,10 +3753,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 '{}'."
@@ -3722,7 +3770,7 @@ msgstr "표시할 것이 없습니다."
 
 #: dnf/module/__init__.py:28
 msgid "Installing newer version of '{}' than specified. Reason: {}"
-msgstr "지정된 버전보다 새 버전의 '{}'을/를 설치합니다. 이유 : {}"
+msgstr "지정된 버전 보다 새로운 버전의 '{}'를 설치합니다. 이유 : {}"
 
 #: dnf/module/__init__.py:29
 msgid "Enabled modules: {}."
@@ -3732,7 +3780,47 @@ msgstr "사용 설정된 모듈 : {}."
 msgid "No profile specified for '{}', please specify profile."
 msgstr "'{}'에 지정된 프로필이 없습니다. 프로필을 지정하십시오."
 
-#: dnf/module/module_base.py:33
+#: dnf/module/exceptions.py:27
+msgid "No such module: {}"
+msgstr "그런 모듈이 없습니다: {}"
+
+#: dnf/module/exceptions.py:33
+msgid "No such stream: {}"
+msgstr "그런 스트림이 없습니다: {}"
+
+#: dnf/module/exceptions.py:39
+msgid "No enabled stream for module: {}"
+msgstr "모듈에 대한 활성화된 스트림이 없습니다: {}"
+
+#: dnf/module/exceptions.py:46
+msgid "Cannot enable more streams from module '{}' at the same time"
+msgstr "동시에 모듈 '{}'에서 더 많은 스트림을 활성화 할 수 없습니다"
+
+#: dnf/module/exceptions.py:52
+msgid "Different stream enabled for module: {}"
+msgstr "모듈에 대해 활성화된 다른 스트림: {}"
+
+#: dnf/module/exceptions.py:58
+msgid "No such profile: {}"
+msgstr "그런 프로파일이 없습니다: {}"
+
+#: dnf/module/exceptions.py:64
+msgid "Specified profile not installed for {}"
+msgstr "{}를 위한 지정된 프로필이 설치되지 않았습니다"
+
+#: dnf/module/exceptions.py:70
+msgid "No stream specified for '{}', please specify stream"
+msgstr "'{}'을 위한 지정된 스트림이 없으며, 스트림을 지정해주세요"
+
+#: dnf/module/exceptions.py:82
+msgid "No such profile: {}. No profiles available"
+msgstr "그런 프로파일이 없습니다: {}. 사용 가능한 프로파일이 없습니다"
+
+#: dnf/module/exceptions.py:88
+msgid "No profile to remove for '{}'"
+msgstr "제거되는 프로파일이 없습니다('{}'를 위해 )"
+
+#: dnf/module/module_base.py:35
 msgid ""
 "\n"
 "\n"
@@ -3742,7 +3830,7 @@ msgstr ""
 "\n"
 "힌트 : [d] efault, [e] nabled, [x] disabled, [i] stalled"
 
-#: dnf/module/module_base.py:34
+#: dnf/module/module_base.py:36
 msgid ""
 "\n"
 "\n"
@@ -3752,80 +3840,99 @@ msgstr ""
 "\n"
 "힌트 : [d] efault, [e] nabled, [x] disabled, [i] stalled, [a] ctive"
 
-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421
-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543
+#: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
 msgid "Ignoring unnecessary profile: '{}/{}'"
 msgstr "불필요한 프로파일을 무시합니다: '{}/{}'"
 
-#: dnf/module/module_base.py:84
+#: 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:92
+#: 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 "Fail-Safe 리포지토리 {1}에서 모듈 '{0}’을/를 설치할 수 없습니다"
+msgstr "실패 방지 저장소 {1}에서 모듈 '{0}’를 설치 할 수 없습니다"
 
-#: dnf/module/module_base.py:102
+#: 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:106
+#: dnf/module/module_base.py:108 dnf/module/module_base.py:218
 msgid "Unable to match profile for argument {}"
 msgstr "인수 {}의 프로파일을 찾을 수 없습니다"
 
-#: dnf/module/module_base.py:118
+#: dnf/module/module_base.py:120
 msgid "No default profiles for module {}:{}. Available profiles: {}"
 msgstr "{} : {} 모듈에 대한 기본 프로파일이 없습니다. 사용 가능한 프로파일: {}"
 
-#: dnf/module/module_base.py:122
+#: dnf/module/module_base.py:124
 msgid "No profiles for module {}:{}"
 msgstr "{} : {} 모듈에 대한 프로파일이 없습니다"
 
-#: dnf/module/module_base.py:129
+#: dnf/module/module_base.py:131
 msgid "Default profile {} not available in module {}:{}"
 msgstr "{} 모듈에서 기본 프로필 {}을 (를) 사용할 수 없음 : {}"
 
-#: dnf/module/module_base.py:142
+#: 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:159 dnf/module/module_base.py:193
-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355
-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417
-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539
+#: dnf/module/module_base.py:196
+#, python-brace-format
+msgid "No active matches for argument '{0}' in module '{1}:{2}'"
+msgstr "모듈 '{1}:{2}'의 인수 '{0}'에 대한 일치 항목 없음"
+
+#: dnf/module/module_base.py:228
+#, python-brace-format
+msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'"
+msgstr "설치 프로파일'{0}'은 모듈 '{1} 스트림 '{2}'에서 사용 할 수 없습니다"
+
+#: dnf/module/module_base.py:267
+msgid "No packages available to distrosync for package name '{}'"
+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
 msgid "Unable to resolve argument {}"
 msgstr "인수 {}을 (를) 구문 분석할 수 없습니다"
 
-#: dnf/module/module_base.py:160
-msgid "No match for package {}"
-msgstr "{} 패키지와 일치하지 않습니다"
-
-#: dnf/module/module_base.py:204
+#: dnf/module/module_base.py:321
 #, python-brace-format
 msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed"
-msgstr "Fail-Safe 리포지토리 {1}에서 모듈 '{0}’을/를 업그레이드할 수 없습니다"
+msgstr "실패방지 저장소 {1}에서 모듈 '{0}’를 향상 할 수 없습니다"
 
-#: dnf/module/module_base.py:223 dnf/module/module_base.py:251
+#: dnf/module/module_base.py:340 dnf/module/module_base.py:368
 msgid "Unable to match profile in argument {}"
 msgstr "인수 {}에서 프로파일이 일치하지 않습니다"
 
-#: dnf/module/module_base.py:231
+#: dnf/module/module_base.py:348
 msgid "Upgrading module from Fail-Safe repository is not allowed"
-msgstr "Fail-Safe 리포지토리에서 모듈을 업그레이드할 수 없습니다"
+msgstr "실패-방지 저장소에서 모듈을 향상 할 수 없습니다"
 
-#: dnf/module/module_base.py:367
+#: dnf/module/module_base.py:422
+#, python-brace-format
 msgid ""
-"Only module name is required. Ignoring unneeded information in argument: "
-"'{}'"
+"Argument '{argument}' matches {stream_count} streams ('{streams}') of module "
+"'{module}', but none of the streams are enabled or default"
+msgstr ""
+"인수 '{argument}'는 {stream_count} 스트림 ('{streams}')과 일치합니다 (모듈의 "
+"'{module}'), 하지만 활성화 되었거나 지정된 스트림이 없습니다"
+
+#: dnf/module/module_base.py:509
+msgid ""
+"Only module name is required. Ignoring unneeded information in argument: '{}'"
 msgstr "모듈 이름만 필요합니다. '{}'인수에서 불필요한 정보를 무시합니다"
 
-#: dnf/package.py:298
-#, python-format
-msgid "%s: %s check failed: %s vs %s"
-msgstr "%s: %s 확인 실패 : %s 대 %s"
+#: dnf/module/module_base.py:841
+msgid "No match for package {}"
+msgstr "{} 꾸러미와 일치하지 않습니다"
 
 #. empty file is invalid json format
 #: dnf/persistor.py:54
@@ -3836,12 +3943,12 @@ msgstr "%s는 빈 파일입니다"
 #: dnf/persistor.py:91
 #, python-format
 msgid "Failed to load expired repos cache: %s"
-msgstr ""
+msgstr "만료된 저장소 cache:%s 를 적재하는데 실패하였습니다"
 
 #: dnf/persistor.py:99
 #, python-format
 msgid "Failed to store expired repos cache: %s"
-msgstr ""
+msgstr "만료된 저장소 캐쉬: %s 저장하는데 실패하였습니다"
 
 #: dnf/persistor.py:106
 msgid "Failed storing last makecache time."
@@ -3861,30 +3968,30 @@ msgstr "구문 분석에 실패했습니다. %s"
 msgid "Loaded plugins: %s"
 msgstr "로드된 플러그인 : %s"
 
-#: dnf/plugin.py:199
+#: dnf/plugin.py:211
 #, python-format
 msgid "Failed loading plugin \"%s\": %s"
-msgstr "플러그인 \"%s\"을/를 불러오지 못했습니다: %s"
+msgstr "플러그인 \"%s\"를 불러오지 못했습니다: %s"
 
-#: dnf/plugin.py:231
+#: dnf/plugin.py:243
 msgid "No matches found for the following enable plugin patterns: {}"
 msgstr "다음의 활성 플러그인 패턴과 일치하는 항목이 없습니다: {}"
 
-#: dnf/plugin.py:235
+#: dnf/plugin.py:247
 msgid "No matches found for the following disable plugin patterns: {}"
 msgstr "다음의 비활성화 플러그인 패턴과 일치하는 항목이 없습니다: {}"
 
 #: dnf/repo.py:84
 #, python-format
 msgid "no matching payload factory for %s"
-msgstr "%s와 일치하는 payload factory가 없습니다."
+msgstr "%s와 일치하는 payload factory가 없습니다"
 
 #: dnf/repo.py:111
 msgid "Already downloaded"
-msgstr "이미 다운로드 됨"
+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 호스트).. "
@@ -3899,15 +4006,32 @@ msgstr "%s 리포지토리 활성화"
 msgid "Added %s repo from %s"
 msgstr "%s 에서 %s repo를 추가했습니다"
 
+#: dnf/rpm/miscutils.py:32
+#, python-format
+msgid "Using rpmkeys executable at %s to verify signatures"
+msgstr "%s에 실행 할 수 있는 rpmkey를 사용하여 서명을 확인합니다"
+
+#: dnf/rpm/miscutils.py:66
+msgid "Cannot find rpmkeys executable to verify signatures."
+msgstr "서명을 확인하기 위해 실행 할 수 있는 rpmkeys를 찾을 수 없습니다."
+
 #: dnf/rpm/transaction.py:119
 msgid "Errors occurred during test transaction."
-msgstr "트랜잭션 테스트 중에 오류가 발생했습니다."
+msgstr "연결 시험 중에 오류가 발생했습니다."
+
+#: dnf/sack.py:47
+msgid ""
+"allow_vendor_change is disabled. This option is currently not supported for "
+"downgrade and distro-sync commands"
+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
@@ -3935,7 +4059,7 @@ msgstr "삭제 중"
 #: dnf/transaction.py:92
 msgctxt "currently"
 msgid "Upgrading"
-msgstr "업그레이드 중"
+msgstr "향상 중"
 
 #: dnf/transaction.py:96
 msgid "Verifying"
@@ -3943,168 +4067,223 @@ msgstr "확인 중"
 
 #: dnf/transaction.py:97
 msgid "Running scriptlet"
-msgstr "scriptlet 실행 중"
+msgstr "스크립트릿 실행 중"
 
 #: dnf/transaction.py:99
 msgid "Preparing"
 msgstr "준비 중"
 
-#: dnf/transaction_sr.py:60
+#: dnf/transaction_sr.py:66
 #, python-brace-format
-msgid "Errors in \"{filename}\":"
-msgstr ""
+msgid ""
+"The following problems occurred while replaying the transaction from file "
+"\"{filename}\":"
+msgstr "다음 문제는 파일에서 연결 응답 할 때에 발생합니다 \"{filename}\":"
 
-#: dnf/transaction_sr.py:70
-#, python-brace-format
-msgid "Error in \"{filename}\": {error}"
-msgstr ""
+#: dnf/transaction_sr.py:68
+msgid "The following problems occurred while running a transaction:"
+msgstr "연결 중에 오류가 발생했습니다:"
 
-#: dnf/transaction_sr.py:87
+#: dnf/transaction_sr.py:89
 #, python-brace-format
 msgid "Invalid major version \"{major}\", number expected."
-msgstr ""
+msgstr "잘못된 주요 버전 \"{major}\", 번호가 예상됩니다."
 
-#: dnf/transaction_sr.py:95
+#: dnf/transaction_sr.py:97
 #, python-brace-format
 msgid "Invalid minor version \"{minor}\", number expected."
-msgstr ""
+msgstr "잘못된 하위 버전 \"{minor}\", 번호가 예상됩니다."
 
-#: dnf/transaction_sr.py:101
+#: dnf/transaction_sr.py:103
 #, python-brace-format
 msgid ""
 "Incompatible major version \"{major}\", supported major version is "
 "\"{major_supp}\"."
 msgstr ""
+"호환되지 않는 주요 버전 \"{major}\", 지원되는 주요 버전 \"{major_supp}\"."
 
-#: dnf/transaction_sr.py:244
+#: dnf/transaction_sr.py:224
+msgid ""
+"Conflicting TransactionReplay arguments have been specified: filename, data"
+msgstr "연결 지연 인수의 충돌은 명시됩니다: 파일이름, 자료"
+
+#: dnf/transaction_sr.py:265
 #, python-brace-format
 msgid "Unexpected type of \"{id}\", {exp} expected."
-msgstr ""
+msgstr "예상치 못한 유형 \"{id}\", {exp} 가 예상된다."
 
-#: dnf/transaction_sr.py:250
+#: dnf/transaction_sr.py:271
 #, python-brace-format
 msgid "Missing key \"{key}\"."
-msgstr ""
+msgstr "누락된 키 \"{key}\"."
 
-#: dnf/transaction_sr.py:263
+#: dnf/transaction_sr.py:285
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an rpm."
-msgstr ""
+msgstr "rpm안에 누락된 객체 키 \"{key}\"."
 
-#: dnf/transaction_sr.py:267
+#: 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 ""
+"rpm nevra \"{nevra}\"를 위한 예상되지 않은 꾸러미 이유\"{reason}\" 의 값."
 
-#: dnf/transaction_sr.py:275
+#: dnf/transaction_sr.py:297
 #, python-brace-format
 msgid "Cannot parse NEVRA for package \"{nevra}\"."
-msgstr ""
+msgstr "꾸러미 \"{nevra}\"를 위해 NEVRA를 구문 분석 할 수 없습니다."
 
-#: dnf/transaction_sr.py:286
+#: dnf/transaction_sr.py:321
 #, python-brace-format
 msgid "Cannot find rpm nevra \"{nevra}\"."
-msgstr ""
+msgstr "rpm nevra \"{nevra}\"를 찾을 수 없습니다."
 
-#: dnf/transaction_sr.py:301
+#: dnf/transaction_sr.py:336
 #, python-brace-format
 msgid "Package \"{na}\" is already installed for action \"{action}\"."
-msgstr ""
+msgstr "꾸러미 \"{na}\"는 활동 \"{action}\"를 위해 이미 설치되어 있습니다."
 
-#: dnf/transaction_sr.py:311
+#: dnf/transaction_sr.py:345
 #, python-brace-format
 msgid ""
 "Package nevra \"{nevra}\" not available in repositories for action "
 "\"{action}\"."
 msgstr ""
+"꾸러미 nervra \"{nevra}\"는 실행 \"{action}\"을 위한 저장소에서 사용 할 수 없"
+"음."
 
-#: dnf/transaction_sr.py:322
+#: dnf/transaction_sr.py:356
 #, python-brace-format
 msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"."
-msgstr ""
+msgstr "꾸러미 nevra\"{nevra}\"는 활동 \"{action}\"을 위해 설치되지 않음."
 
-#: dnf/transaction_sr.py:336
+#: 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:343
-#, fuzzy, python-format
-#| msgid "Group_id '%s' does not exist."
+#: dnf/transaction_sr.py:377
+#, python-format
 msgid "Group id '%s' is not available."
-msgstr "Group_id '%s' 존재하지 않는다."
+msgstr "Group_id '%s'는 사용 할 수 없습니다."
 
-#: dnf/transaction_sr.py:364
+#: dnf/transaction_sr.py:398
 #, python-brace-format
 msgid "Missing object key \"{key}\" in groups.packages."
-msgstr ""
+msgstr "group.packages에 있는 객체 키 \"{key}\" 누락."
 
-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387
-#, fuzzy, python-format
-#| msgid "Environment '%s' is not installed."
+#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421
+#, python-format
 msgid "Group id '%s' is not installed."
-msgstr "환경 '%s'이 설치되지 않았습니다."
+msgstr "그룹 '%s'는 설치되어 있지 않습니다."
 
-#: dnf/transaction_sr.py:398
-#, fuzzy, python-format
-#| msgid "Environment '%s' is not installed."
+#: dnf/transaction_sr.py:432
+#, python-format
 msgid "Environment id '%s' is not available."
-msgstr "환경 '%s'이 설치되지 않았습니다."
+msgstr "환경 id '%s'는 사용 할 수 없습니다."
 
-#: dnf/transaction_sr.py:422
+#: dnf/transaction_sr.py:456
 #, python-brace-format
 msgid ""
 "Invalid value \"{group_type}\" of environments.groups.group_type, only "
 "\"mandatory\" or \"optional\" is supported."
 msgstr ""
+"잘못된 environments.groups.group_type의 값 \"{group_type}\", \"필 수\" 또는 "
+"\"선택\"만 지원합니다."
 
-#: dnf/transaction_sr.py:430
+#: dnf/transaction_sr.py:464
 #, python-brace-format
 msgid "Missing object key \"{key}\" in environments.groups."
-msgstr ""
+msgstr "환경 그룹에서 누락된 객체 키 \"{key}\"."
 
-#: dnf/transaction_sr.py:508
+#: dnf/transaction_sr.py:542
 #, python-brace-format
 msgid "Unexpected value of group action \"{action}\" for group \"{group}\"."
-msgstr ""
+msgstr "그룹 \"{group}\"을 위해 예상치 못한 그룹 활동 \"{action}\"의 값."
 
-#: dnf/transaction_sr.py:513
+#: dnf/transaction_sr.py:547
 #, python-brace-format
 msgid "Missing object key \"{key}\" in a group."
-msgstr ""
+msgstr "그룹 안에 누락된 객체 키 \"{key}\"."
 
-#: dnf/transaction_sr.py:537
+#: 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:542
+#: dnf/transaction_sr.py:576
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an environment."
-msgstr ""
+msgstr "환경에 누락된 객체 키 \"{key}\"."
 
-#: dnf/transaction_sr.py:581
+#: 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:391 dnf/util.py:393
+#: dnf/util.py:419 dnf/util.py:421
 msgid "Problem"
 msgstr "문제"
 
-#: dnf/util.py:444
+#: dnf/util.py:472
 msgid "TransactionItem not found for key: {}"
 msgstr "{} 키에 대한 TransactionItem을 찾을 수 없습니다"
 
-#: dnf/util.py:454
+#: dnf/util.py:482
 msgid "TransactionSWDBItem not found for key: {}"
 msgstr "{} 키에 대한 TransactionSWDBItem을 찾을 수 없습니다"
 
-#: dnf/util.py:457
+#: dnf/util.py:485
 msgid "Errors occurred during transaction."
-msgstr "트랜잭션 중에 오류가 발생했습니다."
+msgstr "연결 중에 오류가 발생했습니다."
+
+#: dnf/util.py:621
+msgid "Reinstalled"
+msgstr "다시 설치되었습니다"
+
+#: dnf/util.py:622
+msgid "Skipped"
+msgstr "건너 뛰기됨"
+
+#: dnf/util.py:623
+msgid "Removed"
+msgstr "제거되었습니다"
+
+#: dnf/util.py:626
+msgid "Failed"
+msgstr "실패하였습니다"
+
+#~ 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 대 %s"
+
+#~ msgid "Action not handled: {}"
+#~ msgstr "작업이 처리되지 않았습니다: {}"
+
+#~ msgid "no package matched"
+#~ msgstr "일치하는 패키지가 없습니다."
+
+#~ msgid "Not found given transaction ID"
+#~ msgstr "주어진 트랜잭션 ID를 찾을 수 없습니다"
+
+#~ msgid "Undoing transaction {}, from {}"
+#~ msgstr "{}에서 {} 트랜잭션 실행을 취소하고 있습니다"
 
 #~ msgid "format for displaying found packages"
 #~ msgstr "발견 된 패키지를 표시하기위한 형식"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 7ede4ed8..af6396c3 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -13,33 +13,37 @@
 # Qi Fan <fun224@gmail.com>, 2016. #zanata
 # Tommy He <lovenemesis@fedoraproject.org>, 2016. #zanata
 # mosquito <sensor.wen@gmail.com>, 2016. #zanata
-# Charles Lee <lchopn@gmail.com>, 2017. #zanata, 2020.
+# Charles Lee <lchopn@gmail.com>, 2017. #zanata, 2020, 2021.
 # Pany <pany@fedoraproject.org>, 2017. #zanata
 # cheng ye <18969068329@163.com>, 2017. #zanata
 # lexuge <LEXUGEyky@outlook.com>, 2017. #zanata
 # n0vad3v <jonasguo@fedoraproject.org>, 2017. #zanata
 # zhouxiaobo <zhouxiaobo.500@gmail.com>, 2017. #zanata
-# Ludek Janda <ljanda@redhat.com>, 2018. #zanata
+# Ludek Janda <ljanda@redhat.com>, 2018. #zanata, 2021.
 # Pany <pany@fedoraproject.org>, 2018. #zanata
 # 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: 2020-10-05 09:18-0400\n"
-"PO-Revision-Date: 2020-08-02 08:29+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:24+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-8/zh_CN/>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.1.1\n"
+"X-Generator: Weblate 4.11.2\n"
 
 #: dnf/automatic/emitter.py:32
 #, python-format
@@ -86,7 +90,7 @@ msgstr "使用 '%s' 发送邮件失败: %s"
 msgid "Failed to execute command '%s': returned %d"
 msgstr "无法执行命令 '%s' :返回 %d"
 
-#: dnf/automatic/main.py:164 dnf/conf/config.py:151
+#: dnf/automatic/main.py:164
 #, python-format
 msgid "Unknown configuration value: %s=%s in %s; %s"
 msgstr "未知配置值: %s=%s 在 %s 中; %s"
@@ -96,7 +100,7 @@ msgstr "未知配置值: %s=%s 在 %s 中; %s"
 msgid "Unknown configuration option: %s = %s in %s"
 msgstr "未知配置选项:%s = %s 在 %s 中"
 
-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299
+#: dnf/automatic/main.py:237 dnf/cli/cli.py:305
 msgid "GPG check FAILED"
 msgstr "GPG 检查失败"
 
@@ -109,9 +113,9 @@ msgid "Started dnf-automatic."
 msgstr "启动的 dnf-automatic。"
 
 #: dnf/automatic/main.py:308
-#, python-format
-msgid "Sleep for %s seconds"
-msgstr "休眠 %s 秒"
+msgid "Sleep for {} second"
+msgid_plural "Sleep for {} seconds"
+msgstr[0] "休眠 {} 秒"
 
 #: dnf/automatic/main.py:315
 msgid "System is off-line."
@@ -123,439 +127,426 @@ msgstr "系统离线。"
 msgid "Error: %s"
 msgstr "错误:%s"
 
-#: dnf/base.py:146
+#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479
 msgid "loading repo '{}' failure: {}"
 msgstr "加载仓库 '{}' 失败:{}"
 
-#: dnf/base.py:148
+#: dnf/base.py:150
 msgid "Loading repository '{}' has failed"
 msgstr "加载仓库 '{}' 失败"
 
-#: dnf/base.py:320
+#: dnf/base.py:327
 msgid "Metadata timer caching disabled when running on metered connection."
 msgstr "在使用按流量计费的连接时禁用元数据计时缓存。"
 
-#: dnf/base.py:325
+#: dnf/base.py:332
 msgid "Metadata timer caching disabled when running on a battery."
 msgstr "在使用电池时禁用元数据计时缓存。"
 
-#: dnf/base.py:330
+#: dnf/base.py:337
 msgid "Metadata timer caching disabled."
 msgstr "元数据计时缓存已禁用。"
 
-#: dnf/base.py:335
+#: dnf/base.py:342
 msgid "Metadata cache refreshed recently."
 msgstr "元数据缓存近期已刷新。"
 
-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91
+#: dnf/base.py:348 dnf/cli/commands/__init__.py:91
 msgid "There are no enabled repositories in \"{}\"."
 msgstr "在\"{}\"中没有被启用的仓库。"
 
-#: dnf/base.py:348
+#: dnf/base.py:355
 #, python-format
 msgid "%s: will never be expired and will not be refreshed."
 msgstr "%s: 永远不过期并不会被刷新。"
 
-#: dnf/base.py:350
+#: dnf/base.py:357
 #, python-format
 msgid "%s: has expired and will be refreshed."
 msgstr "%s: 已过期并不会被刷新。"
 
 #. expires within the checking period:
-#: dnf/base.py:354
+#: dnf/base.py:361
 #, python-format
 msgid "%s: metadata will expire after %d seconds and will be refreshed now"
 msgstr "%s: 元数据将在 %d 秒后过期,现在将会被刷新"
 
-#: dnf/base.py:358
+#: dnf/base.py:365
 #, python-format
 msgid "%s: will expire after %d seconds."
 msgstr "%s: 将会在 %d 秒后过期。"
 
 #. performs the md sync
-#: dnf/base.py:364
+#: dnf/base.py:371
 msgid "Metadata cache created."
 msgstr "元数据缓存已建立。"
 
-#: dnf/base.py:397
+#: dnf/base.py:404 dnf/base.py:471
 #, python-format
 msgid "%s: using metadata from %s."
 msgstr "%s:正在使用截止于 %s 的元数据。"
 
-#: dnf/base.py:409
+#: dnf/base.py:416 dnf/base.py:484
 #, python-format
 msgid "Ignoring repositories: %s"
 msgstr "正在忽略仓库:%s"
 
-#: dnf/base.py:412
+#: dnf/base.py:419
 #, python-format
 msgid "Last metadata expiration check: %s ago on %s."
 msgstr "上次元数据过期检查:%s 前,执行于 %s。"
 
-#: dnf/base.py:443
+#: dnf/base.py:512
 msgid ""
 "The downloaded packages were saved in cache until the next successful "
 "transaction."
 msgstr "下载的软件包保存在缓存中,直到下次成功执行事务。"
 
-#: dnf/base.py:445
+#: dnf/base.py:514
 #, python-format
 msgid "You can remove cached packages by executing '%s'."
 msgstr "您可以通过执行 '%s' 删除软件包缓存。"
 
-#: dnf/base.py:535
+#: dnf/base.py:606
 #, python-format
 msgid "Invalid tsflag in config file: %s"
 msgstr "配置文件 %s 中使用 tsflag 是错误的"
 
-#: dnf/base.py:591
+#: dnf/base.py:662
 #, python-format
 msgid "Failed to add groups file for repository: %s - %s"
 msgstr "为仓库 %s 添加组文件时失败:%s"
 
-#: dnf/base.py:823
+#: dnf/base.py:904
 msgid "Running transaction check"
 msgstr "运行事务检查"
 
-#: dnf/base.py:831
+#: dnf/base.py:912
 msgid "Error: transaction check vs depsolve:"
 msgstr "错误:事务检查与依赖解决错误:"
 
-#: dnf/base.py:837
+#: dnf/base.py:918
 msgid "Transaction check succeeded."
 msgstr "事务检查成功。"
 
-#: dnf/base.py:840
+#: dnf/base.py:921
 msgid "Running transaction test"
 msgstr "运行事务测试"
 
-#: dnf/base.py:850 dnf/base.py:992
+#: dnf/base.py:931 dnf/base.py:1082
 msgid "RPM: {}"
 msgstr "RPM软件包: {}"
 
-#: dnf/base.py:851
+#: dnf/base.py:932
 msgid "Transaction test error:"
 msgstr "事物测试失败:"
 
-#: dnf/base.py:862
+#: dnf/base.py:943
 msgid "Transaction test succeeded."
 msgstr "事务测试成功。"
 
-#: dnf/base.py:883
+#: dnf/base.py:964
 msgid "Running transaction"
 msgstr "运行事务"
 
-#: dnf/base.py:911
+#: dnf/base.py:1001
 msgid "Disk Requirements:"
 msgstr "磁盘需求:"
 
-#: dnf/base.py:914
+#: dnf/base.py:1004
 #, 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:921
+#: dnf/base.py:1011
 msgid "Error Summary"
 msgstr "错误汇总"
 
-#: dnf/base.py:947
+#: dnf/base.py:1037
 #, python-brace-format
 msgid "RPMDB altered outside of {prog}."
 msgstr "RPMDB 在 {prog} 外被改动了。"
 
-#: dnf/base.py:993 dnf/base.py:1001
+#: dnf/base.py:1083 dnf/base.py:1091
 msgid "Could not run transaction."
 msgstr "不能执行事务。"
 
-#: dnf/base.py:996
+#: dnf/base.py:1086
 msgid "Transaction couldn't start:"
 msgstr "事务无法启动:"
 
-#: dnf/base.py:1010
+#: dnf/base.py:1100
 #, python-format
 msgid "Failed to remove transaction file %s"
 msgstr "移除事务文件 %s 失败"
 
-#: dnf/base.py:1092
+#: dnf/base.py:1182
 msgid "Some packages were not downloaded. Retrying."
 msgstr "某些软件包没有被下载。正在重试。"
 
-#: dnf/base.py:1122
+#: dnf/base.py:1212
 #, python-format
 msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
 msgstr "增量 RPM 将 %.1f MB 的更新减少至 %.1f MB(已节省 %d.1%% )"
 
-#: dnf/base.py:1125
+#: dnf/base.py:1215
 #, python-format
 msgid ""
 "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
 msgstr "增量 RPM 未能将 %.1f MB 的更新减少至 %.1f MB(已浪费 %d.1%% )"
 
-#: dnf/base.py:1167
+#: dnf/base.py:1257
 msgid "Cannot add local packages, because transaction job already exists"
 msgstr "由于事物已经存在,无法添加本地软件包"
 
-#: dnf/base.py:1181
+#: dnf/base.py:1271
 msgid "Could not open: {}"
 msgstr "无法打开: {}"
 
-#: dnf/base.py:1219
+#: dnf/base.py:1309
 #, python-format
 msgid "Public key for %s is not installed"
 msgstr "%s 的公钥没有安装"
 
-#: dnf/base.py:1223
+#: dnf/base.py:1313
 #, python-format
 msgid "Problem opening package %s"
 msgstr "打开软件包 %s 出现问题"
 
-#: dnf/base.py:1231
+#: dnf/base.py:1321
 #, python-format
 msgid "Public key for %s is not trusted"
 msgstr "%s 的公钥不可信任"
 
-#: dnf/base.py:1235
+#: dnf/base.py:1325
 #, python-format
 msgid "Package %s is not signed"
 msgstr "软件包 %s 没有签名"
 
-#: dnf/base.py:1265
+#: dnf/base.py:1355
 #, python-format
 msgid "Cannot remove %s"
 msgstr "无法删除 %s"
 
-#: dnf/base.py:1269
+#: dnf/base.py:1359
 #, python-format
 msgid "%s removed"
 msgstr "%s 已删除"
 
-#: dnf/base.py:1549
+#: dnf/base.py:1639
 msgid "No match for group package \"{}\""
 msgstr "没有和组 \"{}\" 匹配的"
 
-#: dnf/base.py:1635
+#: dnf/base.py:1721
 #, python-format
 msgid "Adding packages from group '%s': %s"
 msgstr "从组 '%s': %s 添加软件包"
 
-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442
-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592
-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80
+#: dnf/base.py:1744 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:1676
+#: dnf/base.py:1762
 msgid "No groups marked for removal."
 msgstr "没有软件包组需要移除。"
 
-#: dnf/base.py:1710
+#: dnf/base.py:1796
 msgid "No group marked for upgrade."
 msgstr "没有标记为要升级的组。"
 
-#: dnf/base.py:1925
+#: dnf/base.py:2010
 #, python-format
 msgid "Package %s not installed, cannot downgrade it."
 msgstr "软件包 %s 并没有能够安装,无法进行降级操作。"
 
-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980
-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411
-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482
-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633
-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147
+#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071
+#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 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
 #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84
-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121
+#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116
 #, python-format
 msgid "No match for argument: %s"
 msgstr "未找到匹配的参数: %s"
 
-#: dnf/base.py:1934
+#: dnf/base.py:2019
 #, python-format
 msgid "Package %s of lower version already installed, cannot downgrade it."
 msgstr "软件包 %s 的低版本已经安装,无法进行降级。"
 
-#: dnf/base.py:1957
+#: dnf/base.py:2042
 #, python-format
 msgid "Package %s not installed, cannot reinstall it."
 msgstr "软件包 %s 未能够安装成功,无法进行重新安装。"
 
-#: dnf/base.py:1972
+#: dnf/base.py:2057
 #, python-format
 msgid "File %s is a source package and cannot be updated, ignoring."
 msgstr "%s 文件无法被升级,已忽略。"
 
-#: dnf/base.py:1978
+#: dnf/base.py:2068
 #, python-format
 msgid "Package %s not installed, cannot update it."
 msgstr "软件包 %s 未安装,无法更新。"
 
-#: dnf/base.py:1987
+#: dnf/base.py:2078
 #, python-format
 msgid ""
 "The same or higher version of %s is already installed, cannot update it."
 msgstr "已经安装了软件包%s的相同或更高版本,无法更新。"
 
-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81
+#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81
 #, python-format
 msgid "Package %s available, but not installed."
 msgstr "软件包 %s 可用,但没有被安装。"
 
-#: dnf/base.py:2032
+#: dnf/base.py:2127
 #, python-format
 msgid "Package %s available, but installed for different architecture."
 msgstr "软件包 %s 可用,当是为其它架构安装。"
 
-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699
+#: dnf/base.py:2152
 #, python-format
 msgid "No package %s installed."
 msgstr "没有软件包 %s 安装。"
 
-#: dnf/base.py:2075 dnf/cli/commands/install.py:136
+#: dnf/base.py:2170 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:2091 dnf/cli/commands/__init__.py:681
-#: dnf/cli/commands/remove.py:163
+#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676
+#: dnf/cli/commands/remove.py:162
 msgid "No packages marked for removal."
 msgstr "没有软件包需要移除。"
 
-#: dnf/base.py:2179 dnf/cli/cli.py:422
+#: dnf/base.py:2273 dnf/cli/cli.py:428
 #, python-format
 msgid "Packages for argument %s available, but not installed."
 msgstr "针对于参数 %s 的软件包可用, 但是目前没有安装。"
 
-#: dnf/base.py:2184
+#: dnf/base.py:2278
 #, python-format
 msgid "Package %s of lowest version already installed, cannot downgrade it."
 msgstr "软件包 %s 的最低版本已经安装,无法再进行降级。"
 
-#: dnf/base.py:2242
-msgid "Action not handled: {}"
-msgstr "操作没被处理:{}"
-
-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703
-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169
-#, python-format
-msgid "No package %s available."
-msgstr "没有可用的软件包 %s。"
-
-#: dnf/base.py:2269
-msgid "no package matched"
-msgstr "没有能够与之匹配的软件包"
-
-#: dnf/base.py:2290
+#: dnf/base.py:2378
 msgid "No security updates needed, but {} update available"
 msgstr "没有必须的安全更新, 但是 {} 的更新可用"
 
-#: dnf/base.py:2292
+#: dnf/base.py:2380
 msgid "No security updates needed, but {} updates available"
 msgstr "没有必须的安全更新, 但是 {} 的更新可用"
 
-#: dnf/base.py:2296
+#: dnf/base.py:2384
 msgid "No security updates needed for \"{}\", but {} update available"
 msgstr "没有针对于\"{}\" 所必须的安全更新, 但是 {} 的更新可用"
 
-#: dnf/base.py:2298
+#: dnf/base.py:2386
 msgid "No security updates needed for \"{}\", but {} updates available"
 msgstr "没有针对于\"{}\" 所必须的安全更新, 但是 {} 的更新可用"
 
 #. raise an exception, because po.repoid is not in self.repos
-#: dnf/base.py:2319
+#: dnf/base.py:2407
 #, python-format
 msgid "Unable to retrieve a key for a commandline package: %s"
-msgstr ""
+msgstr "无法获取来自命令行的软件包的密钥:%s"
 
-#: dnf/base.py:2327
+#: dnf/base.py:2415
 #, python-format
 msgid ". Failing package is: %s"
 msgstr ". 失败的软件包是:%s"
 
-#: dnf/base.py:2328
+#: dnf/base.py:2416
 #, python-format
 msgid "GPG Keys are configured as: %s"
 msgstr "GPG密钥配置为:%s"
 
-#: dnf/base.py:2340
+#: dnf/base.py:2428
 #, python-format
 msgid "GPG key at %s (0x%s) is already installed"
 msgstr "%s 的 GPG 公钥(0x%s)已安装"
 
-#: dnf/base.py:2373
+#: dnf/base.py:2464
 msgid "The key has been approved."
 msgstr "密钥已被确认。"
 
-#: dnf/base.py:2376
+#: dnf/base.py:2467
 msgid "The key has been rejected."
 msgstr "密钥已被拒绝。"
 
-#: dnf/base.py:2409
+#: dnf/base.py:2500
 #, python-format
 msgid "Key import failed (code %d)"
 msgstr "导入公钥失败(代码 %d)"
 
-#: dnf/base.py:2411
+#: dnf/base.py:2502
 msgid "Key imported successfully"
 msgstr "导入公钥成功"
 
-#: dnf/base.py:2415
+#: dnf/base.py:2506
 msgid "Didn't install any keys"
 msgstr "没有安装任何公钥"
 
-#: dnf/base.py:2418
+#: dnf/base.py:2509
 #, 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:2429
+#: dnf/base.py:2520
 msgid "Import of key(s) didn't help, wrong key(s)?"
 msgstr "导入的密钥没有公钥,错误的公钥?"
 
-#: dnf/base.py:2482
+#: dnf/base.py:2573
 msgid "  * Maybe you meant: {}"
 msgstr "  * 可能您的意思是:{}"
 
-#: dnf/base.py:2514
+#: dnf/base.py:2605
 msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
 msgstr "软件包 \"{}\"(来自于本地仓库 \"{}\")的 checksum 不正确"
 
-#: dnf/base.py:2517
+#: dnf/base.py:2608
 msgid "Some packages from local repository have incorrect checksum"
 msgstr "本地仓库的一些软件包校验值(checksum)不正确,无法确定软件包完整"
 
-#: dnf/base.py:2520
+#: dnf/base.py:2611
 msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
 msgstr "软件包 \"{}\"(来自仓库 \"{}\")的 checksum 不正确"
 
-#: dnf/base.py:2523
+#: dnf/base.py:2614
 msgid ""
 "Some packages have invalid cache, but cannot be downloaded due to \"--"
 "cacheonly\" option"
 msgstr "以下软件包有无效缓存,因为使用了 \"--cacheonly\" 选项不能下载"
 
-#: dnf/base.py:2541 dnf/base.py:2561
+#: dnf/base.py:2632 dnf/base.py:2652
 msgid "No match for argument"
 msgstr "未找到匹配的参数"
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2640 dnf/base.py:2660
 msgid "All matches were filtered out by exclude filtering for argument"
 msgstr "由于您的搜索参数,所有相关结果都已被滤掉"
 
-#: dnf/base.py:2551
+#: dnf/base.py:2642
 msgid "All matches were filtered out by modular filtering for argument"
 msgstr "所有的匹配结果均已经被参数的模块化过滤条件筛除"
 
-#: dnf/base.py:2567
+#: dnf/base.py:2658
 msgid "All matches were installed from a different repository for argument"
 msgstr "已从另一个仓库安装了参数的所有匹配"
 
-#: dnf/base.py:2583
+#: dnf/base.py:2705
 #, python-format
 msgid "Package %s is already installed."
 msgstr "软件包 %s 已安装。"
@@ -575,8 +566,8 @@ msgstr "解析文件 \"%s\" 失败:%s"
 msgid "Cannot read file \"%s\": %s"
 msgstr "无法读取文件 \"%s\": %s"
 
-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902
-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108
+#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804
+#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108
 #, python-format
 msgid "Config error: %s"
 msgstr "配置错误:%s"
@@ -607,44 +598,48 @@ msgid ""
 "stream '{2}'"
 msgstr "这个操作会把模块 '{0}' 从流 '{1}' 切换到流 '{2}'"
 
-#: dnf/cli/cli.py:172
+#: dnf/cli/cli.py:173
 #, 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 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:210
+#: dnf/cli/cli.py:212
 #, python-brace-format
 msgid "{prog} will only download packages for the transaction."
 msgstr "{prog}将仅会从事务下载软件包。"
 
-#: dnf/cli/cli.py:213
+#: dnf/cli/cli.py:215
 #, python-brace-format
 msgid ""
 "{prog} will only download packages, install gpg keys, and check the "
 "transaction."
 msgstr "{prog}将仅会下载软件包,导入gpg密钥并检查事务。"
 
-#: dnf/cli/cli.py:217
+#: dnf/cli/cli.py:219
 msgid "Operation aborted."
 msgstr "操作中止。"
 
-#: dnf/cli/cli.py:224
+#: dnf/cli/cli.py:226
 msgid "Downloading Packages:"
 msgstr "下载软件包:"
 
-#: dnf/cli/cli.py:230
+#: dnf/cli/cli.py:232
 msgid "Error downloading packages:"
 msgstr "下载软件包出错 :"
 
-#: dnf/cli/cli.py:258
+#: dnf/cli/cli.py:264
 msgid "Transaction failed"
 msgstr "事务失败"
 
-#: dnf/cli/cli.py:281
+#: dnf/cli/cli.py:287
 msgid ""
 "Refusing to automatically import keys when running unattended.\n"
 "Use \"-y\" to override."
@@ -652,168 +647,150 @@ msgstr ""
 "如果不加干预,拒绝自动导入公钥。\n"
 "指定 \"-y\" 改变这个行为。"
 
-#: dnf/cli/cli.py:331
+#: dnf/cli/cli.py:337
 msgid "Changelogs for {}"
 msgstr "{}的变更记录"
 
-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511
+#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517
 msgid "Obsoleting Packages"
 msgstr "取代的软件包"
 
-#: dnf/cli/cli.py:393
+#: dnf/cli/cli.py:399
 msgid "No packages marked for distribution synchronization."
 msgstr "没有软件包需要发行版同步。"
 
-#: dnf/cli/cli.py:428
+#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395
+#, python-format
+msgid "No package %s available."
+msgstr "没有可用的软件包 %s。"
+
+#: dnf/cli/cli.py:434
 msgid "No packages marked for downgrade."
 msgstr "没有标记要降级的软件包。"
 
-#: dnf/cli/cli.py:479
+#: dnf/cli/cli.py:485
 msgid "Installed Packages"
 msgstr "已安装的软件包"
 
-#: dnf/cli/cli.py:487
+#: dnf/cli/cli.py:493
 msgid "Available Packages"
 msgstr "可安装的软件包"
 
-#: dnf/cli/cli.py:491
+#: dnf/cli/cli.py:497
 msgid "Autoremove Packages"
 msgstr "自动移除软件包"
 
-#: dnf/cli/cli.py:493
+#: dnf/cli/cli.py:499
 msgid "Extra Packages"
 msgstr "更多软件包"
 
-#: dnf/cli/cli.py:497
+#: dnf/cli/cli.py:503
 msgid "Available Upgrades"
 msgstr "可用升级"
 
-#: dnf/cli/cli.py:513
+#: dnf/cli/cli.py:519
 msgid "Recently Added Packages"
 msgstr "最近添加的软件包"
 
-#: dnf/cli/cli.py:518
+#: dnf/cli/cli.py:523
 msgid "No matching Packages to list"
 msgstr "没有匹配的软件包可以列出"
 
-#: dnf/cli/cli.py:599
+#: dnf/cli/cli.py:604
 msgid "No Matches found"
 msgstr "没有找到匹配的软件包"
 
-#: dnf/cli/cli.py:609
-msgid "No transaction ID given"
-msgstr "没有事务 ID"
-
-#: dnf/cli/cli.py:614
-msgid "Not found given transaction ID"
-msgstr "未找到指定事务 ID"
-
-#: dnf/cli/cli.py:623
-msgid "Found more than one transaction ID!"
-msgstr "找到多个事务 ID!"
-
-#: dnf/cli/cli.py:640
-#, python-format
-msgid "Transaction history is incomplete, before %u."
-msgstr "在 %u 之前,事务历史不完整。"
-
-#: dnf/cli/cli.py:642
-#, python-format
-msgid "Transaction history is incomplete, after %u."
-msgstr "在 %u 之后,事务历史不完整。"
-
-#: dnf/cli/cli.py:689
-msgid "Undoing transaction {}, from {}"
-msgstr "撤销事务 {},从 {}"
-
-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237
+#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237
 #, python-format
 msgid "Unknown repo: '%s'"
 msgstr "未知仓库:'%s'"
 
-#: dnf/cli/cli.py:783
+#: dnf/cli/cli.py:685
 #, python-format
 msgid "No repository match: %s"
 msgstr "没有仓库匹配: %s"
 
-#: dnf/cli/cli.py:817
+#: 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:847
+#: dnf/cli/cli.py:749
 #, python-format
 msgid "No such command: %s. Please use %s --help"
 msgstr "未找到命令: %s。请使用 %s --help"
 
-#: dnf/cli/cli.py:850
+#: 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)'\""
 
-#: dnf/cli/cli.py:854
+#: 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} 插件的命令,但是插件的加载当前已经禁用。"
 
-#: dnf/cli/cli.py:912
+#: 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:918
+#: 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:1000
+#: 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:1020
+#: dnf/cli/cli.py:922
 msgid "Config file \"{}\" does not exist"
 msgstr "配置文件 \"{}\" 不存在"
 
-#: dnf/cli/cli.py:1040
+#: dnf/cli/cli.py:942
 msgid ""
 "Unable to detect release version (use '--releasever' to specify release "
 "version)"
 msgstr "无法找到发布版本(可用 '--releasever' 指定版本)"
 
-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471
+#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471
 msgid "argument {}: not allowed with argument {}"
 msgstr "参数 {}:不允许与参数 {} 一起使用"
 
-#: dnf/cli/cli.py:1134
+#: dnf/cli/cli.py:1023
 #, python-format
 msgid "Command \"%s\" already defined"
 msgstr "命令 \"%s\" 已有定义"
 
-#: dnf/cli/cli.py:1154
+#: dnf/cli/cli.py:1043
 msgid "Excludes in dnf.conf: "
 msgstr "在 dnf.conf 中排除: "
 
-#: dnf/cli/cli.py:1157
+#: dnf/cli/cli.py:1046
 msgid "Includes in dnf.conf: "
 msgstr "在 dnf.conf 中包括: "
 
-#: dnf/cli/cli.py:1160
+#: dnf/cli/cli.py:1049
 msgid "Excludes in repo "
 msgstr "在 repo 中排除 "
 
-#: dnf/cli/cli.py:1163
+#: dnf/cli/cli.py:1052
 msgid "Includes in repo "
 msgstr "在 repo 中包括 "
 
@@ -831,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"
@@ -865,38 +843,38 @@ msgstr "问题仓库:%s"
 msgid "display details about a package or group of packages"
 msgstr "显示关于软件包或软件包组的详细信息"
 
-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740
+#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735
 msgid "show all packages (default)"
 msgstr "显示所有的软件包(默认)"
 
-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743
-#: dnf/cli/commands/module.py:351
+#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738
+#: dnf/cli/commands/module.py:376
 msgid "show only available packages"
 msgstr "只显示可用的软件包"
 
-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746
+#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741
 msgid "show only installed packages"
 msgstr "只显示已安装的软件包"
 
-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749
+#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744
 msgid "show only extras packages"
 msgstr "只显示额外的软件包"
 
 #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183
-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755
+#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750
 msgid "show only upgrades packages"
 msgstr "只显示需要被升级的软件包"
 
-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758
+#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753
 msgid "show only autoremove packages"
 msgstr "只显示需要被删除的软件包"
 
-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761
+#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756
 msgid "show only recently changed packages"
 msgstr "限制最近被改变的软件包"
 
 #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265
-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48
+#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48
 #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44
 #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46
 msgid "PACKAGE"
@@ -934,70 +912,70 @@ msgstr "检查是否有软件包升级"
 msgid "show changelogs before update"
 msgstr "在更新前显示Changelog"
 
-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414
-#: dnf/cli/commands/__init__.py:470
+#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409
+#: dnf/cli/commands/__init__.py:465
 msgid "No package available."
 msgstr "没有可用软件包。"
 
-#: dnf/cli/commands/__init__.py:376
+#: dnf/cli/commands/__init__.py:371
 msgid "No packages marked for install."
 msgstr "没有标记要安装的软件包。"
 
-#: dnf/cli/commands/__init__.py:412
+#: dnf/cli/commands/__init__.py:407
 msgid "No package installed."
 msgstr "没有软件包安装。"
 
-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489
+#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484
 #: dnf/cli/commands/reinstall.py:91
 #, python-format
 msgid " (from %s)"
 msgstr " (来自 %s)"
 
-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490
+#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485
 #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105
 #, python-format
 msgid "Installed package %s%s not available."
 msgstr "已安装的软件包%s%s已不可用。"
 
-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576
-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666
+#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571
+#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661
 msgid "No package installed from the repository."
 msgstr "没有从仓库安装任何软件包。"
 
-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101
+#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101
 msgid "No packages marked for reinstall."
 msgstr "没有标记要重新安装的软件包。"
 
-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89
+#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84
 msgid "No packages marked for upgrade."
 msgstr "没有软件包需要升级。"
 
-#: dnf/cli/commands/__init__.py:726
+#: dnf/cli/commands/__init__.py:721
 msgid "run commands on top of all packages in given repository"
 msgstr "对指定仓库中的所有软件包运行命令"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "REPOID"
 msgstr "REPOID"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "Repository ID"
 msgstr "仓库ID"
 
-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48
+#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48
 #: dnf/cli/commands/updateinfo.py:108
 msgid "Package specification"
 msgstr "软件包规格"
 
-#: dnf/cli/commands/__init__.py:801
+#: dnf/cli/commands/__init__.py:796
 msgid "display a helpful usage message"
 msgstr "显示一个有帮助的用法信息"
 
-#: dnf/cli/commands/__init__.py:805
+#: dnf/cli/commands/__init__.py:800
 msgid "COMMAND"
 msgstr "命令"
 
-#: dnf/cli/commands/__init__.py:806
+#: dnf/cli/commands/__init__.py:801
 #, python-brace-format
 msgid "{prog} command to get help for"
 msgstr "要获得帮助的 {prog} 命令"
@@ -1168,8 +1146,11 @@ msgid "Waiting for process with pid %d to finish."
 msgstr "正在等待 pid 为%d的进程退出。"
 
 #: dnf/cli/commands/deplist.py:32
-msgid "List package's dependencies and what packages provide them"
-msgstr "列出软件包的依赖关系和提供这些软件包的源"
+msgid ""
+"[deprecated, use repoquery --deplist] List package's dependencies and what "
+"packages provide them"
+msgstr ""
+"[已弃用,请使用 repoquery --deplist] 列出软件包的依赖关系和提供这些软件包的源"
 
 #: dnf/cli/commands/distrosync.py:32
 msgid "synchronize installed packages to the latest available versions"
@@ -1195,78 +1176,78 @@ msgstr "显示或使用组信息"
 msgid "No group data available for configured repositories."
 msgstr "配置的软件源不包含组数据。"
 
-#: dnf/cli/commands/group.py:129
+#: dnf/cli/commands/group.py:126
 #, python-format
 msgid "Warning: Group %s does not exist."
 msgstr "警告:组 %s 不存在。"
 
-#: dnf/cli/commands/group.py:170
+#: dnf/cli/commands/group.py:167
 msgid "Warning: No groups match:"
 msgstr "警告:没有匹配的组:"
 
-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193
-#: dnf/cli/output.py:1226
+#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190
+#: dnf/cli/output.py:1139
 msgid "<name-unset>"
-msgstr "<名称-未设定>"
+msgstr "<name-unset>"
 
-#: dnf/cli/commands/group.py:199
+#: dnf/cli/commands/group.py:196
 msgid "Available Environment Groups:"
 msgstr "可用环境组:"
 
-#: dnf/cli/commands/group.py:201
+#: dnf/cli/commands/group.py:198
 msgid "Installed Environment Groups:"
 msgstr "已安装的环境组:"
 
-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294
+#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291
 msgid "Installed Groups:"
 msgstr "已安装组:"
 
-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301
+#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298
 msgid "Installed Language Groups:"
 msgstr "已安装语言组:"
 
-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308
+#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305
 msgid "Available Groups:"
 msgstr "可用组:"
 
-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315
+#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312
 msgid "Available Language Groups:"
 msgstr "可用语言组:"
 
-#: dnf/cli/commands/group.py:322
+#: dnf/cli/commands/group.py:319
 msgid "include optional packages from group"
 msgstr "包含可选软件包"
 
-#: dnf/cli/commands/group.py:325
+#: dnf/cli/commands/group.py:322
 msgid "show also hidden groups"
 msgstr "同时显示已隐藏的软件组"
 
-#: dnf/cli/commands/group.py:327
+#: dnf/cli/commands/group.py:324
 msgid "show only installed groups"
 msgstr "只显示已安装的软件组"
 
-#: dnf/cli/commands/group.py:329
+#: dnf/cli/commands/group.py:326
 msgid "show only available groups"
 msgstr "只显示可获得的团队"
 
-#: dnf/cli/commands/group.py:331
+#: dnf/cli/commands/group.py:328
 msgid "show also ID of groups"
 msgstr "同时显示组的 ID"
 
-#: dnf/cli/commands/group.py:333
+#: dnf/cli/commands/group.py:330
 msgid "available subcommands: {} (default), {}"
 msgstr "可用的子命令:{} (默认), {}"
 
-#: dnf/cli/commands/group.py:337
+#: dnf/cli/commands/group.py:334
 msgid "argument for group subcommand"
 msgstr "组子命令的参数"
 
-#: dnf/cli/commands/group.py:346
+#: dnf/cli/commands/group.py:343
 #, python-format
 msgid "Invalid groups sub-command, use: %s."
 msgstr "无效的组子命令,请使用:%s 。"
 
-#: dnf/cli/commands/group.py:403
+#: dnf/cli/commands/group.py:398
 msgid "Unable to find a mandatory group package."
 msgstr "无法找到一个必须的组软件包。"
 
@@ -1276,25 +1257,25 @@ 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"
-msgstr ""
+"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 ""
+msgstr "对于 replay 命令,不要检查被拉入事务的额外的包"
 
 #: 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 "对于 replay 命令,跳过不可用或者缺少依赖项的软件包"
 
 #: dnf/cli/commands/history.py:94
 msgid ""
@@ -1305,41 +1286,64 @@ msgstr ""
 "'{}' 需要一个事务 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:126
+#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130
 msgid "No transaction ID or package name given."
 msgstr "没有提供事务 ID 或软件包名。"
 
-#: dnf/cli/commands/history.py:138
+#: dnf/cli/commands/history.py:142
 #, python-format
 msgid "You don't have access to the history DB: %s"
 msgstr "你没有权限访问历史数据库:%s"
 
-#: dnf/cli/commands/history.py:147
+#: 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:152
+#: dnf/cli/commands/history.py:156
 #, python-format
 msgid ""
 "Cannot rollback transaction %s, doing so would result in an inconsistent "
 "package database."
 msgstr "无法回滚事务 %s,这样做将可能导致不一致的软件包数据库。"
 
-#: dnf/cli/commands/history.py:222
+#: dnf/cli/commands/history.py:175
+msgid "No transaction ID given"
+msgstr "没有事务 ID"
+
+#: dnf/cli/commands/history.py:179
+#, python-brace-format
+msgid "Transaction ID \"{0}\" not found."
+msgstr "事务 ID \"{0}\" 未找到。"
+
+#: dnf/cli/commands/history.py:185
+msgid "Found more than one transaction ID!"
+msgstr "找到多个事务 ID!"
+
+#: dnf/cli/commands/history.py:203
+#, python-format
+msgid "Transaction history is incomplete, before %u."
+msgstr "在 %u 之前,事务历史不完整。"
+
+#: dnf/cli/commands/history.py:205
+#, python-format
+msgid "Transaction history is incomplete, after %u."
+msgstr "在 %u 之后,事务历史不完整。"
+
+#: dnf/cli/commands/history.py:256
+msgid "No packages to list"
+msgstr "没有可以列出的软件包"
+
+#: dnf/cli/commands/history.py:279
 msgid ""
 "Invalid transaction ID range definition '{}'.\n"
 "Use '<transaction-id>..<transaction-id>'."
@@ -1347,7 +1351,7 @@ msgstr ""
 "无效的事务 ID 范围定义 '{}'。\n"
 "使用 '<transaction-id>..<transaction-id>'。"
 
-#: dnf/cli/commands/history.py:226
+#: dnf/cli/commands/history.py:283
 msgid ""
 "Can't convert '{}' to transaction ID.\n"
 "Use '<number>', 'last', 'last-<number>'."
@@ -1355,40 +1359,29 @@ msgstr ""
 "无法将 '{}' 转换为事务 ID。\n"
 "请使用 '<number>'、'last'、'last-<number>'。"
 
-#: dnf/cli/commands/history.py:255
+#: dnf/cli/commands/history.py:312
 msgid "No transaction which manipulates package '{}' was found."
 msgstr "没有找到操作软件包 '{}' 的事务。"
 
-#: dnf/cli/commands/history.py:305
-#, fuzzy, python-brace-format
-#| msgid "TransactionItem not found for key: {}"
-msgid "Transaction ID \"{id}\" not found."
-msgstr "找不到键的 TransactionItem: {}"
-
-#: dnf/cli/commands/history.py:313
+#: dnf/cli/commands/history.py:357
 msgid "{} exists, overwrite?"
-msgstr ""
+msgstr "{} 已存在,是否覆盖?"
 
-#: dnf/cli/commands/history.py:316
+#: dnf/cli/commands/history.py:360
 msgid "Not overwriting {}, exiting."
-msgstr ""
+msgstr "不覆盖 {},退出。"
 
-#: dnf/cli/commands/history.py:323
-#, fuzzy
-#| msgid "Transaction failed"
+#: dnf/cli/commands/history.py:367
 msgid "Transaction saved to {}."
-msgstr "事务失败"
+msgstr "事务已保存至 {}。"
 
-#: dnf/cli/commands/history.py:326
-#, fuzzy
-#| msgid "Errors occurred during transaction."
+#: dnf/cli/commands/history.py:370
 msgid "Error storing transaction: {}"
-msgstr "事务过程中出现错误。"
+msgstr "存储事务时出现错误:{}"
 
-#: dnf/cli/commands/history.py:350
-msgid ""
-"Warning, the following problems occurred while replaying the transaction:"
-msgstr ""
+#: dnf/cli/commands/history.py:386
+msgid "Warning, the following problems occurred while running a transaction:"
+msgstr "警告,在运行事务时出现了下列问题:"
 
 #: dnf/cli/commands/install.py:47
 msgid "install a package or packages on your system"
@@ -1407,7 +1400,7 @@ msgstr "没有任何匹配"
 msgid "Not a valid rpm file path: %s"
 msgstr "RPM文件路径错误:%s"
 
-#: dnf/cli/commands/install.py:167
+#: dnf/cli/commands/install.py:166
 #, python-brace-format
 msgid "There are following alternatives for \"{0}\": {1}"
 msgstr "以下是 \"{0}\" 的替代 : {1}"
@@ -1450,7 +1443,7 @@ msgid "%s marked as group installed."
 msgstr "%s 已标记为已安装软件组。"
 
 #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129
-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279
+#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282
 msgid "Error:"
 msgstr "错误:"
 
@@ -1459,89 +1452,93 @@ msgstr "错误:"
 msgid "Package %s is not installed."
 msgstr "软件包 %s 尚未安装。"
 
-#: dnf/cli/commands/module.py:51
+#: 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:77
+#: dnf/cli/commands/module.py:80
 msgid "list all module streams, profiles and states"
 msgstr "列出所有模块流、配置文件以及状态"
 
-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128
+#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131
 msgid "No matching Modules to list"
 msgstr "没有匹配的模块可以列出"
 
-#: dnf/cli/commands/module.py:111
+#: dnf/cli/commands/module.py:114
 msgid "print detailed information about a module"
 msgstr "打印关于一个模块的详细信息"
 
-#: dnf/cli/commands/module.py:133
+#: dnf/cli/commands/module.py:136
 msgid "enable a module stream"
 msgstr "启用一个模块流"
 
-#: dnf/cli/commands/module.py:157
+#: dnf/cli/commands/module.py:160
 msgid "disable a module with all its streams"
 msgstr "停用一个模块及其所有的流"
 
-#: dnf/cli/commands/module.py:181
+#: dnf/cli/commands/module.py:184
 msgid "reset a module"
 msgstr "重置一个模块"
 
-#: dnf/cli/commands/module.py:202
+#: dnf/cli/commands/module.py:205
 msgid "install a module profile including its packages"
 msgstr "安装一个包含其软件包的模块配置文件"
 
-#: dnf/cli/commands/module.py:223
+#: dnf/cli/commands/module.py:226
 msgid "update packages associated with an active stream"
 msgstr "升级与一个已激活的流相关联的软件包"
 
-#: dnf/cli/commands/module.py:240
+#: dnf/cli/commands/module.py:243
 msgid "remove installed module profiles and their packages"
 msgstr "移除已经安装的模块配置文件及其软件包"
 
-#: dnf/cli/commands/module.py:264
+#: dnf/cli/commands/module.py:267
 msgid "Package {} belongs to multiple modules, skipping"
 msgstr "软件包 {} 属于多个模块,正在跳过"
 
-#: dnf/cli/commands/module.py:277
+#: dnf/cli/commands/module.py:280
+msgid "switch a module to a stream and distrosync rpm packages"
+msgstr "切换一个模块到某个流并且对 rpm 软件包进行 distrosync"
+
+#: dnf/cli/commands/module.py:302
 msgid "list modular packages"
 msgstr "列出模块包"
 
-#: dnf/cli/commands/module.py:292
+#: dnf/cli/commands/module.py:317
 msgid "list packages belonging to a module"
 msgstr "列出属于一个模块的软件包"
 
-#: dnf/cli/commands/module.py:327
+#: dnf/cli/commands/module.py:352
 msgid "Interact with Modules."
 msgstr "与模块交互。"
 
-#: dnf/cli/commands/module.py:340
+#: dnf/cli/commands/module.py:365
 msgid "show only enabled modules"
 msgstr "只显示启用的模块"
 
-#: dnf/cli/commands/module.py:343
+#: dnf/cli/commands/module.py:368
 msgid "show only disabled modules"
 msgstr "只显示禁用的模块"
 
-#: dnf/cli/commands/module.py:346
+#: dnf/cli/commands/module.py:371
 msgid "show only installed modules or packages"
 msgstr "只显示已安装的模块或者软件包"
 
-#: dnf/cli/commands/module.py:349
+#: dnf/cli/commands/module.py:374
 msgid "show profile content"
 msgstr "显示档案内容"
 
-#: dnf/cli/commands/module.py:354
+#: dnf/cli/commands/module.py:379
 msgid "remove all modular packages"
 msgstr "移除所有模块包"
 
-#: dnf/cli/commands/module.py:364
+#: dnf/cli/commands/module.py:389
 msgid "Module specification"
 msgstr "模块规格"
 
-#: dnf/cli/commands/module.py:386
+#: dnf/cli/commands/module.py:411
 msgid "{} {} {}: too few arguments"
 msgstr "{} {} {}: 参数太少"
 
@@ -1627,15 +1624,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      : "
@@ -1697,11 +1694,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)...
@@ -1752,7 +1749,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"
@@ -1841,9 +1840,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"
@@ -1853,13 +1854,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 ""
@@ -1895,7 +1899,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."
@@ -1920,8 +1926,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."
@@ -1970,22 +1976,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"
@@ -1999,13 +2006,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,27 +2037,26 @@ msgstr "KEYWORD"
 msgid "Keyword to search for"
 msgstr "要搜索的关键字"
 
-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506
+#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460
 msgctxt "long"
 msgid "Name"
 msgstr "名称"
 
-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559
+#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513
 msgctxt "long"
 msgid "Summary"
 msgstr "概况"
 
-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569
+#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523
 msgctxt "long"
 msgid "Description"
 msgstr "描述"
 
-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562
+#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516
 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 " 和 "
@@ -2184,16 +2194,16 @@ msgstr ""
 "run                      解析以及运行事务集\n"
 "exit (或 quit)           退出 shell"
 
-#: dnf/cli/commands/shell.py:259
+#: dnf/cli/commands/shell.py:262
 #, python-format
 msgid "Error: Cannot open %s for reading"
 msgstr "错误:无法打开%s来读取"
 
-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187
+#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187
 msgid "Complete!"
 msgstr "完毕!"
 
-#: dnf/cli/commands/shell.py:291
+#: dnf/cli/commands/shell.py:294
 msgid "Leaving Shell"
 msgstr "离开终端"
 
@@ -2384,8 +2394,8 @@ msgstr "严重性"
 msgid "Files"
 msgstr "文件"
 
-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499
-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
+#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654
+#: dnf/cli/output.py:1656 dnf/util.py:617
 msgid "Installed"
 msgstr "已安装"
 
@@ -2564,7 +2574,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"
@@ -2586,8 +2598,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
@@ -2616,7 +2628,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"
@@ -2706,13 +2719,13 @@ msgstr "无法编码参数 '%s': %s"
 #. Translators: This is abbreviated 'Name'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:505
+#: dnf/cli/output.py:459
 msgctxt "short"
 msgid "Name"
 msgstr "名称"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:511
+#: dnf/cli/output.py:465
 msgid "Epoch"
 msgstr "时期"
 
@@ -2720,38 +2733,38 @@ msgstr "时期"
 #. use the full (unabbreviated) term 'Version' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:512 dnf/cli/output.py:1335
+#: dnf/cli/output.py:466 dnf/cli/output.py:1248
 msgctxt "short"
 msgid "Version"
 msgstr "版本"
 
 #. Translators: This is the full (unabbreviated) term 'Version'.
-#: dnf/cli/output.py:513 dnf/cli/output.py:1337
+#: dnf/cli/output.py:467 dnf/cli/output.py:1250
 msgctxt "long"
 msgid "Version"
 msgstr "版本"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:516
+#: dnf/cli/output.py:470
 msgid "Release"
 msgstr "发布"
 
 #. Translators: This is abbreviated 'Architecture', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:517 dnf/cli/output.py:1326
+#: dnf/cli/output.py:471 dnf/cli/output.py:1239
 msgctxt "short"
 msgid "Arch"
 msgstr "架构"
 
 #. Translators: This is the full word 'Architecture', used when
 #. we have enough space.
-#: dnf/cli/output.py:518 dnf/cli/output.py:1329
+#: dnf/cli/output.py:472 dnf/cli/output.py:1242
 msgctxt "long"
 msgid "Architecture"
 msgstr "架构"
 
 #. Translators: This is the full (unabbreviated) term 'Size'.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1352
+#: dnf/cli/output.py:474 dnf/cli/output.py:1265
 msgctxt "long"
 msgid "Size"
 msgstr "大小"
@@ -2760,32 +2773,32 @@ msgstr "大小"
 #. not be longer than 5 characters. If the term 'Size' in your
 #. language is not longer than 5 characters then you can use it
 #. unabbreviated.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1350
+#: dnf/cli/output.py:474 dnf/cli/output.py:1263
 msgctxt "short"
 msgid "Size"
 msgstr "大小"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:524
+#: dnf/cli/output.py:478
 msgid "Source"
 msgstr "源"
 
 #. Translators: This is abbreviated 'Repository', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:525 dnf/cli/output.py:1341
+#: dnf/cli/output.py:479 dnf/cli/output.py:1254
 msgctxt "short"
 msgid "Repo"
 msgstr "仓库"
 
 #. Translators: This is the full word 'Repository', used when
 #. we have enough space.
-#: dnf/cli/output.py:526 dnf/cli/output.py:1344
+#: dnf/cli/output.py:480 dnf/cli/output.py:1257
 msgctxt "long"
 msgid "Repository"
 msgstr "仓库"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:533
+#: dnf/cli/output.py:487
 msgid "From repo"
 msgstr "来自仓库"
 
@@ -2793,312 +2806,308 @@ msgstr "来自仓库"
 #. print(_("Committer   : %s") % ucd(pkg.committer))
 #. print(_("Committime  : %s") % time.ctime(pkg.committime))
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:539
+#: dnf/cli/output.py:493
 msgid "Packager"
 msgstr "打包者"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:541
+#: dnf/cli/output.py:495
 msgid "Buildtime"
 msgstr "构建时间"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:545
+#: dnf/cli/output.py:499
 msgid "Install time"
 msgstr "安装时间"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:554
+#: dnf/cli/output.py:508
 msgid "Installed by"
 msgstr "安装者"
 
 #. Translators: This is abbreviated 'Summary'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:558
+#: dnf/cli/output.py:512
 msgctxt "short"
 msgid "Summary"
 msgstr "概况"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:564
+#: dnf/cli/output.py:518
 msgid "License"
 msgstr "协议"
 
 #. Translators: This is abbreviated 'Description'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:568
+#: dnf/cli/output.py:522
 msgctxt "short"
 msgid "Description"
 msgstr "描述"
 
-#: dnf/cli/output.py:695
-msgid "No packages to list"
-msgstr "没有可以列出的软件包"
-
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "y"
 msgstr "y"
 
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "yes"
 msgstr "是"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "n"
 msgstr "n"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "no"
 msgstr "否"
 
-#: dnf/cli/output.py:711
+#: dnf/cli/output.py:655
 msgid "Is this ok [y/N]: "
 msgstr "确定吗?[y/N]: "
 
-#: dnf/cli/output.py:715
+#: dnf/cli/output.py:659
 msgid "Is this ok [Y/n]: "
 msgstr "确定吗?[Y/n]: "
 
-#: dnf/cli/output.py:795
+#: dnf/cli/output.py:739
 #, python-format
 msgid "Group: %s"
 msgstr "组:%s"
 
-#: dnf/cli/output.py:799
+#: dnf/cli/output.py:743
 #, python-format
 msgid " Group-Id: %s"
 msgstr " 组编号:%s"
 
-#: dnf/cli/output.py:801 dnf/cli/output.py:840
+#: dnf/cli/output.py:745 dnf/cli/output.py:784
 #, python-format
 msgid " Description: %s"
 msgstr " 描述:%s"
 
-#: dnf/cli/output.py:803
+#: dnf/cli/output.py:747
 #, python-format
 msgid " Language: %s"
 msgstr " 语言:%s"
 
-#: dnf/cli/output.py:806
+#: dnf/cli/output.py:750
 msgid " Mandatory Packages:"
 msgstr " 必要的软件包:"
 
-#: dnf/cli/output.py:807
+#: dnf/cli/output.py:751
 msgid " Default Packages:"
 msgstr " 默认的软件包:"
 
-#: dnf/cli/output.py:808
+#: dnf/cli/output.py:752
 msgid " Optional Packages:"
 msgstr " 可选的软件包:"
 
-#: dnf/cli/output.py:809
+#: dnf/cli/output.py:753
 msgid " Conditional Packages:"
 msgstr " 可能的软件包:"
 
-#: dnf/cli/output.py:834
+#: dnf/cli/output.py:778
 #, python-format
 msgid "Environment Group: %s"
 msgstr "环境组:%s"
 
-#: dnf/cli/output.py:837
+#: dnf/cli/output.py:781
 #, python-format
 msgid " Environment-Id: %s"
 msgstr " 环境-Id:%s"
 
-#: dnf/cli/output.py:843
+#: dnf/cli/output.py:787
 msgid " Mandatory Groups:"
 msgstr " 必选软件包组:"
 
-#: dnf/cli/output.py:844
+#: dnf/cli/output.py:788
 msgid " Optional Groups:"
 msgstr " 可选软件包组:"
 
-#: dnf/cli/output.py:865
+#: dnf/cli/output.py:809
 msgid "Matched from:"
 msgstr "匹配来源:"
 
-#: dnf/cli/output.py:879
+#: dnf/cli/output.py:823
 #, python-format
 msgid "Filename    : %s"
 msgstr "文件名    :%s"
 
-#: dnf/cli/output.py:904
+#: dnf/cli/output.py:848
 #, python-format
 msgid "Repo        : %s"
 msgstr "仓库        :%s"
 
-#: dnf/cli/output.py:913
+#: dnf/cli/output.py:857
 msgid "Description : "
 msgstr "描述: "
 
-#: dnf/cli/output.py:917
+#: dnf/cli/output.py:861
 #, python-format
 msgid "URL         : %s"
 msgstr "网址         :%s"
 
-#: dnf/cli/output.py:921
+#: dnf/cli/output.py:865
 #, python-format
 msgid "License     : %s"
 msgstr "协议     :%s"
 
-#: dnf/cli/output.py:927
+#: dnf/cli/output.py:871
 #, python-format
 msgid "Provide    : %s"
 msgstr "提供    : %s"
 
-#: dnf/cli/output.py:947
+#: dnf/cli/output.py:891
 #, python-format
 msgid "Other       : %s"
 msgstr "其它       : %s"
 
-#: dnf/cli/output.py:996
+#: dnf/cli/output.py:940
 msgid "There was an error calculating total download size"
 msgstr "计算总下载量时出错"
 
-#: dnf/cli/output.py:1002
+#: dnf/cli/output.py:946
 #, python-format
 msgid "Total size: %s"
 msgstr "总计:%s"
 
-#: dnf/cli/output.py:1005
+#: dnf/cli/output.py:949
 #, python-format
 msgid "Total download size: %s"
 msgstr "总下载:%s"
 
-#: dnf/cli/output.py:1008
+#: dnf/cli/output.py:952
 #, python-format
 msgid "Installed size: %s"
 msgstr "安装大小:%s"
 
-#: dnf/cli/output.py:1026
+#: dnf/cli/output.py:970
 msgid "There was an error calculating installed size"
 msgstr "计算安装大小时出错"
 
-#: dnf/cli/output.py:1030
+#: dnf/cli/output.py:974
 #, python-format
 msgid "Freed space: %s"
 msgstr "将会释放空间:%s"
 
-#: dnf/cli/output.py:1039
+#: dnf/cli/output.py:983
 msgid "Marking packages as installed by the group:"
 msgstr "标记软件包为遵循软件包组安装的:"
 
-#: dnf/cli/output.py:1046
+#: dnf/cli/output.py:990
 msgid "Marking packages as removed by the group:"
 msgstr "标记软件包为遵循软件包组移除的:"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Group"
 msgstr "组"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Packages"
 msgstr "软件包"
 
-#: dnf/cli/output.py:1133
+#: dnf/cli/output.py:1046
 msgid "Installing group/module packages"
 msgstr "安装组/模块包"
 
-#: dnf/cli/output.py:1134
+#: dnf/cli/output.py:1047
 msgid "Installing group packages"
 msgstr "安装软件包组"
 
 #. TRANSLATORS: This is for a list of packages to be installed.
-#: dnf/cli/output.py:1138
+#: dnf/cli/output.py:1051
 msgctxt "summary"
 msgid "Installing"
 msgstr "安装"
 
 #. TRANSLATORS: This is for a list of packages to be upgraded.
-#: dnf/cli/output.py:1140
+#: dnf/cli/output.py:1053
 msgctxt "summary"
 msgid "Upgrading"
 msgstr "升级"
 
 #. TRANSLATORS: This is for a list of packages to be reinstalled.
-#: dnf/cli/output.py:1142
+#: dnf/cli/output.py:1055
 msgctxt "summary"
 msgid "Reinstalling"
 msgstr "重新安装"
 
-#: dnf/cli/output.py:1144
+#: dnf/cli/output.py:1057
 msgid "Installing dependencies"
 msgstr "安装依赖关系"
 
-#: dnf/cli/output.py:1145
+#: dnf/cli/output.py:1058
 msgid "Installing weak dependencies"
 msgstr "安装弱的依赖"
 
 #. TRANSLATORS: This is for a list of packages to be removed.
-#: dnf/cli/output.py:1147
+#: dnf/cli/output.py:1060
 msgid "Removing"
 msgstr "移除"
 
-#: dnf/cli/output.py:1148
+#: dnf/cli/output.py:1061
 msgid "Removing dependent packages"
 msgstr "移除依赖的软件包"
 
-#: dnf/cli/output.py:1149
+#: dnf/cli/output.py:1062
 msgid "Removing unused dependencies"
 msgstr "清除未被使用的依赖关系"
 
 #. TRANSLATORS: This is for a list of packages to be downgraded.
-#: dnf/cli/output.py:1151
+#: dnf/cli/output.py:1064
 msgctxt "summary"
 msgid "Downgrading"
 msgstr "降级"
 
-#: dnf/cli/output.py:1176
+#: dnf/cli/output.py:1089
 msgid "Installing module profiles"
 msgstr "安装模块配置档案"
 
-#: dnf/cli/output.py:1185
+#: dnf/cli/output.py:1098
 msgid "Disabling module profiles"
 msgstr "禁用模块配置档案"
 
-#: dnf/cli/output.py:1194
+#: dnf/cli/output.py:1107
 msgid "Enabling module streams"
 msgstr "启用模块流"
 
-#: dnf/cli/output.py:1202
+#: dnf/cli/output.py:1115
 msgid "Switching module streams"
 msgstr "切换模块流"
 
-#: dnf/cli/output.py:1210
+#: dnf/cli/output.py:1123
 msgid "Disabling modules"
 msgstr "禁用模块"
 
-#: dnf/cli/output.py:1218
+#: dnf/cli/output.py:1131
 msgid "Resetting modules"
 msgstr "重置模块"
 
-#: dnf/cli/output.py:1230
+#: dnf/cli/output.py:1143
 msgid "Installing Environment Groups"
 msgstr "安装环境组"
 
-#: dnf/cli/output.py:1237
+#: dnf/cli/output.py:1150
 msgid "Upgrading Environment Groups"
 msgstr "升级环境组"
 
-#: dnf/cli/output.py:1244
+#: dnf/cli/output.py:1157
 msgid "Removing Environment Groups"
 msgstr "删除环境组"
 
-#: dnf/cli/output.py:1251
+#: dnf/cli/output.py:1164
 msgid "Installing Groups"
 msgstr "安装组"
 
-#: dnf/cli/output.py:1258
+#: dnf/cli/output.py:1171
 msgid "Upgrading Groups"
 msgstr "升级组"
 
-#: dnf/cli/output.py:1265
+#: dnf/cli/output.py:1178
 msgid "Removing Groups"
 msgstr "删除组"
 
-#: dnf/cli/output.py:1281
+#: dnf/cli/output.py:1194
 #, python-format
 msgid ""
 "Skipping packages with conflicts:\n"
@@ -3107,12 +3116,12 @@ msgstr ""
 "跳过有冲突的软件包:\n"
 "(添加 '%s' 至命令行来强制升级)"
 
-#: dnf/cli/output.py:1291
+#: dnf/cli/output.py:1204
 #, python-format
 msgid "Skipping packages with broken dependencies%s"
 msgstr "跳过存在损坏依赖关系的软件包 %s"
 
-#: dnf/cli/output.py:1295
+#: dnf/cli/output.py:1208
 msgid " or part of a group"
 msgstr " 或一个组的一部分"
 
@@ -3120,22 +3129,22 @@ msgstr " 或一个组的一部分"
 #. use the full (unabbreviated) term 'Package' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:1320
+#: dnf/cli/output.py:1233
 msgctxt "short"
 msgid "Package"
 msgstr "软件包"
 
 #. Translators: This is the full (unabbreviated) term 'Package'.
-#: dnf/cli/output.py:1322
+#: dnf/cli/output.py:1235
 msgctxt "long"
 msgid "Package"
 msgstr "软件包"
 
-#: dnf/cli/output.py:1371
+#: dnf/cli/output.py:1284
 msgid "replacing"
 msgstr "替换"
 
-#: dnf/cli/output.py:1378
+#: dnf/cli/output.py:1291
 #, python-format
 msgid ""
 "\n"
@@ -3147,287 +3156,271 @@ msgstr ""
 "%s\n"
 
 #. TODO: remove
-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933
+#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815
 msgid "Install"
 msgstr "安装"
 
-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941
+#: dnf/cli/output.py:1300 dnf/cli/output.py:1823
 msgid "Upgrade"
 msgstr "升级"
 
-#: dnf/cli/output.py:1388
+#: dnf/cli/output.py:1301
 msgid "Remove"
 msgstr "移除"
 
-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939
+#: dnf/cli/output.py:1303 dnf/cli/output.py:1821
 msgid "Downgrade"
 msgstr "降级"
 
-#: dnf/cli/output.py:1391
+#: dnf/cli/output.py:1304
 msgid "Skip"
 msgstr "跳过"
 
-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416
+#: dnf/cli/output.py:1313 dnf/cli/output.py:1329
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "软件包"
 
-#: dnf/cli/output.py:1418
+#: dnf/cli/output.py:1331
 msgid "Dependent package"
 msgid_plural "Dependent packages"
 msgstr[0] "依赖软件包"
 
-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942
-msgid "Upgraded"
-msgstr "已升级"
-
-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940
-msgid "Downgraded"
-msgstr "已降级"
-
-#: dnf/cli/output.py:1503
-msgid "Reinstalled"
-msgstr "已重装"
-
-#: dnf/cli/output.py:1504
-msgid "Skipped"
-msgstr "已跳过"
-
-#: dnf/cli/output.py:1505
-msgid "Removed"
-msgstr "已移除"
-
-#: dnf/cli/output.py:1508
-msgid "Failed"
-msgstr "失败"
-
-#: dnf/cli/output.py:1559
+#: dnf/cli/output.py:1439
 msgid "Total"
 msgstr "总计"
 
-#: dnf/cli/output.py:1587
+#: dnf/cli/output.py:1467
 msgid "<unset>"
-msgstr "<空>"
+msgstr "<unset>"
 
-#: dnf/cli/output.py:1588
+#: dnf/cli/output.py:1468
 msgid "System"
 msgstr "系统"
 
-#: dnf/cli/output.py:1638
+#: dnf/cli/output.py:1518
 msgid "Command line"
 msgstr "命令行"
 
 #. TRANSLATORS: user names who executed transaction in history command output
-#: dnf/cli/output.py:1649
+#: dnf/cli/output.py:1531
 msgid "User name"
 msgstr "用户名"
 
-#: dnf/cli/output.py:1651
+#: dnf/cli/output.py:1533
 msgid "ID"
 msgstr "ID"
 
-#: dnf/cli/output.py:1653
+#: dnf/cli/output.py:1535
 msgid "Date and time"
 msgstr "日期和时间"
 
-#: dnf/cli/output.py:1654
+#: dnf/cli/output.py:1536
 msgid "Action(s)"
 msgstr "操作"
 
-#: dnf/cli/output.py:1655
+#: dnf/cli/output.py:1537
 msgid "Altered"
 msgstr "更改"
 
-#: dnf/cli/output.py:1698
+#: dnf/cli/output.py:1580
 msgid "No transactions"
 msgstr "没有事务"
 
-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715
+#: dnf/cli/output.py:1581 dnf/cli/output.py:1597
 msgid "Failed history info"
 msgstr "失败的历史信息"
 
-#: dnf/cli/output.py:1714
+#: dnf/cli/output.py:1596
 msgid "No transaction ID, or package, given"
 msgstr "未指定事务 ID、或者软件包"
 
-#: dnf/cli/output.py:1772
+#: dnf/cli/output.py:1654
 msgid "Erased"
 msgstr "已删除"
 
-#: dnf/cli/output.py:1774
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616
+msgid "Downgraded"
+msgstr "已降级"
+
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615
+msgid "Upgraded"
+msgstr "已升级"
+
+#: dnf/cli/output.py:1656
 msgid "Not installed"
 msgstr "未安装"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Newer"
 msgstr "较早的"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Older"
 msgstr "较老的"
 
-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825
+#: dnf/cli/output.py:1705 dnf/cli/output.py:1707
 msgid "Transaction ID :"
 msgstr "事务 ID:"
 
-#: dnf/cli/output.py:1828
+#: dnf/cli/output.py:1710
 msgid "Begin time     :"
 msgstr "起始时间    :"
 
-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833
+#: dnf/cli/output.py:1713 dnf/cli/output.py:1715
 msgid "Begin rpmdb    :"
 msgstr "起始 RPM 数据库     :"
 
-#: dnf/cli/output.py:1839
+#: dnf/cli/output.py:1721
 #, python-format
 msgid "(%u seconds)"
 msgstr "(%u 秒)"
 
-#: dnf/cli/output.py:1841
+#: dnf/cli/output.py:1723
 #, python-format
 msgid "(%u minutes)"
 msgstr "(%u 分钟)"
 
-#: dnf/cli/output.py:1843
+#: dnf/cli/output.py:1725
 #, python-format
 msgid "(%u hours)"
 msgstr "(%u 小时)"
 
-#: dnf/cli/output.py:1845
+#: dnf/cli/output.py:1727
 #, python-format
 msgid "(%u days)"
 msgstr "(%u 天)"
 
-#: dnf/cli/output.py:1846
+#: dnf/cli/output.py:1728
 msgid "End time       :"
 msgstr "结束时间       :"
 
-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851
+#: dnf/cli/output.py:1731 dnf/cli/output.py:1733
 msgid "End rpmdb      :"
 msgstr "结束 RPM 数据库      :"
 
-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860
+#: dnf/cli/output.py:1740 dnf/cli/output.py:1742
 msgid "User           :"
 msgstr "用户           :"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1753
 msgid "Aborted"
 msgstr "已终止"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869
-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751
+#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757
 msgid "Return-Code    :"
 msgstr "返回码    :"
 
-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1749 dnf/cli/output.py:1757
 msgid "Success"
 msgstr "成功"
 
-#: dnf/cli/output.py:1869
+#: dnf/cli/output.py:1751
 msgid "Failures:"
 msgstr "失败:"
 
-#: dnf/cli/output.py:1873
+#: dnf/cli/output.py:1755
 msgid "Failure:"
 msgstr "失败:"
 
-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885
+#: dnf/cli/output.py:1765 dnf/cli/output.py:1767
 msgid "Releasever     :"
 msgstr "Releasever     :"
 
-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892
+#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
 msgid "Command Line   :"
 msgstr "命令行   :"
 
-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899
+#: dnf/cli/output.py:1779 dnf/cli/output.py:1781
 msgid "Comment        :"
 msgstr "注释        :"
 
-#: dnf/cli/output.py:1903
+#: dnf/cli/output.py:1785
 msgid "Transaction performed with:"
 msgstr "事务完成由:"
 
-#: dnf/cli/output.py:1912
+#: dnf/cli/output.py:1794
 msgid "Packages Altered:"
 msgstr "已改变的包:"
 
-#: dnf/cli/output.py:1918
+#: dnf/cli/output.py:1800
 msgid "Scriptlet output:"
 msgstr "Scriptlet 输出:"
 
-#: dnf/cli/output.py:1925
+#: dnf/cli/output.py:1807
 msgid "Errors:"
 msgstr "错误:"
 
-#: dnf/cli/output.py:1934
+#: dnf/cli/output.py:1816
 msgid "Dep-Install"
 msgstr "依赖安装"
 
-#: dnf/cli/output.py:1935
+#: dnf/cli/output.py:1817
 msgid "Obsoleted"
 msgstr "已废弃"
 
-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85
+#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85
 msgid "Obsoleting"
 msgstr "废弃"
 
-#: dnf/cli/output.py:1937
+#: dnf/cli/output.py:1819
 msgid "Erase"
 msgstr "删除"
 
-#: dnf/cli/output.py:1938
+#: dnf/cli/output.py:1820
 msgid "Reinstall"
 msgstr "重装"
 
-#: dnf/cli/output.py:2016
+#: dnf/cli/output.py:1894
 #, python-format
 msgid "---> Package %s.%s %s will be installed"
 msgstr "---> 软件包 %s.%s %s 将会被安装"
 
-#: dnf/cli/output.py:2018
+#: dnf/cli/output.py:1896
 #, python-format
 msgid "---> Package %s.%s %s will be an upgrade"
 msgstr "---> 软件包 %s.%s %s 将作为一个更新"
 
-#: dnf/cli/output.py:2020
+#: dnf/cli/output.py:1898
 #, python-format
 msgid "---> Package %s.%s %s will be erased"
 msgstr "---> 软件包 %s.%s %s 将会被清除"
 
-#: dnf/cli/output.py:2022
+#: dnf/cli/output.py:1900
 #, python-format
 msgid "---> Package %s.%s %s will be reinstalled"
 msgstr "---> 软件包 %s.%s %s 将会被重新安装"
 
-#: dnf/cli/output.py:2024
+#: dnf/cli/output.py:1902
 #, python-format
 msgid "---> Package %s.%s %s will be a downgrade"
 msgstr "---> 软件包 %s.%s %s 将会被降级"
 
-#: dnf/cli/output.py:2026
+#: dnf/cli/output.py:1904
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleting"
 msgstr "---> 软件包 %s.%s %s 将会废弃"
 
-#: dnf/cli/output.py:2028
+#: dnf/cli/output.py:1906
 #, python-format
 msgid "---> Package %s.%s %s will be upgraded"
 msgstr "---> 软件包 %s.%s %s 将会被升级"
 
-#: dnf/cli/output.py:2030
+#: dnf/cli/output.py:1908
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleted"
 msgstr "---> 软件包 %s.%s %s 将会被废弃"
 
-#: dnf/cli/output.py:2039
+#: dnf/cli/output.py:1917
 msgid "--> Starting dependency resolution"
 msgstr "--> 开始解决依赖关系"
 
-#: dnf/cli/output.py:2044
+#: dnf/cli/output.py:1921
 msgid "--> Finished dependency resolution"
 msgstr "--> 依赖关系解决完成"
 
-#: dnf/cli/output.py:2058 dnf/crypto.py:132
+#: dnf/cli/output.py:1935 dnf/crypto.py:132
 #, python-format
 msgid ""
 "Importing GPG key 0x%s:\n"
@@ -3489,10 +3482,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."
@@ -3509,16 +3498,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:443 dnf/transaction_sr.py:453
-#, fuzzy, python-format
-#| msgid "Environment '%s' is not installed."
+#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487
+#, python-format
 msgid "Environment id '%s' is not installed."
-msgstr "环境组 '%s' 没有安装。"
+msgstr "环境 id '%s' 没有安装。"
 
 #: dnf/comps.py:639
 #, python-format
@@ -3531,16 +3518,20 @@ 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
 msgid "Error parsing '%s': %s"
 msgstr "解析 “%s” 时错误: %s"
 
+#: dnf/conf/config.py:151
+#, python-format
+msgid "Invalid configuration value: %s=%s in %s; %s"
+msgstr "无效配置值: %s=%s 在 %s 中; %s"
+
 #: dnf/conf/config.py:226
 msgid "Could not set cachedir: {}"
 msgstr "不能设置 cachedir: {}"
@@ -3582,36 +3573,36 @@ msgstr "解析 --setopt 时出现错误,键为 '%s.%s', 值是 '%s': %s"
 msgid "Repo %s did not have a %s attr. before setopt"
 msgstr "Repo %s 在 setopt 前没有一个 %s 属性"
 
-#: dnf/conf/read.py:51
+#: dnf/conf/read.py:60
 #, python-format
 msgid "Warning: failed loading '%s', skipping."
 msgstr "警告:加载 '%s' 失败,跳过。"
 
-#: dnf/conf/read.py:63
+#: dnf/conf/read.py:72
 msgid "Bad id for repo: {} ({}), byte = {} {}"
 msgstr "repo 的 id 无效: {} ({}), byte = {} {}"
 
-#: dnf/conf/read.py:67
+#: dnf/conf/read.py:76
 msgid "Bad id for repo: {}, byte = {} {}"
-msgstr "repo 的 id 无效: %s, byte = %s %d"
+msgstr "repo 的 id 无效: {}, byte = {} {}"
 
-#: dnf/conf/read.py:75
+#: dnf/conf/read.py:84
 msgid "Repository '{}' ({}): Error parsing config: {}"
 msgstr "仓库 '{}' ({}): 配置解析时出错: {}"
 
-#: dnf/conf/read.py:78
+#: dnf/conf/read.py:87
 msgid "Repository '{}': Error parsing config: {}"
 msgstr "仓库 '{}': 配置解析时出错: {}"
 
-#: dnf/conf/read.py:84
+#: dnf/conf/read.py:93
 msgid "Repository '{}' ({}) is missing name in configuration, using id."
 msgstr "仓库 '{}' ({}) 在配置中缺少名称,将使用 id。"
 
-#: dnf/conf/read.py:87
+#: dnf/conf/read.py:96
 msgid "Repository '{}' is missing name in configuration, using id."
 msgstr "仓库 '{}' 在配置中缺少名称,将使用 id。"
 
-#: dnf/conf/read.py:104
+#: dnf/conf/read.py:113
 msgid "Parsing file \"{}\" failed: {}"
 msgstr "解析文件 \"{}\" 失败:{}"
 
@@ -3625,25 +3616,38 @@ msgstr "repo %s: 0x%s 已被导入"
 msgid "repo %s: imported key 0x%s."
 msgstr "repo %s: 已导入密钥 0x%s。"
 
-#: dnf/db/group.py:293
+#: dnf/crypto.py:145
+msgid "Verified using DNS record with DNSSEC signature."
+msgstr "已经通过被 DNSSEC 签名的 DNS 记录验证。"
+
+#: dnf/crypto.py:147
+msgid "NOT verified using DNS record."
+msgstr "并未被 DNS 记录验证。"
+
+#: dnf/crypto.py:184
+#, python-format
+msgid "retrieving repo key for %s unencrypted from %s"
+msgstr "为 %s 从 %s 获取的 repo 密钥未加密"
+
+#: dnf/db/group.py:301
 msgid ""
 "No available modular metadata for modular package '{}', it cannot be "
 "installed on the system"
 msgstr "对于模块软件包 '{}' 没有可用的模块元数据,它将不能被安装至此系统上"
 
-#: dnf/db/group.py:343
+#: dnf/db/group.py:351
 msgid "No available modular metadata for modular package"
 msgstr "对于模块软件包没有可用的模块元数据"
 
-#: dnf/db/group.py:377
+#: dnf/db/group.py:385
 #, python-format
 msgid "Will not install a source rpm package (%s)."
 msgstr "将不安装一个源码 RPM 软件包 (%s)。"
 
 #: dnf/dnssec.py:168
 msgid ""
-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})"
-msgstr "配置文件选项 'gpgkey_dns_verification' 要求 libunbound ({})"
+"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
+msgstr "配置文件选项 'gpgkey_dns_verification' 要求 python3-unbound ({})"
 
 #: dnf/dnssec.py:239
 msgid "DNSSEC extension: Key for user "
@@ -3665,7 +3669,7 @@ msgstr "DNSSEC 扩展 : "
 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"
@@ -3707,7 +3711,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:686
+#: dnf/exceptions.py:131 dnf/module/module_base.py:854
 msgid "Modular dependency problem:"
 msgid_plural "Modular dependency problems:"
 msgstr[0] "模块依赖问题:"
@@ -3716,10 +3720,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 '{}'."
@@ -3741,7 +3747,47 @@ msgstr "启用的模板:{}。"
 msgid "No profile specified for '{}', please specify profile."
 msgstr "没有为 '{}' 指定档案。请指定档案。"
 
-#: dnf/module/module_base.py:33
+#: dnf/module/exceptions.py:27
+msgid "No such module: {}"
+msgstr "不存在模块:{}"
+
+#: dnf/module/exceptions.py:33
+msgid "No such stream: {}"
+msgstr "没有对应的流:{}"
+
+#: dnf/module/exceptions.py:39
+msgid "No enabled stream for module: {}"
+msgstr "该模块没有已启用的流: {}"
+
+#: dnf/module/exceptions.py:46
+msgid "Cannot enable more streams from module '{}' at the same time"
+msgstr "不能同时启用模块:{} 中的多个流"
+
+#: dnf/module/exceptions.py:52
+msgid "Different stream enabled for module: {}"
+msgstr "模块中已启用的其他流:{}"
+
+#: dnf/module/exceptions.py:58
+msgid "No such profile: {}"
+msgstr "没有这个配置:{}"
+
+#: dnf/module/exceptions.py:64
+msgid "Specified profile not installed for {}"
+msgstr "指定的配置没有为 {} 安装"
+
+#: dnf/module/exceptions.py:70
+msgid "No stream specified for '{}', please specify stream"
+msgstr "没有为 '{}' 指定流。请指定流"
+
+#: dnf/module/exceptions.py:82
+msgid "No such profile: {}. No profiles available"
+msgstr "没有这个配置:{}。无配置可用"
+
+#: dnf/module/exceptions.py:88
+msgid "No profile to remove for '{}'"
+msgstr "'{}' 没有可以移除的配置"
+
+#: dnf/module/module_base.py:35
 msgid ""
 "\n"
 "\n"
@@ -3751,7 +3797,7 @@ msgstr ""
 "\n"
 "提示:[d]默认,[e]已启用,[x]已禁用,[i]已安装"
 
-#: dnf/module/module_base.py:34
+#: dnf/module/module_base.py:36
 msgid ""
 "\n"
 "\n"
@@ -3761,80 +3807,97 @@ msgstr ""
 "\n"
 "提示 : [d]默认, [e]启用, [x]禁用, [i]已安装的, [a]活跃的"
 
-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421
-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543
+#: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
 msgid "Ignoring unnecessary profile: '{}/{}'"
 msgstr "正在忽略无用的配置文件'{}/{}'"
 
-#: dnf/module/module_base.py:84
+#: 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:92
+#: 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:102
+#: dnf/module/module_base.py:104 dnf/module/module_base.py:214
 msgid ""
 "Unable to match profile for argument {}. Available profiles for '{}:{}': {}"
 msgstr "不能为参数 {} 匹配配置文件。'{}:{}' 可用的配置文件为 : {}"
 
-#: dnf/module/module_base.py:106
+#: dnf/module/module_base.py:108 dnf/module/module_base.py:218
 msgid "Unable to match profile for argument {}"
 msgstr "无法配置参数 {} 中的配置档案"
 
-#: dnf/module/module_base.py:118
+#: dnf/module/module_base.py:120
 msgid "No default profiles for module {}:{}. Available profiles: {}"
 msgstr "模块 {}:{} 没有默认的配置文件。可用的配置为 : {}"
 
-#: dnf/module/module_base.py:122
+#: dnf/module/module_base.py:124
 msgid "No profiles for module {}:{}"
 msgstr "没有模块 {}:{} 的配置文件"
 
-#: dnf/module/module_base.py:129
+#: dnf/module/module_base.py:131
 msgid "Default profile {} not available in module {}:{}"
 msgstr "默认配置文件 {} 在模块 {}:{} 中不可用"
 
-#: dnf/module/module_base.py:142
+#: 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:159 dnf/module/module_base.py:193
-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355
-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417
-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539
+#: dnf/module/module_base.py:196
+#, python-brace-format
+msgid "No active matches for argument '{0}' in module '{1}:{2}'"
+msgstr "模块 '{1}:{2}' 中的参数 '{0}' 没有活动匹配项"
+
+#: dnf/module/module_base.py:228
+#, python-brace-format
+msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'"
+msgstr "在模块 '{1}' 流 '{2}' 中没有安装的配置文件 '{0}'"
+
+#: dnf/module/module_base.py:267
+msgid "No packages available to distrosync for package name '{}'"
+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
 msgid "Unable to resolve argument {}"
 msgstr "无法解析参数 {}"
 
-#: dnf/module/module_base.py:160
-msgid "No match for package {}"
-msgstr "没有和{}匹配的软件包"
-
-#: dnf/module/module_base.py:204
+#: 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:223 dnf/module/module_base.py:251
+#: dnf/module/module_base.py:340 dnf/module/module_base.py:368
 msgid "Unable to match profile in argument {}"
 msgstr "无法匹配参数 {} 中的配置档案"
 
-#: dnf/module/module_base.py:231
+#: dnf/module/module_base.py:348
 msgid "Upgrading module from Fail-Safe repository is not allowed"
-msgstr "不允许从失效保险仓库中升级模块"
+msgstr "不允许从自动防故障仓库升级模块"
 
-#: dnf/module/module_base.py:367
+#: dnf/module/module_base.py:422
+#, python-brace-format
 msgid ""
-"Only module name is required. Ignoring unneeded information in argument: "
-"'{}'"
+"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: '{}'"
 msgstr "只需要模块名。正在忽略'{}'中的无用信息"
 
-#: dnf/package.py:298
-#, python-format
-msgid "%s: %s check failed: %s vs %s"
-msgstr "%s: %s 检查失败:%s vs %s"
+#: dnf/module/module_base.py:841
+msgid "No match for package {}"
+msgstr "没有和{}匹配的软件包"
 
 #. empty file is invalid json format
 #: dnf/persistor.py:54
@@ -3845,12 +3908,12 @@ msgstr "%s 为空文件"
 #: dnf/persistor.py:91
 #, python-format
 msgid "Failed to load expired repos cache: %s"
-msgstr ""
+msgstr "加载过期的仓库缓存失败: %s"
 
 #: dnf/persistor.py:99
 #, python-format
 msgid "Failed to store expired repos cache: %s"
-msgstr ""
+msgstr "存储已过期的仓库缓存失败: %s"
 
 #: dnf/persistor.py:106
 msgid "Failed storing last makecache time."
@@ -3870,16 +3933,16 @@ msgstr "解析文件失败:%s"
 msgid "Loaded plugins: %s"
 msgstr "加载插件:%s"
 
-#: dnf/plugin.py:199
+#: dnf/plugin.py:211
 #, python-format
 msgid "Failed loading plugin \"%s\": %s"
 msgstr "加载插件 \"%s\" 失败 : %s"
 
-#: dnf/plugin.py:231
+#: dnf/plugin.py:243
 msgid "No matches found for the following enable plugin patterns: {}"
 msgstr "没有以下已启用插件模式的匹配项 : {}"
 
-#: dnf/plugin.py:235
+#: dnf/plugin.py:247
 msgid "No matches found for the following disable plugin patterns: {}"
 msgstr "没有以下已停用插件模式的匹配项 : {}"
 
@@ -3893,7 +3956,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 的主机) "
@@ -3908,10 +3971,26 @@ msgstr "正在启用 %s 仓库"
 msgid "Added %s repo from %s"
 msgstr "已添加 %s 仓库来自 %s"
 
+#: dnf/rpm/miscutils.py:32
+#, python-format
+msgid "Using rpmkeys executable at %s to verify signatures"
+msgstr "使用 %s 处的 rpmkeys 可执行文件来验证签名"
+
+#: dnf/rpm/miscutils.py:66
+msgid "Cannot find rpmkeys executable to verify signatures."
+msgstr "无法找到 rpmkeys 的可执行文件以验证签名。"
+
 #: dnf/rpm/transaction.py:119
 msgid "Errors occurred during test transaction."
 msgstr "测试事务过程中出现错误。"
 
+#: dnf/sack.py:47
+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
 msgctxt "currently"
@@ -3958,164 +4037,211 @@ msgstr "运行脚本"
 msgid "Preparing"
 msgstr "准备中"
 
-#: dnf/transaction_sr.py:60
+#: dnf/transaction_sr.py:66
 #, python-brace-format
-msgid "Errors in \"{filename}\":"
-msgstr ""
+msgid ""
+"The following problems occurred while replaying the transaction from file "
+"\"{filename}\":"
+msgstr "在重放来自文件 \"{filename}\" 的事务时出现了下列问题:"
 
-#: dnf/transaction_sr.py:70
-#, python-brace-format
-msgid "Error in \"{filename}\": {error}"
-msgstr ""
+#: dnf/transaction_sr.py:68
+msgid "The following problems occurred while running a transaction:"
+msgstr "运行事务时发生以下问题:"
 
-#: dnf/transaction_sr.py:87
+#: dnf/transaction_sr.py:89
 #, python-brace-format
 msgid "Invalid major version \"{major}\", number expected."
-msgstr ""
+msgstr "无效的主版本 \"{major}\",需要是数字。"
 
-#: dnf/transaction_sr.py:95
+#: dnf/transaction_sr.py:97
 #, python-brace-format
 msgid "Invalid minor version \"{minor}\", number expected."
-msgstr ""
+msgstr "无效的次版本 \"{minor}\",需要是数字。"
 
-#: dnf/transaction_sr.py:101
+#: dnf/transaction_sr.py:103
 #, python-brace-format
 msgid ""
 "Incompatible major version \"{major}\", supported major version is "
 "\"{major_supp}\"."
-msgstr ""
+msgstr "不兼容的主版本 \"{major}\",支持的主版本是 \"{major_supp}\"。"
 
-#: dnf/transaction_sr.py:244
+#: dnf/transaction_sr.py:224
+msgid ""
+"Conflicting TransactionReplay arguments have been specified: filename, data"
+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:250
+#: dnf/transaction_sr.py:271
 #, python-brace-format
 msgid "Missing key \"{key}\"."
-msgstr ""
+msgstr "缺少键 \"{key}\"。"
 
-#: dnf/transaction_sr.py:263
+#: dnf/transaction_sr.py:285
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an rpm."
-msgstr ""
+msgstr "在 rpm 中缺少对象键 \"{key}\"。"
 
-#: dnf/transaction_sr.py:267
+#: 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:275
+#: dnf/transaction_sr.py:297
 #, python-brace-format
 msgid "Cannot parse NEVRA for package \"{nevra}\"."
-msgstr ""
+msgstr "无法为软件包 \"{nevra}\" 解析 NEVRA。"
 
-#: dnf/transaction_sr.py:286
+#: dnf/transaction_sr.py:321
 #, python-brace-format
 msgid "Cannot find rpm nevra \"{nevra}\"."
-msgstr ""
+msgstr "无法找到 rpm nevra \"{nevra}\"。"
 
-#: dnf/transaction_sr.py:301
-#, fuzzy, python-brace-format
-#| msgid "Package %s is already installed."
+#: dnf/transaction_sr.py:336
+#, python-brace-format
 msgid "Package \"{na}\" is already installed for action \"{action}\"."
-msgstr "软件包 %s 已安装。"
+msgstr "操作 \"{action}\" 的软件包 \"{na}\"已安装。"
 
-#: dnf/transaction_sr.py:311
+#: dnf/transaction_sr.py:345
 #, python-brace-format
 msgid ""
 "Package nevra \"{nevra}\" not available in repositories for action "
 "\"{action}\"."
-msgstr ""
+msgstr "对于操作 \"{action}\",软件包 nevra \"{nevra}\" 未在软件仓库中提供。"
 
-#: dnf/transaction_sr.py:322
+#: dnf/transaction_sr.py:356
 #, python-brace-format
 msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"."
-msgstr ""
+msgstr "没有为操作 \"{action}\" 安装软件包 nevra \"{nevra}\" 。"
 
-#: dnf/transaction_sr.py:336
+#: dnf/transaction_sr.py:370
 #, python-brace-format
-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
-msgstr ""
+msgid ""
+"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"."
+msgstr "rpm nevra \"{nevra}\" 的软件包操作 \"{action}\" 的意外值。"
 
-#: dnf/transaction_sr.py:343
-#, fuzzy, python-format
-#| msgid "Module or Group '%s' is not available."
+#: dnf/transaction_sr.py:377
+#, python-format
 msgid "Group id '%s' is not available."
-msgstr "模块或者组 '%s' 不可用。"
+msgstr "组 id '%s' 不可用。"
 
-#: dnf/transaction_sr.py:364
+#: dnf/transaction_sr.py:398
 #, python-brace-format
 msgid "Missing object key \"{key}\" in groups.packages."
-msgstr ""
+msgstr "在 groups.packages 中缺少对象键 \"{key}\"。"
 
-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387
-#, fuzzy, python-format
-#| msgid "Module or Group '%s' is not installed."
+#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421
+#, python-format
 msgid "Group id '%s' is not installed."
-msgstr "模块或者组 '%s' 未安装。"
+msgstr "组 id '%s' 未安装。"
 
-#: dnf/transaction_sr.py:398
-#, fuzzy, python-format
-#| msgid "Environment '%s' is not available."
+#: dnf/transaction_sr.py:432
+#, python-format
 msgid "Environment id '%s' is not available."
-msgstr "环境 '%s' 不可用。"
+msgstr "环境 id '%s' 不可用。"
 
-#: dnf/transaction_sr.py:422
+#: dnf/transaction_sr.py:456
 #, python-brace-format
 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:430
+#: dnf/transaction_sr.py:464
 #, python-brace-format
 msgid "Missing object key \"{key}\" in environments.groups."
-msgstr ""
+msgstr "在 environment.groups 中缺少对象键 \"{key}\"。"
 
-#: dnf/transaction_sr.py:508
+#: dnf/transaction_sr.py:542
 #, python-brace-format
 msgid "Unexpected value of group action \"{action}\" for group \"{group}\"."
-msgstr ""
+msgstr "对组 \"{group}\" 的组操作 \"{action}\" 的意外值。"
 
-#: dnf/transaction_sr.py:513
+#: dnf/transaction_sr.py:547
 #, python-brace-format
 msgid "Missing object key \"{key}\" in a group."
-msgstr ""
+msgstr "在组中缺少对象键 \"{key}\"。"
 
-#: dnf/transaction_sr.py:537
+#: 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:542
+#: dnf/transaction_sr.py:576
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an environment."
-msgstr ""
+msgstr "在环境中缺少对象键 \"{key}\"。"
 
-#: dnf/transaction_sr.py:581
+#: 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 ""
+"Package nevra \"{nevra}\", which is not present in the transaction file, was "
+"pulled into the transaction."
+msgstr "软件包 nevra \"{nevra}\" 没有包括在事务文件中,但它被拉取到事务中。"
 
-#: dnf/util.py:391 dnf/util.py:393
+#: dnf/util.py:419 dnf/util.py:421
 msgid "Problem"
 msgstr "问题"
 
-#: dnf/util.py:444
+#: dnf/util.py:472
 msgid "TransactionItem not found for key: {}"
 msgstr "找不到键的 TransactionItem: {}"
 
-#: dnf/util.py:454
+#: dnf/util.py:482
 msgid "TransactionSWDBItem not found for key: {}"
 msgstr "找不到键的 TransactionSWDBItem: {}"
 
-#: dnf/util.py:457
+#: dnf/util.py:485
 msgid "Errors occurred during transaction."
 msgstr "事务过程中出现错误。"
 
+#: dnf/util.py:621
+msgid "Reinstalled"
+msgstr "已重装"
+
+#: dnf/util.py:622
+msgid "Skipped"
+msgstr "已跳过"
+
+#: dnf/util.py:623
+msgid "Removed"
+msgstr "已移除"
+
+#: dnf/util.py:626
+msgid "Failed"
+msgstr "失败"
+
+#~ 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"
+
+#~ msgid "Action not handled: {}"
+#~ msgstr "操作没被处理:{}"
+
+#~ msgid "no package matched"
+#~ msgstr "没有能够与之匹配的软件包"
+
+#~ msgid "Not found given transaction ID"
+#~ msgstr "未找到指定事务 ID"
+
+#~ msgid "Undoing transaction {}, from {}"
+#~ msgstr "撤销事务 {},从 {}"
+
 #~ msgid "format for displaying found packages"
 #~ msgstr "用于显示已查找到软件包的格式"
 
@@ -4126,5 +4252,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 b991c4f0..c43c0d5f 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: 2020-10-05 09:18-0400\n"
+"POT-Creation-Date: 2022-02-28 11:24+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"
@@ -67,7 +68,7 @@ msgstr "無法透過「%s」發送電子郵件:%s"
 msgid "Failed to execute command '%s': returned %d"
 msgstr "無法執行「%s」指令:已回傳 %d"
 
-#: dnf/automatic/main.py:164 dnf/conf/config.py:151
+#: dnf/automatic/main.py:164
 #, python-format
 msgid "Unknown configuration value: %s=%s in %s; %s"
 msgstr "未知的設定值:%s = %s 於 %s;%s"
@@ -77,7 +78,7 @@ msgstr "未知的設定值:%s = %s 於 %s;%s"
 msgid "Unknown configuration option: %s = %s in %s"
 msgstr "未知的設定選項:%s = %s 於 %s"
 
-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299
+#: dnf/automatic/main.py:237 dnf/cli/cli.py:305
 msgid "GPG check FAILED"
 msgstr "GPG 檢查失敗"
 
@@ -90,9 +91,11 @@ msgid "Started dnf-automatic."
 msgstr "已啟動 dnf-automatic。"
 
 #: dnf/automatic/main.py:308
-#, python-format
-msgid "Sleep for %s seconds"
-msgstr "睡眠 %s 秒"
+#, fuzzy
+#| msgid "Sleep for %s seconds"
+msgid "Sleep for {} second"
+msgid_plural "Sleep for {} seconds"
+msgstr[0] "睡眠 %s 秒"
 
 #: dnf/automatic/main.py:315
 msgid "System is off-line."
@@ -104,439 +107,426 @@ msgstr "系統離線。"
 msgid "Error: %s"
 msgstr "錯誤:%s"
 
-#: dnf/base.py:146
+#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479
 msgid "loading repo '{}' failure: {}"
 msgstr "載入「{}」軟體庫失敗:{}"
 
-#: dnf/base.py:148
+#: dnf/base.py:150
 msgid "Loading repository '{}' has failed"
 msgstr "載入「{}」軟體庫時發生錯誤"
 
-#: dnf/base.py:320
+#: dnf/base.py:327
 msgid "Metadata timer caching disabled when running on metered connection."
 msgstr "當以計費網路連線時,停用中介資料定時快取。"
 
-#: dnf/base.py:325
+#: dnf/base.py:332
 msgid "Metadata timer caching disabled when running on a battery."
 msgstr "當使用電池時,停用中介資料定時快取。"
 
-#: dnf/base.py:330
+#: dnf/base.py:337
 msgid "Metadata timer caching disabled."
 msgstr "已停用中介資料定時快取。"
 
-#: dnf/base.py:335
+#: dnf/base.py:342
 msgid "Metadata cache refreshed recently."
 msgstr "中介資料的快取已於最近重新整理。"
 
-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91
+#: dnf/base.py:348 dnf/cli/commands/__init__.py:91
 msgid "There are no enabled repositories in \"{}\"."
 msgstr "「{}」中沒有啟用的軟體庫。"
 
-#: dnf/base.py:348
+#: dnf/base.py:355
 #, python-format
 msgid "%s: will never be expired and will not be refreshed."
 msgstr "%s:將永遠不會過期,且不會重新整理。"
 
-#: dnf/base.py:350
+#: dnf/base.py:357
 #, python-format
 msgid "%s: has expired and will be refreshed."
 msgstr "%s:已經過期,並將重新整理。"
 
 #. expires within the checking period:
-#: dnf/base.py:354
+#: dnf/base.py:361
 #, python-format
 msgid "%s: metadata will expire after %d seconds and will be refreshed now"
 msgstr "%s:中介資料將會在 %d 秒後過期,現在將立刻重新整理"
 
-#: dnf/base.py:358
+#: dnf/base.py:365
 #, python-format
 msgid "%s: will expire after %d seconds."
 msgstr "%s:將會在 %d 秒後過期。"
 
 #. performs the md sync
-#: dnf/base.py:364
+#: dnf/base.py:371
 msgid "Metadata cache created."
 msgstr "已建立中介資料快取。"
 
-#: dnf/base.py:397
+#: dnf/base.py:404 dnf/base.py:471
 #, python-format
 msgid "%s: using metadata from %s."
 msgstr "%s:從 %s 使用中介資料。"
 
-#: dnf/base.py:409
+#: dnf/base.py:416 dnf/base.py:484
 #, python-format
 msgid "Ignoring repositories: %s"
 msgstr "忽略軟體庫:%s"
 
-#: dnf/base.py:412
+#: dnf/base.py:419
 #, python-format
 msgid "Last metadata expiration check: %s ago on %s."
 msgstr "上次中介資料過期檢查:%s 前,時間點為%s。"
 
-#: dnf/base.py:443
+#: dnf/base.py:512
 msgid ""
 "The downloaded packages were saved in cache until the next successful "
 "transaction."
 msgstr "直到有下個成功處理事項為止,下載的軟體包會存在快取中。"
 
-#: dnf/base.py:445
+#: dnf/base.py:514
 #, python-format
 msgid "You can remove cached packages by executing '%s'."
 msgstr "您可以透過執行「%s」移除軟體包快取。"
 
-#: dnf/base.py:535
+#: dnf/base.py:606
 #, python-format
 msgid "Invalid tsflag in config file: %s"
 msgstr "在 config 檔案中無效的 tsflag:%s"
 
-#: dnf/base.py:591
+#: dnf/base.py:662
 #, python-format
 msgid "Failed to add groups file for repository: %s - %s"
 msgstr "為軟體庫建立群組檔案時失敗:%s - %s"
 
-#: dnf/base.py:823
+#: dnf/base.py:904
 msgid "Running transaction check"
 msgstr "執行處理事項檢查"
 
-#: dnf/base.py:831
+#: dnf/base.py:912
 msgid "Error: transaction check vs depsolve:"
 msgstr "錯誤:處理事項 check vs depsolve:"
 
-#: dnf/base.py:837
+#: dnf/base.py:918
 msgid "Transaction check succeeded."
 msgstr "處理事項檢查成功。"
 
-#: dnf/base.py:840
+#: dnf/base.py:921
 msgid "Running transaction test"
 msgstr "執行處理事項測試"
 
-#: dnf/base.py:850 dnf/base.py:992
+#: dnf/base.py:931 dnf/base.py:1082
 msgid "RPM: {}"
 msgstr "RPM:{}"
 
-#: dnf/base.py:851
+#: dnf/base.py:932
 msgid "Transaction test error:"
 msgstr "處理事項測試錯誤:"
 
-#: dnf/base.py:862
+#: dnf/base.py:943
 msgid "Transaction test succeeded."
 msgstr "處理事項測試成功。"
 
-#: dnf/base.py:883
+#: dnf/base.py:964
 msgid "Running transaction"
 msgstr "執行處理事項"
 
-#: dnf/base.py:911
+#: dnf/base.py:1001
 msgid "Disk Requirements:"
 msgstr "需要磁碟:"
 
-#: dnf/base.py:914
+#: dnf/base.py:1004
 #, 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:921
+#: dnf/base.py:1011
 msgid "Error Summary"
 msgstr "錯誤摘要"
 
-#: dnf/base.py:947
+#: dnf/base.py:1037
 #, python-brace-format
 msgid "RPMDB altered outside of {prog}."
 msgstr "RPMDB 在 {prog} 外有變動。"
 
-#: dnf/base.py:993 dnf/base.py:1001
+#: dnf/base.py:1083 dnf/base.py:1091
 msgid "Could not run transaction."
 msgstr "無法執行處理事項。"
 
-#: dnf/base.py:996
+#: dnf/base.py:1086
 msgid "Transaction couldn't start:"
 msgstr "無法啓動處理事項:"
 
-#: dnf/base.py:1010
+#: dnf/base.py:1100
 #, python-format
 msgid "Failed to remove transaction file %s"
 msgstr "移除處理事項檔案 %s 失敗"
 
-#: dnf/base.py:1092
+#: dnf/base.py:1182
 msgid "Some packages were not downloaded. Retrying."
 msgstr "有些軟體包未下載。重試。"
 
-#: dnf/base.py:1122
+#: dnf/base.py:1212
 #, python-format
 msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)"
 msgstr "Delta RPM 已將更新所需從 %.1f MB 減少為 %.1f MB(節省 %d.1%%)"
 
-#: dnf/base.py:1125
+#: dnf/base.py:1215
 #, python-format
 msgid ""
 "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)"
 msgstr "失敗的 Delta RPM 已將更新所需從 %.1f MB 增加為 %.1f MB(浪費 %d.1%%)"
 
-#: dnf/base.py:1167
+#: dnf/base.py:1257
 msgid "Cannot add local packages, because transaction job already exists"
 msgstr "因為已經有處理事項工作,無法加入本機軟體包"
 
-#: dnf/base.py:1181
+#: dnf/base.py:1271
 msgid "Could not open: {}"
 msgstr "無法開啟:{}"
 
-#: dnf/base.py:1219
+#: dnf/base.py:1309
 #, python-format
 msgid "Public key for %s is not installed"
 msgstr "%s 的公鑰尚未安裝"
 
-#: dnf/base.py:1223
+#: dnf/base.py:1313
 #, python-format
 msgid "Problem opening package %s"
 msgstr "開啟 %s 軟體包時發生問題"
 
-#: dnf/base.py:1231
+#: dnf/base.py:1321
 #, python-format
 msgid "Public key for %s is not trusted"
 msgstr "%s 的公鑰未被信任"
 
-#: dnf/base.py:1235
+#: dnf/base.py:1325
 #, python-format
 msgid "Package %s is not signed"
 msgstr "%s 軟體包尚未簽名"
 
-#: dnf/base.py:1265
+#: dnf/base.py:1355
 #, python-format
 msgid "Cannot remove %s"
 msgstr "無法移除 %s"
 
-#: dnf/base.py:1269
+#: dnf/base.py:1359
 #, python-format
 msgid "%s removed"
 msgstr "已移除 %s"
 
-#: dnf/base.py:1549
+#: dnf/base.py:1639
 msgid "No match for group package \"{}\""
 msgstr "找不到符合「{}」軟體包群組的項目"
 
-#: dnf/base.py:1635
+#: dnf/base.py:1721
 #, python-format
 msgid "Adding packages from group '%s': %s"
 msgstr "正在從群組「%s」加入軟體包:%s"
 
-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442
-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592
-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80
+#: dnf/base.py:1744 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:1676
+#: dnf/base.py:1762
 msgid "No groups marked for removal."
 msgstr "沒有標記為移除的群組。"
 
-#: dnf/base.py:1710
+#: dnf/base.py:1796
 msgid "No group marked for upgrade."
 msgstr "沒有標記為升級的群組。"
 
-#: dnf/base.py:1925
+#: dnf/base.py:2010
 #, python-format
 msgid "Package %s not installed, cannot downgrade it."
 msgstr "尚未安裝軟體包 %s,所以無法降級。"
 
-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980
-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411
-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482
-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633
-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147
+#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071
+#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 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
 #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84
-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121
+#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116
 #, python-format
 msgid "No match for argument: %s"
 msgstr "引數不符:%s"
 
-#: dnf/base.py:1934
+#: dnf/base.py:2019
 #, python-format
 msgid "Package %s of lower version already installed, cannot downgrade it."
 msgstr "已經安裝較舊版本的軟體包 %s,所以無法降級。"
 
-#: dnf/base.py:1957
+#: dnf/base.py:2042
 #, python-format
 msgid "Package %s not installed, cannot reinstall it."
 msgstr "尚未安裝軟體包 %s,所以無法重新安裝。"
 
-#: dnf/base.py:1972
+#: dnf/base.py:2057
 #, python-format
 msgid "File %s is a source package and cannot be updated, ignoring."
 msgstr "檔案 %s 為來源軟體包且無法更新,忽略。"
 
-#: dnf/base.py:1978
+#: dnf/base.py:2068
 #, python-format
 msgid "Package %s not installed, cannot update it."
 msgstr "尚未安裝軟體包 %s,所以無法更新。"
 
-#: dnf/base.py:1987
+#: dnf/base.py:2078
 #, python-format
 msgid ""
 "The same or higher version of %s is already installed, cannot update it."
 msgstr "已經安裝同版或更新版的 %s,無法更新。"
 
-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81
+#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81
 #, python-format
 msgid "Package %s available, but not installed."
 msgstr "軟體包 %s 可用,但尚未安裝。"
 
-#: dnf/base.py:2032
+#: dnf/base.py:2127
 #, python-format
 msgid "Package %s available, but installed for different architecture."
 msgstr "軟體包 %s 可用,但是針對不同架構安裝。"
 
-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699
+#: dnf/base.py:2152
 #, python-format
 msgid "No package %s installed."
 msgstr "軟體包 %s 未安裝。"
 
-#: dnf/base.py:2075 dnf/cli/commands/install.py:136
+#: dnf/base.py:2170 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:2091 dnf/cli/commands/__init__.py:681
-#: dnf/cli/commands/remove.py:163
+#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676
+#: dnf/cli/commands/remove.py:162
 msgid "No packages marked for removal."
 msgstr "沒有軟體包標記為要移除。"
 
-#: dnf/base.py:2179 dnf/cli/cli.py:422
+#: dnf/base.py:2273 dnf/cli/cli.py:428
 #, python-format
 msgid "Packages for argument %s available, but not installed."
 msgstr "%s 引數的軟體包可用,但尚未安裝。"
 
-#: dnf/base.py:2184
+#: dnf/base.py:2278
 #, python-format
 msgid "Package %s of lowest version already installed, cannot downgrade it."
 msgstr "已經安裝最舊版本的軟體包 %s,所以無法降級。"
 
-#: dnf/base.py:2242
-msgid "Action not handled: {}"
-msgstr "未處理動作:{}"
-
-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703
-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169
-#, python-format
-msgid "No package %s available."
-msgstr "沒有 %s 軟體包可用。"
-
-#: dnf/base.py:2269
-msgid "no package matched"
-msgstr "沒有符合的軟體包"
-
-#: dnf/base.py:2290
+#: dnf/base.py:2378
 msgid "No security updates needed, but {} update available"
 msgstr "不需要任何的安全性更新,但有 {} 個更新可用"
 
-#: dnf/base.py:2292
+#: dnf/base.py:2380
 msgid "No security updates needed, but {} updates available"
 msgstr "不需要任何的安全性更新,但有 {} 個更新可用"
 
-#: dnf/base.py:2296
+#: dnf/base.py:2384
 msgid "No security updates needed for \"{}\", but {} update available"
 msgstr "不需要「{}」的任何安全性更新,但有 {} 個更新可用"
 
-#: dnf/base.py:2298
+#: dnf/base.py:2386
 msgid "No security updates needed for \"{}\", but {} updates available"
 msgstr "不需要「{}」的任何安全性更新,但有 {} 個更新可用"
 
 #. raise an exception, because po.repoid is not in self.repos
-#: dnf/base.py:2319
+#: dnf/base.py:2407
 #, python-format
 msgid "Unable to retrieve a key for a commandline package: %s"
 msgstr "無法擷取命令列軟體包的金鑰:%s"
 
-#: dnf/base.py:2327
+#: dnf/base.py:2415
 #, python-format
 msgid ". Failing package is: %s"
 msgstr "失敗的軟體包為:%s"
 
-#: dnf/base.py:2328
+#: dnf/base.py:2416
 #, python-format
 msgid "GPG Keys are configured as: %s"
 msgstr "GPG 金鑰已經設定為:%s"
 
-#: dnf/base.py:2340
+#: dnf/base.py:2428
 #, python-format
 msgid "GPG key at %s (0x%s) is already installed"
 msgstr "於 %s (0x%s) 的 GPG 密鑰已經安裝"
 
-#: dnf/base.py:2373
+#: dnf/base.py:2464
 msgid "The key has been approved."
 msgstr "金鑰已經核可。"
 
-#: dnf/base.py:2376
+#: dnf/base.py:2467
 msgid "The key has been rejected."
 msgstr "金鑰已被拒絕。"
 
-#: dnf/base.py:2409
+#: dnf/base.py:2500
 #, python-format
 msgid "Key import failed (code %d)"
 msgstr "密鑰匯入失敗(錯誤代碼 %d)"
 
-#: dnf/base.py:2411
+#: dnf/base.py:2502
 msgid "Key imported successfully"
 msgstr "密鑰匯入成功"
 
-#: dnf/base.py:2415
+#: dnf/base.py:2506
 msgid "Didn't install any keys"
 msgstr "無法安裝任何密鑰"
 
-#: dnf/base.py:2418
+#: dnf/base.py:2509
 #, 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:2429
+#: dnf/base.py:2520
 msgid "Import of key(s) didn't help, wrong key(s)?"
 msgstr "匯入的金鑰沒有作用,可能是因為金鑰是錯誤的?"
 
-#: dnf/base.py:2482
+#: dnf/base.py:2573
 msgid "  * Maybe you meant: {}"
 msgstr "  * 或許您想要:{}"
 
-#: dnf/base.py:2514
+#: dnf/base.py:2605
 msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
 msgstr "「{}」軟體包來自本機「{}」軟體庫有不正確的 checksum"
 
-#: dnf/base.py:2517
+#: dnf/base.py:2608
 msgid "Some packages from local repository have incorrect checksum"
 msgstr "來自本機軟體庫的部份軟體包有不正確的 checksum"
 
-#: dnf/base.py:2520
+#: dnf/base.py:2611
 msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
 msgstr "「{}」軟體包來自「{}」軟體庫有不正確的 checksum"
 
-#: dnf/base.py:2523
+#: dnf/base.py:2614
 msgid ""
 "Some packages have invalid cache, but cannot be downloaded due to \"--"
 "cacheonly\" option"
 msgstr "部份的軟體包有無效的快取,但是因為「--cacheonly」選項而無法下載"
 
-#: dnf/base.py:2541 dnf/base.py:2561
+#: dnf/base.py:2632 dnf/base.py:2652
 msgid "No match for argument"
 msgstr "沒有符合引數的項目"
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2640 dnf/base.py:2660
 msgid "All matches were filtered out by exclude filtering for argument"
 msgstr "所有符合項目皆被引數的排除過濾器濾掉"
 
-#: dnf/base.py:2551
+#: dnf/base.py:2642
 msgid "All matches were filtered out by modular filtering for argument"
 msgstr "所有符合項目皆被引數的模組化過濾器濾掉"
 
-#: dnf/base.py:2567
+#: dnf/base.py:2658
 msgid "All matches were installed from a different repository for argument"
 msgstr "所有符合項目皆從引數的不同軟體庫安裝"
 
-#: dnf/base.py:2583
+#: dnf/base.py:2705
 #, python-format
 msgid "Package %s is already installed."
 msgstr "已安裝 %s 軟體包。"
@@ -556,8 +546,8 @@ msgstr "解析「%s」檔案失敗:%s"
 msgid "Cannot read file \"%s\": %s"
 msgstr "無法讀取「%s」檔案:%s"
 
-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902
-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108
+#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804
+#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108
 #, python-format
 msgid "Config error: %s"
 msgstr "設定檔錯誤:%s"
@@ -588,44 +578,53 @@ msgid ""
 "stream '{2}'"
 msgstr "動作可能會導致「{0}」模組的「{1}」串流被切換到「{2}」串流"
 
-#: dnf/cli/cli.py:172
-#, python-brace-format
+#: 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."
 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 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:210
+#: dnf/cli/cli.py:212
 #, python-brace-format
 msgid "{prog} will only download packages for the transaction."
 msgstr "{prog} 將只會下載處理事項需要的軟體包。"
 
-#: dnf/cli/cli.py:213
+#: dnf/cli/cli.py:215
 #, python-brace-format
 msgid ""
 "{prog} will only download packages, install gpg keys, and check the "
 "transaction."
 msgstr "{prog} 只會下載軟體包、匯入 GPG 金鑰並檢查處理事項。"
 
-#: dnf/cli/cli.py:217
+#: dnf/cli/cli.py:219
 msgid "Operation aborted."
 msgstr "取消作業。"
 
-#: dnf/cli/cli.py:224
+#: dnf/cli/cli.py:226
 msgid "Downloading Packages:"
 msgstr "下載軟體包:"
 
-#: dnf/cli/cli.py:230
+#: dnf/cli/cli.py:232
 msgid "Error downloading packages:"
 msgstr "下載軟體包時失敗:"
 
-#: dnf/cli/cli.py:258
+#: dnf/cli/cli.py:264
 msgid "Transaction failed"
 msgstr "處理事項失敗"
 
-#: dnf/cli/cli.py:281
+#: dnf/cli/cli.py:287
 msgid ""
 "Refusing to automatically import keys when running unattended.\n"
 "Use \"-y\" to override."
@@ -633,116 +632,96 @@ msgstr ""
 "當無人職守時,拒絕自動匯入密鑰。\n"
 "使用「-y」覆蓋。"
 
-#: dnf/cli/cli.py:331
+#: dnf/cli/cli.py:337
 msgid "Changelogs for {}"
 msgstr "{} 的變更記錄"
 
-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511
+#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517
 msgid "Obsoleting Packages"
 msgstr "棄用軟體包"
 
-#: dnf/cli/cli.py:393
+#: dnf/cli/cli.py:399
 msgid "No packages marked for distribution synchronization."
 msgstr "沒有標記為與散布版同步的軟體包。"
 
-#: dnf/cli/cli.py:428
+#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395
+#, python-format
+msgid "No package %s available."
+msgstr "沒有 %s 軟體包可用。"
+
+#: dnf/cli/cli.py:434
 msgid "No packages marked for downgrade."
 msgstr "沒有軟體包標記為降級。"
 
-#: dnf/cli/cli.py:479
+#: dnf/cli/cli.py:485
 msgid "Installed Packages"
 msgstr "已安裝軟體包"
 
-#: dnf/cli/cli.py:487
+#: dnf/cli/cli.py:493
 msgid "Available Packages"
 msgstr "可用的軟體包"
 
-#: dnf/cli/cli.py:491
+#: dnf/cli/cli.py:497
 msgid "Autoremove Packages"
 msgstr "自動移除軟體包"
 
-#: dnf/cli/cli.py:493
+#: dnf/cli/cli.py:499
 msgid "Extra Packages"
 msgstr "額外的軟體包"
 
-#: dnf/cli/cli.py:497
+#: dnf/cli/cli.py:503
 msgid "Available Upgrades"
 msgstr "可用的升級"
 
-#: dnf/cli/cli.py:513
+#: dnf/cli/cli.py:519
 msgid "Recently Added Packages"
 msgstr "最近加入的軟體包"
 
-#: dnf/cli/cli.py:518
+#: dnf/cli/cli.py:523
 msgid "No matching Packages to list"
 msgstr "沒有符合的軟體包可列出"
 
-#: dnf/cli/cli.py:599
+#: dnf/cli/cli.py:604
 msgid "No Matches found"
 msgstr "沒有符合項目"
 
-#: dnf/cli/cli.py:609
-msgid "No transaction ID given"
-msgstr "沒有提供處理事項識別碼"
-
-#: dnf/cli/cli.py:614
-msgid "Not found given transaction ID"
-msgstr "找不到提供的處理事項識別碼"
-
-#: dnf/cli/cli.py:623
-msgid "Found more than one transaction ID!"
-msgstr "找到超過一個處理事項識別碼!"
-
-#: dnf/cli/cli.py:640
-#, python-format
-msgid "Transaction history is incomplete, before %u."
-msgstr "在 %u 之前,處理事項歷史紀錄不完整。"
-
-#: dnf/cli/cli.py:642
-#, python-format
-msgid "Transaction history is incomplete, after %u."
-msgstr "在 %u 之後,處理事項歷史紀錄不完整。"
-
-#: dnf/cli/cli.py:689
-msgid "Undoing transaction {}, from {}"
-msgstr "取消變更處理事項 {},從 {}"
-
-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237
+#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237
 #, python-format
 msgid "Unknown repo: '%s'"
 msgstr "未知的軟體庫:「%s」"
 
-#: dnf/cli/cli.py:783
+#: dnf/cli/cli.py:685
 #, python-format
 msgid "No repository match: %s"
 msgstr "沒有軟體庫符合:%s"
 
-#: dnf/cli/cli.py:817
+#: 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:847
+#: dnf/cli/cli.py:749
 #, python-format
 msgid "No such command: %s. Please use %s --help"
 msgstr "未知的指令:%s。請使用 %s --help"
 
-#: dnf/cli/cli.py:850
+#: 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:854
+#: 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} 插件的命令,但目前載入插件的功能處於停用狀態。"
 
-#: dnf/cli/cli.py:912
+#: dnf/cli/cli.py:814
 msgid ""
 "--destdir or --downloaddir must be used with --downloadonly or download or "
 "system-upgrade command."
@@ -750,52 +729,54 @@ msgstr ""
 "--destdir 或 --downloaddir 必須與 --downloadonly、download 或 system-upgrade "
 "指令一起使用。"
 
-#: dnf/cli/cli.py:918
+#: 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:1000
+#: 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:1020
+#: dnf/cli/cli.py:922
 msgid "Config file \"{}\" does not exist"
 msgstr "「{}」組態檔不存在"
 
-#: dnf/cli/cli.py:1040
+#: dnf/cli/cli.py:942
 msgid ""
 "Unable to detect release version (use '--releasever' to specify release "
 "version)"
 msgstr "無法偵測發行版本(使用「--releasever」指定發行版本)"
 
-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471
+#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471
 msgid "argument {}: not allowed with argument {}"
 msgstr "引數 {}:不允許與 {} 引數使用"
 
-#: dnf/cli/cli.py:1134
+#: dnf/cli/cli.py:1023
 #, python-format
 msgid "Command \"%s\" already defined"
 msgstr "指令「%s」已經定義"
 
-#: dnf/cli/cli.py:1154
+#: dnf/cli/cli.py:1043
 msgid "Excludes in dnf.conf: "
 msgstr "排除於 dnf.conf: "
 
-#: dnf/cli/cli.py:1157
+#: dnf/cli/cli.py:1046
 msgid "Includes in dnf.conf: "
 msgstr "包含於 dnf.conf: "
 
-#: dnf/cli/cli.py:1160
+#: dnf/cli/cli.py:1049
 msgid "Excludes in repo "
 msgstr "排除於軟體庫 "
 
-#: dnf/cli/cli.py:1163
+#: dnf/cli/cli.py:1052
 msgid "Includes in repo "
 msgstr "包含於軟體庫 "
 
@@ -813,7 +794,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"
@@ -847,38 +829,38 @@ msgstr "有問題的軟體庫:%s"
 msgid "display details about a package or group of packages"
 msgstr "顯示軟體包中的軟體包或群組詳細資訊"
 
-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740
+#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735
 msgid "show all packages (default)"
 msgstr "顯示所有軟體包(預設值)"
 
-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743
-#: dnf/cli/commands/module.py:351
+#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738
+#: dnf/cli/commands/module.py:376
 msgid "show only available packages"
 msgstr "只顯示可用的軟體包"
 
-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746
+#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741
 msgid "show only installed packages"
 msgstr "只顯示已安裝的軟體包"
 
-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749
+#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744
 msgid "show only extras packages"
 msgstr "只顯示附加的軟體包"
 
 #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183
-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755
+#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750
 msgid "show only upgrades packages"
 msgstr "只顯示要升級的軟體包"
 
-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758
+#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753
 msgid "show only autoremove packages"
 msgstr "只顯示要被自動移除的軟體包"
 
-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761
+#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756
 msgid "show only recently changed packages"
 msgstr "只顯示最近變動的軟體包"
 
 #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265
-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48
+#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48
 #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44
 #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46
 msgid "PACKAGE"
@@ -916,70 +898,70 @@ msgstr "檢查可用的軟體包升級"
 msgid "show changelogs before update"
 msgstr "更新前顯示變更記錄"
 
-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414
-#: dnf/cli/commands/__init__.py:470
+#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409
+#: dnf/cli/commands/__init__.py:465
 msgid "No package available."
 msgstr "沒有可用的軟體包。"
 
-#: dnf/cli/commands/__init__.py:376
+#: dnf/cli/commands/__init__.py:371
 msgid "No packages marked for install."
 msgstr "沒有軟體包標記為安裝。"
 
-#: dnf/cli/commands/__init__.py:412
+#: dnf/cli/commands/__init__.py:407
 msgid "No package installed."
 msgstr "沒有已安裝的軟體包。"
 
-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489
+#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484
 #: dnf/cli/commands/reinstall.py:91
 #, python-format
 msgid " (from %s)"
 msgstr " (來自 %s)"
 
-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490
+#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485
 #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105
 #, python-format
 msgid "Installed package %s%s not available."
 msgstr "已安裝的軟體包 %s%s 不可用。"
 
-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576
-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666
+#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571
+#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661
 msgid "No package installed from the repository."
 msgstr "沒有來自這個軟體庫的已安裝軟體包。"
 
-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101
+#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101
 msgid "No packages marked for reinstall."
 msgstr "沒有軟體包標記為要重新安裝。"
 
-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89
+#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84
 msgid "No packages marked for upgrade."
 msgstr "沒有軟體包為升級標記。"
 
-#: dnf/cli/commands/__init__.py:726
+#: dnf/cli/commands/__init__.py:721
 msgid "run commands on top of all packages in given repository"
 msgstr "在提供的軟體庫於所有軟體包的頂端執行指令"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "REPOID"
 msgstr "REPOID"
 
-#: dnf/cli/commands/__init__.py:765
+#: dnf/cli/commands/__init__.py:760
 msgid "Repository ID"
 msgstr "軟體庫 ID"
 
-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48
+#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48
 #: dnf/cli/commands/updateinfo.py:108
 msgid "Package specification"
 msgstr "軟體包規格"
 
-#: dnf/cli/commands/__init__.py:801
+#: dnf/cli/commands/__init__.py:796
 msgid "display a helpful usage message"
 msgstr "顯示用法說明訊息"
 
-#: dnf/cli/commands/__init__.py:805
+#: dnf/cli/commands/__init__.py:800
 msgid "COMMAND"
 msgstr "指令"
 
-#: dnf/cli/commands/__init__.py:806
+#: dnf/cli/commands/__init__.py:801
 #, python-brace-format
 msgid "{prog} command to get help for"
 msgstr "要取得說明的 {prog} 命令"
@@ -1150,7 +1132,11 @@ msgid "Waiting for process with pid %d to finish."
 msgstr "正在等候 PID %d 處理程序完成。"
 
 #: dnf/cli/commands/deplist.py:32
-msgid "List package's dependencies and what packages provide them"
+#, 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 "列出軟體包的依賴關係以及由何軟體包提供"
 
 #: dnf/cli/commands/distrosync.py:32
@@ -1177,78 +1163,78 @@ msgstr "顯示或使用群組資訊"
 msgid "No group data available for configured repositories."
 msgstr "設定的軟體庫沒有可用的群組資料。"
 
-#: dnf/cli/commands/group.py:129
+#: dnf/cli/commands/group.py:126
 #, python-format
 msgid "Warning: Group %s does not exist."
 msgstr "警告: %s 群組不存在。"
 
-#: dnf/cli/commands/group.py:170
+#: dnf/cli/commands/group.py:167
 msgid "Warning: No groups match:"
 msgstr "警告:沒有符合的群組:"
 
-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193
-#: dnf/cli/output.py:1226
+#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190
+#: dnf/cli/output.py:1139
 msgid "<name-unset>"
 msgstr "<名稱未設定>"
 
-#: dnf/cli/commands/group.py:199
+#: dnf/cli/commands/group.py:196
 msgid "Available Environment Groups:"
 msgstr "可用的環境群組:"
 
-#: dnf/cli/commands/group.py:201
+#: dnf/cli/commands/group.py:198
 msgid "Installed Environment Groups:"
 msgstr "已安裝的環境群組:"
 
-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294
+#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291
 msgid "Installed Groups:"
 msgstr "已安裝的群組:"
 
-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301
+#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298
 msgid "Installed Language Groups:"
 msgstr "已安裝的語言群組:"
 
-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308
+#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305
 msgid "Available Groups:"
 msgstr "可用的群組:"
 
-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315
+#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312
 msgid "Available Language Groups:"
 msgstr "可用的語言群組:"
 
-#: dnf/cli/commands/group.py:322
+#: dnf/cli/commands/group.py:319
 msgid "include optional packages from group"
 msgstr "包含群組提供的選用軟體包"
 
-#: dnf/cli/commands/group.py:325
+#: dnf/cli/commands/group.py:322
 msgid "show also hidden groups"
 msgstr "也顯示隱藏群組"
 
-#: dnf/cli/commands/group.py:327
+#: dnf/cli/commands/group.py:324
 msgid "show only installed groups"
 msgstr "僅顯示已安裝的群組"
 
-#: dnf/cli/commands/group.py:329
+#: dnf/cli/commands/group.py:326
 msgid "show only available groups"
 msgstr "僅顯示可用的群組"
 
-#: dnf/cli/commands/group.py:331
+#: dnf/cli/commands/group.py:328
 msgid "show also ID of groups"
 msgstr "亦顯示群組 ID"
 
-#: dnf/cli/commands/group.py:333
+#: dnf/cli/commands/group.py:330
 msgid "available subcommands: {} (default), {}"
 msgstr "可用的子命令:{} (預設)、{}"
 
-#: dnf/cli/commands/group.py:337
+#: dnf/cli/commands/group.py:334
 msgid "argument for group subcommand"
 msgstr "群組子命令的引數"
 
-#: dnf/cli/commands/group.py:346
+#: dnf/cli/commands/group.py:343
 #, python-format
 msgid "Invalid groups sub-command, use: %s."
 msgstr "無效的群組子指令,請用:%s。"
 
-#: dnf/cli/commands/group.py:403
+#: dnf/cli/commands/group.py:398
 msgid "Unable to find a mandatory group package."
 msgstr "找不到強制群組軟體包。"
 
@@ -1262,8 +1248,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
@@ -1274,8 +1260,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
@@ -1298,30 +1284,58 @@ msgstr "沒有提供處理事項識別碼或軟體包名稱。"
 msgid "More than one argument given as transaction file name."
 msgstr "移除處理事項檔案 %s 失敗"
 
-#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:126
+#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130
 msgid "No transaction ID or package name given."
 msgstr "沒有提供處理事項識別碼或軟體包名稱。"
 
-#: dnf/cli/commands/history.py:138
+#: dnf/cli/commands/history.py:142
 #, python-format
 msgid "You don't have access to the history DB: %s"
 msgstr "您沒有權限存取歷史紀錄資料庫:%s"
 
-#: dnf/cli/commands/history.py:147
+#: 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:152
+#: dnf/cli/commands/history.py:156
 #, python-format
 msgid ""
 "Cannot rollback transaction %s, doing so would result in an inconsistent "
 "package database."
 msgstr "無法回滾處理事項 %s,這樣做會導致軟體包資料庫不一致。"
 
-#: dnf/cli/commands/history.py:222
+#: dnf/cli/commands/history.py:175
+msgid "No transaction ID given"
+msgstr "沒有提供處理事項識別碼"
+
+#: dnf/cli/commands/history.py:179
+#, fuzzy, python-brace-format
+#| msgid "TransactionItem not found for key: {}"
+msgid "Transaction ID \"{0}\" not found."
+msgstr "找不到下述鍵的 TransactionItem:{}"
+
+#: dnf/cli/commands/history.py:185
+msgid "Found more than one transaction ID!"
+msgstr "找到超過一個處理事項識別碼!"
+
+#: dnf/cli/commands/history.py:203
+#, python-format
+msgid "Transaction history is incomplete, before %u."
+msgstr "在 %u 之前,處理事項歷史紀錄不完整。"
+
+#: dnf/cli/commands/history.py:205
+#, python-format
+msgid "Transaction history is incomplete, after %u."
+msgstr "在 %u 之後,處理事項歷史紀錄不完整。"
+
+#: dnf/cli/commands/history.py:256
+msgid "No packages to list"
+msgstr "沒有要列出的軟體包"
+
+#: dnf/cli/commands/history.py:279
 msgid ""
 "Invalid transaction ID range definition '{}'.\n"
 "Use '<transaction-id>..<transaction-id>'."
@@ -1329,7 +1343,7 @@ msgstr ""
 "無效的處理事項識別碼範圍定義「{}」。\n"
 "使用「<transaction-id>..<transaction-id>」。"
 
-#: dnf/cli/commands/history.py:226
+#: dnf/cli/commands/history.py:283
 msgid ""
 "Can't convert '{}' to transaction ID.\n"
 "Use '<number>', 'last', 'last-<number>'."
@@ -1337,39 +1351,32 @@ msgstr ""
 "無法將「{}」轉為處理事項 ID。\n"
 "請使用 '<數字>'、'last'、'last-<數字>'。"
 
-#: dnf/cli/commands/history.py:255
+#: dnf/cli/commands/history.py:312
 msgid "No transaction which manipulates package '{}' was found."
 msgstr "找不到操作「{}」軟體包的處理事項。"
 
-#: dnf/cli/commands/history.py:305
-#, fuzzy, python-brace-format
-#| msgid "TransactionItem not found for key: {}"
-msgid "Transaction ID \"{id}\" not found."
-msgstr "找不到下述鍵的 TransactionItem:{}"
-
-#: dnf/cli/commands/history.py:313
+#: dnf/cli/commands/history.py:357
 msgid "{} exists, overwrite?"
 msgstr ""
 
-#: dnf/cli/commands/history.py:316
+#: dnf/cli/commands/history.py:360
 msgid "Not overwriting {}, exiting."
 msgstr ""
 
-#: dnf/cli/commands/history.py:323
+#: dnf/cli/commands/history.py:367
 #, fuzzy
 #| msgid "Transaction failed"
 msgid "Transaction saved to {}."
 msgstr "處理事項失敗"
 
-#: dnf/cli/commands/history.py:326
+#: dnf/cli/commands/history.py:370
 #, fuzzy
 #| msgid "Errors occurred during transaction."
 msgid "Error storing transaction: {}"
 msgstr "在處理事項時發生錯誤。"
 
-#: dnf/cli/commands/history.py:350
-msgid ""
-"Warning, the following problems occurred while replaying the transaction:"
+#: dnf/cli/commands/history.py:386
+msgid "Warning, the following problems occurred while running a transaction:"
 msgstr ""
 
 #: dnf/cli/commands/install.py:47
@@ -1389,7 +1396,7 @@ msgstr "找不到符合項目"
 msgid "Not a valid rpm file path: %s"
 msgstr "無效 RPM 檔案位址:%s"
 
-#: dnf/cli/commands/install.py:167
+#: dnf/cli/commands/install.py:166
 #, python-brace-format
 msgid "There are following alternatives for \"{0}\": {1}"
 msgstr "以下可以用來替代「{0}」:{1}"
@@ -1432,7 +1439,7 @@ msgid "%s marked as group installed."
 msgstr "%s 標記為群組安裝。"
 
 #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129
-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279
+#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282
 msgid "Error:"
 msgstr "錯誤:"
 
@@ -1441,89 +1448,93 @@ msgstr "錯誤:"
 msgid "Package %s is not installed."
 msgstr "%s 軟體包尚未安裝。"
 
-#: dnf/cli/commands/module.py:51
+#: 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:77
+#: dnf/cli/commands/module.py:80
 msgid "list all module streams, profiles and states"
 msgstr "列出所有的模組串流、設定檔及狀態"
 
-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128
+#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131
 msgid "No matching Modules to list"
 msgstr "沒有要列出的符合模組"
 
-#: dnf/cli/commands/module.py:111
+#: dnf/cli/commands/module.py:114
 msgid "print detailed information about a module"
 msgstr "輸出詳細模組資訊"
 
-#: dnf/cli/commands/module.py:133
+#: dnf/cli/commands/module.py:136
 msgid "enable a module stream"
 msgstr "啟用模組串流"
 
-#: dnf/cli/commands/module.py:157
+#: dnf/cli/commands/module.py:160
 msgid "disable a module with all its streams"
 msgstr "停用模組及其所有串流"
 
-#: dnf/cli/commands/module.py:181
+#: dnf/cli/commands/module.py:184
 msgid "reset a module"
 msgstr "重設模組"
 
-#: dnf/cli/commands/module.py:202
+#: dnf/cli/commands/module.py:205
 msgid "install a module profile including its packages"
 msgstr "安裝包含其軟體的模組設定檔"
 
-#: dnf/cli/commands/module.py:223
+#: dnf/cli/commands/module.py:226
 msgid "update packages associated with an active stream"
 msgstr "更新與作用中串流關聯的軟體包"
 
-#: dnf/cli/commands/module.py:240
+#: dnf/cli/commands/module.py:243
 msgid "remove installed module profiles and their packages"
 msgstr "移除安裝的模組設定檔及其軟體包"
 
-#: dnf/cli/commands/module.py:264
+#: dnf/cli/commands/module.py:267
 msgid "Package {} belongs to multiple modules, skipping"
 msgstr "{} 軟體包屬於多個模組,跳過"
 
-#: dnf/cli/commands/module.py:277
+#: dnf/cli/commands/module.py:280
+msgid "switch a module to a stream and distrosync rpm packages"
+msgstr ""
+
+#: dnf/cli/commands/module.py:302
 msgid "list modular packages"
 msgstr "列出模組化軟體包"
 
-#: dnf/cli/commands/module.py:292
+#: dnf/cli/commands/module.py:317
 msgid "list packages belonging to a module"
 msgstr "列出屬於模組的軟體包"
 
-#: dnf/cli/commands/module.py:327
+#: dnf/cli/commands/module.py:352
 msgid "Interact with Modules."
 msgstr "與模組互動。"
 
-#: dnf/cli/commands/module.py:340
+#: dnf/cli/commands/module.py:365
 msgid "show only enabled modules"
 msgstr "只顯示已啟用的模組"
 
-#: dnf/cli/commands/module.py:343
+#: dnf/cli/commands/module.py:368
 msgid "show only disabled modules"
 msgstr "只顯示已停用的模組"
 
-#: dnf/cli/commands/module.py:346
+#: dnf/cli/commands/module.py:371
 msgid "show only installed modules or packages"
 msgstr "只顯示安裝的模組或軟體包"
 
-#: dnf/cli/commands/module.py:349
+#: dnf/cli/commands/module.py:374
 msgid "show profile content"
 msgstr "顯示設定檔內容"
 
-#: dnf/cli/commands/module.py:354
+#: dnf/cli/commands/module.py:379
 msgid "remove all modular packages"
 msgstr "移除所有模組化軟體包"
 
-#: dnf/cli/commands/module.py:364
+#: dnf/cli/commands/module.py:389
 msgid "Module specification"
 msgstr "模組規格"
 
-#: dnf/cli/commands/module.py:386
+#: dnf/cli/commands/module.py:411
 msgid "{} {} {}: too few arguments"
 msgstr "{} {} {}:引數過少"
 
@@ -1712,7 +1723,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)"
@@ -1798,7 +1810,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"
@@ -1823,9 +1836,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"
@@ -1835,7 +1850,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 ""
@@ -1902,8 +1918,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,23 +1968,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"
@@ -1982,13 +1998,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"
 "  列出提供軟體包的樹狀圖。"
@@ -2009,27 +2029,26 @@ msgstr "KEYWORD"
 msgid "Keyword to search for"
 msgstr "要搜尋的關鍵字"
 
-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506
+#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460
 msgctxt "long"
 msgid "Name"
 msgstr "名稱"
 
-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559
+#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513
 msgctxt "long"
 msgid "Summary"
 msgstr "摘要"
 
-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569
+#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523
 msgctxt "long"
 msgid "Description"
 msgstr "描述"
 
-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562
+#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516
 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 " & "
@@ -2167,16 +2186,16 @@ msgstr ""
 "run                      解析並執行處理事項集\n"
 "exit (or quit)           離開 Shell"
 
-#: dnf/cli/commands/shell.py:259
+#: dnf/cli/commands/shell.py:262
 #, python-format
 msgid "Error: Cannot open %s for reading"
 msgstr "錯誤:無法開啟 %s 供讀取"
 
-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187
+#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187
 msgid "Complete!"
 msgstr "完成!"
 
-#: dnf/cli/commands/shell.py:291
+#: dnf/cli/commands/shell.py:294
 msgid "Leaving Shell"
 msgstr "離開 Shell"
 
@@ -2367,8 +2386,8 @@ msgstr "嚴重"
 msgid "Files"
 msgstr "檔案"
 
-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499
-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
+#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654
+#: dnf/cli/output.py:1656 dnf/util.py:617
 msgid "Installed"
 msgstr "已安裝"
 
@@ -2547,7 +2566,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"
@@ -2569,8 +2590,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
@@ -2599,7 +2620,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"
@@ -2689,13 +2711,13 @@ msgstr "無法編碼「%s」引數:%s"
 #. Translators: This is abbreviated 'Name'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:505
+#: dnf/cli/output.py:459
 msgctxt "short"
 msgid "Name"
 msgstr "名稱"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:511
+#: dnf/cli/output.py:465
 msgid "Epoch"
 msgstr "Epoch"
 
@@ -2703,38 +2725,38 @@ msgstr "Epoch"
 #. use the full (unabbreviated) term 'Version' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:512 dnf/cli/output.py:1335
+#: dnf/cli/output.py:466 dnf/cli/output.py:1248
 msgctxt "short"
 msgid "Version"
 msgstr "版本"
 
 #. Translators: This is the full (unabbreviated) term 'Version'.
-#: dnf/cli/output.py:513 dnf/cli/output.py:1337
+#: dnf/cli/output.py:467 dnf/cli/output.py:1250
 msgctxt "long"
 msgid "Version"
 msgstr "版本"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:516
+#: dnf/cli/output.py:470
 msgid "Release"
 msgstr "發行版"
 
 #. Translators: This is abbreviated 'Architecture', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:517 dnf/cli/output.py:1326
+#: dnf/cli/output.py:471 dnf/cli/output.py:1239
 msgctxt "short"
 msgid "Arch"
 msgstr "架構"
 
 #. Translators: This is the full word 'Architecture', used when
 #. we have enough space.
-#: dnf/cli/output.py:518 dnf/cli/output.py:1329
+#: dnf/cli/output.py:472 dnf/cli/output.py:1242
 msgctxt "long"
 msgid "Architecture"
 msgstr "架構"
 
 #. Translators: This is the full (unabbreviated) term 'Size'.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1352
+#: dnf/cli/output.py:474 dnf/cli/output.py:1265
 msgctxt "long"
 msgid "Size"
 msgstr "大小"
@@ -2743,32 +2765,32 @@ msgstr "大小"
 #. not be longer than 5 characters. If the term 'Size' in your
 #. language is not longer than 5 characters then you can use it
 #. unabbreviated.
-#: dnf/cli/output.py:520 dnf/cli/output.py:1350
+#: dnf/cli/output.py:474 dnf/cli/output.py:1263
 msgctxt "short"
 msgid "Size"
 msgstr "大小"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:524
+#: dnf/cli/output.py:478
 msgid "Source"
 msgstr "來源"
 
 #. Translators: This is abbreviated 'Repository', used when
 #. we have not enough space to display the full word.
-#: dnf/cli/output.py:525 dnf/cli/output.py:1341
+#: dnf/cli/output.py:479 dnf/cli/output.py:1254
 msgctxt "short"
 msgid "Repo"
 msgstr "軟體庫"
 
 #. Translators: This is the full word 'Repository', used when
 #. we have enough space.
-#: dnf/cli/output.py:526 dnf/cli/output.py:1344
+#: dnf/cli/output.py:480 dnf/cli/output.py:1257
 msgctxt "long"
 msgid "Repository"
 msgstr "軟體庫"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:533
+#: dnf/cli/output.py:487
 msgid "From repo"
 msgstr "來源軟體庫"
 
@@ -2776,312 +2798,308 @@ msgstr "來源軟體庫"
 #. print(_("Committer   : %s") % ucd(pkg.committer))
 #. print(_("Committime  : %s") % time.ctime(pkg.committime))
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:539
+#: dnf/cli/output.py:493
 msgid "Packager"
 msgstr "打包者"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:541
+#: dnf/cli/output.py:495
 msgid "Buildtime"
 msgstr "組建時間"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:545
+#: dnf/cli/output.py:499
 msgid "Install time"
 msgstr "安裝時間"
 
 #. Translators: This message should be no longer than 12 chars.
-#: dnf/cli/output.py:554
+#: dnf/cli/output.py:508
 msgid "Installed by"
 msgstr "安裝內容"
 
 #. Translators: This is abbreviated 'Summary'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:558
+#: dnf/cli/output.py:512
 msgctxt "short"
 msgid "Summary"
 msgstr "摘要"
 
 #. Translators: This message should be no longer than 12 characters.
-#: dnf/cli/output.py:564
+#: dnf/cli/output.py:518
 msgid "License"
 msgstr "授權"
 
 #. Translators: This is abbreviated 'Description'. Should be no longer
 #. than 12 characters. You can use the full version if it is short
 #. enough in your language.
-#: dnf/cli/output.py:568
+#: dnf/cli/output.py:522
 msgctxt "short"
 msgid "Description"
 msgstr "描述"
 
-#: dnf/cli/output.py:695
-msgid "No packages to list"
-msgstr "沒有要列出的軟體包"
-
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "y"
 msgstr "y"
 
-#: dnf/cli/output.py:706
+#: dnf/cli/output.py:650
 msgid "yes"
 msgstr "yes"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "n"
 msgstr "n"
 
-#: dnf/cli/output.py:707
+#: dnf/cli/output.py:651
 msgid "no"
 msgstr "no"
 
-#: dnf/cli/output.py:711
+#: dnf/cli/output.py:655
 msgid "Is this ok [y/N]: "
 msgstr "這樣可以嗎 [y/N]: "
 
-#: dnf/cli/output.py:715
+#: dnf/cli/output.py:659
 msgid "Is this ok [Y/n]: "
 msgstr "這樣可以嗎 [Y/n]: "
 
-#: dnf/cli/output.py:795
+#: dnf/cli/output.py:739
 #, python-format
 msgid "Group: %s"
 msgstr "群組:%s"
 
-#: dnf/cli/output.py:799
+#: dnf/cli/output.py:743
 #, python-format
 msgid " Group-Id: %s"
 msgstr " 群組 ID:%s"
 
-#: dnf/cli/output.py:801 dnf/cli/output.py:840
+#: dnf/cli/output.py:745 dnf/cli/output.py:784
 #, python-format
 msgid " Description: %s"
 msgstr " 描述:%s"
 
-#: dnf/cli/output.py:803
+#: dnf/cli/output.py:747
 #, python-format
 msgid " Language: %s"
 msgstr " 語言:%s"
 
-#: dnf/cli/output.py:806
+#: dnf/cli/output.py:750
 msgid " Mandatory Packages:"
 msgstr " 必備軟體包:"
 
-#: dnf/cli/output.py:807
+#: dnf/cli/output.py:751
 msgid " Default Packages:"
 msgstr " 預設軟體包:"
 
-#: dnf/cli/output.py:808
+#: dnf/cli/output.py:752
 msgid " Optional Packages:"
 msgstr " 選用軟體包:"
 
-#: dnf/cli/output.py:809
+#: dnf/cli/output.py:753
 msgid " Conditional Packages:"
 msgstr " 條件軟體包:"
 
-#: dnf/cli/output.py:834
+#: dnf/cli/output.py:778
 #, python-format
 msgid "Environment Group: %s"
 msgstr "環境群組:%s"
 
-#: dnf/cli/output.py:837
+#: dnf/cli/output.py:781
 #, python-format
 msgid " Environment-Id: %s"
 msgstr " 環境 ID:%s"
 
-#: dnf/cli/output.py:843
+#: dnf/cli/output.py:787
 msgid " Mandatory Groups:"
 msgstr " 必備群組:"
 
-#: dnf/cli/output.py:844
+#: dnf/cli/output.py:788
 msgid " Optional Groups:"
 msgstr " 選用群組:"
 
-#: dnf/cli/output.py:865
+#: dnf/cli/output.py:809
 msgid "Matched from:"
 msgstr "符合來源:"
 
-#: dnf/cli/output.py:879
+#: dnf/cli/output.py:823
 #, python-format
 msgid "Filename    : %s"
 msgstr "檔案名稱:%s"
 
-#: dnf/cli/output.py:904
+#: dnf/cli/output.py:848
 #, python-format
 msgid "Repo        : %s"
 msgstr "軟體庫  :%s"
 
-#: dnf/cli/output.py:913
+#: dnf/cli/output.py:857
 msgid "Description : "
 msgstr "描述    : "
 
-#: dnf/cli/output.py:917
+#: dnf/cli/output.py:861
 #, python-format
 msgid "URL         : %s"
 msgstr "URL     :%s"
 
-#: dnf/cli/output.py:921
+#: dnf/cli/output.py:865
 #, python-format
 msgid "License     : %s"
 msgstr "授權    :%s"
 
-#: dnf/cli/output.py:927
+#: dnf/cli/output.py:871
 #, python-format
 msgid "Provide    : %s"
 msgstr "提供    :%s"
 
-#: dnf/cli/output.py:947
+#: dnf/cli/output.py:891
 #, python-format
 msgid "Other       : %s"
 msgstr "其他    :%s"
 
-#: dnf/cli/output.py:996
+#: dnf/cli/output.py:940
 msgid "There was an error calculating total download size"
 msgstr "計算總下載大小時發生錯誤"
 
-#: dnf/cli/output.py:1002
+#: dnf/cli/output.py:946
 #, python-format
 msgid "Total size: %s"
 msgstr "總大小:%s"
 
-#: dnf/cli/output.py:1005
+#: dnf/cli/output.py:949
 #, python-format
 msgid "Total download size: %s"
 msgstr "總下載大小:%s"
 
-#: dnf/cli/output.py:1008
+#: dnf/cli/output.py:952
 #, python-format
 msgid "Installed size: %s"
 msgstr "安裝的大小:%s"
 
-#: dnf/cli/output.py:1026
+#: dnf/cli/output.py:970
 msgid "There was an error calculating installed size"
 msgstr "計算安裝大小時發生錯誤"
 
-#: dnf/cli/output.py:1030
+#: dnf/cli/output.py:974
 #, python-format
 msgid "Freed space: %s"
 msgstr "釋放空間:%s"
 
-#: dnf/cli/output.py:1039
+#: dnf/cli/output.py:983
 msgid "Marking packages as installed by the group:"
 msgstr "依據群組將軟體包標記為安裝:"
 
-#: dnf/cli/output.py:1046
+#: dnf/cli/output.py:990
 msgid "Marking packages as removed by the group:"
 msgstr "依據群組將軟體包標記為移除:"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Group"
 msgstr "群組"
 
-#: dnf/cli/output.py:1056
+#: dnf/cli/output.py:1000
 msgid "Packages"
 msgstr "軟體包"
 
-#: dnf/cli/output.py:1133
+#: dnf/cli/output.py:1046
 msgid "Installing group/module packages"
 msgstr "將安裝群組/模組軟體包"
 
-#: dnf/cli/output.py:1134
+#: dnf/cli/output.py:1047
 msgid "Installing group packages"
 msgstr "將安裝軟體包群組"
 
 #. TRANSLATORS: This is for a list of packages to be installed.
-#: dnf/cli/output.py:1138
+#: dnf/cli/output.py:1051
 msgctxt "summary"
 msgid "Installing"
 msgstr "安裝"
 
 #. TRANSLATORS: This is for a list of packages to be upgraded.
-#: dnf/cli/output.py:1140
+#: dnf/cli/output.py:1053
 msgctxt "summary"
 msgid "Upgrading"
 msgstr "升級"
 
 #. TRANSLATORS: This is for a list of packages to be reinstalled.
-#: dnf/cli/output.py:1142
+#: dnf/cli/output.py:1055
 msgctxt "summary"
 msgid "Reinstalling"
 msgstr "重裝"
 
-#: dnf/cli/output.py:1144
+#: dnf/cli/output.py:1057
 msgid "Installing dependencies"
 msgstr "將安裝依賴項目"
 
-#: dnf/cli/output.py:1145
+#: dnf/cli/output.py:1058
 msgid "Installing weak dependencies"
 msgstr "將安裝弱依賴項目"
 
 #. TRANSLATORS: This is for a list of packages to be removed.
-#: dnf/cli/output.py:1147
+#: dnf/cli/output.py:1060
 msgid "Removing"
 msgstr "移除"
 
-#: dnf/cli/output.py:1148
+#: dnf/cli/output.py:1061
 msgid "Removing dependent packages"
 msgstr "正在移除相關的軟體包"
 
-#: dnf/cli/output.py:1149
+#: dnf/cli/output.py:1062
 msgid "Removing unused dependencies"
 msgstr "正在移除無用的依賴軟體包"
 
 #. TRANSLATORS: This is for a list of packages to be downgraded.
-#: dnf/cli/output.py:1151
+#: dnf/cli/output.py:1064
 msgctxt "summary"
 msgid "Downgrading"
 msgstr "降級"
 
-#: dnf/cli/output.py:1176
+#: dnf/cli/output.py:1089
 msgid "Installing module profiles"
 msgstr "正在安裝模組設定檔"
 
-#: dnf/cli/output.py:1185
+#: dnf/cli/output.py:1098
 msgid "Disabling module profiles"
 msgstr "正在停用模組設定檔"
 
-#: dnf/cli/output.py:1194
+#: dnf/cli/output.py:1107
 msgid "Enabling module streams"
 msgstr "正在啟用模組串流"
 
-#: dnf/cli/output.py:1202
+#: dnf/cli/output.py:1115
 msgid "Switching module streams"
 msgstr "正在切換模組串流"
 
-#: dnf/cli/output.py:1210
+#: dnf/cli/output.py:1123
 msgid "Disabling modules"
 msgstr "正在停用模組"
 
-#: dnf/cli/output.py:1218
+#: dnf/cli/output.py:1131
 msgid "Resetting modules"
 msgstr "正在重設模組"
 
-#: dnf/cli/output.py:1230
+#: dnf/cli/output.py:1143
 msgid "Installing Environment Groups"
 msgstr "正在安裝環境群組"
 
-#: dnf/cli/output.py:1237
+#: dnf/cli/output.py:1150
 msgid "Upgrading Environment Groups"
 msgstr "正在升級環境群組"
 
-#: dnf/cli/output.py:1244
+#: dnf/cli/output.py:1157
 msgid "Removing Environment Groups"
 msgstr "正在移除環境群組"
 
-#: dnf/cli/output.py:1251
+#: dnf/cli/output.py:1164
 msgid "Installing Groups"
 msgstr "正在安裝群組"
 
-#: dnf/cli/output.py:1258
+#: dnf/cli/output.py:1171
 msgid "Upgrading Groups"
 msgstr "正在升級群組"
 
-#: dnf/cli/output.py:1265
+#: dnf/cli/output.py:1178
 msgid "Removing Groups"
 msgstr "正在移除群組"
 
-#: dnf/cli/output.py:1281
+#: dnf/cli/output.py:1194
 #, python-format
 msgid ""
 "Skipping packages with conflicts:\n"
@@ -3090,12 +3108,12 @@ msgstr ""
 "略過有衝突的軟體包:\n"
 "(加入「%s」到指令列中來強制升級)"
 
-#: dnf/cli/output.py:1291
+#: dnf/cli/output.py:1204
 #, python-format
 msgid "Skipping packages with broken dependencies%s"
 msgstr "略過依賴關係損壞的軟體包%s"
 
-#: dnf/cli/output.py:1295
+#: dnf/cli/output.py:1208
 msgid " or part of a group"
 msgstr " 或群組的一部分"
 
@@ -3103,22 +3121,22 @@ msgstr " 或群組的一部分"
 #. use the full (unabbreviated) term 'Package' if you think that
 #. the translation to your language is not too long and will
 #. always fit to limited space.
-#: dnf/cli/output.py:1320
+#: dnf/cli/output.py:1233
 msgctxt "short"
 msgid "Package"
 msgstr "軟體包"
 
 #. Translators: This is the full (unabbreviated) term 'Package'.
-#: dnf/cli/output.py:1322
+#: dnf/cli/output.py:1235
 msgctxt "long"
 msgid "Package"
 msgstr "軟體包"
 
-#: dnf/cli/output.py:1371
+#: dnf/cli/output.py:1284
 msgid "replacing"
 msgstr "替換"
 
-#: dnf/cli/output.py:1378
+#: dnf/cli/output.py:1291
 #, python-format
 msgid ""
 "\n"
@@ -3130,287 +3148,271 @@ msgstr ""
 "%s\n"
 
 #. TODO: remove
-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933
+#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815
 msgid "Install"
 msgstr "安裝"
 
-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941
+#: dnf/cli/output.py:1300 dnf/cli/output.py:1823
 msgid "Upgrade"
 msgstr "升級"
 
-#: dnf/cli/output.py:1388
+#: dnf/cli/output.py:1301
 msgid "Remove"
 msgstr "移除"
 
-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939
+#: dnf/cli/output.py:1303 dnf/cli/output.py:1821
 msgid "Downgrade"
 msgstr "降級"
 
-#: dnf/cli/output.py:1391
+#: dnf/cli/output.py:1304
 msgid "Skip"
 msgstr "略過"
 
-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416
+#: dnf/cli/output.py:1313 dnf/cli/output.py:1329
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "軟體包"
 
-#: dnf/cli/output.py:1418
+#: dnf/cli/output.py:1331
 msgid "Dependent package"
 msgid_plural "Dependent packages"
 msgstr[0] "依賴的軟體包"
 
-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942
-msgid "Upgraded"
-msgstr "已升級"
-
-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940
-msgid "Downgraded"
-msgstr "已降級"
-
-#: dnf/cli/output.py:1503
-msgid "Reinstalled"
-msgstr "已重裝"
-
-#: dnf/cli/output.py:1504
-msgid "Skipped"
-msgstr "跳過"
-
-#: dnf/cli/output.py:1505
-msgid "Removed"
-msgstr "已移除"
-
-#: dnf/cli/output.py:1508
-msgid "Failed"
-msgstr "失敗"
-
-#: dnf/cli/output.py:1559
+#: dnf/cli/output.py:1439
 msgid "Total"
 msgstr "總計"
 
-#: dnf/cli/output.py:1587
+#: dnf/cli/output.py:1467
 msgid "<unset>"
 msgstr "<未設定>"
 
-#: dnf/cli/output.py:1588
+#: dnf/cli/output.py:1468
 msgid "System"
 msgstr "系統"
 
-#: dnf/cli/output.py:1638
+#: dnf/cli/output.py:1518
 msgid "Command line"
 msgstr "指令列"
 
 #. TRANSLATORS: user names who executed transaction in history command output
-#: dnf/cli/output.py:1649
+#: dnf/cli/output.py:1531
 msgid "User name"
 msgstr "使用者名稱"
 
-#: dnf/cli/output.py:1651
+#: dnf/cli/output.py:1533
 msgid "ID"
 msgstr "ID"
 
-#: dnf/cli/output.py:1653
+#: dnf/cli/output.py:1535
 msgid "Date and time"
 msgstr "日期與時間"
 
-#: dnf/cli/output.py:1654
+#: dnf/cli/output.py:1536
 msgid "Action(s)"
 msgstr "動作"
 
-#: dnf/cli/output.py:1655
+#: dnf/cli/output.py:1537
 msgid "Altered"
 msgstr "已變動"
 
-#: dnf/cli/output.py:1698
+#: dnf/cli/output.py:1580
 msgid "No transactions"
 msgstr "無處理事項"
 
-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715
+#: dnf/cli/output.py:1581 dnf/cli/output.py:1597
 msgid "Failed history info"
 msgstr "失敗的歷史資訊"
 
-#: dnf/cli/output.py:1714
+#: dnf/cli/output.py:1596
 msgid "No transaction ID, or package, given"
 msgstr "沒有給予處理事項 ID、或軟體包"
 
-#: dnf/cli/output.py:1772
+#: dnf/cli/output.py:1654
 msgid "Erased"
 msgstr "已抹除"
 
-#: dnf/cli/output.py:1774
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616
+msgid "Downgraded"
+msgstr "已降級"
+
+#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615
+msgid "Upgraded"
+msgstr "已升級"
+
+#: dnf/cli/output.py:1656
 msgid "Not installed"
 msgstr "未安裝"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Newer"
 msgstr "新版"
 
-#: dnf/cli/output.py:1775
+#: dnf/cli/output.py:1657
 msgid "Older"
 msgstr "舊版"
 
-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825
+#: dnf/cli/output.py:1705 dnf/cli/output.py:1707
 msgid "Transaction ID :"
 msgstr "處理事項ID:"
 
-#: dnf/cli/output.py:1828
+#: dnf/cli/output.py:1710
 msgid "Begin time     :"
 msgstr "開始時間  :"
 
-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833
+#: dnf/cli/output.py:1713 dnf/cli/output.py:1715
 msgid "Begin rpmdb    :"
 msgstr "開始 rpmdb:"
 
-#: dnf/cli/output.py:1839
+#: dnf/cli/output.py:1721
 #, python-format
 msgid "(%u seconds)"
 msgstr "(%u 秒)"
 
-#: dnf/cli/output.py:1841
+#: dnf/cli/output.py:1723
 #, python-format
 msgid "(%u minutes)"
 msgstr "(%u 分鐘)"
 
-#: dnf/cli/output.py:1843
+#: dnf/cli/output.py:1725
 #, python-format
 msgid "(%u hours)"
 msgstr "(%u 小時)"
 
-#: dnf/cli/output.py:1845
+#: dnf/cli/output.py:1727
 #, python-format
 msgid "(%u days)"
 msgstr "(%u 天)"
 
-#: dnf/cli/output.py:1846
+#: dnf/cli/output.py:1728
 msgid "End time       :"
 msgstr "結束時間  :"
 
-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851
+#: dnf/cli/output.py:1731 dnf/cli/output.py:1733
 msgid "End rpmdb      :"
 msgstr "結束 rpmdb:"
 
-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860
+#: dnf/cli/output.py:1740 dnf/cli/output.py:1742
 msgid "User           :"
 msgstr "使用者    :"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1753
 msgid "Aborted"
 msgstr "已中止"
 
-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869
-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751
+#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757
 msgid "Return-Code    :"
 msgstr "回傳代碼  :"
 
-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875
+#: dnf/cli/output.py:1749 dnf/cli/output.py:1757
 msgid "Success"
 msgstr "成功"
 
-#: dnf/cli/output.py:1869
+#: dnf/cli/output.py:1751
 msgid "Failures:"
 msgstr "失敗:"
 
-#: dnf/cli/output.py:1873
+#: dnf/cli/output.py:1755
 msgid "Failure:"
 msgstr "失敗:"
 
-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885
+#: dnf/cli/output.py:1765 dnf/cli/output.py:1767
 msgid "Releasever     :"
 msgstr "發行版本  :"
 
-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892
+#: dnf/cli/output.py:1772 dnf/cli/output.py:1774
 msgid "Command Line   :"
 msgstr "指令列    :"
 
-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899
+#: dnf/cli/output.py:1779 dnf/cli/output.py:1781
 msgid "Comment        :"
 msgstr "備註      :"
 
-#: dnf/cli/output.py:1903
+#: dnf/cli/output.py:1785
 msgid "Transaction performed with:"
 msgstr "處理事項執行者:"
 
-#: dnf/cli/output.py:1912
+#: dnf/cli/output.py:1794
 msgid "Packages Altered:"
 msgstr "變動的軟體包:"
 
-#: dnf/cli/output.py:1918
+#: dnf/cli/output.py:1800
 msgid "Scriptlet output:"
 msgstr "小令稿輸出:"
 
-#: dnf/cli/output.py:1925
+#: dnf/cli/output.py:1807
 msgid "Errors:"
 msgstr "錯誤:"
 
-#: dnf/cli/output.py:1934
+#: dnf/cli/output.py:1816
 msgid "Dep-Install"
 msgstr "依賴安裝"
 
-#: dnf/cli/output.py:1935
+#: dnf/cli/output.py:1817
 msgid "Obsoleted"
 msgstr "已棄用"
 
-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85
+#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85
 msgid "Obsoleting"
 msgstr "棄用"
 
-#: dnf/cli/output.py:1937
+#: dnf/cli/output.py:1819
 msgid "Erase"
 msgstr "抹除"
 
-#: dnf/cli/output.py:1938
+#: dnf/cli/output.py:1820
 msgid "Reinstall"
 msgstr "重裝"
 
-#: dnf/cli/output.py:2016
+#: dnf/cli/output.py:1894
 #, python-format
 msgid "---> Package %s.%s %s will be installed"
 msgstr "---> %s.%s %s 軟體包將會安裝"
 
-#: dnf/cli/output.py:2018
+#: dnf/cli/output.py:1896
 #, python-format
 msgid "---> Package %s.%s %s will be an upgrade"
 msgstr "---> %s.%s %s 軟體包將會升級"
 
-#: dnf/cli/output.py:2020
+#: dnf/cli/output.py:1898
 #, python-format
 msgid "---> Package %s.%s %s will be erased"
 msgstr "---> %s.%s %s 軟體包將被抹除"
 
-#: dnf/cli/output.py:2022
+#: dnf/cli/output.py:1900
 #, python-format
 msgid "---> Package %s.%s %s will be reinstalled"
 msgstr "---> %s.%s %s 軟體包將會重裝"
 
-#: dnf/cli/output.py:2024
+#: dnf/cli/output.py:1902
 #, python-format
 msgid "---> Package %s.%s %s will be a downgrade"
 msgstr "---> %s.%s %s 軟體包將被降級"
 
-#: dnf/cli/output.py:2026
+#: dnf/cli/output.py:1904
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleting"
 msgstr "---> %s.%s %s 軟體包將會棄用"
 
-#: dnf/cli/output.py:2028
+#: dnf/cli/output.py:1906
 #, python-format
 msgid "---> Package %s.%s %s will be upgraded"
 msgstr "---> %s.%s %s 軟體包將被升級"
 
-#: dnf/cli/output.py:2030
+#: dnf/cli/output.py:1908
 #, python-format
 msgid "---> Package %s.%s %s will be obsoleted"
 msgstr "---> %s.%s %s 軟體包將被棄用"
 
-#: dnf/cli/output.py:2039
+#: dnf/cli/output.py:1917
 msgid "--> Starting dependency resolution"
 msgstr "--> 開始解決依賴關係問題"
 
-#: dnf/cli/output.py:2044
+#: dnf/cli/output.py:1921
 msgid "--> Finished dependency resolution"
 msgstr "--> 完成解決依賴關係問題"
 
-#: dnf/cli/output.py:2058 dnf/crypto.py:132
+#: dnf/cli/output.py:1935 dnf/crypto.py:132
 #, python-format
 msgid ""
 "Importing GPG key 0x%s:\n"
@@ -3472,10 +3474,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."
@@ -3497,7 +3495,7 @@ msgstr "沒有「%s」模組或群組。"
 msgid "Environment id '%s' does not exist."
 msgstr "尚未安裝「%s」環境。"
 
-#: dnf/comps.py:622 dnf/transaction_sr.py:443 dnf/transaction_sr.py:453
+#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487
 #, fuzzy, python-format
 #| msgid "Environment '%s' is not installed."
 msgid "Environment id '%s' is not installed."
@@ -3524,6 +3522,12 @@ msgstr "Group_id「%s」不存在。"
 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"
+msgid "Invalid configuration value: %s=%s in %s; %s"
+msgstr "未知的設定值:%s = %s 於 %s;%s"
+
 #: dnf/conf/config.py:226
 msgid "Could not set cachedir: {}"
 msgstr "無法設定 cachedir:{}"
@@ -3565,36 +3569,36 @@ msgstr "以「%s.%s」鍵,「%s」值解析 --setopt 時發生錯誤:%s"
 msgid "Repo %s did not have a %s attr. before setopt"
 msgstr "%s 軟體庫未在 setopt 之前設定 %s 屬性"
 
-#: dnf/conf/read.py:51
+#: dnf/conf/read.py:60
 #, python-format
 msgid "Warning: failed loading '%s', skipping."
 msgstr "警告:「%s」載入失敗,略過。"
 
-#: dnf/conf/read.py:63
+#: dnf/conf/read.py:72
 msgid "Bad id for repo: {} ({}), byte = {} {}"
 msgstr "軟體庫的 ID 無效:{} ({}),位元組 = {} {}"
 
-#: dnf/conf/read.py:67
+#: dnf/conf/read.py:76
 msgid "Bad id for repo: {}, byte = {} {}"
 msgstr "軟體庫的 ID 無效:{},位元組 = {} {}"
 
-#: dnf/conf/read.py:75
+#: dnf/conf/read.py:84
 msgid "Repository '{}' ({}): Error parsing config: {}"
 msgstr "「{}」({}) 軟體庫:解析組態時發生錯誤:{}"
 
-#: dnf/conf/read.py:78
+#: dnf/conf/read.py:87
 msgid "Repository '{}': Error parsing config: {}"
 msgstr "「{}」軟體庫:解析組態時發生錯誤:{}"
 
-#: dnf/conf/read.py:84
+#: dnf/conf/read.py:93
 msgid "Repository '{}' ({}) is missing name in configuration, using id."
 msgstr "設定檔中缺少「{}」({}) 軟體庫的名稱,使用 ID。"
 
-#: dnf/conf/read.py:87
+#: dnf/conf/read.py:96
 msgid "Repository '{}' is missing name in configuration, using id."
 msgstr "設定檔中缺少「{}」軟體庫的名稱,使用 ID。"
 
-#: dnf/conf/read.py:104
+#: dnf/conf/read.py:113
 msgid "Parsing file \"{}\" failed: {}"
 msgstr "解析「{}」檔案失敗:{}"
 
@@ -3608,24 +3612,40 @@ msgstr "%s 軟體庫:0x%s 早已匯入"
 msgid "repo %s: imported key 0x%s."
 msgstr "%s 軟體庫:已匯入 0x%s 金鑰。"
 
-#: dnf/db/group.py:293
+#: dnf/crypto.py:145
+msgid "Verified using DNS record with DNSSEC signature."
+msgstr ""
+
+#: dnf/crypto.py:147
+msgid "NOT verified using DNS record."
+msgstr ""
+
+#: dnf/crypto.py:184
+#, python-format
+msgid "retrieving repo key for %s unencrypted from %s"
+msgstr ""
+
+#: dnf/db/group.py:301
 msgid ""
 "No available modular metadata for modular package '{}', it cannot be "
 "installed on the system"
 msgstr "沒有「{}」模組化軟體包可用的模組化中介資料,無法安裝至系統"
 
-#: dnf/db/group.py:343
+#: dnf/db/group.py:351
 msgid "No available modular metadata for modular package"
 msgstr "沒有「{}」模組化軟體包可用的模組化中介資料"
 
-#: dnf/db/group.py:377
+#: dnf/db/group.py:385
 #, python-format
 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 ({})"
 msgid ""
-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})"
+"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})"
 msgstr "「gpgkey_dns_verification」設定選項需要 libunbound ({})"
 
 #: dnf/dnssec.py:239
@@ -3648,7 +3668,7 @@ msgstr "DNSSEC 擴充: "
 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"
@@ -3690,7 +3710,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:686
+#: dnf/exceptions.py:131 dnf/module/module_base.py:854
 msgid "Modular dependency problem:"
 msgid_plural "Modular dependency problems:"
 msgstr[0] "模組化的依賴關係問題:"
@@ -3699,10 +3719,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 '{}'."
@@ -3724,7 +3746,57 @@ msgstr "已啟用模組:{}。"
 msgid "No profile specified for '{}', please specify profile."
 msgstr "沒有為 {} 指定的設定檔,請指定設定檔。"
 
-#: dnf/module/module_base.py:33
+#: dnf/module/exceptions.py:27
+#, fuzzy
+#| msgid "No profiles for module {}:{}"
+msgid "No such module: {}"
+msgstr "沒有 {}:{} 模組的設定檔"
+
+#: dnf/module/exceptions.py:33
+msgid "No such stream: {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:39
+#, fuzzy
+#| msgid "No profiles for module {}:{}"
+msgid "No enabled stream for module: {}"
+msgstr "沒有 {}:{} 模組的設定檔"
+
+#: dnf/module/exceptions.py:46
+msgid "Cannot enable more streams from module '{}' at the same time"
+msgstr ""
+
+#: dnf/module/exceptions.py:52
+msgid "Different stream enabled for module: {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:58
+msgid "No such profile: {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:64
+msgid "Specified profile not installed for {}"
+msgstr ""
+
+#: dnf/module/exceptions.py:70
+#, fuzzy
+#| msgid "No profile specified for '{}', please specify profile."
+msgid "No stream specified for '{}', please specify stream"
+msgstr "沒有為 {} 指定的設定檔,請指定設定檔。"
+
+#: dnf/module/exceptions.py:82
+#, fuzzy
+#| msgid "No repositories available"
+msgid "No such profile: {}. No profiles available"
+msgstr "沒有可用的軟體庫"
+
+#: dnf/module/exceptions.py:88
+#, fuzzy
+#| msgid "No profiles for module {}:{}"
+msgid "No profile to remove for '{}'"
+msgstr "沒有 {}:{} 模組的設定檔"
+
+#: dnf/module/module_base.py:35
 msgid ""
 "\n"
 "\n"
@@ -3734,7 +3806,7 @@ msgstr ""
 "\n"
 "提示:預設[d]、已啟用[e]、已停用[x]、已安裝[i]"
 
-#: dnf/module/module_base.py:34
+#: dnf/module/module_base.py:36
 msgid ""
 "\n"
 "\n"
@@ -3744,80 +3816,97 @@ msgstr ""
 "\n"
 "提示:[d] 預設、[e] 已啟用, [x] 已停用, [i] 已安裝, [a] 作用中"
 
-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421
-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543
+#: dnf/module/module_base.py:56 dnf/module/module_base.py:556
+#: dnf/module/module_base.py:615 dnf/module/module_base.py:681
 msgid "Ignoring unnecessary profile: '{}/{}'"
 msgstr "忽略不必要的設定檔:「{}/{}」"
 
-#: dnf/module/module_base.py:84
+#: 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}」引數符合項目皆未作用中"
 
-#: dnf/module/module_base.py:92
+#: 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}」模組"
 
-#: dnf/module/module_base.py:102
+#: dnf/module/module_base.py:104 dnf/module/module_base.py:214
 msgid ""
 "Unable to match profile for argument {}. Available profiles for '{}:{}': {}"
 msgstr "無法符合 {} 引數的設定檔。「{}:{}」可用設定檔:{}"
 
-#: dnf/module/module_base.py:106
+#: dnf/module/module_base.py:108 dnf/module/module_base.py:218
 msgid "Unable to match profile for argument {}"
 msgstr "無法符合 {} 引數的設定檔"
 
-#: dnf/module/module_base.py:118
+#: dnf/module/module_base.py:120
 msgid "No default profiles for module {}:{}. Available profiles: {}"
 msgstr "沒有 {}:{} 模組的預設設定檔。可用設定檔:{}"
 
-#: dnf/module/module_base.py:122
+#: dnf/module/module_base.py:124
 msgid "No profiles for module {}:{}"
 msgstr "沒有 {}:{} 模組的設定檔"
 
-#: dnf/module/module_base.py:129
+#: dnf/module/module_base.py:131
 msgid "Default profile {} not available in module {}:{}"
 msgstr "{} 預設設定檔無法在 {}:{} 模組使用"
 
-#: dnf/module/module_base.py:142
+#: dnf/module/module_base.py:144 dnf/module/module_base.py:247
 msgid "Installing module from Fail-Safe repository is not allowed"
 msgstr "不允許從防故障軟體庫安裝模組"
 
-#: dnf/module/module_base.py:159 dnf/module/module_base.py:193
-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355
-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417
-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539
+#: dnf/module/module_base.py:196
+#, fuzzy, python-brace-format
+#| 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}」引數符合項目皆未作用中"
+
+#: dnf/module/module_base.py:228
+#, fuzzy, python-brace-format
+#| msgid "Default profile {} not available in module {}:{}"
+msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'"
+msgstr "{} 預設設定檔無法在 {}:{} 模組使用"
+
+#: dnf/module/module_base.py:267
+msgid "No packages available to distrosync for package name '{}'"
+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
 msgid "Unable to resolve argument {}"
 msgstr "無法解析 {} 引數"
 
-#: dnf/module/module_base.py:160
-msgid "No match for package {}"
-msgstr "找不到符合的軟體包 {}"
-
-#: dnf/module/module_base.py:204
+#: dnf/module/module_base.py:321
 #, python-brace-format
 msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed"
 msgstr "不允許從 {1} 防故障軟體庫升級「{0}」模組"
 
-#: dnf/module/module_base.py:223 dnf/module/module_base.py:251
+#: dnf/module/module_base.py:340 dnf/module/module_base.py:368
 msgid "Unable to match profile in argument {}"
 msgstr "無法在 {} 引數中找到符合的設定檔"
 
-#: dnf/module/module_base.py:231
+#: dnf/module/module_base.py:348
 msgid "Upgrading module from Fail-Safe repository is not allowed"
 msgstr "不允許從防故障軟體庫升級模組"
 
-#: dnf/module/module_base.py:367
+#: dnf/module/module_base.py:422
+#, python-brace-format
 msgid ""
-"Only module name is required. Ignoring unneeded information in argument: "
-"'{}'"
+"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: '{}'"
 msgstr "只需要模組名稱。忽略引數中的非必要資訊:「{}」"
 
-#: dnf/package.py:298
-#, python-format
-msgid "%s: %s check failed: %s vs %s"
-msgstr "%s:%s 檢查失敗:%s 比對 %s"
+#: dnf/module/module_base.py:841
+msgid "No match for package {}"
+msgstr "找不到符合的軟體包 {}"
 
 #. empty file is invalid json format
 #: dnf/persistor.py:54
@@ -3853,16 +3942,16 @@ msgstr "解析檔案失敗:%s"
 msgid "Loaded plugins: %s"
 msgstr "已載入的外掛:%s"
 
-#: dnf/plugin.py:199
+#: dnf/plugin.py:211
 #, python-format
 msgid "Failed loading plugin \"%s\": %s"
 msgstr "無法載入「%s」插件:%s"
 
-#: dnf/plugin.py:231
+#: dnf/plugin.py:243
 msgid "No matches found for the following enable plugin patterns: {}"
 msgstr "找不到下述啟用之插件模式的符合項目:{}"
 
-#: dnf/plugin.py:235
+#: dnf/plugin.py:247
 msgid "No matches found for the following disable plugin patterns: {}"
 msgstr "找不到下述停用之插件模式的符合項目:{}"
 
@@ -3876,7 +3965,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 主機)… "
@@ -3891,10 +3980,25 @@ msgstr "正在啟用 %s 軟體庫"
 msgid "Added %s repo from %s"
 msgstr "已從 %s 增加 %s 軟體庫"
 
+#: dnf/rpm/miscutils.py:32
+#, python-format
+msgid "Using rpmkeys executable at %s to verify signatures"
+msgstr ""
+
+#: dnf/rpm/miscutils.py:66
+msgid "Cannot find rpmkeys executable to verify signatures."
+msgstr ""
+
 #: dnf/rpm/transaction.py:119
 msgid "Errors occurred during test transaction."
 msgstr "測試處理事項時發生錯誤。"
 
+#: dnf/sack.py:47
+msgid ""
+"allow_vendor_change is disabled. This option is currently not supported for "
+"downgrade and distro-sync commands"
+msgstr ""
+
 #. TRANSLATORS: This is for a single package currently being downgraded.
 #: dnf/transaction.py:80
 msgctxt "currently"
@@ -3941,164 +4045,210 @@ msgstr "執行小令稿"
 msgid "Preparing"
 msgstr "準備"
 
-#: dnf/transaction_sr.py:60
+#: dnf/transaction_sr.py:66
 #, python-brace-format
-msgid "Errors in \"{filename}\":"
+msgid ""
+"The following problems occurred while replaying the transaction from file "
+"\"{filename}\":"
 msgstr ""
 
-#: dnf/transaction_sr.py:70
-#, python-brace-format
-msgid "Error in \"{filename}\": {error}"
-msgstr ""
+#: dnf/transaction_sr.py:68
+#, fuzzy
+#| msgid "Errors occurred during transaction."
+msgid "The following problems occurred while running a transaction:"
+msgstr "在處理事項時發生錯誤。"
 
-#: dnf/transaction_sr.py:87
+#: dnf/transaction_sr.py:89
 #, python-brace-format
 msgid "Invalid major version \"{major}\", number expected."
 msgstr ""
 
-#: dnf/transaction_sr.py:95
+#: dnf/transaction_sr.py:97
 #, python-brace-format
 msgid "Invalid minor version \"{minor}\", number expected."
 msgstr ""
 
-#: dnf/transaction_sr.py:101
+#: dnf/transaction_sr.py:103
 #, python-brace-format
 msgid ""
 "Incompatible major version \"{major}\", supported major version is "
 "\"{major_supp}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:244
+#: dnf/transaction_sr.py:224
+msgid ""
+"Conflicting TransactionReplay arguments have been specified: filename, data"
+msgstr ""
+
+#: dnf/transaction_sr.py:265
 #, python-brace-format
 msgid "Unexpected type of \"{id}\", {exp} expected."
 msgstr ""
 
-#: dnf/transaction_sr.py:250
+#: dnf/transaction_sr.py:271
 #, python-brace-format
 msgid "Missing key \"{key}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:263
+#: dnf/transaction_sr.py:285
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an rpm."
 msgstr ""
 
-#: dnf/transaction_sr.py:267
+#: 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:275
+#: dnf/transaction_sr.py:297
 #, python-brace-format
 msgid "Cannot parse NEVRA for package \"{nevra}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:286
+#: dnf/transaction_sr.py:321
 #, python-brace-format
 msgid "Cannot find rpm nevra \"{nevra}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:301
+#: dnf/transaction_sr.py:336
 #, fuzzy, python-brace-format
 #| msgid "Package %s is already installed."
 msgid "Package \"{na}\" is already installed for action \"{action}\"."
 msgstr "已安裝 %s 軟體包。"
 
-#: dnf/transaction_sr.py:311
+#: dnf/transaction_sr.py:345
 #, python-brace-format
 msgid ""
 "Package nevra \"{nevra}\" not available in repositories for action "
 "\"{action}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:322
+#: dnf/transaction_sr.py:356
 #, python-brace-format
 msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:336
+#: 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:343
+#: dnf/transaction_sr.py:377
 #, fuzzy, python-format
 #| msgid "Module or Group '%s' is not available."
 msgid "Group id '%s' is not available."
 msgstr "無法使用「%s」模組或群組。"
 
-#: dnf/transaction_sr.py:364
+#: dnf/transaction_sr.py:398
 #, python-brace-format
 msgid "Missing object key \"{key}\" in groups.packages."
 msgstr ""
 
-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387
+#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421
 #, fuzzy, python-format
 #| msgid "Module or Group '%s' is not installed."
 msgid "Group id '%s' is not installed."
 msgstr "未安裝「%s」模組或群組。"
 
-#: dnf/transaction_sr.py:398
+#: dnf/transaction_sr.py:432
 #, fuzzy, python-format
 #| msgid "Environment '%s' is not available."
 msgid "Environment id '%s' is not available."
 msgstr "無法使用「%s」環境。"
 
-#: dnf/transaction_sr.py:422
+#: dnf/transaction_sr.py:456
 #, python-brace-format
 msgid ""
 "Invalid value \"{group_type}\" of environments.groups.group_type, only "
 "\"mandatory\" or \"optional\" is supported."
 msgstr ""
 
-#: dnf/transaction_sr.py:430
+#: dnf/transaction_sr.py:464
 #, python-brace-format
 msgid "Missing object key \"{key}\" in environments.groups."
 msgstr ""
 
-#: dnf/transaction_sr.py:508
+#: dnf/transaction_sr.py:542
 #, python-brace-format
 msgid "Unexpected value of group action \"{action}\" for group \"{group}\"."
 msgstr ""
 
-#: dnf/transaction_sr.py:513
+#: dnf/transaction_sr.py:547
 #, python-brace-format
 msgid "Missing object key \"{key}\" in a group."
 msgstr ""
 
-#: dnf/transaction_sr.py:537
+#: 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:542
+#: dnf/transaction_sr.py:576
 #, python-brace-format
 msgid "Missing object key \"{key}\" in an environment."
 msgstr ""
 
-#: dnf/transaction_sr.py:581
+#: 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:391 dnf/util.py:393
+#: dnf/util.py:419 dnf/util.py:421
 msgid "Problem"
 msgstr "問題"
 
-#: dnf/util.py:444
+#: dnf/util.py:472
 msgid "TransactionItem not found for key: {}"
 msgstr "找不到下述鍵的 TransactionItem:{}"
 
-#: dnf/util.py:454
+#: dnf/util.py:482
 msgid "TransactionSWDBItem not found for key: {}"
 msgstr "找不到下述鍵的 TransactionSWDBItem:{}"
 
-#: dnf/util.py:457
+#: dnf/util.py:485
 msgid "Errors occurred during transaction."
 msgstr "在處理事項時發生錯誤。"
 
+#: dnf/util.py:621
+msgid "Reinstalled"
+msgstr "已重裝"
+
+#: dnf/util.py:622
+msgid "Skipped"
+msgstr "跳過"
+
+#: dnf/util.py:623
+msgid "Removed"
+msgstr "已移除"
+
+#: dnf/util.py:626
+msgid "Failed"
+msgstr "失敗"
+
+#~ msgid "skipping."
+#~ msgstr "略過。"
+
+#~ msgid "%s: %s check failed: %s vs %s"
+#~ msgstr "%s:%s 檢查失敗:%s 比對 %s"
+
+#~ msgid "Action not handled: {}"
+#~ msgstr "未處理動作:{}"
+
+#~ msgid "no package matched"
+#~ msgstr "沒有符合的軟體包"
+
+#~ msgid "Not found given transaction ID"
+#~ msgstr "找不到提供的處理事項識別碼"
+
+#~ msgid "Undoing transaction {}, from {}"
+#~ msgstr "取消變更處理事項 {},從 {}"
+
 #~ msgid "format for displaying found packages"
 #~ msgstr "顯示找到的軟體包格式"
 
@@ -4109,5 +4259,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