diff --git a/SOURCES/0006-Fix-boot-time-derivation-for-systems-with-no-rtc.patch b/SOURCES/0006-Fix-boot-time-derivation-for-systems-with-no-rtc.patch new file mode 100644 index 0000000..cb3cd0d --- /dev/null +++ b/SOURCES/0006-Fix-boot-time-derivation-for-systems-with-no-rtc.patch @@ -0,0 +1,55 @@ +From f65bb02d8c6fb6569c3e1db43c3b0e9f2a0ab283 Mon Sep 17 00:00:00 2001 +From: Todd Lewis +Date: Wed, 16 Nov 2022 10:45:39 -0500 +Subject: [PATCH] Fix boot time derivation for systems with no rtc + +That addresses https://bugzilla.redhat.com/show_bug.cgi?id=2137935 +--- + plugins/needs_restarting.py | 24 +++++++++++++++++++++++- + 1 file changed, 23 insertions(+), 1 deletion(-) + +diff --git a/plugins/needs_restarting.py b/plugins/needs_restarting.py +index 91dbe66..03831fa 100644 +--- a/plugins/needs_restarting.py ++++ b/plugins/needs_restarting.py +@@ -34,6 +34,7 @@ import functools + import os + import re + import stat ++import time + + + # For which package updates we should recommend a reboot +@@ -199,7 +200,28 @@ class ProcessStart(object): + + @staticmethod + def get_boot_time(): +- return int(os.stat('/proc/1').st_mtime) ++ """ ++ We have two sources from which to derive the boot time. These values vary ++ depending on containerization, existence of a Real Time Clock, etc. ++ For our purposes we want the latest derived value. ++ - st_mtime of /proc/1 ++ Reflects the time the first process was run after booting ++ This works for all known cases except machines without ++ a RTC - they awake at the start of the epoch. ++ - /proc/uptime ++ Seconds field of /proc/uptime subtracted from the current time ++ Works for machines without RTC iff the current time is reasonably correct. ++ Does not work on containers which share their kernel with the ++ host - there the host kernel uptime is returned ++ """ ++ ++ proc_1_boot_time = int(os.stat('/proc/1').st_mtime) ++ if os.path.isfile('/proc/uptime'): ++ with open('/proc/uptime', 'rb') as f: ++ uptime = f.readline().strip().split()[0].strip() ++ proc_uptime_boot_time = int(time.time() - float(uptime)) ++ return max(proc_1_boot_time, proc_uptime_boot_time) ++ return proc_1_boot_time + + @staticmethod + def get_sc_clk_tck(): +-- +2.40.1 + diff --git a/SOURCES/0007-system-upgrade-Add-poweroff-option-to-reboot-subcomm.patch b/SOURCES/0007-system-upgrade-Add-poweroff-option-to-reboot-subcomm.patch new file mode 100644 index 0000000..5f2b994 --- /dev/null +++ b/SOURCES/0007-system-upgrade-Add-poweroff-option-to-reboot-subcomm.patch @@ -0,0 +1,241 @@ +From d5f5883623ada37b4cec5909a1032c4bc3123a9a Mon Sep 17 00:00:00 2001 +From: Cameron Rodriguez +Date: Tue, 1 Nov 2022 02:25:52 -0400 +Subject: [PATCH] [system-upgrade] Add --poweroff option to reboot subcommand + += changelog = +msg: Add --poweroff option to system-upgrade reboot +type: enhancement +--- + doc/system-upgrade.rst | 10 ++++++++++ + plugins/system_upgrade.py | 28 ++++++++++++++++++++++------ + tests/test_system_upgrade.py | 18 +++++++++++++++++- + 3 files changed, 49 insertions(+), 7 deletions(-) + +diff --git a/doc/system-upgrade.rst b/doc/system-upgrade.rst +index 87b7319..6a7785b 100644 +--- a/doc/system-upgrade.rst ++++ b/doc/system-upgrade.rst +@@ -44,6 +44,8 @@ Synopsis + + ``dnf system-upgrade reboot`` + ++``dnf system-upgrade reboot --poweroff`` ++ + ``dnf system-upgrade clean`` + + ``dnf system-upgrade log`` +@@ -54,6 +56,8 @@ Synopsis + + ``dnf offline-upgrade reboot`` + ++``dnf offline-upgrade reboot --poweroff`` ++ + ``dnf offline-upgrade clean`` + + ``dnf offline-upgrade log`` +@@ -64,6 +68,8 @@ Synopsis + + ``dnf offline-distrosync reboot`` + ++``dnf offline-distrosync reboot --poweroff`` ++ + ``dnf offline-distrosync clean`` + + ``dnf offline-distrosync log`` +@@ -116,6 +122,10 @@ Options + ``--distro-sync``. If both are specified, the last option will be used. The option cannot be + used with the ``offline-distrosync`` command. + ++``--poweroff`` ++ When applied with the ``reboot`` subcommand, the system will power off after ++ upgrades are completed, instead of restarting. ++ + ``--number`` + Applied with ``log`` subcommand will show the log specified by the number. + +diff --git a/plugins/system_upgrade.py b/plugins/system_upgrade.py +index 4f7620f..b99dd8a 100644 +--- a/plugins/system_upgrade.py ++++ b/plugins/system_upgrade.py +@@ -61,16 +61,19 @@ DOWNLOAD_FINISHED_MSG = _( # Translators: do not change "reboot" here + CANT_RESET_RELEASEVER = _( + "Sorry, you need to use 'download --releasever' instead of '--network'") + +-STATE_VERSION = 2 ++STATE_VERSION = 3 + + # --- Miscellaneous helper functions ------------------------------------------ + + +-def reboot(): ++def reboot(poweroff = False): + if os.getenv("DNF_SYSTEM_UPGRADE_NO_REBOOT", default=False): + logger.info(_("Reboot turned off, not rebooting.")) + else: +- Popen(["systemctl", "reboot"]) ++ if poweroff: ++ Popen(["systemctl", "poweroff"]) ++ else: ++ Popen(["systemctl", "reboot"]) + + + def get_url_from_os_release(): +@@ -183,6 +186,7 @@ class State(object): + upgrade_status = _prop("upgrade_status") + upgrade_command = _prop("upgrade_command") + distro_sync = _prop("distro_sync") ++ poweroff_after = _prop("poweroff_after") + enable_disable_repos = _prop("enable_disable_repos") + module_platform_id = _prop("module_platform_id") + +@@ -359,6 +363,10 @@ class SystemUpgradeCommand(dnf.cli.Command): + action='store_false', + help=_("keep installed packages if the new " + "release's version is older")) ++ parser.add_argument('--poweroff', dest='poweroff_after', ++ action='store_true', ++ help=_("power off system after the operation " ++ "is completed")) + parser.add_argument('tid', nargs=1, choices=CMDS, + metavar="[%s]" % "|".join(CMDS)) + parser.add_argument('--number', type=int, help=_('which logs to show')) +@@ -566,8 +574,13 @@ class SystemUpgradeCommand(dnf.cli.Command): + if not self.opts.tid[0] == "reboot": + return + ++ self.state.poweroff_after = self.opts.poweroff_after ++ + self.log_status(_("Rebooting to perform upgrade."), + REBOOT_REQUESTED_ID) ++ ++ # Explicit write since __exit__ doesn't seem to get called when rebooting ++ self.state.write() + reboot() + + def run_download(self): +@@ -686,12 +699,15 @@ class SystemUpgradeCommand(dnf.cli.Command): + self.log_status(_("Download finished."), DOWNLOAD_FINISHED_ID) + + def transaction_upgrade(self): +- Plymouth.message(_("Upgrade complete! Cleaning up and rebooting...")) +- self.log_status(_("Upgrade complete! Cleaning up and rebooting..."), ++ power_op = "powering off" if self.state.poweroff_after else "rebooting" ++ ++ Plymouth.message(_("Upgrade complete! Cleaning up and " + power_op + "...")) ++ self.log_status(_("Upgrade complete! Cleaning up and " + power_op + "..."), + UPGRADE_FINISHED_ID) ++ + self.run_clean() + if self.opts.tid[0] == "upgrade": +- reboot() ++ reboot(self.state.poweroff_after) + + + class OfflineUpgradeCommand(SystemUpgradeCommand): +diff --git a/tests/test_system_upgrade.py b/tests/test_system_upgrade.py +index 6ef4c21..769720d 100644 +--- a/tests/test_system_upgrade.py ++++ b/tests/test_system_upgrade.py +@@ -322,7 +322,7 @@ class RebootCheckCommandTestCase(CommandTestCaseBase): + def check_reboot(self, status='complete', lexists=False, command='system-upgrade', + state_command='system-upgrade'): + with patch('system_upgrade.os.path.lexists') as lexists_func: +- self.command.state.state_version = 2 ++ self.command.state.state_version = 3 + self.command.state.download_status = status + self.command.opts = mock.MagicMock() + self.command.opts.command = command +@@ -356,6 +356,7 @@ class RebootCheckCommandTestCase(CommandTestCaseBase): + @patch('system_upgrade.reboot') + def test_run_reboot(self, reboot, log_status, run_prepare): + self.command.opts = mock.MagicMock() ++ self.command.opts.poweroff_after = False + self.command.opts.tid = ["reboot"] + self.command.run_reboot() + run_prepare.assert_called_once_with() +@@ -363,6 +364,21 @@ class RebootCheckCommandTestCase(CommandTestCaseBase): + log_status.call_args[0][1]) + self.assertTrue(reboot.called) + ++ @patch('system_upgrade.SystemUpgradeCommand.run_prepare') ++ @patch('system_upgrade.SystemUpgradeCommand.log_status') ++ @patch('system_upgrade.reboot') ++ def test_reboot_poweroff_after(self, reboot, log_status, run_prepare): ++ self.command.opts = mock.MagicMock() ++ self.command.opts.tid = ["reboot"] ++ self.command.opts.poweroff_after = True ++ self.command.run_reboot() ++ run_prepare.assert_called_with() ++ self.assertEqual(system_upgrade.REBOOT_REQUESTED_ID, ++ log_status.call_args[0][1]) ++ self.assertTrue(self.command.state.poweroff_after) ++ self.assertTrue(reboot.called) ++ ++ + @patch('system_upgrade.SystemUpgradeCommand.run_prepare') + @patch('system_upgrade.SystemUpgradeCommand.log_status') + @patch('system_upgrade.reboot') +-- +2.40.1 + + +From 52aec32ef129874dc28fc93947e5d32c78baff0c Mon Sep 17 00:00:00 2001 +From: Cameron Rodriguez +Date: Tue, 1 Nov 2022 02:29:29 -0400 +Subject: [PATCH] Add Cameron Rodriguez to AUTHORS file + +--- + AUTHORS | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/AUTHORS b/AUTHORS +index f098cb6..a6102ec 100644 +--- a/AUTHORS ++++ b/AUTHORS +@@ -20,6 +20,7 @@ DNF-PLUGINS-CORE CONTRIBUTORS + Adam Salih + Alexander Todorov + Anders Blomdell ++ Cameron Rodriguez + Cyril Jouve + David Michael + François Rigault +-- +2.40.1 + + +From dd081ebd4c46a79688f81ef639628189f8b78db3 Mon Sep 17 00:00:00 2001 +From: Cameron Rodriguez +Date: Sun, 4 Dec 2022 10:06:08 -0500 +Subject: [PATCH] [offline-upgrade] Fix strings for l10n + +--- + plugins/system_upgrade.py | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/plugins/system_upgrade.py b/plugins/system_upgrade.py +index b99dd8a..64195fd 100644 +--- a/plugins/system_upgrade.py ++++ b/plugins/system_upgrade.py +@@ -699,11 +699,13 @@ class SystemUpgradeCommand(dnf.cli.Command): + self.log_status(_("Download finished."), DOWNLOAD_FINISHED_ID) + + def transaction_upgrade(self): +- power_op = "powering off" if self.state.poweroff_after else "rebooting" ++ if self.state.poweroff_after: ++ upgrade_complete_msg = _("Upgrade complete! Cleaning up and powering off...") ++ else: ++ upgrade_complete_msg = _("Upgrade complete! Cleaning up and rebooting...") + +- Plymouth.message(_("Upgrade complete! Cleaning up and " + power_op + "...")) +- self.log_status(_("Upgrade complete! Cleaning up and " + power_op + "..."), +- UPGRADE_FINISHED_ID) ++ Plymouth.message(upgrade_complete_msg) ++ self.log_status(upgrade_complete_msg, UPGRADE_FINISHED_ID) + + self.run_clean() + if self.opts.tid[0] == "upgrade": +-- +2.40.1 + diff --git a/SOURCES/0008-Doc-update-for-reposync-RhBug-2132383-2182004.patch b/SOURCES/0008-Doc-update-for-reposync-RhBug-2132383-2182004.patch new file mode 100644 index 0000000..4d1e09b --- /dev/null +++ b/SOURCES/0008-Doc-update-for-reposync-RhBug-2132383-2182004.patch @@ -0,0 +1,34 @@ +From 52c980f191993b61a42438a478d1e5629ea36c9f Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Mon, 27 Mar 2023 10:24:59 +0200 +Subject: [PATCH] Documentation update for reposync (RhBug:2132383,2182004) + +The update describe the behavior when `-n` and `--download-metadata` +is used. + +https://bugzilla.redhat.com/show_bug.cgi?id=2132383 +https://bugzilla.redhat.com/show_bug.cgi?id=2182004 +--- + doc/reposync.rst | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/doc/reposync.rst b/doc/reposync.rst +index 0df00b9..bbf714c 100644 +--- a/doc/reposync.rst ++++ b/doc/reposync.rst +@@ -46,7 +46,11 @@ All general DNF options are accepted. Namely, the ``--repoid`` option can be use + Delete local packages no longer present in repository. + + ``--download-metadata`` +- Download all repository metadata. Downloaded copy is instantly usable as a repository, no need to run createrepo_c on it. ++ Download all repository metadata. Downloaded copy is instantly usable as a repository, no need to run createrepo_c ++ on it. When the option is used with `--newest-only`, only latest packages will be downloaded, but metadata will ++ still contain older packages. It might be useful to update metadata using `createrepo_c --update` to remove ++ the packages with missing RPM files from metadata. Otherwise, DNF ends with an error due to the missing files ++ whenever it tries to download older packages. + + ``-g, --gpgcheck`` + Remove packages that fail GPG signature checking after downloading. Exit code is ``1`` if at least one package was removed. +-- +2.40.1 + diff --git a/SOURCES/0009-Add-fix-and-test-assertion-for-no-systemd-unit-exist.patch b/SOURCES/0009-Add-fix-and-test-assertion-for-no-systemd-unit-exist.patch new file mode 100644 index 0000000..bc6a262 --- /dev/null +++ b/SOURCES/0009-Add-fix-and-test-assertion-for-no-systemd-unit-exist.patch @@ -0,0 +1,88 @@ +From 169a79922d7cb8968ffd378b1c98959185ee417f Mon Sep 17 00:00:00 2001 +From: Andy Baugh +Date: Fri, 28 Apr 2023 10:52:16 -0500 +Subject: [PATCH] Add fix and test assertion for "no systemd unit exists for + pid" + += changelog = +msg: Catch exception in needs-restarting.py when no systemd unit exists for pid +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2122587 +related: None +--- + plugins/needs_restarting.py | 18 ++++++++++++++---- + tests/test_needs_restarting.py | 15 +++++++++++++-- + 2 files changed, 27 insertions(+), 6 deletions(-) + +diff --git a/plugins/needs_restarting.py b/plugins/needs_restarting.py +index 03831fa..8dbc965 100644 +--- a/plugins/needs_restarting.py ++++ b/plugins/needs_restarting.py +@@ -138,10 +138,20 @@ def get_service_dbus(pid): + systemd_manager_object, + 'org.freedesktop.systemd1.Manager' + ) +- service_proxy = bus.get_object( +- 'org.freedesktop.systemd1', +- systemd_manager_interface.GetUnitByPID(pid) +- ) ++ service_proxy = None ++ try: ++ service_proxy = bus.get_object( ++ 'org.freedesktop.systemd1', ++ systemd_manager_interface.GetUnitByPID(pid) ++ ) ++ except dbus.DBusException as e: ++ # There is no unit for the pid. Usually error is 'NoUnitForPid'. ++ # Considering what we do at the bottom (just return if not service) ++ # Then there's really no reason to exit here on that exception. ++ # Log what's happened then move on. ++ msg = str(e) ++ logger.warning("Failed to get systemd unit for PID {}: {}".format(pid, msg)) ++ return + service_properties = dbus.Interface( + service_proxy, dbus_interface="org.freedesktop.DBus.Properties") + name = service_properties.Get( +diff --git a/tests/test_needs_restarting.py b/tests/test_needs_restarting.py +index 0ad70a5..7b629b4 100644 +--- a/tests/test_needs_restarting.py ++++ b/tests/test_needs_restarting.py +@@ -20,6 +20,8 @@ from __future__ import absolute_import + from __future__ import print_function + from __future__ import unicode_literals + ++from unittest.mock import patch, Mock ++import dbus + import needs_restarting + import tests.support + +@@ -29,8 +31,6 @@ MM_FILE = '7fc4e1168000-7fc4e1169000 rw-s 1096dd000 00:05 7749' \ + ' /dev/dri/card0' + SO_FILE = '30efe06000-30efe07000 r--p 00006000 08:02 139936' \ + ' /usr/lib64/libSM.so.6.0.1' +- +- + class NeedsRestartingTest(tests.support.TestCase): + def test_smap2opened_file(self): + func = needs_restarting.smap2opened_file +@@ -46,6 +46,17 @@ class NeedsRestartingTest(tests.support.TestCase): + self.assertTrue(ofile.deleted) + self.assertEqual(ofile.name, '/usr/lib64/libXfont.so.1.4.1;5408628d') + ++ def test_get_service_dbus_nounitforpid(self): ++ func = needs_restarting.get_service_dbus ++ # So, This is gonna look kinda screwy unless you are aware of what ++ # this proxies interface is actually doing. The GetUnitByPid function ++ # is normally "dynamically" defined by the get_dbus_method at runtime. ++ # As such there's no actual way to mock it out in any meaningful way ++ # without create=True. ++ with patch( "dbus.proxies.Interface.GetUnitByPID", create=True, side_effect=dbus.DBusException('org.freedesktop.systemd1.NoUnitForPID: PID 1234 does not belong to any loaded unit.') ), \ ++ patch( "dbus.SystemBus", return_value=Mock(spec=dbus.Bus) ), \ ++ patch( "dbus.bus.BusConnection.__new__", side_effect=dbus.DBusException("Never should hit this exception if mock above works")): ++ self.assertIsNone(func(1234)) + + class OpenedFileTest(tests.support.TestCase): + def test_presumed_name(self): +-- +2.40.1 + diff --git a/SOURCES/0010-sys-upgrade_Wait_until_upgrade_done_before_poweoff.patch b/SOURCES/0010-sys-upgrade_Wait_until_upgrade_done_before_poweoff.patch new file mode 100644 index 0000000..16eaf5f --- /dev/null +++ b/SOURCES/0010-sys-upgrade_Wait_until_upgrade_done_before_poweoff.patch @@ -0,0 +1,32 @@ +From 7475f8df6d903764eaf8baaa87ec7a3a1a4d888c Mon Sep 17 00:00:00 2001 +From: Jan Kolarik +Date: Fri, 9 Jun 2023 11:57:33 +0000 +Subject: [PATCH] system-upgrade: Wait until the upgrade is done before + poweroff (RhBug:2211844) + +Add a systemd dependency to wait until upgrade service is finished before executing the poweroff when passing the `--poweroff` option in `system-upgrade` plugin. + += changelog = +msg: Fix systemd dependencies when using --poweroff option in system-upgrade plugin +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2211844 +--- + etc/systemd/dnf-system-upgrade.service | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/etc/systemd/dnf-system-upgrade.service b/etc/systemd/dnf-system-upgrade.service +index 2d23cfe..3e15920 100644 +--- a/etc/systemd/dnf-system-upgrade.service ++++ b/etc/systemd/dnf-system-upgrade.service +@@ -6,7 +6,7 @@ Documentation=http://www.freedesktop.org/wiki/Software/systemd/SystemUpdates + DefaultDependencies=no + Requires=sysinit.target + After=sysinit.target systemd-journald.socket system-update-pre.target +-Before=shutdown.target system-update.target ++Before=poweroff.target reboot.target shutdown.target system-update.target + OnFailure=dnf-system-upgrade-cleanup.service + + [Service] +-- +2.40.1 + diff --git a/SOURCES/0011-Update-translations-RHEL-9.3.patch b/SOURCES/0011-Update-translations-RHEL-9.3.patch new file mode 100644 index 0000000..6021ff4 --- /dev/null +++ b/SOURCES/0011-Update-translations-RHEL-9.3.patch @@ -0,0 +1,3214 @@ +From c50bffe1106c383d060d94ee5ed767dcf4341bd6 Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Thu, 7 Sep 2023 09:12:14 +0200 +Subject: [PATCH] Update translations RHEL 9.3 + +--- + po/fr.po | 378 ++++++++++++++++------------------------------ + po/ja.po | 304 ++++++++++++++----------------------- + po/ko.po | 427 +++++++++++++++++++++++----------------------------- + po/zh_CN.po | 157 +++++++++---------- + 4 files changed, 498 insertions(+), 768 deletions(-) + +diff --git a/po/fr.po b/po/fr.po +index c35064b..5ce4180 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -13,11 +13,11 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2023-02-28 12:26+0100\n" ++"POT-Creation-Date: 2023-08-29 11:21+0200\n" + "PO-Revision-Date: 2023-03-06 13:48+0000\n" + "Last-Translator: Transtats \n" +-"Language-Team: French \n" ++"Language-Team: French \n" + "Language: fr\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" +@@ -81,9 +81,7 @@ msgstr "Toutes les dépendances ne sont pas satisfaites" + #: plugins/builddep.py:208 + msgid "" + "Warning: -D or --define arguments have no meaning for source rpm packages." +-msgstr "" +-"Attention : les arguments -D ou --define n'ont aucune signification pour les " +-"paquets rpm source." ++msgstr "Attention : les arguments -D ou --define n'ont aucune signification pour les paquets rpm source." + + #: plugins/builddep.py:215 + #, python-format +@@ -108,23 +106,17 @@ msgstr "affiche le contenu du journal des changements des paquets" + msgid "" + "show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " + "is recommended." +-msgstr "" +-"affiche les entrées du journal des changements depuis DATE. Pour éviter " +-"l’ambiguïté, le format AAAA-MM-JJ est recommandé." ++msgstr "affiche les entrées du journal des changements depuis DATE. Pour éviter l’ambiguïté, le format AAAA-MM-JJ est recommandé." + + #: plugins/changelog.py:55 + msgid "show given number of changelog entries per package" +-msgstr "" +-"afficher le nombre donné d’entrées de journal des changements par paquet" ++msgstr "afficher le nombre donné d’entrées de journal des changements par paquet" + + #: plugins/changelog.py:58 + msgid "" + "show only new changelog entries for packages, that provide an upgrade for " + "some of already installed packages." +-msgstr "" +-"n’affichent que les nouvelles entrées du journal des changements pour les " +-"paquets qui fournissent une mise à niveau pour certains paquets déjà " +-"installés." ++msgstr "n’affichent que les nouvelles entrées du journal des changements pour les paquets qui fournissent une mise à niveau pour certains paquets déjà installés." + + #: plugins/changelog.py:60 + msgid "PACKAGE" +@@ -147,9 +139,7 @@ msgstr[1] "Liste les {} derniers changements" + + #: plugins/changelog.py:116 + msgid "Listing only new changelogs since installed version of the package" +-msgstr "" +-"Liste uniquement les nouveaux changements depuis la version installée du " +-"paquet" ++msgstr "Liste uniquement les nouveaux changements depuis la version installée du paquet" + + #: plugins/changelog.py:118 + msgid "Listing all changelogs" +@@ -178,8 +168,7 @@ msgstr "ajoute (et active) le dépôt à partir du fichier ou de l’url indiqu + + #: plugins/config_manager.py:54 + msgid "print current configuration values to stdout" +-msgstr "" +-"affiche les valeurs de la configuration actuelle sur la sortie standard" ++msgstr "affiche les valeurs de la configuration actuelle sur la sortie standard" + + #: plugins/config_manager.py:57 + msgid "print variable values to stdout" +@@ -201,10 +190,7 @@ msgstr "un des paramètres suivants est nécessaire : {}" + msgid "" + "Warning: --enablerepo/--disablerepo arguments have no meaningwith config " + "manager. Use --set-enabled/--set-disabled instead." +-msgstr "" +-"Attention : les arguments --enablerepo/--disablerepo n’ont aucune " +-"signification avec le gestionnaire de configuration. Utilisez plutôt --set-" +-"enabled/--set-disabled." ++msgstr "Attention : les arguments --enablerepo/--disablerepo n’ont aucune signification avec le gestionnaire de configuration. Utilisez plutôt --set-enabled/--set-disabled." + + #: plugins/config_manager.py:132 + #, python-format +@@ -266,8 +252,7 @@ msgid "" + " copr list --available-by-user=ignatenkobrain\n" + " copr search tests\n" + " " +-msgstr "" +-"\n" ++msgstr "\n" + " enable nom/projet [chroot]\n" + " disable nom/projet\n" + " remove nom/projet\n" +@@ -313,9 +298,7 @@ msgstr "Erreur : " + msgid "" + "specify Copr hub either with `--hub` or using `copr_hub/copr_username/" + "copr_projectname` format" +-msgstr "" +-"précisez un hub Copr soit via `--hub` ou en utilisant le format `hub_copr/" +-"utilisateur_copr/projet_copr`" ++msgstr "précisez un hub Copr soit via `--hub` ou en utilisant le format `hub_copr/utilisateur_copr/projet_copr`" + + #: plugins/copr.py:168 + msgid "multiple hubs specified" +@@ -333,15 +316,11 @@ msgstr "Trop d'arguments." + msgid "" + "Bad format of optional chroot. The format is distribution-version-" + "architecture." +-msgstr "" +-"Mauvais format du chroot optionnel. Le format est distribution-version-" +-"architecture." ++msgstr "Mauvais format du chroot optionnel. Le format est distribution-version-architecture." + + #: plugins/copr.py:264 + msgid "use format `copr_username/copr_projectname` to reference copr project" +-msgstr "" +-"utilisez le format `copr_username/copr_projectname` pour faire référence au " +-"projet copr" ++msgstr "utilisez le format `copr_username/copr_projectname` pour faire référence au projet copr" + + #: plugins/copr.py:266 + msgid "bad copr project format" +@@ -361,19 +340,16 @@ msgid "" + "\n" + "Please do not file bug reports about these packages in Fedora\n" + "Bugzilla. In case of problems, contact the owner of this repository.\n" +-msgstr "" +-"\n" ++msgstr "\n" + "Activation d’un dépôt Copr. Veuillez noter que ce dépôt n’est pas\n" + "partie intégrante de la distribution, et que la qualité pourrait varier.\n" + "\n" + "Le projet Fedora n’exerce aucun pouvoir sur le contenu de ce dépôt au delà\n" + "des règles précisées dans la FAQ Copr \n" +-",\n" ++",\n" + "et les paquets ne sont tenus à aucun niveau de qualité ou de sécurité.\n" + "\n" +-"Veuillez ne pas signaler de bogues à propos de ces paquets dans le Bugzilla " +-"de Fedora.\n" ++"Veuillez ne pas signaler de bogues à propos de ces paquets dans le Bugzilla de Fedora.\n" + "En cas de problèmes, contactez le propriétaire de ce dépôt.\n" + + #: plugins/copr.py:297 +@@ -397,15 +373,11 @@ msgid "" + "* These coprs have repo file with an old format that contains no information " + "about Copr hub - the default one was assumed. Re-enable the project to fix " + "this." +-msgstr "" +-"* Ces Copr ont des fichiers de dépôts avec un ancien format qui ne contient " +-"aucune information à propos de Copr hub - celui par défaut a été utilisé. " +-"Réactivez le projet pour résoudre le problème." ++msgstr "* Ces Copr ont des fichiers de dépôts avec un ancien format qui ne contient aucune information à propos de Copr hub - celui par défaut a été utilisé. Réactivez le projet pour résoudre le problème." + + #: plugins/copr.py:380 + msgid "Can't parse repositories for username '{}'." +-msgstr "" +-"Ne peut analyser les dépôts pour y chercher le nom d’utilisateur « {} »." ++msgstr "Ne peut analyser les dépôts pour y chercher le nom d’utilisateur « {} »." + + #: plugins/copr.py:383 + msgid "List of {} coprs" +@@ -453,8 +425,7 @@ msgstr "Le référentiel '{0}' n'existe pas dans le projet '{1}'." + msgid "" + "\n" + "Available repositories: " +-msgstr "" +-"\n" ++msgstr "\n" + "Dépôts disponibles : " + + #: plugins/copr.py:499 +@@ -465,14 +436,11 @@ msgid "" + "If you want to enable a non-default repository, use the following command:\n" + " 'dnf copr enable {0} '\n" + "But note that the installed repo file will likely need a manual modification." +-msgstr "" +-"\n" ++msgstr "\n" + "\n" +-"Si vous voulez activer un référentiel autre que celui par défaut, utilisez " +-"la commande suivante :\n" ++"Si vous voulez activer un référentiel autre que celui par défaut, utilisez la commande suivante :\n" + " 'dnf copr enable {0} '\n" +-"Mais notez que le fichier repo installé devra probablement être modifié " +-"manuellement." ++"Mais notez que le fichier repo installé devra probablement être modifié manuellement." + + #: plugins/copr.py:505 + #, python-brace-format +@@ -499,8 +467,7 @@ msgid "" + "{0}\n" + "\n" + "These repositories have been enabled automatically." +-msgstr "" +-"Le mainteneur du dépôt Copr activé a décidé de le faire\n" ++msgstr "Le mainteneur du dépôt Copr activé a décidé de le faire\n" + "dépend d’autres dépôts. Ces dépôts sont généralement\n" + "nécessaires pour l’installation correcte des RPM du dépôt\n" + "Copr principal (ils fournissent les dépendances d’exécution).\n" +@@ -573,13 +540,11 @@ msgstr "Sortie écrite dans : %s" + + #: plugins/debug.py:172 + msgid "restore packages recorded in debug-dump file" +-msgstr "" +-"restaure les paquets enregistrés dans le fichier de déversement de débuggage" ++msgstr "restaure les paquets enregistrés dans le fichier de déversement de débuggage" + + #: plugins/debug.py:185 + msgid "output commands that would be run to stdout." +-msgstr "" +-"liste les commandes qui devraient être exécutées vers la sortie standard." ++msgstr "liste les commandes qui devraient être exécutées vers la sortie standard." + + #: plugins/debug.py:188 + msgid "Install the latest version of recorded packages." +@@ -589,9 +554,7 @@ msgstr "Installer la dernière version des paquets enregistrés." + msgid "" + "Ignore architecture and install missing packages matching the name, epoch, " + "version and release." +-msgstr "" +-"Ignorer l’architecture et installe les paquets manquants correspondant aux " +-"nom, époque, version et révision." ++msgstr "Ignorer l’architecture et installe les paquets manquants correspondant aux nom, époque, version et révision." + + #: plugins/debug.py:196 + msgid "limit to specified type" +@@ -601,10 +564,7 @@ msgstr "limiter au type spécifié" + msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." +-msgstr "" +-"Permettre la suppression de paquets install-only. L’utilisation de cette " +-"option peut entraîner une tentative de suppression du noyau en cours " +-"d’exécution." ++msgstr "Permettre la suppression de paquets install-only. L’utilisation de cette option peut entraîner une tentative de suppression du noyau en cours d’exécution." + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -628,29 +588,25 @@ msgstr "installe les paquets debuginfo" + #, python-format + msgid "" + "Could not find debuginfo package for the following available packages: %s" +-msgstr "" +-"Impossible de trouver le paquet debuginfo pour ces paquets disponibles : %s" ++msgstr "Impossible de trouver le paquet debuginfo pour ces paquets disponibles : %s" + + #: plugins/debuginfo-install.py:185 + #, python-format + msgid "" + "Could not find debugsource package for the following available packages: %s" +-msgstr "" +-"Impossible de trouver le paquet debugsource pour ces paquets disponibles : %s" ++msgstr "Impossible de trouver le paquet debugsource pour ces paquets disponibles : %s" + + #: plugins/debuginfo-install.py:190 + #, python-format + msgid "" + "Could not find debuginfo package for the following installed packages: %s" +-msgstr "" +-"Impossible de trouver le paquet debuginfo pour ces paquets installés : %s" ++msgstr "Impossible de trouver le paquet debuginfo pour ces paquets installés : %s" + + #: plugins/debuginfo-install.py:195 + #, python-format + msgid "" + "Could not find debugsource package for the following installed packages: %s" +-msgstr "" +-"Impossible de trouver le paquet debugsource pour ces paquets installés : %s" ++msgstr "Impossible de trouver le paquet debugsource pour ces paquets installés : %s" + + #: plugins/debuginfo-install.py:199 + msgid "Unable to find a match" +@@ -688,16 +644,12 @@ msgstr "résout et télécharge les dépendances nécessaires" + msgid "" + "when running with --resolve, download all dependencies (do not exclude " + "already installed ones)" +-msgstr "" +-"quand utilisé avec --resolve, téléchargez toutes les dépendances (sans " +-"exclure celles déjà installées)" ++msgstr "quand utilisé avec --resolve, téléchargez toutes les dépendances (sans exclure celles déjà installées)" + + #: plugins/download.py:67 + msgid "" + "print list of urls where the rpms can be downloaded instead of downloading" +-msgstr "" +-"affiche la list des urls où les rpms peuvent être téléchargés, plutôt que " +-"les télécharger" ++msgstr "affiche la list des urls où les rpms peuvent être téléchargés, plutôt que les télécharger" + + #: plugins/download.py:72 + msgid "when running with --url, limit to specific protocols" +@@ -740,9 +692,7 @@ msgstr "Langue non valide / vide pour les données traduites" + + #: plugins/groups_manager.py:71 + msgid "Can't generate group id from '{}'. Please specify group id using --id." +-msgstr "" +-"Impossible de générer l'id du groupe à partir de «{}». Veuillez spécifier " +-"l'id du groupe en utilisant --id." ++msgstr "Impossible de générer l'id du groupe à partir de «{}». Veuillez spécifier l'id du groupe en utilisant --id." + + #: plugins/groups_manager.py:79 + msgid "create and edit groups metadata file" +@@ -818,8 +768,7 @@ msgstr "spécification du paquet" + + #: plugins/groups_manager.py:156 + msgid "Can't edit group without specifying it (use --id or --name)" +-msgstr "" +-"Un groupe ne peut pas être édité sans le spécifier (utilisez --id ou --name)" ++msgstr "Un groupe ne peut pas être édité sans le spécifier (utilisez --id ou --name)" + + #: plugins/groups_manager.py:190 + msgid "Can't load file \"{}\": {}" +@@ -841,14 +790,11 @@ msgstr "Les paquets ne peuvent pas être retirés d'un groupe qui n'existe pas" + msgid "" + "Group id '{}' generated from '{}' is duplicit. Please specify group id using " + "--id." +-msgstr "" +-"L'id du groupe « {} » qui a été généré pour « {} » est en double. Veuillez " +-"le spécifier en utilisant --id." ++msgstr "L'id du groupe « {} » qui a été généré pour « {} » est en double. Veuillez le spécifier en utilisant --id." + + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" +-msgstr "" +-"Lister les paquets installés qui ne sont pas requis par un autre paquet" ++msgstr "Lister les paquets installés qui ne sont pas requis par un autre paquet" + + #: plugins/local.py:122 + msgid "Unable to create a directory '{}' due to '{}'" +@@ -881,9 +827,7 @@ msgstr "Migration des données d’historique …" + #: plugins/modulesync.py:37 + msgid "" + "Download packages from modules and/or create a repository with modular data" +-msgstr "" +-"Télécharger les paquets des modules et/ou créer un référentiel avec les " +-"données des modules" ++msgstr "Télécharger les paquets des modules et/ou créer un référentiel avec les données des modules" + + #: plugins/modulesync.py:44 + msgid "MODULE" +@@ -915,9 +859,7 @@ msgstr[1] "Impossible de trouver une correspondance pour les arguments : '{}'" + msgid "" + "Creation of repository failed with return code {}. All downloaded content " + "was kept on the system" +-msgstr "" +-"La création du référentiel a échoué avec le code de retour {}. Tout le " +-"contenu téléchargé a été conservé sur le système" ++msgstr "La création du référentiel a échoué avec le code de retour {}. Tout le contenu téléchargé a été conservé sur le système" + + #: plugins/modulesync.py:144 + #, python-brace-format +@@ -927,9 +869,7 @@ msgstr "Aucune correspondance pour l'artefact '{0}' du module '{1}'" + #: plugins/modulesync.py:162 + #, python-brace-format + msgid "No match for package name '{0}' in profile {1} from module {2}" +-msgstr "" +-"Aucune correspondance pour le nom de paquet '{0}' dans le profil {1} du " +-"module {2}" ++msgstr "Aucune correspondance pour le nom de paquet '{0}' dans le profil {1} du module {2}" + + #: plugins/modulesync.py:166 + msgid "No mach for argument '{}'" +@@ -940,57 +880,47 @@ msgstr "Aucune correspondance pour l'argument '{}'" + msgid "Unable to satisfy require {}" + msgstr "Impossible de satisfaire le besoin {}" + +-#: plugins/needs_restarting.py:66 ++#: plugins/needs_restarting.py:67 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." +-msgstr "" +-"Aucun paquet installé trouvé pour le nom de paquet « {pkg} » spécifié dans " +-"needs-restarting du fichier « {file} »." ++msgstr "Aucun paquet installé trouvé pour le nom de paquet « {pkg} » spécifié dans needs-restarting du fichier « {file} »." + +-#: plugins/needs_restarting.py:220 ++#: plugins/needs_restarting.py:252 + msgid "determine updated binaries that need restarting" + msgstr "détermine les binaires mis à jour qui nécessitent un redémarrage" + +-#: plugins/needs_restarting.py:225 ++#: plugins/needs_restarting.py:257 + msgid "only consider this user's processes" + msgstr "considère uniquement les processus de cet utilisateur" + +-#: plugins/needs_restarting.py:227 ++#: plugins/needs_restarting.py:259 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" +-msgstr "" +-"indique uniquement si un démarrage (reboot) est requis (exit code 1) ou non " +-"(exit code 0)" ++msgstr "indique uniquement si un démarrage (reboot) est requis (exit code 1) ou non (exit code 0)" + +-#: plugins/needs_restarting.py:230 ++#: plugins/needs_restarting.py:262 + msgid "only report affected systemd services" + msgstr "signaler uniquement les services systemd affectés" + +-#: plugins/needs_restarting.py:253 ++#: plugins/needs_restarting.py:285 + msgid "Core libraries or services have been updated since boot-up:" +-msgstr "" +-"les bibliothèques et les services de base ont été mis à jour depuis le " +-"démarrage (boot-up) :" ++msgstr "les bibliothèques et les services de base ont été mis à jour depuis le démarrage (boot-up) :" + +-#: plugins/needs_restarting.py:258 ++#: plugins/needs_restarting.py:290 + msgid "Reboot is required to fully utilize these updates." +-msgstr "" +-"Un nouveau démarrage est requis pour pouvoir bénéficier totalement de ces " +-"mises à jour." ++msgstr "Un nouveau démarrage est requis pour pouvoir bénéficier totalement de ces mises à jour." + +-#: plugins/needs_restarting.py:259 ++#: plugins/needs_restarting.py:291 + msgid "More information:" + msgstr "Plus d’information :" + +-#: plugins/needs_restarting.py:263 ++#: plugins/needs_restarting.py:295 + msgid "No core libraries or services have been updated since boot-up." +-msgstr "" +-"Aucune bibliothèque ou service de base n’a été mis à jour depuis le " +-"démarrage." ++msgstr "Aucune bibliothèque ou service de base n’a été mis à jour depuis le démarrage." + +-#: plugins/needs_restarting.py:265 ++#: plugins/needs_restarting.py:297 + msgid "Reboot should not be necessary." + msgstr "Un nouveau démarrage ne devrait pas être utile." + +@@ -1022,15 +952,11 @@ msgstr "Affiche une liste de dépendances non résolues pour les dépôts" + + #: plugins/repoclosure.py:69 + msgid "Repoclosure ended with unresolved dependencies ({}) across {} packages." +-msgstr "" +-"Repoclosure s'est terminé avec des dépendances non résolues ({}) sur {} " +-"paquets." ++msgstr "Repoclosure s'est terminé avec des dépendances non résolues ({}) sur {} paquets." + + #: plugins/repoclosure.py:159 + msgid "check packages of the given archs, can be specified multiple times" +-msgstr "" +-"vérifie les paquets pour les architectures spécifiées, peut être utilisé " +-"plusieurs fois" ++msgstr "vérifie les paquets pour les architectures spécifiées, peut être utilisé plusieurs fois" + + #: plugins/repoclosure.py:162 + msgid "Specify repositories to check" +@@ -1060,9 +986,7 @@ msgstr "Définir un nouveau dépôt, peut être utilisé plusieurs fois" + msgid "" + "Specify architectures to compare, can be used multiple times. By default, " + "only source rpms are compared." +-msgstr "" +-"Définir les architectures à comparer, peut-être utilisé plusieurs fois. Par " +-"défaut, les rpms source sont comparés." ++msgstr "Définir les architectures à comparer, peut-être utilisé plusieurs fois. Par défaut, les rpms source sont comparés." + + #: plugins/repodiff.py:67 + msgid "Output additional data about the size of the changes." +@@ -1071,9 +995,7 @@ msgstr "Affichez des données supplémentaires sur la taille des changements." + #: plugins/repodiff.py:69 + msgid "" + "Compare packages also by arch. By default packages are compared just by name." +-msgstr "" +-"Compare également les paquets par architecture. Par défaut, les paquets sont " +-"uniquement comparés par nom." ++msgstr "Compare également les paquets par architecture. Par défaut, les paquets sont uniquement comparés par nom." + + #: plugins/repodiff.py:72 + msgid "Output a simple one line message for modified packages." +@@ -1083,9 +1005,7 @@ msgstr "Produit un message simple d’une ligne pour les paquets modifiés." + msgid "" + "Split the data for modified packages between upgraded and downgraded " + "packages." +-msgstr "" +-"Segmenter les données des paquets modifiés entre ceux mis à niveau et ceux " +-"rétrogradés." ++msgstr "Segmenter les données des paquets modifiés entre ceux mis à niveau et ceux rétrogradés." + + #: plugins/repodiff.py:86 + msgid "Both old and new repositories must be set." +@@ -1111,32 +1031,28 @@ msgstr "Rendu obsolète par : {}" + msgid "" + "\n" + "Upgraded packages" +-msgstr "" +-"\n" ++msgstr "\n" + "Paquets mis à niveau" + + #: plugins/repodiff.py:200 + msgid "" + "\n" + "Downgraded packages" +-msgstr "" +-"\n" ++msgstr "\n" + "Paquets rétrogradés" + + #: plugins/repodiff.py:207 + msgid "" + "\n" + "Modified packages" +-msgstr "" +-"\n" ++msgstr "\n" + "Paquets modifiés" + + #: plugins/repodiff.py:212 + msgid "" + "\n" + "Summary" +-msgstr "" +-"\n" ++msgstr "\n" + "Résumé" + + #: plugins/repodiff.py:213 +@@ -1258,9 +1174,7 @@ msgstr "télécharger toutes les métadonnées." + + #: plugins/reposync.py:70 + msgid "Remove packages that fail GPG signature checking after downloading" +-msgstr "" +-"Retire les paquets qui ont échoué la vérification de la signature GPG après " +-"téléchargement" ++msgstr "Retire les paquets qui ont échoué la vérification de la signature GPG après téléchargement" + + #: plugins/reposync.py:73 + msgid "also download and uncompress comps.xml" +@@ -1270,9 +1184,7 @@ msgstr "également télécharger et décompresser comps.xml" + msgid "" + "where to store downloaded repository metadata. Defaults to the value of --" + "download-path." +-msgstr "" +-"là où stocker les métadonnées du dépôt. Prend par défaut la valeur de --" +-"download-path." ++msgstr "là où stocker les métadonnées du dépôt. Prend par défaut la valeur de --download-path." + + #: plugins/reposync.py:78 + msgid "download only newest packages per-repo" +@@ -1288,9 +1200,7 @@ msgstr "lieu où stocker les dépôts téléchargés" + + #: plugins/reposync.py:84 + msgid "try to set local timestamps of local files by the one on the server" +-msgstr "" +-"essayez de définir les horodatages locaux des fichiers locaux par celui du " +-"serveur" ++msgstr "essayez de définir les horodatages locaux des fichiers locaux par celui du serveur" + + #: plugins/reposync.py:87 + msgid "download only source packages" +@@ -1298,8 +1208,7 @@ msgstr "télécharger uniquement les packages sources" + + #: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" +-msgstr "" +-"Uniquement lister les URL qui seraient téléchargées, ne pas télécharger" ++msgstr "Uniquement lister les URL qui seraient téléchargées, ne pas télécharger" + + #: plugins/reposync.py:113 + msgid "Can't use --norepopath with multiple repositories" +@@ -1324,9 +1233,7 @@ msgstr "La vérification de la signature GPG a échoué." + + #: plugins/reposync.py:196 + msgid "Download target '{}' is outside of download path '{}'." +-msgstr "" +-"La cible de téléchargement « {} » est en dehors du chemin de téléchargement " +-"« {} »." ++msgstr "La cible de téléchargement « {} » est en dehors du chemin de téléchargement « {} »." + + #: plugins/reposync.py:211 + #, python-format +@@ -1362,181 +1269,166 @@ msgstr "Besoin d'un --releasever supérieur à la version actuelle du système." + msgid "" + "Download complete! Use 'dnf {command} reboot' to start the upgrade.\n" + "To remove cached metadata and transaction use 'dnf {command} clean'" +-msgstr "" +-"Téléchargement terminé ! Utilisez 'dnf {command} reboot' pour démarrer la " +-"mise à jour.\n" +-"Pour supprimer les métadonnées mises en cache et les transactions, utilisez " +-"'dnf {command} clean'’" ++msgstr "Téléchargement terminé ! Utilisez 'dnf {command} reboot' pour démarrer la mise à jour.\n" ++"Pour supprimer les métadonnées mises en cache et les transactions, utilisez 'dnf {command} clean'’" + + #: plugins/system_upgrade.py:62 + msgid "Sorry, you need to use 'download --releasever' instead of '--network'" +-msgstr "" +-"Désolé, vous devez utiliser 'download --releasever' au lieu de '--network'’" ++msgstr "Désolé, vous devez utiliser 'download --releasever' au lieu de '--network'’" + + #: plugins/system_upgrade.py:71 + msgid "Reboot turned off, not rebooting." + msgstr "Redémarrage désactivé, pas de redémarrage." + +-#: plugins/system_upgrade.py:122 ++#: plugins/system_upgrade.py:125 + #, python-format + msgid "Screen blanking can't be disabled: %s" + msgstr "L'effacement d'écran ne peut pas être désactivé : %s" + +-#: plugins/system_upgrade.py:142 ++#: plugins/system_upgrade.py:145 + #, python-format + msgid "Failed loading state file: %s, continuing with empty state." +-msgstr "" +-"Échec du chargement du fichier d'état : %s, continuer avec un état vide." ++msgstr "Échec du chargement du fichier d'état : %s, continuer avec un état vide." + +-#: plugins/system_upgrade.py:289 ++#: plugins/system_upgrade.py:293 + msgid "The following boots appear to contain upgrade logs:" +-msgstr "" +-"Les démarrages suivants semblent contenir des journaux de mise à niveau :" ++msgstr "Les démarrages suivants semblent contenir des journaux de mise à niveau :" + +-#: plugins/system_upgrade.py:299 ++#: plugins/system_upgrade.py:303 + msgid "-- no logs were found --" + msgstr "-- aucun journal n'a été trouvé --" + +-#: plugins/system_upgrade.py:314 ++#: plugins/system_upgrade.py:318 + msgid "Cannot find logs with this index." + msgstr "Impossible de trouver des journaux avec cet index." + +-#: plugins/system_upgrade.py:323 ++#: plugins/system_upgrade.py:327 + msgid "Unable to match systemd journal entry" + msgstr "Impossible de faire correspondre l'entrée du journal de systemd" + +-#: plugins/system_upgrade.py:344 ++#: plugins/system_upgrade.py:348 + msgid "Prepare system for upgrade to a new release" + msgstr "Préparer le système pour la mise à niveau vers une nouvelle version" + +-#: plugins/system_upgrade.py:360 ++#: plugins/system_upgrade.py:364 + msgid "keep installed packages if the new release's version is older" +-msgstr "" +-"Conserver les paquets installés si la version de la nouvelle version est " +-"plus ancienne" ++msgstr "Conserver les paquets installés si la version de la nouvelle version est plus ancienne" + +-#: plugins/system_upgrade.py:364 ++#: plugins/system_upgrade.py:368 ++msgid "power off system after the operation is completed" ++msgstr "éteindre le système une fois l’opération terminée" ++ ++#: plugins/system_upgrade.py:372 + msgid "which logs to show" + msgstr "Quels journaux afficher" + +-#: plugins/system_upgrade.py:398 ++#: plugins/system_upgrade.py:406 + #, python-brace-format + msgid "Incompatible version of data. Rerun 'dnf {command} download [OPTIONS]'" +-msgstr "" +-"Version incompatible des données. Relancez 'dnf {command} download " +-"[OPTIONS]'’" ++msgstr "Version incompatible des données. Relancez 'dnf {command} download [OPTIONS]'’" + +-#: plugins/system_upgrade.py:434 ++#: plugins/system_upgrade.py:442 + msgid "Command 'offline-distrosync' cannot be used with --no-downgrade option" +-msgstr "" +-"La commande 'offline-distrosync' ne peut pas être utilisée avec l'option " +-"--no-downgrade" ++msgstr "La commande 'offline-distrosync' ne peut pas être utilisée avec l'option --no-downgrade" + +-#: plugins/system_upgrade.py:454 ++#: plugins/system_upgrade.py:462 + msgid "" + "WARNING: this operation is not supported on the RHEL distribution. Proceed " + "at your own risk." +-msgstr "" +-"AVERTISSEMENT : cette opération n'est pas prise en charge sur la " +-"distribution RHEL. Procédez à vos propres risques." ++msgstr "AVERTISSEMENT : cette opération n'est pas prise en charge sur la distribution RHEL. Procédez à vos propres risques." + +-#: plugins/system_upgrade.py:458 ++#: plugins/system_upgrade.py:466 + msgid "Additional information for System Upgrade: {}" + msgstr "Informations supplémentaires pour la mise à niveau du système : {}" + +-#: plugins/system_upgrade.py:461 ++#: plugins/system_upgrade.py:469 + msgid "" + "Before you continue ensure that your system is fully upgraded by running " + "\"dnf --refresh upgrade\". Do you want to continue" +-msgstr "" +-"Avant de continuer, assurez-vous que votre système est entièrement mis à " +-"jour en exécutant \"dnf --refresh upgrade\". Voulez-vous continuer" ++msgstr "Avant de continuer, assurez-vous que votre système est entièrement mis à jour en exécutant \"dnf --refresh upgrade\". Voulez-vous continuer" + +-#: plugins/system_upgrade.py:465 ++#: plugins/system_upgrade.py:473 + msgid "Operation aborted." + msgstr "Opération avortée." + +-#: plugins/system_upgrade.py:526 ++#: plugins/system_upgrade.py:534 + msgid "system is not ready for upgrade" + msgstr "Le système n'est pas prêt pour la mise à niveau" + +-#: plugins/system_upgrade.py:529 ++#: plugins/system_upgrade.py:537 + #, python-brace-format + msgid "" + "the transaction was not prepared for '{command}'. Rerun 'dnf {command} " + "download [OPTIONS]'" +-msgstr "" +-"La transaction n'a pas été préparée pour '{command}'. Relancez 'dnf {command}" +-" download [OPTIONS]'" ++msgstr "La transaction n'a pas été préparée pour '{command}'. Relancez 'dnf {command} download [OPTIONS]'" + +-#: plugins/system_upgrade.py:533 ++#: plugins/system_upgrade.py:541 + msgid "upgrade is already scheduled" + msgstr "la mise à niveau est déjà prévue" + +-#: plugins/system_upgrade.py:539 ++#: plugins/system_upgrade.py:547 + msgid "trigger file does not exist. exiting quietly." + msgstr "Le fichier de déclenchement n'existe pas. Il se termine tranquillement." + +-#: plugins/system_upgrade.py:542 ++#: plugins/system_upgrade.py:550 + msgid "another upgrade tool is running. exiting quietly." +-msgstr "" +-"Un autre outil de mise à niveau est en cours d'exécution. il se termine " +-"tranquillement." ++msgstr "Un autre outil de mise à niveau est en cours d'exécution. il se termine tranquillement." + +-#: plugins/system_upgrade.py:551 ++#: plugins/system_upgrade.py:559 + #, python-brace-format + msgid "use 'dnf {command} reboot' to begin the upgrade" + msgstr "Utilisez 'dnf {command} reboot' pour commencer la mise à jour" + +-#: plugins/system_upgrade.py:569 ++#: plugins/system_upgrade.py:579 + msgid "Rebooting to perform upgrade." + msgstr "Redémarrage pour effectuer la mise à niveau." + +-#: plugins/system_upgrade.py:602 ++#: plugins/system_upgrade.py:615 + msgid "Starting offline upgrade. This will take a while." +-msgstr "" +-"Je commence la mise à jour hors ligne. Cela va prendre un certain temps." ++msgstr "Je commence la mise à jour hors ligne. Cela va prendre un certain temps." + +-#: plugins/system_upgrade.py:604 ++#: plugins/system_upgrade.py:617 + msgid "Starting offline distrosync. This will take a while." +-msgstr "" +-"Démarrage de la distrosync hors ligne. Cela va prendre un certain temps." ++msgstr "Démarrage de la distrosync hors ligne. Cela va prendre un certain temps." + +-#: plugins/system_upgrade.py:606 ++#: plugins/system_upgrade.py:619 + msgid "Starting system upgrade. This will take a while." +-msgstr "" +-"Je commence la mise à jour du système. Cela va prendre un certain temps." ++msgstr "Je commence la mise à jour du système. Cela va prendre un certain temps." + +-#: plugins/system_upgrade.py:622 ++#: plugins/system_upgrade.py:635 + msgid "Cleaning up downloaded data..." + msgstr "Nettoyage des données téléchargées..." + +-#: plugins/system_upgrade.py:652 ++#: plugins/system_upgrade.py:665 + msgid "" + "The system-upgrade transaction is empty, your system is already up-to-date." + msgstr "La transaction system-upgrade est vide, votre système est déjà à jour." + +-#: plugins/system_upgrade.py:661 ++#: plugins/system_upgrade.py:674 + msgid "Transaction saved to {}." + msgstr "Transaction enregistrée vers {}." + +-#: plugins/system_upgrade.py:664 ++#: plugins/system_upgrade.py:677 + msgid "Error storing transaction: {}" + msgstr "Erreur lors du stockage de la transaction : {}" + +-#: plugins/system_upgrade.py:686 ++#: plugins/system_upgrade.py:699 + msgid "Download finished." + msgstr "Téléchargement terminé." + +-#: plugins/system_upgrade.py:689 plugins/system_upgrade.py:690 ++#: plugins/system_upgrade.py:703 ++msgid "Upgrade complete! Cleaning up and powering off..." ++msgstr "Mise à jour terminée ! Nettoyage et fermeture du système..." ++ ++#: plugins/system_upgrade.py:705 + msgid "Upgrade complete! Cleaning up and rebooting..." + msgstr "Mise à jour terminée ! Nettoyage et redémarrage..." + +-#: plugins/system_upgrade.py:699 ++#: plugins/system_upgrade.py:717 + msgid "Prepare offline upgrade of the system" + msgstr "Préparer la mise à niveau hors ligne du système" + +-#: plugins/system_upgrade.py:704 ++#: plugins/system_upgrade.py:722 + msgid "Prepare offline distrosync of the system" + msgstr "Préparer la distrosynchronisation hors ligne du système" + +@@ -1583,16 +1475,12 @@ msgstr "Les exclusions du plugin versionlock n’ont pas été appliquées" + + #: plugins/versionlock.py:43 + msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" +-msgstr "" +-"Plugin versionlock : nombre de règles de verrouillage du fichier \"{}\" " +-"appliquées : {}" ++msgstr "Plugin versionlock : nombre de règles de verrouillage du fichier \"{}\" appliquées : {}" + + #: plugins/versionlock.py:44 + msgid "" + "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" +-msgstr "" +-"Plugin versionlock : nombre de règles d’exclusion du fichier \"{}\" " +-"appliquées : {}" ++msgstr "Plugin versionlock : nombre de règles d’exclusion du fichier \"{}\" appliquées : {}" + + #: plugins/versionlock.py:45 + msgid "Versionlock plugin: could not parse pattern:" +@@ -1604,15 +1492,11 @@ msgstr "contrôle le verrouillage de version des paquets" + + #: plugins/versionlock.py:144 + msgid "Use package specifications as they are, do not try to parse them" +-msgstr "" +-"Utiliser les spécifications de paquet telles quelles, ne pas essayer de les " +-"analyser" ++msgstr "Utiliser les spécifications de paquet telles quelles, ne pas essayer de les analyser" + + #: plugins/versionlock.py:164 + msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." +-msgstr "" +-"La sous-commande '{}' est obsolète. Utilisez plutôt la sous-commande " +-"'exclude'." ++msgstr "La sous-commande '{}' est obsolète. Utilisez plutôt la sous-commande 'exclude'." + + #~ msgid "" + #~ "This repository does not have any builds yet so you cannot enable it now." +@@ -1646,5 +1530,3 @@ msgstr "" + #~ msgid "where to store downloaded repositories " + #~ msgstr "là où stocker les dépôts téléchargés " + +-#~ msgid "Could not make repository directory: %s" +-#~ msgstr "N'a pas pu créer le répertoire de dépôt : %s" +diff --git a/po/ja.po b/po/ja.po +index 60f4a29..cb2b88b 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2023-02-28 12:26+0100\n" ++"POT-Creation-Date: 2023-08-29 11:21+0200\n" + "PO-Revision-Date: 2023-03-06 13:48+0000\n" + "Last-Translator: Ludek Janda \n" + "Language-Team: Japanese の \n" ++"Fedora Project は、このリポジトリーのコンテンツに関して、 の \n" + "Copr FAQ で示されたルールを超えて権利を行使することは\n" + "ありません。また、パッケージは、任意の品質またはセキュリ\n" + "ティーレベルを固守していません。\n" +@@ -386,10 +365,7 @@ msgid "" + "* These coprs have repo file with an old format that contains no information " + "about Copr hub - the default one was assumed. Re-enable the project to fix " + "this." +-msgstr "" +-"* これらの coprs には、Copr ハブに関する情報がない古いフォーマットの repo " +-"ファイルがあります。デフォルトは仮定です。これを修正するには、プロジェクトを" +-"再度有効化してください。" ++msgstr "* これらの coprs には、Copr ハブに関する情報がない古いフォーマットの repo ファイルがあります。デフォルトは仮定です。これを修正するには、プロジェクトを再度有効化してください。" + + #: plugins/copr.py:380 + msgid "Can't parse repositories for username '{}'." +@@ -441,8 +417,7 @@ msgstr "'{0}' リポジトリーはプロジェクト '{1}' に存在しませ + msgid "" + "\n" + "Available repositories: " +-msgstr "" +-"\n" ++msgstr "\n" + "利用可能なリポジトリー: " + + #: plugins/copr.py:499 +@@ -453,13 +428,11 @@ msgid "" + "If you want to enable a non-default repository, use the following command:\n" + " 'dnf copr enable {0} '\n" + "But note that the installed repo file will likely need a manual modification." +-msgstr "" +-"\n" ++msgstr "\n" + "\n" + "デフォルト以外のリポジトリーを有効にする場合は、以下のコマンドを使用します:\n" + " 'dnf copr enable {0} '\n" +-"ただし、インストールされているリポジトリーファイルを手動で変更する必要がある" +-"可能性があることに注意してください。" ++"ただし、インストールされているリポジトリーファイルを手動で変更する必要がある可能性があることに注意してください。" + + #: plugins/copr.py:505 + #, python-brace-format +@@ -486,11 +459,9 @@ msgid "" + "{0}\n" + "\n" + "These repositories have been enabled automatically." +-msgstr "" +-"有効化した Copr リポジトリーの管理者は\n" ++msgstr "有効化した Copr リポジトリーの管理者は\n" + "他のリポジトリーに依存するように決めました。\n" +-"そのようなリポジトリーは通常、主な Corp レジストリー(ランタイム依存関係を提" +-"供) から RPM を\n" ++"そのようなリポジトリーは通常、主な Corp レジストリー(ランタイム依存関係を提供) から RPM を\n" + "正常にインストールするために必要です。\n" + "\n" + "上記の品質とバグ報告についての注意点がここでも適用\n" +@@ -575,9 +546,7 @@ msgstr "記録されたパッケージの最新バージョンをインストー + msgid "" + "Ignore architecture and install missing packages matching the name, epoch, " + "version and release." +-msgstr "" +-"アーキテクチャーを無視し、名前、エポック、バージョン、およびリリースと一致す" +-"る不足のパッケージをインストールします。" ++msgstr "アーキテクチャーを無視し、名前、エポック、バージョン、およびリリースと一致する不足のパッケージをインストールします。" + + #: plugins/debug.py:196 + msgid "limit to specified type" +@@ -587,9 +556,7 @@ msgstr "指定したタイプに限定します" + msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." +-msgstr "" +-"インストールのみのパッケージの削除を許可します。このオプションを使用すると、" +-"実行しているカーネルの削除を試みる可能性があります。" ++msgstr "インストールのみのパッケージの削除を許可します。このオプションを使用すると、実行しているカーネルの削除を試みる可能性があります。" + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -613,31 +580,25 @@ msgstr "debuginfo パッケージのインストール" + #, python-format + msgid "" + "Could not find debuginfo package for the following available packages: %s" +-msgstr "" +-"次の利用可能なパッケージの debuginfo パッケージが見つかりませんでした: %s" ++msgstr "次の利用可能なパッケージの debuginfo パッケージが見つかりませんでした: %s" + + #: plugins/debuginfo-install.py:185 + #, python-format + msgid "" + "Could not find debugsource package for the following available packages: %s" +-msgstr "" +-"次の利用可能なパッケージの debugsource パッケージが見つかりませんでした: %s" ++msgstr "次の利用可能なパッケージの debugsource パッケージが見つかりませんでした: %s" + + #: plugins/debuginfo-install.py:190 + #, python-format + msgid "" + "Could not find debuginfo package for the following installed packages: %s" +-msgstr "" +-"次のインストールされたパッケージの debuginfo パッケージが見つかりませんでし" +-"た: %s" ++msgstr "次のインストールされたパッケージの debuginfo パッケージが見つかりませんでした: %s" + + #: plugins/debuginfo-install.py:195 + #, python-format + msgid "" + "Could not find debugsource package for the following installed packages: %s" +-msgstr "" +-"次のインストールされたパッケージの debugsource パッケージが見つかりませんでし" +-"た: %s" ++msgstr "次のインストールされたパッケージの debugsource パッケージが見つかりませんでした: %s" + + #: plugins/debuginfo-install.py:199 + msgid "Unable to find a match" +@@ -675,15 +636,12 @@ msgstr "必要な依存関係を解決し、ダウンロードします" + msgid "" + "when running with --resolve, download all dependencies (do not exclude " + "already installed ones)" +-msgstr "" +-"--resolve で実行する場合、すべての依存関係をダウンロードします (インストール" +-"済みのものを除外しないでください)" ++msgstr "--resolve で実行する場合、すべての依存関係をダウンロードします (インストール済みのものを除外しないでください)" + + #: plugins/download.py:67 + msgid "" + "print list of urls where the rpms can be downloaded instead of downloading" +-msgstr "" +-"ダウンロードする代わりに、rpm をダウンロードできる url の一覧を印刷します" ++msgstr "ダウンロードする代わりに、rpm をダウンロードできる url の一覧を印刷します" + + #: plugins/download.py:72 + msgid "when running with --url, limit to specific protocols" +@@ -726,9 +684,7 @@ msgstr "翻訳されたデータの無効または空な言語" + + #: plugins/groups_manager.py:71 + msgid "Can't generate group id from '{}'. Please specify group id using --id." +-msgstr "" +-"'{}' からグループ ID を生成できません。--id を使用してグループ ID を指定して" +-"ください。" ++msgstr "'{}' からグループ ID を生成できません。--id を使用してグループ ID を指定してください。" + + #: plugins/groups_manager.py:79 + msgid "create and edit groups metadata file" +@@ -804,8 +760,7 @@ msgstr "パッケージ仕様" + + #: plugins/groups_manager.py:156 + msgid "Can't edit group without specifying it (use --id or --name)" +-msgstr "" +-"指定せずにはグループを編集できません (--id または --name を使用してください)" ++msgstr "指定せずにはグループを編集できません (--id または --name を使用してください)" + + #: plugins/groups_manager.py:190 + msgid "Can't load file \"{}\": {}" +@@ -827,14 +782,11 @@ msgstr "存在しないグループからパッケージを削除できません + msgid "" + "Group id '{}' generated from '{}' is duplicit. Please specify group id using " + "--id." +-msgstr "" +-"'{}' から生成されたグループ ID '{}' は重複しています。--id を使用してグルー" +-"プ ID を指定してください。" ++msgstr "'{}' から生成されたグループ ID '{}' は重複しています。--id を使用してグループ ID を指定してください。" + + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" +-msgstr "" +-"他のパッケージから必要とされないインスール済みパッケージを一覧表示します" ++msgstr "他のパッケージから必要とされないインスール済みパッケージを一覧表示します" + + #: plugins/local.py:122 + msgid "Unable to create a directory '{}' due to '{}'" +@@ -867,9 +819,7 @@ msgstr "履歴データを移行中..." + #: plugins/modulesync.py:37 + msgid "" + "Download packages from modules and/or create a repository with modular data" +-msgstr "" +-"モジュールからパッケージをダウンロードしたり、モジュラーデータでリポジトリー" +-"を作成したりします" ++msgstr "モジュールからパッケージをダウンロードしたり、モジュラーデータでリポジトリーを作成したりします" + + #: plugins/modulesync.py:44 + msgid "MODULE" +@@ -885,9 +835,7 @@ msgstr "ソースパッケージを含むリポジトリーを有効にします + + #: plugins/modulesync.py:49 + msgid "enable repositories with debug-info and debug-source packages" +-msgstr "" +-"debug-info パッケージおよび debug-source パッケージでリポジトリーを有効にしま" +-"す" ++msgstr "debug-info パッケージおよび debug-source パッケージでリポジトリーを有効にします" + + #: plugins/modulesync.py:53 + msgid "download only packages from newest modules" +@@ -902,9 +850,7 @@ msgstr[0] "引数に一致するものが見つかりませんでした: '{}'" + msgid "" + "Creation of repository failed with return code {}. All downloaded content " + "was kept on the system" +-msgstr "" +-"リポジトリーの作成は戻りコード {} で失敗しました。ダウンロードされたコンテン" +-"ツはすべてシステムに保持されました" ++msgstr "リポジトリーの作成は戻りコード {} で失敗しました。ダウンロードされたコンテンツはすべてシステムに保持されました" + + #: plugins/modulesync.py:144 + #, python-brace-format +@@ -914,9 +860,7 @@ msgstr "モジュール '{1}' のアーティファクト '{0}' に一致する + #: plugins/modulesync.py:162 + #, python-brace-format + msgid "No match for package name '{0}' in profile {1} from module {2}" +-msgstr "" +-"モジュール {2} からのプロファイル {1} のパッケージ名 '{0}' に一致するものはあ" +-"りません" ++msgstr "モジュール {2} からのプロファイル {1} のパッケージ名 '{0}' に一致するものはありません" + + #: plugins/modulesync.py:166 + msgid "No mach for argument '{}'" +@@ -927,51 +871,47 @@ msgstr "引数 '{}' に一致するものはありません" + msgid "Unable to satisfy require {}" + msgstr "要求 {} を満たすことができません" + +-#: plugins/needs_restarting.py:66 ++#: plugins/needs_restarting.py:67 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." +-msgstr "" +-"needs-restarting ファイル \"{file}\" に指定されている \"{pkg}\" というパッ" +-"ケージのインストール済みパッケージが見つかりません。" ++msgstr "needs-restarting ファイル \"{file}\" に指定されている \"{pkg}\" というパッケージのインストール済みパッケージが見つかりません。" + +-#: plugins/needs_restarting.py:220 ++#: plugins/needs_restarting.py:252 + msgid "determine updated binaries that need restarting" + msgstr "再起動が必要な更新済みバイナリーを決定します" + +-#: plugins/needs_restarting.py:225 ++#: plugins/needs_restarting.py:257 + msgid "only consider this user's processes" + msgstr "このユーザーのプロセスのみを検討します" + +-#: plugins/needs_restarting.py:227 ++#: plugins/needs_restarting.py:259 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" +-msgstr "" +-"再起動が必要か (終了コード 1) 必要でないか (終了コード 0) のみを報告します" ++msgstr "再起動が必要か (終了コード 1) 必要でないか (終了コード 0) のみを報告します" + +-#: plugins/needs_restarting.py:230 ++#: plugins/needs_restarting.py:262 + msgid "only report affected systemd services" + msgstr "影響を受ける systemd サービスのみを報告" + +-#: plugins/needs_restarting.py:253 ++#: plugins/needs_restarting.py:285 + msgid "Core libraries or services have been updated since boot-up:" + msgstr "起動以降にコアライブラリーまたはサービスがアップデートされました:" + +-#: plugins/needs_restarting.py:258 ++#: plugins/needs_restarting.py:290 + msgid "Reboot is required to fully utilize these updates." + msgstr "これらのアップデートを完全に活用するには、再起動が必要です。" + +-#: plugins/needs_restarting.py:259 ++#: plugins/needs_restarting.py:291 + msgid "More information:" + msgstr "詳細情報:" + +-#: plugins/needs_restarting.py:263 ++#: plugins/needs_restarting.py:295 + msgid "No core libraries or services have been updated since boot-up." +-msgstr "" +-"起動以降にアップデートされたコアライブラリーまたはサービスはありません。" ++msgstr "起動以降にアップデートされたコアライブラリーまたはサービスはありません。" + +-#: plugins/needs_restarting.py:265 ++#: plugins/needs_restarting.py:297 + msgid "Reboot should not be necessary." + msgstr "再起動な必要ありません。" + +@@ -1003,8 +943,7 @@ msgstr "リポジトリーの未解決の依存関係の一覧を表示します + + #: plugins/repoclosure.py:69 + msgid "Repoclosure ended with unresolved dependencies ({}) across {} packages." +-msgstr "" +-"Repoclosure は、{} パッケージで依存関係 ({}) が解決されずに終了します。" ++msgstr "Repoclosure は、{} パッケージで依存関係 ({}) が解決されずに終了します。" + + #: plugins/repoclosure.py:159 + msgid "check packages of the given archs, can be specified multiple times" +@@ -1038,9 +977,7 @@ msgstr "新しいリポジトリーを指定します、これは複数回使用 + msgid "" + "Specify architectures to compare, can be used multiple times. By default, " + "only source rpms are compared." +-msgstr "" +-"比較するアーキテクチャーを指定します、これは複数回使用できます。デフォルト" +-"で、ソース rpms のみが比較されます。" ++msgstr "比較するアーキテクチャーを指定します、これは複数回使用できます。デフォルトで、ソース rpms のみが比較されます。" + + #: plugins/repodiff.py:67 + msgid "Output additional data about the size of the changes." +@@ -1049,9 +986,7 @@ msgstr "変更サイズに関する追加データを出力します。" + #: plugins/repodiff.py:69 + msgid "" + "Compare packages also by arch. By default packages are compared just by name." +-msgstr "" +-"パッケージを Arch でも比較します。デフォルトで、パッケージは名前のみで比較さ" +-"れます。" ++msgstr "パッケージを Arch でも比較します。デフォルトで、パッケージは名前のみで比較されます。" + + #: plugins/repodiff.py:72 + msgid "Output a simple one line message for modified packages." +@@ -1061,9 +996,7 @@ msgstr "変更されたパッケージに簡単な 1 行メッセージを出力 + msgid "" + "Split the data for modified packages between upgraded and downgraded " + "packages." +-msgstr "" +-"アップグレードされたパッケージとダウングレードされたパッケージとの間で、変更" +-"されたパッケージのデータを分割します。" ++msgstr "アップグレードされたパッケージとダウングレードされたパッケージとの間で、変更されたパッケージのデータを分割します。" + + #: plugins/repodiff.py:86 + msgid "Both old and new repositories must be set." +@@ -1089,32 +1022,28 @@ msgstr "により廃止されました: {}" + msgid "" + "\n" + "Upgraded packages" +-msgstr "" +-"\n" ++msgstr "\n" + "アップグレードされたパッケージ" + + #: plugins/repodiff.py:200 + msgid "" + "\n" + "Downgraded packages" +-msgstr "" +-"\n" ++msgstr "\n" + "ダウングレードされたパッケージ" + + #: plugins/repodiff.py:207 + msgid "" + "\n" + "Modified packages" +-msgstr "" +-"\n" ++msgstr "\n" + "変更されたパッケージ" + + #: plugins/repodiff.py:212 + msgid "" + "\n" + "Summary" +-msgstr "" +-"\n" ++msgstr "\n" + "サマリー" + + #: plugins/repodiff.py:213 +@@ -1246,9 +1175,7 @@ msgstr "comps.xml もダウンロードして展開します" + msgid "" + "where to store downloaded repository metadata. Defaults to the value of --" + "download-path." +-msgstr "" +-"ダウンロード済みリポジトリーメタデータの保管場所。初期値は --download-path で" +-"す。" ++msgstr "ダウンロード済みリポジトリーメタデータの保管場所。初期値は --download-path です。" + + #: plugins/reposync.py:78 + msgid "download only newest packages per-repo" +@@ -1272,9 +1199,7 @@ msgstr "ソースパッケージのみをダウンロード" + + #: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" +-msgstr "" +-"ダウンロードする予定のものの URL をリストするだけで、ダウンロードしないでくだ" +-"さい" ++msgstr "ダウンロードする予定のものの URL をリストするだけで、ダウンロードしないでください" + + #: plugins/reposync.py:113 + msgid "Can't use --norepopath with multiple repositories" +@@ -1318,8 +1243,7 @@ msgstr "リポジトリー %s の comps.xml が保存されました" + + #: plugins/show_leaves.py:54 + msgid "New leaves:" +-msgstr "" +-"新規のリーフパッケージ (他のパッケージから依存されていないパッケージ) :" ++msgstr "新規のリーフパッケージ (他のパッケージから依存されていないパッケージ) :" + + #. Translators: This string is only used in unit tests. + #: plugins/system_upgrade.py:45 +@@ -1336,168 +1260,166 @@ msgstr "現在のシステムバージョンよりも大きい --releasever が + msgid "" + "Download complete! Use 'dnf {command} reboot' to start the upgrade.\n" + "To remove cached metadata and transaction use 'dnf {command} clean'" +-msgstr "" +-"ダウンロードが完了しました! 'dnf {command} reboot' " +-"を使用して、アップグレードを開始します。\n" +-"キャッシュしたメタデータやトランザクションを削除するには、'dnf {command} " +-"clean' を使用します』" ++msgstr "ダウンロードが完了しました! 'dnf {command} reboot' を使用して、アップグレードを開始します。\n" ++"キャッシュしたメタデータやトランザクションを削除するには、'dnf {command} clean' を使用します』" + + #: plugins/system_upgrade.py:62 + msgid "Sorry, you need to use 'download --releasever' instead of '--network'" +-msgstr "申し訳ございません。'--network' の代わりに 'download --releasever' " +-"を使用する必要があります』" ++msgstr "申し訳ございません。'--network' の代わりに 'download --releasever' を使用する必要があります』" + + #: plugins/system_upgrade.py:71 + msgid "Reboot turned off, not rebooting." + msgstr "再起動ではなく、再起動をオフにしました。" + +-#: plugins/system_upgrade.py:122 ++#: plugins/system_upgrade.py:125 + #, python-format + msgid "Screen blanking can't be disabled: %s" + msgstr "空白の画面は無効にできません: %s" + +-#: plugins/system_upgrade.py:142 ++#: plugins/system_upgrade.py:145 + #, python-format + msgid "Failed loading state file: %s, continuing with empty state." + msgstr "状態ファイルの読み込みに失敗: %s、空の状態で続行。" + +-#: plugins/system_upgrade.py:289 ++#: plugins/system_upgrade.py:293 + msgid "The following boots appear to contain upgrade logs:" + msgstr "以下のブートには、アップグレードログが含まれているように見えます:" + +-#: plugins/system_upgrade.py:299 ++#: plugins/system_upgrade.py:303 + msgid "-- no logs were found --" + msgstr "-- ログが見つかりませんでした --" + +-#: plugins/system_upgrade.py:314 ++#: plugins/system_upgrade.py:318 + msgid "Cannot find logs with this index." + msgstr "このインデックスのログが見つかりません。" + +-#: plugins/system_upgrade.py:323 ++#: plugins/system_upgrade.py:327 + msgid "Unable to match systemd journal entry" + msgstr "systemd ジャーナルエントリーにマッチできない" + +-#: plugins/system_upgrade.py:344 ++#: plugins/system_upgrade.py:348 + msgid "Prepare system for upgrade to a new release" + msgstr "新しいリリースへのアップグレードに向けたシステムの準備" + +-#: plugins/system_upgrade.py:360 ++#: plugins/system_upgrade.py:364 + msgid "keep installed packages if the new release's version is older" +-msgstr "新しいリリースのバージョンが古い場合は、インストール済みパッケージを維持しま" +-"す" ++msgstr "新しいリリースのバージョンが古い場合は、インストール済みパッケージを維持します" + +-#: plugins/system_upgrade.py:364 ++#: plugins/system_upgrade.py:368 ++msgid "power off system after the operation is completed" ++msgstr "操作が完了したらシステムの電源を切ります" ++ ++#: plugins/system_upgrade.py:372 + msgid "which logs to show" + msgstr "表示するログ" + +-#: plugins/system_upgrade.py:398 ++#: plugins/system_upgrade.py:406 + #, python-brace-format + msgid "Incompatible version of data. Rerun 'dnf {command} download [OPTIONS]'" +-msgstr "互換性のないバージョンのデータ。'dnf {command} download [OPTIONS]' " +-"を再実行します』" ++msgstr "互換性のないバージョンのデータ。'dnf {command} download [OPTIONS]' を再実行します』" + +-#: plugins/system_upgrade.py:434 ++#: plugins/system_upgrade.py:442 + msgid "Command 'offline-distrosync' cannot be used with --no-downgrade option" + msgstr "コマンド 'offline-distrosync' は --no-downgrade オプションと併用できません" + +-#: plugins/system_upgrade.py:454 ++#: plugins/system_upgrade.py:462 + msgid "" + "WARNING: this operation is not supported on the RHEL distribution. Proceed " + "at your own risk." +-msgstr "警告: この操作は RHEL ディストリビューションではサポートされていません。自己" +-"責任で続行してください。" ++msgstr "警告: この操作は RHEL ディストリビューションではサポートされていません。自己責任で続行してください。" + +-#: plugins/system_upgrade.py:458 ++#: plugins/system_upgrade.py:466 + msgid "Additional information for System Upgrade: {}" + msgstr "システムアップグレードの追加情報: {}" + +-#: plugins/system_upgrade.py:461 ++#: plugins/system_upgrade.py:469 + msgid "" + "Before you continue ensure that your system is fully upgraded by running " + "\"dnf --refresh upgrade\". Do you want to continue" +-msgstr "続行する前に、dnf --refresh upgrade を実行して、システムが完全にアップグレー" +-"ドされていることを確認します。続行しますか" ++msgstr "続行する前に、dnf --refresh upgrade を実行して、システムが完全にアップグレードされていることを確認します。続行しますか" + +-#: plugins/system_upgrade.py:465 ++#: plugins/system_upgrade.py:473 + msgid "Operation aborted." + msgstr "操作が中断されました。" + +-#: plugins/system_upgrade.py:526 ++#: plugins/system_upgrade.py:534 + msgid "system is not ready for upgrade" + msgstr "システムがアップグレードの準備ができていません" + +-#: plugins/system_upgrade.py:529 ++#: plugins/system_upgrade.py:537 + #, python-brace-format + msgid "" + "the transaction was not prepared for '{command}'. Rerun 'dnf {command} " + "download [OPTIONS]'" +-msgstr "" +-"トランザクションは '{command}' に対して準備されていません。'dnf {command} " +-"download [OPTIONS]' を再実行します』" ++msgstr "トランザクションは '{command}' に対して準備されていません。'dnf {command} download [OPTIONS]' を再実行します』" + +-#: plugins/system_upgrade.py:533 ++#: plugins/system_upgrade.py:541 + msgid "upgrade is already scheduled" + msgstr "アップグレードはすでにスケジュールされています" + +-#: plugins/system_upgrade.py:539 ++#: plugins/system_upgrade.py:547 + msgid "trigger file does not exist. exiting quietly." + msgstr "トリガーファイルは存在しません。間もなく終了します。" + +-#: plugins/system_upgrade.py:542 ++#: plugins/system_upgrade.py:550 + msgid "another upgrade tool is running. exiting quietly." + msgstr "別のアップグレードツールが実行中で、警告なしで終了します。" + +-#: plugins/system_upgrade.py:551 ++#: plugins/system_upgrade.py:559 + #, python-brace-format + msgid "use 'dnf {command} reboot' to begin the upgrade" + msgstr "'dnf {command} reboot' を使用してアップグレードを開始します" + +-#: plugins/system_upgrade.py:569 ++#: plugins/system_upgrade.py:579 + msgid "Rebooting to perform upgrade." + msgstr "再起動してアップグレードを実行します。" + +-#: plugins/system_upgrade.py:602 ++#: plugins/system_upgrade.py:615 + msgid "Starting offline upgrade. This will take a while." + msgstr "オフラインアップグレードの開始。これには時間がかかります。" + +-#: plugins/system_upgrade.py:604 ++#: plugins/system_upgrade.py:617 + msgid "Starting offline distrosync. This will take a while." + msgstr "オフラインの distrosync の開始。これには時間がかかります。" + +-#: plugins/system_upgrade.py:606 ++#: plugins/system_upgrade.py:619 + msgid "Starting system upgrade. This will take a while." + msgstr "システムのアップグレードを開始します。これには時間がかかります。" + +-#: plugins/system_upgrade.py:622 ++#: plugins/system_upgrade.py:635 + msgid "Cleaning up downloaded data..." + msgstr "ダウンロードしたデータのクリーンアップ中..." + +-#: plugins/system_upgrade.py:652 ++#: plugins/system_upgrade.py:665 + msgid "" + "The system-upgrade transaction is empty, your system is already up-to-date." + msgstr "システムアップグレードトランザクションは空で、システムはすでに最新です。" + +-#: plugins/system_upgrade.py:661 ++#: plugins/system_upgrade.py:674 + msgid "Transaction saved to {}." + msgstr "{} に保存されているトランザクション。" + +-#: plugins/system_upgrade.py:664 ++#: plugins/system_upgrade.py:677 + msgid "Error storing transaction: {}" + msgstr "トランザクションの保存エラー: {}" + +-#: plugins/system_upgrade.py:686 ++#: plugins/system_upgrade.py:699 + msgid "Download finished." + msgstr "ダウンロードが完了しました。" + +-#: plugins/system_upgrade.py:689 plugins/system_upgrade.py:690 ++#: plugins/system_upgrade.py:703 ++msgid "Upgrade complete! Cleaning up and powering off..." ++msgstr "アップグレードの完了! クリーンアップおよび電源オフを行っています..." ++ ++#: plugins/system_upgrade.py:705 + msgid "Upgrade complete! Cleaning up and rebooting..." + msgstr "アップグレードの完了! クリーンアップおよび再起動を行っています..." + +-#: plugins/system_upgrade.py:699 ++#: plugins/system_upgrade.py:717 + msgid "Prepare offline upgrade of the system" + msgstr "システムのオフラインアップグレードの準備" + +-#: plugins/system_upgrade.py:704 ++#: plugins/system_upgrade.py:722 + msgid "Prepare offline distrosync of the system" + msgstr "システムのオフラインの distrosync を準備します" + +@@ -1565,9 +1487,7 @@ msgstr "パッケージ仕様をそのまま使用し、解析を試みないで + + #: plugins/versionlock.py:164 + msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." +-msgstr "" +-"サブコマンド '{}' は非推奨になりました。代わりに 'exclude' サブコマンドを使用" +-"してください。" ++msgstr "サブコマンド '{}' は非推奨になりました。代わりに 'exclude' サブコマンドを使用してください。" + + #~ msgid "" + #~ "This repository does not have any builds yet so you cannot enable it now." +@@ -1591,5 +1511,3 @@ msgstr "" + #~ msgid "where to store downloaded repositories " + #~ msgstr "ダウンロード済みリポジトリーの保管場所 " + +-#~ msgid "Could not make repository directory: %s" +-#~ msgstr "リポジトリーディレクトリーを作成できませんでした: %s" +diff --git a/po/ko.po b/po/ko.po +index 6b77d34..ade9619 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -6,11 +6,11 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2023-02-28 12:26+0100\n" ++"POT-Creation-Date: 2023-08-29 11:21+0200\n" + "PO-Revision-Date: 2023-03-03 04:20+0000\n" + "Last-Translator: 김인수 \n" +-"Language-Team: Korean \n" ++"Language-Team: Korean \n" + "Language: ko\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" +@@ -29,7 +29,7 @@ msgstr "'%s'는 'MACRO EXPR' 형식이 아닙니다" + + #: plugins/builddep.py:90 + msgid "packages with builddeps to install" +-msgstr "설치 할 builddeps가 있는 꾸러미" ++msgstr "설치 할 builddeps가 있는 패키지" + + #: plugins/builddep.py:93 + msgid "define a macro for spec file parsing" +@@ -53,14 +53,14 @@ msgstr "RPM: {}" + + #: plugins/builddep.py:153 + msgid "Some packages could not be found." +-msgstr "몇몇 꾸러미를 찾을 수 없습니다." ++msgstr "몇몇 패키지를 찾을 수 없습니다." + + #. No provides, no files + #. Richdeps can have no matches but it could be correct (solver must decide later) + #: plugins/builddep.py:173 + #, python-format + msgid "No matching package to install: '%s'" +-msgstr "설치: '%s' 꾸러미가 일치하지 않습니다" ++msgstr "설치: '%s' 패키지가 일치하지 않습니다" + + #: plugins/builddep.py:191 + #, python-format +@@ -74,8 +74,7 @@ msgstr "모든 의존성을 만족하지 않습니다" + #: plugins/builddep.py:208 + msgid "" + "Warning: -D or --define arguments have no meaning for source rpm packages." +-msgstr "경고: -D 또는 --define 인수는 원천 rpm 꾸러미를 위해 의미를 가지고 있지 " +-"않습니다." ++msgstr "경고: -D 또는 --define 인수는 원천 rpm 패키지를 위해 의미를 가지고 있지 않습니다." + + #: plugins/builddep.py:215 + #, python-format +@@ -85,7 +84,7 @@ msgstr "여는데 실패하였습니다 '%s', 지정한 파일: %s가 유효하 + #: plugins/builddep.py:234 plugins/repoclosure.py:124 + #, python-format + msgid "no package matched: %s" +-msgstr "일치하는 꾸러미 없음: %s" ++msgstr "일치하는 패키지 없음: %s" + + #: plugins/changelog.py:37 + #, python-brace-format +@@ -94,31 +93,27 @@ msgstr "유효한 날짜가 아닙니다: \"{0}\"." + + #: plugins/changelog.py:43 + msgid "Show changelog data of packages" +-msgstr "꾸러미의 변화 기록자료를 보여줍니다" ++msgstr "패키지의 변화 기록자료를 보여줍니다" + + #: plugins/changelog.py:51 + msgid "" + "show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " + "is recommended." +-msgstr "" +-"DATE 이후에 변화기록를 보여줍니다. 모호함을 피하기 위하여, YYYY-MM-DD 형식을 " +-"추천합니다." ++msgstr "DATE 이후에 변경 로그를 보여줍니다. 모호함을 피하기 위하여, YYYY-MM-DD 형식을 추천합니다." + + #: plugins/changelog.py:55 + msgid "show given number of changelog entries per package" +-msgstr "주어진 수의 꾸러미 마다 변화기록 항목을 보여줍니다" ++msgstr "주어진 수의 패키지 마다 변경 로그 항목을 보여줍니다" + + #: plugins/changelog.py:58 + msgid "" + "show only new changelog entries for packages, that provide an upgrade for " + "some of already installed packages." +-msgstr "" +-"몇몇 이미 설치된 꾸러미들의 최신화를 제공하는 꾸러미를 위하여 새로운 변화기록" +-"만을 보여줍니다." ++msgstr "몇몇 이미 설치된 패키지들의 최신화를 제공하는 패키지를 위하여 새로운 변경 로그만을 보여줍니다." + + #: plugins/changelog.py:60 + msgid "PACKAGE" +-msgstr "꾸러미" ++msgstr "패키지" + + #: plugins/changelog.py:81 plugins/debuginfo-install.py:90 + #, python-format +@@ -127,20 +122,20 @@ msgstr "인수가 일치하지 않습니다: %s" + + #: plugins/changelog.py:109 + msgid "Listing changelogs since {}" +-msgstr "{} 이 후의 변화기록 목록" ++msgstr "{} 이 후의 변경 로그 목록" + + #: plugins/changelog.py:111 + msgid "Listing only latest changelog" + msgid_plural "Listing {} latest changelogs" +-msgstr[0] "최신화된 변화기록 목록 {}" ++msgstr[0] "최신화된 변경 로그 목록 {}" + + #: plugins/changelog.py:116 + msgid "Listing only new changelogs since installed version of the package" +-msgstr "꾸러미 설치 버전 이후의 새로운 변화 기록만 목록화함" ++msgstr "패키지 설치 버전 이후의 새로운 변화 기록만 목록화함" + + #: plugins/changelog.py:118 + msgid "Listing all changelogs" +-msgstr "모든 변화기록 목록" ++msgstr "모든 변경 로그 목록" + + #: plugins/changelog.py:122 + msgid "Changelogs for {}" +@@ -187,9 +182,7 @@ msgstr "다음 인수 중 하나가 필요합니다: {}" + msgid "" + "Warning: --enablerepo/--disablerepo arguments have no meaningwith config " + "manager. Use --set-enabled/--set-disabled instead." +-msgstr "" +-"경고: -- --enablerepo/--disablerepo 인수는 설정 관리자와 함께 의미를 갖고 있" +-"지 않습니다. 대신에 --set-enabled/--set-disabled를 사용하세요." ++msgstr "경고: -- --enablerepo/--disablerepo 인수는 설정 관리자와 함께 의미를 갖고 있지 않습니다. 대신에 --set-enabled/--set-disabled를 사용하세요." + + #: plugins/config_manager.py:132 + #, python-format +@@ -250,8 +243,7 @@ msgid "" + " copr list --available-by-user=ignatenkobrain\n" + " copr search tests\n" + " " +-msgstr "" +-"\n" ++msgstr "\n" + " enable name/project [chroot]\n" + " disable name/project\n" + " remove name/project\n" +@@ -297,9 +289,7 @@ msgstr "오류: " + msgid "" + "specify Copr hub either with `--hub` or using `copr_hub/copr_username/" + "copr_projectname` format" +-msgstr "" +-"Corp hub를 `--hub` 또는 사용하기 `copr_hub/copr_username/copr_projectname`형" +-"식으로 지정합니다" ++msgstr "Corp hub를 `--hub` 또는 사용하기 `copr_hub/copr_username/copr_projectname`형식으로 지정합니다" + + #: plugins/copr.py:168 + msgid "multiple hubs specified" +@@ -321,9 +311,7 @@ msgstr "선택적인 chroot의 나쁜 형식. 형식은 배포-버전-구조입 + + #: plugins/copr.py:264 + msgid "use format `copr_username/copr_projectname` to reference copr project" +-msgstr "" +-"copr 프로젝트를 참조하기 위해`copr_username / copr_projectname` 형식을 사용하" +-"십시오" ++msgstr "copr 프로젝트를 참조하기 위해`copr_username / copr_projectname` 형식을 사용하십시오" + + #: plugins/copr.py:266 + msgid "bad copr project format" +@@ -343,20 +331,16 @@ msgid "" + "\n" + "Please do not file bug reports about these packages in Fedora\n" + "Bugzilla. In case of problems, contact the owner of this repository.\n" +-msgstr "" +-"\n" +-"Core 저정소를 활성화합니다. 이 저장소는 주요 배포판 부분이 아님을 알고 있기 " +-"바라고,\n" ++msgstr "\n" ++"Core 저정소를 활성화합니다. 이 저장소는 주요 배포판 부분이 아님을 알고 있기 바라고,\n" + "품질이 다를 수 있습니다.\n" + "\n" + "페도라 프로젝트는\n" +-"에\n" +-"Core FAQ에 있는 설명된 규칙을 넘는 저장소 내용 이상의 권한을 시험하지 않으" +-"며,\n" +-"그리고 꾸러미(package)는 어떤 품질이나 보안 수준을 유지하지 않습니다.\n" ++"에\n" ++"Core FAQ에 있는 설명된 규칙을 넘는 저장소 내용 이상의 권한을 시험하지 않으며,\n" ++"그리고 패키지(package)는 어떤 품질이나 보안 수준을 유지하지 않습니다.\n" + "\n" +-"페도라 버그질라에 이들 꾸러미에 대한 파일 결점 보고를 제출하지 마세요.\n" ++"페도라 버그질라에 이들 패키지에 대한 파일 결점 보고를 제출하지 마세요.\n" + "이들 문제는, 이들 저장소 소유자와 접촉하세요.\n" + + #: plugins/copr.py:297 +@@ -380,9 +364,7 @@ msgid "" + "* These coprs have repo file with an old format that contains no information " + "about Copr hub - the default one was assumed. Re-enable the project to fix " + "this." +-msgstr "" +-"* 이들 coprs은 Copr hub에 대하여 어떤 정보도 포함하지 않는 오래된 형태의 저장" +-"소 파일을 갖고 있습니다. 이 문제를 수정하기 위하여 프로젝트를 재활성화하세요." ++msgstr "* 이들 coprs은 Copr hub에 대하여 어떤 정보도 포함하지 않는 오래된 형태의 저장소 파일을 갖고 있습니다. 이 문제를 수정하기 위하여 프로젝트를 재활성화하세요." + + #: plugins/copr.py:380 + msgid "Can't parse repositories for username '{}'." +@@ -434,8 +416,7 @@ msgstr "저장소 '{0}'는 프로젝트 '{1}'에 존재하지 않습니다." + msgid "" + "\n" + "Available repositories: " +-msgstr "" +-"\n" ++msgstr "\n" + "사용 가능한 저장소: " + + #: plugins/copr.py:499 +@@ -446,14 +427,11 @@ msgid "" + "If you want to enable a non-default repository, use the following command:\n" + " 'dnf copr enable {0} '\n" + "But note that the installed repo file will likely need a manual modification." +-msgstr "" +-"\n" ++msgstr "\n" + "\n" +-"만약 기본설정되지 않은 저장소를 활성화 하고자 한다면, 다음 명령을 사용하세" +-"요: \n" ++"만약 기본설정되지 않은 저장소를 활성화 하고자 한다면, 다음 명령을 사용하세요: \n" + " 'dnf copr enable {0} ' \n" +-"하지만 설치된 저장소 파일은 수동으로 수정해야 할 필요가 있다는 점을 참고하세" +-"요." ++"하지만 설치된 저장소 파일은 수동으로 수정해야 할 필요가 있다는 점을 참고하세요." + + #: plugins/copr.py:505 + #, python-brace-format +@@ -480,8 +458,7 @@ msgid "" + "{0}\n" + "\n" + "These repositories have been enabled automatically." +-msgstr "" +-"활성화된 Core 저장소의 유지는 다른 저장소에 이를 독립적으로\n" ++msgstr "활성화된 Core 저장소의 유지는 다른 저장소에 이를 독립적으로\n" + "만드는 것으로 결정하였습니다.\n" + "그런 저장소는 주요 Corp 저장소에서 성공적인 RPM 설치를\n" + "위하여 일반적으로 필요합니다(이들은 실행 의존성을 제공합니다).\n" +@@ -537,7 +514,7 @@ msgstr "놀이터 저장소가 성공적으로 업데이트되었습니다." + + #: plugins/debug.py:53 + msgid "dump information about installed rpm packages to file" +-msgstr "설치된 rpm 꾸러미에 대한 정보를 파일에 덤프하세요" ++msgstr "설치된 rpm 패키지에 대한 정보를 파일에 덤프하세요" + + #: plugins/debug.py:67 + msgid "do not attempt to dump the repository contents." +@@ -554,7 +531,7 @@ msgstr "작성된 출력 : %s" + + #: plugins/debug.py:172 + msgid "restore packages recorded in debug-dump file" +-msgstr "디버그 덤프 파일에 기록 된 꾸러미 복원" ++msgstr "디버그 덤프 파일에 기록 된 패키지 복원" + + #: plugins/debug.py:185 + msgid "output commands that would be run to stdout." +@@ -562,15 +539,13 @@ msgstr "stdout으로 실행될 출력 명령." + + #: plugins/debug.py:188 + msgid "Install the latest version of recorded packages." +-msgstr "기록 된 꾸러미의 최신 버전을 설치하십시오." ++msgstr "기록 된 패키지의 최신 버전을 설치하십시오." + + #: plugins/debug.py:191 + msgid "" + "Ignore architecture and install missing packages matching the name, epoch, " + "version and release." +-msgstr "" +-"구조를 무시하고 이름, 기원, 버전및 출시와 일치하는 누락 된 꾸러미를 설치하십" +-"시오." ++msgstr "구조를 무시하고 이름, 기원, 버전및 출시와 일치하는 누락 된 패키지를 설치하십시오." + + #: plugins/debug.py:196 + msgid "limit to specified type" +@@ -580,9 +555,7 @@ msgstr "특정 유형으로 제한" + msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." +-msgstr "" +-"설치전용 꾸리미 제거를 허용합니다. 이 선택의 사용은 동작하고 있는 커널을 제거" +-"하는 결과가 나타날 수 있습니다." ++msgstr "설치전용 꾸리미 제거를 허용합니다. 이 선택의 사용은 동작하고 있는 커널을 제거하는 결과가 나타날 수 있습니다." + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -591,7 +564,7 @@ msgstr "덤프 파일의 이름" + #: plugins/debug.py:273 + #, python-format + msgid "Package %s is not available" +-msgstr "꾸러미 %s를 사용 할 수 없습니다" ++msgstr "패키지 %s를 사용 할 수 없습니다" + + #: plugins/debug.py:283 + #, python-format +@@ -600,32 +573,31 @@ msgstr "잘못된 dnf 디버그 파일 : %s" + + #: plugins/debuginfo-install.py:56 + msgid "install debuginfo packages" +-msgstr "디버그정보 꾸러미 설치" ++msgstr "디버그정보 패키지 설치" + + #: plugins/debuginfo-install.py:180 + #, python-format + msgid "" + "Could not find debuginfo package for the following available packages: %s" +-msgstr "" +-"다음 사용가능한 꾸러미를 위하여 디버그정보 꾸러미를 찾을 수 없습니다: %s" ++msgstr "다음 사용가능한 패키지를 위하여 디버그정보 패키지를 찾을 수 없습니다: %s" + + #: plugins/debuginfo-install.py:185 + #, python-format + msgid "" + "Could not find debugsource package for the following available packages: %s" +-msgstr "다음 가용한 꾸러미: %s 를 위하여 디버그자원 꾸러미를 찾을 수 없습니다" ++msgstr "다음 가용한 패키지: %s 를 위하여 디버그자원 패키지를 찾을 수 없습니다" + + #: plugins/debuginfo-install.py:190 + #, python-format + msgid "" + "Could not find debuginfo package for the following installed packages: %s" +-msgstr "다음 설치된 꾸러미를 위한 디버그정보 꾸러미를 찾을 수 없습니다: %s" ++msgstr "다음 설치된 패키지를 위한 디버그정보 패키지를 찾을 수 없습니다: %s" + + #: plugins/debuginfo-install.py:195 + #, python-format + msgid "" + "Could not find debugsource package for the following installed packages: %s" +-msgstr "다음 설치된 꾸러미: %s 를 위하여 디버그자원 꾸러미를 찾을 수 없습니다" ++msgstr "다음 설치된 패키지: %s 를 위하여 디버그자원 패키지를 찾을 수 없습니다" + + #: plugins/debuginfo-install.py:199 + msgid "Unable to find a match" +@@ -633,11 +605,11 @@ msgstr "일치하는 항목을 찾을 수 없습니다" + + #: plugins/download.py:41 + msgid "Download package to current directory" +-msgstr "현재 디렉토리에 꾸러미 내려받기" ++msgstr "현재 디렉토리에 패키지 내려받기" + + #: plugins/download.py:51 + msgid "packages to download" +-msgstr "내려받기 할 꾸러미" ++msgstr "내려받기 할 패키지" + + #: plugins/download.py:53 + msgid "download the src.rpm instead" +@@ -645,15 +617,15 @@ msgstr "대신 src.rpm을 내려받으세요" + + #: plugins/download.py:55 + msgid "download the -debuginfo package instead" +-msgstr "대신 -debuginfo 꾸러미를 내려받아요" ++msgstr "대신 -debuginfo 패키지를 내려받으세요" + + #: plugins/download.py:57 + msgid "download the -debugsource package instead" +-msgstr "대신 -debuginfo 꾸러미를 내려받으세요" ++msgstr "대신 -debuginfo 패키지를 내려받으세요" + + #: plugins/download.py:60 + msgid "limit the query to packages of given architectures." +-msgstr "요청를 제공된 구조의 꾸러미로 제한합니다." ++msgstr "요청를 제공된 구조의 패키지로 제한합니다." + + #: plugins/download.py:62 plugins/modulesync.py:51 + msgid "resolve and download needed dependencies" +@@ -663,9 +635,7 @@ msgstr "필요한 종속성을 해결하고 내려받아요" + msgid "" + "when running with --resolve, download all dependencies (do not exclude " + "already installed ones)" +-msgstr "" +-"--resolve 와 함께 실행 할 때에, 모든 의존성을 내려받습니다 (이미 설치된 것들" +-"은 포함하지 않습니다)" ++msgstr "--resolve 와 함께 실행 할 때에, 모든 의존성을 내려받습니다 (이미 설치된 것들은 포함하지 않습니다)" + + #: plugins/download.py:67 + msgid "" +@@ -679,7 +649,7 @@ msgstr "--url을 사용하여 실행하면 특정 통신규약이 제한됩니 + #: plugins/download.py:121 plugins/reposync.py:314 + #, python-format + msgid "Failed to get mirror for package: %s" +-msgstr "꾸러미 연결주소 얻기에 실패했습니다: %s" ++msgstr "패키지 연결주소 얻기에 실패했습니다: %s" + + #: plugins/download.py:243 + msgid "Exiting due to strict setting." +@@ -687,7 +657,7 @@ msgstr "엄격한 설정으로 인해 종료됩니다." + + #: plugins/download.py:261 + msgid "Error in resolve of packages:" +-msgstr "꾸러미 해결 오류 :" ++msgstr "패키지 해결 오류 :" + + #: plugins/download.py:279 + #, python-format +@@ -697,7 +667,7 @@ msgstr "%s를 위한 원천 rpm이 정의되지 않음" + #: plugins/download.py:296 plugins/download.py:309 + #, python-format + msgid "No package %s available." +-msgstr "가용한 꾸러미 %s가 없습니다." ++msgstr "가용한 패키지 %s가 없습니다." + + #: plugins/groups_manager.py:49 + msgid "Invalid group id" +@@ -713,9 +683,7 @@ msgstr "번역된 자료가 유효하지 않음/비워짐" + + #: plugins/groups_manager.py:71 + msgid "Can't generate group id from '{}'. Please specify group id using --id." +-msgstr "" +-"'{}' 에서 그룹 id를 발생 할 수 없습니다. --id를 사용하여 그룹 id를 지정해 주" +-"세요." ++msgstr "'{}' 에서 그룹 id를 발생 할 수 없습니다. --id를 사용하여 그룹 id를 지정해 주세요." + + #: plugins/groups_manager.py:79 + msgid "create and edit groups metadata file" +@@ -771,23 +739,23 @@ msgstr "그룹 사용자를 보이지 않게 표시" + + #: plugins/groups_manager.py:123 + msgid "add packages to the mandatory section" +-msgstr "꾸러미를 필수 부분에 추가합니다" ++msgstr "패키지를 필수 부분에 추가합니다" + + #: plugins/groups_manager.py:125 + msgid "add packages to the optional section" +-msgstr "꾸러미를 선택 부분에 추가합니다" ++msgstr "패키지를 선택 부분에 추가합니다" + + #: plugins/groups_manager.py:127 + msgid "remove packages from the group instead of adding them" +-msgstr "추가하기 대신에 그룹에서 꾸러미를 제거합니다" ++msgstr "추가하기 대신에 그룹에서 패키지를 제거합니다" + + #: plugins/groups_manager.py:129 + msgid "include also direct dependencies for packages" +-msgstr "꾸러미를 위해 직접적인 의존성을 포함한다" ++msgstr "패키지에 대한 직접적인 종속성도 포함" + + #: plugins/groups_manager.py:132 + msgid "package specification" +-msgstr "꾸러미 사양" ++msgstr "패키지 사양" + + #: plugins/groups_manager.py:156 + msgid "Can't edit group without specifying it (use --id or --name)" +@@ -807,19 +775,17 @@ msgstr "일치하는 인수가 없습니다 :{}" + + #: plugins/groups_manager.py:298 + msgid "Can't remove packages from non-existent group" +-msgstr "존재하지 않는 그룹에서 꾸러미를 제거 할 수 없습니다" ++msgstr "존재하지 않는 그룹에서 패키지를 제거 할 수 없습니다" + + #: plugins/groups_manager.py:307 + msgid "" + "Group id '{}' generated from '{}' is duplicit. Please specify group id using " + "--id." +-msgstr "" +-"'{}'에서 발생한 그룹 id '{}'는 중복되었습니다. --id를 사용하여 그룹 id를 지정" +-"하기 바랍니다." ++msgstr "'{}'에서 발생한 그룹 id '{}'는 중복되었습니다. --id를 사용하여 그룹 id를 지정하기 바랍니다." + + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" +-msgstr "다른 꾸러미에서 필요하지 않은 설치된 꾸러미 나열" ++msgstr "다른 패키지에서 필요하지 않은 설치된 패키지 나열" + + #: plugins/local.py:122 + msgid "Unable to create a directory '{}' due to '{}'" +@@ -852,8 +818,7 @@ msgstr "기록 데이터 마이그레이션 중 ..." + #: plugins/modulesync.py:37 + msgid "" + "Download packages from modules and/or create a repository with modular data" +-msgstr "" +-"모듈에서 꾸러미를 내려 받기와/또는 모듈식 자료를 갖고 있는 저장소를 생성" ++msgstr "모듈에서 패키지를 내려 받기와/또는 모듈식 자료를 갖고 있는 저장소를 생성" + + #: plugins/modulesync.py:44 + msgid "MODULE" +@@ -865,15 +830,15 @@ msgstr "내려받기 할 모듈" + + #: plugins/modulesync.py:47 + msgid "enable repositories with source packages" +-msgstr "원천 꾸러미로 저장소 활성화" ++msgstr "원천 패키지로 저장소 활성화" + + #: plugins/modulesync.py:49 + msgid "enable repositories with debug-info and debug-source packages" +-msgstr "debug-info와 debug-source 꾸러미로 저장소 활성화" ++msgstr "debug-info와 debug-source 패키지로 저장소 활성화" + + #: plugins/modulesync.py:53 + msgid "download only packages from newest modules" +-msgstr "최신 모듈에서 꾸러미만 내려받기" ++msgstr "최신 모듈에서 패키지만 내려받기" + + #: plugins/modulesync.py:85 + msgid "Unable to find a match for argument: '{}'" +@@ -884,9 +849,7 @@ msgstr[0] "인수와 일치 항목을 찾을 수 없음: '{}'" + msgid "" + "Creation of repository failed with return code {}. All downloaded content " + "was kept on the system" +-msgstr "" +-"반환 코드 {}로 인하여 저장소 생성에 실패함. 모두 내려받기된 내용은 시스템에" +-"서 보관됩니다" ++msgstr "반환 코드 {}로 인하여 저장소 생성에 실패함. 모두 내려받기된 내용은 시스템에서 보관됩니다" + + #: plugins/modulesync.py:144 + #, python-brace-format +@@ -896,8 +859,7 @@ msgstr "모듈 '{1}' 에서 인위 결과물 '{0}'과 일치하는 부분이 없 + #: plugins/modulesync.py:162 + #, python-brace-format + msgid "No match for package name '{0}' in profile {1} from module {2}" +-msgstr "" +-"모듈 {2}에서 프로파일 {1}인 꾸러미 이름 '{0}'과 일치하는 부분이 없습니다" ++msgstr "모듈 {2}에서 프로파일 {1}인 패키지 이름 '{0}'과 일치하는 부분이 없습니다" + + #: plugins/modulesync.py:166 + msgid "No mach for argument '{}'" +@@ -908,50 +870,47 @@ msgstr "인수 '{}'와 일치하는 항목이 없습니다" + msgid "Unable to satisfy require {}" + msgstr "필요사항 {}를 만족 할 수 없음" + +-#: plugins/needs_restarting.py:66 ++#: plugins/needs_restarting.py:67 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." +-msgstr "" +-"재시작이 필요한 파일 \"{file}\" 에 지정한 꾸러미 이름 \"{pkg}\"을 위하여 설치" +-"된 꾸러미를 찾을 수 없습니다." ++msgstr "재시작이 필요한 파일 \"{file}\" 에 지정한 패키지 이름 \"{pkg}\"을 위하여 설치된 패키지를 찾을 수 없습니다." + +-#: plugins/needs_restarting.py:220 ++#: plugins/needs_restarting.py:252 + msgid "determine updated binaries that need restarting" + msgstr "다시 시작해야하는 업데이트 된 바이너리 결정" + +-#: plugins/needs_restarting.py:225 ++#: plugins/needs_restarting.py:257 + msgid "only consider this user's processes" + msgstr "이 사용자의 프로세스만 고려하세요" + +-#: plugins/needs_restarting.py:227 ++#: plugins/needs_restarting.py:259 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" +-msgstr "" +-"재시작이 요구되는 (exit code 1) 또는 아닌(exit code0) 경우에만 보고합니다" ++msgstr "재시작이 요구되는 (exit code 1) 또는 아닌(exit code0) 경우에만 보고합니다" + +-#: plugins/needs_restarting.py:230 ++#: plugins/needs_restarting.py:262 + msgid "only report affected systemd services" + msgstr "systemd 서비스에 영향을 미치는 것만 보고합니다" + +-#: plugins/needs_restarting.py:253 ++#: plugins/needs_restarting.py:285 + msgid "Core libraries or services have been updated since boot-up:" + msgstr "Core 라이브러리와 서비스는 재시작 이 후에 최신화 됩니다:" + +-#: plugins/needs_restarting.py:258 ++#: plugins/needs_restarting.py:290 + msgid "Reboot is required to fully utilize these updates." + msgstr "재시작은 이들 최신화를 완전히 사용하려면 필요합니다." + +-#: plugins/needs_restarting.py:259 ++#: plugins/needs_restarting.py:291 + msgid "More information:" + msgstr "자세한 정보:" + +-#: plugins/needs_restarting.py:263 ++#: plugins/needs_restarting.py:295 + msgid "No core libraries or services have been updated since boot-up." + msgstr "핵심 라이브러리와 서비스는 재시작 이 후에 최신화 되지 않습니다." + +-#: plugins/needs_restarting.py:265 ++#: plugins/needs_restarting.py:297 + msgid "Reboot should not be necessary." + msgstr "재시작은 필요하지 않을 수 있습니다." + +@@ -983,12 +942,11 @@ msgstr "저장소에 대한 확인되지 않은 종속성 목록 표시" + + #: plugins/repoclosure.py:69 + msgid "Repoclosure ended with unresolved dependencies ({}) across {} packages." +-msgstr "" +-"Repoclosure는 {} 꾸러미를 통해 해결되지 않은 의존성 ({})으로 종료되었습니다." ++msgstr "Repoclosure는 {} 패키지를 통해 해결되지 않은 의존성 ({})으로 종료되었습니다." + + #: plugins/repoclosure.py:159 + msgid "check packages of the given archs, can be specified multiple times" +-msgstr "지정된 아치의 꾸러미를 검사하고 여러 번 지정할 수 있습니다" ++msgstr "지정된 아치의 패키지를 검사하고 여러 번 지정할 수 있습니다" + + #: plugins/repoclosure.py:162 + msgid "Specify repositories to check" +@@ -996,11 +954,11 @@ msgstr "점검 할 저장소를 지정하세요" + + #: plugins/repoclosure.py:164 + msgid "Check only the newest packages in the repos" +-msgstr "저장소 최신 꾸러미만 확인하세요" ++msgstr "저장소 최신 패키지만 확인하세요" + + #: plugins/repoclosure.py:167 + msgid "Check closure for this package only" +-msgstr "이 꾸러미의 폐쇄만 확인하세요" ++msgstr "이 패키지의 종료만 확인하세요" + + #: plugins/repodiff.py:45 + msgid "List differences between two sets of repositories" +@@ -1018,9 +976,7 @@ msgstr "여러 번 사용 될 수 있는, 새로운 저장소를 지정합니다 + msgid "" + "Specify architectures to compare, can be used multiple times. By default, " + "only source rpms are compared." +-msgstr "" +-"비교 할 구조를 지정하고, 여러 번 사용 될 수 있습니다. 기본적으로, 자원 rpms" +-"만 비교됩니다." ++msgstr "비교 할 구조를 지정하고, 여러 번 사용 될 수 있습니다. 기본적으로, 자원 rpms만 비교됩니다." + + #: plugins/repodiff.py:67 + msgid "Output additional data about the size of the changes." +@@ -1029,19 +985,17 @@ msgstr "크기 변화에 대한 추가 자료를 출력합니다." + #: plugins/repodiff.py:69 + msgid "" + "Compare packages also by arch. By default packages are compared just by name." +-msgstr "" +-"구조에 의해 꾸러미 또한 비교합니다. 기본적으로 꾸러미는 이름으로만 비교됩니" +-"다." ++msgstr "구조에 의해 패키지 또한 비교합니다. 기본적으로 패키지는 이름으로만 비교됩니다." + + #: plugins/repodiff.py:72 + msgid "Output a simple one line message for modified packages." +-msgstr "수정된 꾸러미를 위해 단순히 한 줄 메시지를 출력합니다." ++msgstr "수정된 패키지를 위해 단순히 한 줄 메시지를 출력합니다." + + #: plugins/repodiff.py:74 + msgid "" + "Split the data for modified packages between upgraded and downgraded " + "packages." +-msgstr "향상 또는 향상 꾸러미 사이에서 변형된 꾸러미를 위해 자료를 분할합니다." ++msgstr "업그레이드 또는 업그레이드 패키지 사이에서 변형된 패키지를 위해 자료를 분할합니다." + + #: plugins/repodiff.py:86 + msgid "Both old and new repositories must be set." +@@ -1053,11 +1007,11 @@ msgstr "크기 변화: {} bytes" + + #: plugins/repodiff.py:184 + msgid "Added package : {}" +-msgstr "추가된 꾸러미 : {}" ++msgstr "추가된 패키지 : {}" + + #: plugins/repodiff.py:187 + msgid "Removed package: {}" +-msgstr "제거된 꾸러미: {}" ++msgstr "제거된 패키지: {}" + + #: plugins/repodiff.py:190 + msgid "Obsoleted by : {}" +@@ -1067,73 +1021,69 @@ msgstr "사용되지 않음 : {}" + msgid "" + "\n" + "Upgraded packages" +-msgstr "" +-"\n" +-"향상된 꾸러미" ++msgstr "\n" ++"업그레이드된 패키지" + + #: plugins/repodiff.py:200 + msgid "" + "\n" + "Downgraded packages" +-msgstr "" +-"\n" +-"꾸러미 하향설치" ++msgstr "\n" ++"다운그레이드된 패키지" + + #: plugins/repodiff.py:207 + msgid "" + "\n" + "Modified packages" +-msgstr "" +-"\n" +-"변형된 꾸러미" ++msgstr "\n" ++"변경된 패키지" + + #: plugins/repodiff.py:212 + msgid "" + "\n" + "Summary" +-msgstr "" +-"\n" ++msgstr "\n" + "요약" + + #: plugins/repodiff.py:213 + msgid "Added packages: {}" +-msgstr "추가된 꾸러미: {}" ++msgstr "추가된 패키지: {}" + + #: plugins/repodiff.py:214 + msgid "Removed packages: {}" +-msgstr "제거된 꾸러미: {}" ++msgstr "제거된 패키지: {}" + + #: plugins/repodiff.py:216 + msgid "Upgraded packages: {}" +-msgstr "향상된 꾸러미: {}" ++msgstr "업그레이드된 패키지: {}" + + #: plugins/repodiff.py:217 + msgid "Downgraded packages: {}" +-msgstr "하향 설치된 꾸러미: {}" ++msgstr "다운그레이드된 패키지: {}" + + #: plugins/repodiff.py:219 + msgid "Modified packages: {}" +-msgstr "변형된 꾸러미: {}" ++msgstr "변경된 패키지: {}" + + #: plugins/repodiff.py:222 + msgid "Size of added packages: {}" +-msgstr "크기가 증가된 꾸러미: {}" ++msgstr "크기가 증가된 패키지: {}" + + #: plugins/repodiff.py:223 + msgid "Size of removed packages: {}" +-msgstr "크기가 제거된 꾸러미: {}" ++msgstr "크기가 제거된 패키지: {}" + + #: plugins/repodiff.py:225 + msgid "Size of modified packages: {}" +-msgstr "크기가 변형된 꾸러미: {}" ++msgstr "크기가 변경된 패키지: {}" + + #: plugins/repodiff.py:228 + msgid "Size of upgraded packages: {}" +-msgstr "크기가 향상된 꾸러미: {}" ++msgstr "크기가 업그레이드된 패키지: {}" + + #: plugins/repodiff.py:230 + msgid "Size of downgraded packages: {}" +-msgstr "크기가 하향설치된 꾸러미: {}" ++msgstr "크기가 다운그레이드된 패키지: {}" + + #: plugins/repodiff.py:232 + msgid "Size change: {}" +@@ -1141,7 +1091,7 @@ msgstr "크기 변경: {}" + + #: plugins/repograph.py:50 + msgid "Output a full package dependency graph in dot format" +-msgstr "도트 형식의 전체 꾸러미 종속성 그래프 출력" ++msgstr "도트 형식의 전체 패키지 종속성 그래프 출력" + + #: plugins/repograph.py:110 + #, python-format +@@ -1150,7 +1100,7 @@ msgstr "아무것도 제공하지 않습니다 : '%s'" + + #: plugins/repomanage.py:45 + msgid "Manage a directory of rpm packages" +-msgstr "rpm 꾸러미 디렉토리 관리" ++msgstr "rpm 패키지 디렉토리 관리" + + #: plugins/repomanage.py:59 + msgid "Pass either --old or --new, not both!" +@@ -1174,15 +1124,15 @@ msgstr "{}을 열 수 없습니다" + + #: plugins/repomanage.py:223 + msgid "Print the older packages" +-msgstr "이전 꾸러미 인쇄" ++msgstr "이전 패키지 인쇄" + + #: plugins/repomanage.py:225 + msgid "Print the older packages. Exclude the newest packages." +-msgstr "이전 꾸러미를 출력합니다. 최신 꾸러미는 제외합니다." ++msgstr "이전 패키지를 출력합니다. 최신 패키지는 제외합니다." + + #: plugins/repomanage.py:227 + msgid "Print the newest packages" +-msgstr "최신 꾸러미 출력" ++msgstr "최신 패키지 출력" + + #: plugins/repomanage.py:229 + msgid "Space separated output, not newline" +@@ -1190,7 +1140,7 @@ msgstr "공백으로 구분 된 출력이 아닌 개행 문자" + + #: plugins/repomanage.py:231 + msgid "Newest N packages to keep - defaults to 1" +-msgstr "보관하려는 최신 N 꾸러미 - 기본값은 1입니다" ++msgstr "보관하려는 최신 N 패키지 - 기본값은 1입니다" + + #: plugins/repomanage.py:234 + msgid "Path to directory" +@@ -1198,15 +1148,15 @@ msgstr "디렉토리 경로" + + #: plugins/reposync.py:55 + msgid "download all packages from remote repo" +-msgstr "원격 저장소에서 모든 꾸러미를 내려받아요" ++msgstr "원격 저장소에서 모든 패키지를 내려받아요" + + #: plugins/reposync.py:64 + msgid "download only packages for this ARCH" +-msgstr "이 ARCH용 꾸러미(package)만 내려받아요" ++msgstr "이 ARCH용 패키지(package)만 내려받아요" + + #: plugins/reposync.py:66 + msgid "delete local packages no longer present in repository" +-msgstr "저장소에 더 이상 존재하지 않는 로컬 꾸러미(package) 삭제" ++msgstr "저장소에 더 이상 존재하지 않는 로컬 패키지(package) 삭제" + + #: plugins/reposync.py:68 + msgid "download all the metadata." +@@ -1214,7 +1164,7 @@ msgstr "모든 메타자료 내려받기." + + #: plugins/reposync.py:70 + msgid "Remove packages that fail GPG signature checking after downloading" +-msgstr "내려받기 후에 점검한 GPG 서명이 실패한 꾸러미를 제거합니다" ++msgstr "내려받기 후에 점검한 GPG 서명이 실패한 패키지를 제거합니다" + + #: plugins/reposync.py:73 + msgid "also download and uncompress comps.xml" +@@ -1224,13 +1174,11 @@ msgstr "또한 comps.xml 내려받기와 압축 풀기" + msgid "" + "where to store downloaded repository metadata. Defaults to the value of --" + "download-path." +-msgstr "" +-"내려받은 저장소 메타자료를 저장하기 위한 장소. --download-path의 값으로 기본 " +-"지정합니다." ++msgstr "내려받은 저장소 메타자료를 저장하기 위한 장소. --download-path의 값으로 기본 지정합니다." + + #: plugins/reposync.py:78 + msgid "download only newest packages per-repo" +-msgstr "저장소 최신 꾸러미(package)만 내려받아요" ++msgstr "저장소 최신 패키지(package)만 내려받아요" + + #: plugins/reposync.py:80 + msgid "Don't add the reponame to the download path." +@@ -1246,7 +1194,7 @@ msgstr "서버에 있는 하나에서 로컬파일의 로컬 타임스템프 설 + + #: plugins/reposync.py:87 + msgid "download only source packages" +-msgstr "원천 꾸러미만 내려받기" ++msgstr "원천 패키지만 내려받기" + + #: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" +@@ -1294,7 +1242,7 @@ msgstr "저장소에 대한 comps.xml %s 저장된" + + #: plugins/show_leaves.py:54 + msgid "New leaves:" +-msgstr "독립 꾸러미:" ++msgstr "독립 패키지:" + + #. Translators: This string is only used in unit tests. + #: plugins/system_upgrade.py:45 +@@ -1311,8 +1259,7 @@ msgstr "현재 시스템 버전 보다 큰 --releasever가 필요합니다." + msgid "" + "Download complete! Use 'dnf {command} reboot' to start the upgrade.\n" + "To remove cached metadata and transaction use 'dnf {command} clean'" +-msgstr "" +-"내려받기 완료! 향상을 시작하려면 'dnf {command} reboot'를 사용하세요.\n" ++msgstr "내려받기 완료! 업그레이드를 시작하려면 'dnf {command} reboot'를 사용하세요.\n" + "캐쉬된 메타자료와 연결을 제거하려면 'dnf {command} clean'을 사용하세요" + + #: plugins/system_upgrade.py:62 +@@ -1323,151 +1270,155 @@ msgstr "죄송합니다, '--network' 대신에 'download --releasever'를 사용 + msgid "Reboot turned off, not rebooting." + msgstr "다시 기동하지 않고, 재시작이 꺼졌습니다." + +-#: plugins/system_upgrade.py:122 ++#: plugins/system_upgrade.py:125 + #, python-format + msgid "Screen blanking can't be disabled: %s" + msgstr "화면 비우기를 비활성화 할 수 없습니다: %s" + +-#: plugins/system_upgrade.py:142 ++#: plugins/system_upgrade.py:145 + #, python-format + msgid "Failed loading state file: %s, continuing with empty state." + msgstr "상태 파일: %s를 적재 중 실패함, 공백 상태로 유지됨." + +-#: plugins/system_upgrade.py:289 ++#: plugins/system_upgrade.py:293 + msgid "The following boots appear to contain upgrade logs:" +-msgstr "다음 기동은 향상된 기록을 포함하여 나타납니다:" ++msgstr "다음 기동은 업그레이드된 기록을 포함하여 나타납니다:" + +-#: plugins/system_upgrade.py:299 ++#: plugins/system_upgrade.py:303 + msgid "-- no logs were found --" + msgstr "-- 어떤 기록도 찾을 수 없음 --" + +-#: plugins/system_upgrade.py:314 ++#: plugins/system_upgrade.py:318 + msgid "Cannot find logs with this index." + msgstr "이 표시가 있는 기록을 찾을 수 없습니다." + +-#: plugins/system_upgrade.py:323 ++#: plugins/system_upgrade.py:327 + msgid "Unable to match systemd journal entry" + msgstr "systemd journal 항목과 일치 할 수 없음" + +-#: plugins/system_upgrade.py:344 ++#: plugins/system_upgrade.py:348 + msgid "Prepare system for upgrade to a new release" +-msgstr "새로운 출시로 향상하기 위해 시스템을 준비합니다" ++msgstr "새로운 출시로 업그레이드하기 위해 시스템을 준비합니다" + +-#: plugins/system_upgrade.py:360 ++#: plugins/system_upgrade.py:364 + msgid "keep installed packages if the new release's version is older" +-msgstr "만약 신규 출시의 버전이 오래되었으면 설치된 꾸러미를 유지합니다" ++msgstr "만약 신규 출시의 버전이 오래되었으면 설치된 패키지를 유지합니다" + +-#: plugins/system_upgrade.py:364 ++#: plugins/system_upgrade.py:368 ++msgid "power off system after the operation is completed" ++msgstr "작업이 완료된 후 시스템 전원을 끕니다" ++ ++#: plugins/system_upgrade.py:372 + msgid "which logs to show" + msgstr "표시 할 어떤 기록" + +-#: plugins/system_upgrade.py:398 ++#: plugins/system_upgrade.py:406 + #, python-brace-format + msgid "Incompatible version of data. Rerun 'dnf {command} download [OPTIONS]'" + msgstr "호환되지 않는 자료 버전. 'dnf {command} download [OPTIONS]' 되돌리기" + +-#: plugins/system_upgrade.py:434 ++#: plugins/system_upgrade.py:442 + msgid "Command 'offline-distrosync' cannot be used with --no-downgrade option" + msgstr "명령 'offline-distrosync'은 --no-downgrade 옵션과 함께 사용 될 수 없습니다" + +-#: plugins/system_upgrade.py:454 ++#: plugins/system_upgrade.py:462 + msgid "" + "WARNING: this operation is not supported on the RHEL distribution. Proceed " + "at your own risk." +-msgstr "경고: 이와 같은 동작은 RHEL 배포판에서 지원되지 않습니다. 자신의 책임 하에 " +-"진행하세요." ++msgstr "경고: 이와 같은 동작은 RHEL 배포판에서 지원되지 않습니다. 자신의 책임 하에 진행하세요." + +-#: plugins/system_upgrade.py:458 ++#: plugins/system_upgrade.py:466 + msgid "Additional information for System Upgrade: {}" +-msgstr "시스템 향상을 위한 추가 정보: {}" ++msgstr "시스템 업그레이드를 위한 추가 정보: {}" + +-#: plugins/system_upgrade.py:461 ++#: plugins/system_upgrade.py:469 + msgid "" + "Before you continue ensure that your system is fully upgraded by running " + "\"dnf --refresh upgrade\". Do you want to continue" +-msgstr "계속하기 전에 dnf --refresh upgrade\" 실행하여 시스템을 완전히 향상 되도록 " +-"해주세요. 계속 하길 원하세요" ++msgstr "계속하기 전에 dnf --refresh upgrade\" 실행하여 시스템을 완전히 업그레이드 되도록 해주세요. 계속 하길 원하세요" + +-#: plugins/system_upgrade.py:465 ++#: plugins/system_upgrade.py:473 + msgid "Operation aborted." + msgstr "작업이 중지됩니다." + +-#: plugins/system_upgrade.py:526 ++#: plugins/system_upgrade.py:534 + msgid "system is not ready for upgrade" +-msgstr "시스템이 향상을 위해 준비되지 않았습니다" ++msgstr "시스템이 업그레이드를 위해 준비되지 않았습니다" + +-#: plugins/system_upgrade.py:529 ++#: plugins/system_upgrade.py:537 + #, python-brace-format + msgid "" + "the transaction was not prepared for '{command}'. Rerun 'dnf {command} " + "download [OPTIONS]'" +-msgstr "" +-"연결이 '{command}'을 위해 준비되지 않았습니다. 'dnf {command} download " +-"[OPTIONS]'을 되돌립니다" ++msgstr "연결이 '{command}'을 위해 준비되지 않았습니다. 'dnf {command} download [OPTIONS]'을 되돌립니다" + +-#: plugins/system_upgrade.py:533 ++#: plugins/system_upgrade.py:541 + msgid "upgrade is already scheduled" +-msgstr "향상은 이미 계획되어 있습니다" ++msgstr "업그레이드는 이미 계획되어 있습니다" + +-#: plugins/system_upgrade.py:539 ++#: plugins/system_upgrade.py:547 + msgid "trigger file does not exist. exiting quietly." + msgstr "트리거 파일이 존재하지 않습니다. 바로 종료하기." + +-#: plugins/system_upgrade.py:542 ++#: plugins/system_upgrade.py:550 + msgid "another upgrade tool is running. exiting quietly." +-msgstr "다른 향상 도구가 동작 중입니다. 바로 종료하기." ++msgstr "다른 업그레이드 도구가 동작 중입니다. 바로 종료하기." + +-#: plugins/system_upgrade.py:551 ++#: plugins/system_upgrade.py:559 + #, python-brace-format + msgid "use 'dnf {command} reboot' to begin the upgrade" +-msgstr "'dnf {command} reboot' 사용하여 향상을 시작합니다" ++msgstr "'dnf {command} reboot' 사용하여 업그레이드를 시작합니다" + +-#: plugins/system_upgrade.py:569 ++#: plugins/system_upgrade.py:579 + msgid "Rebooting to perform upgrade." +-msgstr "향상을 수행하기 위해서 재시작 중." ++msgstr "업그레이드를 수행하기 위해서 재시작 중." + +-#: plugins/system_upgrade.py:602 ++#: plugins/system_upgrade.py:615 + msgid "Starting offline upgrade. This will take a while." +-msgstr "오프라인 향상 시작하기. 이는 시간이 좀 걸립니다." ++msgstr "오프라인 업그레이드 시작하기. 이는 시간이 좀 걸립니다." + +-#: plugins/system_upgrade.py:604 ++#: plugins/system_upgrade.py:617 + msgid "Starting offline distrosync. This will take a while." + msgstr "오프라인 distrosync 시작 중. 이는 시간이 좀 걸립니다." + +-#: plugins/system_upgrade.py:606 ++#: plugins/system_upgrade.py:619 + msgid "Starting system upgrade. This will take a while." +-msgstr "시스템 향상이 시작 중. 이는 시간이 좀 걸립니다." ++msgstr "시스템 업그레이드가 시작 중. 이는 시간이 좀 걸립니다." + +-#: plugins/system_upgrade.py:622 ++#: plugins/system_upgrade.py:635 + msgid "Cleaning up downloaded data..." + msgstr "내려받기된 자료를 정리 중..." + +-#: plugins/system_upgrade.py:652 ++#: plugins/system_upgrade.py:665 + msgid "" + "The system-upgrade transaction is empty, your system is already up-to-date." +-msgstr "시스템-향상 연결이 비워 있으며, 시스템은 이미 최신화 되었습니다." ++msgstr "시스템-업그레이드 연결이 비워 있으며, 시스템은 이미 최신화 되었습니다." + +-#: plugins/system_upgrade.py:661 ++#: plugins/system_upgrade.py:674 + msgid "Transaction saved to {}." + msgstr "연결이 {}로 저장되었습니다." + +-#: plugins/system_upgrade.py:664 ++#: plugins/system_upgrade.py:677 + msgid "Error storing transaction: {}" + msgstr "저장 중 연결 오류: {}" + +-#: plugins/system_upgrade.py:686 ++#: plugins/system_upgrade.py:699 + msgid "Download finished." + msgstr "내려받기 완료됨." + +-#: plugins/system_upgrade.py:689 plugins/system_upgrade.py:690 ++#: plugins/system_upgrade.py:703 ++msgid "Upgrade complete! Cleaning up and powering off..." ++msgstr "업그레이드 완료! 정리 및 전원 끄기..." ++ ++#: plugins/system_upgrade.py:705 + msgid "Upgrade complete! Cleaning up and rebooting..." +-msgstr "향상 성공! 정리하고 재시작하기..." ++msgstr "업그레이드 완료! 정리하고 재시작하기..." + +-#: plugins/system_upgrade.py:699 ++#: plugins/system_upgrade.py:717 + msgid "Prepare offline upgrade of the system" +-msgstr "시스템의 오프라인 향상을 준비합니다" ++msgstr "시스템의 오프라인 업그레이드를 준비합니다" + +-#: plugins/system_upgrade.py:704 ++#: plugins/system_upgrade.py:722 + msgid "Prepare offline distrosync of the system" + msgstr "시스템의 오프라인 distrosync를 준비합니다" + +@@ -1490,15 +1441,15 @@ msgstr "제외 하기 추가하기:" + + #: plugins/versionlock.py:37 + msgid "Package already locked in equivalent form:" +-msgstr "꾸러미(package)는 이미 동일한 형태로 잠겨졌습니다:" ++msgstr "패키지(package)는 이미 동일한 형태로 잠겨졌습니다:" + + #: plugins/versionlock.py:38 + msgid "Package {} is already locked" +-msgstr "꾸러미(package) {} 는 이미 잠겨졌습니다" ++msgstr "패키지(package) {} 는 이미 잠겨졌습니다" + + #: plugins/versionlock.py:39 + msgid "Package {} is already excluded" +-msgstr "꾸러미(package) {} 는 이미 제외되었습니다" ++msgstr "패키지(package) {} 는 이미 제외되었습니다" + + #: plugins/versionlock.py:40 + msgid "Deleting versionlock for:" +@@ -1506,7 +1457,7 @@ msgstr "버전 잠금을 제거하기:" + + #: plugins/versionlock.py:41 + msgid "No package found for:" +-msgstr "찾고자 하는 꾸러미(package)가 없습니다:" ++msgstr "찾고자 하는 패키지(package)가 없습니다:" + + #: plugins/versionlock.py:42 + msgid "Excludes from versionlock plugin were not applied" +@@ -1527,17 +1478,15 @@ msgstr "버전 잠금 플러그인: 유형을 구문 분석 할 수 없습니다 + + #: plugins/versionlock.py:138 + msgid "control package version locks" +-msgstr "꾸러미 버전 잠금을 제어합니다" ++msgstr "패키지 버전 잠금을 제어합니다" + + #: plugins/versionlock.py:144 + msgid "Use package specifications as they are, do not try to parse them" +-msgstr "꾸러미(package) 사양을 그대로 사용하며, 구문 분석을 시도하지 않습니다" ++msgstr "패키지(package) 사양을 그대로 사용하며, 구문 분석을 시도하지 않습니다" + + #: plugins/versionlock.py:164 + msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." +-msgstr "" +-"하위명령 '{}'는 더 이상 사용하지 않습니다. 대신에 하위명령 'exclude'를 사용합" +-"니다." ++msgstr "하위명령 '{}'는 더 이상 사용하지 않습니다. 대신에 하위명령 'exclude'를 사용합니다." + + #~ msgid "" + #~ "This repository does not have any builds yet so you cannot enable it now." +@@ -1558,5 +1507,3 @@ msgstr "" + #~ msgid "where to store downloaded repositories " + #~ msgstr "다운로드 한 저장소를 저장할 위치 " + +-#~ msgid "Could not make repository directory: %s" +-#~ msgstr "저장소 디렉토리를 만들지 못했습니다 : %s" +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 9fdd07c..2cc7eb2 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -12,7 +12,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2023-02-28 12:26+0100\n" ++"POT-Creation-Date: 2023-08-29 11:21+0200\n" + "PO-Revision-Date: 2023-03-06 13:48+0000\n" + "Last-Translator: Transtats \n" + "Language-Team: Chinese (Simplified) \n" ++"\n" + "中所提出的规则外的任何权力,并且其软件包不保证达到特定质量\n" + "和安全水准。\n" + "\n" +@@ -378,9 +370,7 @@ msgid "" + "* These coprs have repo file with an old format that contains no information " + "about Copr hub - the default one was assumed. Re-enable the project to fix " + "this." +-msgstr "" +-"* 这些 coprs 有使用旧格式的 repo 文件,它们没有包括 Copr hub 的信息 - 假设使" +-"用默认值。重新启用项目来解决这个问题。" ++msgstr "* 这些 coprs 有使用旧格式的 repo 文件,它们没有包括 Copr hub 的信息 - 假设使用默认值。重新启用项目来解决这个问题。" + + #: plugins/copr.py:380 + msgid "Can't parse repositories for username '{}'." +@@ -432,8 +422,7 @@ msgstr "仓库 '{0}' 在项目 '{1}' 中不存在。" + msgid "" + "\n" + "Available repositories: " +-msgstr "" +-"\n" ++msgstr "\n" + "可用软件仓库: " + + #: plugins/copr.py:499 +@@ -444,8 +433,7 @@ msgid "" + "If you want to enable a non-default repository, use the following command:\n" + " 'dnf copr enable {0} '\n" + "But note that the installed repo file will likely need a manual modification." +-msgstr "" +-"\n" ++msgstr "\n" + "\n" + "如果需要启用一个非默认的仓库,使用以下命令 :\n" + " 'dnf copr enable {0} '\n" +@@ -476,8 +464,7 @@ msgid "" + "{0}\n" + "\n" + "These repositories have been enabled automatically." +-msgstr "" +-"启用的 Copr 仓库的维护人员决定\n" ++msgstr "启用的 Copr 仓库的维护人员决定\n" + "它需要依赖于其他仓库。这些仓库\n" + "通常是必需的,如果需要从主 Copr 仓库\n" + "(它们会提供运行时依赖软件包)安装 RPM。\n" +@@ -574,9 +561,7 @@ msgstr "限制到指定类型" + msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." +-msgstr "" +-"允许删除仅安装(install-only)的软件包。使用这个选项可能会导致尝试删除正在运行" +-"的内核。" ++msgstr "允许删除仅安装(install-only)的软件包。使用这个选项可能会导致尝试删除正在运行的内核。" + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -891,49 +876,47 @@ msgstr "没有与参数 '{}' 相匹配的项" + msgid "Unable to satisfy require {}" + msgstr "无法满足要求 {}" + +-#: plugins/needs_restarting.py:66 ++#: plugins/needs_restarting.py:67 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." +-msgstr "" +-"未找到在需要重新启动的文件 \"{file}\" 中指定的软件包名为 \"{pkg}\" 的已安装的" +-"软件包。" ++msgstr "未找到在需要重新启动的文件 \"{file}\" 中指定的软件包名为 \"{pkg}\" 的已安装的软件包。" + +-#: plugins/needs_restarting.py:220 ++#: plugins/needs_restarting.py:252 + msgid "determine updated binaries that need restarting" + msgstr "判断所升级的二进制文件是否需要重启" + +-#: plugins/needs_restarting.py:225 ++#: plugins/needs_restarting.py:257 + msgid "only consider this user's processes" + msgstr "仅考虑当前用户的进程" + +-#: plugins/needs_restarting.py:227 ++#: plugins/needs_restarting.py:259 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" + msgstr "只报告需要重新引导 (退出代码为 1) 或不需要重新引导 (退出代码为 0)" + +-#: plugins/needs_restarting.py:230 ++#: plugins/needs_restarting.py:262 + msgid "only report affected systemd services" + msgstr "只报告受影响的 systemd 服务" + +-#: plugins/needs_restarting.py:253 ++#: plugins/needs_restarting.py:285 + msgid "Core libraries or services have been updated since boot-up:" + msgstr "在引导后 Core 库或服务已被更新 :" + +-#: plugins/needs_restarting.py:258 ++#: plugins/needs_restarting.py:290 + msgid "Reboot is required to fully utilize these updates." + msgstr "需要重新启动后才可以使这些更新完全生效。" + +-#: plugins/needs_restarting.py:259 ++#: plugins/needs_restarting.py:291 + msgid "More information:" + msgstr "更多信息 :" + +-#: plugins/needs_restarting.py:263 ++#: plugins/needs_restarting.py:295 + msgid "No core libraries or services have been updated since boot-up." + msgstr "在引导后没有 core 库或服务被更新。" + +-#: plugins/needs_restarting.py:265 ++#: plugins/needs_restarting.py:297 + msgid "Reboot should not be necessary." + msgstr "不需要重新启动。" + +@@ -1044,32 +1027,28 @@ msgstr "被下述软件包弃用:{}" + msgid "" + "\n" + "Upgraded packages" +-msgstr "" +-"\n" ++msgstr "\n" + "升级的软件包" + + #: plugins/repodiff.py:200 + msgid "" + "\n" + "Downgraded packages" +-msgstr "" +-"\n" ++msgstr "\n" + "降级的软件包" + + #: plugins/repodiff.py:207 + msgid "" + "\n" + "Modified packages" +-msgstr "" +-"\n" ++msgstr "\n" + "修改的软件包" + + #: plugins/repodiff.py:212 + msgid "" + "\n" + "Summary" +-msgstr "" +-"\n" ++msgstr "\n" + "概述" + + #: plugins/repodiff.py:213 +@@ -1286,8 +1265,7 @@ msgstr "需要大于当前系统版本的 --releasever。" + msgid "" + "Download complete! Use 'dnf {command} reboot' to start the upgrade.\n" + "To remove cached metadata and transaction use 'dnf {command} clean'" +-msgstr "" +-"下载完成!使用 'dnf {command} reboot' 启动升级。 \n" ++msgstr "下载完成!使用 'dnf {command} reboot' 启动升级。 \n" + " 要删除缓存的元数据和事务,请使用 'dnf {command} clean'" + + #: plugins/system_upgrade.py:62 +@@ -1298,148 +1276,155 @@ msgstr "您需要使用 'download --releasever' 而不是 '-network'" + msgid "Reboot turned off, not rebooting." + msgstr "重启被关闭,没有重新启动。" + +-#: plugins/system_upgrade.py:122 ++#: plugins/system_upgrade.py:125 + #, python-format + msgid "Screen blanking can't be disabled: %s" + msgstr "无法禁用屏幕空白:%s" + +-#: plugins/system_upgrade.py:142 ++#: plugins/system_upgrade.py:145 + #, python-format + msgid "Failed loading state file: %s, continuing with empty state." + msgstr "加载状态文件失败:%s,继续为空状态。" + +-#: plugins/system_upgrade.py:289 ++#: plugins/system_upgrade.py:293 + msgid "The following boots appear to contain upgrade logs:" + msgstr "以下引导会包含升级日志:" + +-#: plugins/system_upgrade.py:299 ++#: plugins/system_upgrade.py:303 + msgid "-- no logs were found --" + msgstr "-- 没有找到日志 --" + +-#: plugins/system_upgrade.py:314 ++#: plugins/system_upgrade.py:318 + msgid "Cannot find logs with this index." + msgstr "无法找到使用此索引的日志。" + +-#: plugins/system_upgrade.py:323 ++#: plugins/system_upgrade.py:327 + msgid "Unable to match systemd journal entry" + msgstr "无法与 systemd 日志条目匹配" + +-#: plugins/system_upgrade.py:344 ++#: plugins/system_upgrade.py:348 + msgid "Prepare system for upgrade to a new release" + msgstr "准备系统以升级到新版本" + +-#: plugins/system_upgrade.py:360 ++#: plugins/system_upgrade.py:364 + msgid "keep installed packages if the new release's version is older" + msgstr "如果新版本中的版本更旧,保留安装的软件包" + +-#: plugins/system_upgrade.py:364 ++#: plugins/system_upgrade.py:368 ++msgid "power off system after the operation is completed" ++msgstr "操作完成后关闭系统" ++ ++#: plugins/system_upgrade.py:372 + msgid "which logs to show" + msgstr "要显示的日志" + +-#: plugins/system_upgrade.py:398 ++#: plugins/system_upgrade.py:406 + #, python-brace-format + msgid "Incompatible version of data. Rerun 'dnf {command} download [OPTIONS]'" + msgstr "不兼容的数据版本。重新运行 'dnf {command} download [OPTIONS]'" + +-#: plugins/system_upgrade.py:434 ++#: plugins/system_upgrade.py:442 + msgid "Command 'offline-distrosync' cannot be used with --no-downgrade option" + msgstr "命令 'offline-distrosync' 无法与 --no-downgrade 选项一起使用" + +-#: plugins/system_upgrade.py:454 ++#: plugins/system_upgrade.py:462 + msgid "" + "WARNING: this operation is not supported on the RHEL distribution. Proceed " + "at your own risk." + msgstr "警告:在 RHEL 发行版上不支持此操作。您需要自性承担相关的风险。" + +-#: plugins/system_upgrade.py:458 ++#: plugins/system_upgrade.py:466 + msgid "Additional information for System Upgrade: {}" + msgstr "系统升级的额外信息:{}" + +-#: plugins/system_upgrade.py:461 ++#: plugins/system_upgrade.py:469 + msgid "" + "Before you continue ensure that your system is fully upgraded by running " + "\"dnf --refresh upgrade\". Do you want to continue" +-msgstr "在继续请,确定您的系统已通过运行 \"dnf --refresh upgrade\" " +-"完全升级。您要继续操作" ++msgstr "在继续请,确定您的系统已通过运行 \"dnf --refresh upgrade\" 完全升级。您要继续操作" + +-#: plugins/system_upgrade.py:465 ++#: plugins/system_upgrade.py:473 + msgid "Operation aborted." + msgstr "操作中止。" + +-#: plugins/system_upgrade.py:526 ++#: plugins/system_upgrade.py:534 + msgid "system is not ready for upgrade" + msgstr "系统还未就绪进行升级" + +-#: plugins/system_upgrade.py:529 ++#: plugins/system_upgrade.py:537 + #, python-brace-format + msgid "" + "the transaction was not prepared for '{command}'. Rerun 'dnf {command} " + "download [OPTIONS]'" + msgstr "事务没有为 '{command}' 准备。重新运行 'dnf {command} download [OPTIONS]'" + +-#: plugins/system_upgrade.py:533 ++#: plugins/system_upgrade.py:541 + msgid "upgrade is already scheduled" + msgstr "升级已被调度" + +-#: plugins/system_upgrade.py:539 ++#: plugins/system_upgrade.py:547 + msgid "trigger file does not exist. exiting quietly." + msgstr "触发器文件不存在。静默退出。" + +-#: plugins/system_upgrade.py:542 ++#: plugins/system_upgrade.py:550 + msgid "another upgrade tool is running. exiting quietly." + msgstr "另一个升级工具正在运行。静默退出。" + +-#: plugins/system_upgrade.py:551 ++#: plugins/system_upgrade.py:559 + #, python-brace-format + msgid "use 'dnf {command} reboot' to begin the upgrade" + msgstr "使用 'dnf {command} reboot' 开始升级" + +-#: plugins/system_upgrade.py:569 ++#: plugins/system_upgrade.py:579 + msgid "Rebooting to perform upgrade." + msgstr "重启以执行升级。" + +-#: plugins/system_upgrade.py:602 ++#: plugins/system_upgrade.py:615 + msgid "Starting offline upgrade. This will take a while." + msgstr "启动离线升级。这将需要一段时间。" + +-#: plugins/system_upgrade.py:604 ++#: plugins/system_upgrade.py:617 + msgid "Starting offline distrosync. This will take a while." + msgstr "启动离线 distrosync。这将需要一段时间。" + +-#: plugins/system_upgrade.py:606 ++#: plugins/system_upgrade.py:619 + msgid "Starting system upgrade. This will take a while." + msgstr "启动系统升级。这需要一段时间。" + +-#: plugins/system_upgrade.py:622 ++#: plugins/system_upgrade.py:635 + msgid "Cleaning up downloaded data..." + msgstr "清理下载的数据..." + +-#: plugins/system_upgrade.py:652 ++#: plugins/system_upgrade.py:665 + msgid "" + "The system-upgrade transaction is empty, your system is already up-to-date." + msgstr "system-upgrade 事务为空,您的系统已经为最新版本。" + +-#: plugins/system_upgrade.py:661 ++#: plugins/system_upgrade.py:674 + msgid "Transaction saved to {}." + msgstr "事务已保存到 {}。" + +-#: plugins/system_upgrade.py:664 ++#: plugins/system_upgrade.py:677 + msgid "Error storing transaction: {}" + msgstr "存储事务时出现错误:{}" + +-#: plugins/system_upgrade.py:686 ++#: plugins/system_upgrade.py:699 + msgid "Download finished." + msgstr "下载已完成。" + +-#: plugins/system_upgrade.py:689 plugins/system_upgrade.py:690 ++#: plugins/system_upgrade.py:703 ++msgid "Upgrade complete! Cleaning up and powering off..." ++msgstr "升级完成!清理并关闭系统..." ++ ++#: plugins/system_upgrade.py:705 + msgid "Upgrade complete! Cleaning up and rebooting..." + msgstr "升级完成!清理并重启..." + +-#: plugins/system_upgrade.py:699 ++#: plugins/system_upgrade.py:717 + msgid "Prepare offline upgrade of the system" + msgstr "准备系统的离线升级" + +-#: plugins/system_upgrade.py:704 ++#: plugins/system_upgrade.py:722 + msgid "Prepare offline distrosync of the system" + msgstr "准备系统的离线 distrosync" + +@@ -1530,5 +1515,3 @@ msgstr "子命令 '{}' 已被弃用。改为使用 'exclude' 子命令。" + #~ msgid "where to store downloaded repositories " + #~ msgstr "在何处保存已下载的仓库 " + +-#~ msgid "Could not make repository directory: %s" +-#~ msgstr "无法创建仓库目录: %s" +-- +2.41.0 + diff --git a/SPECS/dnf-plugins-core.spec b/SPECS/dnf-plugins-core.spec index c1155de..42a6edc 100644 --- a/SPECS/dnf-plugins-core.spec +++ b/SPECS/dnf-plugins-core.spec @@ -34,7 +34,7 @@ Name: dnf-plugins-core Version: 4.3.0 -Release: 5%{?dist} +Release: 11%{?dist} Summary: Core Plugins for DNF License: GPLv2+ URL: https://github.com/rpm-software-management/dnf-plugins-core @@ -44,7 +44,12 @@ Patch2: 0002-Add-a-warning-when-using-system-upgrade-on-RHEL.patch Patch3: 0003-offline-upgrade-Add-security-filters.patch Patch4: 0004-system-upgrade-Show-warning-always-for-a-downstream.patch Patch5: 0005-Update-translations.patch - +Patch6: 0006-Fix-boot-time-derivation-for-systems-with-no-rtc.patch +Patch7: 0007-system-upgrade-Add-poweroff-option-to-reboot-subcomm.patch +Patch8: 0008-Doc-update-for-reposync-RhBug-2132383-2182004.patch +Patch9: 0009-Add-fix-and-test-assertion-for-no-systemd-unit-exist.patch +Patch10: 0010-sys-upgrade_Wait_until_upgrade_done_before_poweoff.patch +Patch11: 0011-Update-translations-RHEL-9.3.patch BuildArch: noarch BuildRequires: cmake @@ -219,7 +224,7 @@ repoquery, reposync, repotrack, repodiff, builddep, config-manager, debug, download and yum-groups-manager that use new implementations using DNF. %endif -%if 0%{?rhel} == 0 && %{with python2} +%if %{with python2} %package -n python2-dnf-plugin-leaves Summary: Leaves Plugin for DNF Requires: python2-%{name} = %{version}-%{release} @@ -238,7 +243,7 @@ Leaves Plugin for DNF, Python 2 version. List all installed packages not required by any other installed package. %endif -%if 0%{?rhel} == 0 && %{with python3} +%if %{with python3} %package -n python3-dnf-plugin-leaves Summary: Leaves Plugin for DNF Requires: python3-%{name} = %{version}-%{release} @@ -336,7 +341,7 @@ Post transaction actions Plugin for DNF, Python 3 version. Plugin runs actions files. %endif -%if 0%{?rhel} == 0 && %{with python2} +%if %{with python2} %package -n python2-dnf-plugin-show-leaves Summary: Leaves Plugin for DNF Requires: python2-%{name} = %{version}-%{release} @@ -357,7 +362,7 @@ packages that are no longer required by any other installed package after a transaction. %endif -%if 0%{?rhel} == 0 && %{with python3} +%if %{with python3} %package -n python3-dnf-plugin-show-leaves Summary: Show-leaves Plugin for DNF Requires: python3-%{name} = %{version}-%{release} @@ -687,8 +692,6 @@ ln -sf %{_mandir}/man1/%{yum_utils_subpackage_name}.1.gz %{buildroot}%{_mandir}/ %exclude %{_mandir}/man1/yum-utils.* %endif -%if 0%{?rhel} == 0 - %if %{with python2} %files -n python2-dnf-plugin-leaves %{python2_sitelib}/dnf-plugins/leaves.* @@ -702,18 +705,6 @@ ln -sf %{_mandir}/man1/%{yum_utils_subpackage_name}.1.gz %{buildroot}%{_mandir}/ %{_mandir}/man8/dnf-leaves.* %endif -%else -%exclude %{_mandir}/man8/dnf-leaves.* -%if %{with python2} -%exclude %{python2_sitelib}/dnf-plugins/leaves.* -%endif -%if %{with python3} -%exclude %{python3_sitelib}/dnf-plugins/leaves.* -%exclude %{python3_sitelib}/dnf-plugins/__pycache__/leaves.* -%endif -%endif -# endif 0%%{?rhel} == 0 - %if 0%{?rhel} == 0 && %{with python2} %files -n python2-dnf-plugin-local %config(noreplace) %{_sysconfdir}/dnf/plugins/local.conf @@ -754,8 +745,6 @@ ln -sf %{_mandir}/man1/%{yum_utils_subpackage_name}.1.gz %{buildroot}%{_mandir}/ %{_mandir}/man8/dnf-post-transaction-actions.* %endif -%if 0%{?rhel} == 0 - %if %{with python2} %files -n python2-dnf-plugin-show-leaves %{python2_sitelib}/dnf-plugins/show_leaves.* @@ -769,18 +758,6 @@ ln -sf %{_mandir}/man1/%{yum_utils_subpackage_name}.1.gz %{buildroot}%{_mandir}/ %{_mandir}/man8/dnf-show-leaves.* %endif -%else -%exclude %{_mandir}/man8/dnf-show-leaves.* -%if %{with python2} -%exclude %{python2_sitelib}/dnf-plugins/show_leaves.* -%endif -%if %{with python3} -%exclude %{python3_sitelib}/dnf-plugins/show_leaves.* -%exclude %{python3_sitelib}/dnf-plugins/__pycache__/show_leaves.* -%endif -%endif -# endif 0%%{?rhel} == 0 - %if %{with python2} %files -n python2-dnf-plugin-versionlock %config(noreplace) %{_sysconfdir}/dnf/plugins/versionlock.conf @@ -820,6 +797,28 @@ ln -sf %{_mandir}/man1/%{yum_utils_subpackage_name}.1.gz %{buildroot}%{_mandir}/ %endif %changelog +* Fri Sep 08 2023 Marek Blaha - 4.3.0-11 +- Rebuild in correct target + +* Thu Sep 07 2023 Marek Blaha - 4.3.0-10 +- Update translations RHEL 9.3 + +* Mon Jun 26 2023 Jaroslav Rohel - 4.3.0-9 +- system-upgrade: Wait until the upgrade is done before poweroff (RhBug:2214510) + +* Wed May 31 2023 Nicola Sella - 4.3.0-8 +- Add fix and test assertion for "no systemd unit exists for pid" + +* Wed May 17 2023 Jaroslav Rohel - 4.3.0-7 +- Remove patch: "reposync: Implement --safe-write-path option (RhBug:1898089,2203766)" (RhBug:2207946) + +* Mon May 15 2023 Jaroslav Rohel - 4.3.0-6 +- Fix boot time derivation for systems with no rtc (RhBug:2166444,2182157) +- system-upgrade: Add --poweroff option to reboot subcommand (RhBug:2157844) +- Doc update for reposync (RhBug:2132383,2182004) +- reposync: Implement --safe-write-path option (RhBug:1898089,2203766) +- Enable the leaves and show-leaves DNF plugins (RhBug:2134638) + * Wed Mar 15 2023 Marek Blaha - 4.3.0-5 - Update translations