chantra / rpms / dnf

Forked from rpms/dnf 2 years ago
Clone
Blob Blame History Raw
From 9895b138f231c380a90ebace39dc3a9c44e00d46 Mon Sep 17 00:00:00 2001
From: Marek Blaha <mblaha@redhat.com>
Date: Mon, 13 Sep 2021 09:45:20 +0200
Subject: [PATCH] Update translations

---
 po/fr.po    | 1283 +++++++++++++++++--------------
 po/ja.po    | 1345 ++++++++++++++++++---------------
 po/ko.po    | 2101 +++++++++++++++++++++++++++------------------------
 po/zh_CN.po | 1311 +++++++++++++++++---------------
 4 files changed, 3225 insertions(+), 2815 deletions(-)

diff --git a/po/fr.po b/po/fr.po
index 4e883335..44843ed7 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -15,23 +15,25 @@
 # 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.
 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: 2021-08-11 16:00+0200\n"
+"PO-Revision-Date: 2021-09-06 17:24+0000\n"
+"Last-Translator: Sundeep Anand <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.8\n"
 
 #: dnf/automatic/emitter.py:32
 #, python-format
@@ -78,7 +80,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 +90,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 +118,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."
 
-#: dnf/base.py:443
+#: dnf/base.py:512
 msgid ""
 "The downloaded packages were saved in cache until the next successful "
 "transaction."
@@ -200,59 +203,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."
@@ -263,151 +266,151 @@ msgstr[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:1725
 #, 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:1748 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:1766
 msgid "No groups marked for removal."
 msgstr "Aucun groupe marqué pour suppression."
 
-#: dnf/base.py:1710
+#: dnf/base.py:1800
 msgid "No group marked for upgrade."
 msgstr "Aucun groupe marqué pour mise à jour."
 
-#: dnf/base.py:1925
+#: dnf/base.py:2014
 #, 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:2016 dnf/base.py:2035 dnf/base.py:2048 dnf/base.py:2075
+#: dnf/base.py:2128 dnf/base.py:2136 dnf/base.py:2270 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:2023
 #, 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."
 
-#: dnf/base.py:1957
+#: dnf/base.py:2046
 #, 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:2061
 #, 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:2072
 #, 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:2082
 #, python-format
 msgid ""
 "The same or higher version of %s is already installed, cannot update it."
@@ -415,127 +418,113 @@ 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:2125 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:2131
 #, 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:2156
 #, 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:2174 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:2189 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:2277 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:2282
 #, 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:2382
 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:2384
 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:2388
 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:2390
 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:2411
 #, 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:2419
 #, python-format
 msgid ". Failing package is: %s"
 msgstr ". Le paquet en erreur est : %s"
 
-#: dnf/base.py:2328
+#: dnf/base.py:2420
 #, 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:2432
 #, 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:2468
 msgid "The key has been approved."
 msgstr "La clef a été approuvée."
 
-#: dnf/base.py:2376
+#: dnf/base.py:2471
 msgid "The key has been rejected."
 msgstr "La clef a été rejetée."
 
-#: dnf/base.py:2409
+#: dnf/base.py:2504
 #, 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:2506
 msgid "Key imported successfully"
 msgstr "La clé a bien été importée"
 
-#: dnf/base.py:2415
+#: dnf/base.py:2510
 msgid "Didn't install any keys"
 msgstr "Toutes les clés n’ont pas été installées"
 
-#: dnf/base.py:2418
+#: dnf/base.py:2513
 #, python-format
 msgid ""
 "The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
@@ -544,28 +533,28 @@ 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"
 "Vérifiez que les URL des clés pour ce dépôt soient correctes."
 
-#: dnf/base.py:2429
+#: dnf/base.py:2524
 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:2577
 msgid "  * Maybe you meant: {}"
 msgstr "  * Peut-être vouliez-vous dire : {}"
 
-#: dnf/base.py:2514
+#: dnf/base.py:2609
 msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
 msgstr "Le paquet \"{}\" du dépôt local \"{}\" a une somme de contrôle incorrecte"
 
-#: dnf/base.py:2517
+#: dnf/base.py:2612
 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:2615
 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:2618
 msgid ""
 "Some packages have invalid cache, but cannot be downloaded due to \"--"
 "cacheonly\" option"
@@ -573,29 +562,29 @@ msgstr ""
 "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:2636 dnf/base.py:2656
 msgid "No match for argument"
 msgstr "Aucune correspondance pour le paramètre"
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2644 dnf/base.py:2664
 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:2646
 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:2662
 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:2709
 #, python-format
 msgid "Package %s is already installed."
 msgstr "Le paquet %s est déjà installé."
@@ -616,8 +605,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"
@@ -650,21 +639,21 @@ msgstr ""
 "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,23 +662,23 @@ 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."
@@ -697,91 +686,70 @@ msgstr ""
 "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)."
@@ -789,12 +757,12 @@ 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 +771,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,7 +780,7 @@ 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."
@@ -820,7 +788,7 @@ msgstr ""
 "--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 +796,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 +805,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 +817,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 "
 
@@ -924,38 +892,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 +961,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 +1199,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 +1231,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."
 
@@ -1385,16 +1356,16 @@ 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"
@@ -1403,7 +1374,7 @@ 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,7 +1383,34 @@ 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>'."
@@ -1420,7 +1418,7 @@ msgstr ""
 "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 +1426,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 +1469,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}"
@@ -1522,7 +1514,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,7 +1523,7 @@ 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: '{}'"
@@ -1539,83 +1531,87 @@ 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 : « {} »"
 
-#: 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"
 
@@ -2133,22 +2129,22 @@ 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"
 
@@ -2291,16 +2287,16 @@ msgstr ""
 "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"
 
@@ -2497,8 +2493,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é"
 
@@ -2862,13 +2858,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 +2872,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 +2912,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 +2945,312 @@ 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"
 
-#: 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"
 
-#: 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 +3259,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 +3272,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 +3299,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     :"
 
-#: 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"
@@ -3677,7 +3653,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 +3678,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 +3726,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 +3772,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 +3793,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 "
@@ -3878,7 +3872,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 :"
@@ -3915,7 +3909,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 +3959,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,82 +3969,105 @@ 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 « "
+"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 : {}"
 
-#: 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: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 ""
+"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 ""
+"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: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"
 
-#: 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 ""
+"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: "
 "'{}'"
@@ -4018,10 +4075,9 @@ 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 +4088,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,17 +4113,17 @@ 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 "
@@ -4098,10 +4154,32 @@ 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:35
+#, python-brace-format
+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}."
+
+#: dnf/rpm/miscutils.py:39
+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,27 +4226,31 @@ 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 "
@@ -4177,137 +4259,192 @@ msgstr ""
 "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}\"."
 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}\"."
 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}\"."
 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."
 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 "%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"
 
diff --git a/po/ja.po b/po/ja.po
index 6435271c..887cd57c 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,21 @@
 # Julien Humbert <julroy67@gmail.com>, 2020.
 # Casey Jones <nahareport@yahoo.com>, 2020.
 # Hajime Taira <htaira@pantora.net>, 2020.
+# Sundeep Anand <suanand@redhat.com>, 2021.
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-05 09:18-0400\n"
-"PO-Revision-Date: 2020-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: 2021-08-11 16:00+0200\n"
+"PO-Revision-Date: 2021-09-06 17:24+0000\n"
+"Last-Translator: Sundeep Anand <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.8\n"
 
 #: dnf/automatic/emitter.py:32
 #, python-format
@@ -45,7 +46,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 +83,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 +93,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 +106,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,388 +120,374 @@ 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 接続で実行する際、メタデータタイマーキャッシュは無効化されました。"
 
-#: 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 から取得したメタデータを使用中"
+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 "設定ファイルの 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%% がキャッシュされていました)"
 
-#: 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 "グループパッケージ  \"{}\" に一致するものはありません"
+msgstr "グループパッケージ \"{}\" に一致するものはありません"
 
-#: dnf/base.py:1635
+#: dnf/base.py:1725
 #, 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:1748 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:1766
 msgid "No groups marked for removal."
 msgstr "削除対象のパッケージはありません。"
 
-#: dnf/base.py:1710
+#: dnf/base.py:1800
 msgid "No group marked for upgrade."
 msgstr "アップグレード対象のグループはありません。"
 
-#: dnf/base.py:1925
+#: dnf/base.py:2014
 #, 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:2016 dnf/base.py:2035 dnf/base.py:2048 dnf/base.py:2075
+#: dnf/base.py:2128 dnf/base.py:2136 dnf/base.py:2270 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:2023
 #, python-format
 msgid "Package %s of lower version already installed, cannot downgrade it."
 msgstr "下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできません。"
 
-#: dnf/base.py:1957
+#: dnf/base.py:2046
 #, python-format
 msgid "Package %s not installed, cannot reinstall it."
 msgstr "パッケージ %s はインストールされていないのでの、再インストールできません。"
 
-#: dnf/base.py:1972
+#: dnf/base.py:2061
 #, python-format
 msgid "File %s is a source package and cannot be updated, ignoring."
 msgstr "ファイル %s はソースパッケージで更新できません。無視します。"
 
-#: dnf/base.py:1978
+#: dnf/base.py:2072
 #, python-format
 msgid "Package %s not installed, cannot update it."
 msgstr "パッケージ %s はインストールされていないので、更新できません。"
 
-#: dnf/base.py:1987
+#: dnf/base.py:2082
 #, 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:2125 dnf/cli/commands/reinstall.py:81
 #, python-format
 msgid "Package %s available, but not installed."
 msgstr "パッケージ %s は利用可能ですが、インストールされていません。"
 
-#: dnf/base.py:2032
+#: dnf/base.py:2131
 #, 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:2156
 #, python-format
 msgid "No package %s installed."
 msgstr "パッケージ %s はインストールされていません。"
 
-#: dnf/base.py:2075 dnf/cli/commands/install.py:136
+#: dnf/base.py:2174 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:2189 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:2277 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:2282
 #, 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:2382
 msgid "No security updates needed, but {} update available"
 msgstr "セキュリティー更新は必要ありませんが、{} 更新が利用可能です"
 
-#: dnf/base.py:2292
+#: dnf/base.py:2384
 msgid "No security updates needed, but {} updates available"
 msgstr "セキュリティー更新は必要ありませんが、{} 更新が利用可能です"
 
-#: dnf/base.py:2296
+#: dnf/base.py:2388
 msgid "No security updates needed for \"{}\", but {} update available"
 msgstr "\"{}\" のセキュリティー更新は必要ありませんが、{} 更新が利用可能です"
 
-#: dnf/base.py:2298
+#: dnf/base.py:2390
 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:2411
 #, python-format
 msgid "Unable to retrieve a key for a commandline package: %s"
-msgstr ""
+msgstr "コマンドラインパッケージのキーを取得できません: %s"
 
-#: dnf/base.py:2327
+#: dnf/base.py:2419
 #, python-format
 msgid ". Failing package is: %s"
 msgstr ". 失敗したパッケージは: %s"
 
-#: dnf/base.py:2328
+#: dnf/base.py:2420
 #, python-format
 msgid "GPG Keys are configured as: %s"
 msgstr "GPG 鍵が設定されています: %s"
 
-#: dnf/base.py:2340
+#: dnf/base.py:2432
 #, python-format
 msgid "GPG key at %s (0x%s) is already installed"
 msgstr "%s (0x%s) の GPG 鍵はインストール済みです"
 
-#: dnf/base.py:2373
+#: dnf/base.py:2468
 msgid "The key has been approved."
 msgstr "鍵が承認されました。"
 
-#: dnf/base.py:2376
+#: dnf/base.py:2471
 msgid "The key has been rejected."
 msgstr "鍵が拒否されました。"
 
-#: dnf/base.py:2409
+#: dnf/base.py:2504
 #, python-format
 msgid "Key import failed (code %d)"
 msgstr "鍵のインポートに失敗しました (コード: %d)"
 
-#: dnf/base.py:2411
+#: dnf/base.py:2506
 msgid "Key imported successfully"
 msgstr "鍵のインポートに成功しました"
 
-#: dnf/base.py:2415
+#: dnf/base.py:2510
 msgid "Didn't install any keys"
 msgstr "鍵を 1 つもインストールしませんでした"
 
-#: dnf/base.py:2418
+#: dnf/base.py:2513
 #, python-format
 msgid ""
 "The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
@@ -509,49 +496,49 @@ msgstr ""
 "\"%s\" リポジトリーに一覧表示されている GPG 鍵はインストール済みですが、このパッケージには適切ではありません。\n"
 "正しい鍵 URL がこのリポジトリー用に設定されているか確認してください。"
 
-#: dnf/base.py:2429
+#: dnf/base.py:2524
 msgid "Import of key(s) didn't help, wrong key(s)?"
 msgstr "鍵をインポートしても役に立ちませんでした。鍵が間違っていませんか?"
 
-#: dnf/base.py:2482
+#: dnf/base.py:2577
 msgid "  * Maybe you meant: {}"
 msgstr "  * おそらく: {}"
 
-#: dnf/base.py:2514
+#: dnf/base.py:2609
 msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
 msgstr "ローカルリポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません"
 
-#: dnf/base.py:2517
+#: dnf/base.py:2612
 msgid "Some packages from local repository have incorrect checksum"
 msgstr "ローカルリポジトリーのいくつかのパッケージのチェックサムは正しくありません"
 
-#: dnf/base.py:2520
+#: dnf/base.py:2615
 msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
 msgstr "リポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません"
 
-#: dnf/base.py:2523
+#: dnf/base.py:2618
 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:2636 dnf/base.py:2656
 msgid "No match for argument"
 msgstr "一致した引数がありません"
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2644 dnf/base.py:2664
 msgid "All matches were filtered out by exclude filtering for argument"
-msgstr "すべての検索結果は引数の除外フィルタリングに一致しません(filter out)"
+msgstr "すべての検索結果は引数の除外フィルタリングに一致しません (filter out)"
 
-#: dnf/base.py:2551
+#: dnf/base.py:2646
 msgid "All matches were filtered out by modular filtering for argument"
-msgstr "すべての検出結果は引数のモジュラーフィルタリングに一致しません(filter out)"
+msgstr "すべての検出結果は引数のモジュラーフィルタリングに一致しません (filter out)"
 
-#: dnf/base.py:2567
+#: dnf/base.py:2662
 msgid "All matches were installed from a different repository for argument"
 msgstr "すべての検索結果は引数に対し異なるレポジトリからインストールされたものです"
 
-#: dnf/base.py:2583
+#: dnf/base.py:2709
 #, python-format
 msgid "Package %s is already installed."
 msgstr "パッケージ %s は既にインストールされています。"
@@ -571,8 +558,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"
@@ -603,44 +590,44 @@ 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."
@@ -648,116 +635,95 @@ 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:425 dnf/cli/commands/group.py:395
+#, python-format
+msgid "No package %s available."
+msgstr "利用可能なパッケージ %s はありません。"
 
-#: dnf/cli/cli.py:428
+#: 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ユーザー)で実行しなければいけません。"
 
-#: 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)'\""
 
-#: 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."
@@ -765,7 +731,7 @@ 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."
@@ -773,7 +739,7 @@ msgstr ""
 "--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)"
@@ -781,38 +747,38 @@ 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 に含めます "
 
@@ -864,38 +830,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 +899,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} コマンドでヘルプ表示"
@@ -1167,8 +1133,10 @@ 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 +1162,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 +1243,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 ""
+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 ""
+msgstr "replay コマンドの場合は、利用できないパッケージや、依存関係が不足しているパッケージをスキップ"
 
 #: dnf/cli/commands/history.py:94
 msgid ""
@@ -1304,41 +1272,64 @@ 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 を取り消すことはできません。取り消すことで、パッケージデータベースに矛盾が生じます。"
 
-#: 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 "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 +1337,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 +1345,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 +1386,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}"
@@ -1449,7 +1429,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 +1438,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: '{}'"
 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 "{} {} {}: 引数が足りません"
 
@@ -1843,6 +1827,8 @@ msgid ""
 "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,7 +1839,7 @@ 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 ""
@@ -1977,7 +1963,7 @@ msgid ""
 msgstr ""
 "オプションの '--resolve' は、'--conflicts'、'--depends'、'--enhances'、'--provides'、'--"
 "recommends'、'--requires'、'--requires-pre'、'--suggests' または '--supplements' "
-"オプションのいずれか 1 つと使用する必要があります。"
+"オプションのいずれか 1 つと使用する必要があります"
 
 #: dnf/cli/commands/repoquery.py:305
 msgid ""
@@ -1986,7 +1972,7 @@ msgid ""
 "--resolve'"
 msgstr ""
 "オプションの '--recursive' は、'--whatrequires <REQ>' (オプションでは '--exactdeps' ではなく、'"
-"--alldeps' と共に使用) または '--requires <REQ> --resolve' と共に使用する必要があります。"
+"--alldeps' と共に使用) または '--requires <REQ> --resolve' と共に使用する必要があります"
 
 #: dnf/cli/commands/repoquery.py:312
 msgid "argument {} requires --whatrequires or --whatdepends option"
@@ -2027,22 +2013,22 @@ 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"
 
@@ -2185,16 +2171,16 @@ msgstr ""
 "実行                      トランザクションセットの解決および実行\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 "シェルを終了します"
 
@@ -2385,8 +2371,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 "インストール済み"
 
@@ -2699,7 +2685,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 +2695,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 +2709,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 +2749,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 +2782,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 +3092,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 +3105,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 +3132,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"
@@ -3512,16 +3478,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 +3498,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 +3553,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 +3594,40 @@ msgstr "repo %s: 0x%s はインポート済みです"
 #: dnf/crypto.py:115
 #, python-format
 msgid "repo %s: imported key 0x%s."
-msgstr "repo %s: インポート済みの鍵 0x%s。"
+msgstr "repo %s: インポート済みのキー 0x%s。"
+
+#: dnf/crypto.py:145
+msgid "Verified using DNS record with DNSSEC signature."
+msgstr "DNSSEC 署名付きの DNS レコードを使用して検証しました。"
+
+#: dnf/crypto.py:147
+msgid "NOT verified using DNS record."
+msgstr "DNS レコードを使用して検証されませんでした。"
 
-#: dnf/db/group.py:293
+#: 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 "
@@ -3710,7 +3691,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] "モジュラーの依存に関する問題:"
@@ -3744,7 +3725,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"
@@ -3754,7 +3775,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 +3785,98 @@ 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}' に一致するものはすべて非アクティブです"
 
-#: 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
+#, 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}' アップグレードは許可されていません"
 
-#: 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 ""
+"引数 '{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 +3887,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 +3912,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 "以下無効プラグインパターンが見つかりません: {}"
 
@@ -3911,10 +3950,29 @@ msgstr "%s リポジトリーの有効化"
 msgid "Added %s repo from %s"
 msgstr "%s から %s repo を追加しました"
 
+#: dnf/rpm/miscutils.py:35
+#, python-brace-format
+msgid ""
+"Using rpmkeys executable from {path} to verify signature for package: "
+"{package}."
+msgstr "{path} から実行可能ファイル rpmkeys を使用して、パッケージの署名を検証します: {package}。"
+
+#: dnf/rpm/miscutils.py:39
+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 +4019,203 @@ msgstr "scriptletの実行中"
 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:224
+msgid ""
+"Conflicting TransactionReplay arguments have been specified: filename, data"
+msgstr "競合する TransactionReplay 引数が指定されています。filename, data"
 
-#: dnf/transaction_sr.py:244
+#: 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 ""
+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 ""
+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 ""
+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 ""
+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 ""
+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 ""
+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 "%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 "見つかったパッケージを表示する形式"
 
diff --git a/po/ko.po b/po/ko.po
index 449f6130..78e18309 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,68 +1,68 @@
 # 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.
 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: 2021-08-11 16:00+0200\n"
+"PO-Revision-Date: 2021-08-12 16:04+0000\n"
+"Last-Translator: simmon <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.7.2\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 +72,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 +99,428 @@ 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:1725
 #, 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:1748 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:1766
 msgid "No groups marked for removal."
-msgstr "제거할 패키지 그룹이 없습니다"
+msgstr "제거할 꾸러미 그룹이 없습니다."
 
-#: dnf/base.py:1710
+#: dnf/base.py:1800
 msgid "No group marked for upgrade."
-msgstr "업그레이드용으로 표시된 그룹이 없습니다."
+msgstr "향상을 위해 표시된 그룹이 없습니다."
 
-#: dnf/base.py:1925
+#: dnf/base.py:2014
 #, 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:2016 dnf/base.py:2035 dnf/base.py:2048 dnf/base.py:2075
+#: dnf/base.py:2128 dnf/base.py:2136 dnf/base.py:2270 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:2023
 #, python-format
 msgid "Package %s of lower version already installed, cannot downgrade it."
-msgstr "%s 패키지의 하위 버전이 이미 설치되어 있으므로 다운 그레이드할 수 없습니다."
+msgstr "%s 꾸러미의 하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다."
 
-#: dnf/base.py:1957
+#: dnf/base.py:2046
 #, python-format
 msgid "Package %s not installed, cannot reinstall it."
-msgstr "%s 패키지가 설치되어 있지 않기 때문에 다시 설치할 수 없습니다."
+msgstr "꾸러미 %s가 설치되지 않아서, 다시 설치 할 수 없습니다."
 
-#: dnf/base.py:1972
+#: dnf/base.py:2061
 #, 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:2072
 #, python-format
 msgid "Package %s not installed, cannot update it."
-msgstr "%s 패키지가 설치되어 있지 않기 때문에 업데이트할 수 없습니다."
+msgstr "%s 꾸러미가 설치되어 있지 않기 때문에 최신화 할 수 없습니다."
 
-#: dnf/base.py:1987
+#: dnf/base.py:2082
 #, 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:2125 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:2131
 #, 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:2156
 #, python-format
 msgid "No package %s installed."
-msgstr "%s 패키지는 설치되어 있지 않습니다"
+msgstr "%s 꾸러미는 설치되어 있지 않습니다."
 
-#: dnf/base.py:2075 dnf/cli/commands/install.py:136
+#: dnf/base.py:2174 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:2189 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:2277 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:2282
 #, python-format
 msgid "Package %s of lowest version already installed, cannot downgrade it."
-msgstr "%s 패키지의 최하위 버전이 이미 설치되어 있으므로 다운 그레이드할 수 없습니다."
-
-#: dnf/base.py:2242
-msgid "Action not handled: {}"
-msgstr "작업이 처리되지 않았습니다: {}"
+msgstr "%s 꾸러미의 최하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다."
 
-#: 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:2382
 msgid "No security updates needed, but {} update available"
-msgstr "보안 업데이트가 필요하지 않지만 {} 업데이트가 가능합니다"
+msgstr "보안 최신화가 필요하지 않지만, {} 최신화가 가능합니다"
 
-#: dnf/base.py:2292
+#: dnf/base.py:2384
 msgid "No security updates needed, but {} updates available"
-msgstr "보안 업데이트는 필요하지 않지만 {} 업데이트가 가능합니다"
+msgstr "보안 최신화는 필요하지 않지만 {} 최신화는 가능합니다"
 
-#: dnf/base.py:2296
+#: dnf/base.py:2388
 msgid "No security updates needed for \"{}\", but {} update available"
-msgstr "\"{}\"에는 보안 업데이트가 필요하지 않지만 {} 업데이트가 가능합니다"
+msgstr "\"{}\"에는 보안 최신화가 필요하지 않지만 {} 최신화가 가능합니다"
 
-#: dnf/base.py:2298
+#: dnf/base.py:2390
 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:2411
 #, python-format
 msgid "Unable to retrieve a key for a commandline package: %s"
-msgstr ""
+msgstr "명령줄 꾸러미: %s 대한 키를 검색 할 수 없습니다"
 
-#: dnf/base.py:2327
+#: dnf/base.py:2419
 #, python-format
 msgid ". Failing package is: %s"
-msgstr "실패한 패키지는 다음과 같습니다. %s"
+msgstr "실패한 꾸러미는 다음과 같습니다. %s"
 
-#: dnf/base.py:2328
+#: dnf/base.py:2420
 #, python-format
 msgid "GPG Keys are configured as: %s"
 msgstr "GPG 키는 다음과 같이 설정되어 있습니다. %s"
 
-#: dnf/base.py:2340
+#: dnf/base.py:2432
 #, python-format
 msgid "GPG key at %s (0x%s) is already installed"
 msgstr "%s (0x%s)의 GPG 키가 이미 설치되어 있습니다"
 
-#: dnf/base.py:2373
+#: dnf/base.py:2468
 msgid "The key has been approved."
 msgstr "키가 승인되었습니다."
 
-#: dnf/base.py:2376
+#: dnf/base.py:2471
 msgid "The key has been rejected."
 msgstr "키가 거부되었습니다."
 
-#: dnf/base.py:2409
+#: dnf/base.py:2504
 #, python-format
 msgid "Key import failed (code %d)"
 msgstr "키 가져 오기에 실패했습니다 (코드 %d)"
 
-#: dnf/base.py:2411
+#: dnf/base.py:2506
 msgid "Key imported successfully"
 msgstr "키 가져오기에 성공했습니다"
 
-#: dnf/base.py:2415
+#: dnf/base.py:2510
 msgid "Didn't install any keys"
 msgstr "키를 하나도 설치하지 못했습니다"
 
-#: dnf/base.py:2418
+#: dnf/base.py:2513
 #, python-format
 msgid ""
 "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:2524
 msgid "Import of key(s) didn't help, wrong key(s)?"
 msgstr "가져온 키에 문제가 있습니다. 잘못된 키입니까?"
 
-#: dnf/base.py:2482
+#: dnf/base.py:2577
 msgid "  * Maybe you meant: {}"
-msgstr "  * 다음을 의미할 수도 있습니다: {}"
+msgstr "  * 다음을 의미 할 수도 있습니다: {}"
 
-#: dnf/base.py:2514
+#: dnf/base.py:2609
 msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
-msgstr "로컬 저장소 \"{}\"의 \"{}\"패키지에 잘못된 체크섬이 있습니다"
+msgstr "로컬 저장소 \"{}\"의 \"{}\"꾸러미에 잘못된 체크섬이 있습니다"
 
-#: dnf/base.py:2517
+#: dnf/base.py:2612
 msgid "Some packages from local repository have incorrect checksum"
-msgstr "로컬 저장소의 일부 패키지에 잘못된 체크섬이 있습니다"
+msgstr "로컬 저장소의 일부 꾸러미에 잘못된 체크섬이 있습니다"
 
-#: dnf/base.py:2520
+#: dnf/base.py:2615
 msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
-msgstr "저장소 \"{}\"의 패키지 \"{}\"에 잘못된 체크섬이 있습니다"
+msgstr "저장소 \"{}\"의 꾸러미 \"{}\"에 잘못된 체크섬이 있습니다"
 
-#: dnf/base.py:2523
+#: dnf/base.py:2618
 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:2636 dnf/base.py:2656
 msgid "No match for argument"
 msgstr "일치하는 인수가 없습니다"
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2644 dnf/base.py:2664
 msgid "All matches were filtered out by exclude filtering for argument"
 msgstr "모든 일치 항목이 인수의 제외 필터로 필터링되었습니다"
 
-#: dnf/base.py:2551
+#: dnf/base.py:2646
 msgid "All matches were filtered out by modular filtering for argument"
 msgstr "모든 일치 항목이 인수의 모듈식 필터로 필터링되었습니다"
 
-#: dnf/base.py:2567
+#: dnf/base.py:2662
 msgid "All matches were installed from a different repository for argument"
 msgstr "모든 일치 항목이 인수의 다른 리포지토리에서 설치되었습니다"
 
-#: dnf/base.py:2583
+#: dnf/base.py:2709
 #, python-format
 msgid "Package %s is already installed."
-msgstr "패키지 %s이/가 이미 설치되어 있습니다."
+msgstr "꾸러미 %s가 이미 설치되어 있습니다."
 
 #: dnf/cli/aliases.py:96
 #, python-format
@@ -551,8 +537,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 +550,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 +569,44 @@ 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"
+"구성 선택(옵션) 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,117 +614,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 "더 이상 사용되지 않는 패키지"
+msgstr "더 이상 사용되지 않는 꾸러미"
 
-#: dnf/cli/cli.py:393
+#: dnf/cli/cli.py:399
 msgid "No packages marked for distribution synchronization."
-msgstr "배포 동기화가 필요한 패키지가 없습니다."
+msgstr "배포 동기화가 필요한 꾸러미가 없습니다."
+
+#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395
+#, python-format
+msgid "No package %s available."
+msgstr "가용한 꾸러미(package) %s가 없습니다."
 
-#: dnf/cli/cli.py:428
+#: 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 사용자로 실행)."
+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} 플러그인 명령일 수 있지만 플러그인 로딩은 현재 비활성화되어 있습니다."
 
-#: 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."
@@ -746,7 +711,7 @@ 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."
@@ -754,7 +719,7 @@ msgstr ""
 "--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)"
@@ -762,38 +727,38 @@ msgstr ""
 "경고: 활성화된 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 "리포지토리에 포함 "
 
@@ -823,17 +788,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 +808,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 +869,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 +1034,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 +1058,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 +1087,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 +1099,7 @@ msgstr "데이터 정리 중:  "
 
 #: dnf/cli/commands/clean.py:111
 msgid "Cache was expired"
-msgstr "캐시가 만료되었습니다"
+msgstr "캐쉬가 만료되었습니다"
 
 #: dnf/cli/commands/clean.py:115
 #, python-format
@@ -1147,24 +1113,26 @@ 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 +1142,220 @@ 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"
-msgstr ""
+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"
-msgstr ""
+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 트랜잭션을 취소할 수 없습니다. 취소하면 패키지 데이터베이스가 일치하지 않게 됩니다."
+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: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:222
+#: 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 +1366,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 +1396,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 +1406,135 @@ 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 "모듈 이름, 스트림, 아키텍처 또는 프로파일만 사용됩니다. '{}'인수에서 불필요한 정보는 무시하십시오"
+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:280
+msgid "switch a module to a stream and distrosync rpm packages"
+msgstr "모듈을 스트림과 distrosync rpm 꾸러미로 전환합니다"
 
-#: dnf/cli/commands/module.py:277
+#: 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 +1578,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 +1590,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 +1679,25 @@ 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 +1715,7 @@ 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 +1727,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 +1757,19 @@ 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,27 +1779,27 @@ 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
@@ -1822,6 +1807,8 @@ msgid ""
 "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 +1818,65 @@ 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 +1885,49 @@ 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"
@@ -1962,8 +1949,8 @@ msgid ""
 "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,7 +1958,7 @@ 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
@@ -1986,15 +1973,15 @@ msgstr ""
 "사용법: {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,22 +1991,22 @@ 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"
 
@@ -2034,18 +2021,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 +2097,7 @@ msgid ""
 "    resolve the transaction set"
 msgstr ""
 "{}\n"
-"    트랜잭션 집합을 분석합니다"
+" 연결 집합을 분석합니다"
 
 #: dnf/cli/commands/shell.py:195
 msgid ""
@@ -2120,9 +2107,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 +2117,7 @@ msgid ""
 "    run the transaction"
 msgstr ""
 "{}\n"
-"    트랜잭션을 실행합니다."
+"연결을 실행합니다"
 
 #: dnf/cli/commands/shell.py:205
 msgid ""
@@ -2154,24 +2141,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 +2189,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 +2251,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 +2267,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 +2311,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 +2323,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 +2351,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 +2366,17 @@ 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 +2388,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."
@@ -2497,7 +2484,7 @@ 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 +2492,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 +2516,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 +2532,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"
@@ -2588,7 +2575,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 +2585,7 @@ 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 +2613,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 +2675,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 +2689,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 +2729,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 "취약한 종속 꾸러미 설치 중"
 
 #. 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 +3087,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 +3110,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:1655 dnf/cli/output.py:1822 dnf/util.py:616
+msgid "Downgraded"
+msgstr "하향설치됨"
 
-#: dnf/cli/output.py:1774
+#: 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 +3392,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"
@@ -3485,29 +3452,27 @@ 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 +3482,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 +3508,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 +3519,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 +3533,88 @@ 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를 사용하십시오."
 
-#: 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 "
@@ -3679,11 +3661,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 +3680,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] "모듈 종속성 문제 :"
@@ -3722,7 +3704,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 +3714,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 +3764,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 +3774,98 @@ 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}'에 대한 모든 일치 항목이 활성화되지 않았습니다"
 
-#: 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 ""
+"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 +3876,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,27 +3901,27 @@ 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
@@ -3899,15 +3939,32 @@ msgstr "%s 리포지토리 활성화"
 msgid "Added %s repo from %s"
 msgstr "%s 에서 %s repo를 추가했습니다"
 
+#: dnf/rpm/miscutils.py:35
+#, python-brace-format
+msgid ""
+"Using rpmkeys executable from {path} to verify signature for package: "
+"{package}."
+msgstr "{path}에서 실행 할 수 있는 rpmkeys를 사용하여 꾸러미 서명 확인: {package}."
+
+#: dnf/rpm/miscutils.py:39
+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 +3992,7 @@ msgstr "삭제 중"
 #: dnf/transaction.py:92
 msgctxt "currently"
 msgid "Upgrading"
-msgstr "업그레이드 중"
+msgstr "향상 중"
 
 #: dnf/transaction.py:96
 msgid "Verifying"
@@ -3943,168 +4000,202 @@ 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 ""
+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}\"."
-msgstr ""
+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 ""
+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}\"."
-msgstr ""
+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 ""
+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 ""
+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 ""
+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 "%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..9f8da6a6 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -13,33 +13,34 @@
 # 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.
 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: 2021-08-11 16:00+0200\n"
+"PO-Revision-Date: 2021-09-06 17:24+0000\n"
+"Last-Translator: Sundeep Anand <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.8\n"
 
 #: dnf/automatic/emitter.py:32
 #, python-format
@@ -86,7 +87,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 +97,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 +110,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,388 +124,374 @@ 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的可用空间。"
 
-#: 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:1725
 #, 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:1748 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:1766
 msgid "No groups marked for removal."
 msgstr "没有软件包组需要移除。"
 
-#: dnf/base.py:1710
+#: dnf/base.py:1800
 msgid "No group marked for upgrade."
 msgstr "没有标记为要升级的组。"
 
-#: dnf/base.py:1925
+#: dnf/base.py:2014
 #, 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:2016 dnf/base.py:2035 dnf/base.py:2048 dnf/base.py:2075
+#: dnf/base.py:2128 dnf/base.py:2136 dnf/base.py:2270 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:2023
 #, python-format
 msgid "Package %s of lower version already installed, cannot downgrade it."
 msgstr "软件包 %s 的低版本已经安装,无法进行降级。"
 
-#: dnf/base.py:1957
+#: dnf/base.py:2046
 #, python-format
 msgid "Package %s not installed, cannot reinstall it."
 msgstr "软件包 %s 未能够安装成功,无法进行重新安装。"
 
-#: dnf/base.py:1972
+#: dnf/base.py:2061
 #, python-format
 msgid "File %s is a source package and cannot be updated, ignoring."
 msgstr "%s 文件无法被升级,已忽略。"
 
-#: dnf/base.py:1978
+#: dnf/base.py:2072
 #, python-format
 msgid "Package %s not installed, cannot update it."
 msgstr "软件包 %s 未安装,无法更新。"
 
-#: dnf/base.py:1987
+#: dnf/base.py:2082
 #, 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:2125 dnf/cli/commands/reinstall.py:81
 #, python-format
 msgid "Package %s available, but not installed."
 msgstr "软件包 %s 可用,但没有被安装。"
 
-#: dnf/base.py:2032
+#: dnf/base.py:2131
 #, 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:2156
 #, python-format
 msgid "No package %s installed."
 msgstr "没有软件包 %s 安装。"
 
-#: dnf/base.py:2075 dnf/cli/commands/install.py:136
+#: dnf/base.py:2174 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:2189 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:2277 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:2282
 #, 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:2382
 msgid "No security updates needed, but {} update available"
 msgstr "没有必须的安全更新, 但是 {} 的更新可用"
 
-#: dnf/base.py:2292
+#: dnf/base.py:2384
 msgid "No security updates needed, but {} updates available"
 msgstr "没有必须的安全更新, 但是 {} 的更新可用"
 
-#: dnf/base.py:2296
+#: dnf/base.py:2388
 msgid "No security updates needed for \"{}\", but {} update available"
 msgstr "没有针对于\"{}\" 所必须的安全更新, 但是 {} 的更新可用"
 
-#: dnf/base.py:2298
+#: dnf/base.py:2390
 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:2411
 #, python-format
 msgid "Unable to retrieve a key for a commandline package: %s"
-msgstr ""
+msgstr "无法获取来自命令行的软件包的密钥:%s"
 
-#: dnf/base.py:2327
+#: dnf/base.py:2419
 #, python-format
 msgid ". Failing package is: %s"
 msgstr ". 失败的软件包是:%s"
 
-#: dnf/base.py:2328
+#: dnf/base.py:2420
 #, python-format
 msgid "GPG Keys are configured as: %s"
 msgstr "GPG密钥配置为:%s"
 
-#: dnf/base.py:2340
+#: dnf/base.py:2432
 #, python-format
 msgid "GPG key at %s (0x%s) is already installed"
 msgstr "%s 的 GPG 公钥(0x%s)已安装"
 
-#: dnf/base.py:2373
+#: dnf/base.py:2468
 msgid "The key has been approved."
 msgstr "密钥已被确认。"
 
-#: dnf/base.py:2376
+#: dnf/base.py:2471
 msgid "The key has been rejected."
 msgstr "密钥已被拒绝。"
 
-#: dnf/base.py:2409
+#: dnf/base.py:2504
 #, python-format
 msgid "Key import failed (code %d)"
 msgstr "导入公钥失败(代码 %d)"
 
-#: dnf/base.py:2411
+#: dnf/base.py:2506
 msgid "Key imported successfully"
 msgstr "导入公钥成功"
 
-#: dnf/base.py:2415
+#: dnf/base.py:2510
 msgid "Didn't install any keys"
 msgstr "没有安装任何公钥"
 
-#: dnf/base.py:2418
+#: dnf/base.py:2513
 #, python-format
 msgid ""
 "The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n"
@@ -513,49 +500,49 @@ msgstr ""
 "仓库 \"%s\" 的 GPG 公钥已安装,但是不适用于此软件包。\n"
 "请检查此仓库的公钥 URL 是否配置正确。"
 
-#: dnf/base.py:2429
+#: dnf/base.py:2524
 msgid "Import of key(s) didn't help, wrong key(s)?"
 msgstr "导入的密钥没有公钥,错误的公钥?"
 
-#: dnf/base.py:2482
+#: dnf/base.py:2577
 msgid "  * Maybe you meant: {}"
 msgstr "  * 可能您的意思是:{}"
 
-#: dnf/base.py:2514
+#: dnf/base.py:2609
 msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum"
 msgstr "软件包 \"{}\"(来自于本地仓库 \"{}\")的 checksum 不正确"
 
-#: dnf/base.py:2517
+#: dnf/base.py:2612
 msgid "Some packages from local repository have incorrect checksum"
 msgstr "本地仓库的一些软件包校验值(checksum)不正确,无法确定软件包完整"
 
-#: dnf/base.py:2520
+#: dnf/base.py:2615
 msgid "Package \"{}\" from repository \"{}\" has incorrect checksum"
 msgstr "软件包 \"{}\"(来自仓库 \"{}\")的 checksum 不正确"
 
-#: dnf/base.py:2523
+#: dnf/base.py:2618
 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:2636 dnf/base.py:2656
 msgid "No match for argument"
 msgstr "未找到匹配的参数"
 
-#: dnf/base.py:2549 dnf/base.py:2569
+#: dnf/base.py:2644 dnf/base.py:2664
 msgid "All matches were filtered out by exclude filtering for argument"
 msgstr "由于您的搜索参数,所有相关结果都已被滤掉"
 
-#: dnf/base.py:2551
+#: dnf/base.py:2646
 msgid "All matches were filtered out by modular filtering for argument"
 msgstr "所有的匹配结果均已经被参数的模块化过滤条件筛除"
 
-#: dnf/base.py:2567
+#: dnf/base.py:2662
 msgid "All matches were installed from a different repository for argument"
 msgstr "已从另一个仓库安装了参数的所有匹配"
 
-#: dnf/base.py:2583
+#: dnf/base.py:2709
 #, python-format
 msgid "Package %s is already installed."
 msgstr "软件包 %s 已安装。"
@@ -575,8 +562,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 +594,44 @@ 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,116 +639,95 @@ 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)."
 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."
@@ -769,51 +735,51 @@ 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 命令一起使用。"
 
-#: 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'以了解如何阻止这条信息)"
 
-#: 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 中包括 "
 
@@ -865,38 +831,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 +900,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 +1134,10 @@ 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 +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 "无法找到一个必须的组软件包。"
 
@@ -1276,25 +1244,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 ""
+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 ""
+msgstr "对于 replay 命令,跳过不可用或者缺少依赖项的软件包"
 
 #: dnf/cli/commands/history.py:94
 msgid ""
@@ -1305,41 +1273,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."
 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 +1338,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 +1346,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 +1387,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 +1430,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 +1439,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: '{}'"
 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 "{} {} {}: 参数太少"
 
@@ -2026,22 +2010,22 @@ 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"
 
@@ -2184,16 +2168,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 +2368,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 "已安装"
 
@@ -2706,13 +2690,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 +2704,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 +2744,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 +2777,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 +3087,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 +3100,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 +3127,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 "起始 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"
@@ -3509,16 +3473,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 +3493,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 +3548,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 +3591,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 "
@@ -3707,7 +3686,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] "模块依赖问题:"
@@ -3741,7 +3720,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 +3770,7 @@ msgstr ""
 "\n"
 "提示:[d]默认,[e]已启用,[x]已禁用,[i]已安装"
 
-#: dnf/module/module_base.py:34
+#: dnf/module/module_base.py:36
 msgid ""
 "\n"
 "\n"
@@ -3761,80 +3780,98 @@ 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
+#, 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}'"
 
-#: 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 ""
+"参数 '{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 +3882,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 +3907,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 "没有以下已停用插件模式的匹配项 : {}"
 
@@ -3908,10 +3945,27 @@ msgstr "正在启用 %s 仓库"
 msgid "Added %s repo from %s"
 msgstr "已添加 %s 仓库来自 %s"
 
+#: dnf/rpm/miscutils.py:35
+#, python-brace-format
+msgid ""
+"Using rpmkeys executable from {path} to verify signature for package: "
+"{package}."
+msgstr "使用来自 {path} 的 rpmkeys 可执行代码验证软件包的签名:{package}。"
+
+#: dnf/rpm/miscutils.py:39
+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 +4012,199 @@ 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:224
+msgid ""
+"Conflicting TransactionReplay arguments have been specified: filename, data"
+msgstr "指定了有冲突的 TransactionReplay 参数: filename、data"
 
-#: dnf/transaction_sr.py:244
+#: 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 ""
+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 "软件包 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}\"."
-msgstr ""
+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 ""
+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 ""
+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 "%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 "用于显示已查找到软件包的格式"
 
-- 
2.31.1