From 2ffac92e72f162fa13cea4aa9da728a55d7e8f00 Mon Sep 17 00:00:00 2001 From: James Antill Date: Thu, 26 May 2022 01:20:32 -0400 Subject: [PATCH] Auto sync2gitlab import of dnf-4.7.0-8.el8.src.rpm --- .gitignore | 1 + ...Set-top-level-directory-for-unittest.patch | 26 + 0002-dnfrpmmiscutilspy-fix-usage-of-_.patch | 36 + 0003-Pass-the-package-to-rpmkeys-stdin.patch | 56 + ...se-rpmkeys-alone-to-verify-signature.patch | 176 + ...-for-signature-checking-with-rpmkeys.patch | 36 + ...-Add-default-colors-to-documentation.patch | 200 + ...overable-errors-on-packages-download.patch | 81 + ...rameter-to-download_payloads-methods.patch | 70 + ...-method-not-catch-CompsError-anymore.patch | 138 + ...ltilib_policyall-RhBug19966811995630.patch | 29 + ...s-not-respect-cacheonly-RhBug1862970.patch | 33 + ...ocumentation-API-notes-for-cacheonly.patch | 26 + ...stdir-option-with-modulesync-command.patch | 39 + 0014-Update-translations-RhBug-2017270.patch | 21203 ++++++++++++++++ EMPTY | 1 - dnf.spec | 2603 ++ sources | 1 + 18 files changed, 24754 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 0001-Set-top-level-directory-for-unittest.patch create mode 100644 0002-dnfrpmmiscutilspy-fix-usage-of-_.patch create mode 100644 0003-Pass-the-package-to-rpmkeys-stdin.patch create mode 100644 0004-Use-rpmkeys-alone-to-verify-signature.patch create mode 100644 0005-Lower-_pkgverify_level-to-signature-for-signature-checking-with-rpmkeys.patch create mode 100644 0006-Add-default-colors-to-documentation.patch create mode 100644 0007-Fix-reporting-irrecoverable-errors-on-packages-download.patch create mode 100644 0008-Add-fail_fast-parameter-to-download_payloads-methods.patch create mode 100644 0009-comps-Make-the-install_or_skip-method-not-catch-CompsError-anymore.patch create mode 100644 0010-doc-Improve-description-of-multilib_policyall-RhBug19966811995630.patch create mode 100644 0011-Fix-Python-dnf-API-does-not-respect-cacheonly-RhBug1862970.patch create mode 100644 0012-Documentation-API-notes-for-cacheonly.patch create mode 100644 0013-Allow-destdir-option-with-modulesync-command.patch create mode 100644 0014-Update-translations-RhBug-2017270.patch delete mode 100644 EMPTY create mode 100644 dnf.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..acb2362 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/dnf-4.7.0.tar.gz diff --git a/0001-Set-top-level-directory-for-unittest.patch b/0001-Set-top-level-directory-for-unittest.patch new file mode 100644 index 0000000..7bb4f80 --- /dev/null +++ b/0001-Set-top-level-directory-for-unittest.patch @@ -0,0 +1,26 @@ +From 6eff0fe7850624791f049a17a41d779915f30f94 Mon Sep 17 00:00:00 2001 +From: Pavla Kratochvilova +Date: Wed, 19 May 2021 12:58:30 +0200 +Subject: [PATCH] Set top-level directory for unittest + +In some build environments, the top-level directory is not added to +the sys.path and the tests fail. This fixes the issue. +--- + tests/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt +index 77a4894..b7f4031 100644 +--- a/tests/CMakeLists.txt ++++ b/tests/CMakeLists.txt +@@ -1,6 +1,6 @@ + ADD_TEST( + NAME test +- COMMAND ${PYTHON_EXECUTABLE} -m unittest discover -s tests ++ COMMAND ${PYTHON_EXECUTABLE} -m unittest discover -s tests -t ${PROJECT_SOURCE_DIR} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) + + # For libdnf built with sanitizers, has no effect otherwise. +-- +libgit2 1.0.1 + diff --git a/0002-dnfrpmmiscutilspy-fix-usage-of-_.patch b/0002-dnfrpmmiscutilspy-fix-usage-of-_.patch new file mode 100644 index 0000000..0089bc6 --- /dev/null +++ b/0002-dnfrpmmiscutilspy-fix-usage-of-_.patch @@ -0,0 +1,36 @@ +From 8823feb5f42f8c579fdab80d9e22112b88d0ad2b Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Tue, 4 May 2021 22:03:30 +0200 +Subject: [PATCH] dnf/rpm/miscutils.py: fix usage of _() + +Specifically: +- an import of _ was missing +- _ was reused for a different purpose +--- + dnf/rpm/miscutils.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dnf/rpm/miscutils.py b/dnf/rpm/miscutils.py +index 235aaf2..7e33d4c 100644 +--- a/dnf/rpm/miscutils.py ++++ b/dnf/rpm/miscutils.py +@@ -22,6 +22,7 @@ import subprocess + import logging + + from dnf.i18n import ucd ++from dnf.i18n import _ + from shutil import which + + +@@ -46,7 +47,7 @@ def _verifyPkgUsingRpmkeys(package, installroot): + env={'LC_ALL': 'C'}, + stdout=subprocess.PIPE, + cwd='/') as p: +- data, _ = p.communicate() ++ data, err = p.communicate() + if p.returncode != 0 or data != (package.encode('ascii', 'strict') + b': digests signatures OK\n'): + return 0 + else: +-- +libgit2 1.0.1 + diff --git a/0003-Pass-the-package-to-rpmkeys-stdin.patch b/0003-Pass-the-package-to-rpmkeys-stdin.patch new file mode 100644 index 0000000..f8de68f --- /dev/null +++ b/0003-Pass-the-package-to-rpmkeys-stdin.patch @@ -0,0 +1,56 @@ +From 134b095b0833956cadfc02a9a1e7ca1344cd5aaa Mon Sep 17 00:00:00 2001 +From: Demi Marie Obenour +Date: Tue, 27 Apr 2021 21:07:19 -0400 +Subject: [PATCH] Pass the package to rpmkeys stdin + +This avoids having to compute the expected stdout value, which will +always be the constant "-: digests signatures OK\n". +--- + dnf/rpm/miscutils.py | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/dnf/rpm/miscutils.py b/dnf/rpm/miscutils.py +index 7e33d4c..5f2621c 100644 +--- a/dnf/rpm/miscutils.py ++++ b/dnf/rpm/miscutils.py +@@ -29,7 +29,8 @@ from shutil import which + logger = logging.getLogger('dnf') + + +-def _verifyPkgUsingRpmkeys(package, installroot): ++def _verifyPkgUsingRpmkeys(package, installroot, fdno): ++ os.lseek(fdno, 0, os.SEEK_SET) + rpmkeys_binary = '/usr/bin/rpmkeys' + if not os.path.isfile(rpmkeys_binary): + rpmkeys_binary = which("rpmkeys") +@@ -40,15 +41,16 @@ def _verifyPkgUsingRpmkeys(package, installroot): + logger.critical(_('Cannot find rpmkeys executable to verify signatures.')) + return 0 + +- args = ('rpmkeys', '--checksig', '--root', installroot, '--define', '_pkgverify_level all', '--', package) ++ args = ('rpmkeys', '--checksig', '--root', installroot, '--define', '_pkgverify_level all', '-') + with subprocess.Popen( + args=args, + executable=rpmkeys_binary, + env={'LC_ALL': 'C'}, ++ stdin=fdno, + stdout=subprocess.PIPE, + cwd='/') as p: + data, err = p.communicate() +- if p.returncode != 0 or data != (package.encode('ascii', 'strict') + b': digests signatures OK\n'): ++ if p.returncode != 0 or data != b'-: digests signatures OK\n': + return 0 + else: + return 1 +@@ -85,7 +87,7 @@ def checkSig(ts, package): + + if siginfo == '(none)': + value = 4 +- elif "Key ID" in siginfo and _verifyPkgUsingRpmkeys(package, ts.ts.rootDir): ++ elif "Key ID" in siginfo and _verifyPkgUsingRpmkeys(package, ts.ts.rootDir, fdno): + value = 0 + else: + raise ValueError('Unexpected return value %r from hdr.sprintf when checking signature.' % siginfo) +-- +libgit2 1.0.1 + diff --git a/0004-Use-rpmkeys-alone-to-verify-signature.patch b/0004-Use-rpmkeys-alone-to-verify-signature.patch new file mode 100644 index 0000000..73daa7e --- /dev/null +++ b/0004-Use-rpmkeys-alone-to-verify-signature.patch @@ -0,0 +1,176 @@ +From a21880fbac479968546304beeeae3ed3bb899373 Mon Sep 17 00:00:00 2001 +From: Demi Marie Obenour +Date: Fri, 9 Apr 2021 13:03:03 -0400 +Subject: [PATCH] Use rpmkeys alone to verify signature + +This avoids having to actually parse the package to check its signature, +which reduces attack surface. If the output of rpmkeys cannot be +parsed, we assume the package is corrupt (the most likely cause). +--- + dnf/rpm/miscutils.py | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------ + 1 file changed, 66 insertions(+), 60 deletions(-) + +diff --git a/dnf/rpm/miscutils.py b/dnf/rpm/miscutils.py +index 5f2621c..9d5b286 100644 +--- a/dnf/rpm/miscutils.py ++++ b/dnf/rpm/miscutils.py +@@ -13,90 +13,96 @@ + # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + # Copyright 2003 Duke University + +-from __future__ import print_function, absolute_import +-from __future__ import unicode_literals ++from __future__ import print_function, absolute_import, unicode_literals + +-import rpm + import os + import subprocess + import logging +- +-from dnf.i18n import ucd +-from dnf.i18n import _ + from shutil import which + ++from dnf.i18n import _ + +-logger = logging.getLogger('dnf') ++_logger = logging.getLogger('dnf') ++_rpmkeys_binary = None + ++def _find_rpmkeys_binary(): ++ global _rpmkeys_binary ++ if _rpmkeys_binary is None: ++ _rpmkeys_binary = which("rpmkeys") ++ _logger.debug(_('Using rpmkeys executable at %s to verify signatures'), ++ _rpmkeys_binary) ++ return _rpmkeys_binary + +-def _verifyPkgUsingRpmkeys(package, installroot, fdno): +- os.lseek(fdno, 0, os.SEEK_SET) +- rpmkeys_binary = '/usr/bin/rpmkeys' +- if not os.path.isfile(rpmkeys_binary): +- rpmkeys_binary = which("rpmkeys") +- logger.info(_('Using rpmkeys executable from {path} to verify signature for package: {package}.').format( +- path=rpmkeys_binary, package=package)) ++def _process_rpm_output(data): ++ # No signatures or digests = corrupt package. ++ # There is at least one line for -: and another (empty) entry after the ++ # last newline. ++ if len(data) < 3 or data[0] != b'-:' or data[-1]: ++ return 2 ++ seen_sig, missing_key, not_trusted, not_signed = False, False, False, False ++ for i in data[1:-1]: ++ if b': BAD' in i: ++ return 2 ++ elif i.endswith(b': NOKEY'): ++ missing_key = True ++ elif i.endswith(b': NOTTRUSTED'): ++ not_trusted = True ++ elif i.endswith(b': NOTFOUND'): ++ not_signed = True ++ elif not i.endswith(b': OK'): ++ return 2 ++ if not_trusted: ++ return 3 ++ elif missing_key: ++ return 1 ++ elif not_signed: ++ return 4 ++ # we still check return code, so this is safe ++ return 0 + +- if not os.path.isfile(rpmkeys_binary): +- logger.critical(_('Cannot find rpmkeys executable to verify signatures.')) +- return 0 ++def _verifyPackageUsingRpmkeys(package, installroot): ++ rpmkeys_binary = _find_rpmkeys_binary() ++ if rpmkeys_binary is None or not os.path.isfile(rpmkeys_binary): ++ _logger.critical(_('Cannot find rpmkeys executable to verify signatures.')) ++ return 2 + +- args = ('rpmkeys', '--checksig', '--root', installroot, '--define', '_pkgverify_level all', '-') ++ # "--define=_pkgverify_level all" enforces signature checking; ++ # "--define=_pkgverify_flags 0x0" ensures that all signatures and digests ++ # are checked. ++ args = ('rpmkeys', '--checksig', '--root', installroot, '--verbose', ++ '--define=_pkgverify_level all', '--define=_pkgverify_flags 0x0', ++ '-') + with subprocess.Popen( + args=args, + executable=rpmkeys_binary, + env={'LC_ALL': 'C'}, +- stdin=fdno, + stdout=subprocess.PIPE, +- cwd='/') as p: +- data, err = p.communicate() +- if p.returncode != 0 or data != b'-: digests signatures OK\n': +- return 0 +- else: +- return 1 ++ cwd='/', ++ stdin=package) as p: ++ data = p.communicate()[0] ++ returncode = p.returncode ++ if type(returncode) is not int: ++ raise AssertionError('Popen set return code to non-int') ++ # rpmkeys can return something other than 0 or 1 in the case of a ++ # fatal error (OOM, abort() called, SIGSEGV, etc) ++ if returncode >= 2 or returncode < 0: ++ return 2 ++ ret = _process_rpm_output(data.split(b'\n')) ++ if ret: ++ return ret ++ return 2 if returncode else 0 + + def checkSig(ts, package): + """Takes a transaction set and a package, check it's sigs, + return 0 if they are all fine + return 1 if the gpg key can't be found + return 2 if the header is in someway damaged + return 3 if the key is not trusted + return 4 if the pkg is not gpg or pgp signed""" + +- value = 4 +- currentflags = ts.setVSFlags(0) +- fdno = os.open(package, os.O_RDONLY) ++ fdno = os.open(package, os.O_RDONLY|os.O_NOCTTY|os.O_CLOEXEC) + try: +- hdr = ts.hdrFromFdno(fdno) +- except rpm.error as e: +- if str(e) == "public key not available": +- value = 1 +- elif str(e) == "public key not trusted": +- value = 3 +- elif str(e) == "error reading package header": +- value = 2 +- else: +- raise ValueError('Unexpected error value %r from ts.hdrFromFdno when checking signature.' % str(e)) +- else: +- # checks signature from an hdr +- string = '%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:' \ +- '{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|' +- try: +- siginfo = hdr.sprintf(string) +- siginfo = ucd(siginfo) +- +- if siginfo == '(none)': +- value = 4 +- elif "Key ID" in siginfo and _verifyPkgUsingRpmkeys(package, ts.ts.rootDir, fdno): +- value = 0 +- else: +- raise ValueError('Unexpected return value %r from hdr.sprintf when checking signature.' % siginfo) +- except UnicodeDecodeError: +- pass +- +- del hdr +- +- os.close(fdno) +- +- ts.setVSFlags(currentflags) # put things back like they were before ++ value = _verifyPackageUsingRpmkeys(fdno, ts.ts.rootDir) ++ finally: ++ os.close(fdno) + return value +-- +libgit2 1.0.1 + diff --git a/0005-Lower-_pkgverify_level-to-signature-for-signature-checking-with-rpmkeys.patch b/0005-Lower-_pkgverify_level-to-signature-for-signature-checking-with-rpmkeys.patch new file mode 100644 index 0000000..f30ae63 --- /dev/null +++ b/0005-Lower-_pkgverify_level-to-signature-for-signature-checking-with-rpmkeys.patch @@ -0,0 +1,36 @@ +From b05f4589e4afb69240ae2001246a5ffb5d6b1b90 Mon Sep 17 00:00:00 2001 +From: Aleš Matěj +Date: Thu, 3 Jun 2021 11:23:31 +0200 +Subject: [PATCH] Lower _pkgverify_level to signature for signature checking with rpmkeys + +We don't want to be veryfing digests as well when checking signatures. +It would break legacy package installation in FIPS mode due to MD5 +digest being unverifiable (see https://access.redhat.com/solutions/5221661) + +Follow up for https://github.com/rpm-software-management/dnf/pull/1753 +--- + dnf/rpm/miscutils.py | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/dnf/rpm/miscutils.py b/dnf/rpm/miscutils.py +index 9d5b286..46ef475 100644 +--- a/dnf/rpm/miscutils.py ++++ b/dnf/rpm/miscutils.py +@@ -66,11 +66,10 @@ def _verifyPackageUsingRpmkeys(package, installroot): + _logger.critical(_('Cannot find rpmkeys executable to verify signatures.')) + return 2 + +- # "--define=_pkgverify_level all" enforces signature checking; +- # "--define=_pkgverify_flags 0x0" ensures that all signatures and digests +- # are checked. ++ # "--define=_pkgverify_level signature" enforces signature checking; ++ # "--define=_pkgverify_flags 0x0" ensures that all signatures are checked. + args = ('rpmkeys', '--checksig', '--root', installroot, '--verbose', +- '--define=_pkgverify_level all', '--define=_pkgverify_flags 0x0', ++ '--define=_pkgverify_level signature', '--define=_pkgverify_flags 0x0', + '-') + with subprocess.Popen( + args=args, +-- +libgit2 1.0.1 + diff --git a/0006-Add-default-colors-to-documentation.patch b/0006-Add-default-colors-to-documentation.patch new file mode 100644 index 0000000..aa773c2 --- /dev/null +++ b/0006-Add-default-colors-to-documentation.patch @@ -0,0 +1,200 @@ +From 6766d3af1993d48f5548746e68268e674e52bd1d Mon Sep 17 00:00:00 2001 +From: Gary Leydon +Date: Fri, 21 May 2021 14:13:59 -0400 +Subject: [PATCH 1/3] add default colors to documentation + +--- + doc/conf_ref.rst | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/doc/conf_ref.rst b/doc/conf_ref.rst +index ec5bac2ab..fcaa0319f 100644 +--- a/doc/conf_ref.rst ++++ b/doc/conf_ref.rst +@@ -498,72 +498,72 @@ configuration file by your distribution to override the DNF defaults. + :ref:`color ` + + Color of available packages that are older than installed packages. +- The option is used during list operations. ++ The option is used during list operations. Default is dim,cyan. + + ``color_list_available_install`` + :ref:`color ` + + Color of packages that are available for installation and none of their versions in installed. +- The option is used during list operations. ++ The option is used during list operations. Default is normal. + + ``color_list_available_reinstall`` + :ref:`color ` + +- Color of available packages that are identical to installed versions and are available for reinstalls. ++ Color of available packages that are identical to installed versions and are available for reinstalls. Default is bold,underline,green. + The option is used during list operations. + + ``color_list_available_upgrade`` + :ref:`color ` + +- Color of available packages that are newer than installed packages. ++ Color of available packages that are newer than installed packages. Default is bold,blue. + The option is used during list operations. + + ``color_list_installed_extra`` + :ref:`color ` + + Color of installed packages that do not have any version among available packages. +- The option is used during list operations. ++ The option is used during list operations. Default is bold,red. + + ``color_list_installed_newer`` + :ref:`color ` + + Color of installed packages that are newer than any version among available packages. +- The option is used during list operations. ++ The option is used during list operations. Default is bold,yellow. + + ``color_list_installed_older`` + :ref:`color ` + + Color of installed packages that are older than any version among available packages. +- The option is used during list operations. ++ The option is used during list operations. Default is bold. + + ``color_list_installed_reinstall`` + :ref:`color ` + + Color of installed packages that are among available packages and can be reinstalled. +- The option is used during list operations. ++ The option is used during list operations. Default is normal. + + ``color_search_match`` + :ref:`color ` + +- Color of patterns matched in search output. ++ Color of patterns matched in search output. Default is bold. + + ``color_update_installed`` + :ref:`color ` + +- Color of removed packages. ++ Color of removed packages. Default is normal. + This option is used during displaying transactions. + + ``color_update_local`` + :ref:`color ` + + Color of local packages that are installed from the @commandline repository. +- This option is used during displaying transactions. ++ This option is used during displaying transactions. Default is bold. + + ``color_update_remote`` + :ref:`color ` + + Color of packages that are installed/upgraded/downgraded from remote repositories. +- This option is used during displaying transactions. ++ This option is used during displaying transactions. Default is normal. + + + ============== +-- +2.31.1 + + +From 276e3b1d19bfad2a72f75ecbcce478e4f1e575db Mon Sep 17 00:00:00 2001 +From: Gary Leydon +Date: Fri, 21 May 2021 14:16:21 -0400 +Subject: [PATCH 2/3] add author + +--- + AUTHORS | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/AUTHORS b/AUTHORS +index 1981dc4e7..f8c9eb832 100644 +--- a/AUTHORS ++++ b/AUTHORS +@@ -95,3 +95,4 @@ DNF CONTRIBUTORS + Vladan Kudlac + Will Woods + Furkan Karcıoğlu ++ Gary Leydon +-- +2.31.1 + + +From 5cfe87de2ecd645c2aa8b210bd98171e8dd72fe5 Mon Sep 17 00:00:00 2001 +From: Gary Leydon +Date: Thu, 27 May 2021 11:52:42 -0400 +Subject: [PATCH 3/3] update colors according to + libdnf/libdnf/conf/ConfigMain.cpp + +--- + doc/conf_ref.rst | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/doc/conf_ref.rst b/doc/conf_ref.rst +index fcaa0319f..016bd00c2 100644 +--- a/doc/conf_ref.rst ++++ b/doc/conf_ref.rst +@@ -498,13 +498,13 @@ configuration file by your distribution to override the DNF defaults. + :ref:`color ` + + Color of available packages that are older than installed packages. +- The option is used during list operations. Default is dim,cyan. ++ The option is used during list operations. Default is magenta. + + ``color_list_available_install`` + :ref:`color ` + + Color of packages that are available for installation and none of their versions in installed. +- The option is used during list operations. Default is normal. ++ The option is used during list operations. Default is bold,cyan. + + ``color_list_available_reinstall`` + :ref:`color ` +@@ -534,36 +534,36 @@ configuration file by your distribution to override the DNF defaults. + :ref:`color ` + + Color of installed packages that are older than any version among available packages. +- The option is used during list operations. Default is bold. ++ The option is used during list operations. Default is yellow. + + ``color_list_installed_reinstall`` + :ref:`color ` + + Color of installed packages that are among available packages and can be reinstalled. +- The option is used during list operations. Default is normal. ++ The option is used during list operations. Default is cyan. + + ``color_search_match`` + :ref:`color ` + +- Color of patterns matched in search output. Default is bold. ++ Color of patterns matched in search output. Default is bold,magenta. + + ``color_update_installed`` + :ref:`color ` + +- Color of removed packages. Default is normal. ++ Color of removed packages. Default is red. + This option is used during displaying transactions. + + ``color_update_local`` + :ref:`color ` + + Color of local packages that are installed from the @commandline repository. +- This option is used during displaying transactions. Default is bold. ++ This option is used during displaying transactions. Default is green. + + ``color_update_remote`` + :ref:`color ` + + Color of packages that are installed/upgraded/downgraded from remote repositories. +- This option is used during displaying transactions. Default is normal. ++ This option is used during displaying transactions. Default is bold,green. + + + ============== +-- +2.31.1 + diff --git a/0007-Fix-reporting-irrecoverable-errors-on-packages-download.patch b/0007-Fix-reporting-irrecoverable-errors-on-packages-download.patch new file mode 100644 index 0000000..12f3972 --- /dev/null +++ b/0007-Fix-reporting-irrecoverable-errors-on-packages-download.patch @@ -0,0 +1,81 @@ +From f5cb86b83aedaa18fd784d06d8f1479b9127c6f5 Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Wed, 6 Oct 2021 09:43:37 +0200 +Subject: [PATCH] Fix reporting irrecoverable errors on packages download + +The original _irrecoverable property returns random dictionary - either +packages irrecoverable errors, or global fatal error or even new empty +dictionary. This makes it prone to programmer errors like: + +errs._irrecoverable[pkg] = [err] + +which may lead to setting the error into the newly created empty +dictionary instead of packages errors dictionary as intended. + +I turned the property to method which I consider more clear. +--- + dnf/base.py | 8 ++++---- + dnf/repo.py | 9 ++++----- + 2 files changed, 8 insertions(+), 9 deletions(-) + +diff --git a/dnf/base.py b/dnf/base.py +index 0949ddf..b0a378c 100644 +--- a/dnf/base.py ++++ b/dnf/base.py +@@ -1165,8 +1165,8 @@ class Base(object): + progress.start(len(payloads), est_remote_size) + errors = dnf.repo._download_payloads(payloads, drpm) + +- if errors._irrecoverable: +- raise dnf.exceptions.DownloadError(errors._irrecoverable) ++ if errors._irrecoverable(): ++ raise dnf.exceptions.DownloadError(errors._irrecoverable()) + + remote_size = sum(errors._bandwidth_used(pload) + for pload in payloads) +@@ -1191,8 +1191,8 @@ class Base(object): + progress.start(len(payloads), est_remote_size) + errors = dnf.repo._download_payloads(payloads, drpm) + +- if errors._irrecoverable: +- raise dnf.exceptions.DownloadError(errors._irrecoverable) ++ if errors._irrecoverable(): ++ raise dnf.exceptions.DownloadError(errors._irrecoverable()) + + remote_size += \ + sum(errors._bandwidth_used(pload) for pload in payloads) +diff --git a/dnf/repo.py b/dnf/repo.py +index b5c9849..b454e98 100644 +--- a/dnf/repo.py ++++ b/dnf/repo.py +@@ -112,7 +112,7 @@ def _download_payloads(payloads, drpm): + errs._skipped.add(pkg) + continue + pkg.repo._repo.expire() +- errs._irrecoverable[pkg] = [err] ++ errs._pkg_irrecoverable[pkg] = [err] + + return errs + +@@ -131,15 +131,14 @@ def _update_saving(saving, payloads, errs): + + class _DownloadErrors(object): + def __init__(self): +- self._val_irrecoverable = {} ++ self._pkg_irrecoverable = {} + self._val_recoverable = {} + self._fatal = None + self._skipped = set() + +- @property + def _irrecoverable(self): +- if self._val_irrecoverable: +- return self._val_irrecoverable ++ if self._pkg_irrecoverable: ++ return self._pkg_irrecoverable + if self._fatal: + return {'': [self._fatal]} + return {} +-- +libgit2 1.0.1 + diff --git a/0008-Add-fail_fast-parameter-to-download_payloads-methods.patch b/0008-Add-fail_fast-parameter-to-download_payloads-methods.patch new file mode 100644 index 0000000..6c01254 --- /dev/null +++ b/0008-Add-fail_fast-parameter-to-download_payloads-methods.patch @@ -0,0 +1,70 @@ +From ca3d7f06c8f4c1c901dc853ac33c06976b46c61e Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Wed, 6 Oct 2021 09:56:05 +0200 +Subject: [PATCH] Add fail_fast parameter to download_payloads methods + +Unlike in the rpm transaction, reposync needs to switch the fail_fast +off to download as much packages from repository as possible. +--- + dnf/base.py | 6 +++--- + dnf/repo.py | 4 ++-- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/dnf/base.py b/dnf/base.py +index b0a378c..c258a5a 100644 +--- a/dnf/base.py ++++ b/dnf/base.py +@@ -1151,7 +1151,7 @@ class Base(object): + timer() + self._trans_success = True + +- def _download_remote_payloads(self, payloads, drpm, progress, callback_total): ++ def _download_remote_payloads(self, payloads, drpm, progress, callback_total, fail_fast=True): + lock = dnf.lock.build_download_lock(self.conf.cachedir, self.conf.exit_on_lock) + with lock: + beg_download = time.time() +@@ -1163,7 +1163,7 @@ class Base(object): + progress.start(len(payloads), est_remote_size, total_drpms=total_drpm) + else: + progress.start(len(payloads), est_remote_size) +- errors = dnf.repo._download_payloads(payloads, drpm) ++ errors = dnf.repo._download_payloads(payloads, drpm, fail_fast) + + if errors._irrecoverable(): + raise dnf.exceptions.DownloadError(errors._irrecoverable()) +@@ -1189,7 +1189,7 @@ class Base(object): + est_remote_size = sum(pload.download_size + for pload in payloads) + progress.start(len(payloads), est_remote_size) +- errors = dnf.repo._download_payloads(payloads, drpm) ++ errors = dnf.repo._download_payloads(payloads, drpm, fail_fast) + + if errors._irrecoverable(): + raise dnf.exceptions.DownloadError(errors._irrecoverable()) +diff --git a/dnf/repo.py b/dnf/repo.py +index b454e98..bb42230 100644 +--- a/dnf/repo.py ++++ b/dnf/repo.py +@@ -84,17 +84,17 @@ def _pkg2payload(pkg, progress, *factories): + raise ValueError(_('no matching payload factory for %s') % pkg) + + +-def _download_payloads(payloads, drpm): ++def _download_payloads(payloads, drpm, fail_fast=True): + # download packages + def _download_sort_key(payload): + return not hasattr(payload, 'delta') + + drpm.err.clear() + targets = [pload._librepo_target() + for pload in sorted(payloads, key=_download_sort_key)] + errs = _DownloadErrors() + try: +- libdnf.repo.PackageTarget.downloadPackages(libdnf.repo.VectorPPackageTarget(targets), True) ++ libdnf.repo.PackageTarget.downloadPackages(libdnf.repo.VectorPPackageTarget(targets), fail_fast) + except RuntimeError as e: + errs._fatal = str(e) + drpm.wait() +-- +libgit2 1.0.1 + diff --git a/0009-comps-Make-the-install_or_skip-method-not-catch-CompsError-anymore.patch b/0009-comps-Make-the-install_or_skip-method-not-catch-CompsError-anymore.patch new file mode 100644 index 0000000..42a06db --- /dev/null +++ b/0009-comps-Make-the-install_or_skip-method-not-catch-CompsError-anymore.patch @@ -0,0 +1,138 @@ +From f0f037db8219b1e74be4ed86f5eea53b63ca1d88 Mon Sep 17 00:00:00 2001 +From: Lukáš Hrázký +Date: Tue, 20 Jul 2021 15:29:59 +0200 +Subject: [PATCH] comps: Make the install_or_skip() method not catch CompsError anymore + +According to its docstring, the original intention of the method was to +not fail on installing an already installed group/environment. + +However, the CompsError is no longer thrown when attempting to install +an already installed group or environment. It was changed to logging a +warning directly in 5210b9dc and then the check was removed completely +in 217ca0fa. + +For the other case for which an instance of CompsError can be thrown +from the install_group() and install_environment() methods, which is +when a group or environment is not found, we certainly want to throw an +error (see the linked bugs), therefore there's no reason to catch the +exception anymore. + +The install_or_skip() method is preserved as part of the API so as not +to break compatibility any more than necessary. + +msg: API: Raise CompsError when group/env not found in install_group and install_environment +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1947958 +related: https://bugzilla.redhat.com/show_bug.cgi?id=1943206 +--- + dnf/base.py | 8 ++------ + dnf/cli/commands/group.py | 4 ++-- + dnf/comps.py | 20 ++++++++++---------- + doc/api_base.rst | 4 ++-- + 4 files changed, 16 insertions(+), 20 deletions(-) + +diff --git a/dnf/base.py b/dnf/base.py +index c258a5a..babca31 100644 +--- a/dnf/base.py ++++ b/dnf/base.py +@@ -1668,9 +1668,7 @@ class Base(object): + if not isinstance(types, int): + types = libdnf.transaction.listToCompsPackageType(types) + +- trans = dnf.comps.install_or_skip(solver._environment_install, +- env_id, types, exclude or set(), +- strict, exclude_groups) ++ trans = solver._environment_install(env_id, types, exclude or set(), strict, exclude_groups) + if not trans: + return 0 + return self._add_comps_trans(trans) +@@ -1713,9 +1711,7 @@ class Base(object): + if not isinstance(pkg_types, int): + pkg_types = libdnf.transaction.listToCompsPackageType(pkg_types) + +- trans = dnf.comps.install_or_skip(solver._group_install, +- grp_id, pkg_types, exclude_pkgnames, +- strict) ++ trans = solver._group_install(grp_id, pkg_types, exclude_pkgnames, strict) + if not trans: + return 0 + if strict: +diff --git a/dnf/cli/commands/group.py b/dnf/cli/commands/group.py +index cf54279..fd723c4 100644 +--- a/dnf/cli/commands/group.py ++++ b/dnf/cli/commands/group.py +@@ -244,9 +244,9 @@ class GroupCommand(commands.Command): + types = tuple(self.base.conf.group_package_types) + pkg_types = libdnf.transaction.listToCompsPackageType(types) + for env_id in res.environments: +- dnf.comps.install_or_skip(solver._environment_install, env_id, pkg_types) ++ solver._environment_install(env_id, pkg_types) + for group_id in res.groups: +- dnf.comps.install_or_skip(solver._group_install, group_id, pkg_types) ++ solver._group_install(group_id, pkg_types) + + def _mark_remove(self, patterns): + q = CompsQuery(self.base.comps, self.base.history, +diff --git a/dnf/comps.py b/dnf/comps.py +index 8976533..461eb27 100644 +--- a/dnf/comps.py ++++ b/dnf/comps.py +@@ -93,15 +93,15 @@ def _fn_display_order(group): + + def install_or_skip(install_fnc, grp_or_env_id, types, exclude=None, + strict=True, exclude_groups=None): +- """Either mark in persistor as installed given `grp_or_env` (group +- or environment) or skip it (if it's already installed). +- `install_fnc` has to be Solver._group_install +- or Solver._environment_install. +- """ +- try: +- return install_fnc(grp_or_env_id, types, exclude, strict, exclude_groups) +- except dnf.comps.CompsError as e: +- logger.warning("%s, %s", ucd(e)[:-1], _("skipping.")) ++ """ ++ Installs a group or an environment identified by grp_or_env_id. ++ This method is preserved for API compatibility. It used to catch an ++ exception thrown when a gorup or env was already installed, which is no ++ longer thrown. ++ `install_fnc` has to be Solver._group_install or ++ Solver._environment_install. ++ """ ++ return install_fnc(grp_or_env_id, types, exclude, strict, exclude_groups) + + + class _Langs(object): +@@ -592,7 +592,7 @@ class Solver(object): + assert dnf.util.is_string_type(group_id) + return self.history.env.is_removable_group(group_id) + +- def _environment_install(self, env_id, pkg_types, exclude, strict=True, exclude_groups=None): ++ def _environment_install(self, env_id, pkg_types, exclude=None, strict=True, exclude_groups=None): + assert dnf.util.is_string_type(env_id) + comps_env = self.comps._environment_by_id(env_id) + if not comps_env: +diff --git a/doc/api_base.rst b/doc/api_base.rst +index 20d7945..03396b6 100644 +--- a/doc/api_base.rst ++++ b/doc/api_base.rst +@@ -179,7 +179,7 @@ + + .. method:: group_install(group_id, pkg_types, exclude=None, strict=True) + +- Mark group with corresponding `group_id` installed and mark the packages in the group for installation. Return the number of packages that the operation has marked for installation. `pkg_types` is a sequence of strings determining the kinds of packages to be installed, where the respective groups can be selected by including ``"mandatory"``, ``"default"`` or ``"optional"`` in it. If `exclude` is given, it has to be an iterable of package name glob patterns: :meth:`.group_install` will then not mark the respective packages for installation whenever possible. Parameter `strict` is a boolean indicating whether group packages that exist but are non-installable due to e.g. dependency issues should be skipped (False) or cause transaction to fail to resolve (True). ++ Mark group with corresponding `group_id` installed and mark the packages in the group for installation. Return the number of packages that the operation has marked for installation. `pkg_types` is a sequence of strings determining the kinds of packages to be installed, where the respective groups can be selected by including ``"mandatory"``, ``"default"`` or ``"optional"`` in it. If `exclude` is given, it has to be an iterable of package name glob patterns: :meth:`.group_install` will then not mark the respective packages for installation whenever possible. Parameter `strict` is a boolean indicating whether group packages that exist but are non-installable due to e.g. dependency issues should be skipped (False) or cause transaction to fail to resolve (True). Raises :exc:`dnf.exceptions.CompsError` in case the group doesn't exist. + + .. method:: group_remove(group_id) + +@@ -191,7 +191,7 @@ + + .. method:: environment_install(env_id, types, exclude=None, strict=True, exclude_groups=None) + +- Similar to :meth:`.group_install` but operates on environmental groups. `exclude_groups` is an iterable of group IDs that will not be marked as installed. ++ Similar to :meth:`.group_install` but operates on environmental groups. `exclude_groups` is an iterable of group IDs that will not be marked as installed. Raises :exc:`dnf.exceptions.CompsError` in case the group doesn't exist. + + .. method:: environment_remove(env_id) + +-- +libgit2 1.0.1 + diff --git a/0010-doc-Improve-description-of-multilib_policyall-RhBug19966811995630.patch b/0010-doc-Improve-description-of-multilib_policyall-RhBug19966811995630.patch new file mode 100644 index 0000000..c9abef0 --- /dev/null +++ b/0010-doc-Improve-description-of-multilib_policyall-RhBug19966811995630.patch @@ -0,0 +1,29 @@ +From 683b92811abcb6cbbc00353010ec18e2cf655912 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Mon, 6 Sep 2021 12:40:59 +0200 +Subject: [PATCH] [doc] Improve description of multilib_policy=all (RhBug:1996681,1995630) + +https://bugzilla.redhat.com/show_bug.cgi?id=1996681 +https://bugzilla.redhat.com/show_bug.cgi?id=1995630 +--- + doc/conf_ref.rst | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/doc/conf_ref.rst b/doc/conf_ref.rst +index 016bd00..83b14ec 100644 +--- a/doc/conf_ref.rst ++++ b/doc/conf_ref.rst +@@ -351,7 +351,9 @@ configuration file by your distribution to override the DNF defaults. + ``multilib_policy`` + :ref:`string ` + +- Controls how multilib packages are treated during install operations. Can either be ``"best"`` (the default) for the depsolver to prefer packages which best match the system's architecture, or ``"all"`` to install all available packages with compatible architectures. ++ Controls how multilib packages are treated during install operations. Can either be ``"best"`` (the default) for ++ the depsolver to prefer packages which best match the system's architecture, or ``"all"`` to install packages for ++ all available architectures. + + .. _obsoletes_conf_option-label: + +-- +libgit2 1.0.1 + diff --git a/0011-Fix-Python-dnf-API-does-not-respect-cacheonly-RhBug1862970.patch b/0011-Fix-Python-dnf-API-does-not-respect-cacheonly-RhBug1862970.patch new file mode 100644 index 0000000..b1f2b86 --- /dev/null +++ b/0011-Fix-Python-dnf-API-does-not-respect-cacheonly-RhBug1862970.patch @@ -0,0 +1,33 @@ +From db52d259645daf8ca0ae06e829787d36171f2d5b Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Wed, 20 Oct 2021 09:20:03 +0200 +Subject: [PATCH] Fix: Python dnf API does not respect cacheonly (RhBug:1862970) + +`Repo` object has always been constructed with default synchronization +strategy. The configuration option `cacheonly` was ignored. DNF +application set synchronization strategy later in the `Cli` object +during processing demands. + +The fix takes into account the `cacheonly` option during the construction +of the `Repo` object. Synchronization strategy may still be overriden +during demand processing. +--- + dnf/repo.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dnf/repo.py b/dnf/repo.py +index bb42230..1822cf0 100644 +--- a/dnf/repo.py ++++ b/dnf/repo.py +@@ -434,7 +434,7 @@ class Repo(dnf.conf.RepoConf): + self._pkgdir = None + self._key_import = _NullKeyImport() + self.metadata = None # :api +- self._repo.setSyncStrategy(self.DEFAULT_SYNC) ++ self._repo.setSyncStrategy(SYNC_ONLY_CACHE if parent_conf and parent_conf.cacheonly else self.DEFAULT_SYNC) + if parent_conf: + self._repo.setSubstitutions(parent_conf.substitutions) + self._substitutions = dnf.conf.substitutions.Substitutions() +-- +libgit2 1.0.1 + diff --git a/0012-Documentation-API-notes-for-cacheonly.patch b/0012-Documentation-API-notes-for-cacheonly.patch new file mode 100644 index 0000000..8c3cef0 --- /dev/null +++ b/0012-Documentation-API-notes-for-cacheonly.patch @@ -0,0 +1,26 @@ +From f8025df597685a0bd0c347b1a60c280f03bdca6f Mon Sep 17 00:00:00 2001 +From: Jaroslav Rohel +Date: Fri, 5 Nov 2021 08:52:56 +0100 +Subject: [PATCH] Documentation: API notes for cacheonly + +--- + doc/conf_ref.rst | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/doc/conf_ref.rst b/doc/conf_ref.rst +index 83b14ec..75bcdf7 100644 +--- a/doc/conf_ref.rst ++++ b/doc/conf_ref.rst +@@ -129,6 +129,9 @@ configuration file by your distribution to override the DNF defaults. + If set to ``True`` DNF will run entirely from system cache, will not update + the cache and will use it even in case it is expired. Default is ``False``. + ++ API Notes: Must be set before repository objects are created. Plugins must set ++ this in the pre_config hook. Later changes are ignored. ++ + .. _check_config_file_age-label: + + ``check_config_file_age`` +-- +libgit2 1.0.1 + diff --git a/0013-Allow-destdir-option-with-modulesync-command.patch b/0013-Allow-destdir-option-with-modulesync-command.patch new file mode 100644 index 0000000..d859553 --- /dev/null +++ b/0013-Allow-destdir-option-with-modulesync-command.patch @@ -0,0 +1,39 @@ +From 6af9938c87cf409f886f21b59ec45c54eda6c8b2 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Tue, 2 Nov 2021 14:23:22 +0100 +Subject: [PATCH] Allow destdir option with modulesync command + +--- + dnf/cli/cli.py | 2 +- + doc/command_ref.rst | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dnf/cli/cli.py b/dnf/cli/cli.py +index 6576997..a315201 100644 +--- a/dnf/cli/cli.py ++++ b/dnf/cli/cli.py +@@ -810,7 +810,7 @@ class Cli(object): + if opts.destdir is not None: + self.base.conf.destdir = opts.destdir + if not self.base.conf.downloadonly and opts.command not in ( +- 'download', 'system-upgrade', 'reposync'): ++ 'download', 'system-upgrade', 'reposync', 'modulesync'): + logger.critical(_('--destdir or --downloaddir must be used with --downloadonly ' + 'or download or system-upgrade command.') + ) +diff --git a/doc/command_ref.rst b/doc/command_ref.rst +index f96c0ea..42aec72 100644 +--- a/doc/command_ref.rst ++++ b/doc/command_ref.rst +@@ -182,7 +182,7 @@ Options + ``--downloaddir=, --destdir=`` + Redirect downloaded packages to provided directory. The option has to be used together with the \-\ + :ref:`-downloadonly ` command line option, with the +- ``download`` command (dnf-plugins-core) or with the ``system-upgrade`` command ++ ``download``, ``modulesync`` or ``reposync`` commands (dnf-plugins-core) or with the ``system-upgrade`` command + (dnf-plugins-extras). + + .. _downloadonly-label: +-- +libgit2 1.1.0 + diff --git a/0014-Update-translations-RhBug-2017270.patch b/0014-Update-translations-RhBug-2017270.patch new file mode 100644 index 0000000..8b7c203 --- /dev/null +++ b/0014-Update-translations-RhBug-2017270.patch @@ -0,0 +1,21203 @@ +From 688eefb336006b0b7f115ae110e97e1e59d1564b Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Fri, 18 Mar 2022 13:14:01 +0100 +Subject: [PATCH] Update translations (RhBug: 2017270) + +--- + po/dnf.pot | 1164 ++++++++++++++------------ + po/fr.po | 1527 +++++++++++++++++++--------------- + po/ja.po | 1739 +++++++++++++++++++++----------------- + po/ko.po | 2289 +++++++++++++++++++++++++++------------------------ + po/zh_CN.po | 1491 ++++++++++++++++++--------------- + po/zh_TW.po | 1345 ++++++++++++++++-------------- + 6 files changed, 5259 insertions(+), 4296 deletions(-) + +diff --git a/po/dnf.pot b/po/dnf.pot +index f7101537..62a8df83 100644 +--- a/po/dnf.pot ++++ b/po/dnf.pot +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" ++"POT-Creation-Date: 2022-02-28 11:24+0100\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -63,7 +63,7 @@ msgstr "" + msgid "Failed to execute command '%s': returned %d" + msgstr "" + +-#: dnf/automatic/main.py:164 dnf/conf/config.py:151 ++#: dnf/automatic/main.py:164 + #, python-format + msgid "Unknown configuration value: %s=%s in %s; %s" + msgstr "" +@@ -73,7 +73,7 @@ msgstr "" + msgid "Unknown configuration option: %s = %s in %s" + msgstr "" + +-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299 ++#: dnf/automatic/main.py:237 dnf/cli/cli.py:305 + msgid "GPG check FAILED" + msgstr "" + +@@ -86,9 +86,10 @@ msgid "Started dnf-automatic." + msgstr "" + + #: dnf/automatic/main.py:308 +-#, python-format +-msgid "Sleep for %s seconds" +-msgstr "" ++msgid "Sleep for {} second" ++msgid_plural "Sleep for {} seconds" ++msgstr[0] "" ++msgstr[1] "" + + #: dnf/automatic/main.py:315 + msgid "System is off-line." +@@ -100,389 +101,375 @@ msgstr "" + msgid "Error: %s" + msgstr "" + +-#: dnf/base.py:146 ++#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479 + msgid "loading repo '{}' failure: {}" + msgstr "" + +-#: dnf/base.py:148 ++#: dnf/base.py:150 + msgid "Loading repository '{}' has failed" + msgstr "" + +-#: dnf/base.py:320 ++#: dnf/base.py:327 + msgid "Metadata timer caching disabled when running on metered connection." + msgstr "" + +-#: dnf/base.py:325 ++#: dnf/base.py:332 + msgid "Metadata timer caching disabled when running on a battery." + msgstr "" + +-#: dnf/base.py:330 ++#: dnf/base.py:337 + msgid "Metadata timer caching disabled." + msgstr "" + +-#: dnf/base.py:335 ++#: dnf/base.py:342 + msgid "Metadata cache refreshed recently." + msgstr "" + +-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91 ++#: dnf/base.py:348 dnf/cli/commands/__init__.py:91 + msgid "There are no enabled repositories in \"{}\"." + msgstr "" + +-#: dnf/base.py:348 ++#: dnf/base.py:355 + #, python-format + msgid "%s: will never be expired and will not be refreshed." + msgstr "" + +-#: dnf/base.py:350 ++#: dnf/base.py:357 + #, python-format + msgid "%s: has expired and will be refreshed." + msgstr "" + + #. expires within the checking period: +-#: dnf/base.py:354 ++#: dnf/base.py:361 + #, python-format + msgid "%s: metadata will expire after %d seconds and will be refreshed now" + msgstr "" + +-#: dnf/base.py:358 ++#: dnf/base.py:365 + #, python-format + msgid "%s: will expire after %d seconds." + msgstr "" + + #. performs the md sync +-#: dnf/base.py:364 ++#: dnf/base.py:371 + msgid "Metadata cache created." + msgstr "" + +-#: dnf/base.py:397 ++#: dnf/base.py:404 dnf/base.py:471 + #, python-format + msgid "%s: using metadata from %s." + msgstr "" + +-#: dnf/base.py:409 ++#: dnf/base.py:416 dnf/base.py:484 + #, python-format + msgid "Ignoring repositories: %s" + msgstr "" + +-#: dnf/base.py:412 ++#: dnf/base.py:419 + #, python-format + msgid "Last metadata expiration check: %s ago on %s." + msgstr "" + +-#: dnf/base.py:443 ++#: dnf/base.py:512 + msgid "" + "The downloaded packages were saved in cache until the next successful " + "transaction." + msgstr "" + +-#: dnf/base.py:445 ++#: dnf/base.py:514 + #, python-format + msgid "You can remove cached packages by executing '%s'." + msgstr "" + +-#: dnf/base.py:535 ++#: dnf/base.py:606 + #, python-format + msgid "Invalid tsflag in config file: %s" + msgstr "" + +-#: dnf/base.py:591 ++#: dnf/base.py:662 + #, python-format + msgid "Failed to add groups file for repository: %s - %s" + msgstr "" + +-#: dnf/base.py:823 ++#: dnf/base.py:904 + msgid "Running transaction check" + msgstr "" + +-#: dnf/base.py:831 ++#: dnf/base.py:912 + msgid "Error: transaction check vs depsolve:" + msgstr "" + +-#: dnf/base.py:837 ++#: dnf/base.py:918 + msgid "Transaction check succeeded." + msgstr "" + +-#: dnf/base.py:840 ++#: dnf/base.py:921 + msgid "Running transaction test" + msgstr "" + +-#: dnf/base.py:850 dnf/base.py:992 ++#: dnf/base.py:931 dnf/base.py:1082 + msgid "RPM: {}" + msgstr "" + +-#: dnf/base.py:851 ++#: dnf/base.py:932 + msgid "Transaction test error:" + msgstr "" + +-#: dnf/base.py:862 ++#: dnf/base.py:943 + msgid "Transaction test succeeded." + msgstr "" + +-#: dnf/base.py:883 ++#: dnf/base.py:964 + msgid "Running transaction" + msgstr "" + +-#: dnf/base.py:911 ++#: dnf/base.py:1001 + msgid "Disk Requirements:" + msgstr "" + +-#: dnf/base.py:914 ++#: dnf/base.py:1004 + #, python-brace-format + msgid "At least {0}MB more space needed on the {1} filesystem." + msgid_plural "At least {0}MB more space needed on the {1} filesystem." + msgstr[0] "" + msgstr[1] "" + +-#: dnf/base.py:921 ++#: dnf/base.py:1011 + msgid "Error Summary" + msgstr "" + +-#: dnf/base.py:947 ++#: dnf/base.py:1037 + #, python-brace-format + msgid "RPMDB altered outside of {prog}." + msgstr "" + +-#: dnf/base.py:993 dnf/base.py:1001 ++#: dnf/base.py:1083 dnf/base.py:1091 + msgid "Could not run transaction." + msgstr "" + +-#: dnf/base.py:996 ++#: dnf/base.py:1086 + msgid "Transaction couldn't start:" + msgstr "" + +-#: dnf/base.py:1010 ++#: dnf/base.py:1100 + #, python-format + msgid "Failed to remove transaction file %s" + msgstr "" + +-#: dnf/base.py:1092 ++#: dnf/base.py:1182 + msgid "Some packages were not downloaded. Retrying." + msgstr "" + +-#: dnf/base.py:1122 ++#: dnf/base.py:1212 + #, python-format + msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)" + msgstr "" + +-#: dnf/base.py:1125 ++#: dnf/base.py:1215 + #, python-format + msgid "" + "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)" + msgstr "" + +-#: dnf/base.py:1167 ++#: dnf/base.py:1257 + msgid "Cannot add local packages, because transaction job already exists" + msgstr "" + +-#: dnf/base.py:1181 ++#: dnf/base.py:1271 + msgid "Could not open: {}" + msgstr "" + +-#: dnf/base.py:1219 ++#: dnf/base.py:1309 + #, python-format + msgid "Public key for %s is not installed" + msgstr "" + +-#: dnf/base.py:1223 ++#: dnf/base.py:1313 + #, python-format + msgid "Problem opening package %s" + msgstr "" + +-#: dnf/base.py:1231 ++#: dnf/base.py:1321 + #, python-format + msgid "Public key for %s is not trusted" + msgstr "" + +-#: dnf/base.py:1235 ++#: dnf/base.py:1325 + #, python-format + msgid "Package %s is not signed" + msgstr "" + +-#: dnf/base.py:1265 ++#: dnf/base.py:1355 + #, python-format + msgid "Cannot remove %s" + msgstr "" + +-#: dnf/base.py:1269 ++#: dnf/base.py:1359 + #, python-format + msgid "%s removed" + msgstr "" + +-#: dnf/base.py:1549 ++#: dnf/base.py:1639 + msgid "No match for group package \"{}\"" + msgstr "" + +-#: dnf/base.py:1635 ++#: dnf/base.py:1721 + #, python-format + msgid "Adding packages from group '%s': %s" + msgstr "" + +-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442 +-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592 +-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80 ++#: dnf/base.py:1744 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437 ++#: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587 ++#: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80 + #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110 + msgid "Nothing to do." + msgstr "" + +-#: dnf/base.py:1676 ++#: dnf/base.py:1762 + msgid "No groups marked for removal." + msgstr "" + +-#: dnf/base.py:1710 ++#: dnf/base.py:1796 + msgid "No group marked for upgrade." + msgstr "" + +-#: dnf/base.py:1925 ++#: dnf/base.py:2010 + #, python-format + msgid "Package %s not installed, cannot downgrade it." + msgstr "" + +-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980 +-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411 +-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482 +-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633 +-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147 ++#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071 ++#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 dnf/cli/cli.py:417 ++#: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477 ++#: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628 ++#: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147 + #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84 +-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121 ++#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116 + #, python-format + msgid "No match for argument: %s" + msgstr "" + +-#: dnf/base.py:1934 ++#: dnf/base.py:2019 + #, python-format + msgid "Package %s of lower version already installed, cannot downgrade it." + msgstr "" + +-#: dnf/base.py:1957 ++#: dnf/base.py:2042 + #, python-format + msgid "Package %s not installed, cannot reinstall it." + msgstr "" + +-#: dnf/base.py:1972 ++#: dnf/base.py:2057 + #, python-format + msgid "File %s is a source package and cannot be updated, ignoring." + msgstr "" + +-#: dnf/base.py:1978 ++#: dnf/base.py:2068 + #, python-format + msgid "Package %s not installed, cannot update it." + msgstr "" + +-#: dnf/base.py:1987 ++#: dnf/base.py:2078 + #, python-format + msgid "" + "The same or higher version of %s is already installed, cannot update it." + msgstr "" + +-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81 ++#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81 + #, python-format + msgid "Package %s available, but not installed." + msgstr "" + +-#: dnf/base.py:2032 ++#: dnf/base.py:2127 + #, python-format + msgid "Package %s available, but installed for different architecture." + msgstr "" + +-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699 ++#: dnf/base.py:2152 + #, python-format + msgid "No package %s installed." + msgstr "" + +-#: dnf/base.py:2075 dnf/cli/commands/install.py:136 ++#: dnf/base.py:2170 dnf/cli/commands/install.py:136 + #: dnf/cli/commands/remove.py:133 + #, python-format + msgid "Not a valid form: %s" + msgstr "" + +-#: dnf/base.py:2091 dnf/cli/commands/__init__.py:681 +-#: dnf/cli/commands/remove.py:163 ++#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676 ++#: dnf/cli/commands/remove.py:162 + msgid "No packages marked for removal." + msgstr "" + +-#: dnf/base.py:2179 dnf/cli/cli.py:422 ++#: dnf/base.py:2273 dnf/cli/cli.py:428 + #, python-format + msgid "Packages for argument %s available, but not installed." + msgstr "" + +-#: dnf/base.py:2184 ++#: dnf/base.py:2278 + #, python-format + msgid "Package %s of lowest version already installed, cannot downgrade it." + msgstr "" + +-#: dnf/base.py:2242 +-msgid "Action not handled: {}" +-msgstr "" +- +-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703 +-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169 +-#, python-format +-msgid "No package %s available." +-msgstr "" +- +-#: dnf/base.py:2269 +-msgid "no package matched" +-msgstr "" +- +-#: dnf/base.py:2290 ++#: dnf/base.py:2378 + msgid "No security updates needed, but {} update available" + msgstr "" + +-#: dnf/base.py:2292 ++#: dnf/base.py:2380 + msgid "No security updates needed, but {} updates available" + msgstr "" + +-#: dnf/base.py:2296 ++#: dnf/base.py:2384 + msgid "No security updates needed for \"{}\", but {} update available" + msgstr "" + +-#: dnf/base.py:2298 ++#: dnf/base.py:2386 + msgid "No security updates needed for \"{}\", but {} updates available" + msgstr "" + + #. raise an exception, because po.repoid is not in self.repos +-#: dnf/base.py:2319 ++#: dnf/base.py:2407 + #, python-format + msgid "Unable to retrieve a key for a commandline package: %s" + msgstr "" + +-#: dnf/base.py:2327 ++#: dnf/base.py:2415 + #, python-format + msgid ". Failing package is: %s" + msgstr "" + +-#: dnf/base.py:2328 ++#: dnf/base.py:2416 + #, python-format + msgid "GPG Keys are configured as: %s" + msgstr "" + +-#: dnf/base.py:2340 ++#: dnf/base.py:2428 + #, python-format + msgid "GPG key at %s (0x%s) is already installed" + msgstr "" + +-#: dnf/base.py:2373 ++#: dnf/base.py:2464 + msgid "The key has been approved." + msgstr "" + +-#: dnf/base.py:2376 ++#: dnf/base.py:2467 + msgid "The key has been rejected." + msgstr "" + +-#: dnf/base.py:2409 ++#: dnf/base.py:2500 + #, python-format + msgid "Key import failed (code %d)" + msgstr "" + +-#: dnf/base.py:2411 ++#: dnf/base.py:2502 + msgid "Key imported successfully" + msgstr "" + +-#: dnf/base.py:2415 ++#: dnf/base.py:2506 + msgid "Didn't install any keys" + msgstr "" + +-#: dnf/base.py:2418 ++#: dnf/base.py:2509 + #, python-format + msgid "" + "The GPG keys listed for the \"%s\" repository are already installed but they " +@@ -490,49 +477,49 @@ msgid "" + "Check that the correct key URLs are configured for this repository." + msgstr "" + +-#: dnf/base.py:2429 ++#: dnf/base.py:2520 + msgid "Import of key(s) didn't help, wrong key(s)?" + msgstr "" + +-#: dnf/base.py:2482 ++#: dnf/base.py:2573 + msgid " * Maybe you meant: {}" + msgstr "" + +-#: dnf/base.py:2514 ++#: dnf/base.py:2605 + msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum" + msgstr "" + +-#: dnf/base.py:2517 ++#: dnf/base.py:2608 + msgid "Some packages from local repository have incorrect checksum" + msgstr "" + +-#: dnf/base.py:2520 ++#: dnf/base.py:2611 + msgid "Package \"{}\" from repository \"{}\" has incorrect checksum" + msgstr "" + +-#: dnf/base.py:2523 ++#: dnf/base.py:2614 + msgid "" + "Some packages have invalid cache, but cannot be downloaded due to \"--" + "cacheonly\" option" + msgstr "" + +-#: dnf/base.py:2541 dnf/base.py:2561 ++#: dnf/base.py:2632 dnf/base.py:2652 + msgid "No match for argument" + msgstr "" + +-#: dnf/base.py:2549 dnf/base.py:2569 ++#: dnf/base.py:2640 dnf/base.py:2660 + msgid "All matches were filtered out by exclude filtering for argument" + msgstr "" + +-#: dnf/base.py:2551 ++#: dnf/base.py:2642 + msgid "All matches were filtered out by modular filtering for argument" + msgstr "" + +-#: dnf/base.py:2567 ++#: dnf/base.py:2658 + msgid "All matches were installed from a different repository for argument" + msgstr "" + +-#: dnf/base.py:2583 ++#: dnf/base.py:2705 + #, python-format + msgid "Package %s is already installed." + msgstr "" +@@ -552,8 +539,8 @@ msgstr "" + msgid "Cannot read file \"%s\": %s" + msgstr "" + +-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902 +-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108 ++#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804 ++#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108 + #, python-format + msgid "Config error: %s" + msgstr "" +@@ -584,208 +571,188 @@ msgid "" + "stream '{2}'" + msgstr "" + +-#: dnf/cli/cli.py:172 ++#: dnf/cli/cli.py:173 + #, python-brace-format + msgid "" +-"It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset " +-"the module using '{prog} module reset ' command. After you " +-"reset the module, you can install the other stream." ++"It is not possible to switch enabled streams of a module unless explicitly " ++"enabled via configuration option module_stream_switch.\n" ++"It is recommended to rather remove all installed content from the module, " ++"and reset the module using '{prog} module reset ' command. " ++"After you reset the module, you can install the other stream." + msgstr "" + +-#: dnf/cli/cli.py:210 ++#: dnf/cli/cli.py:212 + #, python-brace-format + msgid "{prog} will only download packages for the transaction." + msgstr "" + +-#: dnf/cli/cli.py:213 ++#: dnf/cli/cli.py:215 + #, python-brace-format + msgid "" + "{prog} will only download packages, install gpg keys, and check the " + "transaction." + msgstr "" + +-#: dnf/cli/cli.py:217 ++#: dnf/cli/cli.py:219 + msgid "Operation aborted." + msgstr "" + +-#: dnf/cli/cli.py:224 ++#: dnf/cli/cli.py:226 + msgid "Downloading Packages:" + msgstr "" + +-#: dnf/cli/cli.py:230 ++#: dnf/cli/cli.py:232 + msgid "Error downloading packages:" + msgstr "" + +-#: dnf/cli/cli.py:258 ++#: dnf/cli/cli.py:264 + msgid "Transaction failed" + msgstr "" + +-#: dnf/cli/cli.py:281 ++#: dnf/cli/cli.py:287 + msgid "" + "Refusing to automatically import keys when running unattended.\n" + "Use \"-y\" to override." + msgstr "" + +-#: dnf/cli/cli.py:331 ++#: dnf/cli/cli.py:337 + msgid "Changelogs for {}" + msgstr "" + +-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511 ++#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517 + msgid "Obsoleting Packages" + msgstr "" + +-#: dnf/cli/cli.py:393 ++#: dnf/cli/cli.py:399 + msgid "No packages marked for distribution synchronization." + msgstr "" + +-#: dnf/cli/cli.py:428 ++#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395 ++#, python-format ++msgid "No package %s available." ++msgstr "" ++ ++#: dnf/cli/cli.py:434 + msgid "No packages marked for downgrade." + msgstr "" + +-#: dnf/cli/cli.py:479 ++#: dnf/cli/cli.py:485 + msgid "Installed Packages" + msgstr "" + +-#: dnf/cli/cli.py:487 ++#: dnf/cli/cli.py:493 + msgid "Available Packages" + msgstr "" + +-#: dnf/cli/cli.py:491 ++#: dnf/cli/cli.py:497 + msgid "Autoremove Packages" + msgstr "" + +-#: dnf/cli/cli.py:493 ++#: dnf/cli/cli.py:499 + msgid "Extra Packages" + msgstr "" + +-#: dnf/cli/cli.py:497 ++#: dnf/cli/cli.py:503 + msgid "Available Upgrades" + msgstr "" + +-#: dnf/cli/cli.py:513 ++#: dnf/cli/cli.py:519 + msgid "Recently Added Packages" + msgstr "" + +-#: dnf/cli/cli.py:518 ++#: dnf/cli/cli.py:523 + msgid "No matching Packages to list" + msgstr "" + +-#: dnf/cli/cli.py:599 ++#: dnf/cli/cli.py:604 + msgid "No Matches found" + msgstr "" + +-#: dnf/cli/cli.py:609 +-msgid "No transaction ID given" +-msgstr "" +- +-#: dnf/cli/cli.py:614 +-msgid "Not found given transaction ID" +-msgstr "" +- +-#: dnf/cli/cli.py:623 +-msgid "Found more than one transaction ID!" +-msgstr "" +- +-#: dnf/cli/cli.py:640 +-#, python-format +-msgid "Transaction history is incomplete, before %u." +-msgstr "" +- +-#: dnf/cli/cli.py:642 +-#, python-format +-msgid "Transaction history is incomplete, after %u." +-msgstr "" +- +-#: dnf/cli/cli.py:689 +-msgid "Undoing transaction {}, from {}" +-msgstr "" +- +-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237 ++#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237 + #, python-format + msgid "Unknown repo: '%s'" + msgstr "" + +-#: dnf/cli/cli.py:783 ++#: dnf/cli/cli.py:685 + #, python-format + msgid "No repository match: %s" + msgstr "" + +-#: dnf/cli/cli.py:817 ++#: dnf/cli/cli.py:719 + msgid "" + "This command has to be run with superuser privileges (under the root user on " + "most systems)." + msgstr "" + +-#: dnf/cli/cli.py:847 ++#: dnf/cli/cli.py:749 + #, python-format + msgid "No such command: %s. Please use %s --help" + msgstr "" + +-#: dnf/cli/cli.py:850 ++#: dnf/cli/cli.py:752 + #, python-format, python-brace-format + msgid "" + "It could be a {PROG} plugin command, try: \"{prog} install 'dnf-" + "command(%s)'\"" + msgstr "" + +-#: dnf/cli/cli.py:854 ++#: dnf/cli/cli.py:756 + #, python-brace-format + msgid "" + "It could be a {prog} plugin command, but loading of plugins is currently " + "disabled." + msgstr "" + +-#: dnf/cli/cli.py:912 ++#: dnf/cli/cli.py:814 + msgid "" + "--destdir or --downloaddir must be used with --downloadonly or download or " + "system-upgrade command." + msgstr "" + +-#: dnf/cli/cli.py:918 ++#: dnf/cli/cli.py:820 + msgid "" + "--enable, --set-enabled and --disable, --set-disabled must be used with " + "config-manager command." + msgstr "" + +-#: dnf/cli/cli.py:1000 ++#: dnf/cli/cli.py:902 + msgid "" + "Warning: Enforcing GPG signature check globally as per active RPM security " + "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)" + msgstr "" + +-#: dnf/cli/cli.py:1020 ++#: dnf/cli/cli.py:922 + msgid "Config file \"{}\" does not exist" + msgstr "" + +-#: dnf/cli/cli.py:1040 ++#: dnf/cli/cli.py:942 + msgid "" + "Unable to detect release version (use '--releasever' to specify release " + "version)" + msgstr "" + +-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471 ++#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471 + msgid "argument {}: not allowed with argument {}" + msgstr "" + +-#: dnf/cli/cli.py:1134 ++#: dnf/cli/cli.py:1023 + #, python-format + msgid "Command \"%s\" already defined" + msgstr "" + +-#: dnf/cli/cli.py:1154 ++#: dnf/cli/cli.py:1043 + msgid "Excludes in dnf.conf: " + msgstr "" + +-#: dnf/cli/cli.py:1157 ++#: dnf/cli/cli.py:1046 + msgid "Includes in dnf.conf: " + msgstr "" + +-#: dnf/cli/cli.py:1160 ++#: dnf/cli/cli.py:1049 + msgid "Excludes in repo " + msgstr "" + +-#: dnf/cli/cli.py:1163 ++#: dnf/cli/cli.py:1052 + msgid "Includes in repo " + msgstr "" + +@@ -826,38 +793,38 @@ msgstr "" + msgid "display details about a package or group of packages" + msgstr "" + +-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740 ++#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735 + msgid "show all packages (default)" + msgstr "" + +-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743 +-#: dnf/cli/commands/module.py:351 ++#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738 ++#: dnf/cli/commands/module.py:376 + msgid "show only available packages" + msgstr "" + +-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746 ++#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741 + msgid "show only installed packages" + msgstr "" + +-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749 ++#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744 + msgid "show only extras packages" + msgstr "" + + #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183 +-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755 ++#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750 + msgid "show only upgrades packages" + msgstr "" + +-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758 ++#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753 + msgid "show only autoremove packages" + msgstr "" + +-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761 ++#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756 + msgid "show only recently changed packages" + msgstr "" + + #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265 +-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48 ++#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48 + #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44 + #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46 + msgid "PACKAGE" +@@ -895,70 +862,70 @@ msgstr "" + msgid "show changelogs before update" + msgstr "" + +-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414 +-#: dnf/cli/commands/__init__.py:470 ++#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409 ++#: dnf/cli/commands/__init__.py:465 + msgid "No package available." + msgstr "" + +-#: dnf/cli/commands/__init__.py:376 ++#: dnf/cli/commands/__init__.py:371 + msgid "No packages marked for install." + msgstr "" + +-#: dnf/cli/commands/__init__.py:412 ++#: dnf/cli/commands/__init__.py:407 + msgid "No package installed." + msgstr "" + +-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489 ++#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484 + #: dnf/cli/commands/reinstall.py:91 + #, python-format + msgid " (from %s)" + msgstr "" + +-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490 ++#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485 + #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105 + #, python-format + msgid "Installed package %s%s not available." + msgstr "" + +-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576 +-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666 ++#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571 ++#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661 + msgid "No package installed from the repository." + msgstr "" + +-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101 ++#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101 + msgid "No packages marked for reinstall." + msgstr "" + +-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89 ++#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84 + msgid "No packages marked for upgrade." + msgstr "" + +-#: dnf/cli/commands/__init__.py:726 ++#: dnf/cli/commands/__init__.py:721 + msgid "run commands on top of all packages in given repository" + msgstr "" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "REPOID" + msgstr "" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "Repository ID" + msgstr "" + +-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48 ++#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48 + #: dnf/cli/commands/updateinfo.py:108 + msgid "Package specification" + msgstr "" + +-#: dnf/cli/commands/__init__.py:801 ++#: dnf/cli/commands/__init__.py:796 + msgid "display a helpful usage message" + msgstr "" + +-#: dnf/cli/commands/__init__.py:805 ++#: dnf/cli/commands/__init__.py:800 + msgid "COMMAND" + msgstr "" + +-#: dnf/cli/commands/__init__.py:806 ++#: dnf/cli/commands/__init__.py:801 + #, python-brace-format + msgid "{prog} command to get help for" + msgstr "" +@@ -1130,7 +1097,9 @@ msgid "Waiting for process with pid %d to finish." + msgstr "" + + #: dnf/cli/commands/deplist.py:32 +-msgid "List package's dependencies and what packages provide them" ++msgid "" ++"[deprecated, use repoquery --deplist] List package's dependencies and what " ++"packages provide them" + msgstr "" + + #: dnf/cli/commands/distrosync.py:32 +@@ -1157,78 +1126,78 @@ msgstr "" + msgid "No group data available for configured repositories." + msgstr "" + +-#: dnf/cli/commands/group.py:129 ++#: dnf/cli/commands/group.py:126 + #, python-format + msgid "Warning: Group %s does not exist." + msgstr "" + +-#: dnf/cli/commands/group.py:170 ++#: dnf/cli/commands/group.py:167 + msgid "Warning: No groups match:" + msgstr "" + +-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193 +-#: dnf/cli/output.py:1226 ++#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190 ++#: dnf/cli/output.py:1139 + msgid "" + msgstr "" + +-#: dnf/cli/commands/group.py:199 ++#: dnf/cli/commands/group.py:196 + msgid "Available Environment Groups:" + msgstr "" + +-#: dnf/cli/commands/group.py:201 ++#: dnf/cli/commands/group.py:198 + msgid "Installed Environment Groups:" + msgstr "" + +-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294 ++#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291 + msgid "Installed Groups:" + msgstr "" + +-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301 ++#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298 + msgid "Installed Language Groups:" + msgstr "" + +-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308 ++#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305 + msgid "Available Groups:" + msgstr "" + +-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315 ++#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312 + msgid "Available Language Groups:" + msgstr "" + +-#: dnf/cli/commands/group.py:322 ++#: dnf/cli/commands/group.py:319 + msgid "include optional packages from group" + msgstr "" + +-#: dnf/cli/commands/group.py:325 ++#: dnf/cli/commands/group.py:322 + msgid "show also hidden groups" + msgstr "" + +-#: dnf/cli/commands/group.py:327 ++#: dnf/cli/commands/group.py:324 + msgid "show only installed groups" + msgstr "" + +-#: dnf/cli/commands/group.py:329 ++#: dnf/cli/commands/group.py:326 + msgid "show only available groups" + msgstr "" + +-#: dnf/cli/commands/group.py:331 ++#: dnf/cli/commands/group.py:328 + msgid "show also ID of groups" + msgstr "" + +-#: dnf/cli/commands/group.py:333 ++#: dnf/cli/commands/group.py:330 + msgid "available subcommands: {} (default), {}" + msgstr "" + +-#: dnf/cli/commands/group.py:337 ++#: dnf/cli/commands/group.py:334 + msgid "argument for group subcommand" + msgstr "" + +-#: dnf/cli/commands/group.py:346 ++#: dnf/cli/commands/group.py:343 + #, python-format + msgid "Invalid groups sub-command, use: %s." + msgstr "" + +-#: dnf/cli/commands/group.py:403 ++#: dnf/cli/commands/group.py:398 + msgid "Unable to find a mandatory group package." + msgstr "" + +@@ -1272,69 +1241,90 @@ msgstr "" + msgid "More than one argument given as transaction file name." + msgstr "" + +-#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:126 ++#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130 + msgid "No transaction ID or package name given." + msgstr "" + +-#: dnf/cli/commands/history.py:138 ++#: dnf/cli/commands/history.py:142 + #, python-format + msgid "You don't have access to the history DB: %s" + msgstr "" + +-#: dnf/cli/commands/history.py:147 ++#: dnf/cli/commands/history.py:151 + #, python-format + msgid "" + "Cannot undo transaction %s, doing so would result in an inconsistent package " + "database." + msgstr "" + +-#: dnf/cli/commands/history.py:152 ++#: dnf/cli/commands/history.py:156 + #, python-format + msgid "" + "Cannot rollback transaction %s, doing so would result in an inconsistent " + "package database." + msgstr "" + +-#: dnf/cli/commands/history.py:222 ++#: dnf/cli/commands/history.py:175 ++msgid "No transaction ID given" ++msgstr "" ++ ++#: dnf/cli/commands/history.py:179 ++#, python-brace-format ++msgid "Transaction ID \"{0}\" not found." ++msgstr "" ++ ++#: dnf/cli/commands/history.py:185 ++msgid "Found more than one transaction ID!" ++msgstr "" ++ ++#: dnf/cli/commands/history.py:203 ++#, python-format ++msgid "Transaction history is incomplete, before %u." ++msgstr "" ++ ++#: dnf/cli/commands/history.py:205 ++#, python-format ++msgid "Transaction history is incomplete, after %u." ++msgstr "" ++ ++#: dnf/cli/commands/history.py:256 ++msgid "No packages to list" ++msgstr "" ++ ++#: dnf/cli/commands/history.py:279 + msgid "" + "Invalid transaction ID range definition '{}'.\n" + "Use '..'." + msgstr "" + +-#: dnf/cli/commands/history.py:226 ++#: dnf/cli/commands/history.py:283 + msgid "" + "Can't convert '{}' to transaction ID.\n" + "Use '', 'last', 'last-'." + msgstr "" + +-#: dnf/cli/commands/history.py:255 ++#: dnf/cli/commands/history.py:312 + msgid "No transaction which manipulates package '{}' was found." + msgstr "" + +-#: dnf/cli/commands/history.py:305 +-#, python-brace-format +-msgid "Transaction ID \"{id}\" not found." +-msgstr "" +- +-#: dnf/cli/commands/history.py:313 ++#: dnf/cli/commands/history.py:357 + msgid "{} exists, overwrite?" + msgstr "" + +-#: dnf/cli/commands/history.py:316 ++#: dnf/cli/commands/history.py:360 + msgid "Not overwriting {}, exiting." + msgstr "" + +-#: dnf/cli/commands/history.py:323 ++#: dnf/cli/commands/history.py:367 + msgid "Transaction saved to {}." + msgstr "" + +-#: dnf/cli/commands/history.py:326 ++#: dnf/cli/commands/history.py:370 + msgid "Error storing transaction: {}" + msgstr "" + +-#: dnf/cli/commands/history.py:350 +-msgid "" +-"Warning, the following problems occurred while replaying the transaction:" ++#: dnf/cli/commands/history.py:386 ++msgid "Warning, the following problems occurred while running a transaction:" + msgstr "" + + #: dnf/cli/commands/install.py:47 +@@ -1354,7 +1344,7 @@ msgstr "" + msgid "Not a valid rpm file path: %s" + msgstr "" + +-#: dnf/cli/commands/install.py:167 ++#: dnf/cli/commands/install.py:166 + #, python-brace-format + msgid "There are following alternatives for \"{0}\": {1}" + msgstr "" +@@ -1394,7 +1384,7 @@ msgid "%s marked as group installed." + msgstr "" + + #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129 +-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279 ++#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282 + msgid "Error:" + msgstr "" + +@@ -1403,89 +1393,93 @@ msgstr "" + msgid "Package %s is not installed." + msgstr "" + +-#: dnf/cli/commands/module.py:51 ++#: dnf/cli/commands/module.py:54 + msgid "" + "Only module name, stream, architecture or profile is used. Ignoring unneeded " + "information in argument: '{}'" + msgstr "" + +-#: dnf/cli/commands/module.py:77 ++#: dnf/cli/commands/module.py:80 + msgid "list all module streams, profiles and states" + msgstr "" + +-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128 ++#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131 + msgid "No matching Modules to list" + msgstr "" + +-#: dnf/cli/commands/module.py:111 ++#: dnf/cli/commands/module.py:114 + msgid "print detailed information about a module" + msgstr "" + +-#: dnf/cli/commands/module.py:133 ++#: dnf/cli/commands/module.py:136 + msgid "enable a module stream" + msgstr "" + +-#: dnf/cli/commands/module.py:157 ++#: dnf/cli/commands/module.py:160 + msgid "disable a module with all its streams" + msgstr "" + +-#: dnf/cli/commands/module.py:181 ++#: dnf/cli/commands/module.py:184 + msgid "reset a module" + msgstr "" + +-#: dnf/cli/commands/module.py:202 ++#: dnf/cli/commands/module.py:205 + msgid "install a module profile including its packages" + msgstr "" + +-#: dnf/cli/commands/module.py:223 ++#: dnf/cli/commands/module.py:226 + msgid "update packages associated with an active stream" + msgstr "" + +-#: dnf/cli/commands/module.py:240 ++#: dnf/cli/commands/module.py:243 + msgid "remove installed module profiles and their packages" + msgstr "" + +-#: dnf/cli/commands/module.py:264 ++#: dnf/cli/commands/module.py:267 + msgid "Package {} belongs to multiple modules, skipping" + msgstr "" + +-#: dnf/cli/commands/module.py:277 ++#: dnf/cli/commands/module.py:280 ++msgid "switch a module to a stream and distrosync rpm packages" ++msgstr "" ++ ++#: dnf/cli/commands/module.py:302 + msgid "list modular packages" + msgstr "" + +-#: dnf/cli/commands/module.py:292 ++#: dnf/cli/commands/module.py:317 + msgid "list packages belonging to a module" + msgstr "" + +-#: dnf/cli/commands/module.py:327 ++#: dnf/cli/commands/module.py:352 + msgid "Interact with Modules." + msgstr "" + +-#: dnf/cli/commands/module.py:340 ++#: dnf/cli/commands/module.py:365 + msgid "show only enabled modules" + msgstr "" + +-#: dnf/cli/commands/module.py:343 ++#: dnf/cli/commands/module.py:368 + msgid "show only disabled modules" + msgstr "" + +-#: dnf/cli/commands/module.py:346 ++#: dnf/cli/commands/module.py:371 + msgid "show only installed modules or packages" + msgstr "" + +-#: dnf/cli/commands/module.py:349 ++#: dnf/cli/commands/module.py:374 + msgid "show profile content" + msgstr "" + +-#: dnf/cli/commands/module.py:354 ++#: dnf/cli/commands/module.py:379 + msgid "remove all modular packages" + msgstr "" + +-#: dnf/cli/commands/module.py:364 ++#: dnf/cli/commands/module.py:389 + msgid "Module specification" + msgstr "" + +-#: dnf/cli/commands/module.py:386 ++#: dnf/cli/commands/module.py:411 + msgid "{} {} {}: too few arguments" + msgstr "" + +@@ -1960,22 +1954,22 @@ msgstr "" + msgid "Keyword to search for" + msgstr "" + +-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506 ++#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460 + msgctxt "long" + msgid "Name" + msgstr "" + +-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559 ++#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513 + msgctxt "long" + msgid "Summary" + msgstr "" + +-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569 ++#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523 + msgctxt "long" + msgid "Description" + msgstr "" + +-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562 ++#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516 + msgid "URL" + msgstr "" + +@@ -2087,16 +2081,16 @@ msgid "" + "exit (or quit) exit the shell" + msgstr "" + +-#: dnf/cli/commands/shell.py:259 ++#: dnf/cli/commands/shell.py:262 + #, python-format + msgid "Error: Cannot open %s for reading" + msgstr "" + +-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187 ++#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187 + msgid "Complete!" + msgstr "" + +-#: dnf/cli/commands/shell.py:291 ++#: dnf/cli/commands/shell.py:294 + msgid "Leaving Shell" + msgstr "" + +@@ -2287,8 +2281,8 @@ msgstr "" + msgid "Files" + msgstr "" + +-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499 +-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 ++#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1656 dnf/util.py:617 + msgid "Installed" + msgstr "" + +@@ -2609,13 +2603,13 @@ msgstr "" + #. Translators: This is abbreviated 'Name'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:505 ++#: dnf/cli/output.py:459 + msgctxt "short" + msgid "Name" + msgstr "" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:511 ++#: dnf/cli/output.py:465 + msgid "Epoch" + msgstr "" + +@@ -2623,38 +2617,38 @@ msgstr "" + #. use the full (unabbreviated) term 'Version' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:512 dnf/cli/output.py:1335 ++#: dnf/cli/output.py:466 dnf/cli/output.py:1248 + msgctxt "short" + msgid "Version" + msgstr "" + + #. Translators: This is the full (unabbreviated) term 'Version'. +-#: dnf/cli/output.py:513 dnf/cli/output.py:1337 ++#: dnf/cli/output.py:467 dnf/cli/output.py:1250 + msgctxt "long" + msgid "Version" + msgstr "" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:516 ++#: dnf/cli/output.py:470 + msgid "Release" + msgstr "" + + #. Translators: This is abbreviated 'Architecture', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:517 dnf/cli/output.py:1326 ++#: dnf/cli/output.py:471 dnf/cli/output.py:1239 + msgctxt "short" + msgid "Arch" + msgstr "" + + #. Translators: This is the full word 'Architecture', used when + #. we have enough space. +-#: dnf/cli/output.py:518 dnf/cli/output.py:1329 ++#: dnf/cli/output.py:472 dnf/cli/output.py:1242 + msgctxt "long" + msgid "Architecture" + msgstr "" + + #. Translators: This is the full (unabbreviated) term 'Size'. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1352 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1265 + msgctxt "long" + msgid "Size" + msgstr "" +@@ -2663,32 +2657,32 @@ msgstr "" + #. not be longer than 5 characters. If the term 'Size' in your + #. language is not longer than 5 characters then you can use it + #. unabbreviated. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1350 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1263 + msgctxt "short" + msgid "Size" + msgstr "" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:524 ++#: dnf/cli/output.py:478 + msgid "Source" + msgstr "" + + #. Translators: This is abbreviated 'Repository', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:525 dnf/cli/output.py:1341 ++#: dnf/cli/output.py:479 dnf/cli/output.py:1254 + msgctxt "short" + msgid "Repo" + msgstr "" + + #. Translators: This is the full word 'Repository', used when + #. we have enough space. +-#: dnf/cli/output.py:526 dnf/cli/output.py:1344 ++#: dnf/cli/output.py:480 dnf/cli/output.py:1257 + msgctxt "long" + msgid "Repository" + msgstr "" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:533 ++#: dnf/cli/output.py:487 + msgid "From repo" + msgstr "" + +@@ -2696,324 +2690,320 @@ msgstr "" + #. print(_("Committer : %s") % ucd(pkg.committer)) + #. print(_("Committime : %s") % time.ctime(pkg.committime)) + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:539 ++#: dnf/cli/output.py:493 + msgid "Packager" + msgstr "" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:541 ++#: dnf/cli/output.py:495 + msgid "Buildtime" + msgstr "" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:545 ++#: dnf/cli/output.py:499 + msgid "Install time" + msgstr "" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:554 ++#: dnf/cli/output.py:508 + msgid "Installed by" + msgstr "" + + #. Translators: This is abbreviated 'Summary'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:558 ++#: dnf/cli/output.py:512 + msgctxt "short" + msgid "Summary" + msgstr "" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:564 ++#: dnf/cli/output.py:518 + msgid "License" + msgstr "" + + #. Translators: This is abbreviated 'Description'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:568 ++#: dnf/cli/output.py:522 + msgctxt "short" + msgid "Description" + msgstr "" + +-#: dnf/cli/output.py:695 +-msgid "No packages to list" +-msgstr "" +- +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "y" + msgstr "" + +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "yes" + msgstr "" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "n" + msgstr "" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "no" + msgstr "" + +-#: dnf/cli/output.py:711 ++#: dnf/cli/output.py:655 + msgid "Is this ok [y/N]: " + msgstr "" + +-#: dnf/cli/output.py:715 ++#: dnf/cli/output.py:659 + msgid "Is this ok [Y/n]: " + msgstr "" + +-#: dnf/cli/output.py:795 ++#: dnf/cli/output.py:739 + #, python-format + msgid "Group: %s" + msgstr "" + +-#: dnf/cli/output.py:799 ++#: dnf/cli/output.py:743 + #, python-format + msgid " Group-Id: %s" + msgstr "" + +-#: dnf/cli/output.py:801 dnf/cli/output.py:840 ++#: dnf/cli/output.py:745 dnf/cli/output.py:784 + #, python-format + msgid " Description: %s" + msgstr "" + +-#: dnf/cli/output.py:803 ++#: dnf/cli/output.py:747 + #, python-format + msgid " Language: %s" + msgstr "" + +-#: dnf/cli/output.py:806 ++#: dnf/cli/output.py:750 + msgid " Mandatory Packages:" + msgstr "" + +-#: dnf/cli/output.py:807 ++#: dnf/cli/output.py:751 + msgid " Default Packages:" + msgstr "" + +-#: dnf/cli/output.py:808 ++#: dnf/cli/output.py:752 + msgid " Optional Packages:" + msgstr "" + +-#: dnf/cli/output.py:809 ++#: dnf/cli/output.py:753 + msgid " Conditional Packages:" + msgstr "" + +-#: dnf/cli/output.py:834 ++#: dnf/cli/output.py:778 + #, python-format + msgid "Environment Group: %s" + msgstr "" + +-#: dnf/cli/output.py:837 ++#: dnf/cli/output.py:781 + #, python-format + msgid " Environment-Id: %s" + msgstr "" + +-#: dnf/cli/output.py:843 ++#: dnf/cli/output.py:787 + msgid " Mandatory Groups:" + msgstr "" + +-#: dnf/cli/output.py:844 ++#: dnf/cli/output.py:788 + msgid " Optional Groups:" + msgstr "" + +-#: dnf/cli/output.py:865 ++#: dnf/cli/output.py:809 + msgid "Matched from:" + msgstr "" + +-#: dnf/cli/output.py:879 ++#: dnf/cli/output.py:823 + #, python-format + msgid "Filename : %s" + msgstr "" + +-#: dnf/cli/output.py:904 ++#: dnf/cli/output.py:848 + #, python-format + msgid "Repo : %s" + msgstr "" + +-#: dnf/cli/output.py:913 ++#: dnf/cli/output.py:857 + msgid "Description : " + msgstr "" + +-#: dnf/cli/output.py:917 ++#: dnf/cli/output.py:861 + #, python-format + msgid "URL : %s" + msgstr "" + +-#: dnf/cli/output.py:921 ++#: dnf/cli/output.py:865 + #, python-format + msgid "License : %s" + msgstr "" + +-#: dnf/cli/output.py:927 ++#: dnf/cli/output.py:871 + #, python-format + msgid "Provide : %s" + msgstr "" + +-#: dnf/cli/output.py:947 ++#: dnf/cli/output.py:891 + #, python-format + msgid "Other : %s" + msgstr "" + +-#: dnf/cli/output.py:996 ++#: dnf/cli/output.py:940 + msgid "There was an error calculating total download size" + msgstr "" + +-#: dnf/cli/output.py:1002 ++#: dnf/cli/output.py:946 + #, python-format + msgid "Total size: %s" + msgstr "" + +-#: dnf/cli/output.py:1005 ++#: dnf/cli/output.py:949 + #, python-format + msgid "Total download size: %s" + msgstr "" + +-#: dnf/cli/output.py:1008 ++#: dnf/cli/output.py:952 + #, python-format + msgid "Installed size: %s" + msgstr "" + +-#: dnf/cli/output.py:1026 ++#: dnf/cli/output.py:970 + msgid "There was an error calculating installed size" + msgstr "" + +-#: dnf/cli/output.py:1030 ++#: dnf/cli/output.py:974 + #, python-format + msgid "Freed space: %s" + msgstr "" + +-#: dnf/cli/output.py:1039 ++#: dnf/cli/output.py:983 + msgid "Marking packages as installed by the group:" + msgstr "" + +-#: dnf/cli/output.py:1046 ++#: dnf/cli/output.py:990 + msgid "Marking packages as removed by the group:" + msgstr "" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Group" + msgstr "" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Packages" + msgstr "" + +-#: dnf/cli/output.py:1133 ++#: dnf/cli/output.py:1046 + msgid "Installing group/module packages" + msgstr "" + +-#: dnf/cli/output.py:1134 ++#: dnf/cli/output.py:1047 + msgid "Installing group packages" + msgstr "" + + #. TRANSLATORS: This is for a list of packages to be installed. +-#: dnf/cli/output.py:1138 ++#: dnf/cli/output.py:1051 + msgctxt "summary" + msgid "Installing" + msgstr "" + + #. TRANSLATORS: This is for a list of packages to be upgraded. +-#: dnf/cli/output.py:1140 ++#: dnf/cli/output.py:1053 + msgctxt "summary" + msgid "Upgrading" + msgstr "" + + #. TRANSLATORS: This is for a list of packages to be reinstalled. +-#: dnf/cli/output.py:1142 ++#: dnf/cli/output.py:1055 + msgctxt "summary" + msgid "Reinstalling" + msgstr "" + +-#: dnf/cli/output.py:1144 ++#: dnf/cli/output.py:1057 + msgid "Installing dependencies" + msgstr "" + +-#: dnf/cli/output.py:1145 ++#: dnf/cli/output.py:1058 + msgid "Installing weak dependencies" + msgstr "" + + #. TRANSLATORS: This is for a list of packages to be removed. +-#: dnf/cli/output.py:1147 ++#: dnf/cli/output.py:1060 + msgid "Removing" + msgstr "" + +-#: dnf/cli/output.py:1148 ++#: dnf/cli/output.py:1061 + msgid "Removing dependent packages" + msgstr "" + +-#: dnf/cli/output.py:1149 ++#: dnf/cli/output.py:1062 + msgid "Removing unused dependencies" + msgstr "" + + #. TRANSLATORS: This is for a list of packages to be downgraded. +-#: dnf/cli/output.py:1151 ++#: dnf/cli/output.py:1064 + msgctxt "summary" + msgid "Downgrading" + msgstr "" + +-#: dnf/cli/output.py:1176 ++#: dnf/cli/output.py:1089 + msgid "Installing module profiles" + msgstr "" + +-#: dnf/cli/output.py:1185 ++#: dnf/cli/output.py:1098 + msgid "Disabling module profiles" + msgstr "" + +-#: dnf/cli/output.py:1194 ++#: dnf/cli/output.py:1107 + msgid "Enabling module streams" + msgstr "" + +-#: dnf/cli/output.py:1202 ++#: dnf/cli/output.py:1115 + msgid "Switching module streams" + msgstr "" + +-#: dnf/cli/output.py:1210 ++#: dnf/cli/output.py:1123 + msgid "Disabling modules" + msgstr "" + +-#: dnf/cli/output.py:1218 ++#: dnf/cli/output.py:1131 + msgid "Resetting modules" + msgstr "" + +-#: dnf/cli/output.py:1230 ++#: dnf/cli/output.py:1143 + msgid "Installing Environment Groups" + msgstr "" + +-#: dnf/cli/output.py:1237 ++#: dnf/cli/output.py:1150 + msgid "Upgrading Environment Groups" + msgstr "" + +-#: dnf/cli/output.py:1244 ++#: dnf/cli/output.py:1157 + msgid "Removing Environment Groups" + msgstr "" + +-#: dnf/cli/output.py:1251 ++#: dnf/cli/output.py:1164 + msgid "Installing Groups" + msgstr "" + +-#: dnf/cli/output.py:1258 ++#: dnf/cli/output.py:1171 + msgid "Upgrading Groups" + msgstr "" + +-#: dnf/cli/output.py:1265 ++#: dnf/cli/output.py:1178 + msgid "Removing Groups" + msgstr "" + +-#: dnf/cli/output.py:1281 ++#: dnf/cli/output.py:1194 + #, python-format + msgid "" + "Skipping packages with conflicts:\n" + "(add '%s' to command line to force their upgrade)" + msgstr "" + +-#: dnf/cli/output.py:1291 ++#: dnf/cli/output.py:1204 + #, python-format + msgid "Skipping packages with broken dependencies%s" + msgstr "" + +-#: dnf/cli/output.py:1295 ++#: dnf/cli/output.py:1208 + msgid " or part of a group" + msgstr "" + +@@ -3021,22 +3011,22 @@ msgstr "" + #. use the full (unabbreviated) term 'Package' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:1320 ++#: dnf/cli/output.py:1233 + msgctxt "short" + msgid "Package" + msgstr "" + + #. Translators: This is the full (unabbreviated) term 'Package'. +-#: dnf/cli/output.py:1322 ++#: dnf/cli/output.py:1235 + msgctxt "long" + msgid "Package" + msgstr "" + +-#: dnf/cli/output.py:1371 ++#: dnf/cli/output.py:1284 + msgid "replacing" + msgstr "" + +-#: dnf/cli/output.py:1378 ++#: dnf/cli/output.py:1291 + #, python-format + msgid "" + "\n" +@@ -3045,289 +3035,273 @@ msgid "" + msgstr "" + + #. TODO: remove +-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933 ++#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815 + msgid "Install" + msgstr "" + +-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941 ++#: dnf/cli/output.py:1300 dnf/cli/output.py:1823 + msgid "Upgrade" + msgstr "" + +-#: dnf/cli/output.py:1388 ++#: dnf/cli/output.py:1301 + msgid "Remove" + msgstr "" + +-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939 ++#: dnf/cli/output.py:1303 dnf/cli/output.py:1821 + msgid "Downgrade" + msgstr "" + +-#: dnf/cli/output.py:1391 ++#: dnf/cli/output.py:1304 + msgid "Skip" + msgstr "" + +-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416 ++#: dnf/cli/output.py:1313 dnf/cli/output.py:1329 + msgid "Package" + msgid_plural "Packages" + msgstr[0] "" + msgstr[1] "" + +-#: dnf/cli/output.py:1418 ++#: dnf/cli/output.py:1331 + msgid "Dependent package" + msgid_plural "Dependent packages" + msgstr[0] "" + msgstr[1] "" + +-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942 +-msgid "Upgraded" +-msgstr "" +- +-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940 +-msgid "Downgraded" +-msgstr "" +- +-#: dnf/cli/output.py:1503 +-msgid "Reinstalled" +-msgstr "" +- +-#: dnf/cli/output.py:1504 +-msgid "Skipped" +-msgstr "" +- +-#: dnf/cli/output.py:1505 +-msgid "Removed" +-msgstr "" +- +-#: dnf/cli/output.py:1508 +-msgid "Failed" +-msgstr "" +- +-#: dnf/cli/output.py:1559 ++#: dnf/cli/output.py:1439 + msgid "Total" + msgstr "" + +-#: dnf/cli/output.py:1587 ++#: dnf/cli/output.py:1467 + msgid "" + msgstr "" + +-#: dnf/cli/output.py:1588 ++#: dnf/cli/output.py:1468 + msgid "System" + msgstr "" + +-#: dnf/cli/output.py:1638 ++#: dnf/cli/output.py:1518 + msgid "Command line" + msgstr "" + + #. TRANSLATORS: user names who executed transaction in history command output +-#: dnf/cli/output.py:1649 ++#: dnf/cli/output.py:1531 + msgid "User name" + msgstr "" + +-#: dnf/cli/output.py:1651 ++#: dnf/cli/output.py:1533 + msgid "ID" + msgstr "" + +-#: dnf/cli/output.py:1653 ++#: dnf/cli/output.py:1535 + msgid "Date and time" + msgstr "" + +-#: dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1536 + msgid "Action(s)" + msgstr "" + +-#: dnf/cli/output.py:1655 ++#: dnf/cli/output.py:1537 + msgid "Altered" + msgstr "" + +-#: dnf/cli/output.py:1698 ++#: dnf/cli/output.py:1580 + msgid "No transactions" + msgstr "" + +-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715 ++#: dnf/cli/output.py:1581 dnf/cli/output.py:1597 + msgid "Failed history info" + msgstr "" + +-#: dnf/cli/output.py:1714 ++#: dnf/cli/output.py:1596 + msgid "No transaction ID, or package, given" + msgstr "" + +-#: dnf/cli/output.py:1772 ++#: dnf/cli/output.py:1654 + msgid "Erased" + msgstr "" + +-#: dnf/cli/output.py:1774 ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616 ++msgid "Downgraded" ++msgstr "" ++ ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615 ++msgid "Upgraded" ++msgstr "" ++ ++#: dnf/cli/output.py:1656 + msgid "Not installed" + msgstr "" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Newer" + msgstr "" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Older" + msgstr "" + +-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825 ++#: dnf/cli/output.py:1705 dnf/cli/output.py:1707 + msgid "Transaction ID :" + msgstr "" + +-#: dnf/cli/output.py:1828 ++#: dnf/cli/output.py:1710 + msgid "Begin time :" + msgstr "" + +-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833 ++#: dnf/cli/output.py:1713 dnf/cli/output.py:1715 + msgid "Begin rpmdb :" + msgstr "" + +-#: dnf/cli/output.py:1839 ++#: dnf/cli/output.py:1721 + #, python-format + msgid "(%u seconds)" + msgstr "" + +-#: dnf/cli/output.py:1841 ++#: dnf/cli/output.py:1723 + #, python-format + msgid "(%u minutes)" + msgstr "" + +-#: dnf/cli/output.py:1843 ++#: dnf/cli/output.py:1725 + #, python-format + msgid "(%u hours)" + msgstr "" + +-#: dnf/cli/output.py:1845 ++#: dnf/cli/output.py:1727 + #, python-format + msgid "(%u days)" + msgstr "" + +-#: dnf/cli/output.py:1846 ++#: dnf/cli/output.py:1728 + msgid "End time :" + msgstr "" + +-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851 ++#: dnf/cli/output.py:1731 dnf/cli/output.py:1733 + msgid "End rpmdb :" + msgstr "" + +-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860 ++#: dnf/cli/output.py:1740 dnf/cli/output.py:1742 + msgid "User :" + msgstr "" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1753 + msgid "Aborted" + msgstr "" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869 +-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751 ++#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757 + msgid "Return-Code :" + msgstr "" + +-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1749 dnf/cli/output.py:1757 + msgid "Success" + msgstr "" + +-#: dnf/cli/output.py:1869 ++#: dnf/cli/output.py:1751 + msgid "Failures:" + msgstr "" + +-#: dnf/cli/output.py:1873 ++#: dnf/cli/output.py:1755 + msgid "Failure:" + msgstr "" + +-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885 ++#: dnf/cli/output.py:1765 dnf/cli/output.py:1767 + msgid "Releasever :" + msgstr "" + +-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892 ++#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 + msgid "Command Line :" + msgstr "" + +-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899 ++#: dnf/cli/output.py:1779 dnf/cli/output.py:1781 + msgid "Comment :" + msgstr "" + +-#: dnf/cli/output.py:1903 ++#: dnf/cli/output.py:1785 + msgid "Transaction performed with:" + msgstr "" + +-#: dnf/cli/output.py:1912 ++#: dnf/cli/output.py:1794 + msgid "Packages Altered:" + msgstr "" + +-#: dnf/cli/output.py:1918 ++#: dnf/cli/output.py:1800 + msgid "Scriptlet output:" + msgstr "" + +-#: dnf/cli/output.py:1925 ++#: dnf/cli/output.py:1807 + msgid "Errors:" + msgstr "" + +-#: dnf/cli/output.py:1934 ++#: dnf/cli/output.py:1816 + msgid "Dep-Install" + msgstr "" + +-#: dnf/cli/output.py:1935 ++#: dnf/cli/output.py:1817 + msgid "Obsoleted" + msgstr "" + +-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85 ++#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85 + msgid "Obsoleting" + msgstr "" + +-#: dnf/cli/output.py:1937 ++#: dnf/cli/output.py:1819 + msgid "Erase" + msgstr "" + +-#: dnf/cli/output.py:1938 ++#: dnf/cli/output.py:1820 + msgid "Reinstall" + msgstr "" + +-#: dnf/cli/output.py:2016 ++#: dnf/cli/output.py:1894 + #, python-format + msgid "---> Package %s.%s %s will be installed" + msgstr "" + +-#: dnf/cli/output.py:2018 ++#: dnf/cli/output.py:1896 + #, python-format + msgid "---> Package %s.%s %s will be an upgrade" + msgstr "" + +-#: dnf/cli/output.py:2020 ++#: dnf/cli/output.py:1898 + #, python-format + msgid "---> Package %s.%s %s will be erased" + msgstr "" + +-#: dnf/cli/output.py:2022 ++#: dnf/cli/output.py:1900 + #, python-format + msgid "---> Package %s.%s %s will be reinstalled" + msgstr "" + +-#: dnf/cli/output.py:2024 ++#: dnf/cli/output.py:1902 + #, python-format + msgid "---> Package %s.%s %s will be a downgrade" + msgstr "" + +-#: dnf/cli/output.py:2026 ++#: dnf/cli/output.py:1904 + #, python-format + msgid "---> Package %s.%s %s will be obsoleting" + msgstr "" + +-#: dnf/cli/output.py:2028 ++#: dnf/cli/output.py:1906 + #, python-format + msgid "---> Package %s.%s %s will be upgraded" + msgstr "" + +-#: dnf/cli/output.py:2030 ++#: dnf/cli/output.py:1908 + #, python-format + msgid "---> Package %s.%s %s will be obsoleted" + msgstr "" + +-#: dnf/cli/output.py:2039 ++#: dnf/cli/output.py:1917 + msgid "--> Starting dependency resolution" + msgstr "" + +-#: dnf/cli/output.py:2044 ++#: dnf/cli/output.py:1921 + msgid "--> Finished dependency resolution" + msgstr "" + +-#: dnf/cli/output.py:2058 dnf/crypto.py:132 ++#: dnf/cli/output.py:1935 dnf/crypto.py:132 + #, python-format + msgid "" + "Importing GPG key 0x%s:\n" +@@ -3385,10 +3359,6 @@ msgstr "" + msgid " State : %s" + msgstr "" + +-#: dnf/comps.py:104 +-msgid "skipping." +-msgstr "" +- + #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706 + #, python-format + msgid "Module or Group '%s' is not installed." +@@ -3409,7 +3379,7 @@ msgstr "" + msgid "Environment id '%s' does not exist." + msgstr "" + +-#: dnf/comps.py:622 dnf/transaction_sr.py:443 dnf/transaction_sr.py:453 ++#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487 + #, python-format + msgid "Environment id '%s' is not installed." + msgstr "" +@@ -3434,6 +3404,11 @@ msgstr "" + msgid "Error parsing '%s': %s" + msgstr "" + ++#: dnf/conf/config.py:151 ++#, python-format ++msgid "Invalid configuration value: %s=%s in %s; %s" ++msgstr "" ++ + #: dnf/conf/config.py:226 + msgid "Could not set cachedir: {}" + msgstr "" +@@ -3473,36 +3448,36 @@ msgstr "" + msgid "Repo %s did not have a %s attr. before setopt" + msgstr "" + +-#: dnf/conf/read.py:51 ++#: dnf/conf/read.py:60 + #, python-format + msgid "Warning: failed loading '%s', skipping." + msgstr "" + +-#: dnf/conf/read.py:63 ++#: dnf/conf/read.py:72 + msgid "Bad id for repo: {} ({}), byte = {} {}" + msgstr "" + +-#: dnf/conf/read.py:67 ++#: dnf/conf/read.py:76 + msgid "Bad id for repo: {}, byte = {} {}" + msgstr "" + +-#: dnf/conf/read.py:75 ++#: dnf/conf/read.py:84 + msgid "Repository '{}' ({}): Error parsing config: {}" + msgstr "" + +-#: dnf/conf/read.py:78 ++#: dnf/conf/read.py:87 + msgid "Repository '{}': Error parsing config: {}" + msgstr "" + +-#: dnf/conf/read.py:84 ++#: dnf/conf/read.py:93 + msgid "Repository '{}' ({}) is missing name in configuration, using id." + msgstr "" + +-#: dnf/conf/read.py:87 ++#: dnf/conf/read.py:96 + msgid "Repository '{}' is missing name in configuration, using id." + msgstr "" + +-#: dnf/conf/read.py:104 ++#: dnf/conf/read.py:113 + msgid "Parsing file \"{}\" failed: {}" + msgstr "" + +@@ -3516,23 +3491,37 @@ msgstr "" + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: dnf/db/group.py:293 ++#: dnf/crypto.py:145 ++msgid "Verified using DNS record with DNSSEC signature." ++msgstr "" ++ ++#: dnf/crypto.py:147 ++msgid "NOT verified using DNS record." ++msgstr "" ++ ++#: dnf/crypto.py:184 ++#, python-format ++msgid "retrieving repo key for %s unencrypted from %s" ++msgstr "" ++ ++#: dnf/db/group.py:301 + msgid "" + "No available modular metadata for modular package '{}', it cannot be " + "installed on the system" + msgstr "" + +-#: dnf/db/group.py:343 ++#: dnf/db/group.py:351 + msgid "No available modular metadata for modular package" + msgstr "" + +-#: dnf/db/group.py:377 ++#: dnf/db/group.py:385 + #, python-format + msgid "Will not install a source rpm package (%s)." + msgstr "" + + #: dnf/dnssec.py:168 +-msgid "Configuration option 'gpgkey_dns_verification' requires libunbound ({})" ++msgid "" ++"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})" + msgstr "" + + #: dnf/dnssec.py:239 +@@ -3555,7 +3544,7 @@ msgstr "" + msgid "Testing already imported keys for their validity." + msgstr "" + +-#: dnf/drpm.py:62 dnf/repo.py:268 ++#: dnf/drpm.py:62 dnf/repo.py:267 + #, python-format + msgid "unsupported checksum type: %s" + msgstr "" +@@ -3598,7 +3587,7 @@ msgid_plural "Modular dependency problems with Defaults:" + msgstr[0] "" + msgstr[1] "" + +-#: dnf/exceptions.py:131 dnf/module/module_base.py:686 ++#: dnf/exceptions.py:131 dnf/module/module_base.py:854 + msgid "Modular dependency problem:" + msgid_plural "Modular dependency problems:" + msgstr[0] "" +@@ -3632,92 +3621,148 @@ msgstr "" + msgid "No profile specified for '{}', please specify profile." + msgstr "" + +-#: dnf/module/module_base.py:33 ++#: dnf/module/exceptions.py:27 ++msgid "No such module: {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:33 ++msgid "No such stream: {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:39 ++msgid "No enabled stream for module: {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:46 ++msgid "Cannot enable more streams from module '{}' at the same time" ++msgstr "" ++ ++#: dnf/module/exceptions.py:52 ++msgid "Different stream enabled for module: {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:58 ++msgid "No such profile: {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:64 ++msgid "Specified profile not installed for {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:70 ++msgid "No stream specified for '{}', please specify stream" ++msgstr "" ++ ++#: dnf/module/exceptions.py:82 ++msgid "No such profile: {}. No profiles available" ++msgstr "" ++ ++#: dnf/module/exceptions.py:88 ++msgid "No profile to remove for '{}'" ++msgstr "" ++ ++#: dnf/module/module_base.py:35 + msgid "" + "\n" + "\n" + "Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled" + msgstr "" + +-#: dnf/module/module_base.py:34 ++#: dnf/module/module_base.py:36 + msgid "" + "\n" + "\n" + "Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive" + msgstr "" + +-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421 +-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543 ++#: dnf/module/module_base.py:56 dnf/module/module_base.py:556 ++#: dnf/module/module_base.py:615 dnf/module/module_base.py:681 + msgid "Ignoring unnecessary profile: '{}/{}'" + msgstr "" + +-#: dnf/module/module_base.py:84 ++#: dnf/module/module_base.py:86 + #, python-brace-format + msgid "All matches for argument '{0}' in module '{1}:{2}' are not active" + msgstr "" + +-#: dnf/module/module_base.py:92 ++#: dnf/module/module_base.py:94 dnf/module/module_base.py:204 + #, python-brace-format + msgid "Installing module '{0}' from Fail-Safe repository {1} is not allowed" + msgstr "" + +-#: dnf/module/module_base.py:102 ++#: dnf/module/module_base.py:104 dnf/module/module_base.py:214 + msgid "" + "Unable to match profile for argument {}. Available profiles for '{}:{}': {}" + msgstr "" + +-#: dnf/module/module_base.py:106 ++#: dnf/module/module_base.py:108 dnf/module/module_base.py:218 + msgid "Unable to match profile for argument {}" + msgstr "" + +-#: dnf/module/module_base.py:118 ++#: dnf/module/module_base.py:120 + msgid "No default profiles for module {}:{}. Available profiles: {}" + msgstr "" + +-#: dnf/module/module_base.py:122 ++#: dnf/module/module_base.py:124 + msgid "No profiles for module {}:{}" + msgstr "" + +-#: dnf/module/module_base.py:129 ++#: dnf/module/module_base.py:131 + msgid "Default profile {} not available in module {}:{}" + msgstr "" + +-#: dnf/module/module_base.py:142 ++#: dnf/module/module_base.py:144 dnf/module/module_base.py:247 + msgid "Installing module from Fail-Safe repository is not allowed" + msgstr "" + +-#: dnf/module/module_base.py:159 dnf/module/module_base.py:193 +-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355 +-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417 +-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539 +-msgid "Unable to resolve argument {}" ++#: dnf/module/module_base.py:196 ++#, python-brace-format ++msgid "No active matches for argument '{0}' in module '{1}:{2}'" + msgstr "" + +-#: dnf/module/module_base.py:160 +-msgid "No match for package {}" ++#: dnf/module/module_base.py:228 ++#, python-brace-format ++msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'" + msgstr "" + +-#: dnf/module/module_base.py:204 ++#: dnf/module/module_base.py:267 ++msgid "No packages available to distrosync for package name '{}'" ++msgstr "" ++ ++#: dnf/module/module_base.py:310 dnf/module/module_base.py:461 ++#: dnf/module/module_base.py:486 dnf/module/module_base.py:505 ++#: dnf/module/module_base.py:552 dnf/module/module_base.py:611 ++#: dnf/module/module_base.py:677 dnf/module/module_base.py:840 ++msgid "Unable to resolve argument {}" ++msgstr "" ++ ++#: dnf/module/module_base.py:321 + #, python-brace-format + msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed" + msgstr "" + +-#: dnf/module/module_base.py:223 dnf/module/module_base.py:251 ++#: dnf/module/module_base.py:340 dnf/module/module_base.py:368 + msgid "Unable to match profile in argument {}" + msgstr "" + +-#: dnf/module/module_base.py:231 ++#: dnf/module/module_base.py:348 + msgid "Upgrading module from Fail-Safe repository is not allowed" + msgstr "" + +-#: dnf/module/module_base.py:367 ++#: dnf/module/module_base.py:422 ++#, python-brace-format ++msgid "" ++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module " ++"'{module}', but none of the streams are enabled or default" ++msgstr "" ++ ++#: dnf/module/module_base.py:509 + msgid "" + "Only module name is required. Ignoring unneeded information in argument: '{}'" + msgstr "" + +-#: dnf/package.py:298 +-#, python-format +-msgid "%s: %s check failed: %s vs %s" ++#: dnf/module/module_base.py:841 ++msgid "No match for package {}" + msgstr "" + + #. empty file is invalid json format +@@ -3754,16 +3799,16 @@ msgstr "" + msgid "Loaded plugins: %s" + msgstr "" + +-#: dnf/plugin.py:199 ++#: dnf/plugin.py:211 + #, python-format + msgid "Failed loading plugin \"%s\": %s" + msgstr "" + +-#: dnf/plugin.py:231 ++#: dnf/plugin.py:243 + msgid "No matches found for the following enable plugin patterns: {}" + msgstr "" + +-#: dnf/plugin.py:235 ++#: dnf/plugin.py:247 + msgid "No matches found for the following disable plugin patterns: {}" + msgstr "" + +@@ -3777,7 +3822,7 @@ msgid "Already downloaded" + msgstr "" + + #. pinging mirrors, this might take a while +-#: dnf/repo.py:347 ++#: dnf/repo.py:346 + #, python-format + msgid "determining the fastest mirror (%s hosts).. " + msgstr "" +@@ -3792,10 +3837,25 @@ msgstr "" + msgid "Added %s repo from %s" + msgstr "" + ++#: dnf/rpm/miscutils.py:32 ++#, python-format ++msgid "Using rpmkeys executable at %s to verify signatures" ++msgstr "" ++ ++#: dnf/rpm/miscutils.py:66 ++msgid "Cannot find rpmkeys executable to verify signatures." ++msgstr "" ++ + #: dnf/rpm/transaction.py:119 + msgid "Errors occurred during test transaction." + msgstr "" + ++#: dnf/sack.py:47 ++msgid "" ++"allow_vendor_change is disabled. This option is currently not supported for " ++"downgrade and distro-sync commands" ++msgstr "" ++ + #. TRANSLATORS: This is for a single package currently being downgraded. + #: dnf/transaction.py:80 + msgctxt "currently" +@@ -3842,160 +3902,182 @@ msgstr "" + msgid "Preparing" + msgstr "" + +-#: dnf/transaction_sr.py:60 ++#: dnf/transaction_sr.py:66 + #, python-brace-format +-msgid "Errors in \"{filename}\":" ++msgid "" ++"The following problems occurred while replaying the transaction from file " ++"\"{filename}\":" + msgstr "" + +-#: dnf/transaction_sr.py:70 +-#, python-brace-format +-msgid "Error in \"{filename}\": {error}" ++#: dnf/transaction_sr.py:68 ++msgid "The following problems occurred while running a transaction:" + msgstr "" + +-#: dnf/transaction_sr.py:87 ++#: dnf/transaction_sr.py:89 + #, python-brace-format + msgid "Invalid major version \"{major}\", number expected." + msgstr "" + +-#: dnf/transaction_sr.py:95 ++#: dnf/transaction_sr.py:97 + #, python-brace-format + msgid "Invalid minor version \"{minor}\", number expected." + msgstr "" + +-#: dnf/transaction_sr.py:101 ++#: dnf/transaction_sr.py:103 + #, python-brace-format + msgid "" + "Incompatible major version \"{major}\", supported major version is " + "\"{major_supp}\"." + msgstr "" + +-#: dnf/transaction_sr.py:244 ++#: dnf/transaction_sr.py:224 ++msgid "" ++"Conflicting TransactionReplay arguments have been specified: filename, data" ++msgstr "" ++ ++#: dnf/transaction_sr.py:265 + #, python-brace-format + msgid "Unexpected type of \"{id}\", {exp} expected." + msgstr "" + +-#: dnf/transaction_sr.py:250 ++#: dnf/transaction_sr.py:271 + #, python-brace-format + msgid "Missing key \"{key}\"." + msgstr "" + +-#: dnf/transaction_sr.py:263 ++#: dnf/transaction_sr.py:285 + #, python-brace-format + msgid "Missing object key \"{key}\" in an rpm." + msgstr "" + +-#: dnf/transaction_sr.py:267 ++#: dnf/transaction_sr.py:289 + #, python-brace-format + msgid "" + "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." + msgstr "" + +-#: dnf/transaction_sr.py:275 ++#: dnf/transaction_sr.py:297 + #, python-brace-format + msgid "Cannot parse NEVRA for package \"{nevra}\"." + msgstr "" + +-#: dnf/transaction_sr.py:286 ++#: dnf/transaction_sr.py:321 + #, python-brace-format + msgid "Cannot find rpm nevra \"{nevra}\"." + msgstr "" + +-#: dnf/transaction_sr.py:301 ++#: dnf/transaction_sr.py:336 + #, python-brace-format + msgid "Package \"{na}\" is already installed for action \"{action}\"." + msgstr "" + +-#: dnf/transaction_sr.py:311 ++#: dnf/transaction_sr.py:345 + #, python-brace-format + msgid "" + "Package nevra \"{nevra}\" not available in repositories for action " + "\"{action}\"." + msgstr "" + +-#: dnf/transaction_sr.py:322 ++#: dnf/transaction_sr.py:356 + #, python-brace-format + msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"." + msgstr "" + +-#: dnf/transaction_sr.py:336 ++#: dnf/transaction_sr.py:370 + #, python-brace-format + msgid "" + "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." + msgstr "" + +-#: dnf/transaction_sr.py:343 ++#: dnf/transaction_sr.py:377 + #, python-format + msgid "Group id '%s' is not available." + msgstr "" + +-#: dnf/transaction_sr.py:364 ++#: dnf/transaction_sr.py:398 + #, python-brace-format + msgid "Missing object key \"{key}\" in groups.packages." + msgstr "" + +-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387 ++#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421 + #, python-format + msgid "Group id '%s' is not installed." + msgstr "" + +-#: dnf/transaction_sr.py:398 ++#: dnf/transaction_sr.py:432 + #, python-format + msgid "Environment id '%s' is not available." + msgstr "" + +-#: dnf/transaction_sr.py:422 ++#: dnf/transaction_sr.py:456 + #, python-brace-format + msgid "" + "Invalid value \"{group_type}\" of environments.groups.group_type, only " + "\"mandatory\" or \"optional\" is supported." + msgstr "" + +-#: dnf/transaction_sr.py:430 ++#: dnf/transaction_sr.py:464 + #, python-brace-format + msgid "Missing object key \"{key}\" in environments.groups." + msgstr "" + +-#: dnf/transaction_sr.py:508 ++#: dnf/transaction_sr.py:542 + #, python-brace-format + msgid "Unexpected value of group action \"{action}\" for group \"{group}\"." + msgstr "" + +-#: dnf/transaction_sr.py:513 ++#: dnf/transaction_sr.py:547 + #, python-brace-format + msgid "Missing object key \"{key}\" in a group." + msgstr "" + +-#: dnf/transaction_sr.py:537 ++#: dnf/transaction_sr.py:571 + #, python-brace-format + msgid "" + "Unexpected value of environment action \"{action}\" for environment " + "\"{env}\"." + msgstr "" + +-#: dnf/transaction_sr.py:542 ++#: dnf/transaction_sr.py:576 + #, python-brace-format + msgid "Missing object key \"{key}\" in an environment." + msgstr "" + +-#: dnf/transaction_sr.py:581 ++#: dnf/transaction_sr.py:615 + #, python-brace-format + msgid "" + "Package nevra \"{nevra}\", which is not present in the transaction file, was " + "pulled into the transaction." + msgstr "" + +-#: dnf/util.py:391 dnf/util.py:393 ++#: dnf/util.py:419 dnf/util.py:421 + msgid "Problem" + msgstr "" + +-#: dnf/util.py:444 ++#: dnf/util.py:472 + msgid "TransactionItem not found for key: {}" + msgstr "" + +-#: dnf/util.py:454 ++#: dnf/util.py:482 + msgid "TransactionSWDBItem not found for key: {}" + msgstr "" + +-#: dnf/util.py:457 ++#: dnf/util.py:485 + msgid "Errors occurred during transaction." + msgstr "" ++ ++#: dnf/util.py:621 ++msgid "Reinstalled" ++msgstr "" ++ ++#: dnf/util.py:622 ++msgid "Skipped" ++msgstr "" ++ ++#: dnf/util.py:623 ++msgid "Removed" ++msgstr "" ++ ++#: dnf/util.py:626 ++msgid "Failed" ++msgstr "" +diff --git a/po/fr.po b/po/fr.po +index 4e883335..bb2d3677 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -15,23 +15,28 @@ + # José Fournier , 2017. #zanata + # Jérôme Fenal , 2017. #zanata + # Jean-Baptiste Holcroft , 2018. #zanata, 2020. +-# Ludek Janda , 2018. #zanata ++# Ludek Janda , 2018. #zanata, 2021. + # Jean-Baptiste Holcroft , 2019. #zanata, 2020. +-# Julien Humbert , 2020. ++# Julien Humbert , 2020, 2021. ++# Sundeep Anand , 2021. ++# Guillaume Jacob , 2021. ++# Titouan Bénard , 2021. ++# Transtats , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-09-12 11:29+0000\n" +-"Last-Translator: Julien Humbert \n" +-"Language-Team: French \n" ++"POT-Creation-Date: 2022-02-28 11:24+0100\n" ++"PO-Revision-Date: 2022-03-09 12:39+0000\n" ++"Last-Translator: Transtats \n" ++"Language-Team: French \n" + "Language: fr\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=n > 1;\n" +-"X-Generator: Weblate 4.2.2\n" ++"X-Generator: Weblate 4.11.2\n" + + #: dnf/automatic/emitter.py:32 + #, python-format +@@ -78,7 +83,7 @@ msgstr "Échec de l’envoi d’un courriel par « %s » : %s" + msgid "Failed to execute command '%s': returned %d" + msgstr "Échec dans l’exécution de la commande « %s » : code retour %d" + +-#: dnf/automatic/main.py:164 dnf/conf/config.py:151 ++#: dnf/automatic/main.py:164 + #, python-format + msgid "Unknown configuration value: %s=%s in %s; %s" + msgstr "Valeur de configuration inconnue : %s=%s dans %s ; %s" +@@ -88,22 +93,23 @@ msgstr "Valeur de configuration inconnue : %s=%s dans %s ; %s" + msgid "Unknown configuration option: %s = %s in %s" + msgstr "Option de configuration inconnue : %s=%s dans %s" + +-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299 ++#: dnf/automatic/main.py:237 dnf/cli/cli.py:305 + msgid "GPG check FAILED" + msgstr "La vérification GPG a ÉCHOUÉ" + + #: dnf/automatic/main.py:274 + msgid "Waiting for internet connection..." +-msgstr "En attente d'une connexion Internet…" ++msgstr "En attente d'une connexion Internet..." + + #: dnf/automatic/main.py:304 + msgid "Started dnf-automatic." + msgstr "dnf-automatic démarré." + + #: dnf/automatic/main.py:308 +-#, python-format +-msgid "Sleep for %s seconds" +-msgstr "Mise en sommeil pendant %s secondes" ++msgid "Sleep for {} second" ++msgid_plural "Sleep for {} seconds" ++msgstr[0] "Mise en sommeil pendant {} seconde" ++msgstr[1] "Mise en sommeil pendant {} secondes" + + #: dnf/automatic/main.py:315 + msgid "System is off-line." +@@ -115,84 +121,84 @@ msgstr "Le système est hors-ligne." + msgid "Error: %s" + msgstr "Erreur : %s" + +-#: dnf/base.py:146 ++#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479 + msgid "loading repo '{}' failure: {}" + msgstr "Erreur lors du chargement du dépôt « {} » : {}" + +-#: dnf/base.py:148 ++#: dnf/base.py:150 + msgid "Loading repository '{}' has failed" + msgstr "Échec du chargement du dépôt « {} »" + +-#: dnf/base.py:320 ++#: dnf/base.py:327 + msgid "Metadata timer caching disabled when running on metered connection." + msgstr "" + "Mise en cache temporisée des métadonnées désactivée lors du fonctionnement " + "sur connexion limitée." + +-#: dnf/base.py:325 ++#: dnf/base.py:332 + msgid "Metadata timer caching disabled when running on a battery." + msgstr "" + "Mise en cache temporisée des métadonnées désactivée lors du fonctionnement " + "sur batterie." + +-#: dnf/base.py:330 ++#: dnf/base.py:337 + msgid "Metadata timer caching disabled." + msgstr "Mise en cache temporisée des métadonnées désactivée." + +-#: dnf/base.py:335 ++#: dnf/base.py:342 + msgid "Metadata cache refreshed recently." + msgstr "Cache des métadonnées mis à jour récemment." + +-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91 ++#: dnf/base.py:348 dnf/cli/commands/__init__.py:91 + msgid "There are no enabled repositories in \"{}\"." + msgstr "Il n’y a pas de dépôts activés dans « {} »." + +-#: dnf/base.py:348 ++#: dnf/base.py:355 + #, python-format + msgid "%s: will never be expired and will not be refreshed." + msgstr "%s : n’expirera jamais et ne sera pas réinitialisé." + +-#: dnf/base.py:350 ++#: dnf/base.py:357 + #, python-format + msgid "%s: has expired and will be refreshed." + msgstr "%s : a expiré et sera réinitialisé." + + #. expires within the checking period: +-#: dnf/base.py:354 ++#: dnf/base.py:361 + #, python-format + msgid "%s: metadata will expire after %d seconds and will be refreshed now" + msgstr "" + "%s : métadonnées expireront après %d secondes et seront réinitialisées " + "maintenant" + +-#: dnf/base.py:358 ++#: dnf/base.py:365 + #, python-format + msgid "%s: will expire after %d seconds." + msgstr "%s : expireront après %d secondes." + + #. performs the md sync +-#: dnf/base.py:364 ++#: dnf/base.py:371 + msgid "Metadata cache created." + msgstr "Cache des métadonnées créé." + +-#: dnf/base.py:397 ++#: dnf/base.py:404 dnf/base.py:471 + #, python-format + msgid "%s: using metadata from %s." + msgstr "%s : utilisation des métadonnées depuis le %s." + +-#: dnf/base.py:409 ++#: dnf/base.py:416 dnf/base.py:484 + #, python-format + msgid "Ignoring repositories: %s" + msgstr "Dépôts ignorés : %s" + +-#: dnf/base.py:412 ++#: dnf/base.py:419 + #, python-format + msgid "Last metadata expiration check: %s ago on %s." + msgstr "" +-"Dernière vérification de l’expiration des métadonnées effectuée il y a %s le" +-" %s." ++"Dernière vérification de l’expiration des métadonnées effectuée il y a %s le " ++"%s." + +-#: dnf/base.py:443 ++#: dnf/base.py:512 + msgid "" + "The downloaded packages were saved in cache until the next successful " + "transaction." +@@ -200,59 +206,59 @@ msgstr "" + "Les paquets téléchargés ont été mis en cache jusqu’à la prochaine " + "transaction réussie." + +-#: dnf/base.py:445 ++#: dnf/base.py:514 + #, python-format + msgid "You can remove cached packages by executing '%s'." + msgstr "Vous pouvez supprimer les paquets en cache en exécutant « %s »." + +-#: dnf/base.py:535 ++#: dnf/base.py:606 + #, python-format + msgid "Invalid tsflag in config file: %s" + msgstr "tsflag invalide dans le fichier de configuration : %s" + +-#: dnf/base.py:591 ++#: dnf/base.py:662 + #, python-format + msgid "Failed to add groups file for repository: %s - %s" + msgstr "Échec d’ajout du fichier de groupes pour le dépôt : %s - %s" + +-#: dnf/base.py:823 ++#: dnf/base.py:904 + msgid "Running transaction check" + msgstr "Test de la transaction" + +-#: dnf/base.py:831 ++#: dnf/base.py:912 + msgid "Error: transaction check vs depsolve:" + msgstr "" + "Erreur : vérification de transaction contre résolution des dépendances :" + +-#: dnf/base.py:837 ++#: dnf/base.py:918 + msgid "Transaction check succeeded." + msgstr "La vérification de la transaction a réussi." + +-#: dnf/base.py:840 ++#: dnf/base.py:921 + msgid "Running transaction test" + msgstr "Lancement de la transaction de test" + +-#: dnf/base.py:850 dnf/base.py:992 ++#: dnf/base.py:931 dnf/base.py:1082 + msgid "RPM: {}" + msgstr "RPM : {}" + +-#: dnf/base.py:851 ++#: dnf/base.py:932 + msgid "Transaction test error:" + msgstr "Erreur de la transaction de test :" + +-#: dnf/base.py:862 ++#: dnf/base.py:943 + msgid "Transaction test succeeded." + msgstr "Transaction de test réussie." + +-#: dnf/base.py:883 ++#: dnf/base.py:964 + msgid "Running transaction" + msgstr "Exécution de la transaction" + +-#: dnf/base.py:911 ++#: dnf/base.py:1001 + msgid "Disk Requirements:" + msgstr "Besoins en espace disque :" + +-#: dnf/base.py:914 ++#: dnf/base.py:1004 + #, python-brace-format + msgid "At least {0}MB more space needed on the {1} filesystem." + msgid_plural "At least {0}MB more space needed on the {1} filesystem." +@@ -260,154 +266,154 @@ msgstr[0] "" + "Au moins {0} Mio supplémentaire est nécessaire sur le système de fichiers " + "{1}." + msgstr[1] "" +-"Au moins {0} Mio supplémentaires sont nécessaires sur le système de fichiers" +-" {1}." ++"Au moins {0} Mio supplémentaires sont nécessaires sur le système de fichiers " ++"{1}." + +-#: dnf/base.py:921 ++#: dnf/base.py:1011 + msgid "Error Summary" + msgstr "Résumé des erreurs" + +-#: dnf/base.py:947 ++#: dnf/base.py:1037 + #, python-brace-format + msgid "RPMDB altered outside of {prog}." + msgstr "RPMDB modifié en dehors de {prog}." + +-#: dnf/base.py:993 dnf/base.py:1001 ++#: dnf/base.py:1083 dnf/base.py:1091 + msgid "Could not run transaction." + msgstr "Impossible d’exécuter la transaction." + +-#: dnf/base.py:996 ++#: dnf/base.py:1086 + msgid "Transaction couldn't start:" + msgstr "La transaction n’a pas pu démarrer :" + +-#: dnf/base.py:1010 ++#: dnf/base.py:1100 + #, python-format + msgid "Failed to remove transaction file %s" + msgstr "Échec de la suppression du fichier de transaction %s" + +-#: dnf/base.py:1092 ++#: dnf/base.py:1182 + msgid "Some packages were not downloaded. Retrying." + msgstr "Certains paquets n’ont pas été téléchargés. Nouvel essai." + +-#: dnf/base.py:1122 ++#: dnf/base.py:1212 + #, python-format + msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)" + msgstr "" + "Les Delta RPM ont réduit la taille des mises à jour de %.1f Mio à %.1f Mio " + "(%d.1%% économisés)" + +-#: dnf/base.py:1125 ++#: dnf/base.py:1215 + #, python-format + msgid "" + "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)" + msgstr "" +-"L’échec des Delta RPMs ont fait augmenter les %.1f MO de mises à jour de " +-"%.1f MB (%d.1%% gaspillés)" ++"Les Delta RPMs en échec ont fait augmenter la taille des mises à jour de " ++"%.1f Mio à %.1f Mio (%d.1%% gaspillés)" + +-#: dnf/base.py:1167 ++#: dnf/base.py:1257 + msgid "Cannot add local packages, because transaction job already exists" + msgstr "" + "Impossible d’ajouter des paquets locaux, car un travail de transaction " + "existe déjà" + +-#: dnf/base.py:1181 ++#: dnf/base.py:1271 + msgid "Could not open: {}" + msgstr "Impossible d’ouvrir : {}" + +-#: dnf/base.py:1219 ++#: dnf/base.py:1309 + #, python-format + msgid "Public key for %s is not installed" + msgstr "La clé publique pour %s n’est pas installée" + +-#: dnf/base.py:1223 ++#: dnf/base.py:1313 + #, python-format + msgid "Problem opening package %s" + msgstr "Problème à l’ouverture du paquet %s" + +-#: dnf/base.py:1231 ++#: dnf/base.py:1321 + #, python-format + msgid "Public key for %s is not trusted" + msgstr "La clé publique pour %s n’est pas de confiance" + +-#: dnf/base.py:1235 ++#: dnf/base.py:1325 + #, python-format + msgid "Package %s is not signed" + msgstr "Le paquet %s n’est pas signé" + +-#: dnf/base.py:1265 ++#: dnf/base.py:1355 + #, python-format + msgid "Cannot remove %s" + msgstr "Impossible de supprimer %s" + +-#: dnf/base.py:1269 ++#: dnf/base.py:1359 + #, python-format + msgid "%s removed" + msgstr "%s supprimé" + +-#: dnf/base.py:1549 ++#: dnf/base.py:1639 + msgid "No match for group package \"{}\"" + msgstr "Aucune correspondance pour le paquet du groupe « {} »" + +-#: dnf/base.py:1635 ++#: dnf/base.py:1721 + #, python-format + msgid "Adding packages from group '%s': %s" + msgstr "Ajout de paquets en provenance du groupe « %s » : %s" + +-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442 +-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592 +-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80 ++#: dnf/base.py:1744 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437 ++#: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587 ++#: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80 + #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110 + msgid "Nothing to do." + msgstr "Rien à faire." + +-#: dnf/base.py:1676 ++#: dnf/base.py:1762 + msgid "No groups marked for removal." + msgstr "Aucun groupe marqué pour suppression." + +-#: dnf/base.py:1710 ++#: dnf/base.py:1796 + msgid "No group marked for upgrade." + msgstr "Aucun groupe marqué pour mise à jour." + +-#: dnf/base.py:1925 ++#: dnf/base.py:2010 + #, python-format + msgid "Package %s not installed, cannot downgrade it." + msgstr "Le paquet %s n’est pas installé, impossible de le rétrograder." + +-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980 +-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411 +-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482 +-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633 +-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147 ++#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071 ++#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 dnf/cli/cli.py:417 ++#: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477 ++#: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628 ++#: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147 + #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84 +-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121 ++#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116 + #, python-format + msgid "No match for argument: %s" + msgstr "Aucune correspondance pour l’argument : %s" + +-#: dnf/base.py:1934 ++#: dnf/base.py:2019 + #, python-format + msgid "Package %s of lower version already installed, cannot downgrade it." + msgstr "" +-"Le paquet %s est déjà installé dans une version inférieure, impossible de le" +-" rétrograder." ++"Le paquet %s est déjà installé dans une version inférieure, impossible de le " ++"rétrograder." + +-#: dnf/base.py:1957 ++#: dnf/base.py:2042 + #, python-format + msgid "Package %s not installed, cannot reinstall it." + msgstr "Le paquet %s n’est pas installé, impossible de le réinstaller." + +-#: dnf/base.py:1972 ++#: dnf/base.py:2057 + #, python-format + msgid "File %s is a source package and cannot be updated, ignoring." + msgstr "" + "Le fichier %s est un paquet source et ne peut pas être mis à jour, ignoré." + +-#: dnf/base.py:1978 ++#: dnf/base.py:2068 + #, python-format + msgid "Package %s not installed, cannot update it." + msgstr "Le paquet %s n’est pas installé, impossible de le mettre à jour." + +-#: dnf/base.py:1987 ++#: dnf/base.py:2078 + #, python-format + msgid "" + "The same or higher version of %s is already installed, cannot update it." +@@ -415,187 +421,176 @@ msgstr "" + "La même une ou version supérieure de %s est déjà installée, mise à jour " + "impossible." + +-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81 ++#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81 + #, python-format + msgid "Package %s available, but not installed." + msgstr "Le paquet %s est disponible mais n’est pas installé." + +-#: dnf/base.py:2032 ++#: dnf/base.py:2127 + #, python-format + msgid "Package %s available, but installed for different architecture." + msgstr "" + "Le paquet %s est disponible mais est installé pour une autre architecture." + +-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699 ++#: dnf/base.py:2152 + #, python-format + msgid "No package %s installed." + msgstr "Aucun paquet %s installé." + +-#: dnf/base.py:2075 dnf/cli/commands/install.py:136 ++#: dnf/base.py:2170 dnf/cli/commands/install.py:136 + #: dnf/cli/commands/remove.py:133 + #, python-format + msgid "Not a valid form: %s" + msgstr "Format invalide : %s" + +-#: dnf/base.py:2091 dnf/cli/commands/__init__.py:681 +-#: dnf/cli/commands/remove.py:163 ++#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676 ++#: dnf/cli/commands/remove.py:162 + msgid "No packages marked for removal." + msgstr "Aucun paquet marqué pour suppression." + +-#: dnf/base.py:2179 dnf/cli/cli.py:422 ++#: dnf/base.py:2273 dnf/cli/cli.py:428 + #, python-format + msgid "Packages for argument %s available, but not installed." + msgstr "Les paquets pour le paramètre %s sont disponibles mais pas installés." + +-#: dnf/base.py:2184 ++#: dnf/base.py:2278 + #, python-format + msgid "Package %s of lowest version already installed, cannot downgrade it." + msgstr "" + "La version la plus ancienne du paquet %s est déjà installée, impossible de " + "le rétrograder." + +-#: dnf/base.py:2242 +-msgid "Action not handled: {}" +-msgstr "Action non gérée : {}" +- +-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703 +-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169 +-#, python-format +-msgid "No package %s available." +-msgstr "Aucun paquet %s n’est disponible." +- +-#: dnf/base.py:2269 +-msgid "no package matched" +-msgstr "aucun paquet correspondant" +- +-#: dnf/base.py:2290 ++#: dnf/base.py:2378 + msgid "No security updates needed, but {} update available" + msgstr "" + "Aucune mise à jour de sécurité n’est nécessaire, mais la mise à jour {} est " + "disponible" + +-#: dnf/base.py:2292 ++#: dnf/base.py:2380 + msgid "No security updates needed, but {} updates available" + msgstr "" + "Aucune mise à jour de sécurité n’est nécessaire, mais les mises à jour {} " + "sont disponibles" + +-#: dnf/base.py:2296 ++#: dnf/base.py:2384 + msgid "No security updates needed for \"{}\", but {} update available" + msgstr "" + "Aucune mise à jour de sécurité n’est nécessaire pour « {} », mais la mise à " + "jour {} est disponible" + +-#: dnf/base.py:2298 ++#: dnf/base.py:2386 + msgid "No security updates needed for \"{}\", but {} updates available" + msgstr "" + "Aucune mise à jour de sécurité n’est nécessaire pour « {} », mais les mises " + "à jour {} sont disponibles" + + #. raise an exception, because po.repoid is not in self.repos +-#: dnf/base.py:2319 ++#: dnf/base.py:2407 + #, python-format + msgid "Unable to retrieve a key for a commandline package: %s" + msgstr "" + "Impossible de récupérer une clé pour un paquet en ligne de commande : %s" + +-#: dnf/base.py:2327 ++#: dnf/base.py:2415 + #, python-format + msgid ". Failing package is: %s" + msgstr ". Le paquet en erreur est : %s" + +-#: dnf/base.py:2328 ++#: dnf/base.py:2416 + #, python-format + msgid "GPG Keys are configured as: %s" + msgstr "Les clés GPG sont configurées comme : %s" + +-#: dnf/base.py:2340 ++#: dnf/base.py:2428 + #, python-format + msgid "GPG key at %s (0x%s) is already installed" + msgstr "La clé GPG %s (0x%s) est déjà installée" + +-#: dnf/base.py:2373 ++#: dnf/base.py:2464 + msgid "The key has been approved." + msgstr "La clef a été approuvée." + +-#: dnf/base.py:2376 ++#: dnf/base.py:2467 + msgid "The key has been rejected." + msgstr "La clef a été rejetée." + +-#: dnf/base.py:2409 ++#: dnf/base.py:2500 + #, python-format + msgid "Key import failed (code %d)" + msgstr "L’import de la clé a échoué (code %d)" + +-#: dnf/base.py:2411 ++#: dnf/base.py:2502 + msgid "Key imported successfully" + msgstr "La clé a bien été importée" + +-#: dnf/base.py:2415 ++#: dnf/base.py:2506 + msgid "Didn't install any keys" + msgstr "Toutes les clés n’ont pas été installées" + +-#: dnf/base.py:2418 ++#: dnf/base.py:2509 + #, python-format + msgid "" +-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n" ++"The GPG keys listed for the \"%s\" repository are already installed but they " ++"are not correct for this package.\n" + "Check that the correct key URLs are configured for this repository." + msgstr "" +-"Les clés GPG listées pour le dépôt « %s » sont déjà installées mais sont incorrectes pour ce paquet.\n" ++"Les clés GPG listées pour le dépôt « %s » sont déjà installées mais sont " ++"incorrectes pour ce paquet.\n" + "Vérifiez que les URL des clés pour ce dépôt soient correctes." + +-#: dnf/base.py:2429 ++#: dnf/base.py:2520 + msgid "Import of key(s) didn't help, wrong key(s)?" + msgstr "" + "L’import de la ou des clés n’a pas résolu le problème, clés incorrectes ?" + +-#: dnf/base.py:2482 ++#: dnf/base.py:2573 + msgid " * Maybe you meant: {}" + msgstr " * Peut-être vouliez-vous dire : {}" + +-#: dnf/base.py:2514 ++#: dnf/base.py:2605 + msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum" +-msgstr "Le paquet \"{}\" du dépôt local \"{}\" a une somme de contrôle incorrecte" ++msgstr "" ++"Le paquet \"{}\" du dépôt local \"{}\" a une somme de contrôle incorrecte" + +-#: dnf/base.py:2517 ++#: dnf/base.py:2608 + msgid "Some packages from local repository have incorrect checksum" + msgstr "Certains paquets du dépôt local ont une somme de contrôle incorrecte" + +-#: dnf/base.py:2520 ++#: dnf/base.py:2611 + msgid "Package \"{}\" from repository \"{}\" has incorrect checksum" + msgstr "Le paquet \"{}\" du dépôt \"{}\" a une somme de contrôle incorrecte" + +-#: dnf/base.py:2523 ++#: dnf/base.py:2614 + msgid "" + "Some packages have invalid cache, but cannot be downloaded due to \"--" + "cacheonly\" option" + msgstr "" +-"Certains paquets ont un cache invalide, mais ne peuvent pas être téléchargés" +-" à cause de l’option « --cacheonly »" ++"Certains paquets ont un cache invalide, mais ne peuvent pas être téléchargés " ++"à cause de l’option « --cacheonly »" + +-#: dnf/base.py:2541 dnf/base.py:2561 ++#: dnf/base.py:2632 dnf/base.py:2652 + msgid "No match for argument" + msgstr "Aucune correspondance pour le paramètre" + +-#: dnf/base.py:2549 dnf/base.py:2569 ++#: dnf/base.py:2640 dnf/base.py:2660 + msgid "All matches were filtered out by exclude filtering for argument" + msgstr "" + "Toutes les correspondances ont été filtrées en excluant le filtrage pour " + "l’argument" + +-#: dnf/base.py:2551 ++#: dnf/base.py:2642 + msgid "All matches were filtered out by modular filtering for argument" + msgstr "" + "Toutes les correspondances ont été filtrées par filtrage modulaire pour les " + "arguments" + +-#: dnf/base.py:2567 ++#: dnf/base.py:2658 + msgid "All matches were installed from a different repository for argument" + msgstr "" + "Toutes les correspondances ont été installées à partir d’un dépôt différent " + "pour le paramètre" + +-#: dnf/base.py:2583 ++#: dnf/base.py:2705 + #, python-format + msgid "Package %s is already installed." + msgstr "Le paquet %s est déjà installé." +@@ -616,8 +611,8 @@ msgstr "La lecture du fichier « %s » a échoué : %s" + msgid "Cannot read file \"%s\": %s" + msgstr "Impossible de lire le fichier « %s » : %s" + +-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902 +-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108 ++#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804 ++#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108 + #, python-format + msgid "Config error: %s" + msgstr "Erreur de configuration : %s" +@@ -647,24 +642,32 @@ msgid "" + "The operation would result in switching of module '{0}' stream '{1}' to " + "stream '{2}'" + msgstr "" +-"Le résulta de l’opération sera le basculement du flux« {1} » du module « {0}" +-" » vers le flux« {2} »" ++"Le résulta de l’opération sera le basculement du flux« {1} » du module « {0} " ++"» vers le flux« {2} »" + +-#: dnf/cli/cli.py:172 ++#: dnf/cli/cli.py:173 + #, python-brace-format + msgid "" +-"It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using '{prog} module reset ' command. After you reset the module, you can install the other stream." +-msgstr "" +-"Il n’est pas possible de basculer les flux actifs d’un module.\n" +-"Il et recommandé de retirer tout contenu installé par le module, et de réinitialiser le mode en utilisant la commande « {prog} module reset ». Après la réinitialisation, vous pouvez installer les autres flux." +- +-#: dnf/cli/cli.py:210 ++"It is not possible to switch enabled streams of a module unless explicitly " ++"enabled via configuration option module_stream_switch.\n" ++"It is recommended to rather remove all installed content from the module, " ++"and reset the module using '{prog} module reset ' command. " ++"After you reset the module, you can install the other stream." ++msgstr "" ++"Il n’est pas possible de basculer les flux actifs d’un module sauf si cela " ++"est explicitement activé par l’option de configuration " ++"module_stream_switch.\n" ++"Il est plutôt recommandé de retirer tout contenu installé par le module, et " ++"de réinitialiser le mode en utilisant la commande « {prog} module reset " ++" ». Après la réinitialisation, vous pouvez installer les " ++"autres flux." ++ ++#: dnf/cli/cli.py:212 + #, python-brace-format + msgid "{prog} will only download packages for the transaction." + msgstr "{prog} ne téléchargera que les paquets pour la transaction." + +-#: dnf/cli/cli.py:213 ++#: dnf/cli/cli.py:215 + #, python-brace-format + msgid "" + "{prog} will only download packages, install gpg keys, and check the " +@@ -673,128 +676,108 @@ msgstr "" + "{prog} ne téléchargera que les paquets, installera les clefs GPG et " + "vérifiera la transaction." + +-#: dnf/cli/cli.py:217 ++#: dnf/cli/cli.py:219 + msgid "Operation aborted." + msgstr "Opération avortée." + +-#: dnf/cli/cli.py:224 ++#: dnf/cli/cli.py:226 + msgid "Downloading Packages:" + msgstr "Téléchargement des paquets :" + +-#: dnf/cli/cli.py:230 ++#: dnf/cli/cli.py:232 + msgid "Error downloading packages:" + msgstr "Erreur de téléchargement des paquets :" + +-#: dnf/cli/cli.py:258 ++#: dnf/cli/cli.py:264 + msgid "Transaction failed" + msgstr "La transaction a échoué" + +-#: dnf/cli/cli.py:281 ++#: dnf/cli/cli.py:287 + msgid "" + "Refusing to automatically import keys when running unattended.\n" + "Use \"-y\" to override." + msgstr "" +-"Refus de l’importation automatique des clés lors d’une exécution sans surveillance.\n" ++"Refus de l’importation automatique des clés lors d’une exécution sans " ++"surveillance.\n" + "Utilisez l’option « -y » pour passer outre." + +-#: dnf/cli/cli.py:331 ++#: dnf/cli/cli.py:337 + msgid "Changelogs for {}" + msgstr "Changements pour {}" + +-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511 ++#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517 + msgid "Obsoleting Packages" + msgstr "Passage de paquets en obsolètes" + +-#: dnf/cli/cli.py:393 ++#: dnf/cli/cli.py:399 + msgid "No packages marked for distribution synchronization." + msgstr "Aucun paquet marqué pour la synchronisation de la distribution." + +-#: dnf/cli/cli.py:428 ++#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395 ++#, python-format ++msgid "No package %s available." ++msgstr "Aucun paquet %s n’est disponible." ++ ++#: dnf/cli/cli.py:434 + msgid "No packages marked for downgrade." + msgstr "Aucun paquet n’a été marqué pour passer à une version antérieure." + +-#: dnf/cli/cli.py:479 ++#: dnf/cli/cli.py:485 + msgid "Installed Packages" + msgstr "Paquets installés" + +-#: dnf/cli/cli.py:487 ++#: dnf/cli/cli.py:493 + msgid "Available Packages" + msgstr "Paquets disponibles" + +-#: dnf/cli/cli.py:491 ++#: dnf/cli/cli.py:497 + msgid "Autoremove Packages" + msgstr "Supprime des paquets automatiquement" + +-#: dnf/cli/cli.py:493 ++#: dnf/cli/cli.py:499 + msgid "Extra Packages" + msgstr "Paquets supplémentaires" + +-#: dnf/cli/cli.py:497 ++#: dnf/cli/cli.py:503 + msgid "Available Upgrades" + msgstr "Mises à jour disponibles" + +-#: dnf/cli/cli.py:513 ++#: dnf/cli/cli.py:519 + msgid "Recently Added Packages" + msgstr "Paquets récemment ajoutés" + +-#: dnf/cli/cli.py:518 ++#: dnf/cli/cli.py:523 + msgid "No matching Packages to list" + msgstr "Aucun paquet correspondant à lister" + +-#: dnf/cli/cli.py:599 ++#: dnf/cli/cli.py:604 + msgid "No Matches found" + msgstr "Aucune correspondance trouvée" + +-#: dnf/cli/cli.py:609 +-msgid "No transaction ID given" +-msgstr "Aucun identifiant de transaction n’a été fourni" +- +-#: dnf/cli/cli.py:614 +-msgid "Not found given transaction ID" +-msgstr "L’identifiant de transaction fourni est introuvable" +- +-#: dnf/cli/cli.py:623 +-msgid "Found more than one transaction ID!" +-msgstr "Plus d’un identifiant de transaction ont été trouvés !" +- +-#: dnf/cli/cli.py:640 +-#, python-format +-msgid "Transaction history is incomplete, before %u." +-msgstr "L’historique des transactions est incomplet, avant %u." +- +-#: dnf/cli/cli.py:642 +-#, python-format +-msgid "Transaction history is incomplete, after %u." +-msgstr "L’historique des transactions est incomplet, après %u." +- +-#: dnf/cli/cli.py:689 +-msgid "Undoing transaction {}, from {}" +-msgstr "Révocation de lla transaction {}, de {}" +- +-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237 ++#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237 + #, python-format + msgid "Unknown repo: '%s'" + msgstr "Dépôt inconnu : « %s »" + +-#: dnf/cli/cli.py:783 ++#: dnf/cli/cli.py:685 + #, python-format + msgid "No repository match: %s" + msgstr "Aucun dépôt ne correspond à %s" + +-#: dnf/cli/cli.py:817 ++#: dnf/cli/cli.py:719 + msgid "" +-"This command has to be run with superuser privileges (under the root user on" +-" most systems)." ++"This command has to be run with superuser privileges (under the root user on " ++"most systems)." + msgstr "" + "Cette commande doit être exécutée avec les privilèges super-utilisateur " + "(sous l’utilisateur root sur la plupart des systèmes)." + +-#: dnf/cli/cli.py:847 ++#: dnf/cli/cli.py:749 + #, python-format + msgid "No such command: %s. Please use %s --help" + msgstr "Aucune commande telle que : %s. Veuillez utiliser %s --help" + +-#: dnf/cli/cli.py:850 ++#: dnf/cli/cli.py:752 + #, python-format, python-brace-format + msgid "" + "It could be a {PROG} plugin command, try: \"{prog} install 'dnf-" +@@ -803,7 +786,7 @@ msgstr "" + "Cela est peut-être une commande d’un module supplémentaire de {PROG}, " + "essayez : « {prog} install 'dnf-command(%s)' »" + +-#: dnf/cli/cli.py:854 ++#: dnf/cli/cli.py:756 + #, python-brace-format + msgid "" + "It could be a {prog} plugin command, but loading of plugins is currently " +@@ -812,15 +795,15 @@ msgstr "" + "Cela est peut-être une commande d’un module supplémentaire de {prog}, mais " + "le chargement de modules supplémentaires est actuellement désactivé." + +-#: dnf/cli/cli.py:912 ++#: dnf/cli/cli.py:814 + msgid "" + "--destdir or --downloaddir must be used with --downloadonly or download or " + "system-upgrade command." + msgstr "" +-"--destdir ou --downloaddir doit être utilisé avec la commande --downloadonly" +-" ou download ou system-upgrade command." ++"--destdir ou --downloaddir doit être utilisé avec la commande --downloadonly " ++"ou download ou system-upgrade command." + +-#: dnf/cli/cli.py:918 ++#: dnf/cli/cli.py:820 + msgid "" + "--enable, --set-enabled and --disable, --set-disabled must be used with " + "config-manager command." +@@ -828,7 +811,7 @@ msgstr "" + "--enable, --set-enabled et --disable, --set-disabled doit être utilisé avec " + "la commande config-manager." + +-#: dnf/cli/cli.py:1000 ++#: dnf/cli/cli.py:902 + msgid "" + "Warning: Enforcing GPG signature check globally as per active RPM security " + "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)" +@@ -837,11 +820,11 @@ msgstr "" + "politique de sécurité RPM active (voir « gpgcheck » dans dnf.conf(5) pour " + "savoir comment interpréter ce message)" + +-#: dnf/cli/cli.py:1020 ++#: dnf/cli/cli.py:922 + msgid "Config file \"{}\" does not exist" + msgstr "Le fichier de configuration \"{}\" n’existe pas" + +-#: dnf/cli/cli.py:1040 ++#: dnf/cli/cli.py:942 + msgid "" + "Unable to detect release version (use '--releasever' to specify release " + "version)" +@@ -849,28 +832,28 @@ msgstr "" + "Impossible de détecter le numéro de version (utilisez « --releasever » pour " + "spécifier une version)" + +-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471 ++#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471 + msgid "argument {}: not allowed with argument {}" + msgstr "paramètre {} : non autorisé avec le paramètre {}" + +-#: dnf/cli/cli.py:1134 ++#: dnf/cli/cli.py:1023 + #, python-format + msgid "Command \"%s\" already defined" + msgstr "Commande « %s » déjà définie" + +-#: dnf/cli/cli.py:1154 ++#: dnf/cli/cli.py:1043 + msgid "Excludes in dnf.conf: " + msgstr "Exclut dans dnf.conf : " + +-#: dnf/cli/cli.py:1157 ++#: dnf/cli/cli.py:1046 + msgid "Includes in dnf.conf: " + msgstr "Inclut dans dnf.conf : " + +-#: dnf/cli/cli.py:1160 ++#: dnf/cli/cli.py:1049 + msgid "Excludes in repo " + msgstr "Exclut dans dépôt " + +-#: dnf/cli/cli.py:1163 ++#: dnf/cli/cli.py:1052 + msgid "Includes in repo " + msgstr "Inclut dans dépôt " + +@@ -890,7 +873,8 @@ msgstr "" + #, python-brace-format + msgid "" + "You have enabled checking of packages via GPG keys. This is a good thing.\n" +-"However, you do not have any GPG public keys installed. You need to download\n" ++"However, you do not have any GPG public keys installed. You need to " ++"download\n" + "the keys for packages you wish to install and install them.\n" + "You can do that by running the command:\n" + " rpm --import public.gpg.key\n" +@@ -902,8 +886,10 @@ msgid "" + "\n" + "For more information contact your distribution or package provider." + msgstr "" +-"Vous avez activé la vérification des paquets par clés GPG. C’est une bonne chose.\n" +-"Cependant, vous n’avez aucune clé GPG publique installée. Vous devez télécharger\n" ++"Vous avez activé la vérification des paquets par clés GPG. C’est une bonne " ++"chose.\n" ++"Cependant, vous n’avez aucune clé GPG publique installée. Vous devez " ++"télécharger\n" + "et installer les clés pour les paquets que vous souhaitez installer..\n" + "Vous pouvez le faire en lançant la commande :\n" + "rpm --import public. gpg. key\n" +@@ -913,7 +899,8 @@ msgstr "" + "pour un dépôt dans l’option « gpgkey » dans une section de configuration du\n" + "dépôt et {prog} l’installera pour vous.\n" + "\n" +-"Pour plus de renseignements, contactez votre distribution ou le fournisseur du paquet." ++"Pour plus de renseignements, contactez votre distribution ou le fournisseur " ++"du paquet." + + #: dnf/cli/commands/__init__.py:71 + #, python-format +@@ -924,38 +911,38 @@ msgstr "Problème avec le dépôt : %s" + msgid "display details about a package or group of packages" + msgstr "affiche les détails d’un paquet ou d’un groupe de paquets" + +-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740 ++#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735 + msgid "show all packages (default)" + msgstr "affiche tous les paquets (par défaut)" + +-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743 +-#: dnf/cli/commands/module.py:351 ++#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738 ++#: dnf/cli/commands/module.py:376 + msgid "show only available packages" + msgstr "affiche uniquement les paquets disponibles" + +-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746 ++#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741 + msgid "show only installed packages" + msgstr "affiche uniquement les paquets installés" + +-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749 ++#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744 + msgid "show only extras packages" + msgstr "affiche uniquement les paquets supplémentaires" + + #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183 +-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755 ++#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750 + msgid "show only upgrades packages" + msgstr "affiche uniquement les paquets à mettre à jour" + +-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758 ++#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753 + msgid "show only autoremove packages" + msgstr "affiche uniquement les paquets à suppression automatique" + +-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761 ++#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756 + msgid "show only recently changed packages" + msgstr "affiche uniquement les paquet modifiés récemment" + + #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265 +-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48 ++#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48 + #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44 + #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46 + msgid "PACKAGE" +@@ -993,70 +980,70 @@ msgstr "recherche les mises à jour de paquets disponibles" + msgid "show changelogs before update" + msgstr "affiche les changelogs avant la mise à jour" + +-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414 +-#: dnf/cli/commands/__init__.py:470 ++#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409 ++#: dnf/cli/commands/__init__.py:465 + msgid "No package available." + msgstr "Pas de paquet disponible." + +-#: dnf/cli/commands/__init__.py:376 ++#: dnf/cli/commands/__init__.py:371 + msgid "No packages marked for install." + msgstr "Aucun paquet marqué en vue d’être installé." + +-#: dnf/cli/commands/__init__.py:412 ++#: dnf/cli/commands/__init__.py:407 + msgid "No package installed." + msgstr "Pas de paquet installé." + +-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489 ++#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484 + #: dnf/cli/commands/reinstall.py:91 + #, python-format + msgid " (from %s)" + msgstr " (depuis %s)" + +-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490 ++#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485 + #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105 + #, python-format + msgid "Installed package %s%s not available." + msgstr "Le paquet installé %s%s est indisponible." + +-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576 +-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666 ++#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571 ++#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661 + msgid "No package installed from the repository." + msgstr "Aucun paquet installé depuis le dépôt." + +-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101 ++#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101 + msgid "No packages marked for reinstall." + msgstr "Aucun paquet marqué pour réinstallation." + +-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89 ++#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84 + msgid "No packages marked for upgrade." + msgstr "Aucun paquet marqué pour mise à jour." + +-#: dnf/cli/commands/__init__.py:726 ++#: dnf/cli/commands/__init__.py:721 + msgid "run commands on top of all packages in given repository" + msgstr "exécute des commandes pour chaque paquet d’un dépôt donné" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "REPOID" + msgstr "REPOID" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "Repository ID" + msgstr "ID du dépôt" + +-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48 ++#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48 + #: dnf/cli/commands/updateinfo.py:108 + msgid "Package specification" + msgstr "Caractéristiques de paquet" + +-#: dnf/cli/commands/__init__.py:801 ++#: dnf/cli/commands/__init__.py:796 + msgid "display a helpful usage message" + msgstr "affiche un message d’aide à l’utilisation" + +-#: dnf/cli/commands/__init__.py:805 ++#: dnf/cli/commands/__init__.py:800 + msgid "COMMAND" + msgstr "COMMANDE" + +-#: dnf/cli/commands/__init__.py:806 ++#: dnf/cli/commands/__init__.py:801 + #, python-brace-format + msgid "{prog} command to get help for" + msgstr "{prog} commande pour obtenir de l’aide" +@@ -1231,9 +1218,12 @@ msgstr "" + "En attente de la fin d’exécution du processus ayant l’identifiant (pid) %d." + + #: dnf/cli/commands/deplist.py:32 +-msgid "List package's dependencies and what packages provide them" ++msgid "" ++"[deprecated, use repoquery --deplist] List package's dependencies and what " ++"packages provide them" + msgstr "" +-"Liste les dépendances du paquet et indique quels paquets les fournissent" ++"[obsolète, utilsez repoquery --deplist] Liste les dépendances du paquet et " ++"indique quels paquets les fournissent" + + #: dnf/cli/commands/distrosync.py:32 + msgid "synchronize installed packages to the latest available versions" +@@ -1260,78 +1250,78 @@ msgstr "affiche ou utilise les informations des groupes" + msgid "No group data available for configured repositories." + msgstr "Aucune donnée sur les groupes disponibles pour les dépôts configurés." + +-#: dnf/cli/commands/group.py:129 ++#: dnf/cli/commands/group.py:126 + #, python-format + msgid "Warning: Group %s does not exist." + msgstr "Attention : le groupe %s n’existe pas." + +-#: dnf/cli/commands/group.py:170 ++#: dnf/cli/commands/group.py:167 + msgid "Warning: No groups match:" + msgstr "Attention : aucun groupe ne correspond à :" + +-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193 +-#: dnf/cli/output.py:1226 ++#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190 ++#: dnf/cli/output.py:1139 + msgid "" + msgstr "" + +-#: dnf/cli/commands/group.py:199 ++#: dnf/cli/commands/group.py:196 + msgid "Available Environment Groups:" + msgstr "Groupes d’environnements disponibles :" + +-#: dnf/cli/commands/group.py:201 ++#: dnf/cli/commands/group.py:198 + msgid "Installed Environment Groups:" + msgstr "Groupes d’environnements installés :" + +-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294 ++#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291 + msgid "Installed Groups:" + msgstr "Groupes installés :" + +-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301 ++#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298 + msgid "Installed Language Groups:" + msgstr "Groupes de langues installés :" + +-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308 ++#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305 + msgid "Available Groups:" + msgstr "Groupes disponibles :" + +-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315 ++#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312 + msgid "Available Language Groups:" + msgstr "Groupes de langues disponibles :" + +-#: dnf/cli/commands/group.py:322 ++#: dnf/cli/commands/group.py:319 + msgid "include optional packages from group" + msgstr "inclure les paquets optionnels du groupe" + +-#: dnf/cli/commands/group.py:325 ++#: dnf/cli/commands/group.py:322 + msgid "show also hidden groups" + msgstr "affiche également les groupes cachés" + +-#: dnf/cli/commands/group.py:327 ++#: dnf/cli/commands/group.py:324 + msgid "show only installed groups" + msgstr "affiche seulement les groupes installés" + +-#: dnf/cli/commands/group.py:329 ++#: dnf/cli/commands/group.py:326 + msgid "show only available groups" + msgstr "affiche uniquement les groupes disponibles" + +-#: dnf/cli/commands/group.py:331 ++#: dnf/cli/commands/group.py:328 + msgid "show also ID of groups" + msgstr "affiche également les ID des groupes" + +-#: dnf/cli/commands/group.py:333 ++#: dnf/cli/commands/group.py:330 + msgid "available subcommands: {} (default), {}" + msgstr "sous-commandes disponibles : {} (par défaut), {}" + +-#: dnf/cli/commands/group.py:337 ++#: dnf/cli/commands/group.py:334 + msgid "argument for group subcommand" + msgstr "paramètre pour la sous-commande group" + +-#: dnf/cli/commands/group.py:346 ++#: dnf/cli/commands/group.py:343 + #, python-format + msgid "Invalid groups sub-command, use: %s." + msgstr "Sous-commande de groupes invalide, utilisez : %s." + +-#: dnf/cli/commands/group.py:403 ++#: dnf/cli/commands/group.py:398 + msgid "Unable to find a mandatory group package." + msgstr "Impossible de trouver un paquet obligatoire du groupe." + +@@ -1347,8 +1337,8 @@ msgstr "" + + #: dnf/cli/commands/history.py:68 + msgid "" +-"For the replay command, don't check for installed packages matching those in" +-" transaction" ++"For the replay command, don't check for installed packages matching those in " ++"transaction" + msgstr "" + "Pour la commande replay, ne vérifie pas si les paquets installés " + "correspondent à ceux en transaction" +@@ -1363,8 +1353,8 @@ msgstr "" + + #: dnf/cli/commands/history.py:74 + msgid "" +-"For the replay command, skip packages that are not available or have missing" +-" dependencies" ++"For the replay command, skip packages that are not available or have missing " ++"dependencies" + msgstr "" + "Pour la commande replay, saute les paquets qui ne sont pas disponibles ou " + "qui ont des dépendances manquantes" +@@ -1385,25 +1375,25 @@ msgstr "Pas de transaction ou de nom de fichier fourni." + msgid "More than one argument given as transaction file name." + msgstr "Plus d’un argument donné comme nom de fichier de transaction." + +-#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:126 ++#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130 + msgid "No transaction ID or package name given." + msgstr "Pas d’identifiant de transaction ou de nom de paquet fourni." + +-#: dnf/cli/commands/history.py:138 ++#: dnf/cli/commands/history.py:142 + #, python-format + msgid "You don't have access to the history DB: %s" + msgstr "Vous n’avez pas accès à la base de données de l’historique : %s" + +-#: dnf/cli/commands/history.py:147 ++#: dnf/cli/commands/history.py:151 + #, python-format + msgid "" +-"Cannot undo transaction %s, doing so would result in an inconsistent package" +-" database." ++"Cannot undo transaction %s, doing so would result in an inconsistent package " ++"database." + msgstr "" + "Impossible de défaire la transaction %s ; cela aboutirait à une base de " + "données des paquets incohérente." + +-#: dnf/cli/commands/history.py:152 ++#: dnf/cli/commands/history.py:156 + #, python-format + msgid "" + "Cannot rollback transaction %s, doing so would result in an inconsistent " +@@ -1412,15 +1402,43 @@ msgstr "" + "Impossible de défaire la transaction %s ; cela aboutirait à une base de " + "données des paquets incohérente." + +-#: dnf/cli/commands/history.py:222 ++#: dnf/cli/commands/history.py:175 ++msgid "No transaction ID given" ++msgstr "Aucun identifiant de transaction n’a été fourni" ++ ++#: dnf/cli/commands/history.py:179 ++#, python-brace-format ++msgid "Transaction ID \"{0}\" not found." ++msgstr "ID de transaction « {0} » non trouvé." ++ ++#: dnf/cli/commands/history.py:185 ++msgid "Found more than one transaction ID!" ++msgstr "Plus d’un identifiant de transaction ont été trouvés !" ++ ++#: dnf/cli/commands/history.py:203 ++#, python-format ++msgid "Transaction history is incomplete, before %u." ++msgstr "L’historique des transactions est incomplet, avant %u." ++ ++#: dnf/cli/commands/history.py:205 ++#, python-format ++msgid "Transaction history is incomplete, after %u." ++msgstr "L’historique des transactions est incomplet, après %u." ++ ++#: dnf/cli/commands/history.py:256 ++msgid "No packages to list" ++msgstr "Aucun paquet à lister" ++ ++#: dnf/cli/commands/history.py:279 + msgid "" + "Invalid transaction ID range definition '{}'.\n" + "Use '..'." + msgstr "" +-"La définition de la plage d’identifiants de transaction est invalide « {} ».\n" ++"La définition de la plage d’identifiants de transaction est invalide « {} " ++"».\n" + "Utilisez « .. »." + +-#: dnf/cli/commands/history.py:226 ++#: dnf/cli/commands/history.py:283 + msgid "" + "Can't convert '{}' to transaction ID.\n" + "Use '', 'last', 'last-'." +@@ -1428,36 +1446,30 @@ msgstr "" + "Impossible de convertir « {} » à ID transaction.\n" + "Utiliser « », « last », « last- »." + +-#: dnf/cli/commands/history.py:255 ++#: dnf/cli/commands/history.py:312 + msgid "No transaction which manipulates package '{}' was found." + msgstr "Aucune transaction manipulant le paquet « {} » n’a été trouvée." + +-#: dnf/cli/commands/history.py:305 +-#, python-brace-format +-msgid "Transaction ID \"{id}\" not found." +-msgstr "ID de Transaction « {id} » non trouvé." +- +-#: dnf/cli/commands/history.py:313 ++#: dnf/cli/commands/history.py:357 + msgid "{} exists, overwrite?" + msgstr "{} existe, l’écraser ?" + +-#: dnf/cli/commands/history.py:316 ++#: dnf/cli/commands/history.py:360 + msgid "Not overwriting {}, exiting." + msgstr "{} non écrasé, sortie." + +-#: dnf/cli/commands/history.py:323 ++#: dnf/cli/commands/history.py:367 + msgid "Transaction saved to {}." + msgstr "Transaction enregistrée vers {}." + +-#: dnf/cli/commands/history.py:326 ++#: dnf/cli/commands/history.py:370 + msgid "Error storing transaction: {}" + msgstr "Erreur lors du stockage de la transaction : {}" + +-#: dnf/cli/commands/history.py:350 +-msgid "" +-"Warning, the following problems occurred while replaying the transaction:" ++#: dnf/cli/commands/history.py:386 ++msgid "Warning, the following problems occurred while running a transaction:" + msgstr "" +-"Attention, les problèmes suivants sont survenus lors de la relecture de la " ++"Attention, les problèmes suivants sont survenus lors de l'exécution d’une " + "transaction :" + + #: dnf/cli/commands/install.py:47 +@@ -1477,7 +1489,7 @@ msgstr "Impossible de trouver une correspondance" + msgid "Not a valid rpm file path: %s" + msgstr "Chemin du fichier RPM invalide : %s" + +-#: dnf/cli/commands/install.py:167 ++#: dnf/cli/commands/install.py:166 + #, python-brace-format + msgid "There are following alternatives for \"{0}\": {1}" + msgstr "Il existe les alternatives suivantes pour \"{0}\" : {1}" +@@ -1493,8 +1505,7 @@ msgstr "Création des fichiers de cache pour tous les fichiers de métadonnées. + #: dnf/cli/commands/mark.py:39 + msgid "mark or unmark installed packages as installed by user." + msgstr "" +-"marquer ou démarquer les paquets installés comme installés par " +-"l’utilisateur." ++"marquer ou démarquer les paquets installés comme installés par l’utilisateur." + + #: dnf/cli/commands/mark.py:44 + msgid "" +@@ -1522,7 +1533,7 @@ msgid "%s marked as group installed." + msgstr "%s marqué comme étant installé par un groupe." + + #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129 +-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279 ++#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282 + msgid "Error:" + msgstr "Erreur :" + +@@ -1531,91 +1542,95 @@ msgstr "Erreur :" + msgid "Package %s is not installed." + msgstr "Le paquet %s n’est pas installé." + +-#: dnf/cli/commands/module.py:51 ++#: dnf/cli/commands/module.py:54 + msgid "" +-"Only module name, stream, architecture or profile is used. Ignoring unneeded" +-" information in argument: '{}'" ++"Only module name, stream, architecture or profile is used. Ignoring unneeded " ++"information in argument: '{}'" + msgstr "" +-"Seul le nom, le flux, l’architecture ou le profil du module est utilisé. Les" +-" paramètres inutiles ont été ignorés dans le paramètre : « {} »" ++"Seul le nom, le flux, l’architecture ou le profil du module est utilisé. Les " ++"paramètres inutiles ont été ignorés dans le paramètre : « {} »" + +-#: dnf/cli/commands/module.py:77 ++#: dnf/cli/commands/module.py:80 + msgid "list all module streams, profiles and states" + msgstr "dresser la liste de tous les flux, profils et états des modules" + +-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128 ++#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131 + msgid "No matching Modules to list" + msgstr "Aucun module correspondant à lister" + +-#: dnf/cli/commands/module.py:111 ++#: dnf/cli/commands/module.py:114 + msgid "print detailed information about a module" + msgstr "afficher les informations détaillées à propos d’un module" + +-#: dnf/cli/commands/module.py:133 ++#: dnf/cli/commands/module.py:136 + msgid "enable a module stream" + msgstr "activer un flux de modules" + +-#: dnf/cli/commands/module.py:157 ++#: dnf/cli/commands/module.py:160 + msgid "disable a module with all its streams" + msgstr "désactiver un module avec tous ses flux" + +-#: dnf/cli/commands/module.py:181 ++#: dnf/cli/commands/module.py:184 + msgid "reset a module" + msgstr "réinitialiser un module" + +-#: dnf/cli/commands/module.py:202 ++#: dnf/cli/commands/module.py:205 + msgid "install a module profile including its packages" + msgstr "installer un profil de module, y compris ses paquets" + +-#: dnf/cli/commands/module.py:223 ++#: dnf/cli/commands/module.py:226 + msgid "update packages associated with an active stream" + msgstr "mettre à jour les paquets associés à un flux actif" + +-#: dnf/cli/commands/module.py:240 ++#: dnf/cli/commands/module.py:243 + msgid "remove installed module profiles and their packages" + msgstr "supprimer les profils de modules installés et leurs paquets" + +-#: dnf/cli/commands/module.py:264 ++#: dnf/cli/commands/module.py:267 + msgid "Package {} belongs to multiple modules, skipping" + msgstr "Le paquet {} appartient à de multiples modules, ignorer" + +-#: dnf/cli/commands/module.py:277 ++#: dnf/cli/commands/module.py:280 ++msgid "switch a module to a stream and distrosync rpm packages" ++msgstr "passer un module à un flux et à des paquets de rpm de distrosync" ++ ++#: dnf/cli/commands/module.py:302 + msgid "list modular packages" + msgstr "dresser une liste des paquets modulaires" + +-#: dnf/cli/commands/module.py:292 ++#: dnf/cli/commands/module.py:317 + msgid "list packages belonging to a module" + msgstr "dresser une liste des paquets appartenant à un module" + +-#: dnf/cli/commands/module.py:327 ++#: dnf/cli/commands/module.py:352 + msgid "Interact with Modules." + msgstr "Interagit avec les modules." + +-#: dnf/cli/commands/module.py:340 ++#: dnf/cli/commands/module.py:365 + msgid "show only enabled modules" + msgstr "n’affiche que les modules activés" + +-#: dnf/cli/commands/module.py:343 ++#: dnf/cli/commands/module.py:368 + msgid "show only disabled modules" + msgstr "n’affiche que les modules désactivés" + +-#: dnf/cli/commands/module.py:346 ++#: dnf/cli/commands/module.py:371 + msgid "show only installed modules or packages" + msgstr "affiche uniquement les paquets ou modules installés" + +-#: dnf/cli/commands/module.py:349 ++#: dnf/cli/commands/module.py:374 + msgid "show profile content" + msgstr "affiche le contenu du profil" + +-#: dnf/cli/commands/module.py:354 ++#: dnf/cli/commands/module.py:379 + msgid "remove all modular packages" + msgstr "Supprimer les paquets modulaires" + +-#: dnf/cli/commands/module.py:364 ++#: dnf/cli/commands/module.py:389 + msgid "Module specification" + msgstr "Caractéristique de module" + +-#: dnf/cli/commands/module.py:386 ++#: dnf/cli/commands/module.py:411 + msgid "{} {} {}: too few arguments" + msgstr "{} {} {} : trop peu de paramètres" + +@@ -1868,8 +1883,8 @@ msgstr "" + #: dnf/cli/commands/repoquery.py:162 + msgid "check dependencies exactly as given, opposite of --alldeps" + msgstr "" +-"vérifie les dépendances exactement telles qu’indiquées, le contraire de " +-"--alldeps" ++"vérifie les dépendances exactement telles qu’indiquées, le contraire de --" ++"alldeps" + + #: dnf/cli/commands/repoquery.py:164 + msgid "" +@@ -1927,8 +1942,8 @@ msgstr "affiche les changelogs du paquet" + #: dnf/cli/commands/repoquery.py:194 + #, python-format, python-brace-format + msgid "" +-"display format for listing packages: \"%%{name} %%{version} ...\", use " +-"--querytags to view full tag list" ++"display format for listing packages: \"%%{name} %%{version} ...\", use --" ++"querytags to view full tag list" + msgstr "" + "format d'affichage pour la liste des paquets : « %%{name} %%{version}… », " + "utilisez --querytags pour voir la liste complète des étiquettes" +@@ -2076,23 +2091,23 @@ msgstr "la clé à chercher" + + #: dnf/cli/commands/repoquery.py:295 + msgid "" +-"Option '--resolve' has to be used together with one of the '--conflicts', '" +-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--" ++"Option '--resolve' has to be used together with one of the '--conflicts', '--" ++"depends', '--enhances', '--provides', '--recommends', '--requires', '--" + "requires-pre', '--suggests' or '--supplements' options" + msgstr "" +-"Option « --resolve » doit être utilisée en conjonction avec « --conflicts »," +-" « --depends », « --enhances », « --provides », « --recommends », « " +-"--requires », « --requires-pre », « --suggests » ou « --supplements" ++"Option « --resolve » doit être utilisée en conjonction avec « --conflicts », " ++"« --depends », « --enhances », « --provides », « --recommends », « --" ++"requires », « --requires-pre », « --suggests » ou « --supplements" + + #: dnf/cli/commands/repoquery.py:305 + msgid "" + "Option '--recursive' has to be used with '--whatrequires ' (optionally " +-"with '--alldeps', but not with '--exactdeps'), or with '--requires " +-"--resolve'" ++"with '--alldeps', but not with '--exactdeps'), or with '--requires --" ++"resolve'" + msgstr "" +-"Option « --recursive » doit être utilisée avec « --whatrequires » " +-"(optionnellement avec « --alldeps », mais pas avec « --exactdeps »), ou avec" +-" « --requires --resolve »" ++"Option « --recursive » doit être utilisée avec « --whatrequires " ++"» (optionnellement avec « --alldeps », mais pas avec « --exactdeps »), ou " ++"avec « --requires --resolve »" + + #: dnf/cli/commands/repoquery.py:312 + msgid "argument {} requires --whatrequires or --whatdepends option" +@@ -2106,13 +2121,17 @@ msgstr "Le paquet {} ne contient aucun fichier" + #, python-brace-format + msgid "" + "No valid switch specified\n" +-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--" ++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--" ++"tree]\n" + "\n" + "description:\n" + " For the given packages print a tree of thepackages." + msgstr "" + "Aucune option valide spécifiée\n" +-"utilisation : {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"utilisation : {prog} repoquery [--conflicts|--enhances|--obsoletes|--" ++"provides|--recommends|--requires|--suggest|--supplements|--whatrequires] " ++"[key] [--tree]\n" + "\n" + "description :\n" + " Afficher une arborescence des paquets pour le paquet donné." +@@ -2133,27 +2152,26 @@ msgstr "MOTCLEF" + msgid "Keyword to search for" + msgstr "Mot-clef à chercher" + +-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506 ++#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460 + msgctxt "long" + msgid "Name" + msgstr "Nom" + +-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559 ++#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513 + msgctxt "long" + msgid "Summary" + msgstr "Résumé" + +-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569 ++#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523 + msgctxt "long" + msgid "Description" + msgstr "Description" + +-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562 ++#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516 + msgid "URL" + msgstr "URL" + +-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary +-#. & URL) ++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL) + #: dnf/cli/commands/search.py:76 + msgid " & " + msgstr " & " +@@ -2287,20 +2305,21 @@ msgstr "" + "help affiche l’aide\n" + "repository (ou repo) active, désactive ou liste les dépôts\n" + "resolvedep résout l’ensemble de transactions\n" +-"transaction (ou ts) liste, réinitialise ou exécute l’ensemble de transactions\n" ++"transaction (ou ts) liste, réinitialise ou exécute l’ensemble de " ++"transactions\n" + "run résoud et exécute l’ensemble de transactions\n" + "exit (ou quit) quitte l’interpréteur de commandes" + +-#: dnf/cli/commands/shell.py:259 ++#: dnf/cli/commands/shell.py:262 + #, python-format + msgid "Error: Cannot open %s for reading" + msgstr "Erreur : %s n’a pu être ouvert pour lecture" + +-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187 ++#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187 + msgid "Complete!" + msgstr "Terminé !" + +-#: dnf/cli/commands/shell.py:291 ++#: dnf/cli/commands/shell.py:294 + msgid "Leaving Shell" + msgstr "Abandon de l’interpréteur de commandes" + +@@ -2337,19 +2356,19 @@ msgstr "nouveau paquet" + + #: dnf/cli/commands/updateinfo.py:50 + msgid "Critical/Sec." +-msgstr "Sécurité/Niveau critique" ++msgstr "Sécurité/Niveau critique." + + #: dnf/cli/commands/updateinfo.py:51 + msgid "Important/Sec." +-msgstr "Sécurité/Niveau important" ++msgstr "Sécurité/Niveau important." + + #: dnf/cli/commands/updateinfo.py:52 + msgid "Moderate/Sec." +-msgstr "Sécurité/niveau modéré" ++msgstr "Sécurité/niveau modéré." + + #: dnf/cli/commands/updateinfo.py:53 + msgid "Low/Sec." +-msgstr "Sécurité/Niveau bas" ++msgstr "Sécurité/Niveau bas." + + #: dnf/cli/commands/updateinfo.py:63 + msgid "display advisories about packages" +@@ -2362,8 +2381,7 @@ msgstr "alertes pour les nouvelles versions de paquets installés (par défaut)" + #: dnf/cli/commands/updateinfo.py:80 + msgid "advisories about equal and older versions of installed packages" + msgstr "" +-"alertes pour des versions équivalentes ou plus anciennes de paquets " +-"installés" ++"alertes pour des versions équivalentes ou plus anciennes de paquets installés" + + #: dnf/cli/commands/updateinfo.py:83 + msgid "" +@@ -2459,7 +2477,7 @@ msgstr "autre(s) alertes)" + + #: dnf/cli/commands/updateinfo.py:316 + msgid "Unknown/Sec." +-msgstr "Sécurité/Niveau inconnu" ++msgstr "Sécurité/Niveau inconnu." + + #: dnf/cli/commands/updateinfo.py:357 + msgid "Bugs" +@@ -2497,8 +2515,8 @@ msgstr "Criticité" + msgid "Files" + msgstr "Fichiers" + +-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499 +-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 ++#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1656 dnf/util.py:617 + msgid "Installed" + msgstr "Installé" + +@@ -2533,8 +2551,8 @@ msgstr "Terminé." + #: dnf/cli/main.py:116 + msgid "No read/execute access in current directory, moving to /" + msgstr "" +-"Pas d’accès en lecture/exécution sur le répertoire courant, déplacement dans" +-" /" ++"Pas d’accès en lecture/exécution sur le répertoire courant, déplacement " ++"dans /" + + #: dnf/cli/main.py:135 + msgid "try to add '{}' to command line to replace conflicting packages" +@@ -2677,8 +2695,7 @@ msgstr "niveau de déboguage pour la sortie" + + #: dnf/cli/option_parser.py:236 + msgid "dumps detailed solving results into files" +-msgstr "" +-"détaille les résultats de résolution des dépendances dans des fichiers" ++msgstr "détaille les résultats de résolution des dépendances dans des fichiers" + + #: dnf/cli/option_parser.py:240 + msgid "show duplicates, in repos, in list/search commands" +@@ -2695,8 +2712,8 @@ msgid "" + "capabilities that the package obsoletes for info, list and repoquery" + msgstr "" + "active la mécanique de traitement des paquets obsolètes de {prog} pour les " +-"mises à jour ou affiche les fonctionnalités qu’un paquet rend obsolètes pour" +-" les commandes « info », « list » et « repoquery »" ++"mises à jour ou affiche les fonctionnalités qu’un paquet rend obsolètes pour " ++"les commandes « info », « list » et « repoquery »" + + #: dnf/cli/option_parser.py:251 + msgid "debugging output level for rpm" +@@ -2720,8 +2737,8 @@ msgstr "" + + #: dnf/cli/option_parser.py:266 + msgid "" +-"Disable repositories. List option. Supports globs, can be specified multiple" +-" times." ++"Disable repositories. List option. Supports globs, can be specified multiple " ++"times." + msgstr "" + "Désactive les dépôts. Option de liste. Prend en charge les globs, peut être " + "renseigné plusieurs fois." +@@ -2731,8 +2748,8 @@ msgid "" + "enable just specific repositories by an id or a glob, can be specified " + "multiple times" + msgstr "" +-"active seulement des dépôts spécifiques par id ou par le caractère générique" +-" (*), peut être spécifié plusieurs fois" ++"active seulement des dépôts spécifiques par id ou par le caractère générique " ++"(*), peut être spécifié plusieurs fois" + + #: dnf/cli/option_parser.py:275 + msgid "enable repos with config-manager command (automatically saves)" +@@ -2827,8 +2844,8 @@ msgstr "" + #: dnf/cli/option_parser.py:339 + msgid "Include packages needed to fix the given BZ, in updates" + msgstr "" +-"Inclut dans les mises à jour les paquets nécessaires pour résoudre le ticket" +-" BugZilla cité" ++"Inclut dans les mises à jour les paquets nécessaires pour résoudre le ticket " ++"BugZilla cité" + + #: dnf/cli/option_parser.py:342 + msgid "Include packages needed to fix the given CVE, in updates" +@@ -2862,13 +2879,13 @@ msgstr "Impossible d’encoder l’argument « %s » : %s" + #. Translators: This is abbreviated 'Name'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:505 ++#: dnf/cli/output.py:459 + msgctxt "short" + msgid "Name" + msgstr "Nom" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:511 ++#: dnf/cli/output.py:465 + msgid "Epoch" + msgstr "Époque" + +@@ -2876,38 +2893,38 @@ msgstr "Époque" + #. use the full (unabbreviated) term 'Version' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:512 dnf/cli/output.py:1335 ++#: dnf/cli/output.py:466 dnf/cli/output.py:1248 + msgctxt "short" + msgid "Version" + msgstr "Version" + + #. Translators: This is the full (unabbreviated) term 'Version'. +-#: dnf/cli/output.py:513 dnf/cli/output.py:1337 ++#: dnf/cli/output.py:467 dnf/cli/output.py:1250 + msgctxt "long" + msgid "Version" + msgstr "Version" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:516 ++#: dnf/cli/output.py:470 + msgid "Release" + msgstr "Publication" + + #. Translators: This is abbreviated 'Architecture', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:517 dnf/cli/output.py:1326 ++#: dnf/cli/output.py:471 dnf/cli/output.py:1239 + msgctxt "short" + msgid "Arch" + msgstr "Architecture" + + #. Translators: This is the full word 'Architecture', used when + #. we have enough space. +-#: dnf/cli/output.py:518 dnf/cli/output.py:1329 ++#: dnf/cli/output.py:472 dnf/cli/output.py:1242 + msgctxt "long" + msgid "Architecture" + msgstr "Architecture" + + #. Translators: This is the full (unabbreviated) term 'Size'. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1352 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1265 + msgctxt "long" + msgid "Size" + msgstr "Taille" +@@ -2916,32 +2933,32 @@ msgstr "Taille" + #. not be longer than 5 characters. If the term 'Size' in your + #. language is not longer than 5 characters then you can use it + #. unabbreviated. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1350 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1263 + msgctxt "short" + msgid "Size" + msgstr "Taille" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:524 ++#: dnf/cli/output.py:478 + msgid "Source" + msgstr "Source" + + #. Translators: This is abbreviated 'Repository', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:525 dnf/cli/output.py:1341 ++#: dnf/cli/output.py:479 dnf/cli/output.py:1254 + msgctxt "short" + msgid "Repo" + msgstr "Dépôt" + + #. Translators: This is the full word 'Repository', used when + #. we have enough space. +-#: dnf/cli/output.py:526 dnf/cli/output.py:1344 ++#: dnf/cli/output.py:480 dnf/cli/output.py:1257 + msgctxt "long" + msgid "Repository" + msgstr "Dépôt" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:533 ++#: dnf/cli/output.py:487 + msgid "From repo" + msgstr "Depuis le dépôt" + +@@ -2949,316 +2966,311 @@ msgstr "Depuis le dépôt" + #. print(_("Committer : %s") % ucd(pkg.committer)) + #. print(_("Committime : %s") % time.ctime(pkg.committime)) + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:539 ++#: dnf/cli/output.py:493 + msgid "Packager" + msgstr "Empaqueteur" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:541 ++#: dnf/cli/output.py:495 + msgid "Buildtime" + msgstr "Date de compilation" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:545 ++#: dnf/cli/output.py:499 + msgid "Install time" + msgstr "Date d’installation" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:554 ++#: dnf/cli/output.py:508 + msgid "Installed by" + msgstr "Installé par" + + #. Translators: This is abbreviated 'Summary'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:558 ++#: dnf/cli/output.py:512 + msgctxt "short" + msgid "Summary" + msgstr "Résumé" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:564 ++#: dnf/cli/output.py:518 + msgid "License" + msgstr "Licence" + + #. Translators: This is abbreviated 'Description'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:568 ++#: dnf/cli/output.py:522 + msgctxt "short" + msgid "Description" + msgstr "Description" + +-#: dnf/cli/output.py:695 +-msgid "No packages to list" +-msgstr "Aucun paquet à lister" +- +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "y" + msgstr "o" + +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "yes" + msgstr "oui" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "n" + msgstr "n" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "no" + msgstr "non" + +-#: dnf/cli/output.py:711 ++#: dnf/cli/output.py:655 + msgid "Is this ok [y/N]: " + msgstr "Voulez-vous continuer ? [o/N] : " + +-#: dnf/cli/output.py:715 ++#: dnf/cli/output.py:659 + msgid "Is this ok [Y/n]: " + msgstr "Voulez-vous continuer ? [O/n] : " + +-#: dnf/cli/output.py:795 ++#: dnf/cli/output.py:739 + #, python-format + msgid "Group: %s" + msgstr "Groupe : %s" + +-#: dnf/cli/output.py:799 ++#: dnf/cli/output.py:743 + #, python-format + msgid " Group-Id: %s" + msgstr " Identifiant du groupe : %s" + +-#: dnf/cli/output.py:801 dnf/cli/output.py:840 ++#: dnf/cli/output.py:745 dnf/cli/output.py:784 + #, python-format + msgid " Description: %s" + msgstr " Description : %s" + +-#: dnf/cli/output.py:803 ++#: dnf/cli/output.py:747 + #, python-format + msgid " Language: %s" + msgstr " Langue : %s" + +-#: dnf/cli/output.py:806 ++#: dnf/cli/output.py:750 + msgid " Mandatory Packages:" + msgstr " Paquets obligatoires :" + +-#: dnf/cli/output.py:807 ++#: dnf/cli/output.py:751 + msgid " Default Packages:" + msgstr " Paquets par défaut :" + +-#: dnf/cli/output.py:808 ++#: dnf/cli/output.py:752 + msgid " Optional Packages:" + msgstr " Paquets optionnels :" + +-#: dnf/cli/output.py:809 ++#: dnf/cli/output.py:753 + msgid " Conditional Packages:" + msgstr " Paquets conditionnels :" + +-#: dnf/cli/output.py:834 ++#: dnf/cli/output.py:778 + #, python-format + msgid "Environment Group: %s" + msgstr "Groupe d’environnement : %s" + +-#: dnf/cli/output.py:837 ++#: dnf/cli/output.py:781 + #, python-format + msgid " Environment-Id: %s" + msgstr " Identifiant d’environnement : %s" + +-#: dnf/cli/output.py:843 ++#: dnf/cli/output.py:787 + msgid " Mandatory Groups:" + msgstr " Groupes obligatoires :" + +-#: dnf/cli/output.py:844 ++#: dnf/cli/output.py:788 + msgid " Optional Groups:" + msgstr " Groupes optionnels :" + +-#: dnf/cli/output.py:865 ++#: dnf/cli/output.py:809 + msgid "Matched from:" + msgstr "Correspondances trouvées dans  :" + +-#: dnf/cli/output.py:879 ++#: dnf/cli/output.py:823 + #, python-format + msgid "Filename : %s" + msgstr "Nom de fichier : %s" + +-#: dnf/cli/output.py:904 ++#: dnf/cli/output.py:848 + #, python-format + msgid "Repo : %s" + msgstr "Dépôt   : %s" + +-#: dnf/cli/output.py:913 ++#: dnf/cli/output.py:857 + msgid "Description : " + msgstr "Description  : " + +-#: dnf/cli/output.py:917 ++#: dnf/cli/output.py:861 + #, python-format + msgid "URL : %s" + msgstr "URL : %s" + +-#: dnf/cli/output.py:921 ++#: dnf/cli/output.py:865 + #, python-format + msgid "License : %s" + msgstr "Licence  : %s" + +-#: dnf/cli/output.py:927 ++#: dnf/cli/output.py:871 + #, python-format + msgid "Provide : %s" +-msgstr "Provide : %s" ++msgstr "Fournir : %s" + +-#: dnf/cli/output.py:947 ++#: dnf/cli/output.py:891 + #, python-format + msgid "Other : %s" + msgstr "Autre : %s" + +-#: dnf/cli/output.py:996 ++#: dnf/cli/output.py:940 + msgid "There was an error calculating total download size" + msgstr "" + "Une erreur est survenue pendant le calcul de la taille totale des " + "téléchargements" + +-#: dnf/cli/output.py:1002 ++#: dnf/cli/output.py:946 + #, python-format + msgid "Total size: %s" + msgstr "Taille totale  : %s" + +-#: dnf/cli/output.py:1005 ++#: dnf/cli/output.py:949 + #, python-format + msgid "Total download size: %s" + msgstr "Taille totale des téléchargements : %s" + +-#: dnf/cli/output.py:1008 ++#: dnf/cli/output.py:952 + #, python-format + msgid "Installed size: %s" + msgstr "Taille des paquets installés : %s" + +-#: dnf/cli/output.py:1026 ++#: dnf/cli/output.py:970 + msgid "There was an error calculating installed size" + msgstr "" +-"Une erreur est survenue pendant le calcul de la taille des paquets " +-"installées" ++"Une erreur est survenue pendant le calcul de la taille des paquets installées" + +-#: dnf/cli/output.py:1030 ++#: dnf/cli/output.py:974 + #, python-format + msgid "Freed space: %s" + msgstr "Espace libéré : %s" + +-#: dnf/cli/output.py:1039 ++#: dnf/cli/output.py:983 + msgid "Marking packages as installed by the group:" + msgstr "Marquage des paquets installés par le groupe :" + +-#: dnf/cli/output.py:1046 ++#: dnf/cli/output.py:990 + msgid "Marking packages as removed by the group:" + msgstr "Marquage des paquets supprimés par le groupe :" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Group" + msgstr "Groupe" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Packages" + msgstr "Paquets" + +-#: dnf/cli/output.py:1133 ++#: dnf/cli/output.py:1046 + msgid "Installing group/module packages" + msgstr "Installation des paquets du groupe/module" + +-#: dnf/cli/output.py:1134 ++#: dnf/cli/output.py:1047 + msgid "Installing group packages" + msgstr "Installation du groupe de paquets" + + #. TRANSLATORS: This is for a list of packages to be installed. +-#: dnf/cli/output.py:1138 ++#: dnf/cli/output.py:1051 + msgctxt "summary" + msgid "Installing" + msgstr "Installation" + + #. TRANSLATORS: This is for a list of packages to be upgraded. +-#: dnf/cli/output.py:1140 ++#: dnf/cli/output.py:1053 + msgctxt "summary" + msgid "Upgrading" + msgstr "Mise à jour" + + #. TRANSLATORS: This is for a list of packages to be reinstalled. +-#: dnf/cli/output.py:1142 ++#: dnf/cli/output.py:1055 + msgctxt "summary" + msgid "Reinstalling" + msgstr "Réinstallation" + +-#: dnf/cli/output.py:1144 ++#: dnf/cli/output.py:1057 + msgid "Installing dependencies" + msgstr "Installation des dépendances" + +-#: dnf/cli/output.py:1145 ++#: dnf/cli/output.py:1058 + msgid "Installing weak dependencies" + msgstr "Installation des dépendances faibles" + + #. TRANSLATORS: This is for a list of packages to be removed. +-#: dnf/cli/output.py:1147 ++#: dnf/cli/output.py:1060 + msgid "Removing" + msgstr "Suppression" + +-#: dnf/cli/output.py:1148 ++#: dnf/cli/output.py:1061 + msgid "Removing dependent packages" + msgstr "Supprimer des paquets dépendants" + +-#: dnf/cli/output.py:1149 ++#: dnf/cli/output.py:1062 + msgid "Removing unused dependencies" + msgstr "Suppression des dépendances inutilisées" + + #. TRANSLATORS: This is for a list of packages to be downgraded. +-#: dnf/cli/output.py:1151 ++#: dnf/cli/output.py:1064 + msgctxt "summary" + msgid "Downgrading" + msgstr "Rétrogradation" + +-#: dnf/cli/output.py:1176 ++#: dnf/cli/output.py:1089 + msgid "Installing module profiles" + msgstr "Installation des profils de module" + +-#: dnf/cli/output.py:1185 ++#: dnf/cli/output.py:1098 + msgid "Disabling module profiles" + msgstr "Désactivation des profils de module" + +-#: dnf/cli/output.py:1194 ++#: dnf/cli/output.py:1107 + msgid "Enabling module streams" + msgstr "Activation des flux de modules" + +-#: dnf/cli/output.py:1202 ++#: dnf/cli/output.py:1115 + msgid "Switching module streams" + msgstr "Basculement des flux de modules" + +-#: dnf/cli/output.py:1210 ++#: dnf/cli/output.py:1123 + msgid "Disabling modules" + msgstr "Désactivation des modules" + +-#: dnf/cli/output.py:1218 ++#: dnf/cli/output.py:1131 + msgid "Resetting modules" + msgstr "Réinitialisation des modules" + +-#: dnf/cli/output.py:1230 ++#: dnf/cli/output.py:1143 + msgid "Installing Environment Groups" + msgstr "Installation des groupes d’environnement" + +-#: dnf/cli/output.py:1237 ++#: dnf/cli/output.py:1150 + msgid "Upgrading Environment Groups" + msgstr "Mise à niveau des groupes d’environnement" + +-#: dnf/cli/output.py:1244 ++#: dnf/cli/output.py:1157 + msgid "Removing Environment Groups" + msgstr "Suppression des groupes d’environnement" + +-#: dnf/cli/output.py:1251 ++#: dnf/cli/output.py:1164 + msgid "Installing Groups" + msgstr "Installation des groupes" + +-#: dnf/cli/output.py:1258 ++#: dnf/cli/output.py:1171 + msgid "Upgrading Groups" + msgstr "Mise à niveau des groupes" + +-#: dnf/cli/output.py:1265 ++#: dnf/cli/output.py:1178 + msgid "Removing Groups" + msgstr "Suppression des groupes" + +-#: dnf/cli/output.py:1281 ++#: dnf/cli/output.py:1194 + #, python-format + msgid "" + "Skipping packages with conflicts:\n" +@@ -3267,12 +3279,12 @@ msgstr "" + "Ignorer les paquets en conflit :\n" + "(ajouter « %s » à la ligne de commande pour forcer leur mise à niveau)" + +-#: dnf/cli/output.py:1291 ++#: dnf/cli/output.py:1204 + #, python-format + msgid "Skipping packages with broken dependencies%s" + msgstr "Ignorer les paquets ayant des dépendances cassées %s" + +-#: dnf/cli/output.py:1295 ++#: dnf/cli/output.py:1208 + msgid " or part of a group" + msgstr " ou qui fait parti d’un groupe" + +@@ -3280,22 +3292,22 @@ msgstr " ou qui fait parti d’un groupe" + #. use the full (unabbreviated) term 'Package' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:1320 ++#: dnf/cli/output.py:1233 + msgctxt "short" + msgid "Package" + msgstr "Paquet" + + #. Translators: This is the full (unabbreviated) term 'Package'. +-#: dnf/cli/output.py:1322 ++#: dnf/cli/output.py:1235 + msgctxt "long" + msgid "Package" + msgstr "Paquet" + +-#: dnf/cli/output.py:1371 ++#: dnf/cli/output.py:1284 + msgid "replacing" + msgstr "remplacement" + +-#: dnf/cli/output.py:1378 ++#: dnf/cli/output.py:1291 + #, python-format + msgid "" + "\n" +@@ -3307,289 +3319,273 @@ msgstr "" + "%s\n" + + #. TODO: remove +-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933 ++#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815 + msgid "Install" + msgstr "Installer" + +-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941 ++#: dnf/cli/output.py:1300 dnf/cli/output.py:1823 + msgid "Upgrade" + msgstr "Mettre à niveau" + +-#: dnf/cli/output.py:1388 ++#: dnf/cli/output.py:1301 + msgid "Remove" + msgstr "Supprimer" + +-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939 ++#: dnf/cli/output.py:1303 dnf/cli/output.py:1821 + msgid "Downgrade" + msgstr "Retrograder" + +-#: dnf/cli/output.py:1391 ++#: dnf/cli/output.py:1304 + msgid "Skip" + msgstr "Ignorer" + +-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416 ++#: dnf/cli/output.py:1313 dnf/cli/output.py:1329 + msgid "Package" + msgid_plural "Packages" + msgstr[0] "Paquet" + msgstr[1] "Paquets" + +-#: dnf/cli/output.py:1418 ++#: dnf/cli/output.py:1331 + msgid "Dependent package" + msgid_plural "Dependent packages" + msgstr[0] "Paquet dépendant" + msgstr[1] "Paquets dépendants" + +-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942 +-msgid "Upgraded" +-msgstr "Mis à niveau" +- +-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940 +-msgid "Downgraded" +-msgstr "Rétrogradé" +- +-#: dnf/cli/output.py:1503 +-msgid "Reinstalled" +-msgstr "Réinstallé" +- +-#: dnf/cli/output.py:1504 +-msgid "Skipped" +-msgstr "Ignoré" +- +-#: dnf/cli/output.py:1505 +-msgid "Removed" +-msgstr "Supprimé" +- +-#: dnf/cli/output.py:1508 +-msgid "Failed" +-msgstr "Échec" +- +-#: dnf/cli/output.py:1559 ++#: dnf/cli/output.py:1439 + msgid "Total" + msgstr "Total" + +-#: dnf/cli/output.py:1587 ++#: dnf/cli/output.py:1467 + msgid "" + msgstr "" + +-#: dnf/cli/output.py:1588 ++#: dnf/cli/output.py:1468 + msgid "System" + msgstr "Système" + +-#: dnf/cli/output.py:1638 ++#: dnf/cli/output.py:1518 + msgid "Command line" + msgstr "Ligne de commande" + + #. TRANSLATORS: user names who executed transaction in history command output +-#: dnf/cli/output.py:1649 ++#: dnf/cli/output.py:1531 + msgid "User name" + msgstr "Nom d’utilisateur" + +-#: dnf/cli/output.py:1651 ++#: dnf/cli/output.py:1533 + msgid "ID" + msgstr "ID" + +-#: dnf/cli/output.py:1653 ++#: dnf/cli/output.py:1535 + msgid "Date and time" + msgstr "Date et heure" + +-#: dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1536 + msgid "Action(s)" + msgstr "Action(s)" + +-#: dnf/cli/output.py:1655 ++#: dnf/cli/output.py:1537 + msgid "Altered" + msgstr "Modifié" + +-#: dnf/cli/output.py:1698 ++#: dnf/cli/output.py:1580 + msgid "No transactions" + msgstr "Pas de transaction" + +-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715 ++#: dnf/cli/output.py:1581 dnf/cli/output.py:1597 + msgid "Failed history info" + msgstr "Infos sur l’historique des échecs" + +-#: dnf/cli/output.py:1714 ++#: dnf/cli/output.py:1596 + msgid "No transaction ID, or package, given" + msgstr "Pas de paquet ou d’identifiant de transaction fourni" + +-#: dnf/cli/output.py:1772 ++#: dnf/cli/output.py:1654 + msgid "Erased" + msgstr "Effacé" + +-#: dnf/cli/output.py:1774 ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616 ++msgid "Downgraded" ++msgstr "Rétrogradé" ++ ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615 ++msgid "Upgraded" ++msgstr "Mis à niveau" ++ ++#: dnf/cli/output.py:1656 + msgid "Not installed" + msgstr "Non installé" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Newer" + msgstr "Plus récent" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Older" + msgstr "Plus ancien" + +-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825 ++#: dnf/cli/output.py:1705 dnf/cli/output.py:1707 + msgid "Transaction ID :" + msgstr "Identifiant de transaction :" + +-#: dnf/cli/output.py:1828 ++#: dnf/cli/output.py:1710 + msgid "Begin time :" + msgstr "Temps de début :" + +-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833 ++#: dnf/cli/output.py:1713 dnf/cli/output.py:1715 + msgid "Begin rpmdb :" + msgstr "Début de RPMDB :" + +-#: dnf/cli/output.py:1839 ++#: dnf/cli/output.py:1721 + #, python-format + msgid "(%u seconds)" + msgstr "(%u secondes)" + +-#: dnf/cli/output.py:1841 ++#: dnf/cli/output.py:1723 + #, python-format + msgid "(%u minutes)" + msgstr "(%u minutes)" + +-#: dnf/cli/output.py:1843 ++#: dnf/cli/output.py:1725 + #, python-format + msgid "(%u hours)" + msgstr "(%u heures)" + +-#: dnf/cli/output.py:1845 ++#: dnf/cli/output.py:1727 + #, python-format + msgid "(%u days)" + msgstr "(%u jours)" + +-#: dnf/cli/output.py:1846 ++#: dnf/cli/output.py:1728 + msgid "End time :" + msgstr "Temps de fin :" + +-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851 ++#: dnf/cli/output.py:1731 dnf/cli/output.py:1733 + msgid "End rpmdb :" + msgstr "Fin de RPMDB :" + +-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860 ++#: dnf/cli/output.py:1740 dnf/cli/output.py:1742 + msgid "User :" + msgstr "Utilisateur :" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1753 + msgid "Aborted" + msgstr "Avorté" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869 +-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751 ++#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757 + msgid "Return-Code :" + msgstr "Code de retour :" + +-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1749 dnf/cli/output.py:1757 + msgid "Success" + msgstr "Réussi" + +-#: dnf/cli/output.py:1869 ++#: dnf/cli/output.py:1751 + msgid "Failures:" + msgstr "Échecs :" + +-#: dnf/cli/output.py:1873 ++#: dnf/cli/output.py:1755 + msgid "Failure:" + msgstr "Échec :" + +-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885 ++#: dnf/cli/output.py:1765 dnf/cli/output.py:1767 + msgid "Releasever :" +-msgstr "Releasever :" ++msgstr "Version :" + +-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892 ++#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 + msgid "Command Line :" + msgstr "Ligne de commande :" + +-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899 ++#: dnf/cli/output.py:1779 dnf/cli/output.py:1781 + msgid "Comment :" + msgstr "Commentaire :" + +-#: dnf/cli/output.py:1903 ++#: dnf/cli/output.py:1785 + msgid "Transaction performed with:" + msgstr "Transaction effectuée avec :" + +-#: dnf/cli/output.py:1912 ++#: dnf/cli/output.py:1794 + msgid "Packages Altered:" + msgstr "Paquets modifiés :" + +-#: dnf/cli/output.py:1918 ++#: dnf/cli/output.py:1800 + msgid "Scriptlet output:" + msgstr "Sortie du mini script :" + +-#: dnf/cli/output.py:1925 ++#: dnf/cli/output.py:1807 + msgid "Errors:" + msgstr "Erreurs :" + +-#: dnf/cli/output.py:1934 ++#: dnf/cli/output.py:1816 + msgid "Dep-Install" + msgstr "Installation des dépendances" + +-#: dnf/cli/output.py:1935 ++#: dnf/cli/output.py:1817 + msgid "Obsoleted" + msgstr "Rendu obsolète" + +-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85 ++#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85 + msgid "Obsoleting" + msgstr "Rend obsolète" + +-#: dnf/cli/output.py:1937 ++#: dnf/cli/output.py:1819 + msgid "Erase" + msgstr "Effacement" + +-#: dnf/cli/output.py:1938 ++#: dnf/cli/output.py:1820 + msgid "Reinstall" + msgstr "Réinstallation" + +-#: dnf/cli/output.py:2016 ++#: dnf/cli/output.py:1894 + #, python-format + msgid "---> Package %s.%s %s will be installed" + msgstr "---> Le paquet %s.%s %s sera installé" + +-#: dnf/cli/output.py:2018 ++#: dnf/cli/output.py:1896 + #, python-format + msgid "---> Package %s.%s %s will be an upgrade" + msgstr "---> Le paquet %s.%s %s sera une mise à jour" + +-#: dnf/cli/output.py:2020 ++#: dnf/cli/output.py:1898 + #, python-format + msgid "---> Package %s.%s %s will be erased" + msgstr "---> Le paquet %s.%s %s sera supprimé" + +-#: dnf/cli/output.py:2022 ++#: dnf/cli/output.py:1900 + #, python-format + msgid "---> Package %s.%s %s will be reinstalled" + msgstr "---> Le paquet %s.%s %s sera réinstallé" + +-#: dnf/cli/output.py:2024 ++#: dnf/cli/output.py:1902 + #, python-format + msgid "---> Package %s.%s %s will be a downgrade" + msgstr "---> Le paquet %s.%s %s sera une rétrogradation" + +-#: dnf/cli/output.py:2026 ++#: dnf/cli/output.py:1904 + #, python-format + msgid "---> Package %s.%s %s will be obsoleting" + msgstr "---> Le paquet %s.%s %s sera rendu obsolète" + +-#: dnf/cli/output.py:2028 ++#: dnf/cli/output.py:1906 + #, python-format + msgid "---> Package %s.%s %s will be upgraded" + msgstr "---> Le paquet %s.%s %s sera mis à jour" + +-#: dnf/cli/output.py:2030 ++#: dnf/cli/output.py:1908 + #, python-format + msgid "---> Package %s.%s %s will be obsoleted" + msgstr "---> Le paquet %s.%s %s sera rendu obsolète" + +-#: dnf/cli/output.py:2039 ++#: dnf/cli/output.py:1917 + msgid "--> Starting dependency resolution" + msgstr "--> Début de la résolution des dépendances" + +-#: dnf/cli/output.py:2044 ++#: dnf/cli/output.py:1921 + msgid "--> Finished dependency resolution" + msgstr "--> Résolution des dépendances terminée" + +-#: dnf/cli/output.py:2058 dnf/crypto.py:132 ++#: dnf/cli/output.py:1935 dnf/crypto.py:132 + #, python-format + msgid "" + "Importing GPG key 0x%s:\n" +@@ -3630,8 +3626,8 @@ msgstr "Inconnu" + #, python-format + msgid "Unable to find information about the locking process (PID %d)" + msgstr "" +-"Impossible de trouver des informations sur le processus de verrouillage (PID" +-" %d)" ++"Impossible de trouver des informations sur le processus de verrouillage (PID " ++"%d)" + + #: dnf/cli/utils.py:117 + #, python-format +@@ -3653,10 +3649,6 @@ msgstr " A débuté  : %s - il y a %s" + msgid " State : %s" + msgstr " État : %s" + +-#: dnf/comps.py:104 +-msgid "skipping." +-msgstr "ignorer." +- + #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706 + #, python-format + msgid "Module or Group '%s' is not installed." +@@ -3677,7 +3669,7 @@ msgstr "Module ou Groupe « %s » n’existe pas." + msgid "Environment id '%s' does not exist." + msgstr "L’id d’environnement « %s » n’existe pas." + +-#: dnf/comps.py:622 dnf/transaction_sr.py:443 dnf/transaction_sr.py:453 ++#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487 + #, python-format + msgid "Environment id '%s' is not installed." + msgstr "L’id d’environnement « %s » n’est pas installé." +@@ -3702,6 +3694,11 @@ msgstr "L’id de groupe « %s » n’existe pas." + msgid "Error parsing '%s': %s" + msgstr "Erreur lors l’analyse de « %s » : %s" + ++#: dnf/conf/config.py:151 ++#, python-format ++msgid "Invalid configuration value: %s=%s in %s; %s" ++msgstr "Valeur de configuration non valide : %s=%s dans %s ; %s" ++ + #: dnf/conf/config.py:226 + msgid "Could not set cachedir: {}" + msgstr "N’a pas pu définir cachedir : {}" +@@ -3745,39 +3742,39 @@ msgstr "" + msgid "Repo %s did not have a %s attr. before setopt" + msgstr "Le dépôt « %s » n’avait pas d’attr. %s avant setopt" + +-#: dnf/conf/read.py:51 ++#: dnf/conf/read.py:60 + #, python-format + msgid "Warning: failed loading '%s', skipping." + msgstr "Attention : lecture de « %s » erronée ; ignorer." + +-#: dnf/conf/read.py:63 ++#: dnf/conf/read.py:72 + msgid "Bad id for repo: {} ({}), byte = {} {}" + msgstr "Id erroné pour le dépôt : {} ({}), byte = {} {}" + +-#: dnf/conf/read.py:67 ++#: dnf/conf/read.py:76 + msgid "Bad id for repo: {}, byte = {} {}" + msgstr "Id erroné pour le dépôt : {}, byte = {} {}" + +-#: dnf/conf/read.py:75 ++#: dnf/conf/read.py:84 + msgid "Repository '{}' ({}): Error parsing config: {}" + msgstr "Dépôt « {} » ({}) : erreur lors de l’analyse de la configuration : {}" + +-#: dnf/conf/read.py:78 ++#: dnf/conf/read.py:87 + msgid "Repository '{}': Error parsing config: {}" + msgstr "Dépôt « {} » : erreur lors de l’analyse de la configuration : {}" + +-#: dnf/conf/read.py:84 ++#: dnf/conf/read.py:93 + msgid "Repository '{}' ({}) is missing name in configuration, using id." + msgstr "" + "Il manque le nom du dépôt « {} » ({}) dans la configuration, utilisation de " + "l’id." + +-#: dnf/conf/read.py:87 ++#: dnf/conf/read.py:96 + msgid "Repository '{}' is missing name in configuration, using id." + msgstr "" + "Il manque le nom du dépôt « {} » dans la configuration, utilisation de l’id." + +-#: dnf/conf/read.py:104 ++#: dnf/conf/read.py:113 + msgid "Parsing file \"{}\" failed: {}" + msgstr "La lecture du fichier « {} » a échoué : {}" + +@@ -3791,7 +3788,20 @@ msgstr "dépôt %s : 0x%s déjà importé" + msgid "repo %s: imported key 0x%s." + msgstr "dépôt %s : clé importée 0x%s." + +-#: dnf/db/group.py:293 ++#: dnf/crypto.py:145 ++msgid "Verified using DNS record with DNSSEC signature." ++msgstr "Vérifié en utilisant un enregistrement DNS avec une signature DNSSEC." ++ ++#: dnf/crypto.py:147 ++msgid "NOT verified using DNS record." ++msgstr "NON vérifié avec un enregistrement DNS." ++ ++#: dnf/crypto.py:184 ++#, python-format ++msgid "retrieving repo key for %s unencrypted from %s" ++msgstr "récupération de la clé de dépôt pour %s déchiffrée à partir de %s" ++ ++#: dnf/db/group.py:301 + msgid "" + "No available modular metadata for modular package '{}', it cannot be " + "installed on the system" +@@ -3799,21 +3809,21 @@ msgstr "" + "Aucune métadonnée de module disponible pour le paquet modulaire « {} », ne " + "peut pas être installé dans le système" + +-#: dnf/db/group.py:343 ++#: dnf/db/group.py:351 + msgid "No available modular metadata for modular package" + msgstr "Aucune métadonnée de module disponible pour le paquet modulaire" + +-#: dnf/db/group.py:377 ++#: dnf/db/group.py:385 + #, python-format + msgid "Will not install a source rpm package (%s)." + msgstr "Un paquet source rpm ne sera pas installé (%s)." + + #: dnf/dnssec.py:168 + msgid "" +-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})" ++"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})" + msgstr "" +-"L’option de configuration « gpgkey_dns_verification » nécessite libunbound " +-"({})" ++"L’option de configuration « gpgkey_dns_verification » nécessite python3-" ++"unbound({})" + + #: dnf/dnssec.py:239 + msgid "DNSSEC extension: Key for user " +@@ -3835,7 +3845,7 @@ msgstr "extension DNSSEC : " + msgid "Testing already imported keys for their validity." + msgstr "Test de validité des clefs déjà importées." + +-#: dnf/drpm.py:62 dnf/repo.py:268 ++#: dnf/drpm.py:62 dnf/repo.py:267 + #, python-format + msgid "unsupported checksum type: %s" + msgstr "type de somme de contrôle non pris en charge : %s" +@@ -3878,7 +3888,7 @@ msgid_plural "Modular dependency problems with Defaults:" + msgstr[0] "Problème de dépendance modulaire avec les valeurs par défaut :" + msgstr[1] "Problèmes de dépendance modulaire avec les valeurs par défaut :" + +-#: dnf/exceptions.py:131 dnf/module/module_base.py:686 ++#: dnf/exceptions.py:131 dnf/module/module_base.py:854 + msgid "Modular dependency problem:" + msgid_plural "Modular dependency problems:" + msgstr[0] "Problème de dépendance modulaire :" +@@ -3888,10 +3898,12 @@ msgstr[1] "Problèmes de dépendance modulaire :" + #, python-format + msgid "" + "Malformed lock file found: %s.\n" +-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf." ++"Ensure no other dnf/yum process is running and remove the lock file manually " ++"or run systemd-tmpfiles --remove dnf.conf." + msgstr "" + "Fichier verrou malformé trouvé : %s.\n" +-"Assurez-vous qu’aucun autre processus {prog} n’est en cours d’exécution et supprimez le fichier verrou, ou exécutez systemd-tmpfiles --remove dnf.conf." ++"Assurez-vous qu’aucun autre processus {prog} n’est en cours d’exécution et " ++"supprimez le fichier verrou, ou exécutez systemd-tmpfiles --remove dnf.conf." + + #: dnf/module/__init__.py:26 + msgid "Enabling different stream for '{}'." +@@ -3915,7 +3927,47 @@ msgstr "Modules activés : {}." + msgid "No profile specified for '{}', please specify profile." + msgstr "Aucun profil spécifié pour « {} », veuillez spécifier un profil." + +-#: dnf/module/module_base.py:33 ++#: dnf/module/exceptions.py:27 ++msgid "No such module: {}" ++msgstr "Aucun module de ce type : {}" ++ ++#: dnf/module/exceptions.py:33 ++msgid "No such stream: {}" ++msgstr "Aucun flux de ce type : {}" ++ ++#: dnf/module/exceptions.py:39 ++msgid "No enabled stream for module: {}" ++msgstr "Aucun flux activé pour le module : {}" ++ ++#: dnf/module/exceptions.py:46 ++msgid "Cannot enable more streams from module '{}' at the same time" ++msgstr "Ne peut pas activer plus de flux du module « {} » en même temps" ++ ++#: dnf/module/exceptions.py:52 ++msgid "Different stream enabled for module: {}" ++msgstr "Différent flux activé pour le module : {}" ++ ++#: dnf/module/exceptions.py:58 ++msgid "No such profile: {}" ++msgstr "Aucun profil de ce type : {}" ++ ++#: dnf/module/exceptions.py:64 ++msgid "Specified profile not installed for {}" ++msgstr "Le profil spécifié n'est pas installé pour {}" ++ ++#: dnf/module/exceptions.py:70 ++msgid "No stream specified for '{}', please specify stream" ++msgstr "Aucun flux spécifié pour « {} », veuillez spécifier un flux" ++ ++#: dnf/module/exceptions.py:82 ++msgid "No such profile: {}. No profiles available" ++msgstr "Aucun dépôt de ce type : {}. Aucun profile n’est disponible" ++ ++#: dnf/module/exceptions.py:88 ++msgid "No profile to remove for '{}'" ++msgstr "Aucun profil à retirer pour « {} »" ++ ++#: dnf/module/module_base.py:35 + msgid "" + "\n" + "\n" +@@ -3925,7 +3977,7 @@ msgstr "" + "\n" + "Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé" + +-#: dnf/module/module_base.py:34 ++#: dnf/module/module_base.py:36 + msgid "" + "\n" + "\n" +@@ -3935,93 +3987,112 @@ msgstr "" + "\n" + "Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé, [a]ctivé" + +-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421 +-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543 ++#: dnf/module/module_base.py:56 dnf/module/module_base.py:556 ++#: dnf/module/module_base.py:615 dnf/module/module_base.py:681 + msgid "Ignoring unnecessary profile: '{}/{}'" + msgstr "Profil inutile ignoré : {}/{}" + +-#: dnf/module/module_base.py:84 ++#: dnf/module/module_base.py:86 + #, python-brace-format + msgid "All matches for argument '{0}' in module '{1}:{2}' are not active" + msgstr "" +-"Toutes les correspondance pour le paramètre « {0} » dans le mode module « " +-"{1}:{2} » ne sont pas actives" ++"Toutes les correspondances pour le paramètre « {0} » dans le mode module " ++"« {1}:{2} » ne sont pas actives" + +-#: dnf/module/module_base.py:92 ++#: dnf/module/module_base.py:94 dnf/module/module_base.py:204 + #, python-brace-format + msgid "Installing module '{0}' from Fail-Safe repository {1} is not allowed" + msgstr "" + "L’installation du module « {0} » à partir du dépôt Fail-Safe {1} n’est pas " + "permise" + +-#: dnf/module/module_base.py:102 ++#: dnf/module/module_base.py:104 dnf/module/module_base.py:214 + msgid "" + "Unable to match profile for argument {}. Available profiles for '{}:{}': {}" + msgstr "" + "Impossible de faire correspondre le profil pour l’argument {}. Profils " + "disponibles pour « {}:{} » : {}" + +-#: dnf/module/module_base.py:106 ++#: dnf/module/module_base.py:108 dnf/module/module_base.py:218 + msgid "Unable to match profile for argument {}" + msgstr "Impossible de faire correspondre le profil pour l’argument {}" + +-#: dnf/module/module_base.py:118 ++#: dnf/module/module_base.py:120 + msgid "No default profiles for module {}:{}. Available profiles: {}" +-msgstr "" +-"Aucun profil par défaut pour le module {}:{}. Profils disponibles : {}" ++msgstr "Aucun profil par défaut pour le module {}:{}. Profils disponibles : {}" + +-#: dnf/module/module_base.py:122 ++#: dnf/module/module_base.py:124 + msgid "No profiles for module {}:{}" + msgstr "Aucun profil pour le module {} : {}" + +-#: dnf/module/module_base.py:129 ++#: dnf/module/module_base.py:131 + msgid "Default profile {} not available in module {}:{}" + msgstr "Le profil par défaut {} n’est pas disponible dans le module {} : {}" + +-#: dnf/module/module_base.py:142 ++#: dnf/module/module_base.py:144 dnf/module/module_base.py:247 + msgid "Installing module from Fail-Safe repository is not allowed" ++msgstr "L’installation du module à partir du dépôt Fail-Safe n’est pas permise" ++ ++#: dnf/module/module_base.py:196 ++#, python-brace-format ++msgid "No active matches for argument '{0}' in module '{1}:{2}'" ++msgstr "" ++"Aucune correspondance active pour le paramètre « {0} » dans le module « {1}:" ++"{2} »" ++ ++#: dnf/module/module_base.py:228 ++#, python-brace-format ++msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'" + msgstr "" +-"L’installation du module à partir du dépôt Fail-Safe n’est pas permise" ++"Le profil installé « {0} » n’est pas disponible dans le module « {1} » flux " ++"« {2} »" + +-#: dnf/module/module_base.py:159 dnf/module/module_base.py:193 +-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355 +-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417 +-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539 ++#: dnf/module/module_base.py:267 ++msgid "No packages available to distrosync for package name '{}'" ++msgstr "Aucun paquet distrosync disponible pour le nom de paquet « {} »" ++ ++#: dnf/module/module_base.py:310 dnf/module/module_base.py:461 ++#: dnf/module/module_base.py:486 dnf/module/module_base.py:505 ++#: dnf/module/module_base.py:552 dnf/module/module_base.py:611 ++#: dnf/module/module_base.py:677 dnf/module/module_base.py:840 + msgid "Unable to resolve argument {}" + msgstr "Impossible de résoudre le paramètre {}" + +-#: dnf/module/module_base.py:160 +-msgid "No match for package {}" +-msgstr "Aucune correspondance pour le paquet {}" +- +-#: dnf/module/module_base.py:204 ++#: dnf/module/module_base.py:321 + #, python-brace-format + msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed" + msgstr "" +-"La mise à niveau du module « {0} » à partir du dépôt Fail-Safe {1} n’est pas" +-" permise" ++"La mise à niveau du module « {0} » à partir du dépôt Fail-Safe {1} n’est pas " ++"permise" + +-#: dnf/module/module_base.py:223 dnf/module/module_base.py:251 ++#: dnf/module/module_base.py:340 dnf/module/module_base.py:368 + msgid "Unable to match profile in argument {}" + msgstr "Impossible de faire correspondre le profil dans l’argument {}" + +-#: dnf/module/module_base.py:231 ++#: dnf/module/module_base.py:348 + msgid "Upgrading module from Fail-Safe repository is not allowed" + msgstr "" + "La mise à niveau du module à partir du dépôt Fail-Safe n’est pas permise" + +-#: dnf/module/module_base.py:367 ++#: dnf/module/module_base.py:422 ++#, python-brace-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'{}'" ++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module " ++"'{module}', but none of the streams are enabled or default" ++msgstr "" ++"L'argument « {argument} » correspond à {stream_count} flux (« {streams} ») " ++"du module « {module} », mais aucun des flux n'est activé ou par défaut" ++ ++#: dnf/module/module_base.py:509 ++msgid "" ++"Only module name is required. Ignoring unneeded information in argument: '{}'" + msgstr "" + "Seul le nom du module est nécessaire. Les paramètres inutiles ont été " + "ignorés : « {} »" + +-#: dnf/package.py:298 +-#, python-format +-msgid "%s: %s check failed: %s vs %s" +-msgstr "%s : %s vérification a échoué : %s vs %s" ++#: dnf/module/module_base.py:841 ++msgid "No match for package {}" ++msgstr "Aucune correspondance pour le paquet {}" + + #. empty file is invalid json format + #: dnf/persistor.py:54 +@@ -4032,12 +4103,12 @@ msgstr "%s est un fichier vide" + #: dnf/persistor.py:91 + #, python-format + msgid "Failed to load expired repos cache: %s" +-msgstr "" ++msgstr "Échec du chargement du cache des dépôts expirés : %s" + + #: dnf/persistor.py:99 + #, python-format + msgid "Failed to store expired repos cache: %s" +-msgstr "" ++msgstr "Échec du stockage du cache des dépôts expirés : %s" + + #: dnf/persistor.py:106 + msgid "Failed storing last makecache time." +@@ -4057,21 +4128,21 @@ msgstr "La lecture du fichier a échoué : %s" + msgid "Loaded plugins: %s" + msgstr "Plugins chargés : %s" + +-#: dnf/plugin.py:199 ++#: dnf/plugin.py:211 + #, python-format + msgid "Failed loading plugin \"%s\": %s" + msgstr "Échec lors du chargement du module « %s » : %s" + +-#: dnf/plugin.py:231 ++#: dnf/plugin.py:243 + msgid "No matches found for the following enable plugin patterns: {}" + msgstr "" + "Aucun élément correspondant aux modèles de plugin d’activation suivants : {}" + +-#: dnf/plugin.py:235 ++#: dnf/plugin.py:247 + msgid "No matches found for the following disable plugin patterns: {}" + msgstr "" +-"Aucun élément correspondant aux modèles de plugin de désactivation suivants " +-": {}" ++"Aucun élément correspondant aux modèles de plugin de désactivation " ++"suivants : {}" + + #: dnf/repo.py:84 + #, python-format +@@ -4083,7 +4154,7 @@ msgid "Already downloaded" + msgstr "Déjà téléchargé" + + #. pinging mirrors, this might take a while +-#: dnf/repo.py:347 ++#: dnf/repo.py:346 + #, python-format + msgid "determining the fastest mirror (%s hosts).. " + msgstr "détermination du miroir le plus rapide (%s hôtes).. " +@@ -4098,10 +4169,29 @@ msgstr "activation du dépôt %s" + msgid "Added %s repo from %s" + msgstr "Ajout du dépôt %s depuis le %s" + ++#: dnf/rpm/miscutils.py:32 ++#, python-format ++msgid "Using rpmkeys executable at %s to verify signatures" ++msgstr "" ++"Utilisation de l'exécutable rpmkeys dans %s pour vérifier les signatures" ++ ++#: dnf/rpm/miscutils.py:66 ++msgid "Cannot find rpmkeys executable to verify signatures." ++msgstr "" ++"Impossible de trouver l’exécutable rpmkeys pour vérifier les signatures." ++ + #: dnf/rpm/transaction.py:119 + msgid "Errors occurred during test transaction." + msgstr "Des erreurs sont survenues lors de la transaction de test." + ++#: dnf/sack.py:47 ++msgid "" ++"allow_vendor_change is disabled. This option is currently not supported for " ++"downgrade and distro-sync commands" ++msgstr "" ++"allow_vendor_change est désactivé. Cette option n’est actuellement pas prise " ++"en charge pour les commandes downgrade et distro-sync" ++ + #. TRANSLATORS: This is for a single package currently being downgraded. + #: dnf/transaction.py:80 + msgctxt "currently" +@@ -4148,177 +4238,252 @@ msgstr "Exécution du scriptlet" + msgid "Preparing" + msgstr "Préparation" + +-#: dnf/transaction_sr.py:60 ++#: dnf/transaction_sr.py:66 + #, python-brace-format +-msgid "Errors in \"{filename}\":" +-msgstr "Erreurs dans « {filename} » :" ++msgid "" ++"The following problems occurred while replaying the transaction from file " ++"\"{filename}\":" ++msgstr "" ++"Les problèmes suivants sont survenus lors de la relecture de la transaction " ++"à partir du fichier « {filename} » :" + +-#: dnf/transaction_sr.py:70 +-#, python-brace-format +-msgid "Error in \"{filename}\": {error}" +-msgstr "Erreur dans « {filename} » : {error}" ++#: dnf/transaction_sr.py:68 ++msgid "The following problems occurred while running a transaction:" ++msgstr "" ++"Les problèmes suivants sont survenus lors de l'exécution d'une transaction :" + +-#: dnf/transaction_sr.py:87 ++#: dnf/transaction_sr.py:89 + #, python-brace-format + msgid "Invalid major version \"{major}\", number expected." + msgstr "Version majeur invalide « {major} », numéro attendu." + +-#: dnf/transaction_sr.py:95 ++#: dnf/transaction_sr.py:97 + #, python-brace-format + msgid "Invalid minor version \"{minor}\", number expected." + msgstr "Version mineure invalide « {minor} », numéro attendu." + +-#: dnf/transaction_sr.py:101 ++#: dnf/transaction_sr.py:103 + #, python-brace-format + msgid "" + "Incompatible major version \"{major}\", supported major version is " + "\"{major_supp}\"." + msgstr "" +-"Version majeure incompatible « {major} », la version majeure prise en charge" +-" est « {major_supp} »." ++"Version majeure incompatible « {major} », la version majeure prise en charge " ++"est « {major_supp} »." + +-#: dnf/transaction_sr.py:244 ++#: dnf/transaction_sr.py:224 ++msgid "" ++"Conflicting TransactionReplay arguments have been specified: filename, data" ++msgstr "" ++"Des arguments contradictoires de TransactionReplay ont été spécifiés : nom " ++"de fichier, données" ++ ++#: dnf/transaction_sr.py:265 + #, python-brace-format + msgid "Unexpected type of \"{id}\", {exp} expected." + msgstr "Type de « {id} » inattendu, {exp} attendu." + +-#: dnf/transaction_sr.py:250 ++#: dnf/transaction_sr.py:271 + #, python-brace-format + msgid "Missing key \"{key}\"." + msgstr "Clé « {key} » manquante." + +-#: dnf/transaction_sr.py:263 ++#: dnf/transaction_sr.py:285 + #, python-brace-format + msgid "Missing object key \"{key}\" in an rpm." + msgstr "Clé objet « {key} » manquante dans un rpm." + +-#: dnf/transaction_sr.py:267 ++#: dnf/transaction_sr.py:289 + #, python-brace-format +-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." ++msgid "" ++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." + msgstr "" ++"Valeur inattendue pour le paquet de raison « {reason} » pour le rpm nevra " ++"« {nevra} »." + +-#: dnf/transaction_sr.py:275 ++#: dnf/transaction_sr.py:297 + #, python-brace-format + msgid "Cannot parse NEVRA for package \"{nevra}\"." +-msgstr "" ++msgstr "Impossible d’analyser NEVRA pour le paquet « {nevra} »." + +-#: dnf/transaction_sr.py:286 ++#: dnf/transaction_sr.py:321 + #, python-brace-format + msgid "Cannot find rpm nevra \"{nevra}\"." +-msgstr "" ++msgstr "Impossible de trouver le rpm nevra « {nevra} »." + +-#: dnf/transaction_sr.py:301 +-#, fuzzy, python-brace-format +-#| msgid "Package %s is already installed." ++#: dnf/transaction_sr.py:336 ++#, python-brace-format + msgid "Package \"{na}\" is already installed for action \"{action}\"." +-msgstr "Le paquet %s est déjà installé." ++msgstr "Le paquet « {na} » est déjà installé pour l’action « {action} »." + +-#: dnf/transaction_sr.py:311 ++#: dnf/transaction_sr.py:345 + #, python-brace-format + msgid "" + "Package nevra \"{nevra}\" not available in repositories for action " + "\"{action}\"." + msgstr "" ++"Le paquet nevra « {nevra} » n’est pas disponible dans les dépôts pour " ++"l’action « {action} »." + +-#: dnf/transaction_sr.py:322 ++#: dnf/transaction_sr.py:356 + #, python-brace-format + msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"." + msgstr "" ++"Le paquet nevra « {nevra} » n’est pas installé pour l’action « {action} »." + +-#: dnf/transaction_sr.py:336 ++#: dnf/transaction_sr.py:370 + #, python-brace-format +-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." ++msgid "" ++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." + msgstr "" ++"Valeur inattendue pour l’action de paquet « {action} » pour le rpm nevra " ++"« {nevra} »." + +-#: dnf/transaction_sr.py:343 +-#, fuzzy, python-format +-#| msgid "Module or Group '%s' is not available." ++#: dnf/transaction_sr.py:377 ++#, python-format + msgid "Group id '%s' is not available." +-msgstr "Module ou Groupe « %s » non disponible." ++msgstr "ID de groupe « %s » non disponible." + +-#: dnf/transaction_sr.py:364 ++#: dnf/transaction_sr.py:398 + #, python-brace-format + msgid "Missing object key \"{key}\" in groups.packages." +-msgstr "" ++msgstr "Clé d’objet « {key} » manquante dans groups.packages." + +-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387 +-#, fuzzy, python-format +-#| msgid "Module or Group '%s' is not installed." ++#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421 ++#, python-format + msgid "Group id '%s' is not installed." +-msgstr "Module ou Groupe « %s » non installé." ++msgstr "ID de groupe « %s » non installé." + +-#: dnf/transaction_sr.py:398 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not available." ++#: dnf/transaction_sr.py:432 ++#, python-format + msgid "Environment id '%s' is not available." +-msgstr "L’environnement « %s » n’est pas disponible." ++msgstr "ID d’environnement « %s » non disponible." + +-#: dnf/transaction_sr.py:422 ++#: dnf/transaction_sr.py:456 + #, python-brace-format + msgid "" + "Invalid value \"{group_type}\" of environments.groups.group_type, only " + "\"mandatory\" or \"optional\" is supported." + msgstr "" ++"Valeur invalide « {group_type} » pour environments.groups.group_type, seuls " ++"« mandatory » ou « optional » sont pris en charge." + +-#: dnf/transaction_sr.py:430 ++#: dnf/transaction_sr.py:464 + #, python-brace-format + msgid "Missing object key \"{key}\" in environments.groups." +-msgstr "" ++msgstr "Clé d’objet « {key} » manquante dans environments.groups." + +-#: dnf/transaction_sr.py:508 ++#: dnf/transaction_sr.py:542 + #, python-brace-format + msgid "Unexpected value of group action \"{action}\" for group \"{group}\"." + msgstr "" ++"Valeur inattendue pour l’action de groupe « {action} » pour le groupe " ++"« {group} »." + +-#: dnf/transaction_sr.py:513 ++#: dnf/transaction_sr.py:547 + #, python-brace-format + msgid "Missing object key \"{key}\" in a group." +-msgstr "" ++msgstr "Clé d’objet « {key} » manquante dans un groupe." + +-#: dnf/transaction_sr.py:537 ++#: dnf/transaction_sr.py:571 + #, python-brace-format +-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"." ++msgid "" ++"Unexpected value of environment action \"{action}\" for environment " ++"\"{env}\"." + msgstr "" ++"Valeur inattendue pour l’action d’environnement « {action} » pour " ++"l’environnement « {env} »." + +-#: dnf/transaction_sr.py:542 ++#: dnf/transaction_sr.py:576 + #, python-brace-format + msgid "Missing object key \"{key}\" in an environment." +-msgstr "" ++msgstr "Clé d’objet « {key} » manquante dans un environnement." + +-#: dnf/transaction_sr.py:581 ++#: dnf/transaction_sr.py:615 + #, python-brace-format + msgid "" +-"Package nevra \"{nevra}\", which is not present in the transaction file, was" +-" pulled into the transaction." ++"Package nevra \"{nevra}\", which is not present in the transaction file, was " ++"pulled into the transaction." + msgstr "" ++"Le paquet nevra « {nevra} », qui n’est pas présent dans le fichier de " ++"transaction, a été retiré de la transaction." + +-#: dnf/util.py:391 dnf/util.py:393 ++#: dnf/util.py:419 dnf/util.py:421 + msgid "Problem" + msgstr "Problème" + +-#: dnf/util.py:444 ++#: dnf/util.py:472 + msgid "TransactionItem not found for key: {}" + msgstr "TransactionItem n’a pas été trouvé pour la clef : {}" + +-#: dnf/util.py:454 ++#: dnf/util.py:482 + msgid "TransactionSWDBItem not found for key: {}" + msgstr "TransactionSWDBItem n’a pas été trouvé pour la clef : {}" + +-#: dnf/util.py:457 ++#: dnf/util.py:485 + msgid "Errors occurred during transaction." + msgstr "Des erreurs sont survenues lors de la transaction." + ++#: dnf/util.py:621 ++msgid "Reinstalled" ++msgstr "Réinstallé" ++ ++#: dnf/util.py:622 ++msgid "Skipped" ++msgstr "Ignoré" ++ ++#: dnf/util.py:623 ++msgid "Removed" ++msgstr "Supprimé" ++ ++#: dnf/util.py:626 ++msgid "Failed" ++msgstr "Échec" ++ ++#~ msgid "skipping." ++#~ msgstr "ignorer." ++ ++#~ msgid "" ++#~ "Using rpmkeys executable from {path} to verify signature for package: " ++#~ "{package}." ++#~ msgstr "" ++#~ "Utilisation de l'exécutable rpmkeys de {path} pour vérifier la signature " ++#~ "du package : {package}." ++ ++#~ msgid "%s: %s check failed: %s vs %s" ++#~ msgstr "%s : %s vérification a échoué : %s vs %s" ++ ++#~ msgid "Action not handled: {}" ++#~ msgstr "Action non gérée : {}" ++ ++#~ msgid "no package matched" ++#~ msgstr "aucun paquet correspondant" ++ ++#~ msgid "Not found given transaction ID" ++#~ msgstr "L’identifiant de transaction fourni est introuvable" ++ ++#~ msgid "Undoing transaction {}, from {}" ++#~ msgstr "Révocation de lla transaction {}, de {}" ++ ++#~ msgid "Errors in \"{filename}\":" ++#~ msgstr "Erreurs dans « {filename} » :" ++ ++#~ msgid "Error in \"{filename}\": {error}" ++#~ msgstr "Erreur dans « {filename} » : {error}" ++ + #~ msgid "format for displaying found packages" + #~ msgstr "format d’affichage des paquets trouvés" + + #~ msgid "Available query-tags: use --queryformat \".. %{tag} ..\"" +-#~ msgstr "Balises de requêtes disponibles : utiliser --queryformat \"..%{tag}..\"" ++#~ msgstr "" ++#~ "Balises de requêtes disponibles : utiliser --queryformat \"..%{tag}..\"" + + #~ msgid "Bad transaction IDs, or package(s), given" + #~ msgstr "Des paquets ou identifiants de transaction fournis sont erronés" + + #~ msgid "" +-#~ "Display capabilities that the package depends on for running a %%pre script." ++#~ "Display capabilities that the package depends on for running a %%pre " ++#~ "script." + #~ msgstr "" + #~ "Affiche les fonctionnalités dont le paquet dépend pour le lancement d’un " + #~ "script %%pre." +diff --git a/po/ja.po b/po/ja.po +index 6435271c..05bbda02 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -14,7 +14,7 @@ + # Hajime Taira , 2017. #zanata + # Ooyama Yosiyuki , 2017. #zanata + # Casey Jones , 2018. #zanata +-# Ludek Janda , 2018. #zanata ++# Ludek Janda , 2018. #zanata, 2021. + # Noriko Mizumoto , 2018. #zanata + # Ooyama Yosiyuki , 2018. #zanata + # Hajime Taira , 2019. #zanata +@@ -22,20 +22,23 @@ + # Julien Humbert , 2020. + # Casey Jones , 2020. + # Hajime Taira , 2020. ++# Sundeep Anand , 2021. ++# Transtats , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-07-27 05:29+0000\n" +-"Last-Translator: Hajime Taira \n" +-"Language-Team: Japanese \n" ++"POT-Creation-Date: 2022-02-28 11:24+0100\n" ++"PO-Revision-Date: 2022-03-09 12:39+0000\n" ++"Last-Translator: Transtats \n" ++"Language-Team: Japanese \n" + "Language: ja\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.1.1\n" ++"X-Generator: Weblate 4.11.2\n" + + #: dnf/automatic/emitter.py:32 + #, python-format +@@ -45,7 +48,7 @@ msgstr "'%s' に以下の更新が適用されました:" + #: dnf/automatic/emitter.py:33 + #, python-format + msgid "Updates completed at %s" +-msgstr "'%s' に更新が適用されました。" ++msgstr "'%s' に更新が適用されました" + + #: dnf/automatic/emitter.py:34 + #, python-format +@@ -82,7 +85,7 @@ msgstr "'%s' を使用した電子メールの送信に失敗しました: %s" + msgid "Failed to execute command '%s': returned %d" + msgstr "コマンド '%s' の実行に失敗しました: %d を返しました" + +-#: dnf/automatic/main.py:164 dnf/conf/config.py:151 ++#: dnf/automatic/main.py:164 + #, python-format + msgid "Unknown configuration value: %s=%s in %s; %s" + msgstr "不明な設定値: %s=%s in %s; %s" +@@ -92,7 +95,7 @@ msgstr "不明な設定値: %s=%s in %s; %s" + msgid "Unknown configuration option: %s = %s in %s" + msgstr "不明な設定オプション: %s = %s in %s" + +-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299 ++#: dnf/automatic/main.py:237 dnf/cli/cli.py:305 + msgid "GPG check FAILED" + msgstr "GPG の確認に失敗しました" + +@@ -105,9 +108,9 @@ msgid "Started dnf-automatic." + msgstr "dnf-automatic を開始しました。" + + #: dnf/automatic/main.py:308 +-#, python-format +-msgid "Sleep for %s seconds" +-msgstr "%s 秒スリープします" ++msgid "Sleep for {} second" ++msgid_plural "Sleep for {} seconds" ++msgstr[0] "{} 秒スリープします" + + #: dnf/automatic/main.py:315 + msgid "System is off-line." +@@ -119,439 +122,455 @@ msgstr "システムはオフラインです。" + msgid "Error: %s" + msgstr "エラー: %s" + +-#: dnf/base.py:146 ++#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479 + msgid "loading repo '{}' failure: {}" + msgstr "repo '{}' のロードに失敗しました: {}" + +-#: dnf/base.py:148 ++#: dnf/base.py:150 + msgid "Loading repository '{}' has failed" + msgstr "repository '{}' のロードに失敗しました" + +-#: dnf/base.py:320 ++#: dnf/base.py:327 + msgid "Metadata timer caching disabled when running on metered connection." +-msgstr "metered 接続で実行する際、メタデータタイマーキャッシュは無効化されました。" ++msgstr "" ++"metered 接続で実行する際、メタデータタイマーキャッシュは無効化されました。" + +-#: dnf/base.py:325 ++#: dnf/base.py:332 + msgid "Metadata timer caching disabled when running on a battery." +-msgstr "バッテリーで実行する際、メタデータタイマーキャッシュは無効化されました。" ++msgstr "" ++"バッテリーで実行する際、メタデータタイマーキャッシュは無効化されました。" + +-#: dnf/base.py:330 ++#: dnf/base.py:337 + msgid "Metadata timer caching disabled." + msgstr "メタデータタイマーキャッシュは無効化されました。" + +-#: dnf/base.py:335 ++#: dnf/base.py:342 + msgid "Metadata cache refreshed recently." + msgstr "メタデータキャッシュは最近、リフレッシュされました。" + +-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91 ++#: dnf/base.py:348 dnf/cli/commands/__init__.py:91 + msgid "There are no enabled repositories in \"{}\"." + msgstr "\"{}\" には有効化されたリポジトリーがありません。" + +-#: dnf/base.py:348 ++#: dnf/base.py:355 + #, python-format + msgid "%s: will never be expired and will not be refreshed." + msgstr "%s: は期限切れになることはなく、リフレッシュされることもありません。" + +-#: dnf/base.py:350 ++#: dnf/base.py:357 + #, python-format + msgid "%s: has expired and will be refreshed." + msgstr "%s: は期限切れとなったのでリフレッシュされます。" + + #. expires within the checking period: +-#: dnf/base.py:354 ++#: dnf/base.py:361 + #, python-format + msgid "%s: metadata will expire after %d seconds and will be refreshed now" + msgstr "%s: メタデータは %d 秒後に期限切れとなり、すぐにリフレッシュされます" + +-#: dnf/base.py:358 ++#: dnf/base.py:365 + #, python-format + msgid "%s: will expire after %d seconds." + msgstr "%s: は %d 秒後に期限切れとなります。" + + #. performs the md sync +-#: dnf/base.py:364 ++#: dnf/base.py:371 + msgid "Metadata cache created." + msgstr "メタデータキャッシュを作成しました。" + +-#: dnf/base.py:397 ++#: dnf/base.py:404 dnf/base.py:471 + #, python-format + msgid "%s: using metadata from %s." +-msgstr "%s: は %s から取得したメタデータを使用中" ++msgstr "%s: は %s から取得したメタデータを使用中。" + +-#: dnf/base.py:409 ++#: dnf/base.py:416 dnf/base.py:484 + #, python-format + msgid "Ignoring repositories: %s" + msgstr "リポジトリーを無視します: %s" + +-#: dnf/base.py:412 ++#: dnf/base.py:419 + #, python-format + msgid "Last metadata expiration check: %s ago on %s." + msgstr "メタデータの期限切れの最終確認: %s 時間前の %s に実施しました。" + +-#: dnf/base.py:443 ++#: dnf/base.py:512 + msgid "" + "The downloaded packages were saved in cache until the next successful " + "transaction." +-msgstr "ダウンロード済みのパッケージは、次の正常なトランザクションまでキャッシュに保存されました。" ++msgstr "" ++"ダウンロード済みのパッケージは、次の正常なトランザクションまでキャッシュに保" ++"存されました。" + +-#: dnf/base.py:445 ++#: dnf/base.py:514 + #, python-format + msgid "You can remove cached packages by executing '%s'." + msgstr "'%s' を実行することでキャッシュパッケージを削除できます。" + +-#: dnf/base.py:535 ++#: dnf/base.py:606 + #, python-format + msgid "Invalid tsflag in config file: %s" + msgstr "設定ファイルの tsflag が無効です: %s" + +-#: dnf/base.py:591 ++#: dnf/base.py:662 + #, python-format + msgid "Failed to add groups file for repository: %s - %s" + msgstr "リポジトリーのグループファイルを追加できませんでした: %s - %s" + +-#: dnf/base.py:823 ++#: dnf/base.py:904 + msgid "Running transaction check" + msgstr "トランザクションの確認を実行中" + +-#: dnf/base.py:831 ++#: dnf/base.py:912 + msgid "Error: transaction check vs depsolve:" + msgstr "エラー: トランザクションの確認 vs depsolve:" + +-#: dnf/base.py:837 ++#: dnf/base.py:918 + msgid "Transaction check succeeded." + msgstr "トランザクションの確認に成功しました。" + +-#: dnf/base.py:840 ++#: dnf/base.py:921 + msgid "Running transaction test" + msgstr "トランザクションのテストを実行中" + +-#: dnf/base.py:850 dnf/base.py:992 ++#: dnf/base.py:931 dnf/base.py:1082 + msgid "RPM: {}" + msgstr "RPM: {}" + +-#: dnf/base.py:851 ++#: dnf/base.py:932 + msgid "Transaction test error:" + msgstr "トランザクションテストエラー:" + +-#: dnf/base.py:862 ++#: dnf/base.py:943 + msgid "Transaction test succeeded." + msgstr "トランザクションのテストに成功しました。" + +-#: dnf/base.py:883 ++#: dnf/base.py:964 + msgid "Running transaction" + msgstr "トランザクションを実行中" + +-#: dnf/base.py:911 ++#: dnf/base.py:1001 + msgid "Disk Requirements:" +-msgstr "ディスク要件" ++msgstr "ディスク要件:" + +-#: dnf/base.py:914 ++#: dnf/base.py:1004 + #, python-brace-format + msgid "At least {0}MB more space needed on the {1} filesystem." + msgid_plural "At least {0}MB more space needed on the {1} filesystem." + msgstr[0] "{1} ファイルシステムに最低 {0}MB の追加スペースが必要です。" + +-#: dnf/base.py:921 ++#: dnf/base.py:1011 + msgid "Error Summary" + msgstr "エラーの概要" + +-#: dnf/base.py:947 ++#: dnf/base.py:1037 + #, python-brace-format + msgid "RPMDB altered outside of {prog}." + msgstr "RPMDBは {prog} のサポート外に変更されました。" + +-#: dnf/base.py:993 dnf/base.py:1001 ++#: dnf/base.py:1083 dnf/base.py:1091 + msgid "Could not run transaction." + msgstr "トランザクションを実行できませんでした。" + +-#: dnf/base.py:996 ++#: dnf/base.py:1086 + msgid "Transaction couldn't start:" + msgstr "トランザクションを開始できませんでした:" + +-#: dnf/base.py:1010 ++#: dnf/base.py:1100 + #, python-format + msgid "Failed to remove transaction file %s" + msgstr "トランザクションファイル %s の削除に失敗しました" + +-#: dnf/base.py:1092 ++#: dnf/base.py:1182 + msgid "Some packages were not downloaded. Retrying." + msgstr "一部のパッケージはダウンロードされませんでした。再試行中です。" + +-#: dnf/base.py:1122 ++#: dnf/base.py:1212 + #, python-format + msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)" +-msgstr "Delta RPM により %.1f MB の更新を %.1f MB に削減できました。(%d.1%% がキャッシュされていました)" ++msgstr "" ++"Delta RPM により %.1f MB の更新を %.1f MB に削減できました。(%d.1%% がキャッ" ++"シュされていました)" + +-#: dnf/base.py:1125 ++#: dnf/base.py:1215 + #, python-format + msgid "" + "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)" +-msgstr "非効率な Delta RPM により %.1f MB の更新が増加し、%.1f MB となりました。(%d.1%% が無駄になりました)" ++msgstr "" ++"非効率な Delta RPM により %.1f MB の更新が増加し、%.1f MB となりました。" ++"(%d.1%% が無駄になりました)" + +-#: dnf/base.py:1167 ++#: dnf/base.py:1257 + msgid "Cannot add local packages, because transaction job already exists" +-msgstr "ローカルパッケージを追加できません、トランザクションジョブがすでに存在するためです" ++msgstr "" ++"ローカルパッケージを追加できません、トランザクションジョブがすでに存在するた" ++"めです" + +-#: dnf/base.py:1181 ++#: dnf/base.py:1271 + msgid "Could not open: {}" + msgstr "開くことができませんでした: {}" + +-#: dnf/base.py:1219 ++#: dnf/base.py:1309 + #, python-format + msgid "Public key for %s is not installed" + msgstr "%s の公開鍵がインストールされていません" + +-#: dnf/base.py:1223 ++#: dnf/base.py:1313 + #, python-format + msgid "Problem opening package %s" + msgstr "パッケージ %s を開くことができません" + +-#: dnf/base.py:1231 ++#: dnf/base.py:1321 + #, python-format + msgid "Public key for %s is not trusted" + msgstr "%s の公開鍵は信頼されていません" + +-#: dnf/base.py:1235 ++#: dnf/base.py:1325 + #, python-format + msgid "Package %s is not signed" + msgstr "パッケージ %s は署名されていません" + +-#: dnf/base.py:1265 ++#: dnf/base.py:1355 + #, python-format + msgid "Cannot remove %s" + msgstr "%s を削除できません" + +-#: dnf/base.py:1269 ++#: dnf/base.py:1359 + #, python-format + msgid "%s removed" + msgstr "%s を削除しました" + +-#: dnf/base.py:1549 ++#: dnf/base.py:1639 + msgid "No match for group package \"{}\"" +-msgstr "グループパッケージ \"{}\" に一致するものはありません" ++msgstr "グループパッケージ \"{}\" に一致するものはありません" + +-#: dnf/base.py:1635 ++#: dnf/base.py:1721 + #, python-format + msgid "Adding packages from group '%s': %s" + msgstr "グループ '%s' からのパッケージを追加します: %s" + +-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442 +-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592 +-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80 ++#: dnf/base.py:1744 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437 ++#: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587 ++#: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80 + #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110 + msgid "Nothing to do." + msgstr "行うべきことはありません。" + +-#: dnf/base.py:1676 ++#: dnf/base.py:1762 + msgid "No groups marked for removal." + msgstr "削除対象のパッケージはありません。" + +-#: dnf/base.py:1710 ++#: dnf/base.py:1796 + msgid "No group marked for upgrade." + msgstr "アップグレード対象のグループはありません。" + +-#: dnf/base.py:1925 ++#: dnf/base.py:2010 + #, python-format + msgid "Package %s not installed, cannot downgrade it." +-msgstr "パッケージ %s はインストールされていないので、ダウングレードできません。" ++msgstr "" ++"パッケージ %s はインストールされていないので、ダウングレードできません。" + +-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980 +-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411 +-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482 +-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633 +-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147 ++#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071 ++#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 dnf/cli/cli.py:417 ++#: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477 ++#: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628 ++#: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147 + #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84 +-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121 ++#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116 + #, python-format + msgid "No match for argument: %s" + msgstr "一致した引数がありません: %s" + +-#: dnf/base.py:1934 ++#: dnf/base.py:2019 + #, python-format + msgid "Package %s of lower version already installed, cannot downgrade it." +-msgstr "下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできません。" ++msgstr "" ++"下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできま" ++"せん。" + +-#: dnf/base.py:1957 ++#: dnf/base.py:2042 + #, python-format + msgid "Package %s not installed, cannot reinstall it." +-msgstr "パッケージ %s はインストールされていないのでの、再インストールできません。" ++msgstr "" ++"パッケージ %s はインストールされていないのでの、再インストールできません。" + +-#: dnf/base.py:1972 ++#: dnf/base.py:2057 + #, python-format + msgid "File %s is a source package and cannot be updated, ignoring." + msgstr "ファイル %s はソースパッケージで更新できません。無視します。" + +-#: dnf/base.py:1978 ++#: dnf/base.py:2068 + #, python-format + msgid "Package %s not installed, cannot update it." + msgstr "パッケージ %s はインストールされていないので、更新できません。" + +-#: dnf/base.py:1987 ++#: dnf/base.py:2078 + #, python-format + msgid "" + "The same or higher version of %s is already installed, cannot update it." +-msgstr "同じまたはさらに新しいバージョンの %s が既にインストールされています、アップデートできません。" ++msgstr "" ++"同じまたはさらに新しいバージョンの %s が既にインストールされています、アップ" ++"デートできません。" + +-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81 ++#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81 + #, python-format + msgid "Package %s available, but not installed." + msgstr "パッケージ %s は利用可能ですが、インストールされていません。" + +-#: dnf/base.py:2032 ++#: dnf/base.py:2127 + #, python-format + msgid "Package %s available, but installed for different architecture." +-msgstr "パッケージ %s は利用可能ですが、他のアーキテクチャー用にインストールされています。" ++msgstr "" ++"パッケージ %s は利用可能ですが、他のアーキテクチャー用にインストールされてい" ++"ます。" + +-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699 ++#: dnf/base.py:2152 + #, python-format + msgid "No package %s installed." + msgstr "パッケージ %s はインストールされていません。" + +-#: dnf/base.py:2075 dnf/cli/commands/install.py:136 ++#: dnf/base.py:2170 dnf/cli/commands/install.py:136 + #: dnf/cli/commands/remove.py:133 + #, python-format + msgid "Not a valid form: %s" + msgstr "有効な形式ではありません: %s" + +-#: dnf/base.py:2091 dnf/cli/commands/__init__.py:681 +-#: dnf/cli/commands/remove.py:163 ++#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676 ++#: dnf/cli/commands/remove.py:162 + msgid "No packages marked for removal." + msgstr "削除対象のパッケージはありません。" + +-#: dnf/base.py:2179 dnf/cli/cli.py:422 ++#: dnf/base.py:2273 dnf/cli/cli.py:428 + #, python-format + msgid "Packages for argument %s available, but not installed." +-msgstr "引数 %s のパッケージは利用可能ですが、インストールされていません。" ++msgstr "引数 %s のパッケージは利用可能ですが、インストールされていません。" + +-#: dnf/base.py:2184 ++#: dnf/base.py:2278 + #, python-format + msgid "Package %s of lowest version already installed, cannot downgrade it." +-msgstr "最下位バージョンのパッケージ %s はインストール済みなので、ダウングレードできません。" +- +-#: dnf/base.py:2242 +-msgid "Action not handled: {}" +-msgstr "動作は対処されていません: {}" +- +-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703 +-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169 +-#, python-format +-msgid "No package %s available." +-msgstr "利用可能なパッケージ %s がありません。" +- +-#: dnf/base.py:2269 +-msgid "no package matched" +-msgstr "一致したパッケージはありません。" ++msgstr "" ++"最下位バージョンのパッケージ %s はインストール済みなので、ダウングレードでき" ++"ません。" + +-#: dnf/base.py:2290 ++#: dnf/base.py:2378 + msgid "No security updates needed, but {} update available" + msgstr "セキュリティー更新は必要ありませんが、{} 更新が利用可能です" + +-#: dnf/base.py:2292 ++#: dnf/base.py:2380 + msgid "No security updates needed, but {} updates available" + msgstr "セキュリティー更新は必要ありませんが、{} 更新が利用可能です" + +-#: dnf/base.py:2296 ++#: dnf/base.py:2384 + msgid "No security updates needed for \"{}\", but {} update available" + msgstr "\"{}\" のセキュリティー更新は必要ありませんが、{} 更新が利用可能です" + +-#: dnf/base.py:2298 ++#: dnf/base.py:2386 + msgid "No security updates needed for \"{}\", but {} updates available" + msgstr "\"{}\" のセキュリティー更新は必要ありませんが、{} 更新が利用可能です" + + #. raise an exception, because po.repoid is not in self.repos +-#: dnf/base.py:2319 ++#: dnf/base.py:2407 + #, python-format + msgid "Unable to retrieve a key for a commandline package: %s" +-msgstr "" ++msgstr "コマンドラインパッケージのキーを取得できません: %s" + +-#: dnf/base.py:2327 ++#: dnf/base.py:2415 + #, python-format + msgid ". Failing package is: %s" + msgstr ". 失敗したパッケージは: %s" + +-#: dnf/base.py:2328 ++#: dnf/base.py:2416 + #, python-format + msgid "GPG Keys are configured as: %s" + msgstr "GPG 鍵が設定されています: %s" + +-#: dnf/base.py:2340 ++#: dnf/base.py:2428 + #, python-format + msgid "GPG key at %s (0x%s) is already installed" + msgstr "%s (0x%s) の GPG 鍵はインストール済みです" + +-#: dnf/base.py:2373 ++#: dnf/base.py:2464 + msgid "The key has been approved." + msgstr "鍵が承認されました。" + +-#: dnf/base.py:2376 ++#: dnf/base.py:2467 + msgid "The key has been rejected." + msgstr "鍵が拒否されました。" + +-#: dnf/base.py:2409 ++#: dnf/base.py:2500 + #, python-format + msgid "Key import failed (code %d)" + msgstr "鍵のインポートに失敗しました (コード: %d)" + +-#: dnf/base.py:2411 ++#: dnf/base.py:2502 + msgid "Key imported successfully" + msgstr "鍵のインポートに成功しました" + +-#: dnf/base.py:2415 ++#: dnf/base.py:2506 + msgid "Didn't install any keys" + msgstr "鍵を 1 つもインストールしませんでした" + +-#: dnf/base.py:2418 ++#: dnf/base.py:2509 + #, python-format + msgid "" +-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n" ++"The GPG keys listed for the \"%s\" repository are already installed but they " ++"are not correct for this package.\n" + "Check that the correct key URLs are configured for this repository." + msgstr "" +-"\"%s\" リポジトリーに一覧表示されている GPG 鍵はインストール済みですが、このパッケージには適切ではありません。\n" ++"\"%s\" リポジトリーに一覧表示されている GPG 鍵はインストール済みですが、この" ++"パッケージには適切ではありません。\n" + "正しい鍵 URL がこのリポジトリー用に設定されているか確認してください。" + +-#: dnf/base.py:2429 ++#: dnf/base.py:2520 + msgid "Import of key(s) didn't help, wrong key(s)?" + msgstr "鍵をインポートしても役に立ちませんでした。鍵が間違っていませんか?" + +-#: dnf/base.py:2482 ++#: dnf/base.py:2573 + msgid " * Maybe you meant: {}" + msgstr " * おそらく: {}" + +-#: dnf/base.py:2514 ++#: dnf/base.py:2605 + msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum" +-msgstr "ローカルリポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません" ++msgstr "" ++"ローカルリポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありま" ++"せん" + +-#: dnf/base.py:2517 ++#: dnf/base.py:2608 + msgid "Some packages from local repository have incorrect checksum" +-msgstr "ローカルリポジトリーのいくつかのパッケージのチェックサムは正しくありません" ++msgstr "" ++"ローカルリポジトリーのいくつかのパッケージのチェックサムは正しくありません" + +-#: dnf/base.py:2520 ++#: dnf/base.py:2611 + msgid "Package \"{}\" from repository \"{}\" has incorrect checksum" +-msgstr "リポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません" ++msgstr "" ++"リポジトリー \"{}\" のパッケージ \"{}\" のチェックサムは正しくありません" + +-#: dnf/base.py:2523 ++#: dnf/base.py:2614 + msgid "" + "Some packages have invalid cache, but cannot be downloaded due to \"--" + "cacheonly\" option" +-msgstr "いくつかのパッケージには無効なキャッシュがありますが、\"--cacheonly\" オプションによりダウンロードできません" ++msgstr "" ++"いくつかのパッケージには無効なキャッシュがありますが、\"--cacheonly\" オプ" ++"ションによりダウンロードできません" + +-#: dnf/base.py:2541 dnf/base.py:2561 ++#: dnf/base.py:2632 dnf/base.py:2652 + msgid "No match for argument" + msgstr "一致した引数がありません" + +-#: dnf/base.py:2549 dnf/base.py:2569 ++#: dnf/base.py:2640 dnf/base.py:2660 + msgid "All matches were filtered out by exclude filtering for argument" +-msgstr "すべての検索結果は引数の除外フィルタリングに一致しません(filter out)" ++msgstr "すべての検索結果は引数の除外フィルタリングに一致しません (filter out)" + +-#: dnf/base.py:2551 ++#: dnf/base.py:2642 + msgid "All matches were filtered out by modular filtering for argument" +-msgstr "すべての検出結果は引数のモジュラーフィルタリングに一致しません(filter out)" ++msgstr "" ++"すべての検出結果は引数のモジュラーフィルタリングに一致しません (filter out)" + +-#: dnf/base.py:2567 ++#: dnf/base.py:2658 + msgid "All matches were installed from a different repository for argument" +-msgstr "すべての検索結果は引数に対し異なるレポジトリからインストールされたものです" ++msgstr "" ++"すべての検索結果は引数に対し異なるレポジトリからインストールされたものです" + +-#: dnf/base.py:2583 ++#: dnf/base.py:2705 + #, python-format + msgid "Package %s is already installed." + msgstr "パッケージ %s は既にインストールされています。" +@@ -571,8 +590,8 @@ msgstr "ファイル \"%s\" の解析に失敗しました: %s" + msgid "Cannot read file \"%s\": %s" + msgstr "ファイル \"%s\" を読み込めません: %s" + +-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902 +-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108 ++#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804 ++#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108 + #, python-format + msgid "Config error: %s" + msgstr "設定エラー: %s" +@@ -601,46 +620,56 @@ msgstr " ビルド : %s (日時: %s)" + msgid "" + "The operation would result in switching of module '{0}' stream '{1}' to " + "stream '{2}'" +-msgstr "オペレーションは、モジュール '{0}' ストリーム '{1}' を ストリーム '{2}' へと切り替える結果となります" ++msgstr "" ++"オペレーションは、モジュール '{0}' ストリーム '{1}' を ストリーム '{2}' へと" ++"切り替える結果となります" + +-#: dnf/cli/cli.py:172 ++#: dnf/cli/cli.py:173 + #, python-brace-format + msgid "" +-"It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using '{prog} module reset ' command. After you reset the module, you can install the other stream." ++"It is not possible to switch enabled streams of a module unless explicitly " ++"enabled via configuration option module_stream_switch.\n" ++"It is recommended to rather remove all installed content from the module, " ++"and reset the module using '{prog} module reset ' command. " ++"After you reset the module, you can install the other stream." + msgstr "" +-"モジュールの有効なストリームを切り替えることはできません。\n" +-"モジュールからインストールされた全てのコンテンツを削除し、 '{prog} module reset ' コマンドを使用してリセットすることが推奨されます。モジュールのリセット後、他のストリームをインストール可能です。" ++"設定オプション module_stream_switch から明示的に有効化されていない限り、モ" ++"ジュールの有効なストリームを切り替えることはできません。\n" ++"モジュールからインストールされた全てのコンテンツを削除し、'{prog} module " ++"reset ' コマンドを使用してリセットすることが推奨されます。モ" ++"ジュールのリセット後、他のストリームをインストール可能です。" + +-#: dnf/cli/cli.py:210 ++#: dnf/cli/cli.py:212 + #, python-brace-format + msgid "{prog} will only download packages for the transaction." + msgstr "{prog} はトランザクションでパッケージのダウンロードのみ行います。" + +-#: dnf/cli/cli.py:213 ++#: dnf/cli/cli.py:215 + #, python-brace-format + msgid "" + "{prog} will only download packages, install gpg keys, and check the " + "transaction." +-msgstr "{prog} はパッケージのダウンロード、gpgキーのインストール、トランザクションのチェックのみ行います。" ++msgstr "" ++"{prog} はパッケージのダウンロード、gpgキーのインストール、トランザクションの" ++"チェックのみ行います。" + +-#: dnf/cli/cli.py:217 ++#: dnf/cli/cli.py:219 + msgid "Operation aborted." + msgstr "操作が中断されました。" + +-#: dnf/cli/cli.py:224 ++#: dnf/cli/cli.py:226 + msgid "Downloading Packages:" + msgstr "パッケージのダウンロード:" + +-#: dnf/cli/cli.py:230 ++#: dnf/cli/cli.py:232 + msgid "Error downloading packages:" + msgstr "パッケージのダウンロード中にエラーが発生しました:" + +-#: dnf/cli/cli.py:258 ++#: dnf/cli/cli.py:264 + msgid "Transaction failed" + msgstr "トランザクションが失敗しました" + +-#: dnf/cli/cli.py:281 ++#: dnf/cli/cli.py:287 + msgid "" + "Refusing to automatically import keys when running unattended.\n" + "Use \"-y\" to override." +@@ -648,171 +677,159 @@ msgstr "" + "無人での実行中に鍵の自動インポートを拒否します。\n" + "オーバーライドするには \"-y\" を使用してください。" + +-#: dnf/cli/cli.py:331 ++#: dnf/cli/cli.py:337 + msgid "Changelogs for {}" + msgstr "{} の Changelogs" + +-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511 ++#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517 + msgid "Obsoleting Packages" + msgstr "パッケージの廃止" + +-#: dnf/cli/cli.py:393 ++#: dnf/cli/cli.py:399 + msgid "No packages marked for distribution synchronization." +-msgstr "ディストリビューション同期対象のパッケージがありません" ++msgstr "ディストリビューション同期対象のパッケージがありません。" ++ ++#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395 ++#, python-format ++msgid "No package %s available." ++msgstr "利用可能なパッケージ %s はありません。" + +-#: dnf/cli/cli.py:428 ++#: dnf/cli/cli.py:434 + msgid "No packages marked for downgrade." + msgstr "ダウングレード対象のパッケージはありません。" + +-#: dnf/cli/cli.py:479 ++#: dnf/cli/cli.py:485 + msgid "Installed Packages" + msgstr "インストール済みパッケージ" + +-#: dnf/cli/cli.py:487 ++#: dnf/cli/cli.py:493 + msgid "Available Packages" + msgstr "利用可能なパッケージ" + +-#: dnf/cli/cli.py:491 ++#: dnf/cli/cli.py:497 + msgid "Autoremove Packages" + msgstr "パッケージを自動削除します" + +-#: dnf/cli/cli.py:493 ++#: dnf/cli/cli.py:499 + msgid "Extra Packages" + msgstr "エクストラパッケージ" + +-#: dnf/cli/cli.py:497 ++#: dnf/cli/cli.py:503 + msgid "Available Upgrades" + msgstr "利用可能なアップグレード" + +-#: dnf/cli/cli.py:513 ++#: dnf/cli/cli.py:519 + msgid "Recently Added Packages" + msgstr "最近追加したパッケージ" + +-#: dnf/cli/cli.py:518 ++#: dnf/cli/cli.py:523 + msgid "No matching Packages to list" + msgstr "表示するための一致したパッケージはありません" + +-#: dnf/cli/cli.py:599 ++#: dnf/cli/cli.py:604 + msgid "No Matches found" + msgstr "一致したものは見つかりませんでした" + +-#: dnf/cli/cli.py:609 +-msgid "No transaction ID given" +-msgstr "トランザクション ID は指定されていません" +- +-#: dnf/cli/cli.py:614 +-msgid "Not found given transaction ID" +-msgstr "指定されたトランザクション ID は見つかりません" +- +-#: dnf/cli/cli.py:623 +-msgid "Found more than one transaction ID!" +-msgstr "1 つ以上のトランザクション ID が見つかりました!" +- +-#: dnf/cli/cli.py:640 +-#, python-format +-msgid "Transaction history is incomplete, before %u." +-msgstr "%u の前のトランザクション履歴が不完全です。" +- +-#: dnf/cli/cli.py:642 +-#, python-format +-msgid "Transaction history is incomplete, after %u." +-msgstr "%u の後のトランザクション履歴が不完全です。" +- +-#: dnf/cli/cli.py:689 +-msgid "Undoing transaction {}, from {}" +-msgstr "トランザクション {} を {} から取り消しています" +- +-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237 ++#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237 + #, python-format + msgid "Unknown repo: '%s'" + msgstr "不明な repo : '%s'" + +-#: dnf/cli/cli.py:783 ++#: dnf/cli/cli.py:685 + #, python-format + msgid "No repository match: %s" + msgstr "一致するリポジトリーがありません: %s" + +-#: dnf/cli/cli.py:817 ++#: dnf/cli/cli.py:719 + msgid "" +-"This command has to be run with superuser privileges (under the root user on" +-" most systems)." +-msgstr "このコマンドはスーパーユーザー特権(大概のシステムではrootユーザー)で実行しなければいけません。" ++"This command has to be run with superuser privileges (under the root user on " ++"most systems)." ++msgstr "" ++"このコマンドはスーパーユーザー特権(大概のシステムではrootユーザー)で実行しな" ++"ければいけません。" + +-#: dnf/cli/cli.py:847 ++#: dnf/cli/cli.py:749 + #, python-format + msgid "No such command: %s. Please use %s --help" +-msgstr "そのようなコマンドはありません: %s. %s --help を使用してください。" ++msgstr "そのようなコマンドはありません: %s. %s --help を使用してください" + +-#: dnf/cli/cli.py:850 ++#: dnf/cli/cli.py:752 + #, python-format, python-brace-format + msgid "" + "It could be a {PROG} plugin command, try: \"{prog} install 'dnf-" + "command(%s)'\"" +-msgstr "{PROG} プラグインコマンドを実行できません、試してください: \"{prog} install 'dnf-command(%s)'\"" ++msgstr "" ++"{PROG} プラグインコマンドを実行できません、試してください: \"{prog} install " ++"'dnf-command(%s)'\"" + +-#: dnf/cli/cli.py:854 ++#: dnf/cli/cli.py:756 + #, python-brace-format + msgid "" + "It could be a {prog} plugin command, but loading of plugins is currently " + "disabled." +-msgstr "{prog} プラグインコマンドを実行できません、プラグインのロードが現在無効になっているようです。" ++msgstr "" ++"{prog} プラグインコマンドを実行できません、プラグインのロードが現在無効になっ" ++"ているようです。" + +-#: dnf/cli/cli.py:912 ++#: dnf/cli/cli.py:814 + msgid "" + "--destdir or --downloaddir must be used with --downloadonly or download or " + "system-upgrade command." + msgstr "" +-"--destdir または --downloaddir は、--downloadonly、download あるいは system-upgrade " +-"コマンドと共に使用する必要があります。" ++"--destdir または --downloaddir は、--downloadonly、download あるいは system-" ++"upgrade コマンドと共に使用する必要があります。" + +-#: dnf/cli/cli.py:918 ++#: dnf/cli/cli.py:820 + msgid "" + "--enable, --set-enabled and --disable, --set-disabled must be used with " + "config-manager command." + msgstr "" +-"--enable と --set-enabled および --disable と --set-disabled は、config-manager " +-"コマンドと共に使用しなければなりません。" ++"--enable と --set-enabled および --disable と --set-disabled は、config-" ++"manager コマンドと共に使用しなければなりません。" + +-#: dnf/cli/cli.py:1000 ++#: dnf/cli/cli.py:902 + msgid "" + "Warning: Enforcing GPG signature check globally as per active RPM security " + "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)" + msgstr "" +-"警告: アクティブな RPM セキュリティーポリシーにより、GPG 署名の確認をグローバルに強制します " +-"(このメッセージをスケルチするには、dnf.conf(5) の 'gpgcheck' を参照してください)" ++"警告: アクティブな RPM セキュリティーポリシーにより、GPG 署名の確認をグローバ" ++"ルに強制します (このメッセージをスケルチするには、dnf.conf(5) の 'gpgcheck' " ++"を参照してください)" + +-#: dnf/cli/cli.py:1020 ++#: dnf/cli/cli.py:922 + msgid "Config file \"{}\" does not exist" + msgstr "設定ファイル \"{}\" は存在しません" + +-#: dnf/cli/cli.py:1040 ++#: dnf/cli/cli.py:942 + msgid "" + "Unable to detect release version (use '--releasever' to specify release " + "version)" +-msgstr "リリースバージョンを検出できません (リリースバージョンを指定するには '--releasever' を使用してください)" ++msgstr "" ++"リリースバージョンを検出できません (リリースバージョンを指定するには '--" ++"releasever' を使用してください)" + +-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471 ++#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471 + msgid "argument {}: not allowed with argument {}" + msgstr "引数 {}: 引数 {} と許可されていません" + +-#: dnf/cli/cli.py:1134 ++#: dnf/cli/cli.py:1023 + #, python-format + msgid "Command \"%s\" already defined" + msgstr "コマンド \"%s\" はすでに定義済みです" + +-#: dnf/cli/cli.py:1154 ++#: dnf/cli/cli.py:1043 + msgid "Excludes in dnf.conf: " + msgstr "dnf.conf で除外します: " + +-#: dnf/cli/cli.py:1157 ++#: dnf/cli/cli.py:1046 + msgid "Includes in dnf.conf: " + msgstr "dnf.conf で含めます: " + +-#: dnf/cli/cli.py:1160 ++#: dnf/cli/cli.py:1049 + msgid "Excludes in repo " + msgstr "repo で除外します " + +-#: dnf/cli/cli.py:1163 ++#: dnf/cli/cli.py:1052 + msgid "Includes in repo " + msgstr "repo に含めます " + +@@ -824,13 +841,16 @@ msgstr "問題を診断するには実行してみてください: '%s'." + #: dnf/cli/commands/__init__.py:40 + #, python-format + msgid "You probably have corrupted RPMDB, running '%s' might fix the issue." +-msgstr "RPMDB を破損させたかもしれませんが、'%s' を実行することでこの問題を解決できる可能性があります。" ++msgstr "" ++"RPMDB を破損させたかもしれませんが、'%s' を実行することでこの問題を解決できる" ++"可能性があります。" + + #: dnf/cli/commands/__init__.py:44 + #, python-brace-format + msgid "" + "You have enabled checking of packages via GPG keys. This is a good thing.\n" +-"However, you do not have any GPG public keys installed. You need to download\n" ++"However, you do not have any GPG public keys installed. You need to " ++"download\n" + "the keys for packages you wish to install and install them.\n" + "You can do that by running the command:\n" + " rpm --import public.gpg.key\n" +@@ -849,11 +869,13 @@ msgstr "" + " rpm --import public.gpg.key\n" + "\n" + "\n" +-"代わりにレポジトリーセクションの 'gpgkey' オプションにあるレポジトリーを使用し\n" ++"代わりにレポジトリーセクションの 'gpgkey' オプションにあるレポジトリーを使用" ++"し\n" + "キーのurlを特定したのち、 {prog} がインストールされます。\n" + "\n" + "\n" +-"詳細情報はディストリビューションまたはパッケージプロバイダーにコンタクトしてください。" ++"詳細情報はディストリビューションまたはパッケージプロバイダーにコンタクトして" ++"ください。" + + #: dnf/cli/commands/__init__.py:71 + #, python-format +@@ -864,38 +886,38 @@ msgstr "問題のリポジトリ: %s" + msgid "display details about a package or group of packages" + msgstr "パッケージもしくはパッケージのグループについての詳細を表示します" + +-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740 ++#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735 + msgid "show all packages (default)" + msgstr "すべてのパッケージを表示します (デフォルト)" + +-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743 +-#: dnf/cli/commands/module.py:351 ++#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738 ++#: dnf/cli/commands/module.py:376 + msgid "show only available packages" + msgstr "利用可能なパッケージのみを表示します" + +-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746 ++#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741 + msgid "show only installed packages" + msgstr "インストール済みのパッケージのみを表示します" + +-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749 ++#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744 + msgid "show only extras packages" + msgstr "エクストラパッケージのみを表示します" + + #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183 +-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755 ++#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750 + msgid "show only upgrades packages" + msgstr "アップグレードパッケージのみを表示します" + +-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758 ++#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753 + msgid "show only autoremove packages" + msgstr "自動削除パッケージのみを表示します" + +-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761 ++#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756 + msgid "show only recently changed packages" + msgstr "最近変更されたパッケージのみを表示します" + + #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265 +-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48 ++#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48 + #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44 + #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46 + msgid "PACKAGE" +@@ -933,70 +955,70 @@ msgstr "利用可能なパッケージのアップグレードを確認します + msgid "show changelogs before update" + msgstr "更新前に changelogs を表示します" + +-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414 +-#: dnf/cli/commands/__init__.py:470 ++#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409 ++#: dnf/cli/commands/__init__.py:465 + msgid "No package available." + msgstr "利用可能なパッケージがありません。" + +-#: dnf/cli/commands/__init__.py:376 ++#: dnf/cli/commands/__init__.py:371 + msgid "No packages marked for install." + msgstr "インストール対象のパッケージはありません。" + +-#: dnf/cli/commands/__init__.py:412 ++#: dnf/cli/commands/__init__.py:407 + msgid "No package installed." + msgstr "インストールされたパッケージはありません。" + +-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489 ++#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484 + #: dnf/cli/commands/reinstall.py:91 + #, python-format + msgid " (from %s)" + msgstr " (%s から)" + +-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490 ++#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485 + #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105 + #, python-format + msgid "Installed package %s%s not available." + msgstr "インストール済みパッケージ %s%s は利用できません。" + +-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576 +-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666 ++#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571 ++#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661 + msgid "No package installed from the repository." + msgstr "リポジトリーからインストールされたパッケージはありません。" + +-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101 ++#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101 + msgid "No packages marked for reinstall." + msgstr "再インストール対象のパッケージはありません。" + +-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89 ++#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84 + msgid "No packages marked for upgrade." + msgstr "アップグレード対象のパッケージがありません。" + +-#: dnf/cli/commands/__init__.py:726 ++#: dnf/cli/commands/__init__.py:721 + msgid "run commands on top of all packages in given repository" + msgstr "特定のリポジトリーのすべてのパッケージに対して、コマンドを実行します" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "REPOID" + msgstr "REPOID" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "Repository ID" + msgstr "リポジトリーID" + +-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48 ++#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48 + #: dnf/cli/commands/updateinfo.py:108 + msgid "Package specification" + msgstr "パッケージspec" + +-#: dnf/cli/commands/__init__.py:801 ++#: dnf/cli/commands/__init__.py:796 + msgid "display a helpful usage message" + msgstr "有用な使用方法のメッセージを表示します" + +-#: dnf/cli/commands/__init__.py:805 ++#: dnf/cli/commands/__init__.py:800 + msgid "COMMAND" + msgstr "コマンド" + +-#: dnf/cli/commands/__init__.py:806 ++#: dnf/cli/commands/__init__.py:801 + #, python-brace-format + msgid "{prog} command to get help for" + msgstr "{prog} コマンドでヘルプ表示" +@@ -1088,7 +1110,8 @@ msgstr "一致するエイリアスがありません: %s" + #: dnf/cli/commands/autoremove.py:41 + msgid "" + "remove all unneeded packages that were originally installed as dependencies" +-msgstr "当初は依存関係としてインストールされた不要なパッケージをすべて削除します" ++msgstr "" ++"当初は依存関係としてインストールされた不要なパッケージをすべて削除します" + + #: dnf/cli/commands/autoremove.py:46 dnf/cli/commands/remove.py:59 + msgid "Package to remove" +@@ -1167,8 +1190,12 @@ msgid "Waiting for process with pid %d to finish." + msgstr "pid %d のプロセスが終了するのを待ちます。" + + #: dnf/cli/commands/deplist.py:32 +-msgid "List package's dependencies and what packages provide them" +-msgstr "パッケージの依存関係とこれを提供するパッケージがどれかを一覧表示します" ++msgid "" ++"[deprecated, use repoquery --deplist] List package's dependencies and what " ++"packages provide them" ++msgstr "" ++"[非推奨、epoquery --deplist を使用] パッケージの依存関係とこれを提供するパッ" ++"ケージがどれかを一覧表示します" + + #: dnf/cli/commands/distrosync.py:32 + msgid "synchronize installed packages to the latest available versions" +@@ -1194,78 +1221,78 @@ msgstr "グループ情報を表示または使用します" + msgid "No group data available for configured repositories." + msgstr "設定されたリポジトリーが利用可能なグループデータはありません。" + +-#: dnf/cli/commands/group.py:129 ++#: dnf/cli/commands/group.py:126 + #, python-format + msgid "Warning: Group %s does not exist." + msgstr "警告: グループ %s は存在しません。" + +-#: dnf/cli/commands/group.py:170 ++#: dnf/cli/commands/group.py:167 + msgid "Warning: No groups match:" + msgstr "警告: 一致するグループはありません:" + +-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193 +-#: dnf/cli/output.py:1226 ++#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190 ++#: dnf/cli/output.py:1139 + msgid "" + msgstr "" + +-#: dnf/cli/commands/group.py:199 ++#: dnf/cli/commands/group.py:196 + msgid "Available Environment Groups:" + msgstr "利用可能な環境グループ:" + +-#: dnf/cli/commands/group.py:201 ++#: dnf/cli/commands/group.py:198 + msgid "Installed Environment Groups:" + msgstr "インストール済みの環境グループ:" + +-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294 ++#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291 + msgid "Installed Groups:" + msgstr "インストール済みのグループ:" + +-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301 ++#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298 + msgid "Installed Language Groups:" + msgstr "インストール済みの言語グループ:" + +-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308 ++#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305 + msgid "Available Groups:" + msgstr "利用可能なグループ:" + +-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315 ++#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312 + msgid "Available Language Groups:" + msgstr "利用可能な言語グループ:" + +-#: dnf/cli/commands/group.py:322 ++#: dnf/cli/commands/group.py:319 + msgid "include optional packages from group" + msgstr "グループのオプションパッケージを含めます" + +-#: dnf/cli/commands/group.py:325 ++#: dnf/cli/commands/group.py:322 + msgid "show also hidden groups" + msgstr "非表示のグループも表示します" + +-#: dnf/cli/commands/group.py:327 ++#: dnf/cli/commands/group.py:324 + msgid "show only installed groups" + msgstr "インストール済みのグループのみを表示します" + +-#: dnf/cli/commands/group.py:329 ++#: dnf/cli/commands/group.py:326 + msgid "show only available groups" + msgstr "利用可能なグループのみを表示します" + +-#: dnf/cli/commands/group.py:331 ++#: dnf/cli/commands/group.py:328 + msgid "show also ID of groups" + msgstr "グループIDも表示" + +-#: dnf/cli/commands/group.py:333 ++#: dnf/cli/commands/group.py:330 + msgid "available subcommands: {} (default), {}" + msgstr "利用可能なサブコマンド: {} (default), {}" + +-#: dnf/cli/commands/group.py:337 ++#: dnf/cli/commands/group.py:334 + msgid "argument for group subcommand" + msgstr "グループサブコマンドの引数" + +-#: dnf/cli/commands/group.py:346 ++#: dnf/cli/commands/group.py:343 + #, python-format + msgid "Invalid groups sub-command, use: %s." +-msgstr "groups のサブコマンドが無効です: %s. を使用します" ++msgstr "groups のサブコマンドが無効です: %s を使用します。" + +-#: dnf/cli/commands/group.py:403 ++#: dnf/cli/commands/group.py:398 + msgid "Unable to find a mandatory group package." + msgstr "必須のグループパッケージを見つけることができません。" + +@@ -1275,25 +1302,31 @@ msgstr "トランザクション履歴を表示、または使用します" + + #: dnf/cli/commands/history.py:66 + msgid "For the store command, file path to store the transaction to" +-msgstr "" ++msgstr "store コマンドの場合は、トランザクションを保存するファイルパス" + + #: dnf/cli/commands/history.py:68 + msgid "" +-"For the replay command, don't check for installed packages matching those in" +-" transaction" ++"For the replay command, don't check for installed packages matching those in " ++"transaction" + msgstr "" ++"replay コマンドの場合は、トランザクション内のパッケージに一致するインストール" ++"済みパッケージを確認しない" + + #: dnf/cli/commands/history.py:71 + msgid "" + "For the replay command, don't check for extra packages pulled into the " + "transaction" + msgstr "" ++"replay コマンドの場合は、トランザクションにプルされた追加パッケージを確認しな" ++"い" + + #: dnf/cli/commands/history.py:74 + msgid "" +-"For the replay command, skip packages that are not available or have missing" +-" dependencies" ++"For the replay command, skip packages that are not available or have missing " ++"dependencies" + msgstr "" ++"replay コマンドの場合は、利用できないパッケージや、依存関係が不足しているパッ" ++"ケージをスキップ" + + #: dnf/cli/commands/history.py:94 + msgid "" +@@ -1304,41 +1337,68 @@ msgstr "" + "'{}' は 1 つのトランザクション ID またはパッケージ名が必要です。" + + #: dnf/cli/commands/history.py:101 +-#, fuzzy +-#| msgid "No transaction ID or package name given." + msgid "No transaction file name given." +-msgstr "トランザクション ID、またはパッケージ名が指定されていません。" ++msgstr "トランザクションファイル名が指定されていません。" + + #: dnf/cli/commands/history.py:103 +-#, fuzzy +-#| msgid "Failed to remove transaction file %s" + msgid "More than one argument given as transaction file name." +-msgstr "トランザクションファイル %s の削除に失敗しました" ++msgstr "トランザクションファイル名として指定された複数の引数。" + +-#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:126 ++#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130 + msgid "No transaction ID or package name given." + msgstr "トランザクション ID、またはパッケージ名が指定されていません。" + +-#: dnf/cli/commands/history.py:138 ++#: dnf/cli/commands/history.py:142 + #, python-format + msgid "You don't have access to the history DB: %s" + msgstr "履歴 DB にアクセスできません: %s" + +-#: dnf/cli/commands/history.py:147 ++#: dnf/cli/commands/history.py:151 + #, python-format + msgid "" +-"Cannot undo transaction %s, doing so would result in an inconsistent package" +-" database." +-msgstr "トランザクション %s を取り消すことはできません。取り消すことで、パッケージデータベースに矛盾が生じます。" ++"Cannot undo transaction %s, doing so would result in an inconsistent package " ++"database." ++msgstr "" ++"トランザクション %s を取り消すことはできません。取り消すことで、パッケージ" ++"データベースに矛盾が生じます。" + +-#: dnf/cli/commands/history.py:152 ++#: dnf/cli/commands/history.py:156 + #, python-format + msgid "" + "Cannot rollback transaction %s, doing so would result in an inconsistent " + "package database." +-msgstr "トランザクション %s をロールバックすることはできません。ロールバックすることで、パッケージデータベースに矛盾が生じます。" ++msgstr "" ++"トランザクション %s をロールバックすることはできません。ロールバックすること" ++"で、パッケージデータベースに矛盾が生じます。" ++ ++#: dnf/cli/commands/history.py:175 ++msgid "No transaction ID given" ++msgstr "トランザクション ID は指定されていません" ++ ++#: dnf/cli/commands/history.py:179 ++#, python-brace-format ++msgid "Transaction ID \"{0}\" not found." ++msgstr "トランザクション ID \"{0}\" が見つかりません。" ++ ++#: dnf/cli/commands/history.py:185 ++msgid "Found more than one transaction ID!" ++msgstr "1 つ以上のトランザクション ID が見つかりました!" ++ ++#: dnf/cli/commands/history.py:203 ++#, python-format ++msgid "Transaction history is incomplete, before %u." ++msgstr "%u の前のトランザクション履歴が不完全です。" ++ ++#: dnf/cli/commands/history.py:205 ++#, python-format ++msgid "Transaction history is incomplete, after %u." ++msgstr "%u の後のトランザクション履歴が不完全です。" + +-#: dnf/cli/commands/history.py:222 ++#: dnf/cli/commands/history.py:256 ++msgid "No packages to list" ++msgstr "一覧表示するパッケージはありません" ++ ++#: dnf/cli/commands/history.py:279 + msgid "" + "Invalid transaction ID range definition '{}'.\n" + "Use '..'." +@@ -1346,7 +1406,7 @@ msgstr "" + "無効なトランザクション ID の範囲の定義 '{}'。\n" + "'..' を使用してください。" + +-#: dnf/cli/commands/history.py:226 ++#: dnf/cli/commands/history.py:283 + msgid "" + "Can't convert '{}' to transaction ID.\n" + "Use '', 'last', 'last-'." +@@ -1354,40 +1414,29 @@ msgstr "" + "'{}' をトランザクション IDに変換できません。\n" + "'', 'last', 'last-' を使用してください。" + +-#: dnf/cli/commands/history.py:255 ++#: dnf/cli/commands/history.py:312 + msgid "No transaction which manipulates package '{}' was found." + msgstr "パッケージ '{}' を操作するトランザクションが見つかりません。" + +-#: dnf/cli/commands/history.py:305 +-#, fuzzy, python-brace-format +-#| msgid "TransactionItem not found for key: {}" +-msgid "Transaction ID \"{id}\" not found." +-msgstr "TransactionItemが見つかりません鍵: {}" +- +-#: dnf/cli/commands/history.py:313 ++#: dnf/cli/commands/history.py:357 + msgid "{} exists, overwrite?" +-msgstr "" ++msgstr "{} は存在します。上書きしますか?" + +-#: dnf/cli/commands/history.py:316 ++#: dnf/cli/commands/history.py:360 + msgid "Not overwriting {}, exiting." +-msgstr "" ++msgstr "{} は存在するため上書きしません。" + +-#: dnf/cli/commands/history.py:323 +-#, fuzzy +-#| msgid "Transaction failed" ++#: dnf/cli/commands/history.py:367 + msgid "Transaction saved to {}." +-msgstr "トランザクションが失敗しました" ++msgstr "{} に保存されているトランザクション。" + +-#: dnf/cli/commands/history.py:326 +-#, fuzzy +-#| msgid "Errors occurred during transaction." ++#: dnf/cli/commands/history.py:370 + msgid "Error storing transaction: {}" +-msgstr "トランザクション中にエラーが発生しました。" ++msgstr "トランザクションの保存エラー: {}" + +-#: dnf/cli/commands/history.py:350 +-msgid "" +-"Warning, the following problems occurred while replaying the transaction:" +-msgstr "" ++#: dnf/cli/commands/history.py:386 ++msgid "Warning, the following problems occurred while running a transaction:" ++msgstr "警告: トランザクションの実行中に以下の問題が発生しました:" + + #: dnf/cli/commands/install.py:47 + msgid "install a package or packages on your system" +@@ -1406,7 +1455,7 @@ msgstr "一致するものが見つかりません" + msgid "Not a valid rpm file path: %s" + msgstr "有効な rpm ファイルパスではありません: %s" + +-#: dnf/cli/commands/install.py:167 ++#: dnf/cli/commands/install.py:166 + #, python-brace-format + msgid "There are following alternatives for \"{0}\": {1}" + msgstr "\"{0}\"には次の選択肢があります: {1}" +@@ -1421,7 +1470,9 @@ msgstr "すべてのメタデータファイルのキャッシュファイルを + + #: dnf/cli/commands/mark.py:39 + msgid "mark or unmark installed packages as installed by user." +-msgstr "インストール済みパッケージをユーザーがインストールしたとマークするか、またはマークをはずします。" ++msgstr "" ++"インストール済みパッケージをユーザーがインストールしたとマークするか、または" ++"マークをはずします。" + + #: dnf/cli/commands/mark.py:44 + msgid "" +@@ -1449,7 +1500,7 @@ msgid "%s marked as group installed." + msgstr "グループインストールには %s のマークがついています。" + + #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129 +-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279 ++#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282 + msgid "Error:" + msgstr "エラー:" + +@@ -1458,89 +1509,95 @@ msgstr "エラー:" + msgid "Package %s is not installed." + msgstr "パッケージ %s はインストールされていません。" + +-#: dnf/cli/commands/module.py:51 ++#: dnf/cli/commands/module.py:54 + msgid "" +-"Only module name, stream, architecture or profile is used. Ignoring unneeded" +-" information in argument: '{}'" +-msgstr "モジュール名、ストリーム、アーキテクチャーまたはプロファイルのみが使用されています。引数: '{}' の不要な情報は無視します" ++"Only module name, stream, architecture or profile is used. Ignoring unneeded " ++"information in argument: '{}'" ++msgstr "" ++"モジュール名、ストリーム、アーキテクチャーまたはプロファイルのみが使用されて" ++"います。引数: '{}' の不要な情報は無視します" + +-#: dnf/cli/commands/module.py:77 ++#: dnf/cli/commands/module.py:80 + msgid "list all module streams, profiles and states" + msgstr "全てのモジュールストリーム、プロファイル、状態をリスト" + +-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128 ++#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131 + msgid "No matching Modules to list" + msgstr "表示する一致モジュールはありません" + +-#: dnf/cli/commands/module.py:111 ++#: dnf/cli/commands/module.py:114 + msgid "print detailed information about a module" + msgstr "モジュールに関する詳細情報を表示" + +-#: dnf/cli/commands/module.py:133 ++#: dnf/cli/commands/module.py:136 + msgid "enable a module stream" + msgstr "モジュールストリームを有効化" + +-#: dnf/cli/commands/module.py:157 ++#: dnf/cli/commands/module.py:160 + msgid "disable a module with all its streams" + msgstr "すべてのストリームのモジュールを無効化" + +-#: dnf/cli/commands/module.py:181 ++#: dnf/cli/commands/module.py:184 + msgid "reset a module" + msgstr "モジュールのリセット" + +-#: dnf/cli/commands/module.py:202 ++#: dnf/cli/commands/module.py:205 + msgid "install a module profile including its packages" + msgstr "パッケージを含むモジュールプロファイルのインストール" + +-#: dnf/cli/commands/module.py:223 ++#: dnf/cli/commands/module.py:226 + msgid "update packages associated with an active stream" + msgstr "アクティブストリームに紐づいたパッケージをアップデート" + +-#: dnf/cli/commands/module.py:240 ++#: dnf/cli/commands/module.py:243 + msgid "remove installed module profiles and their packages" + msgstr "インストールされたモジュールプロファイルとそのパッケージを削除" + +-#: dnf/cli/commands/module.py:264 ++#: dnf/cli/commands/module.py:267 + msgid "Package {} belongs to multiple modules, skipping" + msgstr "パッケージ {} は複数のモジュールに属しています、スキップします" + +-#: dnf/cli/commands/module.py:277 ++#: dnf/cli/commands/module.py:280 ++msgid "switch a module to a stream and distrosync rpm packages" ++msgstr "モジュールをストリームに切り替え、rpm パッケージを distrosync します" ++ ++#: dnf/cli/commands/module.py:302 + msgid "list modular packages" + msgstr "モジュラーパッケージをリスト" + +-#: dnf/cli/commands/module.py:292 ++#: dnf/cli/commands/module.py:317 + msgid "list packages belonging to a module" + msgstr "モジュールに属するパッケージをリスト" + +-#: dnf/cli/commands/module.py:327 ++#: dnf/cli/commands/module.py:352 + msgid "Interact with Modules." + msgstr "モジュールと対話します。" + +-#: dnf/cli/commands/module.py:340 ++#: dnf/cli/commands/module.py:365 + msgid "show only enabled modules" + msgstr "有効なモジュールのみを表示します" + +-#: dnf/cli/commands/module.py:343 ++#: dnf/cli/commands/module.py:368 + msgid "show only disabled modules" + msgstr "無効なモジュールのみを表示します" + +-#: dnf/cli/commands/module.py:346 ++#: dnf/cli/commands/module.py:371 + msgid "show only installed modules or packages" + msgstr "インストールされたモジュールまたはパッケージのみ表示" + +-#: dnf/cli/commands/module.py:349 ++#: dnf/cli/commands/module.py:374 + msgid "show profile content" + msgstr "プロファイルコンテンツを表示します" + +-#: dnf/cli/commands/module.py:354 ++#: dnf/cli/commands/module.py:379 + msgid "remove all modular packages" + msgstr "すべてのモジュラーパッケージを削除" + +-#: dnf/cli/commands/module.py:364 ++#: dnf/cli/commands/module.py:389 + msgid "Module specification" + msgstr "モジュールspec" + +-#: dnf/cli/commands/module.py:386 ++#: dnf/cli/commands/module.py:411 + msgid "{} {} {}: too few arguments" + msgstr "{} {} {}: 引数が足りません" + +@@ -1729,7 +1786,9 @@ msgstr "キーワードに一致するパッケージを検索します" + msgid "" + "Query all packages (shorthand for repoquery '*' or repoquery without " + "argument)" +-msgstr "すべてのパッケージをクエリーします (repoquery '*' の短縮形、または引数なしの repoquery)" ++msgstr "" ++"すべてのパッケージをクエリーします (repoquery '*' の短縮形、または引数なしの " ++"repoquery)" + + #: dnf/cli/commands/repoquery.py:124 + msgid "Query all versions of packages (default)" +@@ -1751,7 +1810,9 @@ msgstr "REQ と競合する結果のみを表示します" + msgid "" + "shows results that requires, suggests, supplements, enhances,or recommends " + "package provides and files REQ" +-msgstr "REQ を提供およびファイルするパッケージを必要、提案、補完、機能強化、または推奨する結果を表示します" ++msgstr "" ++"REQ を提供およびファイルするパッケージを必要、提案、補完、機能強化、または推" ++"奨する結果を表示します" + + #: dnf/cli/commands/repoquery.py:139 + msgid "show only results that obsolete REQ" +@@ -1793,7 +1854,9 @@ msgstr "指定されたとおりに依存関係を確認します。--alldeps + msgid "" + "used with --whatrequires, and --requires --resolve, query packages " + "recursively." +-msgstr "--whatrequires および --requires --resolve と共に使用し、パッケージを再帰的にクエリーします。" ++msgstr "" ++"--whatrequires および --requires --resolve と共に使用し、パッケージを再帰的に" ++"クエリーします。" + + #: dnf/cli/commands/repoquery.py:166 + msgid "show a list of all dependencies and what packages provide them" +@@ -1815,7 +1878,9 @@ msgstr "対応するソース RPM で操作します" + msgid "" + "show N latest packages for a given name.arch (or latest but N if N is " + "negative)" +-msgstr "特定の name.arch に最新パッケージ N を表示します (または N がネガティブな場合は N 以外の最新のもの)" ++msgstr "" ++"特定の name.arch に最新パッケージ N を表示します (または N がネガティブな場合" ++"は N 以外の最新のもの)" + + #: dnf/cli/commands/repoquery.py:177 + msgid "list also packages of inactive module streams" +@@ -1840,9 +1905,11 @@ msgstr "パッケージの changelogs を表示します" + #: dnf/cli/commands/repoquery.py:194 + #, python-format, python-brace-format + msgid "" +-"display format for listing packages: \"%%{name} %%{version} ...\", use " +-"--querytags to view full tag list" ++"display format for listing packages: \"%%{name} %%{version} ...\", use --" ++"querytags to view full tag list" + msgstr "" ++"パッケージを一覧表示するための形式の表示: \"%%{name} %%{version} ...\"。--" ++"querytags を指定して完全なタグリストを表示" + + #: dnf/cli/commands/repoquery.py:198 + msgid "show available tags to use with --queryformat" +@@ -1853,19 +1920,24 @@ msgid "" + "use name-epoch:version-release.architecture format for displaying found " + "packages (default)" + msgstr "" +-"見つかったパッケージを表示するには name-epoch:version-release.architecture 形式を使用します (デフォルト)" ++"見つかったパッケージを表示するには name-epoch:version-release.architecture 形" ++"式を使用します (デフォルト)" + + #: dnf/cli/commands/repoquery.py:205 + msgid "" + "use name-version-release format for displaying found packages (rpm query " + "default)" +-msgstr "見つかったパッケージを表示するには name-version-release 形式を使用します (rpm クエリーデフォルト)" ++msgstr "" ++"見つかったパッケージを表示するには name-version-release 形式を使用します " ++"(rpm クエリーデフォルト)" + + #: dnf/cli/commands/repoquery.py:211 + msgid "" + "use epoch:name-version-release.architecture format for displaying found " + "packages" +-msgstr "見つかったパッケージを表示するには epoch:name-version-release.architecture 形式を使用します" ++msgstr "" ++"見つかったパッケージを表示するには epoch:name-version-release.architecture 形" ++"式を使用します" + + #: dnf/cli/commands/repoquery.py:214 + msgid "Display in which comps groups are presented selected packages" +@@ -1881,7 +1953,8 @@ msgstr "インストール済みの installonly パッケージへのクエリ + + #: dnf/cli/commands/repoquery.py:228 + msgid "limit the query to installed packages with unsatisfied dependencies" +-msgstr "未充足な依存関係があるインストール済みパッケージへのクエリーを制限します" ++msgstr "" ++"未充足な依存関係があるインストール済みパッケージへのクエリーを制限します" + + #: dnf/cli/commands/repoquery.py:230 + msgid "show a location from where packages can be downloaded" +@@ -1895,7 +1968,8 @@ msgstr "パッケージが競合する機能を表示します。" + msgid "" + "Display capabilities that the package can depend on, enhance, recommend, " + "suggest, and supplement." +-msgstr "パッケージが依存、機能強化、推奨、提案、および補完できる機能を表示します。" ++msgstr "" ++"パッケージが依存、機能強化、推奨、提案、および補完できる機能を表示します。" + + #: dnf/cli/commands/repoquery.py:236 + msgid "Display capabilities that the package can enhance." +@@ -1920,9 +1994,10 @@ msgid "" + "running %%pre and %%post scriptlets. If the package is installed display " + "capabilities that is depends for %%pre, %%post, %%preun and %%postun." + msgstr "" +-"このパッケージがインストールされていない場合、 %%pre と %%post " +-"スクリプトレット実行に依存するケイパビリティを表示します。このパッケージがインストールされている場合、 %%pre, %%post, %%preun と" +-" %%postun に依存するケイパビリティを表示します。" ++"このパッケージがインストールされていない場合、 %%pre と %%post スクリプトレッ" ++"ト実行に依存するケイパビリティを表示します。このパッケージがインストールされ" ++"ている場合、 %%pre, %%post, %%preun と %%postun に依存するケイパビリティを表" ++"示します。" + + #: dnf/cli/commands/repoquery.py:243 + msgid "Display capabilities that the package suggests." +@@ -1949,7 +2024,9 @@ msgstr "利用可能なリポジトリーに存在しないパッケージのみ + msgid "" + "Display only packages that provide an upgrade for some already installed " + "package." +-msgstr "インストール済みのパッケージの一部にアップグレードを提供するパッケージのみを表示します。" ++msgstr "" ++"インストール済みのパッケージの一部にアップグレードを提供するパッケージのみを" ++"表示します。" + + #: dnf/cli/commands/repoquery.py:256 + #, python-brace-format +@@ -1971,26 +2048,28 @@ msgstr "検索するための鍵" + + #: dnf/cli/commands/repoquery.py:295 + msgid "" +-"Option '--resolve' has to be used together with one of the '--conflicts', '" +-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--" ++"Option '--resolve' has to be used together with one of the '--conflicts', '--" ++"depends', '--enhances', '--provides', '--recommends', '--requires', '--" + "requires-pre', '--suggests' or '--supplements' options" + msgstr "" +-"オプションの '--resolve' は、'--conflicts'、'--depends'、'--enhances'、'--provides'、'--" +-"recommends'、'--requires'、'--requires-pre'、'--suggests' または '--supplements' " +-"オプションのいずれか 1 つと使用する必要があります。" ++"オプションの '--resolve' は、'--conflicts'、'--depends'、'--enhances'、'--" ++"provides'、'--recommends'、'--requires'、'--requires-pre'、'--suggests' また" ++"は '--supplements' オプションのいずれか 1 つと使用する必要があります" + + #: dnf/cli/commands/repoquery.py:305 + msgid "" + "Option '--recursive' has to be used with '--whatrequires ' (optionally " +-"with '--alldeps', but not with '--exactdeps'), or with '--requires " +-"--resolve'" ++"with '--alldeps', but not with '--exactdeps'), or with '--requires --" ++"resolve'" + msgstr "" +-"オプションの '--recursive' は、'--whatrequires ' (オプションでは '--exactdeps' ではなく、'" +-"--alldeps' と共に使用) または '--requires --resolve' と共に使用する必要があります。" ++"オプションの '--recursive' は、'--whatrequires ' (オプションでは '--" ++"exactdeps' ではなく、'--alldeps' と共に使用) または '--requires --" ++"resolve' と共に使用する必要があります" + + #: dnf/cli/commands/repoquery.py:312 + msgid "argument {} requires --whatrequires or --whatdepends option" +-msgstr "引数 {} は --whatrequires または --whatdepends オプションを必要とします" ++msgstr "" ++"引数 {} は --whatrequires または --whatdepends オプションを必要とします" + + #: dnf/cli/commands/repoquery.py:344 + msgid "Package {} contains no files" +@@ -2000,13 +2079,17 @@ msgstr "パッケージ {} はファイルを含んでいません" + #, python-brace-format + msgid "" + "No valid switch specified\n" +-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--" ++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--" ++"tree]\n" + "\n" + "description:\n" + " For the given packages print a tree of thepackages." + msgstr "" + "正規のスイッチが特定されません\n" +-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--" ++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--" ++"tree]\n" + "\n" + "説明:\n" + " 与えられたパッケージではパッケージのツリーを表示します。" +@@ -2027,27 +2110,26 @@ msgstr "KEYWORD" + msgid "Keyword to search for" + msgstr "検索のキーワード" + +-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506 ++#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460 + msgctxt "long" + msgid "Name" + msgstr "名前" + +-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559 ++#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513 + msgctxt "long" + msgid "Summary" + msgstr "概要" + +-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569 ++#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523 + msgctxt "long" + msgid "Description" + msgstr "説明" + +-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562 ++#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516 + msgid "URL" + msgstr "URL" + +-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary +-#. & URL) ++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL) + #: dnf/cli/commands/search.py:76 + msgid " & " + msgstr " & " +@@ -2123,7 +2205,8 @@ msgid "" + " disable: disable repositories. option = repository id" + msgstr "" + "{} arg [オプション]\n" +-" 一覧: リポジトリーとその状態を一覧表示します。オプション = [all | id | glob]\n" ++" 一覧: リポジトリーとその状態を一覧表示します。オプション = [all | id | " ++"glob]\n" + " 有効化: リポジトリーの有効化。オプション = リポジトリー id\n" + " 無効化: リポジトリーの無効化。オプション = リポジトリー id" + +@@ -2181,27 +2264,30 @@ msgstr "" + "ヘルプ ヘルプの印刷\n" + "リポジトリー (または repo) リポジトリーの有効化、無効化、または一覧表示\n" + "resolvedep トランザクションセットの解決\n" +-"トランザクション (または ts) トランザクションセットの一覧表示、再設定、または実行\n" ++"トランザクション (または ts) トランザクションセットの一覧表示、再設定、" ++"または実行\n" + "実行 トランザクションセットの解決および実行\n" + "終了 (または 中止) シェルの終了" + +-#: dnf/cli/commands/shell.py:259 ++#: dnf/cli/commands/shell.py:262 + #, python-format + msgid "Error: Cannot open %s for reading" + msgstr "エラー: 読み込み用に %s を開くことができません" + +-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187 ++#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187 + msgid "Complete!" + msgstr "完了しました!" + +-#: dnf/cli/commands/shell.py:291 ++#: dnf/cli/commands/shell.py:294 + msgid "Leaving Shell" + msgstr "シェルを終了します" + + #: dnf/cli/commands/swap.py:35 + #, python-brace-format + msgid "run an interactive {prog} mod for remove and install one spec" +-msgstr "一つのspecを削除またはインストールするためインタラクティブ {prog} モジュールを実行" ++msgstr "" ++"一つのspecを削除またはインストールするためインタラクティブ {prog} モジュール" ++"を実行" + + #: dnf/cli/commands/swap.py:40 + msgid "The specs that will be removed" +@@ -2253,13 +2339,16 @@ msgstr "インストール済みパッケージの新しいバージョンに関 + + #: dnf/cli/commands/updateinfo.py:80 + msgid "advisories about equal and older versions of installed packages" +-msgstr "インストール済みパッケージの同じバージョンおよび古いバージョンに関する勧告" ++msgstr "" ++"インストール済みパッケージの同じバージョンおよび古いバージョンに関する勧告" + + #: dnf/cli/commands/updateinfo.py:83 + msgid "" + "advisories about newer versions of those installed packages for which a " + "newer version is available" +-msgstr "最新バージョンが利用可能なインストール済みパッケージの最新バージョンに関する勧告" ++msgstr "" ++"最新バージョンが利用可能なインストール済みパッケージの最新バージョンに関する" ++"勧告" + + #: dnf/cli/commands/updateinfo.py:87 + msgid "advisories about any versions of installed packages" +@@ -2385,8 +2474,8 @@ msgstr "重大度" + msgid "Files" + msgstr "ファイル" + +-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499 +-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 ++#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1656 dnf/util.py:617 + msgid "Installed" + msgstr "インストール済み" + +@@ -2400,7 +2489,8 @@ msgstr "正" + + #: dnf/cli/commands/upgrade.py:40 + msgid "upgrade a package or packages on your system" +-msgstr "システム上の 1 つのパッケージまたは複数のパッケージをアップグレードします" ++msgstr "" ++"システム上の 1 つのパッケージまたは複数のパッケージをアップグレードします" + + #: dnf/cli/commands/upgrade.py:44 + msgid "Package to upgrade" +@@ -2410,7 +2500,9 @@ msgstr "アップグレードするパッケージ" + msgid "" + "upgrade, but only 'newest' package match which fixes a problem that affects " + "your system" +-msgstr "システムに影響する問題を修正する「最新の」パッケージに一致したもののみをアップグレードします" ++msgstr "" ++"システムに影響する問題を修正する「最新の」パッケージに一致したもののみをアッ" ++"プグレードします" + + #: dnf/cli/main.py:88 + msgid "Terminated." +@@ -2422,23 +2514,29 @@ msgstr "現在のディレクトリーには読み取り/実行権限があり + + #: dnf/cli/main.py:135 + msgid "try to add '{}' to command line to replace conflicting packages" +-msgstr "競合するパッケージを置き換えるには、コマンドラインに '{}' を追加してみてください" ++msgstr "" ++"競合するパッケージを置き換えるには、コマンドラインに '{}' を追加してみてくだ" ++"さい" + + #: dnf/cli/main.py:139 + msgid "try to add '{}' to skip uninstallable packages" +-msgstr "インストール不可のパッケージをスキップするには、'{}' を追加してみてください" ++msgstr "" ++"インストール不可のパッケージをスキップするには、'{}' を追加してみてください" + + #: dnf/cli/main.py:142 + msgid " or '{}' to skip uninstallable packages" +-msgstr " または、'{}' を追加して、インストール不可のパッケージをスキップしてください" ++msgstr "" ++" または、'{}' を追加して、インストール不可のパッケージをスキップしてください" + + #: dnf/cli/main.py:147 + msgid "try to add '{}' to use not only best candidate packages" +-msgstr "最適候補のパッケージのみを使用しないためには、'{}' を追加してみてください" ++msgstr "" ++"最適候補のパッケージのみを使用しないためには、'{}' を追加してみてください" + + #: dnf/cli/main.py:150 + msgid " or '{}' to use not only best candidate packages" +-msgstr " または、'{}' を追加して、最適候補のパッケージのみを使用しないでください" ++msgstr "" ++" または、'{}' を追加して、最適候補のパッケージのみを使用しないでください" + + #: dnf/cli/main.py:167 + msgid "Dependencies resolved." +@@ -2530,7 +2628,9 @@ msgstr "依存関係を解決するために、インストール済みパッケ + + #: dnf/cli/option_parser.py:221 + msgid "try the best available package versions in transactions." +-msgstr "トランザクションにおいて利用可能な最適なパッケージバージョンを試してください。" ++msgstr "" ++"トランザクションにおいて利用可能な最適なパッケージバージョンを試してくださ" ++"い。" + + #: dnf/cli/option_parser.py:223 + msgid "do not limit the transaction to the best candidate" +@@ -2566,8 +2666,8 @@ msgid "" + "enables {prog}'s obsoletes processing logic for upgrade or display " + "capabilities that the package obsoletes for info, list and repoquery" + msgstr "" +-"アップグレードまたは、info, list, repoquery で旧パッケージのケイパビリティを表示するため、 {prog} " +-"の旧プロセスロジックを有効化" ++"アップグレードまたは、info, list, repoquery で旧パッケージのケイパビリティを" ++"表示するため、 {prog} の旧プロセスロジックを有効化" + + #: dnf/cli/option_parser.py:251 + msgid "debugging output level for rpm" +@@ -2585,19 +2685,25 @@ msgstr "すべての質問に「いいえ」(no) と自動的に答えます" + msgid "" + "Enable additional repositories. List option. Supports globs, can be " + "specified multiple times." +-msgstr "追加レポジトリを有効化、オプションのリスト、globsのサポートは何度でも指定可能です。" ++msgstr "" ++"追加レポジトリを有効化、オプションのリスト、globsのサポートは何度でも指定可能" ++"です。" + + #: dnf/cli/option_parser.py:266 + msgid "" +-"Disable repositories. List option. Supports globs, can be specified multiple" +-" times." +-msgstr "追加レポジトリを無効化、オプションのリスト、globsのサポートは何度でも指定可能です。" ++"Disable repositories. List option. Supports globs, can be specified multiple " ++"times." ++msgstr "" ++"追加レポジトリを無効化、オプションのリスト、globsのサポートは何度でも指定可能" ++"です。" + + #: dnf/cli/option_parser.py:270 + msgid "" + "enable just specific repositories by an id or a glob, can be specified " + "multiple times" +-msgstr "id または glob により特定のリポジトリーだけを有効にします。複数回指定することが可能です" ++msgstr "" ++"id または glob により特定のリポジトリーだけを有効にします。複数回指定すること" ++"が可能です" + + #: dnf/cli/option_parser.py:275 + msgid "enable repos with config-manager command (automatically saves)" +@@ -2619,7 +2725,9 @@ msgstr "excludepkgs を無効にします" + msgid "" + "label and path to an additional repository to use (same path as in a " + "baseurl), can be specified multiple times." +-msgstr "利用する追加レポジトリ(baseurlと同じパス)のラベルとパスは何度でも指定可能です。" ++msgstr "" ++"利用する追加レポジトリ(baseurlと同じパス)のラベルとパスは何度でも指定可能で" ++"す。" + + #: dnf/cli/option_parser.py:297 + msgid "disable removal of dependencies that are no longer used" +@@ -2699,7 +2807,7 @@ msgstr "主要コマンドの一覧:" + + #: dnf/cli/option_parser.py:376 + msgid "List of Plugin Commands:" +-msgstr "プラグインコマンドの一覧" ++msgstr "プラグインコマンドの一覧:" + + #: dnf/cli/option_parser.py:413 + #, python-format +@@ -2709,13 +2817,13 @@ msgstr "引数をエンコードできません '%s': %s" + #. Translators: This is abbreviated 'Name'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:505 ++#: dnf/cli/output.py:459 + msgctxt "short" + msgid "Name" + msgstr "名前" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:511 ++#: dnf/cli/output.py:465 + msgid "Epoch" + msgstr "エポック" + +@@ -2723,38 +2831,38 @@ msgstr "エポック" + #. use the full (unabbreviated) term 'Version' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:512 dnf/cli/output.py:1335 ++#: dnf/cli/output.py:466 dnf/cli/output.py:1248 + msgctxt "short" + msgid "Version" + msgstr "バージョン" + + #. Translators: This is the full (unabbreviated) term 'Version'. +-#: dnf/cli/output.py:513 dnf/cli/output.py:1337 ++#: dnf/cli/output.py:467 dnf/cli/output.py:1250 + msgctxt "long" + msgid "Version" + msgstr "バージョン" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:516 ++#: dnf/cli/output.py:470 + msgid "Release" + msgstr "リリース" + + #. Translators: This is abbreviated 'Architecture', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:517 dnf/cli/output.py:1326 ++#: dnf/cli/output.py:471 dnf/cli/output.py:1239 + msgctxt "short" + msgid "Arch" + msgstr "Arch" + + #. Translators: This is the full word 'Architecture', used when + #. we have enough space. +-#: dnf/cli/output.py:518 dnf/cli/output.py:1329 ++#: dnf/cli/output.py:472 dnf/cli/output.py:1242 + msgctxt "long" + msgid "Architecture" + msgstr "アーキテクチャー" + + #. Translators: This is the full (unabbreviated) term 'Size'. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1352 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1265 + msgctxt "long" + msgid "Size" + msgstr "サイズ" +@@ -2763,32 +2871,32 @@ msgstr "サイズ" + #. not be longer than 5 characters. If the term 'Size' in your + #. language is not longer than 5 characters then you can use it + #. unabbreviated. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1350 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1263 + msgctxt "short" + msgid "Size" + msgstr "サイズ" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:524 ++#: dnf/cli/output.py:478 + msgid "Source" + msgstr "ソース" + + #. Translators: This is abbreviated 'Repository', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:525 dnf/cli/output.py:1341 ++#: dnf/cli/output.py:479 dnf/cli/output.py:1254 + msgctxt "short" + msgid "Repo" + msgstr "Repo" + + #. Translators: This is the full word 'Repository', used when + #. we have enough space. +-#: dnf/cli/output.py:526 dnf/cli/output.py:1344 ++#: dnf/cli/output.py:480 dnf/cli/output.py:1257 + msgctxt "long" + msgid "Repository" + msgstr "リポジトリー" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:533 ++#: dnf/cli/output.py:487 + msgid "From repo" + msgstr "repo から" + +@@ -2796,312 +2904,308 @@ msgstr "repo から" + #. print(_("Committer : %s") % ucd(pkg.committer)) + #. print(_("Committime : %s") % time.ctime(pkg.committime)) + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:539 ++#: dnf/cli/output.py:493 + msgid "Packager" + msgstr "パッケージャー" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:541 ++#: dnf/cli/output.py:495 + msgid "Buildtime" + msgstr "ビルド時間" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:545 ++#: dnf/cli/output.py:499 + msgid "Install time" + msgstr "インストール時間" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:554 ++#: dnf/cli/output.py:508 + msgid "Installed by" + msgstr "インストール済み" + + #. Translators: This is abbreviated 'Summary'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:558 ++#: dnf/cli/output.py:512 + msgctxt "short" + msgid "Summary" + msgstr "概要" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:564 ++#: dnf/cli/output.py:518 + msgid "License" + msgstr "ライセンス" + + #. Translators: This is abbreviated 'Description'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:568 ++#: dnf/cli/output.py:522 + msgctxt "short" + msgid "Description" + msgstr "説明" + +-#: dnf/cli/output.py:695 +-msgid "No packages to list" +-msgstr "一覧表示するパッケージはありません" +- +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "y" + msgstr "y" + +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "yes" + msgstr "はい" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "n" + msgstr "n" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "no" + msgstr "いいえ" + +-#: dnf/cli/output.py:711 ++#: dnf/cli/output.py:655 + msgid "Is this ok [y/N]: " + msgstr "これでよろしいですか? [y/N]: " + +-#: dnf/cli/output.py:715 ++#: dnf/cli/output.py:659 + msgid "Is this ok [Y/n]: " + msgstr "これでよろしいですか? [Y/n]: " + +-#: dnf/cli/output.py:795 ++#: dnf/cli/output.py:739 + #, python-format + msgid "Group: %s" + msgstr "グループ: %s" + +-#: dnf/cli/output.py:799 ++#: dnf/cli/output.py:743 + #, python-format + msgid " Group-Id: %s" + msgstr " グループ ID: %s" + +-#: dnf/cli/output.py:801 dnf/cli/output.py:840 ++#: dnf/cli/output.py:745 dnf/cli/output.py:784 + #, python-format + msgid " Description: %s" + msgstr " 説明: %s" + +-#: dnf/cli/output.py:803 ++#: dnf/cli/output.py:747 + #, python-format + msgid " Language: %s" + msgstr " 言語: %s" + +-#: dnf/cli/output.py:806 ++#: dnf/cli/output.py:750 + msgid " Mandatory Packages:" + msgstr " 必須なパッケージ:" + +-#: dnf/cli/output.py:807 ++#: dnf/cli/output.py:751 + msgid " Default Packages:" + msgstr " 標準パッケージ:" + +-#: dnf/cli/output.py:808 ++#: dnf/cli/output.py:752 + msgid " Optional Packages:" + msgstr " オプション パッケージ:" + +-#: dnf/cli/output.py:809 ++#: dnf/cli/output.py:753 + msgid " Conditional Packages:" + msgstr " 条件付きパッケージ:" + +-#: dnf/cli/output.py:834 ++#: dnf/cli/output.py:778 + #, python-format + msgid "Environment Group: %s" + msgstr "環境グループ: %s" + +-#: dnf/cli/output.py:837 ++#: dnf/cli/output.py:781 + #, python-format + msgid " Environment-Id: %s" + msgstr " 環境 Id: %s" + +-#: dnf/cli/output.py:843 ++#: dnf/cli/output.py:787 + msgid " Mandatory Groups:" + msgstr " 必須なグループ:" + +-#: dnf/cli/output.py:844 ++#: dnf/cli/output.py:788 + msgid " Optional Groups:" + msgstr " 任意なグループ:" + +-#: dnf/cli/output.py:865 ++#: dnf/cli/output.py:809 + msgid "Matched from:" + msgstr "一致:" + +-#: dnf/cli/output.py:879 ++#: dnf/cli/output.py:823 + #, python-format + msgid "Filename : %s" + msgstr "ファイル名 : %s" + +-#: dnf/cli/output.py:904 ++#: dnf/cli/output.py:848 + #, python-format + msgid "Repo : %s" + msgstr "Repo : %s" + +-#: dnf/cli/output.py:913 ++#: dnf/cli/output.py:857 + msgid "Description : " +-msgstr "説明 : " ++msgstr "説明: " + +-#: dnf/cli/output.py:917 ++#: dnf/cli/output.py:861 + #, python-format + msgid "URL : %s" + msgstr "URL : %s" + +-#: dnf/cli/output.py:921 ++#: dnf/cli/output.py:865 + #, python-format + msgid "License : %s" + msgstr "ライセンス : %s" + +-#: dnf/cli/output.py:927 ++#: dnf/cli/output.py:871 + #, python-format + msgid "Provide : %s" + msgstr "提供する : %s" + +-#: dnf/cli/output.py:947 ++#: dnf/cli/output.py:891 + #, python-format + msgid "Other : %s" + msgstr "その他 : %s" + +-#: dnf/cli/output.py:996 ++#: dnf/cli/output.py:940 + msgid "There was an error calculating total download size" + msgstr "ダウンロードサイズの合計を計算中にエラーが発生しました" + +-#: dnf/cli/output.py:1002 ++#: dnf/cli/output.py:946 + #, python-format + msgid "Total size: %s" + msgstr "合計サイズ: %s" + +-#: dnf/cli/output.py:1005 ++#: dnf/cli/output.py:949 + #, python-format + msgid "Total download size: %s" + msgstr "ダウンロードサイズの合計: %s" + +-#: dnf/cli/output.py:1008 ++#: dnf/cli/output.py:952 + #, python-format + msgid "Installed size: %s" + msgstr "インストール後のサイズ: %s" + +-#: dnf/cli/output.py:1026 ++#: dnf/cli/output.py:970 + msgid "There was an error calculating installed size" + msgstr "インストール後のサイズを計算中にエラーが発生しました" + +-#: dnf/cli/output.py:1030 ++#: dnf/cli/output.py:974 + #, python-format + msgid "Freed space: %s" + msgstr "解放された容量: %s" + +-#: dnf/cli/output.py:1039 ++#: dnf/cli/output.py:983 + msgid "Marking packages as installed by the group:" + msgstr "パッケージをグループごとにインストール済みとマークします:" + +-#: dnf/cli/output.py:1046 ++#: dnf/cli/output.py:990 + msgid "Marking packages as removed by the group:" + msgstr "パッケージをグループごとに削除済みとマークします:" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Group" + msgstr "グループ" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Packages" + msgstr "パッケージ" + +-#: dnf/cli/output.py:1133 ++#: dnf/cli/output.py:1046 + msgid "Installing group/module packages" + msgstr "group/moduleパッケージをインストール" + +-#: dnf/cli/output.py:1134 ++#: dnf/cli/output.py:1047 + msgid "Installing group packages" + msgstr "グループパッケージのインストール" + + #. TRANSLATORS: This is for a list of packages to be installed. +-#: dnf/cli/output.py:1138 ++#: dnf/cli/output.py:1051 + msgctxt "summary" + msgid "Installing" + msgstr "インストール" + + #. TRANSLATORS: This is for a list of packages to be upgraded. +-#: dnf/cli/output.py:1140 ++#: dnf/cli/output.py:1053 + msgctxt "summary" + msgid "Upgrading" + msgstr "アップグレード" + + #. TRANSLATORS: This is for a list of packages to be reinstalled. +-#: dnf/cli/output.py:1142 ++#: dnf/cli/output.py:1055 + msgctxt "summary" + msgid "Reinstalling" + msgstr "再インストール" + +-#: dnf/cli/output.py:1144 ++#: dnf/cli/output.py:1057 + msgid "Installing dependencies" + msgstr "依存関係のインストール" + +-#: dnf/cli/output.py:1145 ++#: dnf/cli/output.py:1058 + msgid "Installing weak dependencies" + msgstr "弱い依存関係のインストール" + + #. TRANSLATORS: This is for a list of packages to be removed. +-#: dnf/cli/output.py:1147 ++#: dnf/cli/output.py:1060 + msgid "Removing" + msgstr "削除中" + +-#: dnf/cli/output.py:1148 ++#: dnf/cli/output.py:1061 + msgid "Removing dependent packages" + msgstr "依存関係パッケージの削除" + +-#: dnf/cli/output.py:1149 ++#: dnf/cli/output.py:1062 + msgid "Removing unused dependencies" + msgstr "未使用の依存関係の削除" + + #. TRANSLATORS: This is for a list of packages to be downgraded. +-#: dnf/cli/output.py:1151 ++#: dnf/cli/output.py:1064 + msgctxt "summary" + msgid "Downgrading" + msgstr "ダウングレード" + +-#: dnf/cli/output.py:1176 ++#: dnf/cli/output.py:1089 + msgid "Installing module profiles" + msgstr "モジュールプロファイルのインストール中" + +-#: dnf/cli/output.py:1185 ++#: dnf/cli/output.py:1098 + msgid "Disabling module profiles" + msgstr "モジュールプロファイルの無効化中" + +-#: dnf/cli/output.py:1194 ++#: dnf/cli/output.py:1107 + msgid "Enabling module streams" + msgstr "モジュールストリームの有効化中" + +-#: dnf/cli/output.py:1202 ++#: dnf/cli/output.py:1115 + msgid "Switching module streams" + msgstr "モジュールストリームの切り替え中" + +-#: dnf/cli/output.py:1210 ++#: dnf/cli/output.py:1123 + msgid "Disabling modules" + msgstr "モジュールの無効化" + +-#: dnf/cli/output.py:1218 ++#: dnf/cli/output.py:1131 + msgid "Resetting modules" + msgstr "モジュールの再設定中" + +-#: dnf/cli/output.py:1230 ++#: dnf/cli/output.py:1143 + msgid "Installing Environment Groups" + msgstr "環境グループのインストール中" + +-#: dnf/cli/output.py:1237 ++#: dnf/cli/output.py:1150 + msgid "Upgrading Environment Groups" + msgstr "環境グループのアップグレード中" + +-#: dnf/cli/output.py:1244 ++#: dnf/cli/output.py:1157 + msgid "Removing Environment Groups" + msgstr "環境グループの削除中" + +-#: dnf/cli/output.py:1251 ++#: dnf/cli/output.py:1164 + msgid "Installing Groups" + msgstr "グループのインストール中" + +-#: dnf/cli/output.py:1258 ++#: dnf/cli/output.py:1171 + msgid "Upgrading Groups" + msgstr "グループのアップグレード中" + +-#: dnf/cli/output.py:1265 ++#: dnf/cli/output.py:1178 + msgid "Removing Groups" + msgstr "グループの削除中" + +-#: dnf/cli/output.py:1281 ++#: dnf/cli/output.py:1194 + #, python-format + msgid "" + "Skipping packages with conflicts:\n" +@@ -3110,12 +3214,12 @@ msgstr "" + "競合するパッケージをスキップします:\n" + "(アップグレードを強制するにはコマンドラインに '%s' を追加します)" + +-#: dnf/cli/output.py:1291 ++#: dnf/cli/output.py:1204 + #, python-format + msgid "Skipping packages with broken dependencies%s" + msgstr "壊れた dependencies%s のパッケージをスキップします" + +-#: dnf/cli/output.py:1295 ++#: dnf/cli/output.py:1208 + msgid " or part of a group" + msgstr " またはグループの一部" + +@@ -3123,22 +3227,22 @@ msgstr " またはグループの一部" + #. use the full (unabbreviated) term 'Package' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:1320 ++#: dnf/cli/output.py:1233 + msgctxt "short" + msgid "Package" + msgstr "パッケージ" + + #. Translators: This is the full (unabbreviated) term 'Package'. +-#: dnf/cli/output.py:1322 ++#: dnf/cli/output.py:1235 + msgctxt "long" + msgid "Package" + msgstr "パッケージ" + +-#: dnf/cli/output.py:1371 ++#: dnf/cli/output.py:1284 + msgid "replacing" + msgstr "置き換え" + +-#: dnf/cli/output.py:1378 ++#: dnf/cli/output.py:1291 + #, python-format + msgid "" + "\n" +@@ -3150,287 +3254,271 @@ msgstr "" + "%s\n" + + #. TODO: remove +-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933 ++#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815 + msgid "Install" + msgstr "インストール" + +-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941 ++#: dnf/cli/output.py:1300 dnf/cli/output.py:1823 + msgid "Upgrade" + msgstr "アップグレード" + +-#: dnf/cli/output.py:1388 ++#: dnf/cli/output.py:1301 + msgid "Remove" + msgstr "削除" + +-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939 ++#: dnf/cli/output.py:1303 dnf/cli/output.py:1821 + msgid "Downgrade" + msgstr "ダウングレード" + +-#: dnf/cli/output.py:1391 ++#: dnf/cli/output.py:1304 + msgid "Skip" + msgstr "スキップ" + +-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416 ++#: dnf/cli/output.py:1313 dnf/cli/output.py:1329 + msgid "Package" + msgid_plural "Packages" + msgstr[0] "パッケージ" + +-#: dnf/cli/output.py:1418 ++#: dnf/cli/output.py:1331 + msgid "Dependent package" + msgid_plural "Dependent packages" + msgstr[0] "依存パッケージ" + +-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942 +-msgid "Upgraded" +-msgstr "アップグレード済み" +- +-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940 +-msgid "Downgraded" +-msgstr "ダウングレード済み" +- +-#: dnf/cli/output.py:1503 +-msgid "Reinstalled" +-msgstr "再インストール済み" +- +-#: dnf/cli/output.py:1504 +-msgid "Skipped" +-msgstr "スキップ済み" +- +-#: dnf/cli/output.py:1505 +-msgid "Removed" +-msgstr "削除しました" +- +-#: dnf/cli/output.py:1508 +-msgid "Failed" +-msgstr "失敗しました" +- +-#: dnf/cli/output.py:1559 ++#: dnf/cli/output.py:1439 + msgid "Total" + msgstr "合計" + +-#: dnf/cli/output.py:1587 ++#: dnf/cli/output.py:1467 + msgid "" + msgstr "<未設定>" + +-#: dnf/cli/output.py:1588 ++#: dnf/cli/output.py:1468 + msgid "System" + msgstr "システム" + +-#: dnf/cli/output.py:1638 ++#: dnf/cli/output.py:1518 + msgid "Command line" + msgstr "コマンドライン" + + #. TRANSLATORS: user names who executed transaction in history command output +-#: dnf/cli/output.py:1649 ++#: dnf/cli/output.py:1531 + msgid "User name" + msgstr "ユーザー名" + +-#: dnf/cli/output.py:1651 ++#: dnf/cli/output.py:1533 + msgid "ID" + msgstr "ID" + +-#: dnf/cli/output.py:1653 ++#: dnf/cli/output.py:1535 + msgid "Date and time" + msgstr "日時" + +-#: dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1536 + msgid "Action(s)" + msgstr "動作" + +-#: dnf/cli/output.py:1655 ++#: dnf/cli/output.py:1537 + msgid "Altered" + msgstr "変更されました" + +-#: dnf/cli/output.py:1698 ++#: dnf/cli/output.py:1580 + msgid "No transactions" + msgstr "トランザクションがありません" + +-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715 ++#: dnf/cli/output.py:1581 dnf/cli/output.py:1597 + msgid "Failed history info" + msgstr "失敗した履歴情報" + +-#: dnf/cli/output.py:1714 ++#: dnf/cli/output.py:1596 + msgid "No transaction ID, or package, given" + msgstr "トランザクション ID、またはパッケージが指定されていません" + +-#: dnf/cli/output.py:1772 ++#: dnf/cli/output.py:1654 + msgid "Erased" + msgstr "削除されました" + +-#: dnf/cli/output.py:1774 ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616 ++msgid "Downgraded" ++msgstr "ダウングレード済み" ++ ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615 ++msgid "Upgraded" ++msgstr "アップグレード済み" ++ ++#: dnf/cli/output.py:1656 + msgid "Not installed" + msgstr "インストールされていません" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Newer" + msgstr "新しい" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Older" + msgstr "古い" + +-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825 ++#: dnf/cli/output.py:1705 dnf/cli/output.py:1707 + msgid "Transaction ID :" + msgstr "トランザクション ID :" + +-#: dnf/cli/output.py:1828 ++#: dnf/cli/output.py:1710 + msgid "Begin time :" + msgstr "開始時間 :" + +-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833 ++#: dnf/cli/output.py:1713 dnf/cli/output.py:1715 + msgid "Begin rpmdb :" + msgstr "開始 rpmdb :" + +-#: dnf/cli/output.py:1839 ++#: dnf/cli/output.py:1721 + #, python-format + msgid "(%u seconds)" + msgstr "(%u 秒)" + +-#: dnf/cli/output.py:1841 ++#: dnf/cli/output.py:1723 + #, python-format + msgid "(%u minutes)" + msgstr "(%u 分)" + +-#: dnf/cli/output.py:1843 ++#: dnf/cli/output.py:1725 + #, python-format + msgid "(%u hours)" + msgstr "(%u 時間)" + +-#: dnf/cli/output.py:1845 ++#: dnf/cli/output.py:1727 + #, python-format + msgid "(%u days)" + msgstr "(%u 日)" + +-#: dnf/cli/output.py:1846 ++#: dnf/cli/output.py:1728 + msgid "End time :" + msgstr "終了時間 :" + +-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851 ++#: dnf/cli/output.py:1731 dnf/cli/output.py:1733 + msgid "End rpmdb :" + msgstr "終了 rpmdb :" + +-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860 ++#: dnf/cli/output.py:1740 dnf/cli/output.py:1742 + msgid "User :" + msgstr "ユーザー :" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1753 + msgid "Aborted" + msgstr "中断しました" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869 +-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751 ++#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757 + msgid "Return-Code :" + msgstr "終了コード :" + +-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1749 dnf/cli/output.py:1757 + msgid "Success" + msgstr "成功" + +-#: dnf/cli/output.py:1869 ++#: dnf/cli/output.py:1751 + msgid "Failures:" + msgstr "失敗:" + +-#: dnf/cli/output.py:1873 ++#: dnf/cli/output.py:1755 + msgid "Failure:" + msgstr "失敗しました:" + +-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885 ++#: dnf/cli/output.py:1765 dnf/cli/output.py:1767 + msgid "Releasever :" + msgstr "Releasever :" + +-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892 ++#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 + msgid "Command Line :" + msgstr "コマンドライン :" + +-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899 ++#: dnf/cli/output.py:1779 dnf/cli/output.py:1781 + msgid "Comment :" + msgstr "コメント :" + +-#: dnf/cli/output.py:1903 ++#: dnf/cli/output.py:1785 + msgid "Transaction performed with:" + msgstr "実行されたトランザクション:" + +-#: dnf/cli/output.py:1912 ++#: dnf/cli/output.py:1794 + msgid "Packages Altered:" + msgstr "変更されたパッケージ:" + +-#: dnf/cli/output.py:1918 ++#: dnf/cli/output.py:1800 + msgid "Scriptlet output:" + msgstr "Scriptlet の出力:" + +-#: dnf/cli/output.py:1925 ++#: dnf/cli/output.py:1807 + msgid "Errors:" + msgstr "エラー:" + +-#: dnf/cli/output.py:1934 ++#: dnf/cli/output.py:1816 + msgid "Dep-Install" + msgstr "Dep-Install" + +-#: dnf/cli/output.py:1935 ++#: dnf/cli/output.py:1817 + msgid "Obsoleted" + msgstr "廃止された" + +-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85 ++#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85 + msgid "Obsoleting" + msgstr "廃止" + +-#: dnf/cli/output.py:1937 ++#: dnf/cli/output.py:1819 + msgid "Erase" + msgstr "削除" + +-#: dnf/cli/output.py:1938 ++#: dnf/cli/output.py:1820 + msgid "Reinstall" + msgstr "再インストール" + +-#: dnf/cli/output.py:2016 ++#: dnf/cli/output.py:1894 + #, python-format + msgid "---> Package %s.%s %s will be installed" + msgstr "---> パッケージ %s.%s %s はインストールされます" + +-#: dnf/cli/output.py:2018 ++#: dnf/cli/output.py:1896 + #, python-format + msgid "---> Package %s.%s %s will be an upgrade" + msgstr "---> パッケージ %s.%s %s はアップグレードされます" + +-#: dnf/cli/output.py:2020 ++#: dnf/cli/output.py:1898 + #, python-format + msgid "---> Package %s.%s %s will be erased" + msgstr "---> パッケージ %s.%s %s は消去されます" + +-#: dnf/cli/output.py:2022 ++#: dnf/cli/output.py:1900 + #, python-format + msgid "---> Package %s.%s %s will be reinstalled" + msgstr "---> パッケージ %s.%s %s は再インストールされます" + +-#: dnf/cli/output.py:2024 ++#: dnf/cli/output.py:1902 + #, python-format + msgid "---> Package %s.%s %s will be a downgrade" + msgstr "---> パッケージ %s.%s %s はダウングレードされます" + +-#: dnf/cli/output.py:2026 ++#: dnf/cli/output.py:1904 + #, python-format + msgid "---> Package %s.%s %s will be obsoleting" + msgstr "---> パッケージ %s.%s %s は廃止となります" + +-#: dnf/cli/output.py:2028 ++#: dnf/cli/output.py:1906 + #, python-format + msgid "---> Package %s.%s %s will be upgraded" + msgstr "---> パッケージ %s.%s %s はアップグレードされます" + +-#: dnf/cli/output.py:2030 ++#: dnf/cli/output.py:1908 + #, python-format + msgid "---> Package %s.%s %s will be obsoleted" + msgstr "---> パッケージ %s.%s %s は廃止されます" + +-#: dnf/cli/output.py:2039 ++#: dnf/cli/output.py:1917 + msgid "--> Starting dependency resolution" + msgstr "--> 依存関係の解決を開始しました" + +-#: dnf/cli/output.py:2044 ++#: dnf/cli/output.py:1921 + msgid "--> Finished dependency resolution" + msgstr "--> 依存関係の解決が完了しました" + +-#: dnf/cli/output.py:2058 dnf/crypto.py:132 ++#: dnf/cli/output.py:1935 dnf/crypto.py:132 + #, python-format + msgid "" + "Importing GPG key 0x%s:\n" +@@ -3492,10 +3580,6 @@ msgstr " 開始しました : %s - %s 秒経過" + msgid " State : %s" + msgstr " 状態 : %s" + +-#: dnf/comps.py:104 +-msgid "skipping." +-msgstr "スキップします。" +- + #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706 + #, python-format + msgid "Module or Group '%s' is not installed." +@@ -3512,16 +3596,14 @@ msgid "Module or Group '%s' does not exist." + msgstr "モジュールまたはグループ '%s' は存在しません。" + + #: dnf/comps.py:599 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not installed." ++#, python-format + msgid "Environment id '%s' does not exist." +-msgstr "環境 '%s' はインストールされていません。" ++msgstr "環境 id '%s' は存在しません。" + +-#: dnf/comps.py:622 dnf/transaction_sr.py:443 dnf/transaction_sr.py:453 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not installed." ++#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487 ++#, python-format + msgid "Environment id '%s' is not installed." +-msgstr "環境 '%s' はインストールされていません。" ++msgstr "環境 id '%s' はインストールされていません。" + + #: dnf/comps.py:639 + #, python-format +@@ -3534,16 +3616,20 @@ msgid "Environment '%s' is not available." + msgstr "環境 '%s' は利用不可です。" + + #: dnf/comps.py:673 +-#, fuzzy, python-format +-#| msgid "Group_id '%s' does not exist." ++#, python-format + msgid "Group id '%s' does not exist." +-msgstr "Group_id '%s' は存在しません。" ++msgstr "グループ id '%s' は存在しません。" + + #: dnf/conf/config.py:136 + #, python-format + msgid "Error parsing '%s': %s" + msgstr "'%s' の解析中にエラーが発生しました: %s" + ++#: dnf/conf/config.py:151 ++#, python-format ++msgid "Invalid configuration value: %s=%s in %s; %s" ++msgstr "正しくない設定値: %s=%s in %s; %s" ++ + #: dnf/conf/config.py:226 + msgid "Could not set cachedir: {}" + msgstr "cachedir を設定できませんでした: {}" +@@ -3585,36 +3671,36 @@ msgstr "鍵 '%s.%s'、値 '%s' の --setopt を解析中にエラーが発生し + msgid "Repo %s did not have a %s attr. before setopt" + msgstr "repo %s には setopt の前に %s attr. がありませんでした" + +-#: dnf/conf/read.py:51 ++#: dnf/conf/read.py:60 + #, python-format + msgid "Warning: failed loading '%s', skipping." +-msgstr "警告: '%s' のロードに失敗、スキップします。" ++msgstr "警告: '%s' のロードに失敗、スキップします。" + +-#: dnf/conf/read.py:63 ++#: dnf/conf/read.py:72 + msgid "Bad id for repo: {} ({}), byte = {} {}" + msgstr "repo: {} ({}) に正しくないid、 byte = {} {}" + +-#: dnf/conf/read.py:67 ++#: dnf/conf/read.py:76 + msgid "Bad id for repo: {}, byte = {} {}" + msgstr "repo: {} に正しくないid、byte = {} {}" + +-#: dnf/conf/read.py:75 ++#: dnf/conf/read.py:84 + msgid "Repository '{}' ({}): Error parsing config: {}" + msgstr "レポジトリ '{}' ({}): 設定変更エラー: {}" + +-#: dnf/conf/read.py:78 ++#: dnf/conf/read.py:87 + msgid "Repository '{}': Error parsing config: {}" + msgstr "レポジトリ '{}': 設定変更エラー: {}" + +-#: dnf/conf/read.py:84 ++#: dnf/conf/read.py:93 + msgid "Repository '{}' ({}) is missing name in configuration, using id." + msgstr "レポジトリ '{}' ({}) はidを使用した設定内に見つかりません。" + +-#: dnf/conf/read.py:87 ++#: dnf/conf/read.py:96 + msgid "Repository '{}' is missing name in configuration, using id." + msgstr "レポジトリ '{}' idを使用した設定内に見つかりません。" + +-#: dnf/conf/read.py:104 ++#: dnf/conf/read.py:113 + msgid "Parsing file \"{}\" failed: {}" + msgstr "ファイル \"{}\" の解析に失敗しました: {}" + +@@ -3626,27 +3712,43 @@ msgstr "repo %s: 0x%s はインポート済みです" + #: dnf/crypto.py:115 + #, python-format + msgid "repo %s: imported key 0x%s." +-msgstr "repo %s: インポート済みの鍵 0x%s。" ++msgstr "repo %s: インポート済みのキー 0x%s。" ++ ++#: dnf/crypto.py:145 ++msgid "Verified using DNS record with DNSSEC signature." ++msgstr "DNSSEC 署名付きの DNS レコードを使用して検証しました。" + +-#: dnf/db/group.py:293 ++#: dnf/crypto.py:147 ++msgid "NOT verified using DNS record." ++msgstr "DNS レコードを使用して検証されませんでした。" ++ ++#: dnf/crypto.py:184 ++#, python-format ++msgid "retrieving repo key for %s unencrypted from %s" ++msgstr "%s から暗号化されていない %s の repo キーを取得しています" ++ ++#: dnf/db/group.py:301 + msgid "" + "No available modular metadata for modular package '{}', it cannot be " + "installed on the system" +-msgstr "モジュラーパッケージ '{}' のモジュラーメタデータは利用不可です、システムにインストールはできません" ++msgstr "" ++"モジュラーパッケージ '{}' のモジュラーメタデータは利用不可です、システムにイ" ++"ンストールはできません" + +-#: dnf/db/group.py:343 ++#: dnf/db/group.py:351 + msgid "No available modular metadata for modular package" + msgstr "モジュラーパッケージ のモジュラーメタデータは利用不可です" + +-#: dnf/db/group.py:377 ++#: dnf/db/group.py:385 + #, python-format + msgid "Will not install a source rpm package (%s)." + msgstr "ソース rpm パッケージ (%s) をインストールしません。" + + #: dnf/dnssec.py:168 + msgid "" +-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})" +-msgstr "設定オプション 'gpgkey_dns_verification' は libunbound ({}) が必要です" ++"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})" ++msgstr "" ++"設定オプション 'gpgkey_dns_verification' は python3-unbound ({}) が必要です" + + #: dnf/dnssec.py:239 + msgid "DNSSEC extension: Key for user " +@@ -3668,7 +3770,7 @@ msgstr "DNSSEC 拡張: " + msgid "Testing already imported keys for their validity." + msgstr "すでにインポートされた鍵の有効性をテストします。" + +-#: dnf/drpm.py:62 dnf/repo.py:268 ++#: dnf/drpm.py:62 dnf/repo.py:267 + #, python-format + msgid "unsupported checksum type: %s" + msgstr "サポートされていないチェックサム形式: %s" +@@ -3710,7 +3812,7 @@ msgid "Modular dependency problem with Defaults:" + msgid_plural "Modular dependency problems with Defaults:" + msgstr[0] "デフォルトのモジュラー依存問題:" + +-#: dnf/exceptions.py:131 dnf/module/module_base.py:686 ++#: dnf/exceptions.py:131 dnf/module/module_base.py:854 + msgid "Modular dependency problem:" + msgid_plural "Modular dependency problems:" + msgstr[0] "モジュラーの依存に関する問題:" +@@ -3719,10 +3821,12 @@ msgstr[0] "モジュラーの依存に関する問題:" + #, python-format + msgid "" + "Malformed lock file found: %s.\n" +-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf." ++"Ensure no other dnf/yum process is running and remove the lock file manually " ++"or run systemd-tmpfiles --remove dnf.conf." + msgstr "" + "不正な形式のロックファイル: %s 。\n" +-"他のdnf/yum プロセスが実行されていないことを確認し、ロックファイルを手動削除するかsystemd-tmpfiles --remove dnf.conf を実行してください。" ++"他のdnf/yum プロセスが実行されていないことを確認し、ロックファイルを手動削除" ++"するかsystemd-tmpfiles --remove dnf.conf を実行してください。" + + #: dnf/module/__init__.py:26 + msgid "Enabling different stream for '{}'." +@@ -3734,7 +3838,8 @@ msgstr "表示するものがありません。" + + #: dnf/module/__init__.py:28 + msgid "Installing newer version of '{}' than specified. Reason: {}" +-msgstr "指定されたものよりも新しいバージョンの '{}' をインストールします。理由: {}" ++msgstr "" ++"指定されたものよりも新しいバージョンの '{}' をインストールします。理由: {}" + + #: dnf/module/__init__.py:29 + msgid "Enabled modules: {}." +@@ -3742,9 +3847,51 @@ msgstr "有効なモジュール: {}." + + #: dnf/module/__init__.py:30 + msgid "No profile specified for '{}', please specify profile." +-msgstr "'{}' に指定したプロファイルはありません。プロファイルを指定してください。" ++msgstr "" ++"'{}' に指定したプロファイルはありません。プロファイルを指定してください。" ++ ++#: dnf/module/exceptions.py:27 ++msgid "No such module: {}" ++msgstr "次のようなモジュールはありません: {}" ++ ++#: dnf/module/exceptions.py:33 ++msgid "No such stream: {}" ++msgstr "次のようなストリームはありません: {}" ++ ++#: dnf/module/exceptions.py:39 ++msgid "No enabled stream for module: {}" ++msgstr "次のモジュールに有効化されたストリームはありません: {}" ++ ++#: dnf/module/exceptions.py:46 ++msgid "Cannot enable more streams from module '{}' at the same time" ++msgstr "モジュール '{}' から、さらにストリームを同時に有効にできません" ++ ++#: dnf/module/exceptions.py:52 ++msgid "Different stream enabled for module: {}" ++msgstr "次のモジュールに有効化された異なるストリーム: {}" ++ ++#: dnf/module/exceptions.py:58 ++msgid "No such profile: {}" ++msgstr "次ようなプロファイルはありません: {}" ++ ++#: dnf/module/exceptions.py:64 ++msgid "Specified profile not installed for {}" ++msgstr "指定のプロファイルは次にインストールされていません: {}" ++ ++#: dnf/module/exceptions.py:70 ++msgid "No stream specified for '{}', please specify stream" ++msgstr "'{}' に指定したストリームはありません。ストリームを指定してください" + +-#: dnf/module/module_base.py:33 ++#: dnf/module/exceptions.py:82 ++msgid "No such profile: {}. No profiles available" ++msgstr "" ++"次のようなプロファイルはありません: {}。利用できるプロファイルはありません" ++ ++#: dnf/module/exceptions.py:88 ++msgid "No profile to remove for '{}'" ++msgstr "'{}' の削除するプロファイルがありません" ++ ++#: dnf/module/module_base.py:35 + msgid "" + "\n" + "\n" +@@ -3754,7 +3901,7 @@ msgstr "" + "\n" + "ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled" + +-#: dnf/module/module_base.py:34 ++#: dnf/module/module_base.py:36 + msgid "" + "\n" + "\n" +@@ -3764,80 +3911,110 @@ msgstr "" + "\n" + "ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive" + +-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421 +-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543 ++#: dnf/module/module_base.py:56 dnf/module/module_base.py:556 ++#: dnf/module/module_base.py:615 dnf/module/module_base.py:681 + msgid "Ignoring unnecessary profile: '{}/{}'" + msgstr "不要なプロファイルを無視します: '{}/{}'" + +-#: dnf/module/module_base.py:84 ++#: dnf/module/module_base.py:86 + #, python-brace-format + msgid "All matches for argument '{0}' in module '{1}:{2}' are not active" +-msgstr "モジュール '{1}:{2}' の引数 '{0}' に一致するものはすべて非アクティブです" ++msgstr "" ++"モジュール '{1}:{2}' の引数 '{0}' に一致するものはすべて非アクティブです" + +-#: dnf/module/module_base.py:92 ++#: dnf/module/module_base.py:94 dnf/module/module_base.py:204 + #, python-brace-format + msgid "Installing module '{0}' from Fail-Safe repository {1} is not allowed" +-msgstr "フェイルセーフレポジトリー {1} からのモジュール '{0}' インストールは許可されていません" ++msgstr "" ++"フェイルセーフレポジトリー {1} からのモジュール '{0}' インストールは許可され" ++"ていません" + +-#: dnf/module/module_base.py:102 ++#: dnf/module/module_base.py:104 dnf/module/module_base.py:214 + msgid "" + "Unable to match profile for argument {}. Available profiles for '{}:{}': {}" +-msgstr "引数 {} でプロファイルが見つかりません。利用可能プロファイル '{}:{}': {}" ++msgstr "" ++"引数 {} でプロファイルが見つかりません。利用可能プロファイル '{}:{}': {}" + +-#: dnf/module/module_base.py:106 ++#: dnf/module/module_base.py:108 dnf/module/module_base.py:218 + msgid "Unable to match profile for argument {}" + msgstr "引数 {} でプロファイルが見つかりません" + +-#: dnf/module/module_base.py:118 ++#: dnf/module/module_base.py:120 + msgid "No default profiles for module {}:{}. Available profiles: {}" +-msgstr "モジュール {}:{} にデフォルトのプロファイルがありません。利用可能プロファイル: {}" ++msgstr "" ++"モジュール {}:{} にデフォルトのプロファイルがありません。利用可能プロファイ" ++"ル: {}" + +-#: dnf/module/module_base.py:122 ++#: dnf/module/module_base.py:124 + msgid "No profiles for module {}:{}" + msgstr "モジュール {}:{} にプロファイルがありません" + +-#: dnf/module/module_base.py:129 ++#: dnf/module/module_base.py:131 + msgid "Default profile {} not available in module {}:{}" + msgstr "デフォルトのプロファイル {} はモジュール {}:{} で利用不可です" + +-#: dnf/module/module_base.py:142 ++#: dnf/module/module_base.py:144 dnf/module/module_base.py:247 + msgid "Installing module from Fail-Safe repository is not allowed" +-msgstr "フェイルセーフレポジトリーからのモジュールインストールは許可されていません" ++msgstr "" ++"フェイルセーフレポジトリーからのモジュールインストールは許可されていません" ++ ++#: dnf/module/module_base.py:196 ++#, python-brace-format ++msgid "No active matches for argument '{0}' in module '{1}:{2}'" ++msgstr "モジュール '{1}:{2}' の引数 '{0}' には、アクティブな一致がありません" ++ ++#: dnf/module/module_base.py:228 ++#, python-brace-format ++msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'" ++msgstr "" ++"インストールされたプロファイル '{0}' は、モジュール '{1}' ストリーム '{2}' で" ++"は利用できません" ++ ++#: dnf/module/module_base.py:267 ++msgid "No packages available to distrosync for package name '{}'" ++msgstr "パッケージ名 '{}' 向けに distrosync するパッケージはありません" + +-#: dnf/module/module_base.py:159 dnf/module/module_base.py:193 +-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355 +-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417 +-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539 ++#: dnf/module/module_base.py:310 dnf/module/module_base.py:461 ++#: dnf/module/module_base.py:486 dnf/module/module_base.py:505 ++#: dnf/module/module_base.py:552 dnf/module/module_base.py:611 ++#: dnf/module/module_base.py:677 dnf/module/module_base.py:840 + msgid "Unable to resolve argument {}" + msgstr "引数 {} を解決できません" + +-#: dnf/module/module_base.py:160 +-msgid "No match for package {}" +-msgstr "パッケージ {} に一致するものはありません" +- +-#: dnf/module/module_base.py:204 ++#: dnf/module/module_base.py:321 + #, python-brace-format + msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed" +-msgstr "フェイルセーフレポジトリー {1} からのモジュール '{0}' アップグレードは許可されていません" ++msgstr "" ++"フェイルセーフレポジトリー {1} からのモジュール '{0}' アップグレードは許可さ" ++"れていません" + +-#: dnf/module/module_base.py:223 dnf/module/module_base.py:251 ++#: dnf/module/module_base.py:340 dnf/module/module_base.py:368 + msgid "Unable to match profile in argument {}" + msgstr "引数 {} でプロファイルを一致できません" + +-#: dnf/module/module_base.py:231 ++#: dnf/module/module_base.py:348 + msgid "Upgrading module from Fail-Safe repository is not allowed" +-msgstr "フェイルセーフレポジトリーからのモジュールアップグレードは許可されていません" ++msgstr "" ++"フェイルセーフレポジトリーからのモジュールアップグレードは許可されていません" ++ ++#: dnf/module/module_base.py:422 ++#, python-brace-format ++msgid "" ++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module " ++"'{module}', but none of the streams are enabled or default" ++msgstr "" ++"引数 '{argument}' は、モジュール '{module}' の {stream_count} ストリーム " ++"('{streams}' と一致しますが、有効化されている、あるいはデフォルトのストリーム" ++"はありません" + +-#: dnf/module/module_base.py:367 ++#: dnf/module/module_base.py:509 + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'{}'" ++"Only module name is required. Ignoring unneeded information in argument: '{}'" + msgstr "モジュール名のみが必要です。引数で不必要な情報を無視します: '{}'" + +-#: dnf/package.py:298 +-#, python-format +-msgid "%s: %s check failed: %s vs %s" +-msgstr "%s: %s の確認に失敗しました: %s vs %s" ++#: dnf/module/module_base.py:841 ++msgid "No match for package {}" ++msgstr "パッケージ {} に一致するものはありません" + + #. empty file is invalid json format + #: dnf/persistor.py:54 +@@ -3848,12 +4025,12 @@ msgstr "%s は空のファイルです" + #: dnf/persistor.py:91 + #, python-format + msgid "Failed to load expired repos cache: %s" +-msgstr "" ++msgstr "期限切れのリポジトリーキャッシュのロードに失敗しました: %s" + + #: dnf/persistor.py:99 + #, python-format + msgid "Failed to store expired repos cache: %s" +-msgstr "" ++msgstr "期限切れのリポジトリーキャッシュの保存に失敗しました: %s" + + #: dnf/persistor.py:106 + msgid "Failed storing last makecache time." +@@ -3873,16 +4050,16 @@ msgstr "ファイルの解析に失敗しました: %s" + msgid "Loaded plugins: %s" + msgstr "ロードされたプラグイン: %s" + +-#: dnf/plugin.py:199 ++#: dnf/plugin.py:211 + #, python-format + msgid "Failed loading plugin \"%s\": %s" + msgstr "plugin \"%s\" のロードに失敗しました: %s" + +-#: dnf/plugin.py:231 ++#: dnf/plugin.py:243 + msgid "No matches found for the following enable plugin patterns: {}" + msgstr "以下有効プラグインパターンが見つかりません: {}" + +-#: dnf/plugin.py:235 ++#: dnf/plugin.py:247 + msgid "No matches found for the following disable plugin patterns: {}" + msgstr "以下無効プラグインパターンが見つかりません: {}" + +@@ -3896,7 +4073,7 @@ msgid "Already downloaded" + msgstr "ダウンロード済み" + + #. pinging mirrors, this might take a while +-#: dnf/repo.py:347 ++#: dnf/repo.py:346 + #, python-format + msgid "determining the fastest mirror (%s hosts).. " + msgstr "最速のミラーを確定しています (%s hosts).. " +@@ -3911,10 +4088,27 @@ msgstr "%s リポジトリーの有効化" + msgid "Added %s repo from %s" + msgstr "%s から %s repo を追加しました" + ++#: dnf/rpm/miscutils.py:32 ++#, python-format ++msgid "Using rpmkeys executable at %s to verify signatures" ++msgstr "%s で rpmkeys 実行可能ファイルを使用して、署名を検証します" ++ ++#: dnf/rpm/miscutils.py:66 ++msgid "Cannot find rpmkeys executable to verify signatures." ++msgstr "署名を検証する rpmkeys 実行ファイルが見つかりません。" ++ + #: dnf/rpm/transaction.py:119 + msgid "Errors occurred during test transaction." + msgstr "テストトランザクション中にエラーが発生しました。" + ++#: dnf/sack.py:47 ++msgid "" ++"allow_vendor_change is disabled. This option is currently not supported for " ++"downgrade and distro-sync commands" ++msgstr "" ++"allow_vendor_change は無効になっています。このオプションは、downgrade コマン" ++"ドおよび distro-sync コマンドではサポートされていません" ++ + #. TRANSLATORS: This is for a single package currently being downgraded. + #: dnf/transaction.py:80 + msgctxt "currently" +@@ -3961,168 +4155,231 @@ msgstr "scriptletの実行中" + msgid "Preparing" + msgstr "準備" + +-#: dnf/transaction_sr.py:60 ++#: dnf/transaction_sr.py:66 + #, python-brace-format +-msgid "Errors in \"{filename}\":" ++msgid "" ++"The following problems occurred while replaying the transaction from file " ++"\"{filename}\":" + msgstr "" ++"ファイル \"{filename}\" からのトランザクションの再生中に以下の問題が発生しま" ++"した:" + +-#: dnf/transaction_sr.py:70 +-#, python-brace-format +-msgid "Error in \"{filename}\": {error}" +-msgstr "" ++#: dnf/transaction_sr.py:68 ++msgid "The following problems occurred while running a transaction:" ++msgstr "トランザクションの実行中に以下の問題が発生しました:" + +-#: dnf/transaction_sr.py:87 ++#: dnf/transaction_sr.py:89 + #, python-brace-format + msgid "Invalid major version \"{major}\", number expected." +-msgstr "" ++msgstr "無効なメジャーバージョン \"{major}\"。数字が必要です。" + +-#: dnf/transaction_sr.py:95 ++#: dnf/transaction_sr.py:97 + #, python-brace-format + msgid "Invalid minor version \"{minor}\", number expected." +-msgstr "" ++msgstr "無効なマイナーバージョン \"{minor}\"。数字が必要です。" + +-#: dnf/transaction_sr.py:101 ++#: dnf/transaction_sr.py:103 + #, python-brace-format + msgid "" + "Incompatible major version \"{major}\", supported major version is " + "\"{major_supp}\"." + msgstr "" ++"互換性のないメジャーバージョン \"{major}\"。サポートされているメジャーバー" ++"ジョンは \"{major_supp}\" です。" ++ ++#: dnf/transaction_sr.py:224 ++msgid "" ++"Conflicting TransactionReplay arguments have been specified: filename, data" ++msgstr "競合する TransactionReplay 引数が指定されています。filename, data" + +-#: dnf/transaction_sr.py:244 ++#: dnf/transaction_sr.py:265 + #, python-brace-format + msgid "Unexpected type of \"{id}\", {exp} expected." +-msgstr "" ++msgstr "予期しない {id}\" のタイプ。{exp} が必要です。" + +-#: dnf/transaction_sr.py:250 ++#: dnf/transaction_sr.py:271 + #, python-brace-format + msgid "Missing key \"{key}\"." +-msgstr "" ++msgstr "\"{key}\" キーがありません。" + +-#: dnf/transaction_sr.py:263 ++#: dnf/transaction_sr.py:285 + #, python-brace-format + msgid "Missing object key \"{key}\" in an rpm." +-msgstr "" ++msgstr "オブジェクトキー \"{key}\" が rpm にありません。" + +-#: dnf/transaction_sr.py:267 ++#: dnf/transaction_sr.py:289 + #, python-brace-format +-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." +-msgstr "" ++msgid "" ++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." ++msgstr "rpm nevra \"{nevra}\" の予期しないパッケージ理由 \"{reason}\" の値。" + +-#: dnf/transaction_sr.py:275 ++#: dnf/transaction_sr.py:297 + #, python-brace-format + msgid "Cannot parse NEVRA for package \"{nevra}\"." +-msgstr "" ++msgstr "パッケージ \"{nevra}\" の NEVRA を解析できません。" + +-#: dnf/transaction_sr.py:286 ++#: dnf/transaction_sr.py:321 + #, python-brace-format + msgid "Cannot find rpm nevra \"{nevra}\"." +-msgstr "" ++msgstr "rpm nevra \"{nevra}\" を見つけることはできません。" + +-#: dnf/transaction_sr.py:301 +-#, fuzzy, python-brace-format +-#| msgid "Package %s is already installed." ++#: dnf/transaction_sr.py:336 ++#, python-brace-format + msgid "Package \"{na}\" is already installed for action \"{action}\"." +-msgstr "パッケージ %s は既にインストールされています。" ++msgstr "" ++"パッケージ \"{na}\" は、アクション \"{action}\" 用に既にインストールされてい" ++"ます。" + +-#: dnf/transaction_sr.py:311 ++#: dnf/transaction_sr.py:345 + #, python-brace-format + msgid "" + "Package nevra \"{nevra}\" not available in repositories for action " + "\"{action}\"." + msgstr "" ++"アクション \"{action}\" に利用できる パッケージ nevra \"{nevra}\" はレポジト" ++"リーにありません。" + +-#: dnf/transaction_sr.py:322 ++#: dnf/transaction_sr.py:356 + #, python-brace-format + msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"." + msgstr "" ++"アクション \"{action}\" には、パッケージ nevra \"{nevra}\" インストールされて" ++"いません。" + +-#: dnf/transaction_sr.py:336 ++#: dnf/transaction_sr.py:370 + #, python-brace-format +-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." ++msgid "" ++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." + msgstr "" ++"rpm nevra \"{nevra}\" の、パッケージアクション \"{action}\" の予期しない値。" + +-#: dnf/transaction_sr.py:343 +-#, fuzzy, python-format +-#| msgid "Module or Group '%s' is not available." ++#: dnf/transaction_sr.py:377 ++#, python-format + msgid "Group id '%s' is not available." +-msgstr "モジュールまたはグループ '%s' は利用不可です。" ++msgstr "グループ id '%s' は利用できません。" + +-#: dnf/transaction_sr.py:364 ++#: dnf/transaction_sr.py:398 + #, python-brace-format + msgid "Missing object key \"{key}\" in groups.packages." +-msgstr "" ++msgstr "オブジェクトキー \"{key}\" が groups.packages に含まれません。" + +-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387 +-#, fuzzy, python-format +-#| msgid "Module or Group '%s' is not installed." ++#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421 ++#, python-format + msgid "Group id '%s' is not installed." +-msgstr "モジュールまたはグループ '%s' がインストールされていません。" ++msgstr "グループ id '%s' がインストールされていません。" + +-#: dnf/transaction_sr.py:398 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not available." ++#: dnf/transaction_sr.py:432 ++#, python-format + msgid "Environment id '%s' is not available." +-msgstr "環境 '%s' は利用不可です。" ++msgstr "環境 id '%s' は利用できません。" + +-#: dnf/transaction_sr.py:422 ++#: dnf/transaction_sr.py:456 + #, python-brace-format + msgid "" + "Invalid value \"{group_type}\" of environments.groups.group_type, only " + "\"mandatory\" or \"optional\" is supported." + msgstr "" ++"environments.groups.group_type の無効な値 \"{group_type}\"。\"mandatory\" ま" ++"たは \"optional\" のみに対応しています。" + +-#: dnf/transaction_sr.py:430 ++#: dnf/transaction_sr.py:464 + #, python-brace-format + msgid "Missing object key \"{key}\" in environments.groups." +-msgstr "" ++msgstr "オブジェクトキー \"{key}\" が environments.groups に含まれません。" + +-#: dnf/transaction_sr.py:508 ++#: dnf/transaction_sr.py:542 + #, python-brace-format + msgid "Unexpected value of group action \"{action}\" for group \"{group}\"." + msgstr "" ++"グループ \"{group}\" の グループアクション \"{action}\" の予期しない値。" + +-#: dnf/transaction_sr.py:513 ++#: dnf/transaction_sr.py:547 + #, python-brace-format + msgid "Missing object key \"{key}\" in a group." +-msgstr "" ++msgstr "オブジェクトキー \"{key}\" がグループ内にありません。" + +-#: dnf/transaction_sr.py:537 ++#: dnf/transaction_sr.py:571 + #, python-brace-format +-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"." +-msgstr "" ++msgid "" ++"Unexpected value of environment action \"{action}\" for environment " ++"\"{env}\"." ++msgstr "環境 \"{env}\" の環境アクション \"{action}\" の予期しない値。" + +-#: dnf/transaction_sr.py:542 ++#: dnf/transaction_sr.py:576 + #, python-brace-format + msgid "Missing object key \"{key}\" in an environment." +-msgstr "" ++msgstr "オブジェクトキー \"{key}\" が環境にありません。" + +-#: dnf/transaction_sr.py:581 ++#: dnf/transaction_sr.py:615 + #, python-brace-format + msgid "" +-"Package nevra \"{nevra}\", which is not present in the transaction file, was" +-" pulled into the transaction." ++"Package nevra \"{nevra}\", which is not present in the transaction file, was " ++"pulled into the transaction." + msgstr "" ++"トランザクションファイルに存在しないパッケージ nevra \"{nevra}\" がトランザク" ++"ションにプルされていました。" + + # translation auto-copied from project jbpm-designer, version 6.0.1, document + # org.jbpm/jbpm-designer- + # api/resources/org/jbpm/designer/resources/i18n/DesignerConstants, author + # nmirasch +-#: dnf/util.py:391 dnf/util.py:393 ++#: dnf/util.py:419 dnf/util.py:421 + msgid "Problem" + msgstr "問題" + +-#: dnf/util.py:444 ++#: dnf/util.py:472 + msgid "TransactionItem not found for key: {}" + msgstr "TransactionItemが見つかりません鍵: {}" + +-#: dnf/util.py:454 ++#: dnf/util.py:482 + msgid "TransactionSWDBItem not found for key: {}" + msgstr "TransactionSWDBItemが見つかりません鍵: {}" + +-#: dnf/util.py:457 ++#: dnf/util.py:485 + msgid "Errors occurred during transaction." + msgstr "トランザクション中にエラーが発生しました。" + ++#: dnf/util.py:621 ++msgid "Reinstalled" ++msgstr "再インストール済み" ++ ++#: dnf/util.py:622 ++msgid "Skipped" ++msgstr "スキップ済み" ++ ++#: dnf/util.py:623 ++msgid "Removed" ++msgstr "削除しました" ++ ++#: dnf/util.py:626 ++msgid "Failed" ++msgstr "失敗しました" ++ ++#~ msgid "skipping." ++#~ msgstr "スキップします。" ++ ++#~ msgid "" ++#~ "Using rpmkeys executable from {path} to verify signature for package: " ++#~ "{package}." ++#~ msgstr "" ++#~ "{path} から実行可能ファイル rpmkeys を使用して、パッケージの署名を検証しま" ++#~ "す: {package}。" ++ ++#~ msgid "%s: %s check failed: %s vs %s" ++#~ msgstr "%s: %s の確認に失敗しました: %s vs %s" ++ ++#~ msgid "Action not handled: {}" ++#~ msgstr "動作は対処されていません: {}" ++ ++#~ msgid "no package matched" ++#~ msgstr "一致したパッケージはありません。" ++ ++#~ msgid "Not found given transaction ID" ++#~ msgstr "指定されたトランザクション ID は見つかりません" ++ ++#~ msgid "Undoing transaction {}, from {}" ++#~ msgstr "トランザクション {} を {} から取り消しています" ++ + #~ msgid "format for displaying found packages" + #~ msgstr "見つかったパッケージを表示する形式" + +@@ -4133,5 +4390,7 @@ msgstr "トランザクション中にエラーが発生しました。" + #~ msgstr "不正なトランザクション ID、またはパッケージが指定されました" + + #~ msgid "" +-#~ "Display capabilities that the package depends on for running a %%pre script." +-#~ msgstr "%%pre スクリプトを実行するためにパッケージが依存する機能を表示します。" ++#~ "Display capabilities that the package depends on for running a %%pre " ++#~ "script." ++#~ msgstr "" ++#~ "%%pre スクリプトを実行するためにパッケージが依存する機能を表示します。" +diff --git a/po/ko.po b/po/ko.po +index 449f6130..cf15d9cf 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -1,68 +1,70 @@ + # MinWoo Joh , 2015. #zanata + # Eun-Ju Kim , 2016. #zanata + # Ludek Janda , 2018. #zanata, 2020. ++# simmon , 2021. ++# Kim InSoo , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-09-12 11:29+0000\n" +-"Last-Translator: Ludek Janda \n" +-"Language-Team: Korean \n" ++"POT-Creation-Date: 2022-02-28 11:24+0100\n" ++"PO-Revision-Date: 2022-03-02 04:16+0000\n" ++"Last-Translator: Kim InSoo \n" ++"Language-Team: Korean \n" + "Language: ko\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.2.2\n" ++"X-Generator: Weblate 4.11\n" + + #: dnf/automatic/emitter.py:32 + #, python-format + msgid "The following updates have been applied on '%s':" +-msgstr "'%s'에 다음 업데이트가 적용되었습니다:" ++msgstr "다음 최신화가 '%s'에 적용되었습니다:" + + #: dnf/automatic/emitter.py:33 +-#, fuzzy, python-format +-#| msgid "Updates applied on '%s'." ++#, python-format + msgid "Updates completed at %s" +-msgstr "'%s'에 업데이트가 적용 되었습니다." ++msgstr "'%s'에 최신화가 적용 되었습니다" + + #: dnf/automatic/emitter.py:34 + #, python-format + msgid "The following updates are available on '%s':" +-msgstr "'%s'에서 다음 업데이트를 사용할 수 있습니다:" ++msgstr "다음 최신화가 '%s'에서 사용 할 수 있습니다:" + + #: dnf/automatic/emitter.py:35 + #, python-format + msgid "The following updates were downloaded on '%s':" +-msgstr "'%s'에 다음 업데이트가 다운로드되었습니다:" ++msgstr "'%s'에 다음 최신화가 내려받기 되었습니다:" + + #: dnf/automatic/emitter.py:83 + #, python-format + msgid "Updates applied on '%s'." +-msgstr "'%s'에 업데이트가 적용되었습니다." ++msgstr "'%s'에서 적용되어 최신화되었습니다." + + #: dnf/automatic/emitter.py:85 + #, python-format + msgid "Updates downloaded on '%s'." +-msgstr "'%s'에 업데이트가 다운로드되었습니다." ++msgstr "'%s'에 최신화가 내려받기 되었습니다." + + #: dnf/automatic/emitter.py:87 + #, python-format + msgid "Updates available on '%s'." +-msgstr "'%s'에서 업데이트가 가능합니다." ++msgstr "'%s'에서 가능한 최신화입니다." + + #: dnf/automatic/emitter.py:110 + #, python-format + msgid "Failed to send an email via '%s': %s" +-msgstr "'%s'를 통한 이메일 전송을 실패했습니다: %s" ++msgstr "'%s'를 통한 전자우편 전송을 실패했습니다: %s" + + #: dnf/automatic/emitter.py:140 + #, python-format + msgid "Failed to execute command '%s': returned %d" + msgstr "명령’%s'을 실행하지 못했습니다: %d를 반환했습니다" + +-#: dnf/automatic/main.py:164 dnf/conf/config.py:151 ++#: dnf/automatic/main.py:164 + #, python-format + msgid "Unknown configuration value: %s=%s in %s; %s" + msgstr "알 수없는 설정: %s=%s in %s; %s" +@@ -72,26 +74,26 @@ msgstr "알 수없는 설정: %s=%s in %s; %s" + msgid "Unknown configuration option: %s = %s in %s" + msgstr "알 수없는 옵션 : %s = %s in %s" + +-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299 ++#: dnf/automatic/main.py:237 dnf/cli/cli.py:305 + msgid "GPG check FAILED" + msgstr "GPG 확인 실패" + + #: dnf/automatic/main.py:274 + msgid "Waiting for internet connection..." +-msgstr "" ++msgstr "인터넷 연결을 위한 대기..." + + #: dnf/automatic/main.py:304 + msgid "Started dnf-automatic." + msgstr "dnf-automatic을 시작했습니다." + + #: dnf/automatic/main.py:308 +-#, python-format +-msgid "Sleep for %s seconds" +-msgstr "%s 초 동안 절전합니다" ++msgid "Sleep for {} second" ++msgid_plural "Sleep for {} seconds" ++msgstr[0] "{} 초 동안 절전합니다" + + #: dnf/automatic/main.py:315 + msgid "System is off-line." +-msgstr "" ++msgstr "네트웍 끊김." + + #: dnf/automatic/main.py:344 dnf/cli/main.py:59 dnf/cli/main.py:80 + #: dnf/cli/main.py:83 +@@ -99,442 +101,436 @@ msgstr "" + msgid "Error: %s" + msgstr "오류: %s" + +-#: dnf/base.py:146 ++#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479 + msgid "loading repo '{}' failure: {}" +-msgstr "repo '{}'의 로드에 실패했습니다 : {}" ++msgstr "repo '{}'의 적재에 실패했습니다 : {}" + +-#: dnf/base.py:148 ++#: dnf/base.py:150 + msgid "Loading repository '{}' has failed" +-msgstr "리포지토리 '{}'의 로드에 실패했습니다" ++msgstr "저장소 '{}'의 적재하기가 실패했습니다" + +-#: dnf/base.py:320 ++#: dnf/base.py:327 + msgid "Metadata timer caching disabled when running on metered connection." +-msgstr "데이터 통신 연결을 사용할 때 메타 데이터 타이머 캐싱을 비활성화합니다." ++msgstr "" ++"데이터 통신 연결을 사용 할 때에 메타 자료 타이머 캐싱을 비활성화합니다." + +-#: dnf/base.py:325 ++#: dnf/base.py:332 + msgid "Metadata timer caching disabled when running on a battery." +-msgstr "배터리를 사용할할 때 메타 데이터 타이머 캐싱을 비활성화합니다." ++msgstr "배터리에서 동작 할 때에 메타자료 타이머 캐싱을 비활성화합니다." + +-#: dnf/base.py:330 ++#: dnf/base.py:337 + msgid "Metadata timer caching disabled." +-msgstr "메타 데이터 타이머 캐싱이 비활성화되었습니다." ++msgstr "메타자료 타이머 캐싱이 비활성화되었습니다." + +-#: dnf/base.py:335 ++#: dnf/base.py:342 + msgid "Metadata cache refreshed recently." +-msgstr "최근에 메타 데이터 캐시가 새로 고쳐졌습니다." ++msgstr "최근에 메타 자료 캐쉬가 새로 고쳐졌습니다." + +-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91 ++#: dnf/base.py:348 dnf/cli/commands/__init__.py:91 + msgid "There are no enabled repositories in \"{}\"." + msgstr "\"{}\"에 사용 가능한 저장소가 없습니다." + +-#: dnf/base.py:348 ++#: dnf/base.py:355 + #, python-format + msgid "%s: will never be expired and will not be refreshed." + msgstr "%s: 만료되지 않고 새로 고침되지 않습니다." + +-#: dnf/base.py:350 ++#: dnf/base.py:357 + #, python-format + msgid "%s: has expired and will be refreshed." + msgstr "%s: 만료되어 새로 고침됩니다." + + #. expires within the checking period: +-#: dnf/base.py:354 ++#: dnf/base.py:361 + #, python-format + msgid "%s: metadata will expire after %d seconds and will be refreshed now" +-msgstr "%s: 메타 데이터는 %d 초 이후에 만료되며 이제 새로 고침됩니다." ++msgstr "%s: 메타 데이터는 %d 초 이후에 만료되며 이제 새로 고침됩니다" + +-#: dnf/base.py:358 ++#: dnf/base.py:365 + #, python-format + msgid "%s: will expire after %d seconds." + msgstr "%s: %d 초 후에 만료됩니다." + + #. performs the md sync +-#: dnf/base.py:364 ++#: dnf/base.py:371 + msgid "Metadata cache created." +-msgstr "메타 데이터 캐시가 생성되었습니다." ++msgstr "메타 자료 캐쉬가 생성되었습니다." + +-#: dnf/base.py:397 ++#: dnf/base.py:404 dnf/base.py:471 + #, python-format + msgid "%s: using metadata from %s." +-msgstr "%s: %s에서 메타 데이터 사용 중" ++msgstr "%s: 메타 자료 사용 중 %s." + +-#: dnf/base.py:409 ++#: dnf/base.py:416 dnf/base.py:484 + #, python-format + msgid "Ignoring repositories: %s" +-msgstr "리포지토리를 무시합니다: %s" ++msgstr "저장소를 무시합니다: %s" + +-#: dnf/base.py:412 ++#: dnf/base.py:419 + #, python-format + msgid "Last metadata expiration check: %s ago on %s." +-msgstr "마지막 메타 데이터 만료 확인 :%s. %s 이전에 확인" ++msgstr "마지막 메타자료 만료확인 %s 이전인: %s." + +-#: dnf/base.py:443 ++#: dnf/base.py:512 + msgid "" + "The downloaded packages were saved in cache until the next successful " + "transaction." +-msgstr "다운로드된 패키지는 다음 번 성공적인 트랜잭션까지 캐시에 저장됩니다." ++msgstr "내려받기된 꾸러미는 다음 번 성공적인 연결까지 캐쉬에 저장됩니다." + +-#: dnf/base.py:445 ++#: dnf/base.py:514 + #, python-format + msgid "You can remove cached packages by executing '%s'." +-msgstr "'%s'을/를 실행하여 캐시 패키지를 삭제할 수 있습니다." ++msgstr "'%s' 를 실행하여 캐쉬 꾸러미를 삭제 할 수 있습니다." + +-#: dnf/base.py:535 ++#: dnf/base.py:606 + #, python-format + msgid "Invalid tsflag in config file: %s" + msgstr "설정 파일에서 tsflag 사용이 잘못되었습니다: %s" + +-#: dnf/base.py:591 ++#: dnf/base.py:662 + #, python-format + msgid "Failed to add groups file for repository: %s - %s" + msgstr "리포지토리의 그룹 파일을 추가하지 못했습니다. %s - %s" + +-#: dnf/base.py:823 ++#: dnf/base.py:904 + msgid "Running transaction check" +-msgstr "트랜잭션 확인 실행 중" ++msgstr "연결 확인 실행 중" + +-#: dnf/base.py:831 ++#: dnf/base.py:912 + msgid "Error: transaction check vs depsolve:" +-msgstr "오류 : 트랜잭션 확인 및 종속성 해결 오류" ++msgstr "오류: 연결 확인 및 종속성 해결 오류:" + +-#: dnf/base.py:837 ++#: dnf/base.py:918 + msgid "Transaction check succeeded." +-msgstr "트랜잭션 확인에 성공했습니다." ++msgstr "연결 확인에 성공했습니다." + +-#: dnf/base.py:840 ++#: dnf/base.py:921 + msgid "Running transaction test" +-msgstr "트랜잭션 테스트 실행 중" ++msgstr "연결 시험 실행 중" + +-#: dnf/base.py:850 dnf/base.py:992 ++#: dnf/base.py:931 dnf/base.py:1082 + msgid "RPM: {}" + msgstr "RPM: {}" + +-#: dnf/base.py:851 ++#: dnf/base.py:932 + msgid "Transaction test error:" +-msgstr "트랜잭션 테스트 오류:" ++msgstr "연결 시험 오류:" + +-#: dnf/base.py:862 ++#: dnf/base.py:943 + msgid "Transaction test succeeded." +-msgstr "트랜잭션 테스트에 성공했습니다." ++msgstr "연결 시험에 성공했습니다." + +-#: dnf/base.py:883 ++#: dnf/base.py:964 + msgid "Running transaction" +-msgstr "트랜잭션 실행 중" ++msgstr "연결 실행 중" + +-#: dnf/base.py:911 ++#: dnf/base.py:1001 + msgid "Disk Requirements:" + msgstr "디스크 요구 사항 :" + +-#: dnf/base.py:914 ++#: dnf/base.py:1004 + #, python-brace-format + msgid "At least {0}MB more space needed on the {1} filesystem." + msgid_plural "At least {0}MB more space needed on the {1} filesystem." + msgstr[0] "{1} 파일 시스템에 최소 {0}MB의 공간이 더 필요합니다." + +-#: dnf/base.py:921 ++#: dnf/base.py:1011 + msgid "Error Summary" + msgstr "오류 요약" + +-#: dnf/base.py:947 ++#: dnf/base.py:1037 + #, python-brace-format + msgid "RPMDB altered outside of {prog}." + msgstr "RPMDB는 {prog} 외부에서 변경되었습니다." + +-#: dnf/base.py:993 dnf/base.py:1001 ++#: dnf/base.py:1083 dnf/base.py:1091 + msgid "Could not run transaction." +-msgstr "트랜잭션을 실행할 수 없습니다." ++msgstr "연결를 실행 할 수 없습니다." + +-#: dnf/base.py:996 ++#: dnf/base.py:1086 + msgid "Transaction couldn't start:" +-msgstr "트랜잭션을 시작할 수 없습니다 :" ++msgstr "연결을 시작 할 수 없습니다 :" + +-#: dnf/base.py:1010 ++#: dnf/base.py:1100 + #, python-format + msgid "Failed to remove transaction file %s" +-msgstr "%s 트랜잭션 파일을 삭제하지 못했습니다" ++msgstr "%s 연결 파일을 삭제하지 못했습니다" + +-#: dnf/base.py:1092 ++#: dnf/base.py:1182 + msgid "Some packages were not downloaded. Retrying." +-msgstr "일부 패키지가 다운로드되지 않았습니다. 다시 시도 중입니다." ++msgstr "일부 꾸러미를 내려받지 못했습니다. 다시 시도합니다." + +-#: dnf/base.py:1122 ++#: dnf/base.py:1212 + #, python-format + msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)" +-msgstr "Delta RPM이 %.1f MB의 업데이트를 %.1f MB로 줄였습니다. (%d.1 %% 절약됨)" ++msgstr "델타 RPM이 %.1f MB의 최신화를 %.1f MB로 줄였습니다. (%d.1%% 절약됨)" + +-#: dnf/base.py:1125 ++#: dnf/base.py:1215 + #, python-format + msgid "" + "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)" +-msgstr "Delta RPM은 %.1f MB의 업데이트를 %.1f MB로 줄이는데 실패했습니다. (%d.1 %% 손실됨)" ++msgstr "" ++"Delta RPM은 %.1f MB의 최신화를 %.1f MB로 줄이는데 실패했습니다. (%d.1 %% 손실" ++"됨)" + +-#: dnf/base.py:1167 ++#: dnf/base.py:1257 + msgid "Cannot add local packages, because transaction job already exists" +-msgstr "트랜잭션 작업이 이미 존재하므로 로컬 패키지를 추가할 수 없습니다" ++msgstr "연결 작업이 이미 존재하므로 로컬 꾸러미를 추가할 수 없습니다" + +-#: dnf/base.py:1181 ++#: dnf/base.py:1271 + msgid "Could not open: {}" + msgstr "열 수 없음 : {}" + +-#: dnf/base.py:1219 ++#: dnf/base.py:1309 + #, python-format + msgid "Public key for %s is not installed" +-msgstr "%s의 공개 키는 설치되어 있지 않습니다." ++msgstr "%s의 공개 키는 설치되어 있지 않습니다" + +-#: dnf/base.py:1223 ++#: dnf/base.py:1313 + #, python-format + msgid "Problem opening package %s" +-msgstr "%s 패키지를 여는 중에 문제가 발생했습니다" ++msgstr "%s 꾸러미를 여는 중에 문제가 발생했습니다" + +-#: dnf/base.py:1231 ++#: dnf/base.py:1321 + #, python-format + msgid "Public key for %s is not trusted" +-msgstr "%s의 공개 키는 신뢰할 수 없습니다" ++msgstr "%s의 공개 키는 신뢰 할 수 없습니다" + +-#: dnf/base.py:1235 ++#: dnf/base.py:1325 + #, python-format + msgid "Package %s is not signed" +-msgstr "%s 패키지가 서명되지 않았습니다" ++msgstr "%s 꾸러미가 서명되지 않았습니다" + +-#: dnf/base.py:1265 ++#: dnf/base.py:1355 + #, python-format + msgid "Cannot remove %s" +-msgstr "%s을/를 삭제할 수 없습니다." ++msgstr "%s를 삭제 할 수 없습니다" + +-#: dnf/base.py:1269 ++#: dnf/base.py:1359 + #, python-format + msgid "%s removed" + msgstr "%s가 삭제되었습니다" + +-#: dnf/base.py:1549 ++#: dnf/base.py:1639 + msgid "No match for group package \"{}\"" +-msgstr "그룹 패키지 \"{}\"에 일치하는 항목이 없습니다" ++msgstr "그룹 꾸러미 \"{}\"에 일치하는 항목이 없습니다" + +-#: dnf/base.py:1635 ++#: dnf/base.py:1721 + #, python-format + msgid "Adding packages from group '%s': %s" +-msgstr "'%s' 그룹에서 패키지 추가: %s" ++msgstr "'%s' 그룹에서 꾸러미 추가: %s" + +-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442 +-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592 +-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80 ++#: dnf/base.py:1744 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437 ++#: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587 ++#: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80 + #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110 + msgid "Nothing to do." +-msgstr "처리가 필요하지 않습니다" ++msgstr "처리가 필요하지 않습니다." + +-#: dnf/base.py:1676 ++#: dnf/base.py:1762 + msgid "No groups marked for removal." +-msgstr "제거할 패키지 그룹이 없습니다" ++msgstr "제거할 꾸러미 그룹이 없습니다." + +-#: dnf/base.py:1710 ++#: dnf/base.py:1796 + msgid "No group marked for upgrade." +-msgstr "업그레이드용으로 표시된 그룹이 없습니다." ++msgstr "향상을 위해 표시된 그룹이 없습니다." + +-#: dnf/base.py:1925 ++#: dnf/base.py:2010 + #, python-format + msgid "Package %s not installed, cannot downgrade it." +-msgstr "%s 패키지가 설치되어 있지 않기 때문에 다운 그레이드할 수 없습니다." ++msgstr "%s 꾸러미가 설치되어 있지 않기 때문에 하향설치 할 수 없습니다." + +-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980 +-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411 +-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482 +-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633 +-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147 ++#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071 ++#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 dnf/cli/cli.py:417 ++#: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477 ++#: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628 ++#: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147 + #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84 +-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121 ++#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116 + #, python-format + msgid "No match for argument: %s" +-msgstr "일치하는 인수가 없습니다 : %s" ++msgstr "인수가 일치하지 않습니다: %s" + +-#: dnf/base.py:1934 ++#: dnf/base.py:2019 + #, python-format + msgid "Package %s of lower version already installed, cannot downgrade it." +-msgstr "%s 패키지의 하위 버전이 이미 설치되어 있으므로 다운 그레이드할 수 없습니다." ++msgstr "" ++"%s 꾸러미의 하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다." + +-#: dnf/base.py:1957 ++#: dnf/base.py:2042 + #, python-format + msgid "Package %s not installed, cannot reinstall it." +-msgstr "%s 패키지가 설치되어 있지 않기 때문에 다시 설치할 수 없습니다." ++msgstr "꾸러미 %s가 설치되지 않아서, 다시 설치 할 수 없습니다." + +-#: dnf/base.py:1972 ++#: dnf/base.py:2057 + #, python-format + msgid "File %s is a source package and cannot be updated, ignoring." +-msgstr "%s 파일은 소스 패키지이며 업데이트할 수 없습니다. 무시합니다." ++msgstr "%s 파일은 소스 꾸러미이며 최신화 할 수 없습니다. 무시합니다." + +-#: dnf/base.py:1978 ++#: dnf/base.py:2068 + #, python-format + msgid "Package %s not installed, cannot update it." +-msgstr "%s 패키지가 설치되어 있지 않기 때문에 업데이트할 수 없습니다." ++msgstr "%s 꾸러미가 설치되어 있지 않기 때문에 최신화 할 수 없습니다." + +-#: dnf/base.py:1987 ++#: dnf/base.py:2078 + #, python-format + msgid "" + "The same or higher version of %s is already installed, cannot update it." +-msgstr "%s 이상의 버전이 이미 설치되어 있으므로 업데이트할 수 없습니다." ++msgstr "%s 이상의 버전이 이미 설치되어 있으므로 최신화 할 수 없습니다." + +-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81 ++#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81 + #, python-format + msgid "Package %s available, but not installed." +-msgstr "%s 패키지는 사용할 수는 있지만 설치되어 있지 않습니다." ++msgstr "%s 꾸러미는 사용할 수는 있지만 설치되어 있지 않습니다." + +-#: dnf/base.py:2032 ++#: dnf/base.py:2127 + #, python-format + msgid "Package %s available, but installed for different architecture." +-msgstr "%s 패키지는 사용 가능하지만 다른 아키텍처 용으로 설치되어 있습니다." ++msgstr "%s 꾸러미는 사용 가능하지만 다른 구조용으로 설치되어 있습니다." + +-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699 ++#: dnf/base.py:2152 + #, python-format + msgid "No package %s installed." +-msgstr "%s 패키지는 설치되어 있지 않습니다" ++msgstr "%s 꾸러미는 설치되어 있지 않습니다." + +-#: dnf/base.py:2075 dnf/cli/commands/install.py:136 ++#: dnf/base.py:2170 dnf/cli/commands/install.py:136 + #: dnf/cli/commands/remove.py:133 + #, python-format + msgid "Not a valid form: %s" + msgstr "잘못된 형식: %s" + +-#: dnf/base.py:2091 dnf/cli/commands/__init__.py:681 +-#: dnf/cli/commands/remove.py:163 ++#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676 ++#: dnf/cli/commands/remove.py:162 + msgid "No packages marked for removal." +-msgstr "제거 대상 패키지가 없습니다." ++msgstr "제거 대상 꾸러미가 없습니다." + +-#: dnf/base.py:2179 dnf/cli/cli.py:422 ++#: dnf/base.py:2273 dnf/cli/cli.py:428 + #, python-format + msgid "Packages for argument %s available, but not installed." +-msgstr "%s 인수에 대한 패키지를 사용할 수 있지만 설치되어 있지 않습니다." ++msgstr "%s 인수에 대한 꾸러미를 사용할 수 있지만 설치되어 있지 않습니다." + +-#: dnf/base.py:2184 ++#: dnf/base.py:2278 + #, python-format + msgid "Package %s of lowest version already installed, cannot downgrade it." +-msgstr "%s 패키지의 최하위 버전이 이미 설치되어 있으므로 다운 그레이드할 수 없습니다." +- +-#: dnf/base.py:2242 +-msgid "Action not handled: {}" +-msgstr "작업이 처리되지 않았습니다: {}" +- +-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703 +-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169 +-#, python-format +-msgid "No package %s available." +-msgstr "사용 가능한 패키지 %s가 없습니다." +- +-#: dnf/base.py:2269 +-msgid "no package matched" +-msgstr "일치하는 패키지가 없습니다." ++msgstr "" ++"%s 꾸러미의 최하위 버전이 이미 설치되어 있으므로 다운그레이드 할 수 없습니다." + +-#: dnf/base.py:2290 ++#: dnf/base.py:2378 + msgid "No security updates needed, but {} update available" +-msgstr "보안 업데이트가 필요하지 않지만 {} 업데이트가 가능합니다" ++msgstr "보안 최신화가 필요하지 않지만, {} 최신화가 가능합니다" + +-#: dnf/base.py:2292 ++#: dnf/base.py:2380 + msgid "No security updates needed, but {} updates available" +-msgstr "보안 업데이트는 필요하지 않지만 {} 업데이트가 가능합니다" ++msgstr "보안 최신화는 필요하지 않지만 {} 최신화는 가능합니다" + +-#: dnf/base.py:2296 ++#: dnf/base.py:2384 + msgid "No security updates needed for \"{}\", but {} update available" +-msgstr "\"{}\"에는 보안 업데이트가 필요하지 않지만 {} 업데이트가 가능합니다" ++msgstr "\"{}\"에는 보안 최신화가 필요하지 않지만 {} 최신화가 가능합니다" + +-#: dnf/base.py:2298 ++#: dnf/base.py:2386 + msgid "No security updates needed for \"{}\", but {} updates available" +-msgstr "\"{}\"에는 보안 업데이트가 필요하지 않지만 {} 업데이트가 가능합니다" ++msgstr "\"{}\"에는 보안 최신화가 필요하지 않지만 {} 최신화가 가능합니다" + + #. raise an exception, because po.repoid is not in self.repos +-#: dnf/base.py:2319 ++#: dnf/base.py:2407 + #, python-format + msgid "Unable to retrieve a key for a commandline package: %s" +-msgstr "" ++msgstr "명령줄 꾸러미: %s 대한 키를 검색 할 수 없습니다" + +-#: dnf/base.py:2327 ++#: dnf/base.py:2415 + #, python-format + msgid ". Failing package is: %s" +-msgstr "실패한 패키지는 다음과 같습니다. %s" ++msgstr "실패한 꾸러미는 다음과 같습니다. %s" + +-#: dnf/base.py:2328 ++#: dnf/base.py:2416 + #, python-format + msgid "GPG Keys are configured as: %s" + msgstr "GPG 키는 다음과 같이 설정되어 있습니다. %s" + +-#: dnf/base.py:2340 ++#: dnf/base.py:2428 + #, python-format + msgid "GPG key at %s (0x%s) is already installed" + msgstr "%s (0x%s)의 GPG 키가 이미 설치되어 있습니다" + +-#: dnf/base.py:2373 ++#: dnf/base.py:2464 + msgid "The key has been approved." + msgstr "키가 승인되었습니다." + +-#: dnf/base.py:2376 ++#: dnf/base.py:2467 + msgid "The key has been rejected." + msgstr "키가 거부되었습니다." + +-#: dnf/base.py:2409 ++#: dnf/base.py:2500 + #, python-format + msgid "Key import failed (code %d)" + msgstr "키 가져 오기에 실패했습니다 (코드 %d)" + +-#: dnf/base.py:2411 ++#: dnf/base.py:2502 + msgid "Key imported successfully" + msgstr "키 가져오기에 성공했습니다" + +-#: dnf/base.py:2415 ++#: dnf/base.py:2506 + msgid "Didn't install any keys" + msgstr "키를 하나도 설치하지 못했습니다" + +-#: dnf/base.py:2418 ++#: dnf/base.py:2509 + #, python-format + msgid "" +-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n" ++"The GPG keys listed for the \"%s\" repository are already installed but they " ++"are not correct for this package.\n" + "Check that the correct key URLs are configured for this repository." + msgstr "" +-"해당 GPG 키는 \"%s\"저장소가 이미 설치되어 있지만이 패키지에 맞지 않습니다.\n" ++"해당 GPG 키는 \"%s\"저장소가 이미 설치되어 있지만이 꾸러미에 맞지 않습니다.\n" + "이 저장소에 대해 올바른 키 URL이 구성되었는지 확인하십시오." + +-#: dnf/base.py:2429 ++#: dnf/base.py:2520 + msgid "Import of key(s) didn't help, wrong key(s)?" + msgstr "가져온 키에 문제가 있습니다. 잘못된 키입니까?" + +-#: dnf/base.py:2482 ++#: dnf/base.py:2573 + msgid " * Maybe you meant: {}" +-msgstr " * 다음을 의미할 수도 있습니다: {}" ++msgstr " * 다음을 의미 할 수도 있습니다: {}" + +-#: dnf/base.py:2514 ++#: dnf/base.py:2605 + msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum" +-msgstr "로컬 저장소 \"{}\"의 \"{}\"패키지에 잘못된 체크섬이 있습니다" ++msgstr "로컬 저장소 \"{}\"의 \"{}\"꾸러미에 잘못된 체크섬이 있습니다" + +-#: dnf/base.py:2517 ++#: dnf/base.py:2608 + msgid "Some packages from local repository have incorrect checksum" +-msgstr "로컬 저장소의 일부 패키지에 잘못된 체크섬이 있습니다" ++msgstr "로컬 저장소의 일부 꾸러미에 잘못된 체크섬이 있습니다" + +-#: dnf/base.py:2520 ++#: dnf/base.py:2611 + msgid "Package \"{}\" from repository \"{}\" has incorrect checksum" +-msgstr "저장소 \"{}\"의 패키지 \"{}\"에 잘못된 체크섬이 있습니다" ++msgstr "저장소 \"{}\"의 꾸러미 \"{}\"에 잘못된 체크섬이 있습니다" + +-#: dnf/base.py:2523 ++#: dnf/base.py:2614 + msgid "" + "Some packages have invalid cache, but cannot be downloaded due to \"--" + "cacheonly\" option" +-msgstr "일부 패키지에는 유효하지 않은 캐시가 있지만 \"--cacheonly\"옵션으로 인해 다운로드할 수 없습니다" ++msgstr "" ++"일부 꾸러미에는 유효하지 않은 캐쉬가 있지만 \"--cacheonly\"옵션으로 인해 내려" ++"받기 할 수 없습니다" + +-#: dnf/base.py:2541 dnf/base.py:2561 ++#: dnf/base.py:2632 dnf/base.py:2652 + msgid "No match for argument" + msgstr "일치하는 인수가 없습니다" + +-#: dnf/base.py:2549 dnf/base.py:2569 ++#: dnf/base.py:2640 dnf/base.py:2660 + msgid "All matches were filtered out by exclude filtering for argument" + msgstr "모든 일치 항목이 인수의 제외 필터로 필터링되었습니다" + +-#: dnf/base.py:2551 ++#: dnf/base.py:2642 + msgid "All matches were filtered out by modular filtering for argument" + msgstr "모든 일치 항목이 인수의 모듈식 필터로 필터링되었습니다" + +-#: dnf/base.py:2567 ++#: dnf/base.py:2658 + msgid "All matches were installed from a different repository for argument" + msgstr "모든 일치 항목이 인수의 다른 리포지토리에서 설치되었습니다" + +-#: dnf/base.py:2583 ++#: dnf/base.py:2705 + #, python-format + msgid "Package %s is already installed." +-msgstr "패키지 %s이/가 이미 설치되어 있습니다." ++msgstr "꾸러미 %s가 이미 설치되어 있습니다." + + #: dnf/cli/aliases.py:96 + #, python-format +@@ -551,8 +547,8 @@ msgstr "\"%s\" 파일의 구문 분석에 실패했습니다 : %s" + msgid "Cannot read file \"%s\": %s" + msgstr "\"%s\" 파일을 읽을 수 없습니다: %s" + +-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902 +-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108 ++#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804 ++#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108 + #, python-format + msgid "Config error: %s" + msgstr "설정 오류: %s" +@@ -564,17 +560,17 @@ msgstr "별칭에는 무한 재귀가 포함되어 있습니다" + #: dnf/cli/aliases.py:209 + #, python-format + msgid "%s, using original arguments." +-msgstr "%s, 원래 인수를 사용하고 있습니다" ++msgstr "%s, 원래 인수를 사용." + + #: dnf/cli/cli.py:137 + #, python-format + msgid " Installed: %s-%s at %s" +-msgstr " 설치됨: %s-%s (일시: %s)" ++msgstr " 설치되었습니다: %s-%s (일시: %s)" + + #: dnf/cli/cli.py:139 + #, python-format + msgid " Built : %s at %s" +-msgstr " 빌드됨 :%s (일시: %s)" ++msgstr " 구성 :%s (일시: %s)" + + #: dnf/cli/cli.py:147 + #, python-brace-format +@@ -583,44 +579,50 @@ msgid "" + "stream '{2}'" + msgstr "이 작업은 '{0}' 모듈을 '{1}' 스트림에서 ‘{2}' 스트림으로 전환합니다" + +-#: dnf/cli/cli.py:172 ++#: dnf/cli/cli.py:173 + #, python-brace-format + msgid "" +-"It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using '{prog} module reset ' command. After you reset the module, you can install the other stream." ++"It is not possible to switch enabled streams of a module unless explicitly " ++"enabled via configuration option module_stream_switch.\n" ++"It is recommended to rather remove all installed content from the module, " ++"and reset the module using '{prog} module reset ' command. " ++"After you reset the module, you can install the other stream." + msgstr "" +-"활성화된 모듈 스트림을 전환 할 수 없습니다.\n" +-"설치된 모든 내용을 모듈에서 제거하고 ‘{prog} module reset ' 명령을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후 다른 스트림을 설치할 수 있습니다." ++"구성 옵션 module_stream_switch를 통해 명시적으로 활성화하지 않는 한 활성화된 " ++"모듈 스트림을 전환 할 수 없습니다.\n" ++"설치된 모든 내용을 모듈에서 제거하고 ‘{prog} module reset ' 명령" ++"을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후 다른 스트림" ++"을 설치 할 수 있습니다." + +-#: dnf/cli/cli.py:210 ++#: dnf/cli/cli.py:212 + #, python-brace-format + msgid "{prog} will only download packages for the transaction." +-msgstr "{prog}은/는 트랜잭션용 패키지 만 다운로드합니다." ++msgstr "{prog}은/는 연결용 꾸러미만 내려받기합니다." + +-#: dnf/cli/cli.py:213 ++#: dnf/cli/cli.py:215 + #, python-brace-format + msgid "" + "{prog} will only download packages, install gpg keys, and check the " + "transaction." +-msgstr "{prog}은/는 패키지 만 다운로드하고 gpg 키를 설치하며 트랜잭션을 확인합니다." ++msgstr "{prog}은/는 꾸러미만 내려받기하고 gpg 키를 설치하며 연결을 확인합니다." + +-#: dnf/cli/cli.py:217 ++#: dnf/cli/cli.py:219 + msgid "Operation aborted." +-msgstr "작업이 중지됨." ++msgstr "작업이 중지됩니다." + +-#: dnf/cli/cli.py:224 ++#: dnf/cli/cli.py:226 + msgid "Downloading Packages:" +-msgstr "패키지 다운로드중:" ++msgstr "꾸러미 내려받기 중:" + +-#: dnf/cli/cli.py:230 ++#: dnf/cli/cli.py:232 + msgid "Error downloading packages:" +-msgstr "패키지 다운로드중 오류 발생:" ++msgstr "꾸러미 내려받기 중 오류 발생:" + +-#: dnf/cli/cli.py:258 ++#: dnf/cli/cli.py:264 + msgid "Transaction failed" +-msgstr "트랜잭션 실패" ++msgstr "연결 실패" + +-#: dnf/cli/cli.py:281 ++#: dnf/cli/cli.py:287 + msgid "" + "Refusing to automatically import keys when running unattended.\n" + "Use \"-y\" to override." +@@ -628,172 +630,156 @@ msgstr "" + "키를 자동으로 가져 오는 것을 거부합니다.\n" + "동작을 무시하려면 \"-y\"를 사용하십시오." + +-#: dnf/cli/cli.py:331 ++#: dnf/cli/cli.py:337 + msgid "Changelogs for {}" + msgstr "{}의 변경 사항" + +-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511 ++#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517 + msgid "Obsoleting Packages" +-msgstr "더 이상 사용되지 않는 패키지" ++msgstr "더 이상 사용되지 않는 꾸러미" + +-#: dnf/cli/cli.py:393 ++#: dnf/cli/cli.py:399 + msgid "No packages marked for distribution synchronization." +-msgstr "배포 동기화가 필요한 패키지가 없습니다." ++msgstr "배포 동기화가 필요한 꾸러미가 없습니다." ++ ++#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395 ++#, python-format ++msgid "No package %s available." ++msgstr "가용한 꾸러미(package) %s가 없습니다." + +-#: dnf/cli/cli.py:428 ++#: dnf/cli/cli.py:434 + msgid "No packages marked for downgrade." +-msgstr "다운 그레이드 대상으로 표시된 패키지가 없습니다." ++msgstr "하향설치 대상으로 표시된 꾸러미가 없습니다." + +-#: dnf/cli/cli.py:479 ++#: dnf/cli/cli.py:485 + msgid "Installed Packages" +-msgstr "설치된 패키지" ++msgstr "설치된 꾸러미" + +-#: dnf/cli/cli.py:487 ++#: dnf/cli/cli.py:493 + msgid "Available Packages" +-msgstr "사용 가능한 패키지" ++msgstr "사용 가능한 꾸러미" + +-#: dnf/cli/cli.py:491 ++#: dnf/cli/cli.py:497 + msgid "Autoremove Packages" +-msgstr "패키지 자동 삭제" ++msgstr "꾸러미 자동 삭제" + + # ctx::sourcefile::Systems Navigation Menu +-#: dnf/cli/cli.py:493 ++#: dnf/cli/cli.py:499 + msgid "Extra Packages" +-msgstr "추가 패키지" ++msgstr "추가 꾸러미" + +-#: dnf/cli/cli.py:497 ++#: dnf/cli/cli.py:503 + msgid "Available Upgrades" +-msgstr "사용 가능한 업그레이드" ++msgstr "사용 가능한 최신화" + +-#: dnf/cli/cli.py:513 ++#: dnf/cli/cli.py:519 + msgid "Recently Added Packages" +-msgstr "최근에 추가 된 패키지" ++msgstr "최근에 추가 된 꾸러미" + +-#: dnf/cli/cli.py:518 ++#: dnf/cli/cli.py:523 + msgid "No matching Packages to list" +-msgstr "목록과 일치하는 패키지가 없습니다" ++msgstr "목록과 일치하는 꾸러미가 없습니다" + +-#: dnf/cli/cli.py:599 ++#: dnf/cli/cli.py:604 + msgid "No Matches found" + msgstr "검색 결과가 없습니다" + +-#: dnf/cli/cli.py:609 +-msgid "No transaction ID given" +-msgstr "지정된 트랜잭션 ID가 없습니다" +- +-#: dnf/cli/cli.py:614 +-msgid "Not found given transaction ID" +-msgstr "주어진 트랜잭션 ID를 찾을 수 없습니다" +- +-#: dnf/cli/cli.py:623 +-msgid "Found more than one transaction ID!" +-msgstr "두 개 이상의 트랜잭션 ID를 찾았습니다!" +- +-#: dnf/cli/cli.py:640 +-#, python-format +-msgid "Transaction history is incomplete, before %u." +-msgstr "%u이전 트랜잭션 내역이 불완전합니다." +- +-#: dnf/cli/cli.py:642 +-#, python-format +-msgid "Transaction history is incomplete, after %u." +-msgstr "%u이후 트랜잭션 내역이 불완전합니다." +- +-#: dnf/cli/cli.py:689 +-msgid "Undoing transaction {}, from {}" +-msgstr "{}에서 {} 트랜잭션 실행을 취소하고 있습니다" +- +-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237 ++#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237 + #, python-format + msgid "Unknown repo: '%s'" + msgstr "알 수 없는 저장소: '%s'" + +-#: dnf/cli/cli.py:783 ++#: dnf/cli/cli.py:685 + #, python-format + msgid "No repository match: %s" + msgstr "일치하는 저장소가 없습니다 : %s" + +-#: dnf/cli/cli.py:817 ++#: dnf/cli/cli.py:719 + msgid "" +-"This command has to be run with superuser privileges (under the root user on" +-" most systems)." +-msgstr "이 명령은 수퍼 유저 권한으로 실행해야합니다 (대부분의 시스템에서 root 사용자로 실행)." ++"This command has to be run with superuser privileges (under the root user on " ++"most systems)." ++msgstr "" ++"이 명령은 슈퍼유저 권한으로 실행해야합니다 (대부분의 시스템에서 root 사용자" ++"로 실행)." + +-#: dnf/cli/cli.py:847 ++#: dnf/cli/cli.py:749 + #, python-format + msgid "No such command: %s. Please use %s --help" + msgstr "명령을 찾을 수 없습니다: %s . %s --help를 사용하십시오" + +-#: dnf/cli/cli.py:850 ++#: dnf/cli/cli.py:752 + #, python-format, python-brace-format + msgid "" + "It could be a {PROG} plugin command, try: \"{prog} install 'dnf-" + "command(%s)'\"" + msgstr "{PROG} 플러그인 명령일 수 있습니다: \"{prog} 'dnf-command(%s)'\"" + +-#: dnf/cli/cli.py:854 ++#: dnf/cli/cli.py:756 + #, python-brace-format + msgid "" + "It could be a {prog} plugin command, but loading of plugins is currently " + "disabled." +-msgstr "{prog} 플러그인 명령일 수 있지만 플러그인 로딩은 현재 비활성화되어 있습니다." ++msgstr "" ++"{prog} 플러그인 명령일 수 있지만 플러그인 로딩은 현재 비활성화되어 있습니다." + +-#: dnf/cli/cli.py:912 ++#: dnf/cli/cli.py:814 + msgid "" + "--destdir or --downloaddir must be used with --downloadonly or download or " + "system-upgrade command." + msgstr "" +-"--destdir 또는 --downloaddir은 --downloadonly 또는 download 또는 system-upgrade 명령과" +-" 함께 사용해야합니다." ++"--destdir 또는 --downloaddir은 --downloadonly 또는 download 또는 system-" ++"upgrade 명령과 함께 사용해야합니다." + +-#: dnf/cli/cli.py:918 ++#: dnf/cli/cli.py:820 + msgid "" + "--enable, --set-enabled and --disable, --set-disabled must be used with " + "config-manager command." + msgstr "" +-"--enable, --set-enabled 및 --disable, --set-disabled는 config-manager 명령과 함께 " +-"사용해야합니다." ++"--enable, --set-enabled 및 --disable, --set-disabled는 config-manager 명령과 " ++"함께 사용해야합니다." + +-#: dnf/cli/cli.py:1000 ++#: dnf/cli/cli.py:902 + msgid "" + "Warning: Enforcing GPG signature check globally as per active RPM security " + "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)" + msgstr "" +-"경고: 활성화된 RPM 보안 정책에 따라 GPG 서명 검사를 전체적으로 시행합니다 (이 메시지를 제거하는 방법은 dnf.conf (5)의" +-" 'gpgcheck' 참조)" ++"경고: 활성화된 RPM 보안 정책에 따라 GPG 서명 검사를 전체적으로 시행합니다 " ++"(이 메시지를 제거하는 방법은 dnf.conf (5)의 'gpgcheck' 참조)" + +-#: dnf/cli/cli.py:1020 ++#: dnf/cli/cli.py:922 + msgid "Config file \"{}\" does not exist" +-msgstr "\"{}\" 설정 파일이 존재하지 않습니다" ++msgstr "설정 파일 \"{}\" 이 존재하지 않습니다" + +-#: dnf/cli/cli.py:1040 ++#: dnf/cli/cli.py:942 + msgid "" + "Unable to detect release version (use '--releasever' to specify release " + "version)" +-msgstr "릴리스 버전을 찾을 수 없습니다 ('--releasever'를 사용하여 릴리스 버전을 지정하십시오)" ++msgstr "" ++"출시 버전을 찾을 수 없습니다 ('--releasever'를 사용하여 출시 버전을 지정하십" ++"시오)" + +-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471 ++#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471 + msgid "argument {}: not allowed with argument {}" + msgstr "인수 {}: 인수 {}과 함께 사용할 수 없습니다" + +-#: dnf/cli/cli.py:1134 ++#: dnf/cli/cli.py:1023 + #, python-format + msgid "Command \"%s\" already defined" + msgstr "\"%s\" 명령이 이미 정의되어 있습니다" + +-#: dnf/cli/cli.py:1154 ++#: dnf/cli/cli.py:1043 + msgid "Excludes in dnf.conf: " + msgstr "dnf.conf에서 제외: " + +-#: dnf/cli/cli.py:1157 ++#: dnf/cli/cli.py:1046 + msgid "Includes in dnf.conf: " + msgstr "dnf.conf에 포함:. " + +-#: dnf/cli/cli.py:1160 ++#: dnf/cli/cli.py:1049 + msgid "Excludes in repo " + msgstr "리포지토리에서 제외 " + +-#: dnf/cli/cli.py:1163 ++#: dnf/cli/cli.py:1052 + msgid "Includes in repo " + msgstr "리포지토리에 포함 " + +@@ -805,13 +791,15 @@ msgstr "문제를 진단하려면 다음을 실행하십시오. '%s'." + #: dnf/cli/commands/__init__.py:40 + #, python-format + msgid "You probably have corrupted RPMDB, running '%s' might fix the issue." +-msgstr "RPMDB가 손상되었을 수 있습니다 '%s'를 실행하여 문제를 해결할 수 있습니다." ++msgstr "" ++"RPMDB가 손상되었을 수 있습니다 '%s'를 실행하여 문제를 해결할 수 있습니다." + + #: dnf/cli/commands/__init__.py:44 + #, python-brace-format + msgid "" + "You have enabled checking of packages via GPG keys. This is a good thing.\n" +-"However, you do not have any GPG public keys installed. You need to download\n" ++"However, you do not have any GPG public keys installed. You need to " ++"download\n" + "the keys for packages you wish to install and install them.\n" + "You can do that by running the command:\n" + " rpm --import public.gpg.key\n" +@@ -823,17 +811,18 @@ msgid "" + "\n" + "For more information contact your distribution or package provider." + msgstr "" +-"GPG 키를 통해 패키지 검사를 활성화했습니다. 이는 적절한 작업 실행입니다. \n" +-"그러나 GPG 공개 키가 설치되어 있지 않습니다. 설치하려는 패키지의 키를 다운로드하여 설치해야합니다.\n" ++"GPG 키를 통해 꾸러미 검사를 활성화했습니다. 이는 적절한 작업 실행입니다.\n" ++"그러나 GPG 공개 키가 설치되어 있지 않습니다.\n" ++"설치하려는 꾸러미의 키를 내려 받기하여 설치해야 합니다.\n" + "다음 명령으로 이 작업을 수행할 수 있습니다:\n" +-" rpm --import public.gpg.key\n" ++"rpm --import public.gpg.key\n" + "\n" + "\n" +-"또는 리포지토리 섹션의 'gpgkey' 옵션을 사용하여 \n" +-"리포지토리에 사용할 키의 URL을 지정할 수 있으며 {prog}이/가 \n" +-"이를 설치합니다 \n" ++"또는 저장소 부분의 'gpgkey' 옵션을 사용하여\n" ++"저장소에 사용할 키의 URL을 지정 할 수 있으며 {prog}가\n" ++"이를 설치합니다\n" + "\n" +-"자세한 내용은 배포 또는 패키지 공급 업체에 문의하십시오." ++"자세한 내용은 배포 또는 꾸러미 공급 업체에 문의하십시오." + + #: dnf/cli/commands/__init__.py:71 + #, python-format +@@ -842,56 +831,56 @@ msgstr "문제 저장소 : %s" + + #: dnf/cli/commands/__init__.py:158 + msgid "display details about a package or group of packages" +-msgstr "패키지 또는 패키지 그룹에 대한 세부 정보 표시" ++msgstr "꾸러미 또는 꾸러미 그룹에 대한 세부 정보 표시" + +-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740 ++#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735 + msgid "show all packages (default)" +-msgstr "모든 패키지 표시 (기본값)" ++msgstr "모든 꾸러미 표시 (기본값)" + +-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743 +-#: dnf/cli/commands/module.py:351 ++#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738 ++#: dnf/cli/commands/module.py:376 + msgid "show only available packages" +-msgstr "사용 가능한 패키지 만 표시" ++msgstr "사용 가능한 꾸러미만 표시" + +-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746 ++#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741 + msgid "show only installed packages" +-msgstr "설치된 패키지 만 표시" ++msgstr "설치된 꾸러미만 보여주기" + +-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749 ++#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744 + msgid "show only extras packages" +-msgstr "엑스트라 패키지 만 표시" ++msgstr "엑스트라 꾸러미만 표시" + + #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183 +-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755 ++#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750 + msgid "show only upgrades packages" +-msgstr "업그레이드 패키지 만 표시" ++msgstr "향상 꾸러미만 표시" + +-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758 ++#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753 + msgid "show only autoremove packages" +-msgstr "자동 삭제 패키지 만 표시" ++msgstr "자동 삭제 꾸러미만 표시" + +-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761 ++#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756 + msgid "show only recently changed packages" +-msgstr "최근에 변경된 패키지 만 표시" ++msgstr "최근에 변경된 꾸러미만 표시" + + #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265 +-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48 ++#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48 + #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44 + #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46 + msgid "PACKAGE" +-msgstr "패키지" ++msgstr "꾸러미(package)" + + #: dnf/cli/commands/__init__.py:193 + msgid "Package name specification" +-msgstr "패키지 이름 사양" ++msgstr "꾸러미 이름 사양" + + #: dnf/cli/commands/__init__.py:221 + msgid "list a package or groups of packages" +-msgstr "패키지 또는 패키지 그룹 나열" ++msgstr "꾸러미 또는 꾸러미 그룹 나열" + + #: dnf/cli/commands/__init__.py:235 + msgid "find what package provides the given value" +-msgstr "지정된 컨텐츠를 제공하는 패키지 찾기" ++msgstr "지정된 내용을 제공하는 꾸러미 찾기" + + #: dnf/cli/commands/__init__.py:239 + msgid "PROVIDE" +@@ -903,80 +892,80 @@ msgstr "검색할 사양 제공" + + #: dnf/cli/commands/__init__.py:249 dnf/cli/commands/search.py:159 + msgid "Searching Packages: " +-msgstr "패키지 검색 : " ++msgstr "꾸러미 검색 : " + + #: dnf/cli/commands/__init__.py:258 + msgid "check for available package upgrades" +-msgstr "사용 가능한 패키지 업그레이드 확인" ++msgstr "사용 가능한 꾸러미 향상 확인" + + #: dnf/cli/commands/__init__.py:264 + msgid "show changelogs before update" +-msgstr "업데이트 전에 changelog 표시" ++msgstr "최신화 전에 변경기록 표시" + +-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414 +-#: dnf/cli/commands/__init__.py:470 ++#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409 ++#: dnf/cli/commands/__init__.py:465 + msgid "No package available." +-msgstr "사용할 수 있는 패키지가 없습니다." ++msgstr "사용할 수 있는 꾸러미가 없습니다." + +-#: dnf/cli/commands/__init__.py:376 ++#: dnf/cli/commands/__init__.py:371 + msgid "No packages marked for install." +-msgstr "설치용으로 표시된 패키지가 없습니다." ++msgstr "설치용으로 표시된 꾸러미 없습니다." + +-#: dnf/cli/commands/__init__.py:412 ++#: dnf/cli/commands/__init__.py:407 + msgid "No package installed." +-msgstr "설치된 패키지가 없습니다." ++msgstr "설치된 꾸러미가 없습니다." + +-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489 ++#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484 + #: dnf/cli/commands/reinstall.py:91 + #, python-format + msgid " (from %s)" + msgstr " (%s에서)" + +-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490 ++#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485 + #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105 + #, python-format + msgid "Installed package %s%s not available." +-msgstr "설치된 패키지 %s%s 사용 불가." ++msgstr "설치된 꾸러미 %s%s 사용 불가." + +-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576 +-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666 ++#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571 ++#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661 + msgid "No package installed from the repository." +-msgstr "저장소에서 설치된 패키지가 없습니다." ++msgstr "저장소에서 설치된 꾸러미가 없습니다." + +-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101 ++#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101 + msgid "No packages marked for reinstall." +-msgstr "다시 설치하도록 표시된 패키지가 없습니다." ++msgstr "다시 설치하도록 표시된 꾸러미가 없습니다." + +-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89 ++#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84 + msgid "No packages marked for upgrade." +-msgstr "업그레이드할 패키지 없음." ++msgstr "최신화 할 꾸러미 없음." + +-#: dnf/cli/commands/__init__.py:726 ++#: dnf/cli/commands/__init__.py:721 + msgid "run commands on top of all packages in given repository" +-msgstr "지정된 저장소의 모든 패키지에 대해 명령을 실행합니다" ++msgstr "지정된 저장소의 모든 꾸러미에 대해 명령을 실행합니다" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "REPOID" + msgstr "REPOID" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "Repository ID" +-msgstr "리포지터리 ID" ++msgstr "저장소 ID" + +-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48 ++#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48 + #: dnf/cli/commands/updateinfo.py:108 + msgid "Package specification" +-msgstr "패키지 사양" ++msgstr "꾸러미 사양" + +-#: dnf/cli/commands/__init__.py:801 ++#: dnf/cli/commands/__init__.py:796 + msgid "display a helpful usage message" + msgstr "유용한 사용법 메시지 표시" + +-#: dnf/cli/commands/__init__.py:805 ++#: dnf/cli/commands/__init__.py:800 + msgid "COMMAND" + msgstr "명령" + +-#: dnf/cli/commands/__init__.py:806 ++#: dnf/cli/commands/__init__.py:801 + #, python-brace-format + msgid "{prog} command to get help for" + msgstr "{prog} 명령 도움말 표시" +@@ -1068,11 +1057,11 @@ msgstr "일치하는 별칭이 없습니다 : %s" + #: dnf/cli/commands/autoremove.py:41 + msgid "" + "remove all unneeded packages that were originally installed as dependencies" +-msgstr "종속성으로 설치된 불필요한 패키지를 모두 제거합니다" ++msgstr "종속성으로 설치된 불필요한 꾸러미를 모두 제거합니다" + + #: dnf/cli/commands/autoremove.py:46 dnf/cli/commands/remove.py:59 + msgid "Package to remove" +-msgstr "제거할 패키지" ++msgstr "제거할 꾸러미" + + #: dnf/cli/commands/check.py:34 + msgid "check for problems in the packagedb" +@@ -1092,7 +1081,7 @@ msgstr "중복된 문제를 표시" + + #: dnf/cli/commands/check.py:49 + msgid "show obsoleted packages" +-msgstr "더 이상 사용되지 않는 패키지 표시" ++msgstr "더 이상 사용되지 않는꾸러미 표시" + + #: dnf/cli/commands/check.py:52 + msgid "show problems with provides" +@@ -1121,7 +1110,7 @@ msgstr "%s 파일 제거 중" + + #: dnf/cli/commands/clean.py:87 + msgid "remove cached data" +-msgstr "캐시된 데이터 제거" ++msgstr "캐쉬된 자료 제거" + + #: dnf/cli/commands/clean.py:93 + msgid "Metadata type to clean" +@@ -1133,7 +1122,7 @@ msgstr "데이터 정리 중: " + + #: dnf/cli/commands/clean.py:111 + msgid "Cache was expired" +-msgstr "캐시가 만료되었습니다" ++msgstr "캐쉬가 만료되었습니다" + + #: dnf/cli/commands/clean.py:115 + #, python-format +@@ -1147,24 +1136,28 @@ msgid "Waiting for process with pid %d to finish." + msgstr "PID %d 프로세스가 종료되기를 기다리고 있습니다." + + #: dnf/cli/commands/deplist.py:32 +-msgid "List package's dependencies and what packages provide them" +-msgstr "패키지의 종속성 및 패키지를 제공하는 소스 목록 나열" ++msgid "" ++"[deprecated, use repoquery --deplist] List package's dependencies and what " ++"packages provide them" ++msgstr "" ++"[더 이상 사용되지 않음, repoquery --deplist 사용] 꾸러미의 종속성과 이를 제공" ++"하는 꾸러미 목록 나열" + + #: dnf/cli/commands/distrosync.py:32 + msgid "synchronize installed packages to the latest available versions" +-msgstr "설치된 패키지를 사용 가능한 최신 버전으로 동기화합니다" ++msgstr "설치된 꾸러미를 사용 가능한 최신 버전으로 동기화합니다" + + #: dnf/cli/commands/distrosync.py:36 + msgid "Package to synchronize" +-msgstr "동기화할 패키지" ++msgstr "동기화할 꾸러미" + + #: dnf/cli/commands/downgrade.py:34 + msgid "Downgrade a package" +-msgstr "패키지 다운그레이드" ++msgstr "꾸러미 하향설치" + + #: dnf/cli/commands/downgrade.py:38 + msgid "Package to downgrade" +-msgstr "다운그레이드할 패키지" ++msgstr "하향설치 할 꾸러미" + + #: dnf/cli/commands/group.py:46 + msgid "display, or use, the groups information" +@@ -1174,207 +1167,227 @@ msgstr "그룹 정보를 표시하거나 사용합니다" + msgid "No group data available for configured repositories." + msgstr "설정된 리포지토리에 사용할 수있는 그룹 데이터가 없습니다." + +-#: dnf/cli/commands/group.py:129 ++#: dnf/cli/commands/group.py:126 + #, python-format + msgid "Warning: Group %s does not exist." + msgstr "경고: %s 그룹이 존재하지 않습니다." + +-#: dnf/cli/commands/group.py:170 ++#: dnf/cli/commands/group.py:167 + msgid "Warning: No groups match:" +-msgstr "경고: 일치하는 그룹이 없습니다" ++msgstr "경고: 일치하는 그룹이 없습니다:" + +-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193 +-#: dnf/cli/output.py:1226 ++#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190 ++#: dnf/cli/output.py:1139 + msgid "" + msgstr "" + +-#: dnf/cli/commands/group.py:199 ++#: dnf/cli/commands/group.py:196 + msgid "Available Environment Groups:" + msgstr "사용 가능한 환경 그룹 :" + +-#: dnf/cli/commands/group.py:201 ++#: dnf/cli/commands/group.py:198 + msgid "Installed Environment Groups:" + msgstr "설치된 환경 그룹 :" + +-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294 ++#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291 + msgid "Installed Groups:" + msgstr "설치된 그룹 :" + +-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301 ++#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298 + msgid "Installed Language Groups:" + msgstr "설치된 언어 그룹 :" + +-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308 ++#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305 + msgid "Available Groups:" + msgstr "사용 가능한 그룹 :" + +-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315 ++#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312 + msgid "Available Language Groups:" + msgstr "사용 가능한 언어 그룹 :" + +-#: dnf/cli/commands/group.py:322 ++#: dnf/cli/commands/group.py:319 + msgid "include optional packages from group" +-msgstr "그룹의 선택 패키지를 포함합니다" ++msgstr "그룹의 선택 꾸러미를 포함합니다" + +-#: dnf/cli/commands/group.py:325 ++#: dnf/cli/commands/group.py:322 + msgid "show also hidden groups" + msgstr "숨겨진 그룹도 표시합니다" + +-#: dnf/cli/commands/group.py:327 ++#: dnf/cli/commands/group.py:324 + msgid "show only installed groups" + msgstr "설치된 그룹 만 표시합니다" + +-#: dnf/cli/commands/group.py:329 ++#: dnf/cli/commands/group.py:326 + msgid "show only available groups" + msgstr "사용 가능한 그룹 만 표시합니다" + +-#: dnf/cli/commands/group.py:331 ++#: dnf/cli/commands/group.py:328 + msgid "show also ID of groups" + msgstr "그룹 ID 표시" + +-#: dnf/cli/commands/group.py:333 ++#: dnf/cli/commands/group.py:330 + msgid "available subcommands: {} (default), {}" + msgstr "사용 가능한 하위 명령: {} (기본값), {}" + +-#: dnf/cli/commands/group.py:337 ++#: dnf/cli/commands/group.py:334 + msgid "argument for group subcommand" + msgstr "그룹 하위 명령의 인수" + +-#: dnf/cli/commands/group.py:346 ++#: dnf/cli/commands/group.py:343 + #, python-format + msgid "Invalid groups sub-command, use: %s." +-msgstr "그룹 하위 명령이 잘못되었습니다. %s을/를 사용합니다." ++msgstr "그룹 하위 명령이 잘못되었습니다. %s를 사용합니다." + +-#: dnf/cli/commands/group.py:403 ++#: dnf/cli/commands/group.py:398 + msgid "Unable to find a mandatory group package." +-msgstr "필수 그룹 패키지를 찾을 수 없습니다." ++msgstr "필수 그룹 꾸러미를 찾을 수 없습니다." + + #: dnf/cli/commands/history.py:48 + msgid "display, or use, the transaction history" +-msgstr "트랜잭션 내역 표시 또는 사용" ++msgstr "연결 내역 표시 또는 사용" + + #: dnf/cli/commands/history.py:66 + msgid "For the store command, file path to store the transaction to" +-msgstr "" ++msgstr "저장 명령을 위해, 트랜젝션을 저장할 파일 경로" + + #: dnf/cli/commands/history.py:68 + msgid "" +-"For the replay command, don't check for installed packages matching those in" +-" transaction" ++"For the replay command, don't check for installed packages matching those in " ++"transaction" + msgstr "" ++"재생명령을 위하여, 연결에 그것들과 일치하는 설치된 꾸러미를 확인하지 마세요" + + #: dnf/cli/commands/history.py:71 + msgid "" + "For the replay command, don't check for extra packages pulled into the " + "transaction" +-msgstr "" ++msgstr "응답 명령을 위하여, 연결에 추가 된 꾸러미를 확인하지 마세요" + + #: dnf/cli/commands/history.py:74 + msgid "" +-"For the replay command, skip packages that are not available or have missing" +-" dependencies" ++"For the replay command, skip packages that are not available or have missing " ++"dependencies" + msgstr "" ++"지연 명령을 위하여, 사용 할 수 없는 또는 찾을 수 없는 의존성을 갖는 목록 건너" ++"띄기" + + #: dnf/cli/commands/history.py:94 + msgid "" + "Found more than one transaction ID.\n" + "'{}' requires one transaction ID or package name." + msgstr "" +-"둘 이상의 트랜잭션 ID를 찾았습니다.\n" +-"'{}'에는 하나의 트랜잭션 ID 또는 패키지 이름이 필요합니다." ++"둘 이상의 연결 ID를 찾았습니다.\n" ++"'{}'에는 하나의 연결 ID 또는 꾸러미 이름이 필요합니다." + + #: dnf/cli/commands/history.py:101 +-#, fuzzy +-#| msgid "No transaction ID given" + msgid "No transaction file name given." +-msgstr "주어진 거래 ID가 없습니다." ++msgstr "제공된 트랜젝션 파일 이름이 없습니다." + + #: dnf/cli/commands/history.py:103 +-#, fuzzy +-#| msgid "Failed to remove transaction file %s" + msgid "More than one argument given as transaction file name." +-msgstr "트랜잭션 파일을 제거하지 못했습니다. %s" ++msgstr "연결 파일 이름으로 주어진 하나 이상의 인수 이상." + +-#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:126 ++#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130 + msgid "No transaction ID or package name given." +-msgstr "트랜잭션 ID 또는 패키지 이름이 없습니다." ++msgstr "연결 ID 또는 꾸러미 이름이 없습니다." + +-#: dnf/cli/commands/history.py:138 ++#: dnf/cli/commands/history.py:142 + #, python-format + msgid "You don't have access to the history DB: %s" + msgstr "기록 DB에 액세스할 수 없습니다: %s" + +-#: dnf/cli/commands/history.py:147 ++#: dnf/cli/commands/history.py:151 + #, python-format + msgid "" +-"Cannot undo transaction %s, doing so would result in an inconsistent package" +-" database." +-msgstr "%s 트랜잭션을 취소할 수 없습니다. 취소하면 패키지 데이터베이스가 일치하지 않게 됩니다." ++"Cannot undo transaction %s, doing so would result in an inconsistent package " ++"database." ++msgstr "" ++"%s 연결을 취소 할 수 없습니다. 취소하면 꾸러미 자료 저장소가 일치하지 않게 됩" ++"니다." + +-#: dnf/cli/commands/history.py:152 ++#: dnf/cli/commands/history.py:156 + #, python-format + msgid "" + "Cannot rollback transaction %s, doing so would result in an inconsistent " + "package database." +-msgstr "%s 트랜잭션을 롤백할 수 없습니다. 이렇게하면 패키지 데이터베이스가 일치하지 않게 됩니다." ++msgstr "" ++"%s 연결을 되돌릴 수 없습니다. 이렇게 하면 꾸러미 데이타베이스가 일치하지 않" ++"게 됩니다." ++ ++#: dnf/cli/commands/history.py:175 ++msgid "No transaction ID given" ++msgstr "지정된 연결 ID가 없습니다" + +-#: dnf/cli/commands/history.py:222 ++#: dnf/cli/commands/history.py:179 ++#, python-brace-format ++msgid "Transaction ID \"{0}\" not found." ++msgstr "Transaction ID \"{0}\" 를 찾을 수 없음." ++ ++#: dnf/cli/commands/history.py:185 ++msgid "Found more than one transaction ID!" ++msgstr "두 개 이상의 연결 ID를 찾았습니다!" ++ ++#: dnf/cli/commands/history.py:203 ++#, python-format ++msgid "Transaction history is incomplete, before %u." ++msgstr "%u이전 연결 내역이 불완전합니다." ++ ++#: dnf/cli/commands/history.py:205 ++#, python-format ++msgid "Transaction history is incomplete, after %u." ++msgstr "%u 이후 연결 내역이 불완전합니다." ++ ++#: dnf/cli/commands/history.py:256 ++msgid "No packages to list" ++msgstr "목록에 꾸러미가 없습니다" ++ ++#: dnf/cli/commands/history.py:279 + msgid "" + "Invalid transaction ID range definition '{}'.\n" + "Use '..'." + msgstr "" +-"잘못된 트랜잭션 ID 범위 정의 '{}'. \n" ++"잘못된 연결 ID 범위 정의 '{}'.\n" + "'..' 사용." + +-#: dnf/cli/commands/history.py:226 ++#: dnf/cli/commands/history.py:283 + msgid "" + "Can't convert '{}' to transaction ID.\n" + "Use '', 'last', 'last-'." + msgstr "" +-"'{}'을 (를) 트랜잭션 ID로 변환할 수 없습니다. \n" ++"'{}'을 (를) 연결 ID로 변환 할 수 없습니다.\n" + "'', 'last', 'last-' 사용." + +-#: dnf/cli/commands/history.py:255 ++#: dnf/cli/commands/history.py:312 + msgid "No transaction which manipulates package '{}' was found." +-msgstr "패키지 '{}'을 (를) 사용하는 트랜잭션이 없습니다." +- +-#: dnf/cli/commands/history.py:305 +-#, python-brace-format +-msgid "Transaction ID \"{id}\" not found." +-msgstr "" ++msgstr "꾸러미 '{}'를 사용하는 연결이 없습니다." + +-#: dnf/cli/commands/history.py:313 ++#: dnf/cli/commands/history.py:357 + msgid "{} exists, overwrite?" +-msgstr "" ++msgstr "{} 존재합니다, 덮어 쓸까요?" + +-#: dnf/cli/commands/history.py:316 ++#: dnf/cli/commands/history.py:360 + msgid "Not overwriting {}, exiting." +-msgstr "" ++msgstr "존재하기 때문에, {} 덮어 쓸 수 없습니다." + +-#: dnf/cli/commands/history.py:323 +-#, fuzzy +-#| msgid "Transaction test succeeded." ++#: dnf/cli/commands/history.py:367 + msgid "Transaction saved to {}." +-msgstr "트랜잭션 테스트가 완료되었습니다." ++msgstr "연결이 {}에 저장되었습니다." + +-#: dnf/cli/commands/history.py:326 +-#, fuzzy +-#| msgid "Errors occurred during transaction." ++#: dnf/cli/commands/history.py:370 + msgid "Error storing transaction: {}" +-msgstr "거래 중에 오류가 발생했습니다." ++msgstr "저장 중 연결 오류: {}" + +-#: dnf/cli/commands/history.py:350 +-msgid "" +-"Warning, the following problems occurred while replaying the transaction:" +-msgstr "" ++#: dnf/cli/commands/history.py:386 ++msgid "Warning, the following problems occurred while running a transaction:" ++msgstr "경고, 연결 동작 중에 다음 문제가 발생하였습니다:" + + #: dnf/cli/commands/install.py:47 + msgid "install a package or packages on your system" +-msgstr "시스템에 패키지를 설치합니다" ++msgstr "시스템에 꾸러미를 설치합니다" + + #: dnf/cli/commands/install.py:53 + msgid "Package to install" +-msgstr "설치할 패키지" ++msgstr "설치할 꾸러미" + + #: dnf/cli/commands/install.py:118 + msgid "Unable to find a match" +@@ -1385,22 +1398,22 @@ msgstr "일치하는 항목을 찾을 수 없습니다" + msgid "Not a valid rpm file path: %s" + msgstr "올바른 rpm 파일 경로가 아닙니다. %s" + +-#: dnf/cli/commands/install.py:167 ++#: dnf/cli/commands/install.py:166 + #, python-brace-format + msgid "There are following alternatives for \"{0}\": {1}" + msgstr "다음은 “{0}\"의 대안입니다. {1}" + + #: dnf/cli/commands/makecache.py:37 + msgid "generate the metadata cache" +-msgstr "메타 데이터 캐시를 생성합니다" ++msgstr "메타 자료 캐쉬를 생성합니다" + + #: dnf/cli/commands/makecache.py:48 + msgid "Making cache files for all metadata files." +-msgstr "모든 메타 데이터 파일의 캐시 파일을 만듭니다." ++msgstr "모든 메타 자료 파일의 캐쉬 파일을 만듭니다." + + #: dnf/cli/commands/mark.py:39 + msgid "mark or unmark installed packages as installed by user." +-msgstr "설치된 패키지를 사용자가 설치한 것으로 표시 또는 표시 해제합니다." ++msgstr "설치된 꾸러미를 사용자가 설치한 것으로 표시 또는 표시 해제합니다." + + #: dnf/cli/commands/mark.py:44 + msgid "" +@@ -1415,7 +1428,7 @@ msgstr "" + #: dnf/cli/commands/mark.py:52 + #, python-format + msgid "%s marked as user installed." +-msgstr "%s은/는 사용자가 설치한 것으로 표시되었습니다" ++msgstr "%s은사용자가 설치한 것으로 표시." + + #: dnf/cli/commands/mark.py:56 + #, python-format +@@ -1425,131 +1438,137 @@ msgstr "%s은/는 사용자가 설치한 것으로 표시되지 않았습니다. + #: dnf/cli/commands/mark.py:60 + #, python-format + msgid "%s marked as group installed." +-msgstr "%s은/는 그룹이 설치한 것으로 표시되었습니다" ++msgstr "%s은 그룹으로 설치된 것으로 표시." + + #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129 +-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279 ++#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282 + msgid "Error:" + msgstr "오류:" + + #: dnf/cli/commands/mark.py:87 + #, python-format + msgid "Package %s is not installed." +-msgstr "%s 패키지가 설치되지 않았습니다." ++msgstr "꾸러미 %s가 설치되지 않았습니다." + +-#: dnf/cli/commands/module.py:51 ++#: dnf/cli/commands/module.py:54 + msgid "" +-"Only module name, stream, architecture or profile is used. Ignoring unneeded" +-" information in argument: '{}'" +-msgstr "모듈 이름, 스트림, 아키텍처 또는 프로파일만 사용됩니다. '{}'인수에서 불필요한 정보는 무시하십시오" ++"Only module name, stream, architecture or profile is used. Ignoring unneeded " ++"information in argument: '{}'" ++msgstr "" ++"모듈 이름, 스트림, 구조 또는 프로파일만 사용됩니다. '{}'인수에서 불필요한 정" ++"보는 무시하십시오" + +-#: dnf/cli/commands/module.py:77 ++#: dnf/cli/commands/module.py:80 + msgid "list all module streams, profiles and states" + msgstr "모든 모듈 스트림, 프로파일 및 상태 나열" + +-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128 ++#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131 + msgid "No matching Modules to list" + msgstr "일치하는 모듈을 나열할 수 없습니다" + +-#: dnf/cli/commands/module.py:111 ++#: dnf/cli/commands/module.py:114 + msgid "print detailed information about a module" + msgstr "모듈 세부 사항을 인쇄" + +-#: dnf/cli/commands/module.py:133 ++#: dnf/cli/commands/module.py:136 + msgid "enable a module stream" + msgstr "모듈 스트림을 활성화합니다" + +-#: dnf/cli/commands/module.py:157 ++#: dnf/cli/commands/module.py:160 + msgid "disable a module with all its streams" + msgstr "모듈의 모든 스트림을 비활성화합니다" + +-#: dnf/cli/commands/module.py:181 ++#: dnf/cli/commands/module.py:184 + msgid "reset a module" + msgstr "모듈 재설정" + +-#: dnf/cli/commands/module.py:202 ++#: dnf/cli/commands/module.py:205 + msgid "install a module profile including its packages" +-msgstr "패키지를 포함한 모듈 프로파일 설치" ++msgstr "꾸러미를 포함한 모듈 프로파일 설치" + +-#: dnf/cli/commands/module.py:223 ++#: dnf/cli/commands/module.py:226 + msgid "update packages associated with an active stream" +-msgstr "활성 스트림과 관련된 패키지 업데이트" ++msgstr "활성 스트림과 관련된 꾸러미 최신화" + +-#: dnf/cli/commands/module.py:240 ++#: dnf/cli/commands/module.py:243 + msgid "remove installed module profiles and their packages" +-msgstr "설치된 모듈 프로파일과 패키지를 제거" ++msgstr "설치된 모듈 프로파일과 꾸러미를 제거" + +-#: dnf/cli/commands/module.py:264 ++#: dnf/cli/commands/module.py:267 + msgid "Package {} belongs to multiple modules, skipping" +-msgstr "{} 패키지는 여러 모듈에 속합니다. 건너 뛰기" ++msgstr "{} 꾸러미는 여러 모듈에 속합니다. 건너 뛰기" ++ ++#: dnf/cli/commands/module.py:280 ++msgid "switch a module to a stream and distrosync rpm packages" ++msgstr "모듈을 스트림과 distrosync rpm 꾸러미로 전환합니다" + +-#: dnf/cli/commands/module.py:277 ++#: dnf/cli/commands/module.py:302 + msgid "list modular packages" +-msgstr "모듈 패키지 목록" ++msgstr "모듈러 꾸러미지 목록" + +-#: dnf/cli/commands/module.py:292 ++#: dnf/cli/commands/module.py:317 + msgid "list packages belonging to a module" +-msgstr "모듈에 속하는 패키지를 나열하십시오" ++msgstr "모듈에 속하는 꾸러미를 나열하십시오" + +-#: dnf/cli/commands/module.py:327 ++#: dnf/cli/commands/module.py:352 + msgid "Interact with Modules." + msgstr "모듈과 상호 작용합니다." + +-#: dnf/cli/commands/module.py:340 ++#: dnf/cli/commands/module.py:365 + msgid "show only enabled modules" + msgstr "활성화된 모듈 만 표시" + +-#: dnf/cli/commands/module.py:343 ++#: dnf/cli/commands/module.py:368 + msgid "show only disabled modules" + msgstr "비활성화된 모듈 만 표시" + +-#: dnf/cli/commands/module.py:346 ++#: dnf/cli/commands/module.py:371 + msgid "show only installed modules or packages" +-msgstr "설치된 모듈 또는 패키지 만 표시" ++msgstr "설치된 모듈 또는 꾸러미만 표시" + +-#: dnf/cli/commands/module.py:349 ++#: dnf/cli/commands/module.py:374 + msgid "show profile content" + msgstr "프로파일 내용 표시" + +-#: dnf/cli/commands/module.py:354 ++#: dnf/cli/commands/module.py:379 + msgid "remove all modular packages" +-msgstr "모든 모듈 패키지 삭제" ++msgstr "모든 모듈 꾸러미 삭제" + +-#: dnf/cli/commands/module.py:364 ++#: dnf/cli/commands/module.py:389 + msgid "Module specification" + msgstr "모듈 사양" + +-#: dnf/cli/commands/module.py:386 ++#: dnf/cli/commands/module.py:411 + msgid "{} {} {}: too few arguments" + msgstr "{} {} {}: 인수가 부족합니다" + + #: dnf/cli/commands/reinstall.py:38 + msgid "reinstall a package" +-msgstr "패키지 다시 설치" ++msgstr "꾸러미 다시 설치" + + #: dnf/cli/commands/reinstall.py:42 + msgid "Package to reinstall" +-msgstr "다시 설치할 패키지" ++msgstr "다시 설치할 꾸러미" + + #: dnf/cli/commands/remove.py:46 + msgid "remove a package or packages from your system" +-msgstr "시스템에서 패키지를 제거합니다" ++msgstr "시스템에서 꾸러미를 제거합니다" + + #: dnf/cli/commands/remove.py:53 + msgid "remove duplicated packages" +-msgstr "중복된 패키지 제거" ++msgstr "중복된 꾸러미 제거" + + #: dnf/cli/commands/remove.py:58 + msgid "remove installonly packages over the limit" +-msgstr "오래된 설치 전용 패키지 제거" ++msgstr "오래된 설치 전용 꾸러미 제거" + + #: dnf/cli/commands/remove.py:95 + msgid "No duplicated packages found for removal." +-msgstr "제거할 중복 패키지가 없습니다." ++msgstr "제거할 중복 꾸러미가 없습니다." + + #: dnf/cli/commands/remove.py:127 + msgid "No old installonly packages found for removal." +-msgstr "제거할 오래된 설치 전용 패키지가 없습니다." ++msgstr "제거할 오래된 설치 전용 꾸러미가 없습니다." + + #: dnf/cli/commands/repolist.py:38 dnf/cli/commands/updateinfo.py:47 + #: dnf/cli/commands/updateinfo.py:318 dnf/cli/commands/updateinfo.py:364 +@@ -1593,7 +1612,7 @@ msgstr "리포지토리 사양" + + #: dnf/cli/commands/repolist.py:125 + msgid "No repositories available" +-msgstr "사용 가능한 리포지토리가 없습니다" ++msgstr "사용 가능한 저장소가 없습니다" + + #: dnf/cli/commands/repolist.py:143 dnf/cli/commands/repolist.py:144 + msgid "enabled" +@@ -1605,87 +1624,87 @@ msgstr "사용 안함" + + #: dnf/cli/commands/repolist.py:162 + msgid "Repo-id : " +-msgstr "Repo-id : " ++msgstr "Repo-id : " + + #: dnf/cli/commands/repolist.py:163 + msgid "Repo-name : " +-msgstr "Repo-name : " ++msgstr "Repo-name : " + + #: dnf/cli/commands/repolist.py:166 + msgid "Repo-status : " +-msgstr "Repo-status : " ++msgstr "Repo-status : " + + #: dnf/cli/commands/repolist.py:169 + msgid "Repo-revision : " +-msgstr "Repo-revision : " ++msgstr "Repo-revision : " + + #: dnf/cli/commands/repolist.py:173 + msgid "Repo-tags : " +-msgstr "Repo-tags : " ++msgstr "Repo-tags : " + + #: dnf/cli/commands/repolist.py:180 + msgid "Repo-distro-tags : " +-msgstr "Repo-distro-tags : " ++msgstr "Repo-distro-tags : " + + #: dnf/cli/commands/repolist.py:192 + msgid "Repo-updated : " +-msgstr "Repo-updated : " ++msgstr "Repo-updated : " + + #: dnf/cli/commands/repolist.py:194 + msgid "Repo-pkgs : " +-msgstr "Repo-pkgs : " ++msgstr "Repo-pkgs : " + + #: dnf/cli/commands/repolist.py:195 + msgid "Repo-available-pkgs: " +-msgstr "Repo-available-pkgs: " ++msgstr "저장소-이용 할 수 있는-꾸러미: " + + #: dnf/cli/commands/repolist.py:196 + msgid "Repo-size : " +-msgstr "Repo-size : " ++msgstr "Repo-size : " + + #: dnf/cli/commands/repolist.py:199 + msgid "Repo-metalink : " +-msgstr "Repo-metalink : " ++msgstr "Repo-metalink : " + + #: dnf/cli/commands/repolist.py:204 + msgid " Updated : " +-msgstr " Updated : " ++msgstr " Updated : " + + #: dnf/cli/commands/repolist.py:206 + msgid "Repo-mirrors : " +-msgstr "Repo-mirrors : " ++msgstr "Repo-mirrors : " + + #: dnf/cli/commands/repolist.py:210 dnf/cli/commands/repolist.py:216 + msgid "Repo-baseurl : " +-msgstr "Repo-baseurl : " ++msgstr "Repo-baseurl : " + + #: dnf/cli/commands/repolist.py:219 + msgid "Repo-expire : " +-msgstr "Repo-expire : " ++msgstr "Repo-expire : " + + #. TRANSLATORS: Packages that are excluded - their names like (dnf systemd) + #: dnf/cli/commands/repolist.py:223 + msgid "Repo-exclude : " +-msgstr "Repo-exclude : " ++msgstr "Repo-exclude : " + + #: dnf/cli/commands/repolist.py:227 + msgid "Repo-include : " +-msgstr "Repo-include : " ++msgstr "Repo-include : " + + #. TRANSLATORS: Number of packages that where excluded (5) + #: dnf/cli/commands/repolist.py:232 + msgid "Repo-excluded : " +-msgstr "Repo-excluded : " ++msgstr "Repo-excluded : " + + #: dnf/cli/commands/repolist.py:236 + msgid "Repo-filename : " +-msgstr "Repo-filename : " ++msgstr "Repo-filename : " + + #. Work out the first (id) and last (enabled/disabled/count), + #. then chop the middle (name)... + #: dnf/cli/commands/repolist.py:246 dnf/cli/commands/repolist.py:273 + msgid "repo id" +-msgstr "리포지터리 ID" ++msgstr "레포지터리 ID" + + #: dnf/cli/commands/repolist.py:259 dnf/cli/commands/repolist.py:260 + #: dnf/cli/commands/repolist.py:281 +@@ -1694,25 +1713,26 @@ msgstr "상태" + + #: dnf/cli/commands/repolist.py:275 dnf/cli/commands/repolist.py:277 + msgid "repo name" +-msgstr "리포지터리 이름" ++msgstr "레포지터리 이름" + + #: dnf/cli/commands/repolist.py:291 + msgid "Total packages: {}" +-msgstr "총 패키지: {}" ++msgstr "총 꾸러미: {}" + + #: dnf/cli/commands/repoquery.py:107 + msgid "search for packages matching keyword" +-msgstr "키워드와 일치하는 패키지 검색" ++msgstr "키워드와 일치하는 꾸러미 검색" + + #: dnf/cli/commands/repoquery.py:121 + msgid "" + "Query all packages (shorthand for repoquery '*' or repoquery without " + "argument)" +-msgstr "모든 패키지를 쿼리하십시오 (repoquery '*'의 축약형 또는 인수없는 repoquery)" ++msgstr "" ++"모든 꾸러미를 쿼리하십시오 (repoquery '*'의 축약형 또는 인수없는 repoquery)" + + #: dnf/cli/commands/repoquery.py:124 + msgid "Query all versions of packages (default)" +-msgstr "패키지의 모든 버전 쿼리 (기본값)" ++msgstr "꾸러미의 모든 버전 질문 (기본값)" + + #: dnf/cli/commands/repoquery.py:127 + msgid "show only results from this ARCH" +@@ -1730,7 +1750,9 @@ msgstr "REQ와 충돌하는 결과 만 표시" + msgid "" + "shows results that requires, suggests, supplements, enhances,or recommends " + "package provides and files REQ" +-msgstr "REQ를 제공하고 파일 패키지를 요구, 제안, 보완, 개선, 권장하는 결과를 표시합니다." ++msgstr "" ++"꾸러미 제공과 파일 REQ를 요구, 제안, 보완, 향상 또는 권장하는 결과를 표시합니" ++"다" + + #: dnf/cli/commands/repoquery.py:139 + msgid "show only results that obsolete REQ" +@@ -1742,7 +1764,7 @@ msgstr "REQ를 제공하는 결과 만 표시" + + #: dnf/cli/commands/repoquery.py:145 + msgid "shows results that requires package provides and files REQ" +-msgstr "REQ를 제공 및 파일 패키지가 필요한 결과를 표시" ++msgstr "REQ를 제공 및 파일 꾸러미가 필요한 결과를 표시" + + #: dnf/cli/commands/repoquery.py:148 + msgid "show only results that recommend REQ" +@@ -1772,19 +1794,21 @@ msgstr "지정된대로 종속성을 확인. --alldeps와 반대됩니다" + msgid "" + "used with --whatrequires, and --requires --resolve, query packages " + "recursively." +-msgstr "--whatrequires, --requires --resolve와 함계 사용하여 패키지를 재귀적으로 쿼리합니다." ++msgstr "" ++"--whatrequires, --requires --resolve와 함계 사용하여 꾸러미를 재귀적으로 쿼리" ++"합니다." + + #: dnf/cli/commands/repoquery.py:166 + msgid "show a list of all dependencies and what packages provide them" +-msgstr "모든 종속성 목록과 이를 제공하는 패키지를 표시합니다" ++msgstr "모든 종속성 목록과 이를 제공하는꾸러미지를 표시합니다" + + #: dnf/cli/commands/repoquery.py:168 + msgid "resolve capabilities to originating package(s)" +-msgstr "원래 패키지의 기능을 제공합니다" ++msgstr "원래 꾸러미의 기능을 제공합니다" + + #: dnf/cli/commands/repoquery.py:170 + msgid "show recursive tree for package(s)" +-msgstr "패키지의 재귀 트리를 표시합니다" ++msgstr "꾸러미의 재귀 트리를 표시합니다" + + #: dnf/cli/commands/repoquery.py:172 + msgid "operate on corresponding source RPM" +@@ -1794,34 +1818,38 @@ msgstr "해당 소스 RPM에서 작동합니다" + msgid "" + "show N latest packages for a given name.arch (or latest but N if N is " + "negative)" +-msgstr "지정된 name.arch (또는 N이 음수인 경우 가장 오래된 패키지)에 대한 N 개의 최신 패키지를 표시합니다" ++msgstr "" ++"지정된 name.arch (또는 N이 음수인 경우 가장 오래된 꾸러미)에 대한 N 개의 최" ++"신 꾸러미를 표시합니다" + + #: dnf/cli/commands/repoquery.py:177 + msgid "list also packages of inactive module streams" +-msgstr "비활성 모듈 스트림의 패키지 목록" ++msgstr "비활성 모듈 스트림의 꾸러미 목록" + + #: dnf/cli/commands/repoquery.py:182 + msgid "show detailed information about the package" +-msgstr "패키지에 대한 자세한 정보 표시" ++msgstr "꾸러미에 대한 자세한 정보 표시" + + #: dnf/cli/commands/repoquery.py:185 + msgid "show list of files in the package" +-msgstr "패키지에 있는 파일 목록 표시" ++msgstr "꾸러미에 있는 파일 목록 표시" + + #: dnf/cli/commands/repoquery.py:188 + msgid "show package source RPM name" +-msgstr "패키지 소스 RPM 이름 표시" ++msgstr "꾸러미 소스 RPM 이름 표시" + + #: dnf/cli/commands/repoquery.py:191 + msgid "show changelogs of the package" +-msgstr "패키지의 변경 로그 표시" ++msgstr "꾸러미의 변경 로그 표시" + + #: dnf/cli/commands/repoquery.py:194 + #, python-format, python-brace-format + msgid "" +-"display format for listing packages: \"%%{name} %%{version} ...\", use " +-"--querytags to view full tag list" ++"display format for listing packages: \"%%{name} %%{version} ...\", use --" ++"querytags to view full tag list" + msgstr "" ++"꾸러미 목록 표시형식 : \"%%{name} %%{version} ...\" 모든 태그 목록을 보여주" ++"기 위해 --querytags 사용합니다" + + #: dnf/cli/commands/repoquery.py:198 + msgid "show available tags to use with --queryformat" +@@ -1831,65 +1859,73 @@ msgstr "--queryformat과 함께 사용할 수 있는 태그를 표시합니다" + msgid "" + "use name-epoch:version-release.architecture format for displaying found " + "packages (default)" +-msgstr "name-epoch:version-release.architecture 형식을 사용하여 검색된 패키지를 표시합니다 (기본값)" ++msgstr "" ++"name-epoch:version-release.architecture 형식을 사용하여 검색된 꾸러미를 표시" ++"합니다 (기본값)" + + #: dnf/cli/commands/repoquery.py:205 + msgid "" + "use name-version-release format for displaying found packages (rpm query " + "default)" +-msgstr "name-version-release 형식을 사용하여 검색된 패키지를 표시합니다 (rpm 쿼리 기본값)" ++msgstr "" ++"name-version-release 형식을 사용하여 검색된 꾸러미를 표시합니다 (rpm 쿼리 기" ++"본값)" + + #: dnf/cli/commands/repoquery.py:211 + msgid "" + "use epoch:name-version-release.architecture format for displaying found " + "packages" +-msgstr "epoch : name-version-release.architecture 형식을 사용하여 검색된 패키지를 표시합니다" ++msgstr "" ++"epoch : name-version-release.architecture 형식을 사용하여 검색된 꾸러미를 표" ++"시합니다" + + #: dnf/cli/commands/repoquery.py:214 + msgid "Display in which comps groups are presented selected packages" +-msgstr "선택한 패키지에 제시된 comps 그룹 표시" ++msgstr "선택한 꾸러미에 제시된 comps 그룹 표시" + + #: dnf/cli/commands/repoquery.py:218 + msgid "limit the query to installed duplicate packages" +-msgstr "설치된 중복 패키지로 쿼리 제한" ++msgstr "설치된 중복 꾸러미로 쿼리 제한" + + #: dnf/cli/commands/repoquery.py:225 + msgid "limit the query to installed installonly packages" +-msgstr "설치된 설치 전용 패키지로 쿼리 제한" ++msgstr "설치된 설치 전용 꾸러미로 쿼리 제한" + + #: dnf/cli/commands/repoquery.py:228 + msgid "limit the query to installed packages with unsatisfied dependencies" +-msgstr "설치된 충족되지 않은 종속성이있는 패키지로 쿼리 제한" ++msgstr "설치된 충족되지 않은 종속성이있는 꾸러미로 쿼리 제한" + + #: dnf/cli/commands/repoquery.py:230 + msgid "show a location from where packages can be downloaded" +-msgstr "패키지를 다운로드할 위치 표시" ++msgstr "꾸러미를 내려받기 할 위치 표시" + + #: dnf/cli/commands/repoquery.py:233 + msgid "Display capabilities that the package conflicts with." +-msgstr "패키지와 충돌하는 기능을 표시합니다." ++msgstr "꾸러미와 충돌하는 기능을 표시합니다." + + #: dnf/cli/commands/repoquery.py:234 + msgid "" + "Display capabilities that the package can depend on, enhance, recommend, " + "suggest, and supplement." +-msgstr "패키지가 종속 기능 강화, 개선, 권장, 제안 및 보완할 수 있는 기능을 표시합니다." ++msgstr "" ++"꾸러미가 종속 기능 강화, 개선, 권장, 제안 및 보완할 수 있는 기능을 표시합니" ++"다." + + #: dnf/cli/commands/repoquery.py:236 + msgid "Display capabilities that the package can enhance." +-msgstr "패키지를 확장할 수 있는 기능을 표시합니다." ++msgstr "꾸러미를 확장 할 수 있는 기능을 표시합니다." + + #: dnf/cli/commands/repoquery.py:237 + msgid "Display capabilities provided by the package." +-msgstr "패키지가 제공하는 기능을 표시합니다." ++msgstr "꾸러미가 제공하는 기능을 표시합니다." + + #: dnf/cli/commands/repoquery.py:238 + msgid "Display capabilities that the package recommends." +-msgstr "패키지에서 권장하는 기능을 표시합니다." ++msgstr "꾸러미에서 권장하는 기능을 표시합니다." + + #: dnf/cli/commands/repoquery.py:239 + msgid "Display capabilities that the package depends on." +-msgstr "패키지가 의존하는 기능을 표시합니다." ++msgstr "꾸러미가 의존하는 기능을 표시합니다." + + #: dnf/cli/commands/repoquery.py:240 + #, python-format +@@ -1898,49 +1934,50 @@ msgid "" + "running %%pre and %%post scriptlets. If the package is installed display " + "capabilities that is depends for %%pre, %%post, %%preun and %%postun." + msgstr "" +-"패키지가 설치되어 있지 않은 경우 %%pre 과 %%post 스크립트를 실행할 수 있는 기능이 표시됩니다. 패키지가 설치되어있는 경우 " +-"%%pre, %%post , %%preun, %%postun에 종속된 기능이 표시됩니다." ++"꾸러미가 설치되어 있지 않은 경우 %%pre 과 %%post 스크립트를 실행할 수 있는 기" ++"능이 표시됩니다. 꾸러미가 설치 되어 있는 경우 %%pre, %%post , %%preun, " ++"%%postun에 종속된 기능이 표시됩니다." + + #: dnf/cli/commands/repoquery.py:243 + msgid "Display capabilities that the package suggests." +-msgstr "패키지에서 제안하는 기능을 표시합니다." ++msgstr "꾸러미에서 제안하는 기능을 표시합니다." + + #: dnf/cli/commands/repoquery.py:244 + msgid "Display capabilities that the package can supplement." +-msgstr "패키지가 보완할 수있는 기능을 표시합니다." ++msgstr "꾸러미가 보완할 수있는 기능을 표시합니다." + + #: dnf/cli/commands/repoquery.py:250 + msgid "Display only available packages." +-msgstr "사용 가능한 패키지 만 표시합니다." ++msgstr "사용 가능한 꾸러미만 표시합니다." + + #: dnf/cli/commands/repoquery.py:253 + msgid "Display only installed packages." +-msgstr "설치된 패키지 만 표시합니다." ++msgstr "설치된 꾸러미만 표시합니다." + + #: dnf/cli/commands/repoquery.py:254 + msgid "" + "Display only packages that are not present in any of available repositories." +-msgstr "사용 가능한 리포지토리에없는 패키지 만 표시합니다." ++msgstr "사용 가능한 저장소에 없는 꾸러미만 표시합니다." + + #: dnf/cli/commands/repoquery.py:255 + msgid "" + "Display only packages that provide an upgrade for some already installed " + "package." +-msgstr "이미 설치된 일부 패키지에 대한 업그레이드를 제공하는 패키지 만 표시합니다." ++msgstr "이미 설치된 일부 꾸러미에 대한 향상를 제공하는 꾸러미만 표시합니다." + + #: dnf/cli/commands/repoquery.py:256 + #, python-brace-format + msgid "" + "Display only packages that can be removed by \"{prog} autoremove\" command." +-msgstr "\"{prog} autoremove\" 명령으로 제거할 수 있는 패키지 만 표시합니다." ++msgstr "\"{prog} autoremove\" 명령으로 제거할 수 있는 꾸러미만 표시합니다." + + #: dnf/cli/commands/repoquery.py:258 + msgid "Display only packages that were installed by user." +-msgstr "사용자가 설치한 패키지 만 표시합니다." ++msgstr "사용자가 설치한 꾸러미만 표시합니다." + + #: dnf/cli/commands/repoquery.py:270 + msgid "Display only recently edited packages" +-msgstr "최근에 수정한 패키지 만 표시합니다" ++msgstr "최근에 수정한 꾸러미만 표시합니다" + + #: dnf/cli/commands/repoquery.py:273 + msgid "the key to search for" +@@ -1948,22 +1985,23 @@ msgstr "검색에 사용되는 키워드" + + #: dnf/cli/commands/repoquery.py:295 + msgid "" +-"Option '--resolve' has to be used together with one of the '--conflicts', '" +-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--" ++"Option '--resolve' has to be used together with one of the '--conflicts', '--" ++"depends', '--enhances', '--provides', '--recommends', '--requires', '--" + "requires-pre', '--suggests' or '--supplements' options" + msgstr "" +-"옵션 '--resolve'는 '--conflicts', '--depends', '--enhances', '--provides', '--" +-"recommends', '--requires'중 하나와 함께 사용해야합니다. , '--requires-pre', '--" +-"suggests'또는 '--supplements'옵션들" ++"옵션 '--resolve'는 '--conflicts', '--depends', '--enhances', '--provides', " ++"'--recommends', '--requires'중 하나와 함께 사용해야합니다. , '--requires-" ++"pre', '--suggests'또는 '--supplements'옵션들" + + #: dnf/cli/commands/repoquery.py:305 + msgid "" + "Option '--recursive' has to be used with '--whatrequires ' (optionally " +-"with '--alldeps', but not with '--exactdeps'), or with '--requires " +-"--resolve'" ++"with '--alldeps', but not with '--exactdeps'), or with '--requires --" ++"resolve'" + msgstr "" +-"옵션 '--reative'를 '--whatrequires ' (선택 옵션으로 '--exactdeps' 대신 '--" +-"alldeps'와 함께 사용), 또는 '--requires --resolve'와 함께 사용해야 합니다." ++"옵션 '--reative'를 '--whatrequires ' (선택 옵션으로 '--exactdeps' 대신 " ++"'--alldeps'와 함께 사용), 또는 '--requires --resolve'와 함께 사용해야 " ++"합니다" + + #: dnf/cli/commands/repoquery.py:312 + msgid "argument {} requires --whatrequires or --whatdepends option" +@@ -1971,30 +2009,34 @@ msgstr "인수 {}에는 --whatrequires 또는 --whatdepends 옵션이 필요합 + + #: dnf/cli/commands/repoquery.py:344 + msgid "Package {} contains no files" +-msgstr "패키지 {}에 파일이 없습니다" ++msgstr "꾸러미 {}에 파일이 없습니다" + + #: dnf/cli/commands/repoquery.py:561 + #, python-brace-format + msgid "" + "No valid switch specified\n" +-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--" ++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--" ++"tree]\n" + "\n" + "description:\n" + " For the given packages print a tree of thepackages." + msgstr "" + "유효한 매개 변수를 지정하지 않았습니다.\n" +-"사용법: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"사용법: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--" ++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--" ++"tree]\n" + "\n" + "설명:\n" +-" 지정된 패키지의 경우 패키지 트리를 출력하십시오." ++" 지정된 꾸러미의 경우 꾸러미 트리를 출력하십시오." + + #: dnf/cli/commands/search.py:46 + msgid "search package details for the given string" +-msgstr "지정된 문자열의 패키지 정보를 검색합니다" ++msgstr "지정된 문자열의 꾸러미 정보를 검색합니다" + + #: dnf/cli/commands/search.py:51 + msgid "search also package description and URL" +-msgstr "패키지 설명 및 URL 검색" ++msgstr "꾸러미 설명 및 URL 검색" + + #: dnf/cli/commands/search.py:52 + msgid "KEYWORD" +@@ -2004,27 +2046,26 @@ msgstr "KEYWORD" + msgid "Keyword to search for" + msgstr "검색 키워드" + +-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506 ++#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460 + msgctxt "long" + msgid "Name" + msgstr "이름" + +-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559 ++#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513 + msgctxt "long" + msgid "Summary" + msgstr "요약" + +-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569 ++#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523 + msgctxt "long" + msgid "Description" + msgstr "설명" + +-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562 ++#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516 + msgid "URL" + msgstr "URL" + +-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary +-#. & URL) ++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL) + #: dnf/cli/commands/search.py:76 + msgid " & " + msgstr " & " +@@ -2034,18 +2075,18 @@ msgstr " & " + #: dnf/cli/commands/search.py:80 + #, python-format + msgid "%s Exactly Matched: %%s" +-msgstr "%s 정확히 일치하는 항목: %%s" ++msgstr "%s과 정확히 일치하는 항목: %%s" + + #. TRANSLATORS: %s - translated package attributes, + #. %%s - found keys (in listed attributes) + #: dnf/cli/commands/search.py:84 + #, python-format + msgid "%s Matched: %%s" +-msgstr "%s 일치하는 항목: %%s" ++msgstr "%s과 일치하는 항목: %%s" + + #: dnf/cli/commands/search.py:134 + msgid "No matches found." +-msgstr "일치하는 항목이 없습니다." ++msgstr "일치 항목이 없습니다." + + #: dnf/cli/commands/shell.py:47 + #, python-brace-format +@@ -2110,7 +2151,7 @@ msgid "" + " resolve the transaction set" + msgstr "" + "{}\n" +-" 트랜잭션 집합을 분석합니다" ++" 연결 집합을 분석합니다" + + #: dnf/cli/commands/shell.py:195 + msgid "" +@@ -2120,9 +2161,9 @@ msgid "" + " run: run the transaction" + msgstr "" + "{} arg\n" +-" list : 트랜잭션 내용을 나열합니다\n" +-" reset : 트랜잭션을 재설정합니다 (zero-out)\n" +-" run: 트랜잭션을 실행합니다" ++" list : 연결 내용을 나열합니다\n" ++" reset : 연결을 재설정합니다 (zero-out)\n" ++" run: 연결을 실행합니다" + + #: dnf/cli/commands/shell.py:201 + msgid "" +@@ -2130,7 +2171,7 @@ msgid "" + " run the transaction" + msgstr "" + "{}\n" +-" 트랜잭션을 실행합니다." ++"연결을 실행합니다" + + #: dnf/cli/commands/shell.py:205 + msgid "" +@@ -2154,24 +2195,24 @@ msgid "" + msgstr "" + "쉘 관련 인수:\n" + "\n" +-"config 설정 옵션 설정\n" +-"help 도움말 인쇄\n" +-"repository (or repo) 리포지토리 활성화,비활성화 또는 나열\n" +-"resolvedep 트랜잭션 세트 분석\n" +-"transaction (or ts) 트랜잭션 세트 목록,재설정 또는 실행\n" +-"run 트랜잭션 세트 분석 및 실행\n" +-"exit (or quit) 쉘 종료" ++"config 설정 옵션 설정\n" ++"help 도움말 인쇄\n" ++"repository (or repo) 저장소 활성화,비활성화 또는 나열\n" ++"resolvedep 연결 구성 분석\n" ++"transaction (or ts) 연결 구성 목록,재설정 또는 실행\n" ++"run 연결 구성 분석 및 실행\n" ++"exit (or quit) 쉘 종료" + +-#: dnf/cli/commands/shell.py:259 ++#: dnf/cli/commands/shell.py:262 + #, python-format + msgid "Error: Cannot open %s for reading" + msgstr "오류: 읽기 전용 %s를 열 수 없습니다" + +-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187 ++#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187 + msgid "Complete!" + msgstr "완료되었습니다!" + +-#: dnf/cli/commands/shell.py:291 ++#: dnf/cli/commands/shell.py:294 + msgid "Leaving Shell" + msgstr "쉘 나가기" + +@@ -2202,45 +2243,45 @@ msgstr "보안" + + #: dnf/cli/commands/updateinfo.py:48 + msgid "newpackage" +-msgstr "새 패키지" ++msgstr "새 꾸러미" + + #: dnf/cli/commands/updateinfo.py:50 + msgid "Critical/Sec." +-msgstr "심각/보안 취약점" ++msgstr "심각/보안." + + #: dnf/cli/commands/updateinfo.py:51 + msgid "Important/Sec." +-msgstr "중요/보안 취약점" ++msgstr "중요/보안." + + #: dnf/cli/commands/updateinfo.py:52 + msgid "Moderate/Sec." +-msgstr "보통/보안 취약점" ++msgstr "보통/보안." + + #: dnf/cli/commands/updateinfo.py:53 + msgid "Low/Sec." +-msgstr "낮음/보안 취약점" ++msgstr "낮음/보안." + + #: dnf/cli/commands/updateinfo.py:63 + msgid "display advisories about packages" +-msgstr "패키지관련 권고 표시" ++msgstr "꾸러미관련 권고 표시" + + #: dnf/cli/commands/updateinfo.py:77 + msgid "advisories about newer versions of installed packages (default)" +-msgstr "설치된 최신 버전의 패키지에 대한 권고 (기본값)" ++msgstr "설치된 최신 버전의 꾸러미에 대한 권고 (기본값)" + + #: dnf/cli/commands/updateinfo.py:80 + msgid "advisories about equal and older versions of installed packages" +-msgstr "설치된 패키지의 동일한 버전 및 이전 버전에 대한 권고" ++msgstr "설치된 꾸러미의 동일한 버전 및 이전 버전에 대한 권고" + + #: dnf/cli/commands/updateinfo.py:83 + msgid "" + "advisories about newer versions of those installed packages for which a " + "newer version is available" +-msgstr "최신 버전을 사용할 수있는 설치된 패키지의 최신 버전에 대한 권고" ++msgstr "최신 버전를 사용할 수 있는 설치된 꾸러미의 최신 버전에 대한 권고" + + #: dnf/cli/commands/updateinfo.py:87 + msgid "advisories about any versions of installed packages" +-msgstr "설치된 패키지 모든 버전에 대한 권고" ++msgstr "설치된 꾸러미 모든 버전에 대한 권고" + + #: dnf/cli/commands/updateinfo.py:92 + msgid "show summary of advisories (default)" +@@ -2264,11 +2305,11 @@ msgstr "bugzilla 참조가 있는 권고 만 표시" + + #: dnf/cli/commands/updateinfo.py:168 + msgid "installed" +-msgstr "설치됨" ++msgstr "설치되었습니다" + + #: dnf/cli/commands/updateinfo.py:171 + msgid "updates" +-msgstr "업데이트" ++msgstr "최신화" + + #: dnf/cli/commands/updateinfo.py:174 + msgid "all" +@@ -2280,11 +2321,11 @@ msgstr "사용 가능" + + #: dnf/cli/commands/updateinfo.py:278 + msgid "Updates Information Summary: " +-msgstr "업데이트 정보 요약 " ++msgstr "최신화 정보 요약: " + + #: dnf/cli/commands/updateinfo.py:281 + msgid "New Package notice(s)" +-msgstr "새 패키지 알림" ++msgstr "새 꾸러미 알림" + + #: dnf/cli/commands/updateinfo.py:282 + msgid "Security notice(s)" +@@ -2324,11 +2365,11 @@ msgstr "기타 다른 공지" + + #: dnf/cli/commands/updateinfo.py:316 + msgid "Unknown/Sec." +-msgstr "알 수 없음 /보안 취약점" ++msgstr "알 수 없음/보안." + + #: dnf/cli/commands/updateinfo.py:357 + msgid "Bugs" +-msgstr "버그" ++msgstr "결점" + + #: dnf/cli/commands/updateinfo.py:357 + msgid "Type" +@@ -2336,11 +2377,11 @@ msgstr "유형" + + #: dnf/cli/commands/updateinfo.py:357 + msgid "Update ID" +-msgstr "ID 업데이트" ++msgstr "ID 최신화" + + #: dnf/cli/commands/updateinfo.py:357 + msgid "Updated" +-msgstr "업데이트됨" ++msgstr "최신화됨" + + #: dnf/cli/commands/updateinfo.py:358 + msgid "CVEs" +@@ -2364,10 +2405,10 @@ msgstr "파일" + + # translation auto-copied from project subscription-manager, version 1.11.X, + # document keys +-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499 +-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 ++#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1656 dnf/util.py:617 + msgid "Installed" +-msgstr "설치됨" ++msgstr "설치되었습니다" + + #: dnf/cli/commands/updateinfo.py:385 + msgid "false" +@@ -2379,17 +2420,19 @@ msgstr "true" + + #: dnf/cli/commands/upgrade.py:40 + msgid "upgrade a package or packages on your system" +-msgstr "시스템에서 패키지를 업그레이드하십시오." ++msgstr "시스템에서 꾸러미를 최신화하세요" + + #: dnf/cli/commands/upgrade.py:44 + msgid "Package to upgrade" +-msgstr "업그레이드할 패키지" ++msgstr "최신화 할 꾸러미" + + #: dnf/cli/commands/upgrademinimal.py:31 + msgid "" + "upgrade, but only 'newest' package match which fixes a problem that affects " + "your system" +-msgstr "업그레이드하지만 ‘최신' 패키지에만 시스템에 영향을 줄 수 있는 수정된 문제가 있습니다" ++msgstr "" ++"최신화 하지만 ‘최신' 꾸러미에만 시스템에 영향을 줄 수 있는 수정된 문제가 있습" ++"니다" + + #: dnf/cli/main.py:88 + msgid "Terminated." +@@ -2401,23 +2444,23 @@ msgstr "현재 디렉토리에서 읽기 / 실행 액세스가 없습니다. / + + #: dnf/cli/main.py:135 + msgid "try to add '{}' to command line to replace conflicting packages" +-msgstr "충돌하는 패키지를 바꾸려면 명령 줄에 '{}'을 (를) 추가하십시오." ++msgstr "충돌하는 꾸러미를 교체하려면 명령줄에 '{}'을 추가하세요" + + #: dnf/cli/main.py:139 + msgid "try to add '{}' to skip uninstallable packages" +-msgstr "설치할 수 없는 패키지를 건너 뛰려면 '{}'을 (를) 추가하십시오." ++msgstr "설치 할 수 없는 꾸러미를 건너 뛰려면 '{}'을 (를) 추가하십시오" + + #: dnf/cli/main.py:142 + msgid " or '{}' to skip uninstallable packages" +-msgstr " 또는 '{}'은/는 설치할 수 없는 패키지를 건너 뜁니다" ++msgstr " 또는 '{}'는 설치 할 수 없는 꾸러미를 건너 뜁니다" + + #: dnf/cli/main.py:147 + msgid "try to add '{}' to use not only best candidate packages" +-msgstr "최적 후보의 패키지만을 사용하려면 '{}'을 (를) 추가하십시오." ++msgstr "최적 후보의 꾸러미만을 사용하려면 '{}'를 추가하세요" + + #: dnf/cli/main.py:150 + msgid " or '{}' to use not only best candidate packages" +-msgstr " 또는 '{}'은/는 최적 후보의 패키지만 사용합니다" ++msgstr " 또는 '{}'는 최적 후보의 꾸러미만 사용합니다" + + #: dnf/cli/main.py:167 + msgid "Dependencies resolved." +@@ -2493,11 +2536,11 @@ msgstr "설정 파일 및 리포지토리 파일에서 $releasever 값을 무시 + + #: dnf/cli/option_parser.py:207 + msgid "set arbitrary config and repo options" +-msgstr "임의의 설정 옵션 및 리포지토리 옵션 설정" ++msgstr "임의의 설정 옵션 과 저장소 옵션 설정" + + #: dnf/cli/option_parser.py:210 + msgid "resolve depsolve problems by skipping packages" +-msgstr "패키지를 건너 뛰어 종속성 문제 해결" ++msgstr "꾸러미를 건너 뛰어 종속성 문제 해결" + + #: dnf/cli/option_parser.py:213 + msgid "show command help" +@@ -2505,19 +2548,19 @@ msgstr "명령 도움말 표시" + + #: dnf/cli/option_parser.py:217 + msgid "allow erasing of installed packages to resolve dependencies" +-msgstr "종속성을 해결하기 위해 설치된 패키지 지우기 허용" ++msgstr "종속성을 해결하기 위해 설치된 꾸러미 지우기 허용" + + #: dnf/cli/option_parser.py:221 + msgid "try the best available package versions in transactions." +-msgstr "트랜잭션에서 사용 가능한 최상의 패키지 버전을 사용해보십시오." ++msgstr "연결에서 사용 가능한 최상의 꾸러미 버전을 사용해보십시오." + + #: dnf/cli/option_parser.py:223 + msgid "do not limit the transaction to the best candidate" +-msgstr "트랜잭션을 최상의 선택 옵션으로 제한하지 마십시오" ++msgstr "연결을 최상의 선택 옵션으로 제한하지 마십시오" + + #: dnf/cli/option_parser.py:226 + msgid "run entirely from system cache, don't update cache" +-msgstr "시스템 캐시에서 완전히 실행하고, 캐시를 업데이트하지 않습니다." ++msgstr "시스템 캐쉬에서 완전히 실행하고, 캐쉬를 최신화하지 않습니다" + + #: dnf/cli/option_parser.py:230 + msgid "maximum command wait time" +@@ -2529,11 +2572,11 @@ msgstr "디버깅 출력 레벨" + + #: dnf/cli/option_parser.py:236 + msgid "dumps detailed solving results into files" +-msgstr "자세한 해결 결과를 파일로 덤프합니다." ++msgstr "자세한 해결 결과를 파일로 덤프합니다" + + #: dnf/cli/option_parser.py:240 + msgid "show duplicates, in repos, in list/search commands" +-msgstr "repos에 있는 중복 목록을 목록/검색 명령에 표시합니다." ++msgstr "repos에 있는 중복 목록을 목록/검색 명령에 표시합니다" + + #: dnf/cli/option_parser.py:243 + msgid "error output level" +@@ -2545,8 +2588,8 @@ msgid "" + "enables {prog}'s obsoletes processing logic for upgrade or display " + "capabilities that the package obsoletes for info, list and repoquery" + msgstr "" +-"패키지가 info, list, repoquery에 더 이상 사용하지 않는 업그레이드 또는 표시 기능을 위해 {prog}의 더 이상 " +-"사용되지 않는 처리 로직을 활성화합니다." ++"꾸러미가 info, list, repoquery에 더 이상 사용하지 않는 최신화 또는 표시 기능" ++"을 위해 {prog}의 더 이상 사용되지 않는 처리 로직을 활성화합니다" + + #: dnf/cli/option_parser.py:251 + msgid "debugging output level for rpm" +@@ -2564,19 +2607,25 @@ msgstr "모든 질문에 대해 \"아니오\"(no)로 자동 응답합니다" + msgid "" + "Enable additional repositories. List option. Supports globs, can be " + "specified multiple times." +-msgstr "추가 리포지토리를 활성화하십시오. 옵션이 나열됩니다. glob를 지원하며 여러 번 지정할 수 있습니다." ++msgstr "" ++"추가 저장소를 활성화하십시오. 옵션이 나열됩니다. glob를 지원하며 여러 번 지" ++"정 할 수 있습니다." + + #: dnf/cli/option_parser.py:266 + msgid "" +-"Disable repositories. List option. Supports globs, can be specified multiple" +-" times." +-msgstr "리포지토리를 비활성화합니다. 옵션이 나열됩니다. glob를 지원하며 여러 번 지정할 수 있습니다." ++"Disable repositories. List option. Supports globs, can be specified multiple " ++"times." ++msgstr "" ++"저장소를 비활성화 합니다. 옵션이 나열됩니다. glob를 지원하며 여러 번 지정 할 " ++"수 있습니다." + + #: dnf/cli/option_parser.py:270 + msgid "" + "enable just specific repositories by an id or a glob, can be specified " + "multiple times" +-msgstr "id 나 glob로 특정 리포지토리를 활성화할 수 있습니다. 여러 번 지정할 수 있습니다" ++msgstr "" ++"id 나 glob로 특정 리포지토리를 활성화할 수 있습니다. 여러 번 지정할 수 있습니" ++"다" + + #: dnf/cli/option_parser.py:275 + msgid "enable repos with config-manager command (automatically saves)" +@@ -2588,7 +2637,7 @@ msgstr "config-manager 명령으로 repos를 비활성화합니다 (자동 저 + + #: dnf/cli/option_parser.py:283 + msgid "exclude packages by name or glob" +-msgstr "이름이나 glob로 패키지를 제거합니다" ++msgstr "이름이나 glob로 꾸러미를 제거합니다" + + #: dnf/cli/option_parser.py:288 + msgid "disable excludepkgs" +@@ -2598,7 +2647,9 @@ msgstr "excludepkgs 비활성화" + msgid "" + "label and path to an additional repository to use (same path as in a " + "baseurl), can be specified multiple times." +-msgstr "사용할 추가 리포지터리에 대한 레이블 및 경로 (baseurl과 동일한 경로)를 여러 번 지정할 수 있습니다." ++msgstr "" ++"사용 할 추가 레포지터리에 대한 이름표와 경로 (baseurl과 동일한 경로)를 여러 " ++"번 지정와 할 수 있습니다." + + #: dnf/cli/option_parser.py:297 + msgid "disable removal of dependencies that are no longer used" +@@ -2626,51 +2677,51 @@ msgstr "IPv6 주소 만 확인" + + #: dnf/cli/option_parser.py:314 + msgid "set directory to copy packages to" +-msgstr "패키지를 복사할 디렉토리를 설정하십시오" ++msgstr "꾸러미를 복사할 디렉토리를 설정하십시오" + + #: dnf/cli/option_parser.py:317 + msgid "only download packages" +-msgstr "패키지 만 다운로드" ++msgstr "꾸러미만 내려받기" + + #: dnf/cli/option_parser.py:319 + msgid "add a comment to transaction" +-msgstr "트랜잭션에 의견을 추가하십시오" ++msgstr "연결에 의견을 추가하십시오" + + #: dnf/cli/option_parser.py:322 + msgid "Include bugfix relevant packages, in updates" +-msgstr "버그 수정 관련 패키지를 업데이트에 포함" ++msgstr "결점(bug) 수정 관련 꾸러미 최신화에 포함" + + #: dnf/cli/option_parser.py:325 + msgid "Include enhancement relevant packages, in updates" +-msgstr "개선된 기능과 관련된 패키지를 업데이트에 포함" ++msgstr "개선된 기능과 관련된 꾸러미를 초신화에 포함" + + #: dnf/cli/option_parser.py:328 + msgid "Include newpackage relevant packages, in updates" +-msgstr "새 패키지 관련 패키지를 업데이트에 포함" ++msgstr "새 꾸러미 관련 꾸러미 최신화에 포함" + + #: dnf/cli/option_parser.py:331 + msgid "Include security relevant packages, in updates" +-msgstr "보안 관련 패키지 업데이트에 포함" ++msgstr "보안 관련 꾸러미 최신화에 포함" + + #: dnf/cli/option_parser.py:335 + msgid "Include packages needed to fix the given advisory, in updates" +-msgstr "주어진 권고를 수정하는 데 필요한 패키지를 업데이트에 포함" ++msgstr "주어진 권고를 수정하는 데 필요한 꾸러미를 최신화에 포함" + + #: dnf/cli/option_parser.py:339 + msgid "Include packages needed to fix the given BZ, in updates" +-msgstr "주어진 BZ를 수정하는 데 필요한 패키지를 업데이트에 포함" ++msgstr "주어진 BZ를 수정하는 데 필요한 꾸러미를 최신화에 포함" + + #: dnf/cli/option_parser.py:342 + msgid "Include packages needed to fix the given CVE, in updates" +-msgstr "주어진 CVE를 수정하는 데 필요한 패키지를 업데이트에 포함" ++msgstr "주어진 CVE를 수정하는 데 필요한 꾸러미를 최신화에 포함" + + #: dnf/cli/option_parser.py:347 + msgid "Include security relevant packages matching the severity, in updates" +-msgstr "심각도와 일치하는 보안 관련 패키지를 업데이트에 포함" ++msgstr "심각도와 일치하는 보안 관련 꾸러미를 최신화에 포함" + + #: dnf/cli/option_parser.py:353 + msgid "Force the use of an architecture" +-msgstr "아키텍처의 사용을 강제합니다" ++msgstr "구조의 사용을 강제합니다" + + #: dnf/cli/option_parser.py:375 + msgid "List of Main Commands:" +@@ -2688,13 +2739,13 @@ msgstr "‘%s' 인수를 인코딩할 수 없습니다: %s" + #. Translators: This is abbreviated 'Name'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:505 ++#: dnf/cli/output.py:459 + msgctxt "short" + msgid "Name" + msgstr "이름" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:511 ++#: dnf/cli/output.py:465 + msgid "Epoch" + msgstr "기간" + +@@ -2702,38 +2753,38 @@ msgstr "기간" + #. use the full (unabbreviated) term 'Version' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:512 dnf/cli/output.py:1335 ++#: dnf/cli/output.py:466 dnf/cli/output.py:1248 + msgctxt "short" + msgid "Version" + msgstr "버전" + + #. Translators: This is the full (unabbreviated) term 'Version'. +-#: dnf/cli/output.py:513 dnf/cli/output.py:1337 ++#: dnf/cli/output.py:467 dnf/cli/output.py:1250 + msgctxt "long" + msgid "Version" + msgstr "버전" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:516 ++#: dnf/cli/output.py:470 + msgid "Release" + msgstr "릴리즈" + + #. Translators: This is abbreviated 'Architecture', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:517 dnf/cli/output.py:1326 ++#: dnf/cli/output.py:471 dnf/cli/output.py:1239 + msgctxt "short" + msgid "Arch" +-msgstr "아키텍처" ++msgstr "구조" + + #. Translators: This is the full word 'Architecture', used when + #. we have enough space. +-#: dnf/cli/output.py:518 dnf/cli/output.py:1329 ++#: dnf/cli/output.py:472 dnf/cli/output.py:1242 + msgctxt "long" + msgid "Architecture" +-msgstr "아키텍처" ++msgstr "구조" + + #. Translators: This is the full (unabbreviated) term 'Size'. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1352 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1265 + msgctxt "long" + msgid "Size" + msgstr "크기" +@@ -2742,361 +2793,357 @@ msgstr "크기" + #. not be longer than 5 characters. If the term 'Size' in your + #. language is not longer than 5 characters then you can use it + #. unabbreviated. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1350 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1263 + msgctxt "short" + msgid "Size" + msgstr "크기" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:524 ++#: dnf/cli/output.py:478 + msgid "Source" + msgstr "소스" + + #. Translators: This is abbreviated 'Repository', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:525 dnf/cli/output.py:1341 ++#: dnf/cli/output.py:479 dnf/cli/output.py:1254 + msgctxt "short" + msgid "Repo" +-msgstr "리포지터리" ++msgstr "레포지터리" + + #. Translators: This is the full word 'Repository', used when + #. we have enough space. +-#: dnf/cli/output.py:526 dnf/cli/output.py:1344 ++#: dnf/cli/output.py:480 dnf/cli/output.py:1257 + msgctxt "long" + msgid "Repository" +-msgstr "리포지터리" ++msgstr "레포지터리" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:533 ++#: dnf/cli/output.py:487 + msgid "From repo" +-msgstr "리포지터리에서" ++msgstr "레포지터리에서" + + #. :hawkey does not support changelog information + #. print(_("Committer : %s") % ucd(pkg.committer)) + #. print(_("Committime : %s") % time.ctime(pkg.committime)) + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:539 ++#: dnf/cli/output.py:493 + msgid "Packager" +-msgstr "패키지 프로그램" ++msgstr "꾸러미 생성자" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:541 ++#: dnf/cli/output.py:495 + msgid "Buildtime" + msgstr "빌드 시간" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:545 ++#: dnf/cli/output.py:499 + msgid "Install time" + msgstr "설치 시간" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:554 ++#: dnf/cli/output.py:508 + msgid "Installed by" + msgstr "설치자" + + #. Translators: This is abbreviated 'Summary'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:558 ++#: dnf/cli/output.py:512 + msgctxt "short" + msgid "Summary" + msgstr "요약" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:564 ++#: dnf/cli/output.py:518 + msgid "License" +-msgstr "라이센스" ++msgstr "저작권" + + #. Translators: This is abbreviated 'Description'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:568 ++#: dnf/cli/output.py:522 + msgctxt "short" + msgid "Description" + msgstr "설명" + +-#: dnf/cli/output.py:695 +-msgid "No packages to list" +-msgstr "목록에 패키지가 없습니다" +- +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "y" + msgstr "y" + +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "yes" + msgstr "예" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "n" + msgstr "n" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "no" +-msgstr "아니요" ++msgstr "아니" + +-#: dnf/cli/output.py:711 ++#: dnf/cli/output.py:655 + msgid "Is this ok [y/N]: " +-msgstr "정말입니까 [y/N]: " ++msgstr "진행 할 까요? [y/N]: " + +-#: dnf/cli/output.py:715 ++#: dnf/cli/output.py:659 + msgid "Is this ok [Y/n]: " +-msgstr "정말입니까 [Y/n]: " ++msgstr "진행 할 까요? [Y/n]: " + +-#: dnf/cli/output.py:795 ++#: dnf/cli/output.py:739 + #, python-format + msgid "Group: %s" + msgstr "그룹 %s" + +-#: dnf/cli/output.py:799 ++#: dnf/cli/output.py:743 + #, python-format + msgid " Group-Id: %s" + msgstr " 그룹 ID: %s" + +-#: dnf/cli/output.py:801 dnf/cli/output.py:840 ++#: dnf/cli/output.py:745 dnf/cli/output.py:784 + #, python-format + msgid " Description: %s" + msgstr " 설명: %s" + +-#: dnf/cli/output.py:803 ++#: dnf/cli/output.py:747 + #, python-format + msgid " Language: %s" + msgstr " 언어: %s" + +-#: dnf/cli/output.py:806 ++#: dnf/cli/output.py:750 + msgid " Mandatory Packages:" +-msgstr " 필수 패키지 :" ++msgstr " 필수 꾸러미 :" + +-#: dnf/cli/output.py:807 ++#: dnf/cli/output.py:751 + msgid " Default Packages:" +-msgstr " 기본 패키지 :" ++msgstr " 기본 꾸러미 :" + +-#: dnf/cli/output.py:808 ++#: dnf/cli/output.py:752 + msgid " Optional Packages:" +-msgstr " 선택적인 패키지 :" ++msgstr " 선택적인 꾸러미 :" + +-#: dnf/cli/output.py:809 ++#: dnf/cli/output.py:753 + msgid " Conditional Packages:" +-msgstr " 추가 가능 패키지 :" ++msgstr " 추가 가능 꾸러미 :" + +-#: dnf/cli/output.py:834 ++#: dnf/cli/output.py:778 + #, python-format + msgid "Environment Group: %s" + msgstr "환경 그룹 : %s" + +-#: dnf/cli/output.py:837 ++#: dnf/cli/output.py:781 + #, python-format + msgid " Environment-Id: %s" + msgstr " 환경 -ID : %s" + +-#: dnf/cli/output.py:843 ++#: dnf/cli/output.py:787 + msgid " Mandatory Groups:" + msgstr " 필수 그룹 :" + +-#: dnf/cli/output.py:844 ++#: dnf/cli/output.py:788 + msgid " Optional Groups:" + msgstr " 선택적인 그룹 :" + +-#: dnf/cli/output.py:865 ++#: dnf/cli/output.py:809 + msgid "Matched from:" + msgstr "일치하는 항목 :" + +-#: dnf/cli/output.py:879 ++#: dnf/cli/output.py:823 + #, python-format + msgid "Filename : %s" + msgstr "파일 이름 : %s" + +-#: dnf/cli/output.py:904 ++#: dnf/cli/output.py:848 + #, python-format + msgid "Repo : %s" + msgstr "리포지토리 : %s" + +-#: dnf/cli/output.py:913 ++#: dnf/cli/output.py:857 + msgid "Description : " + msgstr "설명 : " + +-#: dnf/cli/output.py:917 ++#: dnf/cli/output.py:861 + #, python-format + msgid "URL : %s" + msgstr "URL : %s" + +-#: dnf/cli/output.py:921 ++#: dnf/cli/output.py:865 + #, python-format + msgid "License : %s" +-msgstr "라이센스 : %s" ++msgstr "저작권 : %s" + +-#: dnf/cli/output.py:927 ++#: dnf/cli/output.py:871 + #, python-format + msgid "Provide : %s" + msgstr "제공 : %s" + +-#: dnf/cli/output.py:947 ++#: dnf/cli/output.py:891 + #, python-format + msgid "Other : %s" + msgstr "기타 : %s" + +-#: dnf/cli/output.py:996 ++#: dnf/cli/output.py:940 + msgid "There was an error calculating total download size" +-msgstr "총 다운로드 크기를 계산하는 중에 오류가 발생했습니다" ++msgstr "총 내려받기 크기를 계산하는 중에 오류가 발생했습니다" + +-#: dnf/cli/output.py:1002 ++#: dnf/cli/output.py:946 + #, python-format + msgid "Total size: %s" + msgstr "전체 크기: %s" + +-#: dnf/cli/output.py:1005 ++#: dnf/cli/output.py:949 + #, python-format + msgid "Total download size: %s" +-msgstr "총 다운로드 크기 : %s" ++msgstr "총계 내려받기 크기: %s" + +-#: dnf/cli/output.py:1008 ++#: dnf/cli/output.py:952 + #, python-format + msgid "Installed size: %s" + msgstr "설치된 크기 : %s" + +-#: dnf/cli/output.py:1026 ++#: dnf/cli/output.py:970 + msgid "There was an error calculating installed size" + msgstr "설치된 크기를 계산하는 동안 오류가 발생했습니다" + +-#: dnf/cli/output.py:1030 ++#: dnf/cli/output.py:974 + #, python-format + msgid "Freed space: %s" + msgstr "사용 가능한 공간 : %s" + +-#: dnf/cli/output.py:1039 ++#: dnf/cli/output.py:983 + msgid "Marking packages as installed by the group:" +-msgstr "그룹에 설치된 패키지 표시:" ++msgstr "그룹에 설치된 꾸러미 표시:" + +-#: dnf/cli/output.py:1046 ++#: dnf/cli/output.py:990 + msgid "Marking packages as removed by the group:" +-msgstr "그룹에 의해 제거된 패키지 표시:" ++msgstr "그룹에 의해 제거된 꾸러미 표시:" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Group" + msgstr "그룹" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Packages" +-msgstr "패키지" ++msgstr "꾸러미" + +-#: dnf/cli/output.py:1133 ++#: dnf/cli/output.py:1046 + msgid "Installing group/module packages" +-msgstr "그룹 / 모듈 패키지 설치" ++msgstr "그룹/모듈 꾸러미 설치" + +-#: dnf/cli/output.py:1134 ++#: dnf/cli/output.py:1047 + msgid "Installing group packages" +-msgstr "그룹 패키지 설치" ++msgstr "그룹 꾸러미 설치" + + #. TRANSLATORS: This is for a list of packages to be installed. +-#: dnf/cli/output.py:1138 ++#: dnf/cli/output.py:1051 + msgctxt "summary" + msgid "Installing" + msgstr "설치 중" + + #. TRANSLATORS: This is for a list of packages to be upgraded. +-#: dnf/cli/output.py:1140 ++#: dnf/cli/output.py:1053 + msgctxt "summary" + msgid "Upgrading" +-msgstr "업그레이드 중" ++msgstr "향상 중" + + #. TRANSLATORS: This is for a list of packages to be reinstalled. +-#: dnf/cli/output.py:1142 ++#: dnf/cli/output.py:1055 + msgctxt "summary" + msgid "Reinstalling" + msgstr "재설치 중" + +-#: dnf/cli/output.py:1144 ++#: dnf/cli/output.py:1057 + msgid "Installing dependencies" +-msgstr "종속 패키지 설치 중" ++msgstr "종속 꾸러미 설치 중" + +-#: dnf/cli/output.py:1145 ++#: dnf/cli/output.py:1058 + msgid "Installing weak dependencies" +-msgstr "취약한 종속 패키지 설치 중" ++msgstr "취약한 종속 꾸러미 설치 중" + +-#. TRANSLATORS: This is for a list of packages to be removed. + # translation auto-copied from project subscription-manager, version 1.11.X, + # document keys +-#: dnf/cli/output.py:1147 ++#. TRANSLATORS: This is for a list of packages to be removed. ++#: dnf/cli/output.py:1060 + msgid "Removing" + msgstr "삭제 중" + +-#: dnf/cli/output.py:1148 ++#: dnf/cli/output.py:1061 + msgid "Removing dependent packages" +-msgstr "종속 패키지 제거" ++msgstr "종속 꾸러미지 제거" + +-#: dnf/cli/output.py:1149 ++#: dnf/cli/output.py:1062 + msgid "Removing unused dependencies" +-msgstr "사용하지 않는 종속 패키지 제거" ++msgstr "사용하지 않는 종속 꾸러미 제거" + + #. TRANSLATORS: This is for a list of packages to be downgraded. +-#: dnf/cli/output.py:1151 ++#: dnf/cli/output.py:1064 + msgctxt "summary" + msgid "Downgrading" +-msgstr "다운그레이드 중" ++msgstr "하향설치 중" + +-#: dnf/cli/output.py:1176 ++#: dnf/cli/output.py:1089 + msgid "Installing module profiles" + msgstr "모듈 프로파일 설치" + +-#: dnf/cli/output.py:1185 ++#: dnf/cli/output.py:1098 + msgid "Disabling module profiles" + msgstr "모듈 프로파일 비활성화" + +-#: dnf/cli/output.py:1194 ++#: dnf/cli/output.py:1107 + msgid "Enabling module streams" + msgstr "모듈 스트림 활성화" + +-#: dnf/cli/output.py:1202 ++#: dnf/cli/output.py:1115 + msgid "Switching module streams" + msgstr "모듈 스트림 전환" + +-#: dnf/cli/output.py:1210 ++#: dnf/cli/output.py:1123 + msgid "Disabling modules" + msgstr "모듈 비활성화" + +-#: dnf/cli/output.py:1218 ++#: dnf/cli/output.py:1131 + msgid "Resetting modules" + msgstr "모듈 재설정" + +-#: dnf/cli/output.py:1230 ++#: dnf/cli/output.py:1143 + msgid "Installing Environment Groups" +-msgstr "환경 그룹 설치" ++msgstr "환경 그룹 설치 중" + +-#: dnf/cli/output.py:1237 ++#: dnf/cli/output.py:1150 + msgid "Upgrading Environment Groups" +-msgstr "환경 그룹 업그레이드" ++msgstr "환경 그룹 향상" + +-#: dnf/cli/output.py:1244 ++#: dnf/cli/output.py:1157 + msgid "Removing Environment Groups" + msgstr "환경 그룹 제거" + +-#: dnf/cli/output.py:1251 ++#: dnf/cli/output.py:1164 + msgid "Installing Groups" + msgstr "그룹 설치" + +-#: dnf/cli/output.py:1258 ++#: dnf/cli/output.py:1171 + msgid "Upgrading Groups" +-msgstr "그룹 업그레이드" ++msgstr "그룹 향상" + +-#: dnf/cli/output.py:1265 ++#: dnf/cli/output.py:1178 + msgid "Removing Groups" + msgstr "그룹 제거" + +-#: dnf/cli/output.py:1281 ++#: dnf/cli/output.py:1194 + #, python-format + msgid "" + "Skipping packages with conflicts:\n" + "(add '%s' to command line to force their upgrade)" + msgstr "" +-"충돌 패키지 건너 뛰기 :\n" +-"(업그레이드를 강제하려면 명령행에 '%s' 추가)" ++"충돌 꾸러미 건너 뛰기:\n" ++"(향상을 강제하려면 명령행에 '%s' 추가)" + +-#: dnf/cli/output.py:1291 ++#: dnf/cli/output.py:1204 + #, python-format + msgid "Skipping packages with broken dependencies%s" +-msgstr "손상된 종속성이 있는 %s 패키지 건너 뛰기" ++msgstr "손상된 종속성이 있는 %s 꾸러미 건너 뛰기" + +-#: dnf/cli/output.py:1295 ++#: dnf/cli/output.py:1208 + msgid " or part of a group" + msgstr " 또는 그룹의 일부" + +@@ -3104,22 +3151,22 @@ msgstr " 또는 그룹의 일부" + #. use the full (unabbreviated) term 'Package' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:1320 ++#: dnf/cli/output.py:1233 + msgctxt "short" + msgid "Package" +-msgstr "패키지" ++msgstr "꾸러미" + + #. Translators: This is the full (unabbreviated) term 'Package'. +-#: dnf/cli/output.py:1322 ++#: dnf/cli/output.py:1235 + msgctxt "long" + msgid "Package" +-msgstr "패키지" ++msgstr "꾸러미" + +-#: dnf/cli/output.py:1371 ++#: dnf/cli/output.py:1284 + msgid "replacing" + msgstr "교체" + +-#: dnf/cli/output.py:1378 ++#: dnf/cli/output.py:1291 + #, python-format + msgid "" + "\n" +@@ -3127,296 +3174,280 @@ msgid "" + "%s\n" + msgstr "" + "\n" +-"트랜잭션 요약\n" ++"연결 요약\n" + "%s\n" + + #. TODO: remove +-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933 ++#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815 + msgid "Install" + msgstr "설치" + + # ctx::sourcefile::Navigation Menu +-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941 ++#: dnf/cli/output.py:1300 dnf/cli/output.py:1823 + msgid "Upgrade" +-msgstr "업그레이드" ++msgstr "향상" + +-#: dnf/cli/output.py:1388 ++#: dnf/cli/output.py:1301 + msgid "Remove" + msgstr "삭제" + +-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939 ++#: dnf/cli/output.py:1303 dnf/cli/output.py:1821 + msgid "Downgrade" +-msgstr "다운 그레이드" ++msgstr "하향설치" + +-#: dnf/cli/output.py:1391 ++#: dnf/cli/output.py:1304 + msgid "Skip" + msgstr "건너뛰기" + +-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416 ++#: dnf/cli/output.py:1313 dnf/cli/output.py:1329 + msgid "Package" + msgid_plural "Packages" +-msgstr[0] "패키지" ++msgstr[0] "꾸러미" + +-#: dnf/cli/output.py:1418 ++#: dnf/cli/output.py:1331 + msgid "Dependent package" + msgid_plural "Dependent packages" +-msgstr[0] "종속 패키지" +- +-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942 +-msgid "Upgraded" +-msgstr "업그레이드 됨" +- +-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940 +-msgid "Downgraded" +-msgstr "다운 그레이드" +- +-#: dnf/cli/output.py:1503 +-msgid "Reinstalled" +-msgstr "다시 설치됨" +- +-#: dnf/cli/output.py:1504 +-msgid "Skipped" +-msgstr "건너 뛰기됨" +- +-#: dnf/cli/output.py:1505 +-msgid "Removed" +-msgstr "제거됨" +- +-#: dnf/cli/output.py:1508 +-msgid "Failed" +-msgstr "실패하였습니다" ++msgstr[0] "종속 꾸러미" + + # auto translated by TM merge from project: RHOSP Director Installation and + # Usage , version: 11-Korean, DocId: master +-#: dnf/cli/output.py:1559 ++#: dnf/cli/output.py:1439 + msgid "Total" + msgstr "합계" + +-#: dnf/cli/output.py:1587 ++#: dnf/cli/output.py:1467 + msgid "" + msgstr "" + +-#: dnf/cli/output.py:1588 ++#: dnf/cli/output.py:1468 + msgid "System" + msgstr "시스템" + +-#: dnf/cli/output.py:1638 ++#: dnf/cli/output.py:1518 + msgid "Command line" + msgstr "명령행" + + #. TRANSLATORS: user names who executed transaction in history command output +-#: dnf/cli/output.py:1649 ++#: dnf/cli/output.py:1531 + msgid "User name" + msgstr "사용자 이름" + + # translation auto-copied from project subscription-manager, version 1.11.X, + # document keys +-#: dnf/cli/output.py:1651 ++#: dnf/cli/output.py:1533 + msgid "ID" + msgstr "ID" + +-#: dnf/cli/output.py:1653 ++#: dnf/cli/output.py:1535 + msgid "Date and time" + msgstr "날짜와 시간" + +-#: dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1536 + msgid "Action(s)" + msgstr "작업" + +-#: dnf/cli/output.py:1655 ++#: dnf/cli/output.py:1537 + msgid "Altered" + msgstr "변경됨" + +-#: dnf/cli/output.py:1698 ++#: dnf/cli/output.py:1580 + msgid "No transactions" +-msgstr "트랜잭션 없음" ++msgstr "연결 없음" + +-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715 ++#: dnf/cli/output.py:1581 dnf/cli/output.py:1597 + msgid "Failed history info" + msgstr "실패 기록 정보" + +-#: dnf/cli/output.py:1714 ++#: dnf/cli/output.py:1596 + msgid "No transaction ID, or package, given" +-msgstr "트랜잭션 ID 또는 패키지가 지정되지 않았습니다" ++msgstr "연결 ID 또는 꾸러미가 지정되지 않았습니다" + +-#: dnf/cli/output.py:1772 ++#: dnf/cli/output.py:1654 + msgid "Erased" +-msgstr "삭제됨" ++msgstr "제거되었습니다" + +-#: dnf/cli/output.py:1774 ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616 ++msgid "Downgraded" ++msgstr "하향설치됨" ++ ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615 ++msgid "Upgraded" ++msgstr "향상되었습니다" ++ ++#: dnf/cli/output.py:1656 + msgid "Not installed" + msgstr "설치되지 않음" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Newer" + msgstr "최신" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Older" + msgstr "이전" + +-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825 ++#: dnf/cli/output.py:1705 dnf/cli/output.py:1707 + msgid "Transaction ID :" +-msgstr "트랜잭션 ID :" ++msgstr "연결 ID :" + +-#: dnf/cli/output.py:1828 ++#: dnf/cli/output.py:1710 + msgid "Begin time :" + msgstr "시작 시간 :" + +-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833 ++#: dnf/cli/output.py:1713 dnf/cli/output.py:1715 + msgid "Begin rpmdb :" + msgstr "rpmdb 시작 :" + +-#: dnf/cli/output.py:1839 ++#: dnf/cli/output.py:1721 + #, python-format + msgid "(%u seconds)" + msgstr "(%u 초)" + +-#: dnf/cli/output.py:1841 ++#: dnf/cli/output.py:1723 + #, python-format + msgid "(%u minutes)" + msgstr "(%u 분)" + +-#: dnf/cli/output.py:1843 ++#: dnf/cli/output.py:1725 + #, python-format + msgid "(%u hours)" + msgstr "(%u 시간)" + +-#: dnf/cli/output.py:1845 ++#: dnf/cli/output.py:1727 + #, python-format + msgid "(%u days)" + msgstr "(%u 일)" + +-#: dnf/cli/output.py:1846 ++#: dnf/cli/output.py:1728 + msgid "End time :" + msgstr "종료 시간 :" + +-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851 ++#: dnf/cli/output.py:1731 dnf/cli/output.py:1733 + msgid "End rpmdb :" + msgstr "rpmdb 종료:" + +-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860 ++#: dnf/cli/output.py:1740 dnf/cli/output.py:1742 + msgid "User :" + msgstr "사용자 :" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1753 + msgid "Aborted" + msgstr "중지됨" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869 +-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751 ++#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757 + msgid "Return-Code :" + msgstr "반환 코드 :" + +-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1749 dnf/cli/output.py:1757 + msgid "Success" + msgstr "성공" + +-#: dnf/cli/output.py:1869 ++#: dnf/cli/output.py:1751 + msgid "Failures:" + msgstr "실패 :" + +-#: dnf/cli/output.py:1873 ++#: dnf/cli/output.py:1755 + msgid "Failure:" + msgstr "실패:" + +-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885 ++#: dnf/cli/output.py:1765 dnf/cli/output.py:1767 + msgid "Releasever :" +-msgstr "Releasever :" ++msgstr "Releasever :" + +-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892 ++#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 + msgid "Command Line :" + msgstr "명령 줄 :" + +-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899 ++#: dnf/cli/output.py:1779 dnf/cli/output.py:1781 + msgid "Comment :" + msgstr "댓글 :" + +-#: dnf/cli/output.py:1903 ++#: dnf/cli/output.py:1785 + msgid "Transaction performed with:" +-msgstr "실행된 트랜잭션:" ++msgstr "실행된 연결:" + +-#: dnf/cli/output.py:1912 ++#: dnf/cli/output.py:1794 + msgid "Packages Altered:" +-msgstr "변경된 패키지 :" ++msgstr "변경된 꾸러미 :" + +-#: dnf/cli/output.py:1918 ++#: dnf/cli/output.py:1800 + msgid "Scriptlet output:" +-msgstr "Scriptlet 출력 :" ++msgstr "스크립트릿 출력 :" + +-#: dnf/cli/output.py:1925 ++#: dnf/cli/output.py:1807 + msgid "Errors:" + msgstr "오류 :" + +-#: dnf/cli/output.py:1934 ++#: dnf/cli/output.py:1816 + msgid "Dep-Install" +-msgstr "Dep-Install" ++msgstr "설치-시작" + +-#: dnf/cli/output.py:1935 ++#: dnf/cli/output.py:1817 + msgid "Obsoleted" + msgstr "사용 중지됨" + +-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85 ++#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85 + msgid "Obsoleting" + msgstr "사용 중지" + +-#: dnf/cli/output.py:1937 ++#: dnf/cli/output.py:1819 + msgid "Erase" + msgstr "삭제" + +-#: dnf/cli/output.py:1938 ++#: dnf/cli/output.py:1820 + msgid "Reinstall" + msgstr "재설치" + +-#: dnf/cli/output.py:2016 ++#: dnf/cli/output.py:1894 + #, python-format + msgid "---> Package %s.%s %s will be installed" +-msgstr "---> 패키지 %s.%s %s이/가 설치됩니다" ++msgstr "---> 꾸러미 %s.%s %s가 설치됩니다" + +-#: dnf/cli/output.py:2018 ++#: dnf/cli/output.py:1896 + #, python-format + msgid "---> Package %s.%s %s will be an upgrade" +-msgstr "---> 패키지 %s.%s %s이/가 업그레이드됩니다" ++msgstr "---> 꾸러미 %s.%s %s가 최신화됩니다" + +-#: dnf/cli/output.py:2020 ++#: dnf/cli/output.py:1898 + #, python-format + msgid "---> Package %s.%s %s will be erased" +-msgstr "---> 패키지 %s.%s %s이/가 제거됩니다" ++msgstr "---> 꾸러미 %s.%s %s가 제거됩니다" + +-#: dnf/cli/output.py:2022 ++#: dnf/cli/output.py:1900 + #, python-format + msgid "---> Package %s.%s %s will be reinstalled" +-msgstr "---> 패키지 %s.%s %s이/가 다시 설치됩니다" ++msgstr "---> 꾸러미 %s.%s %s가 다시 설치됩니다" + +-#: dnf/cli/output.py:2024 ++#: dnf/cli/output.py:1902 + #, python-format + msgid "---> Package %s.%s %s will be a downgrade" +-msgstr "---> 패키지 %s.%s %s이/가 다운그레이드됩니다" ++msgstr "---> 꾸러미 %s.%s %s가 하향설치됩니다" + +-#: dnf/cli/output.py:2026 ++#: dnf/cli/output.py:1904 + #, python-format + msgid "---> Package %s.%s %s will be obsoleting" +-msgstr "---> 패키지 %s.%s %s이/가 더 이상 사용되지 않습니다" ++msgstr "---> 꾸러미 %s.%s %s가 더 이상 사용되지 않습니다" + +-#: dnf/cli/output.py:2028 ++#: dnf/cli/output.py:1906 + #, python-format + msgid "---> Package %s.%s %s will be upgraded" +-msgstr "---> 패키지 %s.%s %s이/가 업그레이드됩니다" ++msgstr "---> 꾸러미 %s.%s %s가 최신화됩니다" + +-#: dnf/cli/output.py:2030 ++#: dnf/cli/output.py:1908 + #, python-format + msgid "---> Package %s.%s %s will be obsoleted" +-msgstr "---> 패키지 %s.%s %s이/가 더 이상 사용되지 않습니다" ++msgstr "---> 꾸러미 %s.%s %s가 더 이상 사용되지 않습니다" + +-#: dnf/cli/output.py:2039 ++#: dnf/cli/output.py:1917 + msgid "--> Starting dependency resolution" + msgstr "-> 종석성 해결 시작" + +-#: dnf/cli/output.py:2044 ++#: dnf/cli/output.py:1921 + msgid "--> Finished dependency resolution" + msgstr "-> 종속성 해결 완료" + +-#: dnf/cli/output.py:2058 dnf/crypto.py:132 ++#: dnf/cli/output.py:1935 dnf/crypto.py:132 + #, python-format + msgid "" + "Importing GPG key 0x%s:\n" +@@ -3425,13 +3456,13 @@ msgid "" + " From : %s" + msgstr "" + "GPG키 0x%s 가져오는 중:\n" +-" 사용자 ID : \"%s\"\n" +-" 지문: %s\n" +-" 출처 : %s" ++"사용자 ID : \"%s\"\n" ++"지문: %s\n" ++"출처 : %s" + + #: dnf/cli/utils.py:98 + msgid "Running" +-msgstr "실행중" ++msgstr "실행 중" + + #: dnf/cli/utils.py:99 + msgid "Sleeping" +@@ -3478,36 +3509,30 @@ msgstr " 시작됨: %s - %s 전" + msgid " State : %s" + msgstr " 상태 : %s" + +-#: dnf/comps.py:104 +-msgid "skipping." +-msgstr "건너 뛰기." +- + #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706 + #, python-format + msgid "Module or Group '%s' is not installed." +-msgstr "모듈 또는 그룹 '%s'이/가 설치되지 않았습니다." ++msgstr "모듈 또는 그룹 '%s'가 설치되지 않았습니다." + + #: dnf/comps.py:198 dnf/comps.py:708 + #, python-format + msgid "Module or Group '%s' is not available." +-msgstr "모듈 또는 그룹 '%s'을/를 사용할 수 없습니다." ++msgstr "모듈 또는 그룹 '%s'을 사용 할 수 없습니다." + + #: dnf/comps.py:200 + #, python-format + msgid "Module or Group '%s' does not exist." +-msgstr "모듈 또는 그룹 '%s'이/가 존재하지 않습니다." ++msgstr "모듈 또는 그룹 '%s'가 존재하지 않습니다." + + #: dnf/comps.py:599 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not installed." ++#, python-format + msgid "Environment id '%s' does not exist." +-msgstr "환경 '%s'이 설치되지 않았습니다." ++msgstr "환경 id '%s' 가 존재하지 않습니다." + +-#: dnf/comps.py:622 dnf/transaction_sr.py:443 dnf/transaction_sr.py:453 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not installed." ++#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487 ++#, python-format + msgid "Environment id '%s' is not installed." +-msgstr "환경 '%s'이 설치되지 않았습니다." ++msgstr "환경id '%s'가 설치되지 않았습니다." + + #: dnf/comps.py:639 + #, python-format +@@ -3517,19 +3542,23 @@ msgstr "환경 '%s'이 설치되지 않았습니다." + #: dnf/comps.py:641 + #, python-format + msgid "Environment '%s' is not available." +-msgstr "환경 '%s'을/를 사용할 수 없습니다." ++msgstr "환경 '%s'을 사용 할 수 없습니다." + + #: dnf/comps.py:673 +-#, fuzzy, python-format +-#| msgid "Group_id '%s' does not exist." ++#, python-format + msgid "Group id '%s' does not exist." +-msgstr "Group_id '%s' 존재하지 않는다." ++msgstr "Group id '%s' 가 존재하지 않습니다." + + #: dnf/conf/config.py:136 + #, python-format + msgid "Error parsing '%s': %s" + msgstr "'%s' 구문 분석 중 오류 발생: %s" + ++#: dnf/conf/config.py:151 ++#, python-format ++msgid "Invalid configuration value: %s=%s in %s; %s" ++msgstr "잘못된 구성 값: %s=%s (%s; %s에서)" ++ + #: dnf/conf/config.py:226 + msgid "Could not set cachedir: {}" + msgstr "cachedir를 설정할 수 없습니다: {}" +@@ -3539,7 +3568,7 @@ msgid "" + "Configuration file URL \"{}\" could not be downloaded:\n" + " {}" + msgstr "" +-"구성 파일 URL \"{}\"을 (를) 다운로드 할 수 없습니다:\n" ++"구성 파일 URL \"{}\"를 내려받기 할 수 없습니다:\n" + " {}" + + #: dnf/conf/config.py:355 dnf/conf/config.py:391 +@@ -3550,7 +3579,7 @@ msgstr "알 수 없는 설정 옵션 : %s = %s" + #: dnf/conf/config.py:372 + #, python-format + msgid "Error parsing --setopt with key '%s', value '%s': %s" +-msgstr "키 ‘%s', 값 '%s'을/를 사용하여 --setopt 구문 분석 중 오류 발생: %s" ++msgstr "키 ‘%s', 값 '%s'를 사용하여 --setopt 구문 분석 중 오류 발생: %s" + + #: dnf/conf/config.py:380 + #, python-format +@@ -3564,75 +3593,92 @@ msgstr "잘못되었거나 알 수 없음 \"{}\": {}" + #: dnf/conf/config.py:501 + #, python-format + msgid "Error parsing --setopt with key '%s.%s', value '%s': %s" +-msgstr "키 %s.%s', 값 '%s'을/를 사용하여 --setopt 구문 분석 중 오류 발생: %s" ++msgstr "키 %s.%s', 값 '%s'를 사용하여 --setopt 구문 분석 중 오류 발생: %s" + + #: dnf/conf/config.py:504 + #, python-format + msgid "Repo %s did not have a %s attr. before setopt" + msgstr "Repo %s에 setopt 이전에 %s attr이 없습니다" + +-#: dnf/conf/read.py:51 ++#: dnf/conf/read.py:60 + #, python-format + msgid "Warning: failed loading '%s', skipping." +-msgstr "경고: '%s'을/를 로드하지 못했습니다, 건너 뛰기." ++msgstr "경고: '%s'을 적재하지 못했습니다, 건너 뛰기." + +-#: dnf/conf/read.py:63 ++#: dnf/conf/read.py:72 + msgid "Bad id for repo: {} ({}), byte = {} {}" +-msgstr "리포지터리의 ID가 잘못되었습니다. {} ({}), byte = {} {}" ++msgstr "레포지터리의 ID가 잘못되었습니다. {} ({}), byte = {} {}" + +-#: dnf/conf/read.py:67 ++#: dnf/conf/read.py:76 + msgid "Bad id for repo: {}, byte = {} {}" +-msgstr "리포지터리의 ID가 잘못되었습니다. {}, byte = {} {}" ++msgstr "레포지터리의 ID가 잘못되었습니다. {}, byte = {} {}" + +-#: dnf/conf/read.py:75 ++#: dnf/conf/read.py:84 + msgid "Repository '{}' ({}): Error parsing config: {}" + msgstr "Repository '{}' ({}): 구문 분석 설정 오류: {}" + +-#: dnf/conf/read.py:78 ++#: dnf/conf/read.py:87 + msgid "Repository '{}': Error parsing config: {}" + msgstr "Repository '{}' : 구문 분석 설정 오류: {}" + +-#: dnf/conf/read.py:84 ++#: dnf/conf/read.py:93 + msgid "Repository '{}' ({}) is missing name in configuration, using id." +-msgstr "Repository '{}' ({})의 설정에 이름이 누락되어 있습니다. id를 사용하십시오." ++msgstr "" ++"Repository '{}' ({})의 설정에 이름이 누락되어 있습니다. id를 사용하십시오." + +-#: dnf/conf/read.py:87 ++#: dnf/conf/read.py:96 + msgid "Repository '{}' is missing name in configuration, using id." + msgstr "Repository '{}'의 설정에 이름이 누락되어 있습니다. id를 사용하십시오." + +-#: dnf/conf/read.py:104 ++#: dnf/conf/read.py:113 + msgid "Parsing file \"{}\" failed: {}" + msgstr "\"{}\" 파일을 구문 분석하지 못했습니다: {}" + + #: dnf/crypto.py:108 + #, python-format + msgid "repo %s: 0x%s already imported" +-msgstr "repo %s: 0x%s을/를 이미 가져왔습니다" ++msgstr "repo %s: 0x%s를 이미 가져왔습니다" + + #: dnf/crypto.py:115 + #, python-format + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: 0x%s 키를 가져왔습니다." + +-#: dnf/db/group.py:293 ++#: dnf/crypto.py:145 ++msgid "Verified using DNS record with DNSSEC signature." ++msgstr "DNSSEC 서명이 있는 DNS 레코드를 사용하여 확인됨." ++ ++#: dnf/crypto.py:147 ++msgid "NOT verified using DNS record." ++msgstr "DNS 레코드를 사용하여 확인되지 않음." ++ ++#: dnf/crypto.py:184 ++#, python-format ++msgid "retrieving repo key for %s unencrypted from %s" ++msgstr "%s에서 암호화 하지 않은 %s를 위한 저장소 키 검색" ++ ++#: dnf/db/group.py:301 + msgid "" + "No available modular metadata for modular package '{}', it cannot be " + "installed on the system" +-msgstr "모듈 패키지 '{}'에 사용 가능한 메타 데이터가 없으며 시스템에 설치할 수 없습니다" ++msgstr "" ++"모듈 꾸러미 '{}'에 사용 가능한 메타 자료가 없으며 시스템에 설치 할 수 없습니" ++"다" + +-#: dnf/db/group.py:343 ++#: dnf/db/group.py:351 + msgid "No available modular metadata for modular package" +-msgstr "모듈 패키지에 사용 가능한 모듈 메타 데이터가 없습니다" ++msgstr "모듈 꾸러미에 사용 가능한 모듈 메타 자료가 없습니다" + +-#: dnf/db/group.py:377 ++#: dnf/db/group.py:385 + #, python-format + msgid "Will not install a source rpm package (%s)." +-msgstr "소스 RPM패키지를 설치하지 않습니다 (%s)." ++msgstr "소스 RPM 꾸러미를 설치하지 않습니다 (%s)." + + #: dnf/dnssec.py:168 + msgid "" +-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})" +-msgstr "설정 옵션 'gpgkey_dns_verification'에는 libunbound ({})가 필요합니다" ++"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})" ++msgstr "" ++"구성 선택 'gpgkey_dns_verification'에는 python3-unbound ({})가 필요합니다" + + #: dnf/dnssec.py:239 + msgid "DNSSEC extension: Key for user " +@@ -3654,7 +3700,7 @@ msgstr "DNSSEC 확장: " + msgid "Testing already imported keys for their validity." + msgstr "유효성 검사를 위해 이미 가져온 키를 테스트 중입니다." + +-#: dnf/drpm.py:62 dnf/repo.py:268 ++#: dnf/drpm.py:62 dnf/repo.py:267 + #, python-format + msgid "unsupported checksum type: %s" + msgstr "지원되지 않는 검사 유형: %s" +@@ -3679,11 +3725,11 @@ msgstr "요청 중인 문제 :" + + #: dnf/exceptions.py:115 + msgid "missing packages: " +-msgstr "누락된 패키지: " ++msgstr "누락된 꾸러미: " + + #: dnf/exceptions.py:117 + msgid "broken packages: " +-msgstr "잘못된 패키지: " ++msgstr "잘못된 꾸러미: " + + #: dnf/exceptions.py:119 + msgid "missing groups or modules: " +@@ -3698,7 +3744,7 @@ msgid "Modular dependency problem with Defaults:" + msgid_plural "Modular dependency problems with Defaults:" + msgstr[0] "기본값의 모듈 종속성 문제 :" + +-#: dnf/exceptions.py:131 dnf/module/module_base.py:686 ++#: dnf/exceptions.py:131 dnf/module/module_base.py:854 + msgid "Modular dependency problem:" + msgid_plural "Modular dependency problems:" + msgstr[0] "모듈 종속성 문제 :" +@@ -3707,10 +3753,12 @@ msgstr[0] "모듈 종속성 문제 :" + #, python-format + msgid "" + "Malformed lock file found: %s.\n" +-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf." ++"Ensure no other dnf/yum process is running and remove the lock file manually " ++"or run systemd-tmpfiles --remove dnf.conf." + msgstr "" + "잘못된 잠금 파일이 발견되었습니다. %s \n" +-"다른 dnf / yum 프로세스가 실행되고 있는지 확인하고 잠금 파일을 수동으로 제거하거나 systemd-tmpfiles --remove dnf.conf를 실행하십시오." ++"다른 dnf / yum 프로세스가 실행되고 있는지 확인하고 잠금 파일을 수동으로 제거" ++"하거나 systemd-tmpfiles --remove dnf.conf를 실행하십시오." + + #: dnf/module/__init__.py:26 + msgid "Enabling different stream for '{}'." +@@ -3722,7 +3770,7 @@ msgstr "표시할 것이 없습니다." + + #: dnf/module/__init__.py:28 + msgid "Installing newer version of '{}' than specified. Reason: {}" +-msgstr "지정된 버전보다 새 버전의 '{}'을/를 설치합니다. 이유 : {}" ++msgstr "지정된 버전 보다 새로운 버전의 '{}'를 설치합니다. 이유 : {}" + + #: dnf/module/__init__.py:29 + msgid "Enabled modules: {}." +@@ -3732,7 +3780,47 @@ msgstr "사용 설정된 모듈 : {}." + msgid "No profile specified for '{}', please specify profile." + msgstr "'{}'에 지정된 프로필이 없습니다. 프로필을 지정하십시오." + +-#: dnf/module/module_base.py:33 ++#: dnf/module/exceptions.py:27 ++msgid "No such module: {}" ++msgstr "그런 모듈이 없습니다: {}" ++ ++#: dnf/module/exceptions.py:33 ++msgid "No such stream: {}" ++msgstr "그런 스트림이 없습니다: {}" ++ ++#: dnf/module/exceptions.py:39 ++msgid "No enabled stream for module: {}" ++msgstr "모듈에 대한 활성화된 스트림이 없습니다: {}" ++ ++#: dnf/module/exceptions.py:46 ++msgid "Cannot enable more streams from module '{}' at the same time" ++msgstr "동시에 모듈 '{}'에서 더 많은 스트림을 활성화 할 수 없습니다" ++ ++#: dnf/module/exceptions.py:52 ++msgid "Different stream enabled for module: {}" ++msgstr "모듈에 대해 활성화된 다른 스트림: {}" ++ ++#: dnf/module/exceptions.py:58 ++msgid "No such profile: {}" ++msgstr "그런 프로파일이 없습니다: {}" ++ ++#: dnf/module/exceptions.py:64 ++msgid "Specified profile not installed for {}" ++msgstr "{}를 위한 지정된 프로필이 설치되지 않았습니다" ++ ++#: dnf/module/exceptions.py:70 ++msgid "No stream specified for '{}', please specify stream" ++msgstr "'{}'을 위한 지정된 스트림이 없으며, 스트림을 지정해주세요" ++ ++#: dnf/module/exceptions.py:82 ++msgid "No such profile: {}. No profiles available" ++msgstr "그런 프로파일이 없습니다: {}. 사용 가능한 프로파일이 없습니다" ++ ++#: dnf/module/exceptions.py:88 ++msgid "No profile to remove for '{}'" ++msgstr "제거되는 프로파일이 없습니다('{}'를 위해 )" ++ ++#: dnf/module/module_base.py:35 + msgid "" + "\n" + "\n" +@@ -3742,7 +3830,7 @@ msgstr "" + "\n" + "힌트 : [d] efault, [e] nabled, [x] disabled, [i] stalled" + +-#: dnf/module/module_base.py:34 ++#: dnf/module/module_base.py:36 + msgid "" + "\n" + "\n" +@@ -3752,80 +3840,99 @@ msgstr "" + "\n" + "힌트 : [d] efault, [e] nabled, [x] disabled, [i] stalled, [a] ctive" + +-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421 +-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543 ++#: dnf/module/module_base.py:56 dnf/module/module_base.py:556 ++#: dnf/module/module_base.py:615 dnf/module/module_base.py:681 + msgid "Ignoring unnecessary profile: '{}/{}'" + msgstr "불필요한 프로파일을 무시합니다: '{}/{}'" + +-#: dnf/module/module_base.py:84 ++#: dnf/module/module_base.py:86 + #, python-brace-format + msgid "All matches for argument '{0}' in module '{1}:{2}' are not active" +-msgstr "모듈 '{1}:{2}'의 인수 '{0}'에 대한 모든 일치 항목이 활성화되지 않았습니다" ++msgstr "" ++"모듈 '{1}:{2}'의 인수 '{0}'에 대한 모든 일치 항목이 활성화되지 않았습니다" + +-#: dnf/module/module_base.py:92 ++#: dnf/module/module_base.py:94 dnf/module/module_base.py:204 + #, python-brace-format + msgid "Installing module '{0}' from Fail-Safe repository {1} is not allowed" +-msgstr "Fail-Safe 리포지토리 {1}에서 모듈 '{0}’을/를 설치할 수 없습니다" ++msgstr "실패 방지 저장소 {1}에서 모듈 '{0}’를 설치 할 수 없습니다" + +-#: dnf/module/module_base.py:102 ++#: dnf/module/module_base.py:104 dnf/module/module_base.py:214 + msgid "" + "Unable to match profile for argument {}. Available profiles for '{}:{}': {}" +-msgstr "인수 {}의 프로파일을 찾을 수 없습니다. '{}:{}'에 사용 가능한 프로파일: {}" ++msgstr "" ++"인수 {}의 프로파일을 찾을 수 없습니다. '{}:{}': {} 에 사용 가능한 프로파일" + +-#: dnf/module/module_base.py:106 ++#: dnf/module/module_base.py:108 dnf/module/module_base.py:218 + msgid "Unable to match profile for argument {}" + msgstr "인수 {}의 프로파일을 찾을 수 없습니다" + +-#: dnf/module/module_base.py:118 ++#: dnf/module/module_base.py:120 + msgid "No default profiles for module {}:{}. Available profiles: {}" + msgstr "{} : {} 모듈에 대한 기본 프로파일이 없습니다. 사용 가능한 프로파일: {}" + +-#: dnf/module/module_base.py:122 ++#: dnf/module/module_base.py:124 + msgid "No profiles for module {}:{}" + msgstr "{} : {} 모듈에 대한 프로파일이 없습니다" + +-#: dnf/module/module_base.py:129 ++#: dnf/module/module_base.py:131 + msgid "Default profile {} not available in module {}:{}" + msgstr "{} 모듈에서 기본 프로필 {}을 (를) 사용할 수 없음 : {}" + +-#: dnf/module/module_base.py:142 ++#: dnf/module/module_base.py:144 dnf/module/module_base.py:247 + msgid "Installing module from Fail-Safe repository is not allowed" +-msgstr "Fail-Safe 리포지토리에서 모듈을 설치할 수 없습니다" ++msgstr "실패-방지 저장소에서 설치된 모듈은 허용하지 않습니다" + +-#: dnf/module/module_base.py:159 dnf/module/module_base.py:193 +-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355 +-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417 +-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539 ++#: dnf/module/module_base.py:196 ++#, python-brace-format ++msgid "No active matches for argument '{0}' in module '{1}:{2}'" ++msgstr "모듈 '{1}:{2}'의 인수 '{0}'에 대한 일치 항목 없음" ++ ++#: dnf/module/module_base.py:228 ++#, python-brace-format ++msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'" ++msgstr "설치 프로파일'{0}'은 모듈 '{1} 스트림 '{2}'에서 사용 할 수 없습니다" ++ ++#: dnf/module/module_base.py:267 ++msgid "No packages available to distrosync for package name '{}'" ++msgstr "꾸러미 이름 '{}'를 위하여 배포판에서 사용 할 수 있는 꾸러미가 없습니다" ++ ++#: dnf/module/module_base.py:310 dnf/module/module_base.py:461 ++#: dnf/module/module_base.py:486 dnf/module/module_base.py:505 ++#: dnf/module/module_base.py:552 dnf/module/module_base.py:611 ++#: dnf/module/module_base.py:677 dnf/module/module_base.py:840 + msgid "Unable to resolve argument {}" + msgstr "인수 {}을 (를) 구문 분석할 수 없습니다" + +-#: dnf/module/module_base.py:160 +-msgid "No match for package {}" +-msgstr "{} 패키지와 일치하지 않습니다" +- +-#: dnf/module/module_base.py:204 ++#: dnf/module/module_base.py:321 + #, python-brace-format + msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed" +-msgstr "Fail-Safe 리포지토리 {1}에서 모듈 '{0}’을/를 업그레이드할 수 없습니다" ++msgstr "실패방지 저장소 {1}에서 모듈 '{0}’를 향상 할 수 없습니다" + +-#: dnf/module/module_base.py:223 dnf/module/module_base.py:251 ++#: dnf/module/module_base.py:340 dnf/module/module_base.py:368 + msgid "Unable to match profile in argument {}" + msgstr "인수 {}에서 프로파일이 일치하지 않습니다" + +-#: dnf/module/module_base.py:231 ++#: dnf/module/module_base.py:348 + msgid "Upgrading module from Fail-Safe repository is not allowed" +-msgstr "Fail-Safe 리포지토리에서 모듈을 업그레이드할 수 없습니다" ++msgstr "실패-방지 저장소에서 모듈을 향상 할 수 없습니다" ++ ++#: dnf/module/module_base.py:422 ++#, python-brace-format ++msgid "" ++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module " ++"'{module}', but none of the streams are enabled or default" ++msgstr "" ++"인수 '{argument}'는 {stream_count} 스트림 ('{streams}')과 일치합니다 (모듈의 " ++"'{module}'), 하지만 활성화 되었거나 지정된 스트림이 없습니다" + +-#: dnf/module/module_base.py:367 ++#: dnf/module/module_base.py:509 + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'{}'" ++"Only module name is required. Ignoring unneeded information in argument: '{}'" + msgstr "모듈 이름만 필요합니다. '{}'인수에서 불필요한 정보를 무시합니다" + +-#: dnf/package.py:298 +-#, python-format +-msgid "%s: %s check failed: %s vs %s" +-msgstr "%s: %s 확인 실패 : %s 대 %s" ++#: dnf/module/module_base.py:841 ++msgid "No match for package {}" ++msgstr "{} 꾸러미와 일치하지 않습니다" + + #. empty file is invalid json format + #: dnf/persistor.py:54 +@@ -3836,12 +3943,12 @@ msgstr "%s는 빈 파일입니다" + #: dnf/persistor.py:91 + #, python-format + msgid "Failed to load expired repos cache: %s" +-msgstr "" ++msgstr "만료된 저장소 cache:%s 를 적재하는데 실패하였습니다" + + #: dnf/persistor.py:99 + #, python-format + msgid "Failed to store expired repos cache: %s" +-msgstr "" ++msgstr "만료된 저장소 캐쉬: %s 저장하는데 실패하였습니다" + + #: dnf/persistor.py:106 + msgid "Failed storing last makecache time." +@@ -3861,30 +3968,30 @@ msgstr "구문 분석에 실패했습니다. %s" + msgid "Loaded plugins: %s" + msgstr "로드된 플러그인 : %s" + +-#: dnf/plugin.py:199 ++#: dnf/plugin.py:211 + #, python-format + msgid "Failed loading plugin \"%s\": %s" +-msgstr "플러그인 \"%s\"을/를 불러오지 못했습니다: %s" ++msgstr "플러그인 \"%s\"를 불러오지 못했습니다: %s" + +-#: dnf/plugin.py:231 ++#: dnf/plugin.py:243 + msgid "No matches found for the following enable plugin patterns: {}" + msgstr "다음의 활성 플러그인 패턴과 일치하는 항목이 없습니다: {}" + +-#: dnf/plugin.py:235 ++#: dnf/plugin.py:247 + msgid "No matches found for the following disable plugin patterns: {}" + msgstr "다음의 비활성화 플러그인 패턴과 일치하는 항목이 없습니다: {}" + + #: dnf/repo.py:84 + #, python-format + msgid "no matching payload factory for %s" +-msgstr "%s와 일치하는 payload factory가 없습니다." ++msgstr "%s와 일치하는 payload factory가 없습니다" + + #: dnf/repo.py:111 + msgid "Already downloaded" +-msgstr "이미 다운로드 됨" ++msgstr "이미 내려받음" + + #. pinging mirrors, this might take a while +-#: dnf/repo.py:347 ++#: dnf/repo.py:346 + #, python-format + msgid "determining the fastest mirror (%s hosts).. " + msgstr "가장 빠른 미러 지정 (%s 호스트).. " +@@ -3899,15 +4006,32 @@ msgstr "%s 리포지토리 활성화" + msgid "Added %s repo from %s" + msgstr "%s 에서 %s repo를 추가했습니다" + ++#: dnf/rpm/miscutils.py:32 ++#, python-format ++msgid "Using rpmkeys executable at %s to verify signatures" ++msgstr "%s에 실행 할 수 있는 rpmkey를 사용하여 서명을 확인합니다" ++ ++#: dnf/rpm/miscutils.py:66 ++msgid "Cannot find rpmkeys executable to verify signatures." ++msgstr "서명을 확인하기 위해 실행 할 수 있는 rpmkeys를 찾을 수 없습니다." ++ + #: dnf/rpm/transaction.py:119 + msgid "Errors occurred during test transaction." +-msgstr "트랜잭션 테스트 중에 오류가 발생했습니다." ++msgstr "연결 시험 중에 오류가 발생했습니다." ++ ++#: dnf/sack.py:47 ++msgid "" ++"allow_vendor_change is disabled. This option is currently not supported for " ++"downgrade and distro-sync commands" ++msgstr "" ++"허용_공급업체_변화는 사용 할 수 없습니다. 이 선택은 현재 다운드레이드와 " ++"distro-sync 명령을 지원하지 않습니다" + + #. TRANSLATORS: This is for a single package currently being downgraded. + #: dnf/transaction.py:80 + msgctxt "currently" + msgid "Downgrading" +-msgstr "다운그레이드 중" ++msgstr "하향 설치 중" + + #: dnf/transaction.py:81 dnf/transaction.py:88 dnf/transaction.py:93 + #: dnf/transaction.py:95 +@@ -3935,7 +4059,7 @@ msgstr "삭제 중" + #: dnf/transaction.py:92 + msgctxt "currently" + msgid "Upgrading" +-msgstr "업그레이드 중" ++msgstr "향상 중" + + #: dnf/transaction.py:96 + msgid "Verifying" +@@ -3943,168 +4067,223 @@ msgstr "확인 중" + + #: dnf/transaction.py:97 + msgid "Running scriptlet" +-msgstr "scriptlet 실행 중" ++msgstr "스크립트릿 실행 중" + + #: dnf/transaction.py:99 + msgid "Preparing" + msgstr "준비 중" + +-#: dnf/transaction_sr.py:60 ++#: dnf/transaction_sr.py:66 + #, python-brace-format +-msgid "Errors in \"{filename}\":" +-msgstr "" ++msgid "" ++"The following problems occurred while replaying the transaction from file " ++"\"{filename}\":" ++msgstr "다음 문제는 파일에서 연결 응답 할 때에 발생합니다 \"{filename}\":" + +-#: dnf/transaction_sr.py:70 +-#, python-brace-format +-msgid "Error in \"{filename}\": {error}" +-msgstr "" ++#: dnf/transaction_sr.py:68 ++msgid "The following problems occurred while running a transaction:" ++msgstr "연결 중에 오류가 발생했습니다:" + +-#: dnf/transaction_sr.py:87 ++#: dnf/transaction_sr.py:89 + #, python-brace-format + msgid "Invalid major version \"{major}\", number expected." +-msgstr "" ++msgstr "잘못된 주요 버전 \"{major}\", 번호가 예상됩니다." + +-#: dnf/transaction_sr.py:95 ++#: dnf/transaction_sr.py:97 + #, python-brace-format + msgid "Invalid minor version \"{minor}\", number expected." +-msgstr "" ++msgstr "잘못된 하위 버전 \"{minor}\", 번호가 예상됩니다." + +-#: dnf/transaction_sr.py:101 ++#: dnf/transaction_sr.py:103 + #, python-brace-format + msgid "" + "Incompatible major version \"{major}\", supported major version is " + "\"{major_supp}\"." + msgstr "" ++"호환되지 않는 주요 버전 \"{major}\", 지원되는 주요 버전 \"{major_supp}\"." + +-#: dnf/transaction_sr.py:244 ++#: dnf/transaction_sr.py:224 ++msgid "" ++"Conflicting TransactionReplay arguments have been specified: filename, data" ++msgstr "연결 지연 인수의 충돌은 명시됩니다: 파일이름, 자료" ++ ++#: dnf/transaction_sr.py:265 + #, python-brace-format + msgid "Unexpected type of \"{id}\", {exp} expected." +-msgstr "" ++msgstr "예상치 못한 유형 \"{id}\", {exp} 가 예상된다." + +-#: dnf/transaction_sr.py:250 ++#: dnf/transaction_sr.py:271 + #, python-brace-format + msgid "Missing key \"{key}\"." +-msgstr "" ++msgstr "누락된 키 \"{key}\"." + +-#: dnf/transaction_sr.py:263 ++#: dnf/transaction_sr.py:285 + #, python-brace-format + msgid "Missing object key \"{key}\" in an rpm." +-msgstr "" ++msgstr "rpm안에 누락된 객체 키 \"{key}\"." + +-#: dnf/transaction_sr.py:267 ++#: dnf/transaction_sr.py:289 + #, python-brace-format +-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." ++msgid "" ++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." + msgstr "" ++"rpm nevra \"{nevra}\"를 위한 예상되지 않은 꾸러미 이유\"{reason}\" 의 값." + +-#: dnf/transaction_sr.py:275 ++#: dnf/transaction_sr.py:297 + #, python-brace-format + msgid "Cannot parse NEVRA for package \"{nevra}\"." +-msgstr "" ++msgstr "꾸러미 \"{nevra}\"를 위해 NEVRA를 구문 분석 할 수 없습니다." + +-#: dnf/transaction_sr.py:286 ++#: dnf/transaction_sr.py:321 + #, python-brace-format + msgid "Cannot find rpm nevra \"{nevra}\"." +-msgstr "" ++msgstr "rpm nevra \"{nevra}\"를 찾을 수 없습니다." + +-#: dnf/transaction_sr.py:301 ++#: dnf/transaction_sr.py:336 + #, python-brace-format + msgid "Package \"{na}\" is already installed for action \"{action}\"." +-msgstr "" ++msgstr "꾸러미 \"{na}\"는 활동 \"{action}\"를 위해 이미 설치되어 있습니다." + +-#: dnf/transaction_sr.py:311 ++#: dnf/transaction_sr.py:345 + #, python-brace-format + msgid "" + "Package nevra \"{nevra}\" not available in repositories for action " + "\"{action}\"." + msgstr "" ++"꾸러미 nervra \"{nevra}\"는 실행 \"{action}\"을 위한 저장소에서 사용 할 수 없" ++"음." + +-#: dnf/transaction_sr.py:322 ++#: dnf/transaction_sr.py:356 + #, python-brace-format + msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"." +-msgstr "" ++msgstr "꾸러미 nevra\"{nevra}\"는 활동 \"{action}\"을 위해 설치되지 않음." + +-#: dnf/transaction_sr.py:336 ++#: dnf/transaction_sr.py:370 + #, python-brace-format +-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." ++msgid "" ++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." + msgstr "" ++"rpm nevra \"{nevra}\"를 위해 기대하지 않는 꾸러미 활동 \"{action}\"의 값." + +-#: dnf/transaction_sr.py:343 +-#, fuzzy, python-format +-#| msgid "Group_id '%s' does not exist." ++#: dnf/transaction_sr.py:377 ++#, python-format + msgid "Group id '%s' is not available." +-msgstr "Group_id '%s' 존재하지 않는다." ++msgstr "Group_id '%s'는 사용 할 수 없습니다." + +-#: dnf/transaction_sr.py:364 ++#: dnf/transaction_sr.py:398 + #, python-brace-format + msgid "Missing object key \"{key}\" in groups.packages." +-msgstr "" ++msgstr "group.packages에 있는 객체 키 \"{key}\" 누락." + +-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not installed." ++#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421 ++#, python-format + msgid "Group id '%s' is not installed." +-msgstr "환경 '%s'이 설치되지 않았습니다." ++msgstr "그룹 '%s'는 설치되어 있지 않습니다." + +-#: dnf/transaction_sr.py:398 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not installed." ++#: dnf/transaction_sr.py:432 ++#, python-format + msgid "Environment id '%s' is not available." +-msgstr "환경 '%s'이 설치되지 않았습니다." ++msgstr "환경 id '%s'는 사용 할 수 없습니다." + +-#: dnf/transaction_sr.py:422 ++#: dnf/transaction_sr.py:456 + #, python-brace-format + msgid "" + "Invalid value \"{group_type}\" of environments.groups.group_type, only " + "\"mandatory\" or \"optional\" is supported." + msgstr "" ++"잘못된 environments.groups.group_type의 값 \"{group_type}\", \"필 수\" 또는 " ++"\"선택\"만 지원합니다." + +-#: dnf/transaction_sr.py:430 ++#: dnf/transaction_sr.py:464 + #, python-brace-format + msgid "Missing object key \"{key}\" in environments.groups." +-msgstr "" ++msgstr "환경 그룹에서 누락된 객체 키 \"{key}\"." + +-#: dnf/transaction_sr.py:508 ++#: dnf/transaction_sr.py:542 + #, python-brace-format + msgid "Unexpected value of group action \"{action}\" for group \"{group}\"." +-msgstr "" ++msgstr "그룹 \"{group}\"을 위해 예상치 못한 그룹 활동 \"{action}\"의 값." + +-#: dnf/transaction_sr.py:513 ++#: dnf/transaction_sr.py:547 + #, python-brace-format + msgid "Missing object key \"{key}\" in a group." +-msgstr "" ++msgstr "그룹 안에 누락된 객체 키 \"{key}\"." + +-#: dnf/transaction_sr.py:537 ++#: dnf/transaction_sr.py:571 + #, python-brace-format +-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"." +-msgstr "" ++msgid "" ++"Unexpected value of environment action \"{action}\" for environment " ++"\"{env}\"." ++msgstr "환경 \"{env}\"를 위해 예상하지 못한 환경 활동 \"{action}\"의 값." + +-#: dnf/transaction_sr.py:542 ++#: dnf/transaction_sr.py:576 + #, python-brace-format + msgid "Missing object key \"{key}\" in an environment." +-msgstr "" ++msgstr "환경에 누락된 객체 키 \"{key}\"." + +-#: dnf/transaction_sr.py:581 ++#: dnf/transaction_sr.py:615 + #, python-brace-format + msgid "" +-"Package nevra \"{nevra}\", which is not present in the transaction file, was" +-" pulled into the transaction." ++"Package nevra \"{nevra}\", which is not present in the transaction file, was " ++"pulled into the transaction." + msgstr "" ++"꾸러미 nevra \"{nevra}\", 연겨 파일에 존재하지 않는 것은 연결로 가져왔습니다." + +-#: dnf/util.py:391 dnf/util.py:393 ++#: dnf/util.py:419 dnf/util.py:421 + msgid "Problem" + msgstr "문제" + +-#: dnf/util.py:444 ++#: dnf/util.py:472 + msgid "TransactionItem not found for key: {}" + msgstr "{} 키에 대한 TransactionItem을 찾을 수 없습니다" + +-#: dnf/util.py:454 ++#: dnf/util.py:482 + msgid "TransactionSWDBItem not found for key: {}" + msgstr "{} 키에 대한 TransactionSWDBItem을 찾을 수 없습니다" + +-#: dnf/util.py:457 ++#: dnf/util.py:485 + msgid "Errors occurred during transaction." +-msgstr "트랜잭션 중에 오류가 발생했습니다." ++msgstr "연결 중에 오류가 발생했습니다." ++ ++#: dnf/util.py:621 ++msgid "Reinstalled" ++msgstr "다시 설치되었습니다" ++ ++#: dnf/util.py:622 ++msgid "Skipped" ++msgstr "건너 뛰기됨" ++ ++#: dnf/util.py:623 ++msgid "Removed" ++msgstr "제거되었습니다" ++ ++#: dnf/util.py:626 ++msgid "Failed" ++msgstr "실패하였습니다" ++ ++#~ msgid "skipping." ++#~ msgstr "건너 뛰기." ++ ++#~ msgid "" ++#~ "Using rpmkeys executable from {path} to verify signature for package: " ++#~ "{package}." ++#~ msgstr "" ++#~ "{path}에서 실행 할 수 있는 rpmkeys를 사용하여 꾸러미 서명 확인: {package}." ++ ++#~ msgid "%s: %s check failed: %s vs %s" ++#~ msgstr "%s: %s 확인 실패 : %s 대 %s" ++ ++#~ msgid "Action not handled: {}" ++#~ msgstr "작업이 처리되지 않았습니다: {}" ++ ++#~ msgid "no package matched" ++#~ msgstr "일치하는 패키지가 없습니다." ++ ++#~ msgid "Not found given transaction ID" ++#~ msgstr "주어진 트랜잭션 ID를 찾을 수 없습니다" ++ ++#~ msgid "Undoing transaction {}, from {}" ++#~ msgstr "{}에서 {} 트랜잭션 실행을 취소하고 있습니다" + + #~ msgid "format for displaying found packages" + #~ msgstr "발견 된 패키지를 표시하기위한 형식" +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 7ede4ed8..af6396c3 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -13,33 +13,37 @@ + # Qi Fan , 2016. #zanata + # Tommy He , 2016. #zanata + # mosquito , 2016. #zanata +-# Charles Lee , 2017. #zanata, 2020. ++# Charles Lee , 2017. #zanata, 2020, 2021. + # Pany , 2017. #zanata + # cheng ye <18969068329@163.com>, 2017. #zanata + # lexuge , 2017. #zanata + # n0vad3v , 2017. #zanata + # zhouxiaobo , 2017. #zanata +-# Ludek Janda , 2018. #zanata ++# Ludek Janda , 2018. #zanata, 2021. + # Pany , 2018. #zanata + # Qiyu Yan , 2018. #zanata + # Qiyu Yan , 2019. #zanata + # Anonymous , 2020. + # Hongqiao Chen , 2020. + # Harry Chen , 2020. ++# Sundeep Anand , 2021. ++# weidong , 2021. ++# Transtats , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-08-02 08:29+0000\n" +-"Last-Translator: Charles Lee \n" +-"Language-Team: Chinese (Simplified) \n" ++"POT-Creation-Date: 2022-02-28 11:24+0100\n" ++"PO-Revision-Date: 2022-03-09 12:39+0000\n" ++"Last-Translator: Transtats \n" ++"Language-Team: Chinese (Simplified) \n" + "Language: zh_CN\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.1.1\n" ++"X-Generator: Weblate 4.11.2\n" + + #: dnf/automatic/emitter.py:32 + #, python-format +@@ -86,7 +90,7 @@ msgstr "使用 '%s' 发送邮件失败: %s" + msgid "Failed to execute command '%s': returned %d" + msgstr "无法执行命令 '%s' :返回 %d" + +-#: dnf/automatic/main.py:164 dnf/conf/config.py:151 ++#: dnf/automatic/main.py:164 + #, python-format + msgid "Unknown configuration value: %s=%s in %s; %s" + msgstr "未知配置值: %s=%s 在 %s 中; %s" +@@ -96,7 +100,7 @@ msgstr "未知配置值: %s=%s 在 %s 中; %s" + msgid "Unknown configuration option: %s = %s in %s" + msgstr "未知配置选项:%s = %s 在 %s 中" + +-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299 ++#: dnf/automatic/main.py:237 dnf/cli/cli.py:305 + msgid "GPG check FAILED" + msgstr "GPG 检查失败" + +@@ -109,9 +113,9 @@ msgid "Started dnf-automatic." + msgstr "启动的 dnf-automatic。" + + #: dnf/automatic/main.py:308 +-#, python-format +-msgid "Sleep for %s seconds" +-msgstr "休眠 %s 秒" ++msgid "Sleep for {} second" ++msgid_plural "Sleep for {} seconds" ++msgstr[0] "休眠 {} 秒" + + #: dnf/automatic/main.py:315 + msgid "System is off-line." +@@ -123,439 +127,426 @@ msgstr "系统离线。" + msgid "Error: %s" + msgstr "错误:%s" + +-#: dnf/base.py:146 ++#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479 + msgid "loading repo '{}' failure: {}" + msgstr "加载仓库 '{}' 失败:{}" + +-#: dnf/base.py:148 ++#: dnf/base.py:150 + msgid "Loading repository '{}' has failed" + msgstr "加载仓库 '{}' 失败" + +-#: dnf/base.py:320 ++#: dnf/base.py:327 + msgid "Metadata timer caching disabled when running on metered connection." + msgstr "在使用按流量计费的连接时禁用元数据计时缓存。" + +-#: dnf/base.py:325 ++#: dnf/base.py:332 + msgid "Metadata timer caching disabled when running on a battery." + msgstr "在使用电池时禁用元数据计时缓存。" + +-#: dnf/base.py:330 ++#: dnf/base.py:337 + msgid "Metadata timer caching disabled." + msgstr "元数据计时缓存已禁用。" + +-#: dnf/base.py:335 ++#: dnf/base.py:342 + msgid "Metadata cache refreshed recently." + msgstr "元数据缓存近期已刷新。" + +-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91 ++#: dnf/base.py:348 dnf/cli/commands/__init__.py:91 + msgid "There are no enabled repositories in \"{}\"." + msgstr "在\"{}\"中没有被启用的仓库。" + +-#: dnf/base.py:348 ++#: dnf/base.py:355 + #, python-format + msgid "%s: will never be expired and will not be refreshed." + msgstr "%s: 永远不过期并不会被刷新。" + +-#: dnf/base.py:350 ++#: dnf/base.py:357 + #, python-format + msgid "%s: has expired and will be refreshed." + msgstr "%s: 已过期并不会被刷新。" + + #. expires within the checking period: +-#: dnf/base.py:354 ++#: dnf/base.py:361 + #, python-format + msgid "%s: metadata will expire after %d seconds and will be refreshed now" + msgstr "%s: 元数据将在 %d 秒后过期,现在将会被刷新" + +-#: dnf/base.py:358 ++#: dnf/base.py:365 + #, python-format + msgid "%s: will expire after %d seconds." + msgstr "%s: 将会在 %d 秒后过期。" + + #. performs the md sync +-#: dnf/base.py:364 ++#: dnf/base.py:371 + msgid "Metadata cache created." + msgstr "元数据缓存已建立。" + +-#: dnf/base.py:397 ++#: dnf/base.py:404 dnf/base.py:471 + #, python-format + msgid "%s: using metadata from %s." + msgstr "%s:正在使用截止于 %s 的元数据。" + +-#: dnf/base.py:409 ++#: dnf/base.py:416 dnf/base.py:484 + #, python-format + msgid "Ignoring repositories: %s" + msgstr "正在忽略仓库:%s" + +-#: dnf/base.py:412 ++#: dnf/base.py:419 + #, python-format + msgid "Last metadata expiration check: %s ago on %s." + msgstr "上次元数据过期检查:%s 前,执行于 %s。" + +-#: dnf/base.py:443 ++#: dnf/base.py:512 + msgid "" + "The downloaded packages were saved in cache until the next successful " + "transaction." + msgstr "下载的软件包保存在缓存中,直到下次成功执行事务。" + +-#: dnf/base.py:445 ++#: dnf/base.py:514 + #, python-format + msgid "You can remove cached packages by executing '%s'." + msgstr "您可以通过执行 '%s' 删除软件包缓存。" + +-#: dnf/base.py:535 ++#: dnf/base.py:606 + #, python-format + msgid "Invalid tsflag in config file: %s" + msgstr "配置文件 %s 中使用 tsflag 是错误的" + +-#: dnf/base.py:591 ++#: dnf/base.py:662 + #, python-format + msgid "Failed to add groups file for repository: %s - %s" + msgstr "为仓库 %s 添加组文件时失败:%s" + +-#: dnf/base.py:823 ++#: dnf/base.py:904 + msgid "Running transaction check" + msgstr "运行事务检查" + +-#: dnf/base.py:831 ++#: dnf/base.py:912 + msgid "Error: transaction check vs depsolve:" + msgstr "错误:事务检查与依赖解决错误:" + +-#: dnf/base.py:837 ++#: dnf/base.py:918 + msgid "Transaction check succeeded." + msgstr "事务检查成功。" + +-#: dnf/base.py:840 ++#: dnf/base.py:921 + msgid "Running transaction test" + msgstr "运行事务测试" + +-#: dnf/base.py:850 dnf/base.py:992 ++#: dnf/base.py:931 dnf/base.py:1082 + msgid "RPM: {}" + msgstr "RPM软件包: {}" + +-#: dnf/base.py:851 ++#: dnf/base.py:932 + msgid "Transaction test error:" + msgstr "事物测试失败:" + +-#: dnf/base.py:862 ++#: dnf/base.py:943 + msgid "Transaction test succeeded." + msgstr "事务测试成功。" + +-#: dnf/base.py:883 ++#: dnf/base.py:964 + msgid "Running transaction" + msgstr "运行事务" + +-#: dnf/base.py:911 ++#: dnf/base.py:1001 + msgid "Disk Requirements:" + msgstr "磁盘需求:" + +-#: dnf/base.py:914 ++#: dnf/base.py:1004 + #, python-brace-format + msgid "At least {0}MB more space needed on the {1} filesystem." + msgid_plural "At least {0}MB more space needed on the {1} filesystem." +-msgstr[0] "在文件系统{1}上至少需要{0}MB的可用空间。" ++msgstr[0] "在 {1} 文件系统上至少需要 {0}MB 的空间。" + +-#: dnf/base.py:921 ++#: dnf/base.py:1011 + msgid "Error Summary" + msgstr "错误汇总" + +-#: dnf/base.py:947 ++#: dnf/base.py:1037 + #, python-brace-format + msgid "RPMDB altered outside of {prog}." + msgstr "RPMDB 在 {prog} 外被改动了。" + +-#: dnf/base.py:993 dnf/base.py:1001 ++#: dnf/base.py:1083 dnf/base.py:1091 + msgid "Could not run transaction." + msgstr "不能执行事务。" + +-#: dnf/base.py:996 ++#: dnf/base.py:1086 + msgid "Transaction couldn't start:" + msgstr "事务无法启动:" + +-#: dnf/base.py:1010 ++#: dnf/base.py:1100 + #, python-format + msgid "Failed to remove transaction file %s" + msgstr "移除事务文件 %s 失败" + +-#: dnf/base.py:1092 ++#: dnf/base.py:1182 + msgid "Some packages were not downloaded. Retrying." + msgstr "某些软件包没有被下载。正在重试。" + +-#: dnf/base.py:1122 ++#: dnf/base.py:1212 + #, python-format + msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)" + msgstr "增量 RPM 将 %.1f MB 的更新减少至 %.1f MB(已节省 %d.1%% )" + +-#: dnf/base.py:1125 ++#: dnf/base.py:1215 + #, python-format + msgid "" + "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)" + msgstr "增量 RPM 未能将 %.1f MB 的更新减少至 %.1f MB(已浪费 %d.1%% )" + +-#: dnf/base.py:1167 ++#: dnf/base.py:1257 + msgid "Cannot add local packages, because transaction job already exists" + msgstr "由于事物已经存在,无法添加本地软件包" + +-#: dnf/base.py:1181 ++#: dnf/base.py:1271 + msgid "Could not open: {}" + msgstr "无法打开: {}" + +-#: dnf/base.py:1219 ++#: dnf/base.py:1309 + #, python-format + msgid "Public key for %s is not installed" + msgstr "%s 的公钥没有安装" + +-#: dnf/base.py:1223 ++#: dnf/base.py:1313 + #, python-format + msgid "Problem opening package %s" + msgstr "打开软件包 %s 出现问题" + +-#: dnf/base.py:1231 ++#: dnf/base.py:1321 + #, python-format + msgid "Public key for %s is not trusted" + msgstr "%s 的公钥不可信任" + +-#: dnf/base.py:1235 ++#: dnf/base.py:1325 + #, python-format + msgid "Package %s is not signed" + msgstr "软件包 %s 没有签名" + +-#: dnf/base.py:1265 ++#: dnf/base.py:1355 + #, python-format + msgid "Cannot remove %s" + msgstr "无法删除 %s" + +-#: dnf/base.py:1269 ++#: dnf/base.py:1359 + #, python-format + msgid "%s removed" + msgstr "%s 已删除" + +-#: dnf/base.py:1549 ++#: dnf/base.py:1639 + msgid "No match for group package \"{}\"" + msgstr "没有和组 \"{}\" 匹配的" + +-#: dnf/base.py:1635 ++#: dnf/base.py:1721 + #, python-format + msgid "Adding packages from group '%s': %s" + msgstr "从组 '%s': %s 添加软件包" + +-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442 +-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592 +-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80 ++#: dnf/base.py:1744 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437 ++#: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587 ++#: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80 + #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110 + msgid "Nothing to do." + msgstr "无需任何处理。" + +-#: dnf/base.py:1676 ++#: dnf/base.py:1762 + msgid "No groups marked for removal." + msgstr "没有软件包组需要移除。" + +-#: dnf/base.py:1710 ++#: dnf/base.py:1796 + msgid "No group marked for upgrade." + msgstr "没有标记为要升级的组。" + +-#: dnf/base.py:1925 ++#: dnf/base.py:2010 + #, python-format + msgid "Package %s not installed, cannot downgrade it." + msgstr "软件包 %s 并没有能够安装,无法进行降级操作。" + +-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980 +-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411 +-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482 +-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633 +-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147 ++#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071 ++#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 dnf/cli/cli.py:417 ++#: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477 ++#: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628 ++#: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147 + #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84 +-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121 ++#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116 + #, python-format + msgid "No match for argument: %s" + msgstr "未找到匹配的参数: %s" + +-#: dnf/base.py:1934 ++#: dnf/base.py:2019 + #, python-format + msgid "Package %s of lower version already installed, cannot downgrade it." + msgstr "软件包 %s 的低版本已经安装,无法进行降级。" + +-#: dnf/base.py:1957 ++#: dnf/base.py:2042 + #, python-format + msgid "Package %s not installed, cannot reinstall it." + msgstr "软件包 %s 未能够安装成功,无法进行重新安装。" + +-#: dnf/base.py:1972 ++#: dnf/base.py:2057 + #, python-format + msgid "File %s is a source package and cannot be updated, ignoring." + msgstr "%s 文件无法被升级,已忽略。" + +-#: dnf/base.py:1978 ++#: dnf/base.py:2068 + #, python-format + msgid "Package %s not installed, cannot update it." + msgstr "软件包 %s 未安装,无法更新。" + +-#: dnf/base.py:1987 ++#: dnf/base.py:2078 + #, python-format + msgid "" + "The same or higher version of %s is already installed, cannot update it." + msgstr "已经安装了软件包%s的相同或更高版本,无法更新。" + +-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81 ++#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81 + #, python-format + msgid "Package %s available, but not installed." + msgstr "软件包 %s 可用,但没有被安装。" + +-#: dnf/base.py:2032 ++#: dnf/base.py:2127 + #, python-format + msgid "Package %s available, but installed for different architecture." + msgstr "软件包 %s 可用,当是为其它架构安装。" + +-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699 ++#: dnf/base.py:2152 + #, python-format + msgid "No package %s installed." + msgstr "没有软件包 %s 安装。" + +-#: dnf/base.py:2075 dnf/cli/commands/install.py:136 ++#: dnf/base.py:2170 dnf/cli/commands/install.py:136 + #: dnf/cli/commands/remove.py:133 + #, python-format + msgid "Not a valid form: %s" + msgstr "无效: %s" + +-#: dnf/base.py:2091 dnf/cli/commands/__init__.py:681 +-#: dnf/cli/commands/remove.py:163 ++#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676 ++#: dnf/cli/commands/remove.py:162 + msgid "No packages marked for removal." + msgstr "没有软件包需要移除。" + +-#: dnf/base.py:2179 dnf/cli/cli.py:422 ++#: dnf/base.py:2273 dnf/cli/cli.py:428 + #, python-format + msgid "Packages for argument %s available, but not installed." + msgstr "针对于参数 %s 的软件包可用, 但是目前没有安装。" + +-#: dnf/base.py:2184 ++#: dnf/base.py:2278 + #, python-format + msgid "Package %s of lowest version already installed, cannot downgrade it." + msgstr "软件包 %s 的最低版本已经安装,无法再进行降级。" + +-#: dnf/base.py:2242 +-msgid "Action not handled: {}" +-msgstr "操作没被处理:{}" +- +-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703 +-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169 +-#, python-format +-msgid "No package %s available." +-msgstr "没有可用的软件包 %s。" +- +-#: dnf/base.py:2269 +-msgid "no package matched" +-msgstr "没有能够与之匹配的软件包" +- +-#: dnf/base.py:2290 ++#: dnf/base.py:2378 + msgid "No security updates needed, but {} update available" + msgstr "没有必须的安全更新, 但是 {} 的更新可用" + +-#: dnf/base.py:2292 ++#: dnf/base.py:2380 + msgid "No security updates needed, but {} updates available" + msgstr "没有必须的安全更新, 但是 {} 的更新可用" + +-#: dnf/base.py:2296 ++#: dnf/base.py:2384 + msgid "No security updates needed for \"{}\", but {} update available" + msgstr "没有针对于\"{}\" 所必须的安全更新, 但是 {} 的更新可用" + +-#: dnf/base.py:2298 ++#: dnf/base.py:2386 + msgid "No security updates needed for \"{}\", but {} updates available" + msgstr "没有针对于\"{}\" 所必须的安全更新, 但是 {} 的更新可用" + + #. raise an exception, because po.repoid is not in self.repos +-#: dnf/base.py:2319 ++#: dnf/base.py:2407 + #, python-format + msgid "Unable to retrieve a key for a commandline package: %s" +-msgstr "" ++msgstr "无法获取来自命令行的软件包的密钥:%s" + +-#: dnf/base.py:2327 ++#: dnf/base.py:2415 + #, python-format + msgid ". Failing package is: %s" + msgstr ". 失败的软件包是:%s" + +-#: dnf/base.py:2328 ++#: dnf/base.py:2416 + #, python-format + msgid "GPG Keys are configured as: %s" + msgstr "GPG密钥配置为:%s" + +-#: dnf/base.py:2340 ++#: dnf/base.py:2428 + #, python-format + msgid "GPG key at %s (0x%s) is already installed" + msgstr "%s 的 GPG 公钥(0x%s)已安装" + +-#: dnf/base.py:2373 ++#: dnf/base.py:2464 + msgid "The key has been approved." + msgstr "密钥已被确认。" + +-#: dnf/base.py:2376 ++#: dnf/base.py:2467 + msgid "The key has been rejected." + msgstr "密钥已被拒绝。" + +-#: dnf/base.py:2409 ++#: dnf/base.py:2500 + #, python-format + msgid "Key import failed (code %d)" + msgstr "导入公钥失败(代码 %d)" + +-#: dnf/base.py:2411 ++#: dnf/base.py:2502 + msgid "Key imported successfully" + msgstr "导入公钥成功" + +-#: dnf/base.py:2415 ++#: dnf/base.py:2506 + msgid "Didn't install any keys" + msgstr "没有安装任何公钥" + +-#: dnf/base.py:2418 ++#: dnf/base.py:2509 + #, python-format + msgid "" +-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n" ++"The GPG keys listed for the \"%s\" repository are already installed but they " ++"are not correct for this package.\n" + "Check that the correct key URLs are configured for this repository." + msgstr "" + "仓库 \"%s\" 的 GPG 公钥已安装,但是不适用于此软件包。\n" + "请检查此仓库的公钥 URL 是否配置正确。" + +-#: dnf/base.py:2429 ++#: dnf/base.py:2520 + msgid "Import of key(s) didn't help, wrong key(s)?" + msgstr "导入的密钥没有公钥,错误的公钥?" + +-#: dnf/base.py:2482 ++#: dnf/base.py:2573 + msgid " * Maybe you meant: {}" + msgstr " * 可能您的意思是:{}" + +-#: dnf/base.py:2514 ++#: dnf/base.py:2605 + msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum" + msgstr "软件包 \"{}\"(来自于本地仓库 \"{}\")的 checksum 不正确" + +-#: dnf/base.py:2517 ++#: dnf/base.py:2608 + msgid "Some packages from local repository have incorrect checksum" + msgstr "本地仓库的一些软件包校验值(checksum)不正确,无法确定软件包完整" + +-#: dnf/base.py:2520 ++#: dnf/base.py:2611 + msgid "Package \"{}\" from repository \"{}\" has incorrect checksum" + msgstr "软件包 \"{}\"(来自仓库 \"{}\")的 checksum 不正确" + +-#: dnf/base.py:2523 ++#: dnf/base.py:2614 + msgid "" + "Some packages have invalid cache, but cannot be downloaded due to \"--" + "cacheonly\" option" + msgstr "以下软件包有无效缓存,因为使用了 \"--cacheonly\" 选项不能下载" + +-#: dnf/base.py:2541 dnf/base.py:2561 ++#: dnf/base.py:2632 dnf/base.py:2652 + msgid "No match for argument" + msgstr "未找到匹配的参数" + +-#: dnf/base.py:2549 dnf/base.py:2569 ++#: dnf/base.py:2640 dnf/base.py:2660 + msgid "All matches were filtered out by exclude filtering for argument" + msgstr "由于您的搜索参数,所有相关结果都已被滤掉" + +-#: dnf/base.py:2551 ++#: dnf/base.py:2642 + msgid "All matches were filtered out by modular filtering for argument" + msgstr "所有的匹配结果均已经被参数的模块化过滤条件筛除" + +-#: dnf/base.py:2567 ++#: dnf/base.py:2658 + msgid "All matches were installed from a different repository for argument" + msgstr "已从另一个仓库安装了参数的所有匹配" + +-#: dnf/base.py:2583 ++#: dnf/base.py:2705 + #, python-format + msgid "Package %s is already installed." + msgstr "软件包 %s 已安装。" +@@ -575,8 +566,8 @@ msgstr "解析文件 \"%s\" 失败:%s" + msgid "Cannot read file \"%s\": %s" + msgstr "无法读取文件 \"%s\": %s" + +-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902 +-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108 ++#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804 ++#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108 + #, python-format + msgid "Config error: %s" + msgstr "配置错误:%s" +@@ -607,44 +598,48 @@ msgid "" + "stream '{2}'" + msgstr "这个操作会把模块 '{0}' 从流 '{1}' 切换到流 '{2}'" + +-#: dnf/cli/cli.py:172 ++#: dnf/cli/cli.py:173 + #, python-brace-format + msgid "" +-"It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using '{prog} module reset ' command. After you reset the module, you can install the other stream." ++"It is not possible to switch enabled streams of a module unless explicitly " ++"enabled via configuration option module_stream_switch.\n" ++"It is recommended to rather remove all installed content from the module, " ++"and reset the module using '{prog} module reset ' command. " ++"After you reset the module, you can install the other stream." + msgstr "" +-"无法切换已启用模块的流。\n" +-"推荐移除来自模块的所有已安装内容,然后通过 '{prog} module reset ' 命令重置模块。在您重置模块之后,就可以安装其他的流。" ++"无法切换已启用模块的流,除非显式的通过配置选项 module_stream_switch 启用。\n" ++"推荐直接移除来自模块的所有已安装内容,然后通过 '{prog} module reset " ++"' 命令重置模块。在您重置模块之后,就可以安装其他的流。" + +-#: dnf/cli/cli.py:210 ++#: dnf/cli/cli.py:212 + #, python-brace-format + msgid "{prog} will only download packages for the transaction." + msgstr "{prog}将仅会从事务下载软件包。" + +-#: dnf/cli/cli.py:213 ++#: dnf/cli/cli.py:215 + #, python-brace-format + msgid "" + "{prog} will only download packages, install gpg keys, and check the " + "transaction." + msgstr "{prog}将仅会下载软件包,导入gpg密钥并检查事务。" + +-#: dnf/cli/cli.py:217 ++#: dnf/cli/cli.py:219 + msgid "Operation aborted." + msgstr "操作中止。" + +-#: dnf/cli/cli.py:224 ++#: dnf/cli/cli.py:226 + msgid "Downloading Packages:" + msgstr "下载软件包:" + +-#: dnf/cli/cli.py:230 ++#: dnf/cli/cli.py:232 + msgid "Error downloading packages:" + msgstr "下载软件包出错 :" + +-#: dnf/cli/cli.py:258 ++#: dnf/cli/cli.py:264 + msgid "Transaction failed" + msgstr "事务失败" + +-#: dnf/cli/cli.py:281 ++#: dnf/cli/cli.py:287 + msgid "" + "Refusing to automatically import keys when running unattended.\n" + "Use \"-y\" to override." +@@ -652,168 +647,150 @@ msgstr "" + "如果不加干预,拒绝自动导入公钥。\n" + "指定 \"-y\" 改变这个行为。" + +-#: dnf/cli/cli.py:331 ++#: dnf/cli/cli.py:337 + msgid "Changelogs for {}" + msgstr "{}的变更记录" + +-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511 ++#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517 + msgid "Obsoleting Packages" + msgstr "取代的软件包" + +-#: dnf/cli/cli.py:393 ++#: dnf/cli/cli.py:399 + msgid "No packages marked for distribution synchronization." + msgstr "没有软件包需要发行版同步。" + +-#: dnf/cli/cli.py:428 ++#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395 ++#, python-format ++msgid "No package %s available." ++msgstr "没有可用的软件包 %s。" ++ ++#: dnf/cli/cli.py:434 + msgid "No packages marked for downgrade." + msgstr "没有标记要降级的软件包。" + +-#: dnf/cli/cli.py:479 ++#: dnf/cli/cli.py:485 + msgid "Installed Packages" + msgstr "已安装的软件包" + +-#: dnf/cli/cli.py:487 ++#: dnf/cli/cli.py:493 + msgid "Available Packages" + msgstr "可安装的软件包" + +-#: dnf/cli/cli.py:491 ++#: dnf/cli/cli.py:497 + msgid "Autoremove Packages" + msgstr "自动移除软件包" + +-#: dnf/cli/cli.py:493 ++#: dnf/cli/cli.py:499 + msgid "Extra Packages" + msgstr "更多软件包" + +-#: dnf/cli/cli.py:497 ++#: dnf/cli/cli.py:503 + msgid "Available Upgrades" + msgstr "可用升级" + +-#: dnf/cli/cli.py:513 ++#: dnf/cli/cli.py:519 + msgid "Recently Added Packages" + msgstr "最近添加的软件包" + +-#: dnf/cli/cli.py:518 ++#: dnf/cli/cli.py:523 + msgid "No matching Packages to list" + msgstr "没有匹配的软件包可以列出" + +-#: dnf/cli/cli.py:599 ++#: dnf/cli/cli.py:604 + msgid "No Matches found" + msgstr "没有找到匹配的软件包" + +-#: dnf/cli/cli.py:609 +-msgid "No transaction ID given" +-msgstr "没有事务 ID" +- +-#: dnf/cli/cli.py:614 +-msgid "Not found given transaction ID" +-msgstr "未找到指定事务 ID" +- +-#: dnf/cli/cli.py:623 +-msgid "Found more than one transaction ID!" +-msgstr "找到多个事务 ID!" +- +-#: dnf/cli/cli.py:640 +-#, python-format +-msgid "Transaction history is incomplete, before %u." +-msgstr "在 %u 之前,事务历史不完整。" +- +-#: dnf/cli/cli.py:642 +-#, python-format +-msgid "Transaction history is incomplete, after %u." +-msgstr "在 %u 之后,事务历史不完整。" +- +-#: dnf/cli/cli.py:689 +-msgid "Undoing transaction {}, from {}" +-msgstr "撤销事务 {},从 {}" +- +-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237 ++#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237 + #, python-format + msgid "Unknown repo: '%s'" + msgstr "未知仓库:'%s'" + +-#: dnf/cli/cli.py:783 ++#: dnf/cli/cli.py:685 + #, python-format + msgid "No repository match: %s" + msgstr "没有仓库匹配: %s" + +-#: dnf/cli/cli.py:817 ++#: dnf/cli/cli.py:719 + msgid "" +-"This command has to be run with superuser privileges (under the root user on" +-" most systems)." ++"This command has to be run with superuser privileges (under the root user on " ++"most systems)." + msgstr "运行此命令需要管理员特权(多数系统下是root用户)。" + +-#: dnf/cli/cli.py:847 ++#: dnf/cli/cli.py:749 + #, python-format + msgid "No such command: %s. Please use %s --help" + msgstr "未找到命令: %s。请使用 %s --help" + +-#: dnf/cli/cli.py:850 ++#: dnf/cli/cli.py:752 + #, python-format, python-brace-format + msgid "" + "It could be a {PROG} plugin command, try: \"{prog} install 'dnf-" + "command(%s)'\"" + msgstr "它可能是一个{PROG}插件命令,尝试:\"{prog} install 'dnf-command(%s)'\"" + +-#: dnf/cli/cli.py:854 ++#: dnf/cli/cli.py:756 + #, python-brace-format + msgid "" + "It could be a {prog} plugin command, but loading of plugins is currently " + "disabled." + msgstr "这可能是一个 {prog} 插件的命令,但是插件的加载当前已经禁用。" + +-#: dnf/cli/cli.py:912 ++#: dnf/cli/cli.py:814 + msgid "" + "--destdir or --downloaddir must be used with --downloadonly or download or " + "system-upgrade command." + msgstr "" +-"--destdir 或 --downloaddir 必须和 --downloadonly 或 download 或 system-upgrade " +-"命令一起使用。" ++"--destdir 或 --downloaddir 必须和 --downloadonly 或 download 或 system-" ++"upgrade 命令一起使用。" + +-#: dnf/cli/cli.py:918 ++#: dnf/cli/cli.py:820 + msgid "" + "--enable, --set-enabled and --disable, --set-disabled must be used with " + "config-manager command." + msgstr "" +-"--enable、--set-enabled 和 --disable、--set-disabled 必须和 config-manager 命令一起使用。" ++"--enable、--set-enabled 和 --disable、--set-disabled 必须和 config-manager 命" ++"令一起使用。" + +-#: dnf/cli/cli.py:1000 ++#: dnf/cli/cli.py:902 + msgid "" + "Warning: Enforcing GPG signature check globally as per active RPM security " + "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)" +-msgstr "警告:由于活动的RPM安全策略,强制执行全局GPG签名检查 (请参照dnf.conf(5)中的'gpgcheck'以了解如何阻止这条信息)" ++msgstr "" ++"警告:由于活动的RPM安全策略,强制执行全局GPG签名检查 (请参照dnf.conf(5)中" ++"的'gpgcheck'以了解如何阻止这条信息)" + +-#: dnf/cli/cli.py:1020 ++#: dnf/cli/cli.py:922 + msgid "Config file \"{}\" does not exist" + msgstr "配置文件 \"{}\" 不存在" + +-#: dnf/cli/cli.py:1040 ++#: dnf/cli/cli.py:942 + msgid "" + "Unable to detect release version (use '--releasever' to specify release " + "version)" + msgstr "无法找到发布版本(可用 '--releasever' 指定版本)" + +-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471 ++#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471 + msgid "argument {}: not allowed with argument {}" + msgstr "参数 {}:不允许与参数 {} 一起使用" + +-#: dnf/cli/cli.py:1134 ++#: dnf/cli/cli.py:1023 + #, python-format + msgid "Command \"%s\" already defined" + msgstr "命令 \"%s\" 已有定义" + +-#: dnf/cli/cli.py:1154 ++#: dnf/cli/cli.py:1043 + msgid "Excludes in dnf.conf: " + msgstr "在 dnf.conf 中排除: " + +-#: dnf/cli/cli.py:1157 ++#: dnf/cli/cli.py:1046 + msgid "Includes in dnf.conf: " + msgstr "在 dnf.conf 中包括: " + +-#: dnf/cli/cli.py:1160 ++#: dnf/cli/cli.py:1049 + msgid "Excludes in repo " + msgstr "在 repo 中排除 " + +-#: dnf/cli/cli.py:1163 ++#: dnf/cli/cli.py:1052 + msgid "Includes in repo " + msgstr "在 repo 中包括 " + +@@ -831,7 +808,8 @@ msgstr "RPM 数据库可能出错,请尝试运行'%s'进行恢复。" + #, python-brace-format + msgid "" + "You have enabled checking of packages via GPG keys. This is a good thing.\n" +-"However, you do not have any GPG public keys installed. You need to download\n" ++"However, you do not have any GPG public keys installed. You need to " ++"download\n" + "the keys for packages you wish to install and install them.\n" + "You can do that by running the command:\n" + " rpm --import public.gpg.key\n" +@@ -865,38 +843,38 @@ msgstr "问题仓库:%s" + msgid "display details about a package or group of packages" + msgstr "显示关于软件包或软件包组的详细信息" + +-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740 ++#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735 + msgid "show all packages (default)" + msgstr "显示所有的软件包(默认)" + +-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743 +-#: dnf/cli/commands/module.py:351 ++#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738 ++#: dnf/cli/commands/module.py:376 + msgid "show only available packages" + msgstr "只显示可用的软件包" + +-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746 ++#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741 + msgid "show only installed packages" + msgstr "只显示已安装的软件包" + +-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749 ++#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744 + msgid "show only extras packages" + msgstr "只显示额外的软件包" + + #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183 +-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755 ++#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750 + msgid "show only upgrades packages" + msgstr "只显示需要被升级的软件包" + +-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758 ++#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753 + msgid "show only autoremove packages" + msgstr "只显示需要被删除的软件包" + +-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761 ++#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756 + msgid "show only recently changed packages" + msgstr "限制最近被改变的软件包" + + #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265 +-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48 ++#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48 + #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44 + #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46 + msgid "PACKAGE" +@@ -934,70 +912,70 @@ msgstr "检查是否有软件包升级" + msgid "show changelogs before update" + msgstr "在更新前显示Changelog" + +-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414 +-#: dnf/cli/commands/__init__.py:470 ++#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409 ++#: dnf/cli/commands/__init__.py:465 + msgid "No package available." + msgstr "没有可用软件包。" + +-#: dnf/cli/commands/__init__.py:376 ++#: dnf/cli/commands/__init__.py:371 + msgid "No packages marked for install." + msgstr "没有标记要安装的软件包。" + +-#: dnf/cli/commands/__init__.py:412 ++#: dnf/cli/commands/__init__.py:407 + msgid "No package installed." + msgstr "没有软件包安装。" + +-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489 ++#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484 + #: dnf/cli/commands/reinstall.py:91 + #, python-format + msgid " (from %s)" + msgstr " (来自 %s)" + +-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490 ++#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485 + #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105 + #, python-format + msgid "Installed package %s%s not available." + msgstr "已安装的软件包%s%s已不可用。" + +-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576 +-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666 ++#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571 ++#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661 + msgid "No package installed from the repository." + msgstr "没有从仓库安装任何软件包。" + +-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101 ++#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101 + msgid "No packages marked for reinstall." + msgstr "没有标记要重新安装的软件包。" + +-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89 ++#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84 + msgid "No packages marked for upgrade." + msgstr "没有软件包需要升级。" + +-#: dnf/cli/commands/__init__.py:726 ++#: dnf/cli/commands/__init__.py:721 + msgid "run commands on top of all packages in given repository" + msgstr "对指定仓库中的所有软件包运行命令" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "REPOID" + msgstr "REPOID" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "Repository ID" + msgstr "仓库ID" + +-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48 ++#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48 + #: dnf/cli/commands/updateinfo.py:108 + msgid "Package specification" + msgstr "软件包规格" + +-#: dnf/cli/commands/__init__.py:801 ++#: dnf/cli/commands/__init__.py:796 + msgid "display a helpful usage message" + msgstr "显示一个有帮助的用法信息" + +-#: dnf/cli/commands/__init__.py:805 ++#: dnf/cli/commands/__init__.py:800 + msgid "COMMAND" + msgstr "命令" + +-#: dnf/cli/commands/__init__.py:806 ++#: dnf/cli/commands/__init__.py:801 + #, python-brace-format + msgid "{prog} command to get help for" + msgstr "要获得帮助的 {prog} 命令" +@@ -1168,8 +1146,11 @@ msgid "Waiting for process with pid %d to finish." + msgstr "正在等待 pid 为%d的进程退出。" + + #: dnf/cli/commands/deplist.py:32 +-msgid "List package's dependencies and what packages provide them" +-msgstr "列出软件包的依赖关系和提供这些软件包的源" ++msgid "" ++"[deprecated, use repoquery --deplist] List package's dependencies and what " ++"packages provide them" ++msgstr "" ++"[已弃用,请使用 repoquery --deplist] 列出软件包的依赖关系和提供这些软件包的源" + + #: dnf/cli/commands/distrosync.py:32 + msgid "synchronize installed packages to the latest available versions" +@@ -1195,78 +1176,78 @@ msgstr "显示或使用组信息" + msgid "No group data available for configured repositories." + msgstr "配置的软件源不包含组数据。" + +-#: dnf/cli/commands/group.py:129 ++#: dnf/cli/commands/group.py:126 + #, python-format + msgid "Warning: Group %s does not exist." + msgstr "警告:组 %s 不存在。" + +-#: dnf/cli/commands/group.py:170 ++#: dnf/cli/commands/group.py:167 + msgid "Warning: No groups match:" + msgstr "警告:没有匹配的组:" + +-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193 +-#: dnf/cli/output.py:1226 ++#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190 ++#: dnf/cli/output.py:1139 + msgid "" +-msgstr "<名称-未设定>" ++msgstr "" + +-#: dnf/cli/commands/group.py:199 ++#: dnf/cli/commands/group.py:196 + msgid "Available Environment Groups:" + msgstr "可用环境组:" + +-#: dnf/cli/commands/group.py:201 ++#: dnf/cli/commands/group.py:198 + msgid "Installed Environment Groups:" + msgstr "已安装的环境组:" + +-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294 ++#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291 + msgid "Installed Groups:" + msgstr "已安装组:" + +-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301 ++#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298 + msgid "Installed Language Groups:" + msgstr "已安装语言组:" + +-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308 ++#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305 + msgid "Available Groups:" + msgstr "可用组:" + +-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315 ++#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312 + msgid "Available Language Groups:" + msgstr "可用语言组:" + +-#: dnf/cli/commands/group.py:322 ++#: dnf/cli/commands/group.py:319 + msgid "include optional packages from group" + msgstr "包含可选软件包" + +-#: dnf/cli/commands/group.py:325 ++#: dnf/cli/commands/group.py:322 + msgid "show also hidden groups" + msgstr "同时显示已隐藏的软件组" + +-#: dnf/cli/commands/group.py:327 ++#: dnf/cli/commands/group.py:324 + msgid "show only installed groups" + msgstr "只显示已安装的软件组" + +-#: dnf/cli/commands/group.py:329 ++#: dnf/cli/commands/group.py:326 + msgid "show only available groups" + msgstr "只显示可获得的团队" + +-#: dnf/cli/commands/group.py:331 ++#: dnf/cli/commands/group.py:328 + msgid "show also ID of groups" + msgstr "同时显示组的 ID" + +-#: dnf/cli/commands/group.py:333 ++#: dnf/cli/commands/group.py:330 + msgid "available subcommands: {} (default), {}" + msgstr "可用的子命令:{} (默认), {}" + +-#: dnf/cli/commands/group.py:337 ++#: dnf/cli/commands/group.py:334 + msgid "argument for group subcommand" + msgstr "组子命令的参数" + +-#: dnf/cli/commands/group.py:346 ++#: dnf/cli/commands/group.py:343 + #, python-format + msgid "Invalid groups sub-command, use: %s." + msgstr "无效的组子命令,请使用:%s 。" + +-#: dnf/cli/commands/group.py:403 ++#: dnf/cli/commands/group.py:398 + msgid "Unable to find a mandatory group package." + msgstr "无法找到一个必须的组软件包。" + +@@ -1276,25 +1257,25 @@ msgstr "显示或使用事务历史" + + #: dnf/cli/commands/history.py:66 + msgid "For the store command, file path to store the transaction to" +-msgstr "" ++msgstr "对于 store 命令,要将事务保存到的文件路径" + + #: dnf/cli/commands/history.py:68 + msgid "" +-"For the replay command, don't check for installed packages matching those in" +-" transaction" +-msgstr "" ++"For the replay command, don't check for installed packages matching those in " ++"transaction" ++msgstr "对于 replay 命令,不要检查已安装的包是否与事务中符合" + + #: dnf/cli/commands/history.py:71 + msgid "" + "For the replay command, don't check for extra packages pulled into the " + "transaction" +-msgstr "" ++msgstr "对于 replay 命令,不要检查被拉入事务的额外的包" + + #: dnf/cli/commands/history.py:74 + msgid "" +-"For the replay command, skip packages that are not available or have missing" +-" dependencies" +-msgstr "" ++"For the replay command, skip packages that are not available or have missing " ++"dependencies" ++msgstr "对于 replay 命令,跳过不可用或者缺少依赖项的软件包" + + #: dnf/cli/commands/history.py:94 + msgid "" +@@ -1305,41 +1286,64 @@ msgstr "" + "'{}' 需要一个事务 ID 或软件包名。" + + #: dnf/cli/commands/history.py:101 +-#, fuzzy +-#| msgid "No transaction ID or package name given." + msgid "No transaction file name given." +-msgstr "没有提供事务 ID 或软件包名。" ++msgstr "没有指定事务文件名。" + + #: dnf/cli/commands/history.py:103 +-#, fuzzy +-#| msgid "Failed to remove transaction file %s" + msgid "More than one argument given as transaction file name." +-msgstr "移除事务文件 %s 失败" ++msgstr "提供了多于一个的作为事务文件名的参数。" + +-#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:126 ++#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130 + msgid "No transaction ID or package name given." + msgstr "没有提供事务 ID 或软件包名。" + +-#: dnf/cli/commands/history.py:138 ++#: dnf/cli/commands/history.py:142 + #, python-format + msgid "You don't have access to the history DB: %s" + msgstr "你没有权限访问历史数据库:%s" + +-#: dnf/cli/commands/history.py:147 ++#: dnf/cli/commands/history.py:151 + #, python-format + msgid "" +-"Cannot undo transaction %s, doing so would result in an inconsistent package" +-" database." ++"Cannot undo transaction %s, doing so would result in an inconsistent package " ++"database." + msgstr "无法撤销事务 %s,这样做将可能导致不一致的软件包数据库。" + +-#: dnf/cli/commands/history.py:152 ++#: dnf/cli/commands/history.py:156 + #, python-format + msgid "" + "Cannot rollback transaction %s, doing so would result in an inconsistent " + "package database." + msgstr "无法回滚事务 %s,这样做将可能导致不一致的软件包数据库。" + +-#: dnf/cli/commands/history.py:222 ++#: dnf/cli/commands/history.py:175 ++msgid "No transaction ID given" ++msgstr "没有事务 ID" ++ ++#: dnf/cli/commands/history.py:179 ++#, python-brace-format ++msgid "Transaction ID \"{0}\" not found." ++msgstr "事务 ID \"{0}\" 未找到。" ++ ++#: dnf/cli/commands/history.py:185 ++msgid "Found more than one transaction ID!" ++msgstr "找到多个事务 ID!" ++ ++#: dnf/cli/commands/history.py:203 ++#, python-format ++msgid "Transaction history is incomplete, before %u." ++msgstr "在 %u 之前,事务历史不完整。" ++ ++#: dnf/cli/commands/history.py:205 ++#, python-format ++msgid "Transaction history is incomplete, after %u." ++msgstr "在 %u 之后,事务历史不完整。" ++ ++#: dnf/cli/commands/history.py:256 ++msgid "No packages to list" ++msgstr "没有可以列出的软件包" ++ ++#: dnf/cli/commands/history.py:279 + msgid "" + "Invalid transaction ID range definition '{}'.\n" + "Use '..'." +@@ -1347,7 +1351,7 @@ msgstr "" + "无效的事务 ID 范围定义 '{}'。\n" + "使用 '..'。" + +-#: dnf/cli/commands/history.py:226 ++#: dnf/cli/commands/history.py:283 + msgid "" + "Can't convert '{}' to transaction ID.\n" + "Use '', 'last', 'last-'." +@@ -1355,40 +1359,29 @@ msgstr "" + "无法将 '{}' 转换为事务 ID。\n" + "请使用 ''、'last'、'last-'。" + +-#: dnf/cli/commands/history.py:255 ++#: dnf/cli/commands/history.py:312 + msgid "No transaction which manipulates package '{}' was found." + msgstr "没有找到操作软件包 '{}' 的事务。" + +-#: dnf/cli/commands/history.py:305 +-#, fuzzy, python-brace-format +-#| msgid "TransactionItem not found for key: {}" +-msgid "Transaction ID \"{id}\" not found." +-msgstr "找不到键的 TransactionItem: {}" +- +-#: dnf/cli/commands/history.py:313 ++#: dnf/cli/commands/history.py:357 + msgid "{} exists, overwrite?" +-msgstr "" ++msgstr "{} 已存在,是否覆盖?" + +-#: dnf/cli/commands/history.py:316 ++#: dnf/cli/commands/history.py:360 + msgid "Not overwriting {}, exiting." +-msgstr "" ++msgstr "不覆盖 {},退出。" + +-#: dnf/cli/commands/history.py:323 +-#, fuzzy +-#| msgid "Transaction failed" ++#: dnf/cli/commands/history.py:367 + msgid "Transaction saved to {}." +-msgstr "事务失败" ++msgstr "事务已保存至 {}。" + +-#: dnf/cli/commands/history.py:326 +-#, fuzzy +-#| msgid "Errors occurred during transaction." ++#: dnf/cli/commands/history.py:370 + msgid "Error storing transaction: {}" +-msgstr "事务过程中出现错误。" ++msgstr "存储事务时出现错误:{}" + +-#: dnf/cli/commands/history.py:350 +-msgid "" +-"Warning, the following problems occurred while replaying the transaction:" +-msgstr "" ++#: dnf/cli/commands/history.py:386 ++msgid "Warning, the following problems occurred while running a transaction:" ++msgstr "警告,在运行事务时出现了下列问题:" + + #: dnf/cli/commands/install.py:47 + msgid "install a package or packages on your system" +@@ -1407,7 +1400,7 @@ msgstr "没有任何匹配" + msgid "Not a valid rpm file path: %s" + msgstr "RPM文件路径错误:%s" + +-#: dnf/cli/commands/install.py:167 ++#: dnf/cli/commands/install.py:166 + #, python-brace-format + msgid "There are following alternatives for \"{0}\": {1}" + msgstr "以下是 \"{0}\" 的替代 : {1}" +@@ -1450,7 +1443,7 @@ msgid "%s marked as group installed." + msgstr "%s 已标记为已安装软件组。" + + #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129 +-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279 ++#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282 + msgid "Error:" + msgstr "错误:" + +@@ -1459,89 +1452,93 @@ msgstr "错误:" + msgid "Package %s is not installed." + msgstr "软件包 %s 尚未安装。" + +-#: dnf/cli/commands/module.py:51 ++#: dnf/cli/commands/module.py:54 + msgid "" +-"Only module name, stream, architecture or profile is used. Ignoring unneeded" +-" information in argument: '{}'" ++"Only module name, stream, architecture or profile is used. Ignoring unneeded " ++"information in argument: '{}'" + msgstr "仅使用模块名称、流、架构或者配置文件。忽略参数中不需要的信息:'{}'" + +-#: dnf/cli/commands/module.py:77 ++#: dnf/cli/commands/module.py:80 + msgid "list all module streams, profiles and states" + msgstr "列出所有模块流、配置文件以及状态" + +-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128 ++#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131 + msgid "No matching Modules to list" + msgstr "没有匹配的模块可以列出" + +-#: dnf/cli/commands/module.py:111 ++#: dnf/cli/commands/module.py:114 + msgid "print detailed information about a module" + msgstr "打印关于一个模块的详细信息" + +-#: dnf/cli/commands/module.py:133 ++#: dnf/cli/commands/module.py:136 + msgid "enable a module stream" + msgstr "启用一个模块流" + +-#: dnf/cli/commands/module.py:157 ++#: dnf/cli/commands/module.py:160 + msgid "disable a module with all its streams" + msgstr "停用一个模块及其所有的流" + +-#: dnf/cli/commands/module.py:181 ++#: dnf/cli/commands/module.py:184 + msgid "reset a module" + msgstr "重置一个模块" + +-#: dnf/cli/commands/module.py:202 ++#: dnf/cli/commands/module.py:205 + msgid "install a module profile including its packages" + msgstr "安装一个包含其软件包的模块配置文件" + +-#: dnf/cli/commands/module.py:223 ++#: dnf/cli/commands/module.py:226 + msgid "update packages associated with an active stream" + msgstr "升级与一个已激活的流相关联的软件包" + +-#: dnf/cli/commands/module.py:240 ++#: dnf/cli/commands/module.py:243 + msgid "remove installed module profiles and their packages" + msgstr "移除已经安装的模块配置文件及其软件包" + +-#: dnf/cli/commands/module.py:264 ++#: dnf/cli/commands/module.py:267 + msgid "Package {} belongs to multiple modules, skipping" + msgstr "软件包 {} 属于多个模块,正在跳过" + +-#: dnf/cli/commands/module.py:277 ++#: dnf/cli/commands/module.py:280 ++msgid "switch a module to a stream and distrosync rpm packages" ++msgstr "切换一个模块到某个流并且对 rpm 软件包进行 distrosync" ++ ++#: dnf/cli/commands/module.py:302 + msgid "list modular packages" + msgstr "列出模块包" + +-#: dnf/cli/commands/module.py:292 ++#: dnf/cli/commands/module.py:317 + msgid "list packages belonging to a module" + msgstr "列出属于一个模块的软件包" + +-#: dnf/cli/commands/module.py:327 ++#: dnf/cli/commands/module.py:352 + msgid "Interact with Modules." + msgstr "与模块交互。" + +-#: dnf/cli/commands/module.py:340 ++#: dnf/cli/commands/module.py:365 + msgid "show only enabled modules" + msgstr "只显示启用的模块" + +-#: dnf/cli/commands/module.py:343 ++#: dnf/cli/commands/module.py:368 + msgid "show only disabled modules" + msgstr "只显示禁用的模块" + +-#: dnf/cli/commands/module.py:346 ++#: dnf/cli/commands/module.py:371 + msgid "show only installed modules or packages" + msgstr "只显示已安装的模块或者软件包" + +-#: dnf/cli/commands/module.py:349 ++#: dnf/cli/commands/module.py:374 + msgid "show profile content" + msgstr "显示档案内容" + +-#: dnf/cli/commands/module.py:354 ++#: dnf/cli/commands/module.py:379 + msgid "remove all modular packages" + msgstr "移除所有模块包" + +-#: dnf/cli/commands/module.py:364 ++#: dnf/cli/commands/module.py:389 + msgid "Module specification" + msgstr "模块规格" + +-#: dnf/cli/commands/module.py:386 ++#: dnf/cli/commands/module.py:411 + msgid "{} {} {}: too few arguments" + msgstr "{} {} {}: 参数太少" + +@@ -1627,15 +1624,15 @@ msgstr "禁用" + + #: dnf/cli/commands/repolist.py:162 + msgid "Repo-id : " +-msgstr "Repo-id : " ++msgstr "仓库ID : " + + #: dnf/cli/commands/repolist.py:163 + msgid "Repo-name : " +-msgstr "Repo-name : " ++msgstr "仓库名称 : " + + #: dnf/cli/commands/repolist.py:166 + msgid "Repo-status : " +-msgstr "Repo-status : " ++msgstr "仓库状态 : " + + #: dnf/cli/commands/repolist.py:169 + msgid "Repo-revision : " +@@ -1697,11 +1694,11 @@ msgstr "Repo-include : " + #. TRANSLATORS: Number of packages that where excluded (5) + #: dnf/cli/commands/repolist.py:232 + msgid "Repo-excluded : " +-msgstr "Repo-excluded : " ++msgstr "排除的仓库 : " + + #: dnf/cli/commands/repolist.py:236 + msgid "Repo-filename : " +-msgstr "Repo-filename : " ++msgstr "仓库文件名 : " + + #. Work out the first (id) and last (enabled/disabled/count), + #. then chop the middle (name)... +@@ -1752,7 +1749,9 @@ msgstr "只显示与 REQ 冲突的结果" + msgid "" + "shows results that requires, suggests, supplements, enhances,or recommends " + "package provides and files REQ" +-msgstr "选择 requires、suggest、supplement、enhance 或 recommend 软件包提供和文件 REQ 的结果" ++msgstr "" ++"选择 requires、suggest、supplement、enhance 或 recommend 软件包提供和文件 " ++"REQ 的结果" + + #: dnf/cli/commands/repoquery.py:139 + msgid "show only results that obsolete REQ" +@@ -1841,9 +1840,11 @@ msgstr "显示软件包的 changelogs" + #: dnf/cli/commands/repoquery.py:194 + #, python-format, python-brace-format + msgid "" +-"display format for listing packages: \"%%{name} %%{version} ...\", use " +-"--querytags to view full tag list" +-msgstr "软件包列表的显示格式 : \"%%{name} %%{version} ...\", 使用 --querytags 参数来查看完整的标签列表" ++"display format for listing packages: \"%%{name} %%{version} ...\", use --" ++"querytags to view full tag list" ++msgstr "" ++"软件包列表的显示格式 : \"%%{name} %%{version} ...\", 使用 --querytags 参数来" ++"查看完整的标签列表" + + #: dnf/cli/commands/repoquery.py:198 + msgid "show available tags to use with --queryformat" +@@ -1853,13 +1854,16 @@ msgstr "显示可被 --queryformat 使用的标签" + msgid "" + "use name-epoch:version-release.architecture format for displaying found " + "packages (default)" +-msgstr "使用 name-epoch:version-release.architecture 的格式来输出找到的软件包(默认格式)" ++msgstr "" ++"使用 name-epoch:version-release.architecture 的格式来输出找到的软件包(默认格" ++"式)" + + #: dnf/cli/commands/repoquery.py:205 + msgid "" + "use name-version-release format for displaying found packages (rpm query " + "default)" +-msgstr "使用 name-version-release 的格式来输出找到的软件包(rpm 查询的默认格式)" ++msgstr "" ++"使用 name-version-release 的格式来输出找到的软件包(rpm 查询的默认格式)" + + #: dnf/cli/commands/repoquery.py:211 + msgid "" +@@ -1895,7 +1899,9 @@ msgstr "显示与该软件包冲突的功能。" + msgid "" + "Display capabilities that the package can depend on, enhance, recommend, " + "suggest, and supplement." +-msgstr "显示软件包可用在其中 depend on、enhance、recommend、suggest 和 supplement 的功能。" ++msgstr "" ++"显示软件包可用在其中 depend on、enhance、recommend、suggest 和 supplement 的" ++"功能。" + + #: dnf/cli/commands/repoquery.py:236 + msgid "Display capabilities that the package can enhance." +@@ -1920,8 +1926,8 @@ msgid "" + "running %%pre and %%post scriptlets. If the package is installed display " + "capabilities that is depends for %%pre, %%post, %%preun and %%postun." + msgstr "" +-"如果未安装软件包,则显示执行 %%pre 和 %%post 脚本所依赖的功能。如果已经了安装软件包,则显示执行 %%pre、%%post、%%preun" +-" 和 %%postun 脚本所依赖的功能。" ++"如果未安装软件包,则显示执行 %%pre 和 %%post 脚本所依赖的功能。如果已经了安装" ++"软件包,则显示执行 %%pre、%%post、%%preun 和 %%postun 脚本所依赖的功能。" + + #: dnf/cli/commands/repoquery.py:243 + msgid "Display capabilities that the package suggests." +@@ -1970,22 +1976,23 @@ msgstr "搜索所用的关键词" + + #: dnf/cli/commands/repoquery.py:295 + msgid "" +-"Option '--resolve' has to be used together with one of the '--conflicts', '" +-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--" ++"Option '--resolve' has to be used together with one of the '--conflicts', '--" ++"depends', '--enhances', '--provides', '--recommends', '--requires', '--" + "requires-pre', '--suggests' or '--supplements' options" + msgstr "" +-"选项 '--resolve' 需要和 '--conflicts'、'--depends'、'--enhances'、'--provides'、'--" +-"recommends'、'--requires'、'--requires-pre'、'--suggests' 或 '--supplements' " +-"选项之一一起使用" ++"选项 '--resolve' 需要和 '--conflicts'、'--depends'、'--enhances'、'--" ++"provides'、'--recommends'、'--requires'、'--requires-pre'、'--suggests' 或 " ++"'--supplements' 选项之一一起使用" + + #: dnf/cli/commands/repoquery.py:305 + msgid "" + "Option '--recursive' has to be used with '--whatrequires ' (optionally " +-"with '--alldeps', but not with '--exactdeps'), or with '--requires " +-"--resolve'" ++"with '--alldeps', but not with '--exactdeps'), or with '--requires --" ++"resolve'" + msgstr "" +-"选项 '--recursive' 需要和 '--whatrequires ' 一起使用(以及可选的 '--alldeps',但不能是 '--" +-"exactdeps'),或和 '--requires --resolve' 一起使用" ++"选项 '--recursive' 需要和 '--whatrequires ' 一起使用(以及可选的 '--" ++"alldeps',但不能是 '--exactdeps'),或和 '--requires --resolve' 一起使" ++"用" + + #: dnf/cli/commands/repoquery.py:312 + msgid "argument {} requires --whatrequires or --whatdepends option" +@@ -1999,13 +2006,17 @@ msgstr "软件包 {} 不包含文件" + #, python-brace-format + msgid "" + "No valid switch specified\n" +-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--" ++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--" ++"tree]\n" + "\n" + "description:\n" + " For the given packages print a tree of thepackages." + msgstr "" + "没有指定有效参数\n" +-"用法:{prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"用法:{prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--" ++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--" ++"tree]\n" + "\n" + "描述:\n" + " 对于指定的软件包,打印此软件包的树状图。" +@@ -2026,27 +2037,26 @@ msgstr "KEYWORD" + msgid "Keyword to search for" + msgstr "要搜索的关键字" + +-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506 ++#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460 + msgctxt "long" + msgid "Name" + msgstr "名称" + +-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559 ++#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513 + msgctxt "long" + msgid "Summary" + msgstr "概况" + +-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569 ++#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523 + msgctxt "long" + msgid "Description" + msgstr "描述" + +-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562 ++#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516 + msgid "URL" + msgstr "URL" + +-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary +-#. & URL) ++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL) + #: dnf/cli/commands/search.py:76 + msgid " & " + msgstr " 和 " +@@ -2184,16 +2194,16 @@ msgstr "" + "run 解析以及运行事务集\n" + "exit (或 quit) 退出 shell" + +-#: dnf/cli/commands/shell.py:259 ++#: dnf/cli/commands/shell.py:262 + #, python-format + msgid "Error: Cannot open %s for reading" + msgstr "错误:无法打开%s来读取" + +-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187 ++#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187 + msgid "Complete!" + msgstr "完毕!" + +-#: dnf/cli/commands/shell.py:291 ++#: dnf/cli/commands/shell.py:294 + msgid "Leaving Shell" + msgstr "离开终端" + +@@ -2384,8 +2394,8 @@ msgstr "严重性" + msgid "Files" + msgstr "文件" + +-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499 +-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 ++#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1656 dnf/util.py:617 + msgid "Installed" + msgstr "已安装" + +@@ -2564,7 +2574,9 @@ msgstr "错误输出级别" + msgid "" + "enables {prog}'s obsoletes processing logic for upgrade or display " + "capabilities that the package obsoletes for info, list and repoquery" +-msgstr "对 upgrade 启用 {prog} 的过期处理逻辑,或对 info、list 和 repoquery 启用软件包过期的显示功能" ++msgstr "" ++"对 upgrade 启用 {prog} 的过期处理逻辑,或对 info、list 和 repoquery 启用软件" ++"包过期的显示功能" + + #: dnf/cli/option_parser.py:251 + msgid "debugging output level for rpm" +@@ -2586,8 +2598,8 @@ msgstr "启用附加仓库。列出选项。支持通配符,可以指定多次 + + #: dnf/cli/option_parser.py:266 + msgid "" +-"Disable repositories. List option. Supports globs, can be specified multiple" +-" times." ++"Disable repositories. List option. Supports globs, can be specified multiple " ++"times." + msgstr "停用仓库。列出选项。支持通配符,可指定多次。" + + #: dnf/cli/option_parser.py:270 +@@ -2616,7 +2628,8 @@ msgstr "禁用 excludepkgs" + msgid "" + "label and path to an additional repository to use (same path as in a " + "baseurl), can be specified multiple times." +-msgstr "附加仓库所要使用的标签和路径(与 baseurl 中的路径一致),可以指定多次。" ++msgstr "" ++"附加仓库所要使用的标签和路径(与 baseurl 中的路径一致),可以指定多次。" + + #: dnf/cli/option_parser.py:297 + msgid "disable removal of dependencies that are no longer used" +@@ -2706,13 +2719,13 @@ msgstr "无法编码参数 '%s': %s" + #. Translators: This is abbreviated 'Name'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:505 ++#: dnf/cli/output.py:459 + msgctxt "short" + msgid "Name" + msgstr "名称" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:511 ++#: dnf/cli/output.py:465 + msgid "Epoch" + msgstr "时期" + +@@ -2720,38 +2733,38 @@ msgstr "时期" + #. use the full (unabbreviated) term 'Version' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:512 dnf/cli/output.py:1335 ++#: dnf/cli/output.py:466 dnf/cli/output.py:1248 + msgctxt "short" + msgid "Version" + msgstr "版本" + + #. Translators: This is the full (unabbreviated) term 'Version'. +-#: dnf/cli/output.py:513 dnf/cli/output.py:1337 ++#: dnf/cli/output.py:467 dnf/cli/output.py:1250 + msgctxt "long" + msgid "Version" + msgstr "版本" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:516 ++#: dnf/cli/output.py:470 + msgid "Release" + msgstr "发布" + + #. Translators: This is abbreviated 'Architecture', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:517 dnf/cli/output.py:1326 ++#: dnf/cli/output.py:471 dnf/cli/output.py:1239 + msgctxt "short" + msgid "Arch" + msgstr "架构" + + #. Translators: This is the full word 'Architecture', used when + #. we have enough space. +-#: dnf/cli/output.py:518 dnf/cli/output.py:1329 ++#: dnf/cli/output.py:472 dnf/cli/output.py:1242 + msgctxt "long" + msgid "Architecture" + msgstr "架构" + + #. Translators: This is the full (unabbreviated) term 'Size'. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1352 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1265 + msgctxt "long" + msgid "Size" + msgstr "大小" +@@ -2760,32 +2773,32 @@ msgstr "大小" + #. not be longer than 5 characters. If the term 'Size' in your + #. language is not longer than 5 characters then you can use it + #. unabbreviated. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1350 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1263 + msgctxt "short" + msgid "Size" + msgstr "大小" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:524 ++#: dnf/cli/output.py:478 + msgid "Source" + msgstr "源" + + #. Translators: This is abbreviated 'Repository', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:525 dnf/cli/output.py:1341 ++#: dnf/cli/output.py:479 dnf/cli/output.py:1254 + msgctxt "short" + msgid "Repo" + msgstr "仓库" + + #. Translators: This is the full word 'Repository', used when + #. we have enough space. +-#: dnf/cli/output.py:526 dnf/cli/output.py:1344 ++#: dnf/cli/output.py:480 dnf/cli/output.py:1257 + msgctxt "long" + msgid "Repository" + msgstr "仓库" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:533 ++#: dnf/cli/output.py:487 + msgid "From repo" + msgstr "来自仓库" + +@@ -2793,312 +2806,308 @@ msgstr "来自仓库" + #. print(_("Committer : %s") % ucd(pkg.committer)) + #. print(_("Committime : %s") % time.ctime(pkg.committime)) + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:539 ++#: dnf/cli/output.py:493 + msgid "Packager" + msgstr "打包者" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:541 ++#: dnf/cli/output.py:495 + msgid "Buildtime" + msgstr "构建时间" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:545 ++#: dnf/cli/output.py:499 + msgid "Install time" + msgstr "安装时间" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:554 ++#: dnf/cli/output.py:508 + msgid "Installed by" + msgstr "安装者" + + #. Translators: This is abbreviated 'Summary'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:558 ++#: dnf/cli/output.py:512 + msgctxt "short" + msgid "Summary" + msgstr "概况" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:564 ++#: dnf/cli/output.py:518 + msgid "License" + msgstr "协议" + + #. Translators: This is abbreviated 'Description'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:568 ++#: dnf/cli/output.py:522 + msgctxt "short" + msgid "Description" + msgstr "描述" + +-#: dnf/cli/output.py:695 +-msgid "No packages to list" +-msgstr "没有可以列出的软件包" +- +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "y" + msgstr "y" + +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "yes" + msgstr "是" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "n" + msgstr "n" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "no" + msgstr "否" + +-#: dnf/cli/output.py:711 ++#: dnf/cli/output.py:655 + msgid "Is this ok [y/N]: " + msgstr "确定吗?[y/N]: " + +-#: dnf/cli/output.py:715 ++#: dnf/cli/output.py:659 + msgid "Is this ok [Y/n]: " + msgstr "确定吗?[Y/n]: " + +-#: dnf/cli/output.py:795 ++#: dnf/cli/output.py:739 + #, python-format + msgid "Group: %s" + msgstr "组:%s" + +-#: dnf/cli/output.py:799 ++#: dnf/cli/output.py:743 + #, python-format + msgid " Group-Id: %s" + msgstr " 组编号:%s" + +-#: dnf/cli/output.py:801 dnf/cli/output.py:840 ++#: dnf/cli/output.py:745 dnf/cli/output.py:784 + #, python-format + msgid " Description: %s" + msgstr " 描述:%s" + +-#: dnf/cli/output.py:803 ++#: dnf/cli/output.py:747 + #, python-format + msgid " Language: %s" + msgstr " 语言:%s" + +-#: dnf/cli/output.py:806 ++#: dnf/cli/output.py:750 + msgid " Mandatory Packages:" + msgstr " 必要的软件包:" + +-#: dnf/cli/output.py:807 ++#: dnf/cli/output.py:751 + msgid " Default Packages:" + msgstr " 默认的软件包:" + +-#: dnf/cli/output.py:808 ++#: dnf/cli/output.py:752 + msgid " Optional Packages:" + msgstr " 可选的软件包:" + +-#: dnf/cli/output.py:809 ++#: dnf/cli/output.py:753 + msgid " Conditional Packages:" + msgstr " 可能的软件包:" + +-#: dnf/cli/output.py:834 ++#: dnf/cli/output.py:778 + #, python-format + msgid "Environment Group: %s" + msgstr "环境组:%s" + +-#: dnf/cli/output.py:837 ++#: dnf/cli/output.py:781 + #, python-format + msgid " Environment-Id: %s" + msgstr " 环境-Id:%s" + +-#: dnf/cli/output.py:843 ++#: dnf/cli/output.py:787 + msgid " Mandatory Groups:" + msgstr " 必选软件包组:" + +-#: dnf/cli/output.py:844 ++#: dnf/cli/output.py:788 + msgid " Optional Groups:" + msgstr " 可选软件包组:" + +-#: dnf/cli/output.py:865 ++#: dnf/cli/output.py:809 + msgid "Matched from:" + msgstr "匹配来源:" + +-#: dnf/cli/output.py:879 ++#: dnf/cli/output.py:823 + #, python-format + msgid "Filename : %s" + msgstr "文件名 :%s" + +-#: dnf/cli/output.py:904 ++#: dnf/cli/output.py:848 + #, python-format + msgid "Repo : %s" + msgstr "仓库 :%s" + +-#: dnf/cli/output.py:913 ++#: dnf/cli/output.py:857 + msgid "Description : " + msgstr "描述: " + +-#: dnf/cli/output.py:917 ++#: dnf/cli/output.py:861 + #, python-format + msgid "URL : %s" + msgstr "网址 :%s" + +-#: dnf/cli/output.py:921 ++#: dnf/cli/output.py:865 + #, python-format + msgid "License : %s" + msgstr "协议 :%s" + +-#: dnf/cli/output.py:927 ++#: dnf/cli/output.py:871 + #, python-format + msgid "Provide : %s" + msgstr "提供 : %s" + +-#: dnf/cli/output.py:947 ++#: dnf/cli/output.py:891 + #, python-format + msgid "Other : %s" + msgstr "其它 : %s" + +-#: dnf/cli/output.py:996 ++#: dnf/cli/output.py:940 + msgid "There was an error calculating total download size" + msgstr "计算总下载量时出错" + +-#: dnf/cli/output.py:1002 ++#: dnf/cli/output.py:946 + #, python-format + msgid "Total size: %s" + msgstr "总计:%s" + +-#: dnf/cli/output.py:1005 ++#: dnf/cli/output.py:949 + #, python-format + msgid "Total download size: %s" + msgstr "总下载:%s" + +-#: dnf/cli/output.py:1008 ++#: dnf/cli/output.py:952 + #, python-format + msgid "Installed size: %s" + msgstr "安装大小:%s" + +-#: dnf/cli/output.py:1026 ++#: dnf/cli/output.py:970 + msgid "There was an error calculating installed size" + msgstr "计算安装大小时出错" + +-#: dnf/cli/output.py:1030 ++#: dnf/cli/output.py:974 + #, python-format + msgid "Freed space: %s" + msgstr "将会释放空间:%s" + +-#: dnf/cli/output.py:1039 ++#: dnf/cli/output.py:983 + msgid "Marking packages as installed by the group:" + msgstr "标记软件包为遵循软件包组安装的:" + +-#: dnf/cli/output.py:1046 ++#: dnf/cli/output.py:990 + msgid "Marking packages as removed by the group:" + msgstr "标记软件包为遵循软件包组移除的:" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Group" + msgstr "组" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Packages" + msgstr "软件包" + +-#: dnf/cli/output.py:1133 ++#: dnf/cli/output.py:1046 + msgid "Installing group/module packages" + msgstr "安装组/模块包" + +-#: dnf/cli/output.py:1134 ++#: dnf/cli/output.py:1047 + msgid "Installing group packages" + msgstr "安装软件包组" + + #. TRANSLATORS: This is for a list of packages to be installed. +-#: dnf/cli/output.py:1138 ++#: dnf/cli/output.py:1051 + msgctxt "summary" + msgid "Installing" + msgstr "安装" + + #. TRANSLATORS: This is for a list of packages to be upgraded. +-#: dnf/cli/output.py:1140 ++#: dnf/cli/output.py:1053 + msgctxt "summary" + msgid "Upgrading" + msgstr "升级" + + #. TRANSLATORS: This is for a list of packages to be reinstalled. +-#: dnf/cli/output.py:1142 ++#: dnf/cli/output.py:1055 + msgctxt "summary" + msgid "Reinstalling" + msgstr "重新安装" + +-#: dnf/cli/output.py:1144 ++#: dnf/cli/output.py:1057 + msgid "Installing dependencies" + msgstr "安装依赖关系" + +-#: dnf/cli/output.py:1145 ++#: dnf/cli/output.py:1058 + msgid "Installing weak dependencies" + msgstr "安装弱的依赖" + + #. TRANSLATORS: This is for a list of packages to be removed. +-#: dnf/cli/output.py:1147 ++#: dnf/cli/output.py:1060 + msgid "Removing" + msgstr "移除" + +-#: dnf/cli/output.py:1148 ++#: dnf/cli/output.py:1061 + msgid "Removing dependent packages" + msgstr "移除依赖的软件包" + +-#: dnf/cli/output.py:1149 ++#: dnf/cli/output.py:1062 + msgid "Removing unused dependencies" + msgstr "清除未被使用的依赖关系" + + #. TRANSLATORS: This is for a list of packages to be downgraded. +-#: dnf/cli/output.py:1151 ++#: dnf/cli/output.py:1064 + msgctxt "summary" + msgid "Downgrading" + msgstr "降级" + +-#: dnf/cli/output.py:1176 ++#: dnf/cli/output.py:1089 + msgid "Installing module profiles" + msgstr "安装模块配置档案" + +-#: dnf/cli/output.py:1185 ++#: dnf/cli/output.py:1098 + msgid "Disabling module profiles" + msgstr "禁用模块配置档案" + +-#: dnf/cli/output.py:1194 ++#: dnf/cli/output.py:1107 + msgid "Enabling module streams" + msgstr "启用模块流" + +-#: dnf/cli/output.py:1202 ++#: dnf/cli/output.py:1115 + msgid "Switching module streams" + msgstr "切换模块流" + +-#: dnf/cli/output.py:1210 ++#: dnf/cli/output.py:1123 + msgid "Disabling modules" + msgstr "禁用模块" + +-#: dnf/cli/output.py:1218 ++#: dnf/cli/output.py:1131 + msgid "Resetting modules" + msgstr "重置模块" + +-#: dnf/cli/output.py:1230 ++#: dnf/cli/output.py:1143 + msgid "Installing Environment Groups" + msgstr "安装环境组" + +-#: dnf/cli/output.py:1237 ++#: dnf/cli/output.py:1150 + msgid "Upgrading Environment Groups" + msgstr "升级环境组" + +-#: dnf/cli/output.py:1244 ++#: dnf/cli/output.py:1157 + msgid "Removing Environment Groups" + msgstr "删除环境组" + +-#: dnf/cli/output.py:1251 ++#: dnf/cli/output.py:1164 + msgid "Installing Groups" + msgstr "安装组" + +-#: dnf/cli/output.py:1258 ++#: dnf/cli/output.py:1171 + msgid "Upgrading Groups" + msgstr "升级组" + +-#: dnf/cli/output.py:1265 ++#: dnf/cli/output.py:1178 + msgid "Removing Groups" + msgstr "删除组" + +-#: dnf/cli/output.py:1281 ++#: dnf/cli/output.py:1194 + #, python-format + msgid "" + "Skipping packages with conflicts:\n" +@@ -3107,12 +3116,12 @@ msgstr "" + "跳过有冲突的软件包:\n" + "(添加 '%s' 至命令行来强制升级)" + +-#: dnf/cli/output.py:1291 ++#: dnf/cli/output.py:1204 + #, python-format + msgid "Skipping packages with broken dependencies%s" + msgstr "跳过存在损坏依赖关系的软件包 %s" + +-#: dnf/cli/output.py:1295 ++#: dnf/cli/output.py:1208 + msgid " or part of a group" + msgstr " 或一个组的一部分" + +@@ -3120,22 +3129,22 @@ msgstr " 或一个组的一部分" + #. use the full (unabbreviated) term 'Package' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:1320 ++#: dnf/cli/output.py:1233 + msgctxt "short" + msgid "Package" + msgstr "软件包" + + #. Translators: This is the full (unabbreviated) term 'Package'. +-#: dnf/cli/output.py:1322 ++#: dnf/cli/output.py:1235 + msgctxt "long" + msgid "Package" + msgstr "软件包" + +-#: dnf/cli/output.py:1371 ++#: dnf/cli/output.py:1284 + msgid "replacing" + msgstr "替换" + +-#: dnf/cli/output.py:1378 ++#: dnf/cli/output.py:1291 + #, python-format + msgid "" + "\n" +@@ -3147,287 +3156,271 @@ msgstr "" + "%s\n" + + #. TODO: remove +-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933 ++#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815 + msgid "Install" + msgstr "安装" + +-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941 ++#: dnf/cli/output.py:1300 dnf/cli/output.py:1823 + msgid "Upgrade" + msgstr "升级" + +-#: dnf/cli/output.py:1388 ++#: dnf/cli/output.py:1301 + msgid "Remove" + msgstr "移除" + +-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939 ++#: dnf/cli/output.py:1303 dnf/cli/output.py:1821 + msgid "Downgrade" + msgstr "降级" + +-#: dnf/cli/output.py:1391 ++#: dnf/cli/output.py:1304 + msgid "Skip" + msgstr "跳过" + +-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416 ++#: dnf/cli/output.py:1313 dnf/cli/output.py:1329 + msgid "Package" + msgid_plural "Packages" + msgstr[0] "软件包" + +-#: dnf/cli/output.py:1418 ++#: dnf/cli/output.py:1331 + msgid "Dependent package" + msgid_plural "Dependent packages" + msgstr[0] "依赖软件包" + +-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942 +-msgid "Upgraded" +-msgstr "已升级" +- +-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940 +-msgid "Downgraded" +-msgstr "已降级" +- +-#: dnf/cli/output.py:1503 +-msgid "Reinstalled" +-msgstr "已重装" +- +-#: dnf/cli/output.py:1504 +-msgid "Skipped" +-msgstr "已跳过" +- +-#: dnf/cli/output.py:1505 +-msgid "Removed" +-msgstr "已移除" +- +-#: dnf/cli/output.py:1508 +-msgid "Failed" +-msgstr "失败" +- +-#: dnf/cli/output.py:1559 ++#: dnf/cli/output.py:1439 + msgid "Total" + msgstr "总计" + +-#: dnf/cli/output.py:1587 ++#: dnf/cli/output.py:1467 + msgid "" +-msgstr "<空>" ++msgstr "" + +-#: dnf/cli/output.py:1588 ++#: dnf/cli/output.py:1468 + msgid "System" + msgstr "系统" + +-#: dnf/cli/output.py:1638 ++#: dnf/cli/output.py:1518 + msgid "Command line" + msgstr "命令行" + + #. TRANSLATORS: user names who executed transaction in history command output +-#: dnf/cli/output.py:1649 ++#: dnf/cli/output.py:1531 + msgid "User name" + msgstr "用户名" + +-#: dnf/cli/output.py:1651 ++#: dnf/cli/output.py:1533 + msgid "ID" + msgstr "ID" + +-#: dnf/cli/output.py:1653 ++#: dnf/cli/output.py:1535 + msgid "Date and time" + msgstr "日期和时间" + +-#: dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1536 + msgid "Action(s)" + msgstr "操作" + +-#: dnf/cli/output.py:1655 ++#: dnf/cli/output.py:1537 + msgid "Altered" + msgstr "更改" + +-#: dnf/cli/output.py:1698 ++#: dnf/cli/output.py:1580 + msgid "No transactions" + msgstr "没有事务" + +-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715 ++#: dnf/cli/output.py:1581 dnf/cli/output.py:1597 + msgid "Failed history info" + msgstr "失败的历史信息" + +-#: dnf/cli/output.py:1714 ++#: dnf/cli/output.py:1596 + msgid "No transaction ID, or package, given" + msgstr "未指定事务 ID、或者软件包" + +-#: dnf/cli/output.py:1772 ++#: dnf/cli/output.py:1654 + msgid "Erased" + msgstr "已删除" + +-#: dnf/cli/output.py:1774 ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616 ++msgid "Downgraded" ++msgstr "已降级" ++ ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615 ++msgid "Upgraded" ++msgstr "已升级" ++ ++#: dnf/cli/output.py:1656 + msgid "Not installed" + msgstr "未安装" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Newer" + msgstr "较早的" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Older" + msgstr "较老的" + +-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825 ++#: dnf/cli/output.py:1705 dnf/cli/output.py:1707 + msgid "Transaction ID :" + msgstr "事务 ID:" + +-#: dnf/cli/output.py:1828 ++#: dnf/cli/output.py:1710 + msgid "Begin time :" + msgstr "起始时间 :" + +-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833 ++#: dnf/cli/output.py:1713 dnf/cli/output.py:1715 + msgid "Begin rpmdb :" + msgstr "起始 RPM 数据库 :" + +-#: dnf/cli/output.py:1839 ++#: dnf/cli/output.py:1721 + #, python-format + msgid "(%u seconds)" + msgstr "(%u 秒)" + +-#: dnf/cli/output.py:1841 ++#: dnf/cli/output.py:1723 + #, python-format + msgid "(%u minutes)" + msgstr "(%u 分钟)" + +-#: dnf/cli/output.py:1843 ++#: dnf/cli/output.py:1725 + #, python-format + msgid "(%u hours)" + msgstr "(%u 小时)" + +-#: dnf/cli/output.py:1845 ++#: dnf/cli/output.py:1727 + #, python-format + msgid "(%u days)" + msgstr "(%u 天)" + +-#: dnf/cli/output.py:1846 ++#: dnf/cli/output.py:1728 + msgid "End time :" + msgstr "结束时间 :" + +-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851 ++#: dnf/cli/output.py:1731 dnf/cli/output.py:1733 + msgid "End rpmdb :" + msgstr "结束 RPM 数据库 :" + +-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860 ++#: dnf/cli/output.py:1740 dnf/cli/output.py:1742 + msgid "User :" + msgstr "用户 :" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1753 + msgid "Aborted" + msgstr "已终止" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869 +-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751 ++#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757 + msgid "Return-Code :" + msgstr "返回码 :" + +-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1749 dnf/cli/output.py:1757 + msgid "Success" + msgstr "成功" + +-#: dnf/cli/output.py:1869 ++#: dnf/cli/output.py:1751 + msgid "Failures:" + msgstr "失败:" + +-#: dnf/cli/output.py:1873 ++#: dnf/cli/output.py:1755 + msgid "Failure:" + msgstr "失败:" + +-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885 ++#: dnf/cli/output.py:1765 dnf/cli/output.py:1767 + msgid "Releasever :" + msgstr "Releasever :" + +-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892 ++#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 + msgid "Command Line :" + msgstr "命令行 :" + +-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899 ++#: dnf/cli/output.py:1779 dnf/cli/output.py:1781 + msgid "Comment :" + msgstr "注释 :" + +-#: dnf/cli/output.py:1903 ++#: dnf/cli/output.py:1785 + msgid "Transaction performed with:" + msgstr "事务完成由:" + +-#: dnf/cli/output.py:1912 ++#: dnf/cli/output.py:1794 + msgid "Packages Altered:" + msgstr "已改变的包:" + +-#: dnf/cli/output.py:1918 ++#: dnf/cli/output.py:1800 + msgid "Scriptlet output:" + msgstr "Scriptlet 输出:" + +-#: dnf/cli/output.py:1925 ++#: dnf/cli/output.py:1807 + msgid "Errors:" + msgstr "错误:" + +-#: dnf/cli/output.py:1934 ++#: dnf/cli/output.py:1816 + msgid "Dep-Install" + msgstr "依赖安装" + +-#: dnf/cli/output.py:1935 ++#: dnf/cli/output.py:1817 + msgid "Obsoleted" + msgstr "已废弃" + +-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85 ++#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85 + msgid "Obsoleting" + msgstr "废弃" + +-#: dnf/cli/output.py:1937 ++#: dnf/cli/output.py:1819 + msgid "Erase" + msgstr "删除" + +-#: dnf/cli/output.py:1938 ++#: dnf/cli/output.py:1820 + msgid "Reinstall" + msgstr "重装" + +-#: dnf/cli/output.py:2016 ++#: dnf/cli/output.py:1894 + #, python-format + msgid "---> Package %s.%s %s will be installed" + msgstr "---> 软件包 %s.%s %s 将会被安装" + +-#: dnf/cli/output.py:2018 ++#: dnf/cli/output.py:1896 + #, python-format + msgid "---> Package %s.%s %s will be an upgrade" + msgstr "---> 软件包 %s.%s %s 将作为一个更新" + +-#: dnf/cli/output.py:2020 ++#: dnf/cli/output.py:1898 + #, python-format + msgid "---> Package %s.%s %s will be erased" + msgstr "---> 软件包 %s.%s %s 将会被清除" + +-#: dnf/cli/output.py:2022 ++#: dnf/cli/output.py:1900 + #, python-format + msgid "---> Package %s.%s %s will be reinstalled" + msgstr "---> 软件包 %s.%s %s 将会被重新安装" + +-#: dnf/cli/output.py:2024 ++#: dnf/cli/output.py:1902 + #, python-format + msgid "---> Package %s.%s %s will be a downgrade" + msgstr "---> 软件包 %s.%s %s 将会被降级" + +-#: dnf/cli/output.py:2026 ++#: dnf/cli/output.py:1904 + #, python-format + msgid "---> Package %s.%s %s will be obsoleting" + msgstr "---> 软件包 %s.%s %s 将会废弃" + +-#: dnf/cli/output.py:2028 ++#: dnf/cli/output.py:1906 + #, python-format + msgid "---> Package %s.%s %s will be upgraded" + msgstr "---> 软件包 %s.%s %s 将会被升级" + +-#: dnf/cli/output.py:2030 ++#: dnf/cli/output.py:1908 + #, python-format + msgid "---> Package %s.%s %s will be obsoleted" + msgstr "---> 软件包 %s.%s %s 将会被废弃" + +-#: dnf/cli/output.py:2039 ++#: dnf/cli/output.py:1917 + msgid "--> Starting dependency resolution" + msgstr "--> 开始解决依赖关系" + +-#: dnf/cli/output.py:2044 ++#: dnf/cli/output.py:1921 + msgid "--> Finished dependency resolution" + msgstr "--> 依赖关系解决完成" + +-#: dnf/cli/output.py:2058 dnf/crypto.py:132 ++#: dnf/cli/output.py:1935 dnf/crypto.py:132 + #, python-format + msgid "" + "Importing GPG key 0x%s:\n" +@@ -3489,10 +3482,6 @@ msgstr " 已启动: %s - %s之前" + msgid " State : %s" + msgstr " 状态 : %s" + +-#: dnf/comps.py:104 +-msgid "skipping." +-msgstr "正在跳过。" +- + #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706 + #, python-format + msgid "Module or Group '%s' is not installed." +@@ -3509,16 +3498,14 @@ msgid "Module or Group '%s' does not exist." + msgstr "模块或者组 '%s' 不存在。" + + #: dnf/comps.py:599 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not installed." ++#, python-format + msgid "Environment id '%s' does not exist." +-msgstr "环境组 '%s' 没有安装。" ++msgstr "环境 id '%s' 不存在。" + +-#: dnf/comps.py:622 dnf/transaction_sr.py:443 dnf/transaction_sr.py:453 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not installed." ++#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487 ++#, python-format + msgid "Environment id '%s' is not installed." +-msgstr "环境组 '%s' 没有安装。" ++msgstr "环境 id '%s' 没有安装。" + + #: dnf/comps.py:639 + #, python-format +@@ -3531,16 +3518,20 @@ msgid "Environment '%s' is not available." + msgstr "环境 '%s' 不可用。" + + #: dnf/comps.py:673 +-#, fuzzy, python-format +-#| msgid "Group_id '%s' does not exist." ++#, python-format + msgid "Group id '%s' does not exist." +-msgstr "Group_id '%s' 不存在。" ++msgstr "组 id '%s' 不存在。" + + #: dnf/conf/config.py:136 + #, python-format + msgid "Error parsing '%s': %s" + msgstr "解析 “%s” 时错误: %s" + ++#: dnf/conf/config.py:151 ++#, python-format ++msgid "Invalid configuration value: %s=%s in %s; %s" ++msgstr "无效配置值: %s=%s 在 %s 中; %s" ++ + #: dnf/conf/config.py:226 + msgid "Could not set cachedir: {}" + msgstr "不能设置 cachedir: {}" +@@ -3582,36 +3573,36 @@ msgstr "解析 --setopt 时出现错误,键为 '%s.%s', 值是 '%s': %s" + msgid "Repo %s did not have a %s attr. before setopt" + msgstr "Repo %s 在 setopt 前没有一个 %s 属性" + +-#: dnf/conf/read.py:51 ++#: dnf/conf/read.py:60 + #, python-format + msgid "Warning: failed loading '%s', skipping." + msgstr "警告:加载 '%s' 失败,跳过。" + +-#: dnf/conf/read.py:63 ++#: dnf/conf/read.py:72 + msgid "Bad id for repo: {} ({}), byte = {} {}" + msgstr "repo 的 id 无效: {} ({}), byte = {} {}" + +-#: dnf/conf/read.py:67 ++#: dnf/conf/read.py:76 + msgid "Bad id for repo: {}, byte = {} {}" +-msgstr "repo 的 id 无效: %s, byte = %s %d" ++msgstr "repo 的 id 无效: {}, byte = {} {}" + +-#: dnf/conf/read.py:75 ++#: dnf/conf/read.py:84 + msgid "Repository '{}' ({}): Error parsing config: {}" + msgstr "仓库 '{}' ({}): 配置解析时出错: {}" + +-#: dnf/conf/read.py:78 ++#: dnf/conf/read.py:87 + msgid "Repository '{}': Error parsing config: {}" + msgstr "仓库 '{}': 配置解析时出错: {}" + +-#: dnf/conf/read.py:84 ++#: dnf/conf/read.py:93 + msgid "Repository '{}' ({}) is missing name in configuration, using id." + msgstr "仓库 '{}' ({}) 在配置中缺少名称,将使用 id。" + +-#: dnf/conf/read.py:87 ++#: dnf/conf/read.py:96 + msgid "Repository '{}' is missing name in configuration, using id." + msgstr "仓库 '{}' 在配置中缺少名称,将使用 id。" + +-#: dnf/conf/read.py:104 ++#: dnf/conf/read.py:113 + msgid "Parsing file \"{}\" failed: {}" + msgstr "解析文件 \"{}\" 失败:{}" + +@@ -3625,25 +3616,38 @@ msgstr "repo %s: 0x%s 已被导入" + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: 已导入密钥 0x%s。" + +-#: dnf/db/group.py:293 ++#: dnf/crypto.py:145 ++msgid "Verified using DNS record with DNSSEC signature." ++msgstr "已经通过被 DNSSEC 签名的 DNS 记录验证。" ++ ++#: dnf/crypto.py:147 ++msgid "NOT verified using DNS record." ++msgstr "并未被 DNS 记录验证。" ++ ++#: dnf/crypto.py:184 ++#, python-format ++msgid "retrieving repo key for %s unencrypted from %s" ++msgstr "为 %s 从 %s 获取的 repo 密钥未加密" ++ ++#: dnf/db/group.py:301 + msgid "" + "No available modular metadata for modular package '{}', it cannot be " + "installed on the system" + msgstr "对于模块软件包 '{}' 没有可用的模块元数据,它将不能被安装至此系统上" + +-#: dnf/db/group.py:343 ++#: dnf/db/group.py:351 + msgid "No available modular metadata for modular package" + msgstr "对于模块软件包没有可用的模块元数据" + +-#: dnf/db/group.py:377 ++#: dnf/db/group.py:385 + #, python-format + msgid "Will not install a source rpm package (%s)." + msgstr "将不安装一个源码 RPM 软件包 (%s)。" + + #: dnf/dnssec.py:168 + msgid "" +-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})" +-msgstr "配置文件选项 'gpgkey_dns_verification' 要求 libunbound ({})" ++"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})" ++msgstr "配置文件选项 'gpgkey_dns_verification' 要求 python3-unbound ({})" + + #: dnf/dnssec.py:239 + msgid "DNSSEC extension: Key for user " +@@ -3665,7 +3669,7 @@ msgstr "DNSSEC 扩展 : " + msgid "Testing already imported keys for their validity." + msgstr "测试已导入的密钥以检查有效性。" + +-#: dnf/drpm.py:62 dnf/repo.py:268 ++#: dnf/drpm.py:62 dnf/repo.py:267 + #, python-format + msgid "unsupported checksum type: %s" + msgstr "不支持的校验类型: %s" +@@ -3707,7 +3711,7 @@ msgid "Modular dependency problem with Defaults:" + msgid_plural "Modular dependency problems with Defaults:" + msgstr[0] "默认设置中的模块依赖问题 :" + +-#: dnf/exceptions.py:131 dnf/module/module_base.py:686 ++#: dnf/exceptions.py:131 dnf/module/module_base.py:854 + msgid "Modular dependency problem:" + msgid_plural "Modular dependency problems:" + msgstr[0] "模块依赖问题:" +@@ -3716,10 +3720,12 @@ msgstr[0] "模块依赖问题:" + #, python-format + msgid "" + "Malformed lock file found: %s.\n" +-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf." ++"Ensure no other dnf/yum process is running and remove the lock file manually " ++"or run systemd-tmpfiles --remove dnf.conf." + msgstr "" + "发现损坏的锁文件 : %s。\n" +-"请确保没有其他 dnf/yum 进程正在运行,并手工删除锁文件,或执行 systemd-tmpfiles --remove dnf.conf 。" ++"请确保没有其他 dnf/yum 进程正在运行,并手工删除锁文件,或执行 systemd-" ++"tmpfiles --remove dnf.conf 。" + + #: dnf/module/__init__.py:26 + msgid "Enabling different stream for '{}'." +@@ -3741,7 +3747,47 @@ msgstr "启用的模板:{}。" + msgid "No profile specified for '{}', please specify profile." + msgstr "没有为 '{}' 指定档案。请指定档案。" + +-#: dnf/module/module_base.py:33 ++#: dnf/module/exceptions.py:27 ++msgid "No such module: {}" ++msgstr "不存在模块:{}" ++ ++#: dnf/module/exceptions.py:33 ++msgid "No such stream: {}" ++msgstr "没有对应的流:{}" ++ ++#: dnf/module/exceptions.py:39 ++msgid "No enabled stream for module: {}" ++msgstr "该模块没有已启用的流: {}" ++ ++#: dnf/module/exceptions.py:46 ++msgid "Cannot enable more streams from module '{}' at the same time" ++msgstr "不能同时启用模块:{} 中的多个流" ++ ++#: dnf/module/exceptions.py:52 ++msgid "Different stream enabled for module: {}" ++msgstr "模块中已启用的其他流:{}" ++ ++#: dnf/module/exceptions.py:58 ++msgid "No such profile: {}" ++msgstr "没有这个配置:{}" ++ ++#: dnf/module/exceptions.py:64 ++msgid "Specified profile not installed for {}" ++msgstr "指定的配置没有为 {} 安装" ++ ++#: dnf/module/exceptions.py:70 ++msgid "No stream specified for '{}', please specify stream" ++msgstr "没有为 '{}' 指定流。请指定流" ++ ++#: dnf/module/exceptions.py:82 ++msgid "No such profile: {}. No profiles available" ++msgstr "没有这个配置:{}。无配置可用" ++ ++#: dnf/module/exceptions.py:88 ++msgid "No profile to remove for '{}'" ++msgstr "'{}' 没有可以移除的配置" ++ ++#: dnf/module/module_base.py:35 + msgid "" + "\n" + "\n" +@@ -3751,7 +3797,7 @@ msgstr "" + "\n" + "提示:[d]默认,[e]已启用,[x]已禁用,[i]已安装" + +-#: dnf/module/module_base.py:34 ++#: dnf/module/module_base.py:36 + msgid "" + "\n" + "\n" +@@ -3761,80 +3807,97 @@ msgstr "" + "\n" + "提示 : [d]默认, [e]启用, [x]禁用, [i]已安装的, [a]活跃的" + +-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421 +-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543 ++#: dnf/module/module_base.py:56 dnf/module/module_base.py:556 ++#: dnf/module/module_base.py:615 dnf/module/module_base.py:681 + msgid "Ignoring unnecessary profile: '{}/{}'" + msgstr "正在忽略无用的配置文件'{}/{}'" + +-#: dnf/module/module_base.py:84 ++#: dnf/module/module_base.py:86 + #, python-brace-format + msgid "All matches for argument '{0}' in module '{1}:{2}' are not active" +-msgstr "模块 '{1}:{2}' 中参数 '{0}' 的所有匹配项目都未激活" ++msgstr "模块 '{1}:{2}' 中参数 '{0}' 的所有匹配项都未处于活动状态" + +-#: dnf/module/module_base.py:92 ++#: dnf/module/module_base.py:94 dnf/module/module_base.py:204 + #, python-brace-format + msgid "Installing module '{0}' from Fail-Safe repository {1} is not allowed" +-msgstr "不允许从失效保险仓库 {1} 安装模块 '{0}'" ++msgstr "不允许从自动防故障仓库 {1} 安装模块 '{0}'" + +-#: dnf/module/module_base.py:102 ++#: dnf/module/module_base.py:104 dnf/module/module_base.py:214 + msgid "" + "Unable to match profile for argument {}. Available profiles for '{}:{}': {}" + msgstr "不能为参数 {} 匹配配置文件。'{}:{}' 可用的配置文件为 : {}" + +-#: dnf/module/module_base.py:106 ++#: dnf/module/module_base.py:108 dnf/module/module_base.py:218 + msgid "Unable to match profile for argument {}" + msgstr "无法配置参数 {} 中的配置档案" + +-#: dnf/module/module_base.py:118 ++#: dnf/module/module_base.py:120 + msgid "No default profiles for module {}:{}. Available profiles: {}" + msgstr "模块 {}:{} 没有默认的配置文件。可用的配置为 : {}" + +-#: dnf/module/module_base.py:122 ++#: dnf/module/module_base.py:124 + msgid "No profiles for module {}:{}" + msgstr "没有模块 {}:{} 的配置文件" + +-#: dnf/module/module_base.py:129 ++#: dnf/module/module_base.py:131 + msgid "Default profile {} not available in module {}:{}" + msgstr "默认配置文件 {} 在模块 {}:{} 中不可用" + +-#: dnf/module/module_base.py:142 ++#: dnf/module/module_base.py:144 dnf/module/module_base.py:247 + msgid "Installing module from Fail-Safe repository is not allowed" +-msgstr "不允许从失效保险仓库中安装模块" ++msgstr "不允许从自动防故障仓库安装模块" ++ ++#: dnf/module/module_base.py:196 ++#, python-brace-format ++msgid "No active matches for argument '{0}' in module '{1}:{2}'" ++msgstr "模块 '{1}:{2}' 中的参数 '{0}' 没有活动匹配项" ++ ++#: dnf/module/module_base.py:228 ++#, python-brace-format ++msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'" ++msgstr "在模块 '{1}' 流 '{2}' 中没有安装的配置文件 '{0}'" + +-#: dnf/module/module_base.py:159 dnf/module/module_base.py:193 +-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355 +-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417 +-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539 ++#: dnf/module/module_base.py:267 ++msgid "No packages available to distrosync for package name '{}'" ++msgstr "软件包名称 '{}' 没有可用的软件包用于 distrosync" ++ ++#: dnf/module/module_base.py:310 dnf/module/module_base.py:461 ++#: dnf/module/module_base.py:486 dnf/module/module_base.py:505 ++#: dnf/module/module_base.py:552 dnf/module/module_base.py:611 ++#: dnf/module/module_base.py:677 dnf/module/module_base.py:840 + msgid "Unable to resolve argument {}" + msgstr "无法解析参数 {}" + +-#: dnf/module/module_base.py:160 +-msgid "No match for package {}" +-msgstr "没有和{}匹配的软件包" +- +-#: dnf/module/module_base.py:204 ++#: dnf/module/module_base.py:321 + #, python-brace-format + msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed" +-msgstr "不允许从失效保险仓库 {1} 中升级模块 '{0}'" ++msgstr "不允许从自动防故障仓库 {1} 升级模块 '{0}'" + +-#: dnf/module/module_base.py:223 dnf/module/module_base.py:251 ++#: dnf/module/module_base.py:340 dnf/module/module_base.py:368 + msgid "Unable to match profile in argument {}" + msgstr "无法匹配参数 {} 中的配置档案" + +-#: dnf/module/module_base.py:231 ++#: dnf/module/module_base.py:348 + msgid "Upgrading module from Fail-Safe repository is not allowed" +-msgstr "不允许从失效保险仓库中升级模块" ++msgstr "不允许从自动防故障仓库升级模块" ++ ++#: dnf/module/module_base.py:422 ++#, python-brace-format ++msgid "" ++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module " ++"'{module}', but none of the streams are enabled or default" ++msgstr "" ++"参数 '{argument}' 匹配模块 '{module}' 的 {stream_count} 流 ('{streams}') " ++",但是这些流都未被启用或为默认" + +-#: dnf/module/module_base.py:367 ++#: dnf/module/module_base.py:509 + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'{}'" ++"Only module name is required. Ignoring unneeded information in argument: '{}'" + msgstr "只需要模块名。正在忽略'{}'中的无用信息" + +-#: dnf/package.py:298 +-#, python-format +-msgid "%s: %s check failed: %s vs %s" +-msgstr "%s: %s 检查失败:%s vs %s" ++#: dnf/module/module_base.py:841 ++msgid "No match for package {}" ++msgstr "没有和{}匹配的软件包" + + #. empty file is invalid json format + #: dnf/persistor.py:54 +@@ -3845,12 +3908,12 @@ msgstr "%s 为空文件" + #: dnf/persistor.py:91 + #, python-format + msgid "Failed to load expired repos cache: %s" +-msgstr "" ++msgstr "加载过期的仓库缓存失败: %s" + + #: dnf/persistor.py:99 + #, python-format + msgid "Failed to store expired repos cache: %s" +-msgstr "" ++msgstr "存储已过期的仓库缓存失败: %s" + + #: dnf/persistor.py:106 + msgid "Failed storing last makecache time." +@@ -3870,16 +3933,16 @@ msgstr "解析文件失败:%s" + msgid "Loaded plugins: %s" + msgstr "加载插件:%s" + +-#: dnf/plugin.py:199 ++#: dnf/plugin.py:211 + #, python-format + msgid "Failed loading plugin \"%s\": %s" + msgstr "加载插件 \"%s\" 失败 : %s" + +-#: dnf/plugin.py:231 ++#: dnf/plugin.py:243 + msgid "No matches found for the following enable plugin patterns: {}" + msgstr "没有以下已启用插件模式的匹配项 : {}" + +-#: dnf/plugin.py:235 ++#: dnf/plugin.py:247 + msgid "No matches found for the following disable plugin patterns: {}" + msgstr "没有以下已停用插件模式的匹配项 : {}" + +@@ -3893,7 +3956,7 @@ msgid "Already downloaded" + msgstr "已下载" + + #. pinging mirrors, this might take a while +-#: dnf/repo.py:347 ++#: dnf/repo.py:346 + #, python-format + msgid "determining the fastest mirror (%s hosts).. " + msgstr "正在查找最快的镜像(%s 的主机) " +@@ -3908,10 +3971,26 @@ msgstr "正在启用 %s 仓库" + msgid "Added %s repo from %s" + msgstr "已添加 %s 仓库来自 %s" + ++#: dnf/rpm/miscutils.py:32 ++#, python-format ++msgid "Using rpmkeys executable at %s to verify signatures" ++msgstr "使用 %s 处的 rpmkeys 可执行文件来验证签名" ++ ++#: dnf/rpm/miscutils.py:66 ++msgid "Cannot find rpmkeys executable to verify signatures." ++msgstr "无法找到 rpmkeys 的可执行文件以验证签名。" ++ + #: dnf/rpm/transaction.py:119 + msgid "Errors occurred during test transaction." + msgstr "测试事务过程中出现错误。" + ++#: dnf/sack.py:47 ++msgid "" ++"allow_vendor_change is disabled. This option is currently not supported for " ++"downgrade and distro-sync commands" ++msgstr "" ++"allow_vendor_change 被禁用。此选项目前不支持 downgrade 和 distro-sync 命令" ++ + #. TRANSLATORS: This is for a single package currently being downgraded. + #: dnf/transaction.py:80 + msgctxt "currently" +@@ -3958,164 +4037,211 @@ msgstr "运行脚本" + msgid "Preparing" + msgstr "准备中" + +-#: dnf/transaction_sr.py:60 ++#: dnf/transaction_sr.py:66 + #, python-brace-format +-msgid "Errors in \"{filename}\":" +-msgstr "" ++msgid "" ++"The following problems occurred while replaying the transaction from file " ++"\"{filename}\":" ++msgstr "在重放来自文件 \"{filename}\" 的事务时出现了下列问题:" + +-#: dnf/transaction_sr.py:70 +-#, python-brace-format +-msgid "Error in \"{filename}\": {error}" +-msgstr "" ++#: dnf/transaction_sr.py:68 ++msgid "The following problems occurred while running a transaction:" ++msgstr "运行事务时发生以下问题:" + +-#: dnf/transaction_sr.py:87 ++#: dnf/transaction_sr.py:89 + #, python-brace-format + msgid "Invalid major version \"{major}\", number expected." +-msgstr "" ++msgstr "无效的主版本 \"{major}\",需要是数字。" + +-#: dnf/transaction_sr.py:95 ++#: dnf/transaction_sr.py:97 + #, python-brace-format + msgid "Invalid minor version \"{minor}\", number expected." +-msgstr "" ++msgstr "无效的次版本 \"{minor}\",需要是数字。" + +-#: dnf/transaction_sr.py:101 ++#: dnf/transaction_sr.py:103 + #, python-brace-format + msgid "" + "Incompatible major version \"{major}\", supported major version is " + "\"{major_supp}\"." +-msgstr "" ++msgstr "不兼容的主版本 \"{major}\",支持的主版本是 \"{major_supp}\"。" + +-#: dnf/transaction_sr.py:244 ++#: dnf/transaction_sr.py:224 ++msgid "" ++"Conflicting TransactionReplay arguments have been specified: filename, data" ++msgstr "指定了有冲突的 TransactionReplay 参数: filename、data" ++ ++#: dnf/transaction_sr.py:265 + #, python-brace-format + msgid "Unexpected type of \"{id}\", {exp} expected." +-msgstr "" ++msgstr "意外类型 \"{id}\",需要是 {exp}。" + +-#: dnf/transaction_sr.py:250 ++#: dnf/transaction_sr.py:271 + #, python-brace-format + msgid "Missing key \"{key}\"." +-msgstr "" ++msgstr "缺少键 \"{key}\"。" + +-#: dnf/transaction_sr.py:263 ++#: dnf/transaction_sr.py:285 + #, python-brace-format + msgid "Missing object key \"{key}\" in an rpm." +-msgstr "" ++msgstr "在 rpm 中缺少对象键 \"{key}\"。" + +-#: dnf/transaction_sr.py:267 ++#: dnf/transaction_sr.py:289 + #, python-brace-format +-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." +-msgstr "" ++msgid "" ++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." ++msgstr "rpm nevra \"{nevra}\" 的软件包原因 \"{reason}\" 的意外值。" + +-#: dnf/transaction_sr.py:275 ++#: dnf/transaction_sr.py:297 + #, python-brace-format + msgid "Cannot parse NEVRA for package \"{nevra}\"." +-msgstr "" ++msgstr "无法为软件包 \"{nevra}\" 解析 NEVRA。" + +-#: dnf/transaction_sr.py:286 ++#: dnf/transaction_sr.py:321 + #, python-brace-format + msgid "Cannot find rpm nevra \"{nevra}\"." +-msgstr "" ++msgstr "无法找到 rpm nevra \"{nevra}\"。" + +-#: dnf/transaction_sr.py:301 +-#, fuzzy, python-brace-format +-#| msgid "Package %s is already installed." ++#: dnf/transaction_sr.py:336 ++#, python-brace-format + msgid "Package \"{na}\" is already installed for action \"{action}\"." +-msgstr "软件包 %s 已安装。" ++msgstr "操作 \"{action}\" 的软件包 \"{na}\"已安装。" + +-#: dnf/transaction_sr.py:311 ++#: dnf/transaction_sr.py:345 + #, python-brace-format + msgid "" + "Package nevra \"{nevra}\" not available in repositories for action " + "\"{action}\"." +-msgstr "" ++msgstr "对于操作 \"{action}\",软件包 nevra \"{nevra}\" 未在软件仓库中提供。" + +-#: dnf/transaction_sr.py:322 ++#: dnf/transaction_sr.py:356 + #, python-brace-format + msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"." +-msgstr "" ++msgstr "没有为操作 \"{action}\" 安装软件包 nevra \"{nevra}\" 。" + +-#: dnf/transaction_sr.py:336 ++#: dnf/transaction_sr.py:370 + #, python-brace-format +-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." +-msgstr "" ++msgid "" ++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." ++msgstr "rpm nevra \"{nevra}\" 的软件包操作 \"{action}\" 的意外值。" + +-#: dnf/transaction_sr.py:343 +-#, fuzzy, python-format +-#| msgid "Module or Group '%s' is not available." ++#: dnf/transaction_sr.py:377 ++#, python-format + msgid "Group id '%s' is not available." +-msgstr "模块或者组 '%s' 不可用。" ++msgstr "组 id '%s' 不可用。" + +-#: dnf/transaction_sr.py:364 ++#: dnf/transaction_sr.py:398 + #, python-brace-format + msgid "Missing object key \"{key}\" in groups.packages." +-msgstr "" ++msgstr "在 groups.packages 中缺少对象键 \"{key}\"。" + +-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387 +-#, fuzzy, python-format +-#| msgid "Module or Group '%s' is not installed." ++#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421 ++#, python-format + msgid "Group id '%s' is not installed." +-msgstr "模块或者组 '%s' 未安装。" ++msgstr "组 id '%s' 未安装。" + +-#: dnf/transaction_sr.py:398 +-#, fuzzy, python-format +-#| msgid "Environment '%s' is not available." ++#: dnf/transaction_sr.py:432 ++#, python-format + msgid "Environment id '%s' is not available." +-msgstr "环境 '%s' 不可用。" ++msgstr "环境 id '%s' 不可用。" + +-#: dnf/transaction_sr.py:422 ++#: dnf/transaction_sr.py:456 + #, python-brace-format + msgid "" + "Invalid value \"{group_type}\" of environments.groups.group_type, only " + "\"mandatory\" or \"optional\" is supported." + msgstr "" ++"environments.groups.group_type 的值 \"{group_type}\" 无效,仅支持 \"mandatory" ++"\" 或者 \"optional\"。" + +-#: dnf/transaction_sr.py:430 ++#: dnf/transaction_sr.py:464 + #, python-brace-format + msgid "Missing object key \"{key}\" in environments.groups." +-msgstr "" ++msgstr "在 environment.groups 中缺少对象键 \"{key}\"。" + +-#: dnf/transaction_sr.py:508 ++#: dnf/transaction_sr.py:542 + #, python-brace-format + msgid "Unexpected value of group action \"{action}\" for group \"{group}\"." +-msgstr "" ++msgstr "对组 \"{group}\" 的组操作 \"{action}\" 的意外值。" + +-#: dnf/transaction_sr.py:513 ++#: dnf/transaction_sr.py:547 + #, python-brace-format + msgid "Missing object key \"{key}\" in a group." +-msgstr "" ++msgstr "在组中缺少对象键 \"{key}\"。" + +-#: dnf/transaction_sr.py:537 ++#: dnf/transaction_sr.py:571 + #, python-brace-format +-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"." +-msgstr "" ++msgid "" ++"Unexpected value of environment action \"{action}\" for environment " ++"\"{env}\"." ++msgstr "对环境 \"{env}\" 的环境操作 \"{action}\" 的意外值。" + +-#: dnf/transaction_sr.py:542 ++#: dnf/transaction_sr.py:576 + #, python-brace-format + msgid "Missing object key \"{key}\" in an environment." +-msgstr "" ++msgstr "在环境中缺少对象键 \"{key}\"。" + +-#: dnf/transaction_sr.py:581 ++#: dnf/transaction_sr.py:615 + #, python-brace-format + msgid "" +-"Package nevra \"{nevra}\", which is not present in the transaction file, was" +-" pulled into the transaction." +-msgstr "" ++"Package nevra \"{nevra}\", which is not present in the transaction file, was " ++"pulled into the transaction." ++msgstr "软件包 nevra \"{nevra}\" 没有包括在事务文件中,但它被拉取到事务中。" + +-#: dnf/util.py:391 dnf/util.py:393 ++#: dnf/util.py:419 dnf/util.py:421 + msgid "Problem" + msgstr "问题" + +-#: dnf/util.py:444 ++#: dnf/util.py:472 + msgid "TransactionItem not found for key: {}" + msgstr "找不到键的 TransactionItem: {}" + +-#: dnf/util.py:454 ++#: dnf/util.py:482 + msgid "TransactionSWDBItem not found for key: {}" + msgstr "找不到键的 TransactionSWDBItem: {}" + +-#: dnf/util.py:457 ++#: dnf/util.py:485 + msgid "Errors occurred during transaction." + msgstr "事务过程中出现错误。" + ++#: dnf/util.py:621 ++msgid "Reinstalled" ++msgstr "已重装" ++ ++#: dnf/util.py:622 ++msgid "Skipped" ++msgstr "已跳过" ++ ++#: dnf/util.py:623 ++msgid "Removed" ++msgstr "已移除" ++ ++#: dnf/util.py:626 ++msgid "Failed" ++msgstr "失败" ++ ++#~ msgid "skipping." ++#~ msgstr "正在跳过。" ++ ++#~ msgid "" ++#~ "Using rpmkeys executable from {path} to verify signature for package: " ++#~ "{package}." ++#~ msgstr "使用来自 {path} 的 rpmkeys 可执行代码验证软件包的签名:{package}。" ++ ++#~ msgid "%s: %s check failed: %s vs %s" ++#~ msgstr "%s: %s 检查失败:%s vs %s" ++ ++#~ msgid "Action not handled: {}" ++#~ msgstr "操作没被处理:{}" ++ ++#~ msgid "no package matched" ++#~ msgstr "没有能够与之匹配的软件包" ++ ++#~ msgid "Not found given transaction ID" ++#~ msgstr "未找到指定事务 ID" ++ ++#~ msgid "Undoing transaction {}, from {}" ++#~ msgstr "撤销事务 {},从 {}" ++ + #~ msgid "format for displaying found packages" + #~ msgstr "用于显示已查找到软件包的格式" + +@@ -4126,5 +4252,6 @@ msgstr "事务过程中出现错误。" + #~ msgstr "错误的事务 ID 或软件包" + + #~ msgid "" +-#~ "Display capabilities that the package depends on for running a %%pre script." ++#~ "Display capabilities that the package depends on for running a %%pre " ++#~ "script." + #~ msgstr "显示软件包运行一个 %%pre 脚本所依赖的功能" +diff --git a/po/zh_TW.po b/po/zh_TW.po +index b991c4f0..c43c0d5f 100644 +--- a/po/zh_TW.po ++++ b/po/zh_TW.po +@@ -11,10 +11,11 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" ++"POT-Creation-Date: 2022-02-28 11:24+0100\n" + "PO-Revision-Date: 2020-09-08 22:00+0000\n" + "Last-Translator: Cheng-Chia Tseng \n" +-"Language-Team: Chinese (Traditional) \n" ++"Language-Team: Chinese (Traditional) \n" + "Language: zh_TW\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" +@@ -67,7 +68,7 @@ msgstr "無法透過「%s」發送電子郵件:%s" + msgid "Failed to execute command '%s': returned %d" + msgstr "無法執行「%s」指令:已回傳 %d" + +-#: dnf/automatic/main.py:164 dnf/conf/config.py:151 ++#: dnf/automatic/main.py:164 + #, python-format + msgid "Unknown configuration value: %s=%s in %s; %s" + msgstr "未知的設定值:%s = %s 於 %s;%s" +@@ -77,7 +78,7 @@ msgstr "未知的設定值:%s = %s 於 %s;%s" + msgid "Unknown configuration option: %s = %s in %s" + msgstr "未知的設定選項:%s = %s 於 %s" + +-#: dnf/automatic/main.py:237 dnf/cli/cli.py:299 ++#: dnf/automatic/main.py:237 dnf/cli/cli.py:305 + msgid "GPG check FAILED" + msgstr "GPG 檢查失敗" + +@@ -90,9 +91,11 @@ msgid "Started dnf-automatic." + msgstr "已啟動 dnf-automatic。" + + #: dnf/automatic/main.py:308 +-#, python-format +-msgid "Sleep for %s seconds" +-msgstr "睡眠 %s 秒" ++#, fuzzy ++#| msgid "Sleep for %s seconds" ++msgid "Sleep for {} second" ++msgid_plural "Sleep for {} seconds" ++msgstr[0] "睡眠 %s 秒" + + #: dnf/automatic/main.py:315 + msgid "System is off-line." +@@ -104,439 +107,426 @@ msgstr "系統離線。" + msgid "Error: %s" + msgstr "錯誤:%s" + +-#: dnf/base.py:146 ++#: dnf/base.py:148 dnf/base.py:477 dnf/base.py:479 + msgid "loading repo '{}' failure: {}" + msgstr "載入「{}」軟體庫失敗:{}" + +-#: dnf/base.py:148 ++#: dnf/base.py:150 + msgid "Loading repository '{}' has failed" + msgstr "載入「{}」軟體庫時發生錯誤" + +-#: dnf/base.py:320 ++#: dnf/base.py:327 + msgid "Metadata timer caching disabled when running on metered connection." + msgstr "當以計費網路連線時,停用中介資料定時快取。" + +-#: dnf/base.py:325 ++#: dnf/base.py:332 + msgid "Metadata timer caching disabled when running on a battery." + msgstr "當使用電池時,停用中介資料定時快取。" + +-#: dnf/base.py:330 ++#: dnf/base.py:337 + msgid "Metadata timer caching disabled." + msgstr "已停用中介資料定時快取。" + +-#: dnf/base.py:335 ++#: dnf/base.py:342 + msgid "Metadata cache refreshed recently." + msgstr "中介資料的快取已於最近重新整理。" + +-#: dnf/base.py:341 dnf/cli/commands/__init__.py:91 ++#: dnf/base.py:348 dnf/cli/commands/__init__.py:91 + msgid "There are no enabled repositories in \"{}\"." + msgstr "「{}」中沒有啟用的軟體庫。" + +-#: dnf/base.py:348 ++#: dnf/base.py:355 + #, python-format + msgid "%s: will never be expired and will not be refreshed." + msgstr "%s:將永遠不會過期,且不會重新整理。" + +-#: dnf/base.py:350 ++#: dnf/base.py:357 + #, python-format + msgid "%s: has expired and will be refreshed." + msgstr "%s:已經過期,並將重新整理。" + + #. expires within the checking period: +-#: dnf/base.py:354 ++#: dnf/base.py:361 + #, python-format + msgid "%s: metadata will expire after %d seconds and will be refreshed now" + msgstr "%s:中介資料將會在 %d 秒後過期,現在將立刻重新整理" + +-#: dnf/base.py:358 ++#: dnf/base.py:365 + #, python-format + msgid "%s: will expire after %d seconds." + msgstr "%s:將會在 %d 秒後過期。" + + #. performs the md sync +-#: dnf/base.py:364 ++#: dnf/base.py:371 + msgid "Metadata cache created." + msgstr "已建立中介資料快取。" + +-#: dnf/base.py:397 ++#: dnf/base.py:404 dnf/base.py:471 + #, python-format + msgid "%s: using metadata from %s." + msgstr "%s:從 %s 使用中介資料。" + +-#: dnf/base.py:409 ++#: dnf/base.py:416 dnf/base.py:484 + #, python-format + msgid "Ignoring repositories: %s" + msgstr "忽略軟體庫:%s" + +-#: dnf/base.py:412 ++#: dnf/base.py:419 + #, python-format + msgid "Last metadata expiration check: %s ago on %s." + msgstr "上次中介資料過期檢查:%s 前,時間點為%s。" + +-#: dnf/base.py:443 ++#: dnf/base.py:512 + msgid "" + "The downloaded packages were saved in cache until the next successful " + "transaction." + msgstr "直到有下個成功處理事項為止,下載的軟體包會存在快取中。" + +-#: dnf/base.py:445 ++#: dnf/base.py:514 + #, python-format + msgid "You can remove cached packages by executing '%s'." + msgstr "您可以透過執行「%s」移除軟體包快取。" + +-#: dnf/base.py:535 ++#: dnf/base.py:606 + #, python-format + msgid "Invalid tsflag in config file: %s" + msgstr "在 config 檔案中無效的 tsflag:%s" + +-#: dnf/base.py:591 ++#: dnf/base.py:662 + #, python-format + msgid "Failed to add groups file for repository: %s - %s" + msgstr "為軟體庫建立群組檔案時失敗:%s - %s" + +-#: dnf/base.py:823 ++#: dnf/base.py:904 + msgid "Running transaction check" + msgstr "執行處理事項檢查" + +-#: dnf/base.py:831 ++#: dnf/base.py:912 + msgid "Error: transaction check vs depsolve:" + msgstr "錯誤:處理事項 check vs depsolve:" + +-#: dnf/base.py:837 ++#: dnf/base.py:918 + msgid "Transaction check succeeded." + msgstr "處理事項檢查成功。" + +-#: dnf/base.py:840 ++#: dnf/base.py:921 + msgid "Running transaction test" + msgstr "執行處理事項測試" + +-#: dnf/base.py:850 dnf/base.py:992 ++#: dnf/base.py:931 dnf/base.py:1082 + msgid "RPM: {}" + msgstr "RPM:{}" + +-#: dnf/base.py:851 ++#: dnf/base.py:932 + msgid "Transaction test error:" + msgstr "處理事項測試錯誤:" + +-#: dnf/base.py:862 ++#: dnf/base.py:943 + msgid "Transaction test succeeded." + msgstr "處理事項測試成功。" + +-#: dnf/base.py:883 ++#: dnf/base.py:964 + msgid "Running transaction" + msgstr "執行處理事項" + +-#: dnf/base.py:911 ++#: dnf/base.py:1001 + msgid "Disk Requirements:" + msgstr "需要磁碟:" + +-#: dnf/base.py:914 ++#: dnf/base.py:1004 + #, python-brace-format + msgid "At least {0}MB more space needed on the {1} filesystem." + msgid_plural "At least {0}MB more space needed on the {1} filesystem." + msgstr[0] "{1} 檔案系統需要至少 {0}MB 以上的空間。" + +-#: dnf/base.py:921 ++#: dnf/base.py:1011 + msgid "Error Summary" + msgstr "錯誤摘要" + +-#: dnf/base.py:947 ++#: dnf/base.py:1037 + #, python-brace-format + msgid "RPMDB altered outside of {prog}." + msgstr "RPMDB 在 {prog} 外有變動。" + +-#: dnf/base.py:993 dnf/base.py:1001 ++#: dnf/base.py:1083 dnf/base.py:1091 + msgid "Could not run transaction." + msgstr "無法執行處理事項。" + +-#: dnf/base.py:996 ++#: dnf/base.py:1086 + msgid "Transaction couldn't start:" + msgstr "無法啓動處理事項:" + +-#: dnf/base.py:1010 ++#: dnf/base.py:1100 + #, python-format + msgid "Failed to remove transaction file %s" + msgstr "移除處理事項檔案 %s 失敗" + +-#: dnf/base.py:1092 ++#: dnf/base.py:1182 + msgid "Some packages were not downloaded. Retrying." + msgstr "有些軟體包未下載。重試。" + +-#: dnf/base.py:1122 ++#: dnf/base.py:1212 + #, python-format + msgid "Delta RPMs reduced %.1f MB of updates to %.1f MB (%d.1%% saved)" + msgstr "Delta RPM 已將更新所需從 %.1f MB 減少為 %.1f MB(節省 %d.1%%)" + +-#: dnf/base.py:1125 ++#: dnf/base.py:1215 + #, python-format + msgid "" + "Failed Delta RPMs increased %.1f MB of updates to %.1f MB (%d.1%% wasted)" + msgstr "失敗的 Delta RPM 已將更新所需從 %.1f MB 增加為 %.1f MB(浪費 %d.1%%)" + +-#: dnf/base.py:1167 ++#: dnf/base.py:1257 + msgid "Cannot add local packages, because transaction job already exists" + msgstr "因為已經有處理事項工作,無法加入本機軟體包" + +-#: dnf/base.py:1181 ++#: dnf/base.py:1271 + msgid "Could not open: {}" + msgstr "無法開啟:{}" + +-#: dnf/base.py:1219 ++#: dnf/base.py:1309 + #, python-format + msgid "Public key for %s is not installed" + msgstr "%s 的公鑰尚未安裝" + +-#: dnf/base.py:1223 ++#: dnf/base.py:1313 + #, python-format + msgid "Problem opening package %s" + msgstr "開啟 %s 軟體包時發生問題" + +-#: dnf/base.py:1231 ++#: dnf/base.py:1321 + #, python-format + msgid "Public key for %s is not trusted" + msgstr "%s 的公鑰未被信任" + +-#: dnf/base.py:1235 ++#: dnf/base.py:1325 + #, python-format + msgid "Package %s is not signed" + msgstr "%s 軟體包尚未簽名" + +-#: dnf/base.py:1265 ++#: dnf/base.py:1355 + #, python-format + msgid "Cannot remove %s" + msgstr "無法移除 %s" + +-#: dnf/base.py:1269 ++#: dnf/base.py:1359 + #, python-format + msgid "%s removed" + msgstr "已移除 %s" + +-#: dnf/base.py:1549 ++#: dnf/base.py:1639 + msgid "No match for group package \"{}\"" + msgstr "找不到符合「{}」軟體包群組的項目" + +-#: dnf/base.py:1635 ++#: dnf/base.py:1721 + #, python-format + msgid "Adding packages from group '%s': %s" + msgstr "正在從群組「%s」加入軟體包:%s" + +-#: dnf/base.py:1658 dnf/cli/cli.py:219 dnf/cli/commands/__init__.py:442 +-#: dnf/cli/commands/__init__.py:499 dnf/cli/commands/__init__.py:592 +-#: dnf/cli/commands/__init__.py:641 dnf/cli/commands/install.py:80 ++#: dnf/base.py:1744 dnf/cli/cli.py:221 dnf/cli/commands/__init__.py:437 ++#: dnf/cli/commands/__init__.py:494 dnf/cli/commands/__init__.py:587 ++#: dnf/cli/commands/__init__.py:636 dnf/cli/commands/install.py:80 + #: dnf/cli/commands/install.py:103 dnf/cli/commands/install.py:110 + msgid "Nothing to do." + msgstr "無事可做。" + +-#: dnf/base.py:1676 ++#: dnf/base.py:1762 + msgid "No groups marked for removal." + msgstr "沒有標記為移除的群組。" + +-#: dnf/base.py:1710 ++#: dnf/base.py:1796 + msgid "No group marked for upgrade." + msgstr "沒有標記為升級的群組。" + +-#: dnf/base.py:1925 ++#: dnf/base.py:2010 + #, python-format + msgid "Package %s not installed, cannot downgrade it." + msgstr "尚未安裝軟體包 %s,所以無法降級。" + +-#: dnf/base.py:1927 dnf/base.py:1946 dnf/base.py:1959 dnf/base.py:1980 +-#: dnf/base.py:2029 dnf/base.py:2037 dnf/base.py:2172 dnf/cli/cli.py:411 +-#: dnf/cli/commands/__init__.py:425 dnf/cli/commands/__init__.py:482 +-#: dnf/cli/commands/__init__.py:586 dnf/cli/commands/__init__.py:633 +-#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/install.py:147 ++#: dnf/base.py:2012 dnf/base.py:2031 dnf/base.py:2044 dnf/base.py:2071 ++#: dnf/base.py:2124 dnf/base.py:2132 dnf/base.py:2266 dnf/cli/cli.py:417 ++#: dnf/cli/commands/__init__.py:420 dnf/cli/commands/__init__.py:477 ++#: dnf/cli/commands/__init__.py:581 dnf/cli/commands/__init__.py:628 ++#: dnf/cli/commands/__init__.py:706 dnf/cli/commands/install.py:147 + #: dnf/cli/commands/reinstall.py:70 dnf/cli/commands/reinstall.py:84 +-#: dnf/cli/commands/upgrade.py:110 dnf/cli/commands/upgrade.py:121 ++#: dnf/cli/commands/upgrade.py:105 dnf/cli/commands/upgrade.py:116 + #, python-format + msgid "No match for argument: %s" + msgstr "引數不符:%s" + +-#: dnf/base.py:1934 ++#: dnf/base.py:2019 + #, python-format + msgid "Package %s of lower version already installed, cannot downgrade it." + msgstr "已經安裝較舊版本的軟體包 %s,所以無法降級。" + +-#: dnf/base.py:1957 ++#: dnf/base.py:2042 + #, python-format + msgid "Package %s not installed, cannot reinstall it." + msgstr "尚未安裝軟體包 %s,所以無法重新安裝。" + +-#: dnf/base.py:1972 ++#: dnf/base.py:2057 + #, python-format + msgid "File %s is a source package and cannot be updated, ignoring." + msgstr "檔案 %s 為來源軟體包且無法更新,忽略。" + +-#: dnf/base.py:1978 ++#: dnf/base.py:2068 + #, python-format + msgid "Package %s not installed, cannot update it." + msgstr "尚未安裝軟體包 %s,所以無法更新。" + +-#: dnf/base.py:1987 ++#: dnf/base.py:2078 + #, python-format + msgid "" + "The same or higher version of %s is already installed, cannot update it." + msgstr "已經安裝同版或更新版的 %s,無法更新。" + +-#: dnf/base.py:2026 dnf/cli/commands/reinstall.py:81 ++#: dnf/base.py:2121 dnf/cli/commands/reinstall.py:81 + #, python-format + msgid "Package %s available, but not installed." + msgstr "軟體包 %s 可用,但尚未安裝。" + +-#: dnf/base.py:2032 ++#: dnf/base.py:2127 + #, python-format + msgid "Package %s available, but installed for different architecture." + msgstr "軟體包 %s 可用,但是針對不同架構安裝。" + +-#: dnf/base.py:2057 dnf/base.py:2250 dnf/cli/cli.py:668 dnf/cli/cli.py:699 ++#: dnf/base.py:2152 + #, python-format + msgid "No package %s installed." + msgstr "軟體包 %s 未安裝。" + +-#: dnf/base.py:2075 dnf/cli/commands/install.py:136 ++#: dnf/base.py:2170 dnf/cli/commands/install.py:136 + #: dnf/cli/commands/remove.py:133 + #, python-format + msgid "Not a valid form: %s" + msgstr "非有效格式:%s" + +-#: dnf/base.py:2091 dnf/cli/commands/__init__.py:681 +-#: dnf/cli/commands/remove.py:163 ++#: dnf/base.py:2185 dnf/cli/commands/__init__.py:676 ++#: dnf/cli/commands/remove.py:162 + msgid "No packages marked for removal." + msgstr "沒有軟體包標記為要移除。" + +-#: dnf/base.py:2179 dnf/cli/cli.py:422 ++#: dnf/base.py:2273 dnf/cli/cli.py:428 + #, python-format + msgid "Packages for argument %s available, but not installed." + msgstr "%s 引數的軟體包可用,但尚未安裝。" + +-#: dnf/base.py:2184 ++#: dnf/base.py:2278 + #, python-format + msgid "Package %s of lowest version already installed, cannot downgrade it." + msgstr "已經安裝最舊版本的軟體包 %s,所以無法降級。" + +-#: dnf/base.py:2242 +-msgid "Action not handled: {}" +-msgstr "未處理動作:{}" +- +-#: dnf/base.py:2256 dnf/cli/cli.py:419 dnf/cli/cli.py:673 dnf/cli/cli.py:703 +-#: dnf/cli/commands/group.py:400 dnf/cli/commands/history.py:169 +-#, python-format +-msgid "No package %s available." +-msgstr "沒有 %s 軟體包可用。" +- +-#: dnf/base.py:2269 +-msgid "no package matched" +-msgstr "沒有符合的軟體包" +- +-#: dnf/base.py:2290 ++#: dnf/base.py:2378 + msgid "No security updates needed, but {} update available" + msgstr "不需要任何的安全性更新,但有 {} 個更新可用" + +-#: dnf/base.py:2292 ++#: dnf/base.py:2380 + msgid "No security updates needed, but {} updates available" + msgstr "不需要任何的安全性更新,但有 {} 個更新可用" + +-#: dnf/base.py:2296 ++#: dnf/base.py:2384 + msgid "No security updates needed for \"{}\", but {} update available" + msgstr "不需要「{}」的任何安全性更新,但有 {} 個更新可用" + +-#: dnf/base.py:2298 ++#: dnf/base.py:2386 + msgid "No security updates needed for \"{}\", but {} updates available" + msgstr "不需要「{}」的任何安全性更新,但有 {} 個更新可用" + + #. raise an exception, because po.repoid is not in self.repos +-#: dnf/base.py:2319 ++#: dnf/base.py:2407 + #, python-format + msgid "Unable to retrieve a key for a commandline package: %s" + msgstr "無法擷取命令列軟體包的金鑰:%s" + +-#: dnf/base.py:2327 ++#: dnf/base.py:2415 + #, python-format + msgid ". Failing package is: %s" + msgstr "失敗的軟體包為:%s" + +-#: dnf/base.py:2328 ++#: dnf/base.py:2416 + #, python-format + msgid "GPG Keys are configured as: %s" + msgstr "GPG 金鑰已經設定為:%s" + +-#: dnf/base.py:2340 ++#: dnf/base.py:2428 + #, python-format + msgid "GPG key at %s (0x%s) is already installed" + msgstr "於 %s (0x%s) 的 GPG 密鑰已經安裝" + +-#: dnf/base.py:2373 ++#: dnf/base.py:2464 + msgid "The key has been approved." + msgstr "金鑰已經核可。" + +-#: dnf/base.py:2376 ++#: dnf/base.py:2467 + msgid "The key has been rejected." + msgstr "金鑰已被拒絕。" + +-#: dnf/base.py:2409 ++#: dnf/base.py:2500 + #, python-format + msgid "Key import failed (code %d)" + msgstr "密鑰匯入失敗(錯誤代碼 %d)" + +-#: dnf/base.py:2411 ++#: dnf/base.py:2502 + msgid "Key imported successfully" + msgstr "密鑰匯入成功" + +-#: dnf/base.py:2415 ++#: dnf/base.py:2506 + msgid "Didn't install any keys" + msgstr "無法安裝任何密鑰" + +-#: dnf/base.py:2418 ++#: dnf/base.py:2509 + #, python-format + msgid "" +-"The GPG keys listed for the \"%s\" repository are already installed but they are not correct for this package.\n" ++"The GPG keys listed for the \"%s\" repository are already installed but they " ++"are not correct for this package.\n" + "Check that the correct key URLs are configured for this repository." + msgstr "" + "列出的「%s」軟體庫 GPG 金鑰已經安裝,但這些金鑰對這個軟體包都不正確。\n" + "檢查這個軟體庫的不正確金鑰之網址設定。" + +-#: dnf/base.py:2429 ++#: dnf/base.py:2520 + msgid "Import of key(s) didn't help, wrong key(s)?" + msgstr "匯入的金鑰沒有作用,可能是因為金鑰是錯誤的?" + +-#: dnf/base.py:2482 ++#: dnf/base.py:2573 + msgid " * Maybe you meant: {}" + msgstr " * 或許您想要:{}" + +-#: dnf/base.py:2514 ++#: dnf/base.py:2605 + msgid "Package \"{}\" from local repository \"{}\" has incorrect checksum" + msgstr "「{}」軟體包來自本機「{}」軟體庫有不正確的 checksum" + +-#: dnf/base.py:2517 ++#: dnf/base.py:2608 + msgid "Some packages from local repository have incorrect checksum" + msgstr "來自本機軟體庫的部份軟體包有不正確的 checksum" + +-#: dnf/base.py:2520 ++#: dnf/base.py:2611 + msgid "Package \"{}\" from repository \"{}\" has incorrect checksum" + msgstr "「{}」軟體包來自「{}」軟體庫有不正確的 checksum" + +-#: dnf/base.py:2523 ++#: dnf/base.py:2614 + msgid "" + "Some packages have invalid cache, but cannot be downloaded due to \"--" + "cacheonly\" option" + msgstr "部份的軟體包有無效的快取,但是因為「--cacheonly」選項而無法下載" + +-#: dnf/base.py:2541 dnf/base.py:2561 ++#: dnf/base.py:2632 dnf/base.py:2652 + msgid "No match for argument" + msgstr "沒有符合引數的項目" + +-#: dnf/base.py:2549 dnf/base.py:2569 ++#: dnf/base.py:2640 dnf/base.py:2660 + msgid "All matches were filtered out by exclude filtering for argument" + msgstr "所有符合項目皆被引數的排除過濾器濾掉" + +-#: dnf/base.py:2551 ++#: dnf/base.py:2642 + msgid "All matches were filtered out by modular filtering for argument" + msgstr "所有符合項目皆被引數的模組化過濾器濾掉" + +-#: dnf/base.py:2567 ++#: dnf/base.py:2658 + msgid "All matches were installed from a different repository for argument" + msgstr "所有符合項目皆從引數的不同軟體庫安裝" + +-#: dnf/base.py:2583 ++#: dnf/base.py:2705 + #, python-format + msgid "Package %s is already installed." + msgstr "已安裝 %s 軟體包。" +@@ -556,8 +546,8 @@ msgstr "解析「%s」檔案失敗:%s" + msgid "Cannot read file \"%s\": %s" + msgstr "無法讀取「%s」檔案:%s" + +-#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:902 +-#: dnf/cli/cli.py:906 dnf/cli/commands/alias.py:108 ++#: dnf/cli/aliases.py:115 dnf/cli/aliases.py:129 dnf/cli/cli.py:804 ++#: dnf/cli/cli.py:808 dnf/cli/commands/alias.py:108 + #, python-format + msgid "Config error: %s" + msgstr "設定檔錯誤:%s" +@@ -588,44 +578,53 @@ msgid "" + "stream '{2}'" + msgstr "動作可能會導致「{0}」模組的「{1}」串流被切換到「{2}」串流" + +-#: dnf/cli/cli.py:172 +-#, python-brace-format ++#: dnf/cli/cli.py:173 ++#, fuzzy, python-brace-format ++#| msgid "" ++#| "It is not possible to switch enabled streams of a module.\n" ++#| "It is recommended to remove all installed content from the module, and " ++#| "reset the module using '{prog} module reset ' command. After " ++#| "you reset the module, you can install the other stream." + msgid "" +-"It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using '{prog} module reset ' command. After you reset the module, you can install the other stream." ++"It is not possible to switch enabled streams of a module unless explicitly " ++"enabled via configuration option module_stream_switch.\n" ++"It is recommended to rather remove all installed content from the module, " ++"and reset the module using '{prog} module reset ' command. " ++"After you reset the module, you can install the other stream." + msgstr "" + "無法切換模組的已啟用串流。\n" +-"建議移除模組的所有已安裝內容,並使用 '{prog} module reset ' 命令重設模組。重設完模組後,就可以安裝其他串流。" ++"建議移除模組的所有已安裝內容,並使用 '{prog} module reset ' 命令" ++"重設模組。重設完模組後,就可以安裝其他串流。" + +-#: dnf/cli/cli.py:210 ++#: dnf/cli/cli.py:212 + #, python-brace-format + msgid "{prog} will only download packages for the transaction." + msgstr "{prog} 將只會下載處理事項需要的軟體包。" + +-#: dnf/cli/cli.py:213 ++#: dnf/cli/cli.py:215 + #, python-brace-format + msgid "" + "{prog} will only download packages, install gpg keys, and check the " + "transaction." + msgstr "{prog} 只會下載軟體包、匯入 GPG 金鑰並檢查處理事項。" + +-#: dnf/cli/cli.py:217 ++#: dnf/cli/cli.py:219 + msgid "Operation aborted." + msgstr "取消作業。" + +-#: dnf/cli/cli.py:224 ++#: dnf/cli/cli.py:226 + msgid "Downloading Packages:" + msgstr "下載軟體包:" + +-#: dnf/cli/cli.py:230 ++#: dnf/cli/cli.py:232 + msgid "Error downloading packages:" + msgstr "下載軟體包時失敗:" + +-#: dnf/cli/cli.py:258 ++#: dnf/cli/cli.py:264 + msgid "Transaction failed" + msgstr "處理事項失敗" + +-#: dnf/cli/cli.py:281 ++#: dnf/cli/cli.py:287 + msgid "" + "Refusing to automatically import keys when running unattended.\n" + "Use \"-y\" to override." +@@ -633,116 +632,96 @@ msgstr "" + "當無人職守時,拒絕自動匯入密鑰。\n" + "使用「-y」覆蓋。" + +-#: dnf/cli/cli.py:331 ++#: dnf/cli/cli.py:337 + msgid "Changelogs for {}" + msgstr "{} 的變更記錄" + +-#: dnf/cli/cli.py:364 dnf/cli/cli.py:505 dnf/cli/cli.py:511 ++#: dnf/cli/cli.py:370 dnf/cli/cli.py:511 dnf/cli/cli.py:517 + msgid "Obsoleting Packages" + msgstr "棄用軟體包" + +-#: dnf/cli/cli.py:393 ++#: dnf/cli/cli.py:399 + msgid "No packages marked for distribution synchronization." + msgstr "沒有標記為與散布版同步的軟體包。" + +-#: dnf/cli/cli.py:428 ++#: dnf/cli/cli.py:425 dnf/cli/commands/group.py:395 ++#, python-format ++msgid "No package %s available." ++msgstr "沒有 %s 軟體包可用。" ++ ++#: dnf/cli/cli.py:434 + msgid "No packages marked for downgrade." + msgstr "沒有軟體包標記為降級。" + +-#: dnf/cli/cli.py:479 ++#: dnf/cli/cli.py:485 + msgid "Installed Packages" + msgstr "已安裝軟體包" + +-#: dnf/cli/cli.py:487 ++#: dnf/cli/cli.py:493 + msgid "Available Packages" + msgstr "可用的軟體包" + +-#: dnf/cli/cli.py:491 ++#: dnf/cli/cli.py:497 + msgid "Autoremove Packages" + msgstr "自動移除軟體包" + +-#: dnf/cli/cli.py:493 ++#: dnf/cli/cli.py:499 + msgid "Extra Packages" + msgstr "額外的軟體包" + +-#: dnf/cli/cli.py:497 ++#: dnf/cli/cli.py:503 + msgid "Available Upgrades" + msgstr "可用的升級" + +-#: dnf/cli/cli.py:513 ++#: dnf/cli/cli.py:519 + msgid "Recently Added Packages" + msgstr "最近加入的軟體包" + +-#: dnf/cli/cli.py:518 ++#: dnf/cli/cli.py:523 + msgid "No matching Packages to list" + msgstr "沒有符合的軟體包可列出" + +-#: dnf/cli/cli.py:599 ++#: dnf/cli/cli.py:604 + msgid "No Matches found" + msgstr "沒有符合項目" + +-#: dnf/cli/cli.py:609 +-msgid "No transaction ID given" +-msgstr "沒有提供處理事項識別碼" +- +-#: dnf/cli/cli.py:614 +-msgid "Not found given transaction ID" +-msgstr "找不到提供的處理事項識別碼" +- +-#: dnf/cli/cli.py:623 +-msgid "Found more than one transaction ID!" +-msgstr "找到超過一個處理事項識別碼!" +- +-#: dnf/cli/cli.py:640 +-#, python-format +-msgid "Transaction history is incomplete, before %u." +-msgstr "在 %u 之前,處理事項歷史紀錄不完整。" +- +-#: dnf/cli/cli.py:642 +-#, python-format +-msgid "Transaction history is incomplete, after %u." +-msgstr "在 %u 之後,處理事項歷史紀錄不完整。" +- +-#: dnf/cli/cli.py:689 +-msgid "Undoing transaction {}, from {}" +-msgstr "取消變更處理事項 {},從 {}" +- +-#: dnf/cli/cli.py:769 dnf/cli/commands/shell.py:237 ++#: dnf/cli/cli.py:671 dnf/cli/commands/shell.py:237 + #, python-format + msgid "Unknown repo: '%s'" + msgstr "未知的軟體庫:「%s」" + +-#: dnf/cli/cli.py:783 ++#: dnf/cli/cli.py:685 + #, python-format + msgid "No repository match: %s" + msgstr "沒有軟體庫符合:%s" + +-#: dnf/cli/cli.py:817 ++#: dnf/cli/cli.py:719 + msgid "" +-"This command has to be run with superuser privileges (under the root user on" +-" most systems)." ++"This command has to be run with superuser privileges (under the root user on " ++"most systems)." + msgstr "此命令需要以超級使用者權限執行(大部分系統是在 root 使用者下)。" + +-#: dnf/cli/cli.py:847 ++#: dnf/cli/cli.py:749 + #, python-format + msgid "No such command: %s. Please use %s --help" + msgstr "未知的指令:%s。請使用 %s --help" + +-#: dnf/cli/cli.py:850 ++#: dnf/cli/cli.py:752 + #, python-format, python-brace-format + msgid "" + "It could be a {PROG} plugin command, try: \"{prog} install 'dnf-" + "command(%s)'\"" +-msgstr "其可能是 {PROG} 插件的命令,請試試:「{prog} install 'dnf-command(%s)'」" ++msgstr "" ++"其可能是 {PROG} 插件的命令,請試試:「{prog} install 'dnf-command(%s)'」" + +-#: dnf/cli/cli.py:854 ++#: dnf/cli/cli.py:756 + #, python-brace-format + msgid "" + "It could be a {prog} plugin command, but loading of plugins is currently " + "disabled." + msgstr "其可能是 {prog} 插件的命令,但目前載入插件的功能處於停用狀態。" + +-#: dnf/cli/cli.py:912 ++#: dnf/cli/cli.py:814 + msgid "" + "--destdir or --downloaddir must be used with --downloadonly or download or " + "system-upgrade command." +@@ -750,52 +729,54 @@ msgstr "" + "--destdir 或 --downloaddir 必須與 --downloadonly、download 或 system-upgrade " + "指令一起使用。" + +-#: dnf/cli/cli.py:918 ++#: dnf/cli/cli.py:820 + msgid "" + "--enable, --set-enabled and --disable, --set-disabled must be used with " + "config-manager command." + msgstr "" +-"--enable、--set-enabled 及 --disable、--set-disabled 必須與 config-manager 命令一起使用。" ++"--enable、--set-enabled 及 --disable、--set-disabled 必須與 config-manager 命" ++"令一起使用。" + +-#: dnf/cli/cli.py:1000 ++#: dnf/cli/cli.py:902 + msgid "" + "Warning: Enforcing GPG signature check globally as per active RPM security " + "policy (see 'gpgcheck' in dnf.conf(5) for how to squelch this message)" + msgstr "" +-"警告:因為作用中的 RPM 安全性策略,已強制執行全域 GPG 簽名檢查(請參閱 dnf.conf(5) 的「gpgcheck」以了解如何隱藏此則訊息)" ++"警告:因為作用中的 RPM 安全性策略,已強制執行全域 GPG 簽名檢查(請參閱 dnf." ++"conf(5) 的「gpgcheck」以了解如何隱藏此則訊息)" + +-#: dnf/cli/cli.py:1020 ++#: dnf/cli/cli.py:922 + msgid "Config file \"{}\" does not exist" + msgstr "「{}」組態檔不存在" + +-#: dnf/cli/cli.py:1040 ++#: dnf/cli/cli.py:942 + msgid "" + "Unable to detect release version (use '--releasever' to specify release " + "version)" + msgstr "無法偵測發行版本(使用「--releasever」指定發行版本)" + +-#: dnf/cli/cli.py:1127 dnf/cli/commands/repoquery.py:471 ++#: dnf/cli/cli.py:1016 dnf/cli/commands/repoquery.py:471 + msgid "argument {}: not allowed with argument {}" + msgstr "引數 {}:不允許與 {} 引數使用" + +-#: dnf/cli/cli.py:1134 ++#: dnf/cli/cli.py:1023 + #, python-format + msgid "Command \"%s\" already defined" + msgstr "指令「%s」已經定義" + +-#: dnf/cli/cli.py:1154 ++#: dnf/cli/cli.py:1043 + msgid "Excludes in dnf.conf: " + msgstr "排除於 dnf.conf: " + +-#: dnf/cli/cli.py:1157 ++#: dnf/cli/cli.py:1046 + msgid "Includes in dnf.conf: " + msgstr "包含於 dnf.conf: " + +-#: dnf/cli/cli.py:1160 ++#: dnf/cli/cli.py:1049 + msgid "Excludes in repo " + msgstr "排除於軟體庫 " + +-#: dnf/cli/cli.py:1163 ++#: dnf/cli/cli.py:1052 + msgid "Includes in repo " + msgstr "包含於軟體庫 " + +@@ -813,7 +794,8 @@ msgstr "您的 RPMDB 可能損壞,可執行「%s」可能會修復這個問題 + #, python-brace-format + msgid "" + "You have enabled checking of packages via GPG keys. This is a good thing.\n" +-"However, you do not have any GPG public keys installed. You need to download\n" ++"However, you do not have any GPG public keys installed. You need to " ++"download\n" + "the keys for packages you wish to install and install them.\n" + "You can do that by running the command:\n" + " rpm --import public.gpg.key\n" +@@ -847,38 +829,38 @@ msgstr "有問題的軟體庫:%s" + msgid "display details about a package or group of packages" + msgstr "顯示軟體包中的軟體包或群組詳細資訊" + +-#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:740 ++#: dnf/cli/commands/__init__.py:168 dnf/cli/commands/__init__.py:735 + msgid "show all packages (default)" + msgstr "顯示所有軟體包(預設值)" + +-#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:743 +-#: dnf/cli/commands/module.py:351 ++#: dnf/cli/commands/__init__.py:171 dnf/cli/commands/__init__.py:738 ++#: dnf/cli/commands/module.py:376 + msgid "show only available packages" + msgstr "只顯示可用的軟體包" + +-#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:746 ++#: dnf/cli/commands/__init__.py:174 dnf/cli/commands/__init__.py:741 + msgid "show only installed packages" + msgstr "只顯示已安裝的軟體包" + +-#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:749 ++#: dnf/cli/commands/__init__.py:177 dnf/cli/commands/__init__.py:744 + msgid "show only extras packages" + msgstr "只顯示附加的軟體包" + + #: dnf/cli/commands/__init__.py:180 dnf/cli/commands/__init__.py:183 +-#: dnf/cli/commands/__init__.py:752 dnf/cli/commands/__init__.py:755 ++#: dnf/cli/commands/__init__.py:747 dnf/cli/commands/__init__.py:750 + msgid "show only upgrades packages" + msgstr "只顯示要升級的軟體包" + +-#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:758 ++#: dnf/cli/commands/__init__.py:186 dnf/cli/commands/__init__.py:753 + msgid "show only autoremove packages" + msgstr "只顯示要被自動移除的軟體包" + +-#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:761 ++#: dnf/cli/commands/__init__.py:189 dnf/cli/commands/__init__.py:756 + msgid "show only recently changed packages" + msgstr "只顯示最近變動的軟體包" + + #: dnf/cli/commands/__init__.py:190 dnf/cli/commands/__init__.py:265 +-#: dnf/cli/commands/__init__.py:774 dnf/cli/commands/autoremove.py:48 ++#: dnf/cli/commands/__init__.py:769 dnf/cli/commands/autoremove.py:48 + #: dnf/cli/commands/install.py:51 dnf/cli/commands/reinstall.py:44 + #: dnf/cli/commands/remove.py:61 dnf/cli/commands/upgrade.py:46 + msgid "PACKAGE" +@@ -916,70 +898,70 @@ msgstr "檢查可用的軟體包升級" + msgid "show changelogs before update" + msgstr "更新前顯示變更記錄" + +-#: dnf/cli/commands/__init__.py:361 dnf/cli/commands/__init__.py:414 +-#: dnf/cli/commands/__init__.py:470 ++#: dnf/cli/commands/__init__.py:356 dnf/cli/commands/__init__.py:409 ++#: dnf/cli/commands/__init__.py:465 + msgid "No package available." + msgstr "沒有可用的軟體包。" + +-#: dnf/cli/commands/__init__.py:376 ++#: dnf/cli/commands/__init__.py:371 + msgid "No packages marked for install." + msgstr "沒有軟體包標記為安裝。" + +-#: dnf/cli/commands/__init__.py:412 ++#: dnf/cli/commands/__init__.py:407 + msgid "No package installed." + msgstr "沒有已安裝的軟體包。" + +-#: dnf/cli/commands/__init__.py:432 dnf/cli/commands/__init__.py:489 ++#: dnf/cli/commands/__init__.py:427 dnf/cli/commands/__init__.py:484 + #: dnf/cli/commands/reinstall.py:91 + #, python-format + msgid " (from %s)" + msgstr " (來自 %s)" + +-#: dnf/cli/commands/__init__.py:433 dnf/cli/commands/__init__.py:490 ++#: dnf/cli/commands/__init__.py:428 dnf/cli/commands/__init__.py:485 + #: dnf/cli/commands/reinstall.py:92 dnf/cli/commands/remove.py:105 + #, python-format + msgid "Installed package %s%s not available." + msgstr "已安裝的軟體包 %s%s 不可用。" + +-#: dnf/cli/commands/__init__.py:467 dnf/cli/commands/__init__.py:576 +-#: dnf/cli/commands/__init__.py:619 dnf/cli/commands/__init__.py:666 ++#: dnf/cli/commands/__init__.py:462 dnf/cli/commands/__init__.py:571 ++#: dnf/cli/commands/__init__.py:614 dnf/cli/commands/__init__.py:661 + msgid "No package installed from the repository." + msgstr "沒有來自這個軟體庫的已安裝軟體包。" + +-#: dnf/cli/commands/__init__.py:530 dnf/cli/commands/reinstall.py:101 ++#: dnf/cli/commands/__init__.py:525 dnf/cli/commands/reinstall.py:101 + msgid "No packages marked for reinstall." + msgstr "沒有軟體包標記為要重新安裝。" + +-#: dnf/cli/commands/__init__.py:716 dnf/cli/commands/upgrade.py:89 ++#: dnf/cli/commands/__init__.py:711 dnf/cli/commands/upgrade.py:84 + msgid "No packages marked for upgrade." + msgstr "沒有軟體包為升級標記。" + +-#: dnf/cli/commands/__init__.py:726 ++#: dnf/cli/commands/__init__.py:721 + msgid "run commands on top of all packages in given repository" + msgstr "在提供的軟體庫於所有軟體包的頂端執行指令" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "REPOID" + msgstr "REPOID" + +-#: dnf/cli/commands/__init__.py:765 ++#: dnf/cli/commands/__init__.py:760 + msgid "Repository ID" + msgstr "軟體庫 ID" + +-#: dnf/cli/commands/__init__.py:777 dnf/cli/commands/mark.py:48 ++#: dnf/cli/commands/__init__.py:772 dnf/cli/commands/mark.py:48 + #: dnf/cli/commands/updateinfo.py:108 + msgid "Package specification" + msgstr "軟體包規格" + +-#: dnf/cli/commands/__init__.py:801 ++#: dnf/cli/commands/__init__.py:796 + msgid "display a helpful usage message" + msgstr "顯示用法說明訊息" + +-#: dnf/cli/commands/__init__.py:805 ++#: dnf/cli/commands/__init__.py:800 + msgid "COMMAND" + msgstr "指令" + +-#: dnf/cli/commands/__init__.py:806 ++#: dnf/cli/commands/__init__.py:801 + #, python-brace-format + msgid "{prog} command to get help for" + msgstr "要取得說明的 {prog} 命令" +@@ -1150,7 +1132,11 @@ msgid "Waiting for process with pid %d to finish." + msgstr "正在等候 PID %d 處理程序完成。" + + #: dnf/cli/commands/deplist.py:32 +-msgid "List package's dependencies and what packages provide them" ++#, fuzzy ++#| msgid "List package's dependencies and what packages provide them" ++msgid "" ++"[deprecated, use repoquery --deplist] List package's dependencies and what " ++"packages provide them" + msgstr "列出軟體包的依賴關係以及由何軟體包提供" + + #: dnf/cli/commands/distrosync.py:32 +@@ -1177,78 +1163,78 @@ msgstr "顯示或使用群組資訊" + msgid "No group data available for configured repositories." + msgstr "設定的軟體庫沒有可用的群組資料。" + +-#: dnf/cli/commands/group.py:129 ++#: dnf/cli/commands/group.py:126 + #, python-format + msgid "Warning: Group %s does not exist." + msgstr "警告: %s 群組不存在。" + +-#: dnf/cli/commands/group.py:170 ++#: dnf/cli/commands/group.py:167 + msgid "Warning: No groups match:" + msgstr "警告:沒有符合的群組:" + +-#: dnf/cli/commands/group.py:182 dnf/cli/commands/group.py:193 +-#: dnf/cli/output.py:1226 ++#: dnf/cli/commands/group.py:179 dnf/cli/commands/group.py:190 ++#: dnf/cli/output.py:1139 + msgid "" + msgstr "<名稱未設定>" + +-#: dnf/cli/commands/group.py:199 ++#: dnf/cli/commands/group.py:196 + msgid "Available Environment Groups:" + msgstr "可用的環境群組:" + +-#: dnf/cli/commands/group.py:201 ++#: dnf/cli/commands/group.py:198 + msgid "Installed Environment Groups:" + msgstr "已安裝的環境群組:" + +-#: dnf/cli/commands/group.py:208 dnf/cli/commands/group.py:294 ++#: dnf/cli/commands/group.py:205 dnf/cli/commands/group.py:291 + msgid "Installed Groups:" + msgstr "已安裝的群組:" + +-#: dnf/cli/commands/group.py:215 dnf/cli/commands/group.py:301 ++#: dnf/cli/commands/group.py:212 dnf/cli/commands/group.py:298 + msgid "Installed Language Groups:" + msgstr "已安裝的語言群組:" + +-#: dnf/cli/commands/group.py:225 dnf/cli/commands/group.py:308 ++#: dnf/cli/commands/group.py:222 dnf/cli/commands/group.py:305 + msgid "Available Groups:" + msgstr "可用的群組:" + +-#: dnf/cli/commands/group.py:232 dnf/cli/commands/group.py:315 ++#: dnf/cli/commands/group.py:229 dnf/cli/commands/group.py:312 + msgid "Available Language Groups:" + msgstr "可用的語言群組:" + +-#: dnf/cli/commands/group.py:322 ++#: dnf/cli/commands/group.py:319 + msgid "include optional packages from group" + msgstr "包含群組提供的選用軟體包" + +-#: dnf/cli/commands/group.py:325 ++#: dnf/cli/commands/group.py:322 + msgid "show also hidden groups" + msgstr "也顯示隱藏群組" + +-#: dnf/cli/commands/group.py:327 ++#: dnf/cli/commands/group.py:324 + msgid "show only installed groups" + msgstr "僅顯示已安裝的群組" + +-#: dnf/cli/commands/group.py:329 ++#: dnf/cli/commands/group.py:326 + msgid "show only available groups" + msgstr "僅顯示可用的群組" + +-#: dnf/cli/commands/group.py:331 ++#: dnf/cli/commands/group.py:328 + msgid "show also ID of groups" + msgstr "亦顯示群組 ID" + +-#: dnf/cli/commands/group.py:333 ++#: dnf/cli/commands/group.py:330 + msgid "available subcommands: {} (default), {}" + msgstr "可用的子命令:{} (預設)、{}" + +-#: dnf/cli/commands/group.py:337 ++#: dnf/cli/commands/group.py:334 + msgid "argument for group subcommand" + msgstr "群組子命令的引數" + +-#: dnf/cli/commands/group.py:346 ++#: dnf/cli/commands/group.py:343 + #, python-format + msgid "Invalid groups sub-command, use: %s." + msgstr "無效的群組子指令,請用:%s。" + +-#: dnf/cli/commands/group.py:403 ++#: dnf/cli/commands/group.py:398 + msgid "Unable to find a mandatory group package." + msgstr "找不到強制群組軟體包。" + +@@ -1262,8 +1248,8 @@ msgstr "" + + #: dnf/cli/commands/history.py:68 + msgid "" +-"For the replay command, don't check for installed packages matching those in" +-" transaction" ++"For the replay command, don't check for installed packages matching those in " ++"transaction" + msgstr "" + + #: dnf/cli/commands/history.py:71 +@@ -1274,8 +1260,8 @@ msgstr "" + + #: dnf/cli/commands/history.py:74 + msgid "" +-"For the replay command, skip packages that are not available or have missing" +-" dependencies" ++"For the replay command, skip packages that are not available or have missing " ++"dependencies" + msgstr "" + + #: dnf/cli/commands/history.py:94 +@@ -1298,30 +1284,58 @@ msgstr "沒有提供處理事項識別碼或軟體包名稱。" + msgid "More than one argument given as transaction file name." + msgstr "移除處理事項檔案 %s 失敗" + +-#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:126 ++#: dnf/cli/commands/history.py:122 dnf/cli/commands/history.py:130 + msgid "No transaction ID or package name given." + msgstr "沒有提供處理事項識別碼或軟體包名稱。" + +-#: dnf/cli/commands/history.py:138 ++#: dnf/cli/commands/history.py:142 + #, python-format + msgid "You don't have access to the history DB: %s" + msgstr "您沒有權限存取歷史紀錄資料庫:%s" + +-#: dnf/cli/commands/history.py:147 ++#: dnf/cli/commands/history.py:151 + #, python-format + msgid "" +-"Cannot undo transaction %s, doing so would result in an inconsistent package" +-" database." ++"Cannot undo transaction %s, doing so would result in an inconsistent package " ++"database." + msgstr "無法復原處理事項 %s,這樣做會導致軟體包資料庫不一致。" + +-#: dnf/cli/commands/history.py:152 ++#: dnf/cli/commands/history.py:156 + #, python-format + msgid "" + "Cannot rollback transaction %s, doing so would result in an inconsistent " + "package database." + msgstr "無法回滾處理事項 %s,這樣做會導致軟體包資料庫不一致。" + +-#: dnf/cli/commands/history.py:222 ++#: dnf/cli/commands/history.py:175 ++msgid "No transaction ID given" ++msgstr "沒有提供處理事項識別碼" ++ ++#: dnf/cli/commands/history.py:179 ++#, fuzzy, python-brace-format ++#| msgid "TransactionItem not found for key: {}" ++msgid "Transaction ID \"{0}\" not found." ++msgstr "找不到下述鍵的 TransactionItem:{}" ++ ++#: dnf/cli/commands/history.py:185 ++msgid "Found more than one transaction ID!" ++msgstr "找到超過一個處理事項識別碼!" ++ ++#: dnf/cli/commands/history.py:203 ++#, python-format ++msgid "Transaction history is incomplete, before %u." ++msgstr "在 %u 之前,處理事項歷史紀錄不完整。" ++ ++#: dnf/cli/commands/history.py:205 ++#, python-format ++msgid "Transaction history is incomplete, after %u." ++msgstr "在 %u 之後,處理事項歷史紀錄不完整。" ++ ++#: dnf/cli/commands/history.py:256 ++msgid "No packages to list" ++msgstr "沒有要列出的軟體包" ++ ++#: dnf/cli/commands/history.py:279 + msgid "" + "Invalid transaction ID range definition '{}'.\n" + "Use '..'." +@@ -1329,7 +1343,7 @@ msgstr "" + "無效的處理事項識別碼範圍定義「{}」。\n" + "使用「..」。" + +-#: dnf/cli/commands/history.py:226 ++#: dnf/cli/commands/history.py:283 + msgid "" + "Can't convert '{}' to transaction ID.\n" + "Use '', 'last', 'last-'." +@@ -1337,39 +1351,32 @@ msgstr "" + "無法將「{}」轉為處理事項 ID。\n" + "請使用 '<數字>'、'last'、'last-<數字>'。" + +-#: dnf/cli/commands/history.py:255 ++#: dnf/cli/commands/history.py:312 + msgid "No transaction which manipulates package '{}' was found." + msgstr "找不到操作「{}」軟體包的處理事項。" + +-#: dnf/cli/commands/history.py:305 +-#, fuzzy, python-brace-format +-#| msgid "TransactionItem not found for key: {}" +-msgid "Transaction ID \"{id}\" not found." +-msgstr "找不到下述鍵的 TransactionItem:{}" +- +-#: dnf/cli/commands/history.py:313 ++#: dnf/cli/commands/history.py:357 + msgid "{} exists, overwrite?" + msgstr "" + +-#: dnf/cli/commands/history.py:316 ++#: dnf/cli/commands/history.py:360 + msgid "Not overwriting {}, exiting." + msgstr "" + +-#: dnf/cli/commands/history.py:323 ++#: dnf/cli/commands/history.py:367 + #, fuzzy + #| msgid "Transaction failed" + msgid "Transaction saved to {}." + msgstr "處理事項失敗" + +-#: dnf/cli/commands/history.py:326 ++#: dnf/cli/commands/history.py:370 + #, fuzzy + #| msgid "Errors occurred during transaction." + msgid "Error storing transaction: {}" + msgstr "在處理事項時發生錯誤。" + +-#: dnf/cli/commands/history.py:350 +-msgid "" +-"Warning, the following problems occurred while replaying the transaction:" ++#: dnf/cli/commands/history.py:386 ++msgid "Warning, the following problems occurred while running a transaction:" + msgstr "" + + #: dnf/cli/commands/install.py:47 +@@ -1389,7 +1396,7 @@ msgstr "找不到符合項目" + msgid "Not a valid rpm file path: %s" + msgstr "無效 RPM 檔案位址:%s" + +-#: dnf/cli/commands/install.py:167 ++#: dnf/cli/commands/install.py:166 + #, python-brace-format + msgid "There are following alternatives for \"{0}\": {1}" + msgstr "以下可以用來替代「{0}」:{1}" +@@ -1432,7 +1439,7 @@ msgid "%s marked as group installed." + msgstr "%s 標記為群組安裝。" + + #: dnf/cli/commands/mark.py:85 dnf/cli/commands/shell.py:129 +-#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:279 ++#: dnf/cli/commands/shell.py:237 dnf/cli/commands/shell.py:282 + msgid "Error:" + msgstr "錯誤:" + +@@ -1441,89 +1448,93 @@ msgstr "錯誤:" + msgid "Package %s is not installed." + msgstr "%s 軟體包尚未安裝。" + +-#: dnf/cli/commands/module.py:51 ++#: dnf/cli/commands/module.py:54 + msgid "" +-"Only module name, stream, architecture or profile is used. Ignoring unneeded" +-" information in argument: '{}'" ++"Only module name, stream, architecture or profile is used. Ignoring unneeded " ++"information in argument: '{}'" + msgstr "只使用模組名稱、串流、架構或設定檔。忽略引數中的非必要資訊:「{}」" + +-#: dnf/cli/commands/module.py:77 ++#: dnf/cli/commands/module.py:80 + msgid "list all module streams, profiles and states" + msgstr "列出所有的模組串流、設定檔及狀態" + +-#: dnf/cli/commands/module.py:105 dnf/cli/commands/module.py:128 ++#: dnf/cli/commands/module.py:108 dnf/cli/commands/module.py:131 + msgid "No matching Modules to list" + msgstr "沒有要列出的符合模組" + +-#: dnf/cli/commands/module.py:111 ++#: dnf/cli/commands/module.py:114 + msgid "print detailed information about a module" + msgstr "輸出詳細模組資訊" + +-#: dnf/cli/commands/module.py:133 ++#: dnf/cli/commands/module.py:136 + msgid "enable a module stream" + msgstr "啟用模組串流" + +-#: dnf/cli/commands/module.py:157 ++#: dnf/cli/commands/module.py:160 + msgid "disable a module with all its streams" + msgstr "停用模組及其所有串流" + +-#: dnf/cli/commands/module.py:181 ++#: dnf/cli/commands/module.py:184 + msgid "reset a module" + msgstr "重設模組" + +-#: dnf/cli/commands/module.py:202 ++#: dnf/cli/commands/module.py:205 + msgid "install a module profile including its packages" + msgstr "安裝包含其軟體的模組設定檔" + +-#: dnf/cli/commands/module.py:223 ++#: dnf/cli/commands/module.py:226 + msgid "update packages associated with an active stream" + msgstr "更新與作用中串流關聯的軟體包" + +-#: dnf/cli/commands/module.py:240 ++#: dnf/cli/commands/module.py:243 + msgid "remove installed module profiles and their packages" + msgstr "移除安裝的模組設定檔及其軟體包" + +-#: dnf/cli/commands/module.py:264 ++#: dnf/cli/commands/module.py:267 + msgid "Package {} belongs to multiple modules, skipping" + msgstr "{} 軟體包屬於多個模組,跳過" + +-#: dnf/cli/commands/module.py:277 ++#: dnf/cli/commands/module.py:280 ++msgid "switch a module to a stream and distrosync rpm packages" ++msgstr "" ++ ++#: dnf/cli/commands/module.py:302 + msgid "list modular packages" + msgstr "列出模組化軟體包" + +-#: dnf/cli/commands/module.py:292 ++#: dnf/cli/commands/module.py:317 + msgid "list packages belonging to a module" + msgstr "列出屬於模組的軟體包" + +-#: dnf/cli/commands/module.py:327 ++#: dnf/cli/commands/module.py:352 + msgid "Interact with Modules." + msgstr "與模組互動。" + +-#: dnf/cli/commands/module.py:340 ++#: dnf/cli/commands/module.py:365 + msgid "show only enabled modules" + msgstr "只顯示已啟用的模組" + +-#: dnf/cli/commands/module.py:343 ++#: dnf/cli/commands/module.py:368 + msgid "show only disabled modules" + msgstr "只顯示已停用的模組" + +-#: dnf/cli/commands/module.py:346 ++#: dnf/cli/commands/module.py:371 + msgid "show only installed modules or packages" + msgstr "只顯示安裝的模組或軟體包" + +-#: dnf/cli/commands/module.py:349 ++#: dnf/cli/commands/module.py:374 + msgid "show profile content" + msgstr "顯示設定檔內容" + +-#: dnf/cli/commands/module.py:354 ++#: dnf/cli/commands/module.py:379 + msgid "remove all modular packages" + msgstr "移除所有模組化軟體包" + +-#: dnf/cli/commands/module.py:364 ++#: dnf/cli/commands/module.py:389 + msgid "Module specification" + msgstr "模組規格" + +-#: dnf/cli/commands/module.py:386 ++#: dnf/cli/commands/module.py:411 + msgid "{} {} {}: too few arguments" + msgstr "{} {} {}:引數過少" + +@@ -1712,7 +1723,8 @@ msgstr "搜尋軟體包符合的關鍵詞" + msgid "" + "Query all packages (shorthand for repoquery '*' or repoquery without " + "argument)" +-msgstr "查詢所有軟體包(為軟體包查詢「*」或不包含引數的軟體包查詢的 shorthand)" ++msgstr "" ++"查詢所有軟體包(為軟體包查詢「*」或不包含引數的軟體包查詢的 shorthand)" + + #: dnf/cli/commands/repoquery.py:124 + msgid "Query all versions of packages (default)" +@@ -1798,7 +1810,8 @@ msgstr "在相應的來源 RPM 上執行" + msgid "" + "show N latest packages for a given name.arch (or latest but N if N is " + "negative)" +-msgstr "為提供的 name.arch 顯示 N 個最新的軟體包(或最新、除了 N 如果 N 是否定的)" ++msgstr "" ++"為提供的 name.arch 顯示 N 個最新的軟體包(或最新、除了 N 如果 N 是否定的)" + + #: dnf/cli/commands/repoquery.py:177 + msgid "list also packages of inactive module streams" +@@ -1823,9 +1836,11 @@ msgstr "顯示軟體包的變更紀錄" + #: dnf/cli/commands/repoquery.py:194 + #, python-format, python-brace-format + msgid "" +-"display format for listing packages: \"%%{name} %%{version} ...\", use " +-"--querytags to view full tag list" +-msgstr "軟體包清單的顯示格式:「%%{name} %%{version} ...」,使用 --querytags 檢視完整標籤清單" ++"display format for listing packages: \"%%{name} %%{version} ...\", use --" ++"querytags to view full tag list" ++msgstr "" ++"軟體包清單的顯示格式:「%%{name} %%{version} ...」,使用 --querytags 檢視完整" ++"標籤清單" + + #: dnf/cli/commands/repoquery.py:198 + msgid "show available tags to use with --queryformat" +@@ -1835,7 +1850,8 @@ msgstr "與 --queryformat 顯示可供使用的標籤" + msgid "" + "use name-epoch:version-release.architecture format for displaying found " + "packages (default)" +-msgstr "使用 name-epoch:version-release.architecture 格式來顯示找到的軟體包(預設值)" ++msgstr "" ++"使用 name-epoch:version-release.architecture 格式來顯示找到的軟體包(預設值)" + + #: dnf/cli/commands/repoquery.py:205 + msgid "" +@@ -1902,8 +1918,8 @@ msgid "" + "running %%pre and %%post scriptlets. If the package is installed display " + "capabilities that is depends for %%pre, %%post, %%preun and %%postun." + msgstr "" +-"如果未安裝軟體包,則顯示執行 %%pre 及 %%post 小令稿所依賴的功能。如果已安裝軟體包,則顯示執行 %%pre、%%post、%%preun " +-"以及 %%postun 小令稿所依賴的功能。" ++"如果未安裝軟體包,則顯示執行 %%pre 及 %%post 小令稿所依賴的功能。如果已安裝軟" ++"體包,則顯示執行 %%pre、%%post、%%preun 以及 %%postun 小令稿所依賴的功能。" + + #: dnf/cli/commands/repoquery.py:243 + msgid "Display capabilities that the package suggests." +@@ -1952,23 +1968,23 @@ msgstr "要搜尋的關鍵詞:" + + #: dnf/cli/commands/repoquery.py:295 + msgid "" +-"Option '--resolve' has to be used together with one of the '--conflicts', '" +-"--depends', '--enhances', '--provides', '--recommends', '--requires', '--" ++"Option '--resolve' has to be used together with one of the '--conflicts', '--" ++"depends', '--enhances', '--provides', '--recommends', '--requires', '--" + "requires-pre', '--suggests' or '--supplements' options" + msgstr "" +-"選項 '--resolve' 需要與 '--conflicts', '--depends', '--enhances', '--provides', '" +-"--recommends', '--requires', '--requires-pre', '--suggests' 或 '--" +-"supplements' 選項一起使用" ++"選項 '--resolve' 需要與 '--conflicts', '--depends', '--enhances', '--" ++"provides', '--recommends', '--requires', '--requires-pre', '--suggests' 或 " ++"'--supplements' 選項一起使用" + + #: dnf/cli/commands/repoquery.py:305 + msgid "" + "Option '--recursive' has to be used with '--whatrequires ' (optionally " +-"with '--alldeps', but not with '--exactdeps'), or with '--requires " +-"--resolve'" ++"with '--alldeps', but not with '--exactdeps'), or with '--requires --" ++"resolve'" + msgstr "" +-"「--recursive」選項必須與「--whatrequires " +-"」一起使用(可以選擇與「--alldeps」一起使用,但不可以是「--exactdeps」),或是與「--requires " +-"--resolve」一起使用" ++"「--recursive」選項必須與「--whatrequires 」一起使用(可以選擇與「--" ++"alldeps」一起使用,但不可以是「--exactdeps」),或是與「--requires --" ++"resolve」一起使用" + + #: dnf/cli/commands/repoquery.py:312 + msgid "argument {} requires --whatrequires or --whatdepends option" +@@ -1982,13 +1998,17 @@ msgstr "軟體包 {} 不包含任何檔案" + #, python-brace-format + msgid "" + "No valid switch specified\n" +-"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"usage: {prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--" ++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--" ++"tree]\n" + "\n" + "description:\n" + " For the given packages print a tree of thepackages." + msgstr "" + "未指定有效的開關選項\n" +-"用法:{prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--tree]\n" ++"用法:{prog} repoquery [--conflicts|--enhances|--obsoletes|--provides|--" ++"recommends|--requires|--suggest|--supplements|--whatrequires] [key] [--" ++"tree]\n" + "\n" + "描述:\n" + " 列出提供軟體包的樹狀圖。" +@@ -2009,27 +2029,26 @@ msgstr "KEYWORD" + msgid "Keyword to search for" + msgstr "要搜尋的關鍵字" + +-#: dnf/cli/commands/search.py:61 dnf/cli/output.py:506 ++#: dnf/cli/commands/search.py:61 dnf/cli/output.py:460 + msgctxt "long" + msgid "Name" + msgstr "名稱" + +-#: dnf/cli/commands/search.py:62 dnf/cli/output.py:559 ++#: dnf/cli/commands/search.py:62 dnf/cli/output.py:513 + msgctxt "long" + msgid "Summary" + msgstr "摘要" + +-#: dnf/cli/commands/search.py:63 dnf/cli/output.py:569 ++#: dnf/cli/commands/search.py:63 dnf/cli/output.py:523 + msgctxt "long" + msgid "Description" + msgstr "描述" + +-#: dnf/cli/commands/search.py:64 dnf/cli/output.py:562 ++#: dnf/cli/commands/search.py:64 dnf/cli/output.py:516 + msgid "URL" + msgstr "URL" + +-#. TRANSLATORS: separator used between package attributes (eg. Name & Summary +-#. & URL) ++#. TRANSLATORS: separator used between package attributes (eg. Name & Summary & URL) + #: dnf/cli/commands/search.py:76 + msgid " & " + msgstr " & " +@@ -2167,16 +2186,16 @@ msgstr "" + "run 解析並執行處理事項集\n" + "exit (or quit) 離開 Shell" + +-#: dnf/cli/commands/shell.py:259 ++#: dnf/cli/commands/shell.py:262 + #, python-format + msgid "Error: Cannot open %s for reading" + msgstr "錯誤:無法開啟 %s 供讀取" + +-#: dnf/cli/commands/shell.py:281 dnf/cli/main.py:187 ++#: dnf/cli/commands/shell.py:284 dnf/cli/main.py:187 + msgid "Complete!" + msgstr "完成!" + +-#: dnf/cli/commands/shell.py:291 ++#: dnf/cli/commands/shell.py:294 + msgid "Leaving Shell" + msgstr "離開 Shell" + +@@ -2367,8 +2386,8 @@ msgstr "嚴重" + msgid "Files" + msgstr "檔案" + +-#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1499 +-#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 ++#: dnf/cli/commands/updateinfo.py:359 dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1656 dnf/util.py:617 + msgid "Installed" + msgstr "已安裝" + +@@ -2547,7 +2566,9 @@ msgstr "錯誤輸出等級" + msgid "" + "enables {prog}'s obsoletes processing logic for upgrade or display " + "capabilities that the package obsoletes for info, list and repoquery" +-msgstr "啟用 {prog} 中 upgrade 的棄用處理邏輯,或啟用 info、list 和 repoquery 顯示軟體包棄用的功能" ++msgstr "" ++"啟用 {prog} 中 upgrade 的棄用處理邏輯,或啟用 info、list 和 repoquery 顯示軟" ++"體包棄用的功能" + + #: dnf/cli/option_parser.py:251 + msgid "debugging output level for rpm" +@@ -2569,8 +2590,8 @@ msgstr "啟用額外軟體庫。列出選項。支援 Glob,可多次指定。" + + #: dnf/cli/option_parser.py:266 + msgid "" +-"Disable repositories. List option. Supports globs, can be specified multiple" +-" times." ++"Disable repositories. List option. Supports globs, can be specified multiple " ++"times." + msgstr "停用軟體庫。列出選項。支援 Glob,可多次指定。" + + #: dnf/cli/option_parser.py:270 +@@ -2599,7 +2620,8 @@ msgstr "停用 excludepkgs" + msgid "" + "label and path to an additional repository to use (same path as in a " + "baseurl), can be specified multiple times." +-msgstr "要使用之額外軟體庫的標籤與路徑(跟基礎 URL 中的路徑一致),可多次指定。" ++msgstr "" ++"要使用之額外軟體庫的標籤與路徑(跟基礎 URL 中的路徑一致),可多次指定。" + + #: dnf/cli/option_parser.py:297 + msgid "disable removal of dependencies that are no longer used" +@@ -2689,13 +2711,13 @@ msgstr "無法編碼「%s」引數:%s" + #. Translators: This is abbreviated 'Name'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:505 ++#: dnf/cli/output.py:459 + msgctxt "short" + msgid "Name" + msgstr "名稱" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:511 ++#: dnf/cli/output.py:465 + msgid "Epoch" + msgstr "Epoch" + +@@ -2703,38 +2725,38 @@ msgstr "Epoch" + #. use the full (unabbreviated) term 'Version' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:512 dnf/cli/output.py:1335 ++#: dnf/cli/output.py:466 dnf/cli/output.py:1248 + msgctxt "short" + msgid "Version" + msgstr "版本" + + #. Translators: This is the full (unabbreviated) term 'Version'. +-#: dnf/cli/output.py:513 dnf/cli/output.py:1337 ++#: dnf/cli/output.py:467 dnf/cli/output.py:1250 + msgctxt "long" + msgid "Version" + msgstr "版本" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:516 ++#: dnf/cli/output.py:470 + msgid "Release" + msgstr "發行版" + + #. Translators: This is abbreviated 'Architecture', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:517 dnf/cli/output.py:1326 ++#: dnf/cli/output.py:471 dnf/cli/output.py:1239 + msgctxt "short" + msgid "Arch" + msgstr "架構" + + #. Translators: This is the full word 'Architecture', used when + #. we have enough space. +-#: dnf/cli/output.py:518 dnf/cli/output.py:1329 ++#: dnf/cli/output.py:472 dnf/cli/output.py:1242 + msgctxt "long" + msgid "Architecture" + msgstr "架構" + + #. Translators: This is the full (unabbreviated) term 'Size'. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1352 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1265 + msgctxt "long" + msgid "Size" + msgstr "大小" +@@ -2743,32 +2765,32 @@ msgstr "大小" + #. not be longer than 5 characters. If the term 'Size' in your + #. language is not longer than 5 characters then you can use it + #. unabbreviated. +-#: dnf/cli/output.py:520 dnf/cli/output.py:1350 ++#: dnf/cli/output.py:474 dnf/cli/output.py:1263 + msgctxt "short" + msgid "Size" + msgstr "大小" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:524 ++#: dnf/cli/output.py:478 + msgid "Source" + msgstr "來源" + + #. Translators: This is abbreviated 'Repository', used when + #. we have not enough space to display the full word. +-#: dnf/cli/output.py:525 dnf/cli/output.py:1341 ++#: dnf/cli/output.py:479 dnf/cli/output.py:1254 + msgctxt "short" + msgid "Repo" + msgstr "軟體庫" + + #. Translators: This is the full word 'Repository', used when + #. we have enough space. +-#: dnf/cli/output.py:526 dnf/cli/output.py:1344 ++#: dnf/cli/output.py:480 dnf/cli/output.py:1257 + msgctxt "long" + msgid "Repository" + msgstr "軟體庫" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:533 ++#: dnf/cli/output.py:487 + msgid "From repo" + msgstr "來源軟體庫" + +@@ -2776,312 +2798,308 @@ msgstr "來源軟體庫" + #. print(_("Committer : %s") % ucd(pkg.committer)) + #. print(_("Committime : %s") % time.ctime(pkg.committime)) + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:539 ++#: dnf/cli/output.py:493 + msgid "Packager" + msgstr "打包者" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:541 ++#: dnf/cli/output.py:495 + msgid "Buildtime" + msgstr "組建時間" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:545 ++#: dnf/cli/output.py:499 + msgid "Install time" + msgstr "安裝時間" + + #. Translators: This message should be no longer than 12 chars. +-#: dnf/cli/output.py:554 ++#: dnf/cli/output.py:508 + msgid "Installed by" + msgstr "安裝內容" + + #. Translators: This is abbreviated 'Summary'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:558 ++#: dnf/cli/output.py:512 + msgctxt "short" + msgid "Summary" + msgstr "摘要" + + #. Translators: This message should be no longer than 12 characters. +-#: dnf/cli/output.py:564 ++#: dnf/cli/output.py:518 + msgid "License" + msgstr "授權" + + #. Translators: This is abbreviated 'Description'. Should be no longer + #. than 12 characters. You can use the full version if it is short + #. enough in your language. +-#: dnf/cli/output.py:568 ++#: dnf/cli/output.py:522 + msgctxt "short" + msgid "Description" + msgstr "描述" + +-#: dnf/cli/output.py:695 +-msgid "No packages to list" +-msgstr "沒有要列出的軟體包" +- +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "y" + msgstr "y" + +-#: dnf/cli/output.py:706 ++#: dnf/cli/output.py:650 + msgid "yes" + msgstr "yes" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "n" + msgstr "n" + +-#: dnf/cli/output.py:707 ++#: dnf/cli/output.py:651 + msgid "no" + msgstr "no" + +-#: dnf/cli/output.py:711 ++#: dnf/cli/output.py:655 + msgid "Is this ok [y/N]: " + msgstr "這樣可以嗎 [y/N]: " + +-#: dnf/cli/output.py:715 ++#: dnf/cli/output.py:659 + msgid "Is this ok [Y/n]: " + msgstr "這樣可以嗎 [Y/n]: " + +-#: dnf/cli/output.py:795 ++#: dnf/cli/output.py:739 + #, python-format + msgid "Group: %s" + msgstr "群組:%s" + +-#: dnf/cli/output.py:799 ++#: dnf/cli/output.py:743 + #, python-format + msgid " Group-Id: %s" + msgstr " 群組 ID:%s" + +-#: dnf/cli/output.py:801 dnf/cli/output.py:840 ++#: dnf/cli/output.py:745 dnf/cli/output.py:784 + #, python-format + msgid " Description: %s" + msgstr " 描述:%s" + +-#: dnf/cli/output.py:803 ++#: dnf/cli/output.py:747 + #, python-format + msgid " Language: %s" + msgstr " 語言:%s" + +-#: dnf/cli/output.py:806 ++#: dnf/cli/output.py:750 + msgid " Mandatory Packages:" + msgstr " 必備軟體包:" + +-#: dnf/cli/output.py:807 ++#: dnf/cli/output.py:751 + msgid " Default Packages:" + msgstr " 預設軟體包:" + +-#: dnf/cli/output.py:808 ++#: dnf/cli/output.py:752 + msgid " Optional Packages:" + msgstr " 選用軟體包:" + +-#: dnf/cli/output.py:809 ++#: dnf/cli/output.py:753 + msgid " Conditional Packages:" + msgstr " 條件軟體包:" + +-#: dnf/cli/output.py:834 ++#: dnf/cli/output.py:778 + #, python-format + msgid "Environment Group: %s" + msgstr "環境群組:%s" + +-#: dnf/cli/output.py:837 ++#: dnf/cli/output.py:781 + #, python-format + msgid " Environment-Id: %s" + msgstr " 環境 ID:%s" + +-#: dnf/cli/output.py:843 ++#: dnf/cli/output.py:787 + msgid " Mandatory Groups:" + msgstr " 必備群組:" + +-#: dnf/cli/output.py:844 ++#: dnf/cli/output.py:788 + msgid " Optional Groups:" + msgstr " 選用群組:" + +-#: dnf/cli/output.py:865 ++#: dnf/cli/output.py:809 + msgid "Matched from:" + msgstr "符合來源:" + +-#: dnf/cli/output.py:879 ++#: dnf/cli/output.py:823 + #, python-format + msgid "Filename : %s" + msgstr "檔案名稱:%s" + +-#: dnf/cli/output.py:904 ++#: dnf/cli/output.py:848 + #, python-format + msgid "Repo : %s" + msgstr "軟體庫 :%s" + +-#: dnf/cli/output.py:913 ++#: dnf/cli/output.py:857 + msgid "Description : " + msgstr "描述 : " + +-#: dnf/cli/output.py:917 ++#: dnf/cli/output.py:861 + #, python-format + msgid "URL : %s" + msgstr "URL :%s" + +-#: dnf/cli/output.py:921 ++#: dnf/cli/output.py:865 + #, python-format + msgid "License : %s" + msgstr "授權 :%s" + +-#: dnf/cli/output.py:927 ++#: dnf/cli/output.py:871 + #, python-format + msgid "Provide : %s" + msgstr "提供 :%s" + +-#: dnf/cli/output.py:947 ++#: dnf/cli/output.py:891 + #, python-format + msgid "Other : %s" + msgstr "其他 :%s" + +-#: dnf/cli/output.py:996 ++#: dnf/cli/output.py:940 + msgid "There was an error calculating total download size" + msgstr "計算總下載大小時發生錯誤" + +-#: dnf/cli/output.py:1002 ++#: dnf/cli/output.py:946 + #, python-format + msgid "Total size: %s" + msgstr "總大小:%s" + +-#: dnf/cli/output.py:1005 ++#: dnf/cli/output.py:949 + #, python-format + msgid "Total download size: %s" + msgstr "總下載大小:%s" + +-#: dnf/cli/output.py:1008 ++#: dnf/cli/output.py:952 + #, python-format + msgid "Installed size: %s" + msgstr "安裝的大小:%s" + +-#: dnf/cli/output.py:1026 ++#: dnf/cli/output.py:970 + msgid "There was an error calculating installed size" + msgstr "計算安裝大小時發生錯誤" + +-#: dnf/cli/output.py:1030 ++#: dnf/cli/output.py:974 + #, python-format + msgid "Freed space: %s" + msgstr "釋放空間:%s" + +-#: dnf/cli/output.py:1039 ++#: dnf/cli/output.py:983 + msgid "Marking packages as installed by the group:" + msgstr "依據群組將軟體包標記為安裝:" + +-#: dnf/cli/output.py:1046 ++#: dnf/cli/output.py:990 + msgid "Marking packages as removed by the group:" + msgstr "依據群組將軟體包標記為移除:" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Group" + msgstr "群組" + +-#: dnf/cli/output.py:1056 ++#: dnf/cli/output.py:1000 + msgid "Packages" + msgstr "軟體包" + +-#: dnf/cli/output.py:1133 ++#: dnf/cli/output.py:1046 + msgid "Installing group/module packages" + msgstr "將安裝群組/模組軟體包" + +-#: dnf/cli/output.py:1134 ++#: dnf/cli/output.py:1047 + msgid "Installing group packages" + msgstr "將安裝軟體包群組" + + #. TRANSLATORS: This is for a list of packages to be installed. +-#: dnf/cli/output.py:1138 ++#: dnf/cli/output.py:1051 + msgctxt "summary" + msgid "Installing" + msgstr "安裝" + + #. TRANSLATORS: This is for a list of packages to be upgraded. +-#: dnf/cli/output.py:1140 ++#: dnf/cli/output.py:1053 + msgctxt "summary" + msgid "Upgrading" + msgstr "升級" + + #. TRANSLATORS: This is for a list of packages to be reinstalled. +-#: dnf/cli/output.py:1142 ++#: dnf/cli/output.py:1055 + msgctxt "summary" + msgid "Reinstalling" + msgstr "重裝" + +-#: dnf/cli/output.py:1144 ++#: dnf/cli/output.py:1057 + msgid "Installing dependencies" + msgstr "將安裝依賴項目" + +-#: dnf/cli/output.py:1145 ++#: dnf/cli/output.py:1058 + msgid "Installing weak dependencies" + msgstr "將安裝弱依賴項目" + + #. TRANSLATORS: This is for a list of packages to be removed. +-#: dnf/cli/output.py:1147 ++#: dnf/cli/output.py:1060 + msgid "Removing" + msgstr "移除" + +-#: dnf/cli/output.py:1148 ++#: dnf/cli/output.py:1061 + msgid "Removing dependent packages" + msgstr "正在移除相關的軟體包" + +-#: dnf/cli/output.py:1149 ++#: dnf/cli/output.py:1062 + msgid "Removing unused dependencies" + msgstr "正在移除無用的依賴軟體包" + + #. TRANSLATORS: This is for a list of packages to be downgraded. +-#: dnf/cli/output.py:1151 ++#: dnf/cli/output.py:1064 + msgctxt "summary" + msgid "Downgrading" + msgstr "降級" + +-#: dnf/cli/output.py:1176 ++#: dnf/cli/output.py:1089 + msgid "Installing module profiles" + msgstr "正在安裝模組設定檔" + +-#: dnf/cli/output.py:1185 ++#: dnf/cli/output.py:1098 + msgid "Disabling module profiles" + msgstr "正在停用模組設定檔" + +-#: dnf/cli/output.py:1194 ++#: dnf/cli/output.py:1107 + msgid "Enabling module streams" + msgstr "正在啟用模組串流" + +-#: dnf/cli/output.py:1202 ++#: dnf/cli/output.py:1115 + msgid "Switching module streams" + msgstr "正在切換模組串流" + +-#: dnf/cli/output.py:1210 ++#: dnf/cli/output.py:1123 + msgid "Disabling modules" + msgstr "正在停用模組" + +-#: dnf/cli/output.py:1218 ++#: dnf/cli/output.py:1131 + msgid "Resetting modules" + msgstr "正在重設模組" + +-#: dnf/cli/output.py:1230 ++#: dnf/cli/output.py:1143 + msgid "Installing Environment Groups" + msgstr "正在安裝環境群組" + +-#: dnf/cli/output.py:1237 ++#: dnf/cli/output.py:1150 + msgid "Upgrading Environment Groups" + msgstr "正在升級環境群組" + +-#: dnf/cli/output.py:1244 ++#: dnf/cli/output.py:1157 + msgid "Removing Environment Groups" + msgstr "正在移除環境群組" + +-#: dnf/cli/output.py:1251 ++#: dnf/cli/output.py:1164 + msgid "Installing Groups" + msgstr "正在安裝群組" + +-#: dnf/cli/output.py:1258 ++#: dnf/cli/output.py:1171 + msgid "Upgrading Groups" + msgstr "正在升級群組" + +-#: dnf/cli/output.py:1265 ++#: dnf/cli/output.py:1178 + msgid "Removing Groups" + msgstr "正在移除群組" + +-#: dnf/cli/output.py:1281 ++#: dnf/cli/output.py:1194 + #, python-format + msgid "" + "Skipping packages with conflicts:\n" +@@ -3090,12 +3108,12 @@ msgstr "" + "略過有衝突的軟體包:\n" + "(加入「%s」到指令列中來強制升級)" + +-#: dnf/cli/output.py:1291 ++#: dnf/cli/output.py:1204 + #, python-format + msgid "Skipping packages with broken dependencies%s" + msgstr "略過依賴關係損壞的軟體包%s" + +-#: dnf/cli/output.py:1295 ++#: dnf/cli/output.py:1208 + msgid " or part of a group" + msgstr " 或群組的一部分" + +@@ -3103,22 +3121,22 @@ msgstr " 或群組的一部分" + #. use the full (unabbreviated) term 'Package' if you think that + #. the translation to your language is not too long and will + #. always fit to limited space. +-#: dnf/cli/output.py:1320 ++#: dnf/cli/output.py:1233 + msgctxt "short" + msgid "Package" + msgstr "軟體包" + + #. Translators: This is the full (unabbreviated) term 'Package'. +-#: dnf/cli/output.py:1322 ++#: dnf/cli/output.py:1235 + msgctxt "long" + msgid "Package" + msgstr "軟體包" + +-#: dnf/cli/output.py:1371 ++#: dnf/cli/output.py:1284 + msgid "replacing" + msgstr "替換" + +-#: dnf/cli/output.py:1378 ++#: dnf/cli/output.py:1291 + #, python-format + msgid "" + "\n" +@@ -3130,287 +3148,271 @@ msgstr "" + "%s\n" + + #. TODO: remove +-#: dnf/cli/output.py:1383 dnf/cli/output.py:1932 dnf/cli/output.py:1933 ++#: dnf/cli/output.py:1296 dnf/cli/output.py:1814 dnf/cli/output.py:1815 + msgid "Install" + msgstr "安裝" + +-#: dnf/cli/output.py:1387 dnf/cli/output.py:1941 ++#: dnf/cli/output.py:1300 dnf/cli/output.py:1823 + msgid "Upgrade" + msgstr "升級" + +-#: dnf/cli/output.py:1388 ++#: dnf/cli/output.py:1301 + msgid "Remove" + msgstr "移除" + +-#: dnf/cli/output.py:1390 dnf/cli/output.py:1939 ++#: dnf/cli/output.py:1303 dnf/cli/output.py:1821 + msgid "Downgrade" + msgstr "降級" + +-#: dnf/cli/output.py:1391 ++#: dnf/cli/output.py:1304 + msgid "Skip" + msgstr "略過" + +-#: dnf/cli/output.py:1400 dnf/cli/output.py:1416 ++#: dnf/cli/output.py:1313 dnf/cli/output.py:1329 + msgid "Package" + msgid_plural "Packages" + msgstr[0] "軟體包" + +-#: dnf/cli/output.py:1418 ++#: dnf/cli/output.py:1331 + msgid "Dependent package" + msgid_plural "Dependent packages" + msgstr[0] "依賴的軟體包" + +-#: dnf/cli/output.py:1497 dnf/cli/output.py:1773 dnf/cli/output.py:1942 +-msgid "Upgraded" +-msgstr "已升級" +- +-#: dnf/cli/output.py:1498 dnf/cli/output.py:1773 dnf/cli/output.py:1940 +-msgid "Downgraded" +-msgstr "已降級" +- +-#: dnf/cli/output.py:1503 +-msgid "Reinstalled" +-msgstr "已重裝" +- +-#: dnf/cli/output.py:1504 +-msgid "Skipped" +-msgstr "跳過" +- +-#: dnf/cli/output.py:1505 +-msgid "Removed" +-msgstr "已移除" +- +-#: dnf/cli/output.py:1508 +-msgid "Failed" +-msgstr "失敗" +- +-#: dnf/cli/output.py:1559 ++#: dnf/cli/output.py:1439 + msgid "Total" + msgstr "總計" + +-#: dnf/cli/output.py:1587 ++#: dnf/cli/output.py:1467 + msgid "" + msgstr "<未設定>" + +-#: dnf/cli/output.py:1588 ++#: dnf/cli/output.py:1468 + msgid "System" + msgstr "系統" + +-#: dnf/cli/output.py:1638 ++#: dnf/cli/output.py:1518 + msgid "Command line" + msgstr "指令列" + + #. TRANSLATORS: user names who executed transaction in history command output +-#: dnf/cli/output.py:1649 ++#: dnf/cli/output.py:1531 + msgid "User name" + msgstr "使用者名稱" + +-#: dnf/cli/output.py:1651 ++#: dnf/cli/output.py:1533 + msgid "ID" + msgstr "ID" + +-#: dnf/cli/output.py:1653 ++#: dnf/cli/output.py:1535 + msgid "Date and time" + msgstr "日期與時間" + +-#: dnf/cli/output.py:1654 ++#: dnf/cli/output.py:1536 + msgid "Action(s)" + msgstr "動作" + +-#: dnf/cli/output.py:1655 ++#: dnf/cli/output.py:1537 + msgid "Altered" + msgstr "已變動" + +-#: dnf/cli/output.py:1698 ++#: dnf/cli/output.py:1580 + msgid "No transactions" + msgstr "無處理事項" + +-#: dnf/cli/output.py:1699 dnf/cli/output.py:1715 ++#: dnf/cli/output.py:1581 dnf/cli/output.py:1597 + msgid "Failed history info" + msgstr "失敗的歷史資訊" + +-#: dnf/cli/output.py:1714 ++#: dnf/cli/output.py:1596 + msgid "No transaction ID, or package, given" + msgstr "沒有給予處理事項 ID、或軟體包" + +-#: dnf/cli/output.py:1772 ++#: dnf/cli/output.py:1654 + msgid "Erased" + msgstr "已抹除" + +-#: dnf/cli/output.py:1774 ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1822 dnf/util.py:616 ++msgid "Downgraded" ++msgstr "已降級" ++ ++#: dnf/cli/output.py:1655 dnf/cli/output.py:1824 dnf/util.py:615 ++msgid "Upgraded" ++msgstr "已升級" ++ ++#: dnf/cli/output.py:1656 + msgid "Not installed" + msgstr "未安裝" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Newer" + msgstr "新版" + +-#: dnf/cli/output.py:1775 ++#: dnf/cli/output.py:1657 + msgid "Older" + msgstr "舊版" + +-#: dnf/cli/output.py:1823 dnf/cli/output.py:1825 ++#: dnf/cli/output.py:1705 dnf/cli/output.py:1707 + msgid "Transaction ID :" + msgstr "處理事項ID:" + +-#: dnf/cli/output.py:1828 ++#: dnf/cli/output.py:1710 + msgid "Begin time :" + msgstr "開始時間 :" + +-#: dnf/cli/output.py:1831 dnf/cli/output.py:1833 ++#: dnf/cli/output.py:1713 dnf/cli/output.py:1715 + msgid "Begin rpmdb :" + msgstr "開始 rpmdb:" + +-#: dnf/cli/output.py:1839 ++#: dnf/cli/output.py:1721 + #, python-format + msgid "(%u seconds)" + msgstr "(%u 秒)" + +-#: dnf/cli/output.py:1841 ++#: dnf/cli/output.py:1723 + #, python-format + msgid "(%u minutes)" + msgstr "(%u 分鐘)" + +-#: dnf/cli/output.py:1843 ++#: dnf/cli/output.py:1725 + #, python-format + msgid "(%u hours)" + msgstr "(%u 小時)" + +-#: dnf/cli/output.py:1845 ++#: dnf/cli/output.py:1727 + #, python-format + msgid "(%u days)" + msgstr "(%u 天)" + +-#: dnf/cli/output.py:1846 ++#: dnf/cli/output.py:1728 + msgid "End time :" + msgstr "結束時間 :" + +-#: dnf/cli/output.py:1849 dnf/cli/output.py:1851 ++#: dnf/cli/output.py:1731 dnf/cli/output.py:1733 + msgid "End rpmdb :" + msgstr "結束 rpmdb:" + +-#: dnf/cli/output.py:1858 dnf/cli/output.py:1860 ++#: dnf/cli/output.py:1740 dnf/cli/output.py:1742 + msgid "User :" + msgstr "使用者 :" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1871 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1753 + msgid "Aborted" + msgstr "已中止" + +-#: dnf/cli/output.py:1864 dnf/cli/output.py:1867 dnf/cli/output.py:1869 +-#: dnf/cli/output.py:1871 dnf/cli/output.py:1873 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1746 dnf/cli/output.py:1749 dnf/cli/output.py:1751 ++#: dnf/cli/output.py:1753 dnf/cli/output.py:1755 dnf/cli/output.py:1757 + msgid "Return-Code :" + msgstr "回傳代碼 :" + +-#: dnf/cli/output.py:1867 dnf/cli/output.py:1875 ++#: dnf/cli/output.py:1749 dnf/cli/output.py:1757 + msgid "Success" + msgstr "成功" + +-#: dnf/cli/output.py:1869 ++#: dnf/cli/output.py:1751 + msgid "Failures:" + msgstr "失敗:" + +-#: dnf/cli/output.py:1873 ++#: dnf/cli/output.py:1755 + msgid "Failure:" + msgstr "失敗:" + +-#: dnf/cli/output.py:1883 dnf/cli/output.py:1885 ++#: dnf/cli/output.py:1765 dnf/cli/output.py:1767 + msgid "Releasever :" + msgstr "發行版本 :" + +-#: dnf/cli/output.py:1890 dnf/cli/output.py:1892 ++#: dnf/cli/output.py:1772 dnf/cli/output.py:1774 + msgid "Command Line :" + msgstr "指令列 :" + +-#: dnf/cli/output.py:1897 dnf/cli/output.py:1899 ++#: dnf/cli/output.py:1779 dnf/cli/output.py:1781 + msgid "Comment :" + msgstr "備註 :" + +-#: dnf/cli/output.py:1903 ++#: dnf/cli/output.py:1785 + msgid "Transaction performed with:" + msgstr "處理事項執行者:" + +-#: dnf/cli/output.py:1912 ++#: dnf/cli/output.py:1794 + msgid "Packages Altered:" + msgstr "變動的軟體包:" + +-#: dnf/cli/output.py:1918 ++#: dnf/cli/output.py:1800 + msgid "Scriptlet output:" + msgstr "小令稿輸出:" + +-#: dnf/cli/output.py:1925 ++#: dnf/cli/output.py:1807 + msgid "Errors:" + msgstr "錯誤:" + +-#: dnf/cli/output.py:1934 ++#: dnf/cli/output.py:1816 + msgid "Dep-Install" + msgstr "依賴安裝" + +-#: dnf/cli/output.py:1935 ++#: dnf/cli/output.py:1817 + msgid "Obsoleted" + msgstr "已棄用" + +-#: dnf/cli/output.py:1936 dnf/transaction.py:84 dnf/transaction.py:85 ++#: dnf/cli/output.py:1818 dnf/transaction.py:84 dnf/transaction.py:85 + msgid "Obsoleting" + msgstr "棄用" + +-#: dnf/cli/output.py:1937 ++#: dnf/cli/output.py:1819 + msgid "Erase" + msgstr "抹除" + +-#: dnf/cli/output.py:1938 ++#: dnf/cli/output.py:1820 + msgid "Reinstall" + msgstr "重裝" + +-#: dnf/cli/output.py:2016 ++#: dnf/cli/output.py:1894 + #, python-format + msgid "---> Package %s.%s %s will be installed" + msgstr "---> %s.%s %s 軟體包將會安裝" + +-#: dnf/cli/output.py:2018 ++#: dnf/cli/output.py:1896 + #, python-format + msgid "---> Package %s.%s %s will be an upgrade" + msgstr "---> %s.%s %s 軟體包將會升級" + +-#: dnf/cli/output.py:2020 ++#: dnf/cli/output.py:1898 + #, python-format + msgid "---> Package %s.%s %s will be erased" + msgstr "---> %s.%s %s 軟體包將被抹除" + +-#: dnf/cli/output.py:2022 ++#: dnf/cli/output.py:1900 + #, python-format + msgid "---> Package %s.%s %s will be reinstalled" + msgstr "---> %s.%s %s 軟體包將會重裝" + +-#: dnf/cli/output.py:2024 ++#: dnf/cli/output.py:1902 + #, python-format + msgid "---> Package %s.%s %s will be a downgrade" + msgstr "---> %s.%s %s 軟體包將被降級" + +-#: dnf/cli/output.py:2026 ++#: dnf/cli/output.py:1904 + #, python-format + msgid "---> Package %s.%s %s will be obsoleting" + msgstr "---> %s.%s %s 軟體包將會棄用" + +-#: dnf/cli/output.py:2028 ++#: dnf/cli/output.py:1906 + #, python-format + msgid "---> Package %s.%s %s will be upgraded" + msgstr "---> %s.%s %s 軟體包將被升級" + +-#: dnf/cli/output.py:2030 ++#: dnf/cli/output.py:1908 + #, python-format + msgid "---> Package %s.%s %s will be obsoleted" + msgstr "---> %s.%s %s 軟體包將被棄用" + +-#: dnf/cli/output.py:2039 ++#: dnf/cli/output.py:1917 + msgid "--> Starting dependency resolution" + msgstr "--> 開始解決依賴關係問題" + +-#: dnf/cli/output.py:2044 ++#: dnf/cli/output.py:1921 + msgid "--> Finished dependency resolution" + msgstr "--> 完成解決依賴關係問題" + +-#: dnf/cli/output.py:2058 dnf/crypto.py:132 ++#: dnf/cli/output.py:1935 dnf/crypto.py:132 + #, python-format + msgid "" + "Importing GPG key 0x%s:\n" +@@ -3472,10 +3474,6 @@ msgstr " 開始於:%s - %s 之前" + msgid " State : %s" + msgstr " 狀態:%s" + +-#: dnf/comps.py:104 +-msgid "skipping." +-msgstr "略過。" +- + #: dnf/comps.py:196 dnf/comps.py:692 dnf/comps.py:706 + #, python-format + msgid "Module or Group '%s' is not installed." +@@ -3497,7 +3495,7 @@ msgstr "沒有「%s」模組或群組。" + msgid "Environment id '%s' does not exist." + msgstr "尚未安裝「%s」環境。" + +-#: dnf/comps.py:622 dnf/transaction_sr.py:443 dnf/transaction_sr.py:453 ++#: dnf/comps.py:622 dnf/transaction_sr.py:477 dnf/transaction_sr.py:487 + #, fuzzy, python-format + #| msgid "Environment '%s' is not installed." + msgid "Environment id '%s' is not installed." +@@ -3524,6 +3522,12 @@ msgstr "Group_id「%s」不存在。" + msgid "Error parsing '%s': %s" + msgstr "無法解析「%s」:%s" + ++#: dnf/conf/config.py:151 ++#, fuzzy, python-format ++#| msgid "Unknown configuration value: %s=%s in %s; %s" ++msgid "Invalid configuration value: %s=%s in %s; %s" ++msgstr "未知的設定值:%s = %s 於 %s;%s" ++ + #: dnf/conf/config.py:226 + msgid "Could not set cachedir: {}" + msgstr "無法設定 cachedir:{}" +@@ -3565,36 +3569,36 @@ msgstr "以「%s.%s」鍵,「%s」值解析 --setopt 時發生錯誤:%s" + msgid "Repo %s did not have a %s attr. before setopt" + msgstr "%s 軟體庫未在 setopt 之前設定 %s 屬性" + +-#: dnf/conf/read.py:51 ++#: dnf/conf/read.py:60 + #, python-format + msgid "Warning: failed loading '%s', skipping." + msgstr "警告:「%s」載入失敗,略過。" + +-#: dnf/conf/read.py:63 ++#: dnf/conf/read.py:72 + msgid "Bad id for repo: {} ({}), byte = {} {}" + msgstr "軟體庫的 ID 無效:{} ({}),位元組 = {} {}" + +-#: dnf/conf/read.py:67 ++#: dnf/conf/read.py:76 + msgid "Bad id for repo: {}, byte = {} {}" + msgstr "軟體庫的 ID 無效:{},位元組 = {} {}" + +-#: dnf/conf/read.py:75 ++#: dnf/conf/read.py:84 + msgid "Repository '{}' ({}): Error parsing config: {}" + msgstr "「{}」({}) 軟體庫:解析組態時發生錯誤:{}" + +-#: dnf/conf/read.py:78 ++#: dnf/conf/read.py:87 + msgid "Repository '{}': Error parsing config: {}" + msgstr "「{}」軟體庫:解析組態時發生錯誤:{}" + +-#: dnf/conf/read.py:84 ++#: dnf/conf/read.py:93 + msgid "Repository '{}' ({}) is missing name in configuration, using id." + msgstr "設定檔中缺少「{}」({}) 軟體庫的名稱,使用 ID。" + +-#: dnf/conf/read.py:87 ++#: dnf/conf/read.py:96 + msgid "Repository '{}' is missing name in configuration, using id." + msgstr "設定檔中缺少「{}」軟體庫的名稱,使用 ID。" + +-#: dnf/conf/read.py:104 ++#: dnf/conf/read.py:113 + msgid "Parsing file \"{}\" failed: {}" + msgstr "解析「{}」檔案失敗:{}" + +@@ -3608,24 +3612,40 @@ msgstr "%s 軟體庫:0x%s 早已匯入" + msgid "repo %s: imported key 0x%s." + msgstr "%s 軟體庫:已匯入 0x%s 金鑰。" + +-#: dnf/db/group.py:293 ++#: dnf/crypto.py:145 ++msgid "Verified using DNS record with DNSSEC signature." ++msgstr "" ++ ++#: dnf/crypto.py:147 ++msgid "NOT verified using DNS record." ++msgstr "" ++ ++#: dnf/crypto.py:184 ++#, python-format ++msgid "retrieving repo key for %s unencrypted from %s" ++msgstr "" ++ ++#: dnf/db/group.py:301 + msgid "" + "No available modular metadata for modular package '{}', it cannot be " + "installed on the system" + msgstr "沒有「{}」模組化軟體包可用的模組化中介資料,無法安裝至系統" + +-#: dnf/db/group.py:343 ++#: dnf/db/group.py:351 + msgid "No available modular metadata for modular package" + msgstr "沒有「{}」模組化軟體包可用的模組化中介資料" + +-#: dnf/db/group.py:377 ++#: dnf/db/group.py:385 + #, python-format + msgid "Will not install a source rpm package (%s)." + msgstr "將不會安裝 RPM 原始檔(%s)。" + + #: dnf/dnssec.py:168 ++#, fuzzy ++#| msgid "" ++#| "Configuration option 'gpgkey_dns_verification' requires libunbound ({})" + msgid "" +-"Configuration option 'gpgkey_dns_verification' requires libunbound ({})" ++"Configuration option 'gpgkey_dns_verification' requires python3-unbound ({})" + msgstr "「gpgkey_dns_verification」設定選項需要 libunbound ({})" + + #: dnf/dnssec.py:239 +@@ -3648,7 +3668,7 @@ msgstr "DNSSEC 擴充: " + msgid "Testing already imported keys for their validity." + msgstr "測試已經匯入的金鑰其有效性。" + +-#: dnf/drpm.py:62 dnf/repo.py:268 ++#: dnf/drpm.py:62 dnf/repo.py:267 + #, python-format + msgid "unsupported checksum type: %s" + msgstr "未支援的查核碼類型:%s" +@@ -3690,7 +3710,7 @@ msgid "Modular dependency problem with Defaults:" + msgid_plural "Modular dependency problems with Defaults:" + msgstr[0] "預設值發生模組依賴關係問題:" + +-#: dnf/exceptions.py:131 dnf/module/module_base.py:686 ++#: dnf/exceptions.py:131 dnf/module/module_base.py:854 + msgid "Modular dependency problem:" + msgid_plural "Modular dependency problems:" + msgstr[0] "模組化的依賴關係問題:" +@@ -3699,10 +3719,12 @@ msgstr[0] "模組化的依賴關係問題:" + #, python-format + msgid "" + "Malformed lock file found: %s.\n" +-"Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf." ++"Ensure no other dnf/yum process is running and remove the lock file manually " ++"or run systemd-tmpfiles --remove dnf.conf." + msgstr "" + "發現格式錯誤的鎖定檔:%s。\n" +-"請確定沒有其他正在執行的 dnf/yum 處理程序,然後手動移除鎖定檔或執行 systemd-tmpfiles --remove dnf.conf。" ++"請確定沒有其他正在執行的 dnf/yum 處理程序,然後手動移除鎖定檔或執行 systemd-" ++"tmpfiles --remove dnf.conf。" + + #: dnf/module/__init__.py:26 + msgid "Enabling different stream for '{}'." +@@ -3724,7 +3746,57 @@ msgstr "已啟用模組:{}。" + msgid "No profile specified for '{}', please specify profile." + msgstr "沒有為 {} 指定的設定檔,請指定設定檔。" + +-#: dnf/module/module_base.py:33 ++#: dnf/module/exceptions.py:27 ++#, fuzzy ++#| msgid "No profiles for module {}:{}" ++msgid "No such module: {}" ++msgstr "沒有 {}:{} 模組的設定檔" ++ ++#: dnf/module/exceptions.py:33 ++msgid "No such stream: {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:39 ++#, fuzzy ++#| msgid "No profiles for module {}:{}" ++msgid "No enabled stream for module: {}" ++msgstr "沒有 {}:{} 模組的設定檔" ++ ++#: dnf/module/exceptions.py:46 ++msgid "Cannot enable more streams from module '{}' at the same time" ++msgstr "" ++ ++#: dnf/module/exceptions.py:52 ++msgid "Different stream enabled for module: {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:58 ++msgid "No such profile: {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:64 ++msgid "Specified profile not installed for {}" ++msgstr "" ++ ++#: dnf/module/exceptions.py:70 ++#, fuzzy ++#| msgid "No profile specified for '{}', please specify profile." ++msgid "No stream specified for '{}', please specify stream" ++msgstr "沒有為 {} 指定的設定檔,請指定設定檔。" ++ ++#: dnf/module/exceptions.py:82 ++#, fuzzy ++#| msgid "No repositories available" ++msgid "No such profile: {}. No profiles available" ++msgstr "沒有可用的軟體庫" ++ ++#: dnf/module/exceptions.py:88 ++#, fuzzy ++#| msgid "No profiles for module {}:{}" ++msgid "No profile to remove for '{}'" ++msgstr "沒有 {}:{} 模組的設定檔" ++ ++#: dnf/module/module_base.py:35 + msgid "" + "\n" + "\n" +@@ -3734,7 +3806,7 @@ msgstr "" + "\n" + "提示:預設[d]、已啟用[e]、已停用[x]、已安裝[i]" + +-#: dnf/module/module_base.py:34 ++#: dnf/module/module_base.py:36 + msgid "" + "\n" + "\n" +@@ -3744,80 +3816,97 @@ msgstr "" + "\n" + "提示:[d] 預設、[e] 已啟用, [x] 已停用, [i] 已安裝, [a] 作用中" + +-#: dnf/module/module_base.py:54 dnf/module/module_base.py:421 +-#: dnf/module/module_base.py:477 dnf/module/module_base.py:543 ++#: dnf/module/module_base.py:56 dnf/module/module_base.py:556 ++#: dnf/module/module_base.py:615 dnf/module/module_base.py:681 + msgid "Ignoring unnecessary profile: '{}/{}'" + msgstr "忽略不必要的設定檔:「{}/{}」" + +-#: dnf/module/module_base.py:84 ++#: dnf/module/module_base.py:86 + #, python-brace-format + msgid "All matches for argument '{0}' in module '{1}:{2}' are not active" + msgstr "所有「{1}:{2}」模組中的「{0}」引數符合項目皆未作用中" + +-#: dnf/module/module_base.py:92 ++#: dnf/module/module_base.py:94 dnf/module/module_base.py:204 + #, python-brace-format + msgid "Installing module '{0}' from Fail-Safe repository {1} is not allowed" + msgstr "不允許從 {1} 防故障軟體庫安裝「{0}」模組" + +-#: dnf/module/module_base.py:102 ++#: dnf/module/module_base.py:104 dnf/module/module_base.py:214 + msgid "" + "Unable to match profile for argument {}. Available profiles for '{}:{}': {}" + msgstr "無法符合 {} 引數的設定檔。「{}:{}」可用設定檔:{}" + +-#: dnf/module/module_base.py:106 ++#: dnf/module/module_base.py:108 dnf/module/module_base.py:218 + msgid "Unable to match profile for argument {}" + msgstr "無法符合 {} 引數的設定檔" + +-#: dnf/module/module_base.py:118 ++#: dnf/module/module_base.py:120 + msgid "No default profiles for module {}:{}. Available profiles: {}" + msgstr "沒有 {}:{} 模組的預設設定檔。可用設定檔:{}" + +-#: dnf/module/module_base.py:122 ++#: dnf/module/module_base.py:124 + msgid "No profiles for module {}:{}" + msgstr "沒有 {}:{} 模組的設定檔" + +-#: dnf/module/module_base.py:129 ++#: dnf/module/module_base.py:131 + msgid "Default profile {} not available in module {}:{}" + msgstr "{} 預設設定檔無法在 {}:{} 模組使用" + +-#: dnf/module/module_base.py:142 ++#: dnf/module/module_base.py:144 dnf/module/module_base.py:247 + msgid "Installing module from Fail-Safe repository is not allowed" + msgstr "不允許從防故障軟體庫安裝模組" + +-#: dnf/module/module_base.py:159 dnf/module/module_base.py:193 +-#: dnf/module/module_base.py:337 dnf/module/module_base.py:355 +-#: dnf/module/module_base.py:363 dnf/module/module_base.py:417 +-#: dnf/module/module_base.py:473 dnf/module/module_base.py:539 ++#: dnf/module/module_base.py:196 ++#, fuzzy, python-brace-format ++#| msgid "All matches for argument '{0}' in module '{1}:{2}' are not active" ++msgid "No active matches for argument '{0}' in module '{1}:{2}'" ++msgstr "所有「{1}:{2}」模組中的「{0}」引數符合項目皆未作用中" ++ ++#: dnf/module/module_base.py:228 ++#, fuzzy, python-brace-format ++#| msgid "Default profile {} not available in module {}:{}" ++msgid "Installed profile '{0}' is not available in module '{1}' stream '{2}'" ++msgstr "{} 預設設定檔無法在 {}:{} 模組使用" ++ ++#: dnf/module/module_base.py:267 ++msgid "No packages available to distrosync for package name '{}'" ++msgstr "" ++ ++#: dnf/module/module_base.py:310 dnf/module/module_base.py:461 ++#: dnf/module/module_base.py:486 dnf/module/module_base.py:505 ++#: dnf/module/module_base.py:552 dnf/module/module_base.py:611 ++#: dnf/module/module_base.py:677 dnf/module/module_base.py:840 + msgid "Unable to resolve argument {}" + msgstr "無法解析 {} 引數" + +-#: dnf/module/module_base.py:160 +-msgid "No match for package {}" +-msgstr "找不到符合的軟體包 {}" +- +-#: dnf/module/module_base.py:204 ++#: dnf/module/module_base.py:321 + #, python-brace-format + msgid "Upgrading module '{0}' from Fail-Safe repository {1} is not allowed" + msgstr "不允許從 {1} 防故障軟體庫升級「{0}」模組" + +-#: dnf/module/module_base.py:223 dnf/module/module_base.py:251 ++#: dnf/module/module_base.py:340 dnf/module/module_base.py:368 + msgid "Unable to match profile in argument {}" + msgstr "無法在 {} 引數中找到符合的設定檔" + +-#: dnf/module/module_base.py:231 ++#: dnf/module/module_base.py:348 + msgid "Upgrading module from Fail-Safe repository is not allowed" + msgstr "不允許從防故障軟體庫升級模組" + +-#: dnf/module/module_base.py:367 ++#: dnf/module/module_base.py:422 ++#, python-brace-format ++msgid "" ++"Argument '{argument}' matches {stream_count} streams ('{streams}') of module " ++"'{module}', but none of the streams are enabled or default" ++msgstr "" ++ ++#: dnf/module/module_base.py:509 + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'{}'" ++"Only module name is required. Ignoring unneeded information in argument: '{}'" + msgstr "只需要模組名稱。忽略引數中的非必要資訊:「{}」" + +-#: dnf/package.py:298 +-#, python-format +-msgid "%s: %s check failed: %s vs %s" +-msgstr "%s:%s 檢查失敗:%s 比對 %s" ++#: dnf/module/module_base.py:841 ++msgid "No match for package {}" ++msgstr "找不到符合的軟體包 {}" + + #. empty file is invalid json format + #: dnf/persistor.py:54 +@@ -3853,16 +3942,16 @@ msgstr "解析檔案失敗:%s" + msgid "Loaded plugins: %s" + msgstr "已載入的外掛:%s" + +-#: dnf/plugin.py:199 ++#: dnf/plugin.py:211 + #, python-format + msgid "Failed loading plugin \"%s\": %s" + msgstr "無法載入「%s」插件:%s" + +-#: dnf/plugin.py:231 ++#: dnf/plugin.py:243 + msgid "No matches found for the following enable plugin patterns: {}" + msgstr "找不到下述啟用之插件模式的符合項目:{}" + +-#: dnf/plugin.py:235 ++#: dnf/plugin.py:247 + msgid "No matches found for the following disable plugin patterns: {}" + msgstr "找不到下述停用之插件模式的符合項目:{}" + +@@ -3876,7 +3965,7 @@ msgid "Already downloaded" + msgstr "已經下載" + + #. pinging mirrors, this might take a while +-#: dnf/repo.py:347 ++#: dnf/repo.py:346 + #, python-format + msgid "determining the fastest mirror (%s hosts).. " + msgstr "正在決定最快速的鏡像站 (%s 主機)… " +@@ -3891,10 +3980,25 @@ msgstr "正在啟用 %s 軟體庫" + msgid "Added %s repo from %s" + msgstr "已從 %s 增加 %s 軟體庫" + ++#: dnf/rpm/miscutils.py:32 ++#, python-format ++msgid "Using rpmkeys executable at %s to verify signatures" ++msgstr "" ++ ++#: dnf/rpm/miscutils.py:66 ++msgid "Cannot find rpmkeys executable to verify signatures." ++msgstr "" ++ + #: dnf/rpm/transaction.py:119 + msgid "Errors occurred during test transaction." + msgstr "測試處理事項時發生錯誤。" + ++#: dnf/sack.py:47 ++msgid "" ++"allow_vendor_change is disabled. This option is currently not supported for " ++"downgrade and distro-sync commands" ++msgstr "" ++ + #. TRANSLATORS: This is for a single package currently being downgraded. + #: dnf/transaction.py:80 + msgctxt "currently" +@@ -3941,164 +4045,210 @@ msgstr "執行小令稿" + msgid "Preparing" + msgstr "準備" + +-#: dnf/transaction_sr.py:60 ++#: dnf/transaction_sr.py:66 + #, python-brace-format +-msgid "Errors in \"{filename}\":" ++msgid "" ++"The following problems occurred while replaying the transaction from file " ++"\"{filename}\":" + msgstr "" + +-#: dnf/transaction_sr.py:70 +-#, python-brace-format +-msgid "Error in \"{filename}\": {error}" +-msgstr "" ++#: dnf/transaction_sr.py:68 ++#, fuzzy ++#| msgid "Errors occurred during transaction." ++msgid "The following problems occurred while running a transaction:" ++msgstr "在處理事項時發生錯誤。" + +-#: dnf/transaction_sr.py:87 ++#: dnf/transaction_sr.py:89 + #, python-brace-format + msgid "Invalid major version \"{major}\", number expected." + msgstr "" + +-#: dnf/transaction_sr.py:95 ++#: dnf/transaction_sr.py:97 + #, python-brace-format + msgid "Invalid minor version \"{minor}\", number expected." + msgstr "" + +-#: dnf/transaction_sr.py:101 ++#: dnf/transaction_sr.py:103 + #, python-brace-format + msgid "" + "Incompatible major version \"{major}\", supported major version is " + "\"{major_supp}\"." + msgstr "" + +-#: dnf/transaction_sr.py:244 ++#: dnf/transaction_sr.py:224 ++msgid "" ++"Conflicting TransactionReplay arguments have been specified: filename, data" ++msgstr "" ++ ++#: dnf/transaction_sr.py:265 + #, python-brace-format + msgid "Unexpected type of \"{id}\", {exp} expected." + msgstr "" + +-#: dnf/transaction_sr.py:250 ++#: dnf/transaction_sr.py:271 + #, python-brace-format + msgid "Missing key \"{key}\"." + msgstr "" + +-#: dnf/transaction_sr.py:263 ++#: dnf/transaction_sr.py:285 + #, python-brace-format + msgid "Missing object key \"{key}\" in an rpm." + msgstr "" + +-#: dnf/transaction_sr.py:267 ++#: dnf/transaction_sr.py:289 + #, python-brace-format +-msgid "Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." ++msgid "" ++"Unexpected value of package reason \"{reason}\" for rpm nevra \"{nevra}\"." + msgstr "" + +-#: dnf/transaction_sr.py:275 ++#: dnf/transaction_sr.py:297 + #, python-brace-format + msgid "Cannot parse NEVRA for package \"{nevra}\"." + msgstr "" + +-#: dnf/transaction_sr.py:286 ++#: dnf/transaction_sr.py:321 + #, python-brace-format + msgid "Cannot find rpm nevra \"{nevra}\"." + msgstr "" + +-#: dnf/transaction_sr.py:301 ++#: dnf/transaction_sr.py:336 + #, fuzzy, python-brace-format + #| msgid "Package %s is already installed." + msgid "Package \"{na}\" is already installed for action \"{action}\"." + msgstr "已安裝 %s 軟體包。" + +-#: dnf/transaction_sr.py:311 ++#: dnf/transaction_sr.py:345 + #, python-brace-format + msgid "" + "Package nevra \"{nevra}\" not available in repositories for action " + "\"{action}\"." + msgstr "" + +-#: dnf/transaction_sr.py:322 ++#: dnf/transaction_sr.py:356 + #, python-brace-format + msgid "Package nevra \"{nevra}\" not installed for action \"{action}\"." + msgstr "" + +-#: dnf/transaction_sr.py:336 ++#: dnf/transaction_sr.py:370 + #, python-brace-format +-msgid "Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." ++msgid "" ++"Unexpected value of package action \"{action}\" for rpm nevra \"{nevra}\"." + msgstr "" + +-#: dnf/transaction_sr.py:343 ++#: dnf/transaction_sr.py:377 + #, fuzzy, python-format + #| msgid "Module or Group '%s' is not available." + msgid "Group id '%s' is not available." + msgstr "無法使用「%s」模組或群組。" + +-#: dnf/transaction_sr.py:364 ++#: dnf/transaction_sr.py:398 + #, python-brace-format + msgid "Missing object key \"{key}\" in groups.packages." + msgstr "" + +-#: dnf/transaction_sr.py:377 dnf/transaction_sr.py:387 ++#: dnf/transaction_sr.py:411 dnf/transaction_sr.py:421 + #, fuzzy, python-format + #| msgid "Module or Group '%s' is not installed." + msgid "Group id '%s' is not installed." + msgstr "未安裝「%s」模組或群組。" + +-#: dnf/transaction_sr.py:398 ++#: dnf/transaction_sr.py:432 + #, fuzzy, python-format + #| msgid "Environment '%s' is not available." + msgid "Environment id '%s' is not available." + msgstr "無法使用「%s」環境。" + +-#: dnf/transaction_sr.py:422 ++#: dnf/transaction_sr.py:456 + #, python-brace-format + msgid "" + "Invalid value \"{group_type}\" of environments.groups.group_type, only " + "\"mandatory\" or \"optional\" is supported." + msgstr "" + +-#: dnf/transaction_sr.py:430 ++#: dnf/transaction_sr.py:464 + #, python-brace-format + msgid "Missing object key \"{key}\" in environments.groups." + msgstr "" + +-#: dnf/transaction_sr.py:508 ++#: dnf/transaction_sr.py:542 + #, python-brace-format + msgid "Unexpected value of group action \"{action}\" for group \"{group}\"." + msgstr "" + +-#: dnf/transaction_sr.py:513 ++#: dnf/transaction_sr.py:547 + #, python-brace-format + msgid "Missing object key \"{key}\" in a group." + msgstr "" + +-#: dnf/transaction_sr.py:537 ++#: dnf/transaction_sr.py:571 + #, python-brace-format +-msgid "Unexpected value of environment action \"{action}\" for environment \"{env}\"." ++msgid "" ++"Unexpected value of environment action \"{action}\" for environment " ++"\"{env}\"." + msgstr "" + +-#: dnf/transaction_sr.py:542 ++#: dnf/transaction_sr.py:576 + #, python-brace-format + msgid "Missing object key \"{key}\" in an environment." + msgstr "" + +-#: dnf/transaction_sr.py:581 ++#: dnf/transaction_sr.py:615 + #, python-brace-format + msgid "" +-"Package nevra \"{nevra}\", which is not present in the transaction file, was" +-" pulled into the transaction." ++"Package nevra \"{nevra}\", which is not present in the transaction file, was " ++"pulled into the transaction." + msgstr "" + +-#: dnf/util.py:391 dnf/util.py:393 ++#: dnf/util.py:419 dnf/util.py:421 + msgid "Problem" + msgstr "問題" + +-#: dnf/util.py:444 ++#: dnf/util.py:472 + msgid "TransactionItem not found for key: {}" + msgstr "找不到下述鍵的 TransactionItem:{}" + +-#: dnf/util.py:454 ++#: dnf/util.py:482 + msgid "TransactionSWDBItem not found for key: {}" + msgstr "找不到下述鍵的 TransactionSWDBItem:{}" + +-#: dnf/util.py:457 ++#: dnf/util.py:485 + msgid "Errors occurred during transaction." + msgstr "在處理事項時發生錯誤。" + ++#: dnf/util.py:621 ++msgid "Reinstalled" ++msgstr "已重裝" ++ ++#: dnf/util.py:622 ++msgid "Skipped" ++msgstr "跳過" ++ ++#: dnf/util.py:623 ++msgid "Removed" ++msgstr "已移除" ++ ++#: dnf/util.py:626 ++msgid "Failed" ++msgstr "失敗" ++ ++#~ msgid "skipping." ++#~ msgstr "略過。" ++ ++#~ msgid "%s: %s check failed: %s vs %s" ++#~ msgstr "%s:%s 檢查失敗:%s 比對 %s" ++ ++#~ msgid "Action not handled: {}" ++#~ msgstr "未處理動作:{}" ++ ++#~ msgid "no package matched" ++#~ msgstr "沒有符合的軟體包" ++ ++#~ msgid "Not found given transaction ID" ++#~ msgstr "找不到提供的處理事項識別碼" ++ ++#~ msgid "Undoing transaction {}, from {}" ++#~ msgstr "取消變更處理事項 {},從 {}" ++ + #~ msgid "format for displaying found packages" + #~ msgstr "顯示找到的軟體包格式" + +@@ -4109,5 +4259,6 @@ msgstr "在處理事項時發生錯誤。" + #~ msgstr "給予的處理事項 ID、或軟體包不良" + + #~ msgid "" +-#~ "Display capabilities that the package depends on for running a %%pre script." ++#~ "Display capabilities that the package depends on for running a %%pre " ++#~ "script." + #~ msgstr "顯示軟體包執行在 %%pre 指令上的功能。" +-- +2.35.1 + diff --git a/EMPTY b/EMPTY deleted file mode 100644 index 0519ecb..0000000 --- a/EMPTY +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dnf.spec b/dnf.spec new file mode 100644 index 0000000..4c13c26 --- /dev/null +++ b/dnf.spec @@ -0,0 +1,2603 @@ +# Always build out-of-source +%define __cmake_in_source_build 1 + +# default dependencies +%global hawkey_version 0.61.1 +%global libcomps_version 0.1.8 +%global libmodulemd_version 2.9.3 +%global rpm_version 4.14.2-35 + +# conflicts +%global conflicts_dnf_plugins_core_version 4.0.20 +%global conflicts_dnf_plugins_extras_version 4.0.4 +%global conflicts_dnfdaemon_version 0.3.19 + +# override dependencies for rhel 7 +%if 0%{?rhel} == 7 + %global rpm_version 4.11.3-32 +%endif + +%if 0%{?rhel} == 7 && 0%{?centos} + %global rpm_version 4.11.3-25.el7.centos.1 +%endif + +# override dependencies for fedora 26 +%if 0%{?fedora} == 26 + %global rpm_version 4.13.0.1-7 +%endif + + +# YUM compat subpackage configuration +# +# level=full -> deploy all compat symlinks (conflicts with yum < 4) +# level=minimal -> deploy a subset of compat symlinks only +# (no conflict with yum >= 3.4.3-505)* +# level=preview -> minimal level with altered paths (no conflict with yum < 4) +# *release 505 renamed /usr/bin/yum to /usr/bin/yum-deprecated +%global yum_compat_level full +%global yum_subpackage_name yum +%if 0%{?fedora} + # Avoid file conflict with yum < 4 in all Fedoras + # It can be resolved by pretrans scriptlet but they are not recommended in Fedora + %global yum_compat_level minimal + %if 0%{?fedora} < 31 + # Avoid name conflict with yum < 4 + %global yum_subpackage_name %{name}-yum + %endif +%endif +%if 0%{?rhel} && 0%{?rhel} <= 7 + %global yum_compat_level preview + %global yum_subpackage_name nextgen-yum4 +%endif + +# paths +%global confdir %{_sysconfdir}/%{name} +%global pluginconfpath %{confdir}/plugins + +%global py3pluginpath %{python3_sitelib}/%{name}-plugins + +# Use the same directory of the main package for subpackage licence and docs +%global _docdir_fmt %{name} + + +%global pkg_summary Package manager +%global pkg_description Utility that allows users to manage packages on their systems. \ +It supports RPMs, modules and comps groups & environments. + +Name: dnf +Version: 4.7.0 +Release: 8%{?dist} +Summary: %{pkg_summary} +# For a breakdown of the licensing, see PACKAGE-LICENSING +License: GPLv2+ +URL: https://github.com/rpm-software-management/dnf +Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz +Patch1: 0001-Set-top-level-directory-for-unittest.patch +Patch2: 0002-dnfrpmmiscutilspy-fix-usage-of-_.patch +Patch3: 0003-Pass-the-package-to-rpmkeys-stdin.patch +Patch4: 0004-Use-rpmkeys-alone-to-verify-signature.patch +Patch5: 0005-Lower-_pkgverify_level-to-signature-for-signature-checking-with-rpmkeys.patch +Patch6: 0006-Add-default-colors-to-documentation.patch +Patch7: 0007-Fix-reporting-irrecoverable-errors-on-packages-download.patch +Patch8: 0008-Add-fail_fast-parameter-to-download_payloads-methods.patch +Patch9: 0009-comps-Make-the-install_or_skip-method-not-catch-CompsError-anymore.patch +Patch10: 0010-doc-Improve-description-of-multilib_policyall-RhBug19966811995630.patch +Patch11: 0011-Fix-Python-dnf-API-does-not-respect-cacheonly-RhBug1862970.patch +Patch12: 0012-Documentation-API-notes-for-cacheonly.patch +Patch13: 0013-Allow-destdir-option-with-modulesync-command.patch +Patch14: 0014-Update-translations-RhBug-2017270.patch + +BuildArch: noarch +BuildRequires: cmake +BuildRequires: gettext +# Documentation +BuildRequires: systemd +BuildRequires: bash-completion +BuildRequires: %{_bindir}/sphinx-build-3 +Requires: python3-%{name} = %{version}-%{release} +%if 0%{?rhel} && 0%{?rhel} <= 7 +Requires: python-dbus +Requires: %{_bindir}/sqlite3 +%else +Recommends: (python3-dbus if NetworkManager) +Recommends: (%{_bindir}/sqlite3 if bash-completion) +%endif +Provides: dnf-command(alias) +Provides: dnf-command(autoremove) +Provides: dnf-command(check-update) +Provides: dnf-command(clean) +Provides: dnf-command(distro-sync) +Provides: dnf-command(downgrade) +Provides: dnf-command(group) +Provides: dnf-command(history) +Provides: dnf-command(info) +Provides: dnf-command(install) +Provides: dnf-command(list) +Provides: dnf-command(makecache) +Provides: dnf-command(mark) +Provides: dnf-command(provides) +Provides: dnf-command(reinstall) +Provides: dnf-command(remove) +Provides: dnf-command(repolist) +Provides: dnf-command(repoquery) +Provides: dnf-command(repository-packages) +Provides: dnf-command(search) +Provides: dnf-command(updateinfo) +Provides: dnf-command(upgrade) +Provides: dnf-command(upgrade-to) +Conflicts: python3-dnf-plugins-core < %{conflicts_dnf_plugins_core_version} +Conflicts: python3-dnf-plugins-extras-common < %{conflicts_dnf_plugins_extras_version} + +%description +%{pkg_description} + +%package data +Summary: Common data and configuration files for DNF +Requires: libreport-filesystem +Obsoletes: %{name}-conf <= %{version}-%{release} +Provides: %{name}-conf = %{version}-%{release} + +%description data +Common data and configuration files for DNF + +%package -n %{yum_subpackage_name} +Requires: %{name} = %{version}-%{release} +Summary: %{pkg_summary} +%if 0%{?fedora} +%if 0%{?fedora} >= 31 +Provides: %{name}-yum = %{version}-%{release} +Obsoletes: %{name}-yum < 5 +%else +Conflicts: yum < 3.4.3-505 +%endif +%endif + +%description -n %{yum_subpackage_name} +%{pkg_description} + +%package -n python3-%{name} +Summary: Python 3 interface to DNF +%{?python_provide:%python_provide python3-%{name}} +BuildRequires: python3-devel +BuildRequires: python3-hawkey >= %{hawkey_version} +BuildRequires: python3-libdnf >= %{hawkey_version} +BuildRequires: python3-libcomps >= %{libcomps_version} +BuildRequires: python3-libdnf +BuildRequires: libmodulemd >= %{libmodulemd_version} +Requires: libmodulemd >= %{libmodulemd_version} +BuildRequires: python3-gpg +Requires: python3-gpg +Requires: %{name}-data = %{version}-%{release} +%if 0%{?fedora} +Recommends: deltarpm +%endif +Requires: python3-hawkey >= %{hawkey_version} +Requires: python3-libdnf >= %{hawkey_version} +Requires: python3-libcomps >= %{libcomps_version} +Requires: python3-libdnf +BuildRequires: python3-rpm >= %{rpm_version} +Requires: python3-rpm >= %{rpm_version} +# required for DNSSEC main.gpgkey_dns_verification https://dnf.readthedocs.io/en/latest/conf_ref.html +Recommends: python3-unbound +%if 0%{?rhel} && 0%{?rhel} <= 7 +Requires: rpm-plugin-systemd-inhibit +%else +Recommends: rpm-plugin-systemd-inhibit +%endif + +%description -n python3-%{name} +Python 3 interface to DNF. + +%package automatic +Summary: %{pkg_summary} - automated upgrades +BuildRequires: systemd +Requires: %{name} = %{version}-%{release} +%{?systemd_requires} + +%description automatic +Systemd units that can periodically download package upgrades and apply them. + + +%prep +%autosetup -p1 + +mkdir build-py3 + +%build + +pushd build-py3 +%cmake .. -DPYTHON_DESIRED:FILEPATH=%{__python3} -DDNF_VERSION=%{version} +%make_build +make doc-man +popd + +%install + +pushd build-py3 +%make_install +popd + +%find_lang %{name} +mkdir -p %{buildroot}%{confdir}/vars +mkdir -p %{buildroot}%{confdir}/aliases.d +mkdir -p %{buildroot}%{pluginconfpath}/ +mkdir -p %{buildroot}%{_sysconfdir}/%{name}/modules.d +mkdir -p %{buildroot}%{_sysconfdir}/%{name}/modules.defaults.d +mkdir -p %{buildroot}%{py3pluginpath}/__pycache__/ +mkdir -p %{buildroot}%{_localstatedir}/log/ +mkdir -p %{buildroot}%{_var}/cache/dnf/ +touch %{buildroot}%{_localstatedir}/log/%{name}.log +ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/dnf +mv %{buildroot}%{_bindir}/dnf-automatic-3 %{buildroot}%{_bindir}/dnf-automatic +rm -vf %{buildroot}%{_bindir}/dnf-automatic-* + +# Strict conf distribution +%if 0%{?rhel} +mv -f %{buildroot}%{confdir}/%{name}-strict.conf %{buildroot}%{confdir}/%{name}.conf +%else +rm -vf %{buildroot}%{confdir}/%{name}-strict.conf +%endif + +# YUM compat layer +ln -sr %{buildroot}%{confdir}/%{name}.conf %{buildroot}%{_sysconfdir}/yum.conf +ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/yum +%if "%{yum_compat_level}" == "full" +mkdir -p %{buildroot}%{_sysconfdir}/yum +ln -sr %{buildroot}%{pluginconfpath} %{buildroot}%{_sysconfdir}/yum/pluginconf.d +ln -sr %{buildroot}%{confdir}/protected.d %{buildroot}%{_sysconfdir}/yum/protected.d +ln -sr %{buildroot}%{confdir}/vars %{buildroot}%{_sysconfdir}/yum/vars +%endif + + +%check + +pushd build-py3 +ctest -VV +popd + + +%post +%systemd_post dnf-makecache.timer + +%preun +%systemd_preun dnf-makecache.timer + +%postun +%systemd_postun_with_restart dnf-makecache.timer + + +%post automatic +%systemd_post dnf-automatic.timer +%systemd_post dnf-automatic-notifyonly.timer +%systemd_post dnf-automatic-download.timer +%systemd_post dnf-automatic-install.timer + +%preun automatic +%systemd_preun dnf-automatic.timer +%systemd_preun dnf-automatic-notifyonly.timer +%systemd_preun dnf-automatic-download.timer +%systemd_preun dnf-automatic-install.timer + +%postun automatic +%systemd_postun_with_restart dnf-automatic.timer +%systemd_postun_with_restart dnf-automatic-notifyonly.timer +%systemd_postun_with_restart dnf-automatic-download.timer +%systemd_postun_with_restart dnf-automatic-install.timer + + +%files -f %{name}.lang +%{_bindir}/%{name} +%if 0%{?rhel} && 0%{?rhel} <= 7 +%{_sysconfdir}/bash_completion.d/%{name} +%else +%dir %{_datadir}/bash-completion +%dir %{_datadir}/bash-completion/completions +%{_datadir}/bash-completion/completions/%{name} +%endif +%{_mandir}/man8/%{name}.8* +%{_mandir}/man8/yum2dnf.8* +%{_mandir}/man7/dnf.modularity.7* +%{_mandir}/man5/dnf-transaction-json.5* +%{_unitdir}/%{name}-makecache.service +%{_unitdir}/%{name}-makecache.timer +%{_var}/cache/%{name}/ + +%files data +%license COPYING PACKAGE-LICENSING +%doc AUTHORS README.rst +%dir %{confdir} +%dir %{confdir}/modules.d +%dir %{confdir}/modules.defaults.d +%dir %{pluginconfpath} +%dir %{confdir}/protected.d +%dir %{confdir}/vars +%dir %{confdir}/aliases.d +%exclude %{confdir}/aliases.d/zypper.conf +%config(noreplace) %{confdir}/%{name}.conf +%config(noreplace) %{confdir}/protected.d/%{name}.conf +%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} +%ghost %attr(644,-,-) %{_localstatedir}/log/hawkey.log +%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.log +%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.librepo.log +%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.rpm.log +%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.plugin.log +%ghost %attr(755,-,-) %dir %{_sharedstatedir}/%{name} +%ghost %attr(644,-,-) %{_sharedstatedir}/%{name}/groups.json +%ghost %attr(755,-,-) %dir %{_sharedstatedir}/%{name}/yumdb +%ghost %attr(755,-,-) %dir %{_sharedstatedir}/%{name}/history +%{_mandir}/man5/%{name}.conf.5* +%{_tmpfilesdir}/%{name}.conf +%{_sysconfdir}/libreport/events.d/collect_dnf.conf + +%files -n %{yum_subpackage_name} +%if "%{yum_compat_level}" == "full" +%{_bindir}/yum +%{_sysconfdir}/yum.conf +%{_sysconfdir}/yum/pluginconf.d +%{_sysconfdir}/yum/protected.d +%{_sysconfdir}/yum/vars +%{_mandir}/man8/yum.8* +%{_mandir}/man5/yum.conf.5.* +%{_mandir}/man8/yum-shell.8* +%{_mandir}/man1/yum-aliases.1* +%config(noreplace) %{confdir}/protected.d/yum.conf +%else +%exclude %{_sysconfdir}/yum.conf +%exclude %{_sysconfdir}/yum/pluginconf.d +%exclude %{_sysconfdir}/yum/protected.d +%exclude %{_sysconfdir}/yum/vars +%exclude %{confdir}/protected.d/yum.conf +%exclude %{_mandir}/man5/yum.conf.5.* +%exclude %{_mandir}/man8/yum-shell.8* +%exclude %{_mandir}/man1/yum-aliases.1* +%endif + +%if "%{yum_compat_level}" == "minimal" +%{_bindir}/yum +%{_mandir}/man8/yum.8* +%endif + +%if "%{yum_compat_level}" == "preview" +%{_bindir}/yum4 +%{_mandir}/man8/yum4.8* +%exclude %{_mandir}/man8/yum.8* +%endif + +%files -n python3-%{name} +%{_bindir}/%{name}-3 +%exclude %{python3_sitelib}/%{name}/automatic +%{python3_sitelib}/%{name}/ +%dir %{py3pluginpath} +%dir %{py3pluginpath}/__pycache__ + +%files automatic +%{_bindir}/%{name}-automatic +%config(noreplace) %{confdir}/automatic.conf +%{_mandir}/man8/%{name}-automatic.8* +%{_unitdir}/%{name}-automatic.service +%{_unitdir}/%{name}-automatic.timer +%{_unitdir}/%{name}-automatic-notifyonly.service +%{_unitdir}/%{name}-automatic-notifyonly.timer +%{_unitdir}/%{name}-automatic-download.service +%{_unitdir}/%{name}-automatic-download.timer +%{_unitdir}/%{name}-automatic-install.service +%{_unitdir}/%{name}-automatic-install.timer +%{python3_sitelib}/%{name}/automatic/ + +%changelog +* Fri Mar 18 2022 Marek Blaha - 4.7.0-8 +- Update translations + +* Fri Jan 14 2022 Pavla Kratochvilova - 4.7.0-7 +- Rebuild with new release number + +* Tue Jan 11 2022 Pavla Kratochvilova - 4.7.0-6 +- Allow destdir option with modulesync command + +* Tue Nov 09 2021 Pavla Kratochvilova - 4.7.0-5 +- Bump release number because of conflicting version of 8.5 build + +* Tue Nov 09 2021 Pavla Kratochvilova - 4.7.0-4 +- Add fail_fast parameter to _download_remote_payloads() method +- Throw CompsError when a group or environment is not found for the install methods +- Respect cacheonly in python dnf API (RhBug:1862970) +- [doc] Improve description of multilib_policy=all (RhBug:1996681,1995630) +- [doc] Document default colors + +* Mon Aug 16 2021 Pavla Kratochvilova - 4.7.0-3 +- Improve signature checking using rpmkeys (RhBug:1967454) + +* Tue Jul 27 2021 Pavla Kratochvilova - 4.7.0-2 +- Fix covscan issue: dnf/rpm/miscutils.py: fix usage of _() + +* Wed May 19 2021 Pavla Kratochvilova - 4.7.0-1 +- Update to 4.7.0 +- New optional parameter for filter_modules enables following modular obsoletes based on a config option module_obsoletes +- Fix module remove --all when no match spec (RhBug:1904490) +- Make an error message more informative (RhBug:1814831) +- Expand history to full term size when output is redirected (RhBug:1852577) (RhBug:1852577,1906970) +- Print additional information when verifying GPG key using DNS +- Enhanced detection of plugins removed in transaction (RhBug:1929163) +- Improve repo config path ordering to fix a comps merging issue (RhBug:1928181) +- Keep reason when package is removed (RhBug:1921063) +- Improve mechanism for application of security filters (RhBug:1918475) +- [API] Add new method for reset of security filters +- Remove hardcoded logfile permissions (RhBug:1910084) +- Preserve file mode during log rotation (RhBug:1910084) +- Increase loglevel in case of invalid config options +- Prevent traceback (catch ValueError) if pkg is from cmdline +- Check for specific key string when verifing signatures (RhBug:1915990) +- Use rpmkeys binary to verify package signature (RhBug:1915990) +- [doc] Improve description of modular filtering +- [doc] deprecated alias for dnf repoquery --deplist +- [doc] Describe install with just a name and obsoletes (RhBug:1902279) +- [doc] Fix: "sslcacert" contains path to the file +- [doc] Added proxy ssl configuration options, increase libdnf require +- [doc] Update documentation for module_obsoletes and module_stream_switch +- [doc] Improve documentation for Hotfix repositories +- [doc] fix: "makecache" command downloads only enabled repositories +- [doc] Add info that maximum parallel downloads is 20 +- [doc] installonly_limit documentation follows behavior +- [doc] Add documentation for config option sslverifystatus (RhBug:1814383) +- The noroot plugin no longer exists, remove mention + +* Thu Feb 11 2021 Nicola Sella - 4.4.2-10 +- Allow stream switching if option enabled + +* Tue Feb 09 2021 Nicola Sella - 4.4.2-9 +- Set persistdir for fill_sack_from_repos_in_cache tests (RhBug:1865803) + +* Mon Feb 08 2021 Nicola Sella - 4.4.2-8 +- Add api function: fill_sack_from_repos_in_cache (RhBug:1865803) +- Add tests and docs for fill_sack_from_repos_in_cache (RhBug:1865803) +- Run tests for fill_sack_from_repos_in_cache in installroot + +* Fri Feb 05 2021 Nicola Sella - 4.4.2-7 +- Make log rotated permissions match initial log permissions (RhBug:1894344) +- Add new attribute for Package - from_repo +- Change behaviour of Package().from_repo +- Package: add a get_header() method + +* Fri Jan 29 2021 Nicola Sella - 4.4.2-6 +- yum.misc.decompress() to handle uncompressed files (RhBug:1895059) +- Module switch command + +* Fri Jan 15 2021 Nicola Sella - 4.4.2-5 +- Fix patch for dnf history operations + +* Thu Jan 14 2021 Nicola Sella - 4.4.2-4 +- `dnf history` operations that work with comps correctly +- Remove sourcepackages from install/upgrade set +- Fix documentation of globs not supporting curly brackets + +* Thu Jan 07 2021 Nicola Sella - 4.4.2-3 +- Backport patches +- Log scriptlets output also for API users (RhBug:1847340) +- Post transaction summary is logged for API users (RhBug:1855158) + +* Wed Nov 11 2020 Nicola Sella - 4.4.2-2 +- Backport patch Revert "Fix --setopt=cachedir writing outside of installroot" + +* Tue Nov 10 2020 Nicola Sella - 4.4.2-1 +- Update to 4.4.2 +- spec: Fix building with new cmake macros (backport from downstream) +- Warn about key retrieval over http: +- Fix --setopt=cachedir writing outside of installroot +- Add vendor to dnf API (RhBug:1876561) +- Add allow_vendor_change option (RhBug:1788371) (RhBug:1788371) + +* Tue Jul 28 2020 Marek Blaha - 4.2.23-4 +- Update translations + +* Fri Jul 17 2020 Nicola Sella - 4.2.23-3 +- Add logfilelevel configuration (RhBug:1802074) +- [doc] Enhance repo variables documentation (RhBug:1848161,1848615) + +* Wed Jun 10 2020 Ales Matej - 4.2.23-2 +- Handle empty comps group name (RhBug:1826198) + +* Tue Jun 02 2020 Nicola Sella - 4.2.23-1 +- Update to 4.2.23 +- Fix behavior of `install-n` command +- Fix behavior of `localinstall` command +- Fix behavior of `autoremove-n` command +- Fix behavior of `remove-n` command +- Fix behavior of `repoquery-n` command +- Fix behavior of `list-updateinfo` and related aliases +- Refactor code in `repoinfo` to use opts.command correctly. +- Add myself to list of contributors +- Add updated to verbose output of updateinfo list (RhBug: 1801092) +- Fix a couple of missed grammatical errors in updateinfo docs. +- Add comment option (RhBug:1773679) +- Better wording of dnssec email parsing error. +- Print nicer DnssecErrors (RhBug:1813244) +- Add new API for handling gpg signatures (RhBug:1339617) +- Verify GPG signatures (RhBug:1793298) +- Fix a syntax typo +- Fix up Conflicts: on python-dnf-plugins-extras so it actually works +- [doc] Move yum-plugin-post-transaction-actions to dnf-plugins-core +- Remove args "--set-enabled", "--set-disabled" from DNF (RhBug:1727882) +- Search command is now alphabetical (RhBug:1811802) +- Fix downloading packages with full URL as their location +- repo: catch libdnf.error.Error in addition to RuntimeError in load() (RhBug:1788182) +- History tbl to max size when redirect to file (RhBug:1786335,1786316) + +* Mon Apr 06 2020 Ales Matej - 4.2.21-1 +- Update to 4.2.21 +- Running with tsflags=test doesn't update log files +- Allow disabling individual aliases config files (RhBug:1680566) +- List arguments: only first empty value is used (RhBug:1788154) +- Report missing profiles or default as broken module (RhBug:1790967) +- Format history table to use actual terminal width (RhBug:1786316) +- Handle custom exceptions from libdnf +- Fix _skipped_packages to return only skipped (RhBug:1774617) +- Add setter for tsi.reason +- Add new hook for commands: Run_resolved +- Clean also .yaml repository metadata +- Use WantedBy=timers.target for all dnf timers (RhBug:1798475) +- Fix completion helper if solv files not in roon cache (RhBug:1714376) +- Add bash completion for 'dnf module' (RhBug:1565614) +- Check command no longer reports missing %pre and %post deps (RhBug:1543449) +- Check if arguments can be encoded in 'utf-8' +- Fix crash with "dnf -d 6 repolist" (RhBug:1812682) +- Do not print the first empty line for repoinfo +- Redirect logger and repo download progress when --verbose +- Respect repo priority when listing packages (RhBug:1800342) +- Remove misleading green color from the "broken dependencies" lines (RhBug:1814192) +- [repoquery] Fix rich deps matching by using provide expansion from libdnf (RhBug:1534123) +- [repoquery] Do not protect running kernel for --unsafisfied (RhBug:1750745) +- [doc] Document the retries config option only works for packages (RhBug:1783041) +- [doc] repoquery --what* with multiple arguments (RhBug:1790262) +- [doc] Remove incorrect information about includepkgs (RhBug:1813460) +- [doc] Document that list and info commands respect repo priority +- [doc] Document color options + +* Tue Feb 18 2020 Ales Matej - 4.2.17-6 +- Sort packages in transaction output by nevra (RhBug:1773436) +- Add support of commandline packages by repoquery (RhBug:1784148) +- [doc] Document that the include option was removed (RhBug:1786072) +- New API function for setting loggers (RhBug:1788212) + +* Fri Jan 31 2020 Marek Blaha - 4.2.17-5 +- [translations] Update translations from zanata (RhBug:1754959) + +* Mon Jan 13 2020 Ales Matej - 4.2.17-4 +- Fix alias processing with '\' escaping (RhBug:1680482) +- [doc] Explain the backslash notation also near the example (RhBug:1680482) +- Better descriptions for infinite aliases recursion (RhBug:1680488) +- Improve help for 'dnf module' command (RhBug:1758447) +- Unify downgrade exit codes with upgrade (RhBug:1759847) +- Honor priority with check-update (RhBug:1769466) +- Add shell restriction with local packages (RhBug:1773483) +- Restore functionality of remove --oldinstallonly (RhBug:1774670) + +* Thu Dec 12 2019 Pavla Kratochvilova - 4.2.17-3 +- Do a substitution of variables in repo_id (RhBug:1748841) +- Respect order of config files in aliases.d (RhBug:1680489) +- [doc] Remove note about user-agent whitelist (RhBug:1777255) +- Fix detection of the latest module (RhBug:1781769) + +* Mon Nov 25 2019 Ales Matej - 4.2.17-2 +- Update to 4.2.17 +- Enable versionlock for check-update command (RhBug:1750620) +- Add error message when no active modules matched (RhBug:1696204) +- Log mirror failures as warning when repo load fails (RhBug:1713627) +- dnf-automatic: Change all systemd timers to a fixed time of day (RhBug:1754609) +- DNF can use config from the remote location (RhBug:1721091) +- [doc] update reference to plugin documentation (RhBug:1706386) +- [yum compatibility] Report all packages in repoinfo +- [doc] Add definition of active/inactive module stream +- repoquery: Add a switch to disable modular excludes +- Report more informative messages when no match for argument (RhBug:1709563) +- [doc] Add description of excludes in dnf +- Report more descriptive message when removed package is excluded +- Add module repoquery command +- Fix assumptions about ARMv8 and the way the rpm features work (RhBug:1691430) +- Add Requires information into module info commands +- Enhance inheritance of transaction reasons (RhBug:1672618,1769788) + +* Wed Nov 13 2019 Ales Matej - 4.2.16-1 +- Update to 4.2.16 +- Fix downloading local packages into destdir (RhBug:1727137) +- Report skipped packages with identical nevra only once (RhBug:1643109) +- Restore functionality of dnf remove --duplicates (RhBug:1674296) +- Improve API documentation +- Document NEVRA parsing in the man page +- Do not wrap output when no terminal (RhBug:1577889) +- Allow to ship alternative dnf.conf (RhBug:1752249) +- Don't check if repo is expired if it doesn't have loaded metadata (RhBug:1745170) +- Remove duplicate entries from "dnf search" output (RhBug:1742926) +- Set default value of repo name attribute to repo id (RhBug:1669711) +- Allow searching in disabled modules using "dnf module provides" (RhBug:1629667) +- Group install takes obsoletes into account (RhBug:1761137) +- Improve handling of vars +- Do not load metadata for repolist commands (RhBug:1697472,1713055,1728894) +- Fix messages for starting and failing scriptlets (RhBug:1724779) +- Don't show older install-only pkgs updates in updateinfo (RhBug:1649383,1728004) +- Add --ids option to the group command (RhBug:1706382) +- Add --with_cve and --with_bz options to the updateinfo command (RhBug:1750528) + +* Tue Oct 22 2019 Ales Matej - 4.2.11-1 +- Update to 4.2.11 +- Improve modularity documentation (RhBug:1730162,1730162,1730807,1734081) +- Fix detection whether system is running on battery (used by metadata caching timer) (RhBug:1498680) +- New repoquery queryformat: %{reason} +- Print rpm errors during test transaction (RhBug:1730348) +- Fix incorrectly marked profile and stream after failed rpm transaction check (RhBug:1719679) +- Show transaction errors inside dnf shell (RhBug:1743644) +- dnf-automatic now respects versionlock excludes (RhBug:1746562) +- [doc] Add user_agent and countme options +- [history] Don't store failed transactions as succeeded +- [history] Do not require root for informative commands +- [dnssec] Fix UnicodeWarning when using new rpm (RhBug:1699650) +- Apply excludes before modular excludes (RhBug:1709453) +- Improve help for command line arguments (RhBug:1659328) +- Add new modular API method ModuleBase.get_modules +- Mark features used by ansible, anaconda and subscription-manager as an API + +* Mon Oct 21 2019 Pavla Kratochvilova - 4.2.7-7 +- Prevent reinstalling modified packages with same NEVRA (RhBug:1728252,1644241,1760825) + +* Tue Sep 03 2019 Jaroslav Mracek - 4.2.7-6 +- Remove patch to not fail when installing modular RPMs without modular metadata + +* Fri Aug 30 2019 Pavla Kratochvilova - 4.2.7-5 +- Fix: --setopt and repo with dots (RhBug:1746349) + +* Wed Aug 14 2019 Pavla Kratochvilova - 4.2.7-4 +- Prevent printing empty Error Summary (RhBug:1690414) + +* Tue Aug 06 2019 Pavla Kratochvilova - 4.2.7-3 +- Update localizations from zanata (RhBug:1689982) +- Accept multiple specs in repoquery options (RhBug:1667898,1656801) +- Prevent switching modules in all cases (RhBug:1706215) +- Change synchronization of rpm transaction to swdb (RhBug:1737328) +- Print rpm error messages during transaction (RhBug:1677199) +- Report missing default profile as an error (RhBug:1669527,1724564) +- Describe a behavior when plugin is removed (RhBug:1700741) + +* Thu Jul 04 2019 Pavla Kratochvilova - 4.2.7-2 +- Add patch to not fail when installing modular RPMs without modular metadata + +* Tue Jun 11 2019 Pavla Kratochvilova - 4.2.7-1 +- Update to 4.2.7 +- Fix package reinstalls during yum module remove (RhBug:1700529) +- Fail when "-c" option is given nonexistent file (RhBug:1512457) +- Reuse empty lock file instead of stopping dnf (RhBug:1581824) +- Propagate comps 'default' value correctly (RhBug:1674562) +- Better search of provides in /(s)bin/ (RhBug:1657993) +- Add detection for armv7hcnl (RhBug:1691430) +- Fix group install/upgrade when group is not available (RhBug:1707624) +- Report not matching plugins when using --enableplugin/--disableplugin + (RhBug:1673289) (RhBug:1467304) +- Add support of modular FailSafe (RhBug:1623128) +- Replace logrotate with build-in log rotation for dnf.log and dnf.rpm.log + (RhBug:1702690) + +* Mon May 13 2019 Pavla Kratochvilova - 4.2.6-1 +- Update to 4.2.6 +- Use improved config parser that preserves order of data +- Follow RPM security policy for package verification +- Update modules regardless of installed profiles +- [conf] Use environment variables prefixed with DNF_VAR_ +- Allow adjustment of repo from --repofrompath (RhBug:1689591) +- Allow globs in setopt in repoid part +- Add command abbreviations (RhBug:1634232) +- Installroot now requires absolute path +- librepo: Turn on debug logging only if debuglevel is greater than 2 (RhBug:1355764,1580022) +- Document cachedir option (RhBug:1691365) +- Enhance documentation - API examples +- Enhance documentation of --whatdepends option (RhBug:1687070) +- Update documentation: implemented plugins; options; deprecated commands (RhBug:1670835,1673278) +- [doc] Add info of relation update_cache with fill_sack (RhBug:1658694) +- Rename man page from dnf.automatic to dnf-automatic to match command name +- Fix alias list command (RhBug:1666325) +- Fix behavior of ``--bz`` option when specifying more values +- Add protection of yum package (RhBug:1639363) +- Fix ``list --showduplicates`` (RhBug:1655605) +- Retain order of headers in search results (RhBug:1613860) +- Solve traceback with the "dnf install @module" (RhBug:1688823) +- Fix multilib obsoletes (RhBug:1672947) +- Do not remove group package if other packages depend on it +- Remove duplicates from "dnf list" and "dnf info" outputs +- Fix the installation of completion_helper.py +- Fix formatting of message about free space required +- Fix installation failiure when duplicit RPMs are specified (RhBug:1687286) +- Fix issues with terminal hangs when attempting bash completion (RhBug:1702854) +- Allow plugins to terminate dnf (RhBug:1701807) +- [provides] Enhanced detecting of file provides (RhBug:1702621) +- [provides] Sort the output packages alphabetically + +* Mon Apr 08 2019 Pavla Kratochvilova - 4.0.9.2-6 +- Backport patch to unify --help with man for module-spec (RhBug:1678689) + +* Thu Feb 14 2019 Jaroslav Mracek - 4.0.9.2-5 +- Backport patch to not allow direct module switch + +* Fri Feb 08 2019 Jaroslav Mracek - 4.0.9.2-4 +- Backport patch to add support for modular updateinfoxml data + +* Thu Feb 07 2019 Pavla Kratochvilova - 4.0.9.2-3 +- Backport patch: Fix minor problem with suggestion printed to terminal + +* Wed Feb 06 2019 Jaroslav Mracek - 4.0.9.2-2 +- Backport patches for: RHEL should use --best option by default for dnf / libdnf (RhBug:1670776) +- Add --nobest dnf option to revert the new default behavior from commandline + +* Fri Jan 04 2019 Jaroslav Mracek - 4.0.9.2-1 +- Print information about skipped packages after the transaction +- Sort reported skipped packages, force ignore_weak +- Allow to enable modules that break default modules (RhBug:1648839) + +* Mon Dec 17 2018 Daniel Mach - 4.0.9.1-1 +- Updated difference YUM vs. DNF for yum-updateonboot +- Added new command ``dnf alias [options] [list|add|delete] [...]`` to allow the user to + define and manage a list of aliases +- Enhanced documentation +- Unifying return codes for remove operations +- [transaction] Make transaction content available for commands +- Add hotfix packages to install pool (RhBug:1654738) +- Report group operation in transaction table +- [sack] Change algorithm to calculate rpmdb_version +- Add basic integration with %_pkgverify_level (RhBug:1614351) + +* Fri Nov 23 2018 Jaroslav Mracek - 4.0.9-1 +- Added dnf.repo.Repo.get_http_headers +- Added dnf.repo.Repo.set_http_headers +- Added dnf.repo.Repo.add_metadata_type_to_download +- Added dnf.repo.Repo.get_metadata_path +- Added dnf.repo.Repo.get_metadata_content +- Added --changelogs option for check-update command +- [module] Add information about active modules +- Hide messages created only for logging +- Enhanced --setopt option +- [module] Fix dnf remove @ +- [transaction] Make transaction content available for plugins + +* Mon Nov 19 2018 Jaroslav Mracek - 4.0.4-2 +- Backport patches for setting cachedir with --setopt + +* Mon Oct 15 2018 Jaroslav Mracek - 4.0.4-1 +- Update to 4.0.4 +- Add dnssec extension +- Set termforce to AUTO to automatically detect if stdout is terminal +- Repoquery command accepts --changelogs option (RhBug:1483458) +- Calculate sack version from all installed packages (RhBug:1624291) +- [module] Allow to enable module dependencies (RhBug:1622566) + +* Tue Sep 25 2018 Jaroslav Mracek - 3.6.1-1 +- [module] Improved module commands list, info +- [module] Reports error from module solver +- Fix: Error detected when calling 'RepoCB.fastestMirror' (RhBug:1628056) +- Preserve packages from other installed mod profiles (RhBug:1629841) +- [spec] Postpone conflict with yum to Fedora 30+ (RhBug:1600444) +- [cli] Install command recommends alternative packages (RhBug:1625586) +- [cli] Fix case insensitive hint (1628514) +- Fix installed profiles for module info (RhBug:1629689) +- Fix module provides not having consistent output (RhBug:1623866) +- Enhance label for transaction table (RhBug:1609919) +- Implement C_, the gettext function with a context (RhBug:1305340) +- Actually disambiguate some messages using C_ (RhBug:1305340) +- Restore 'strict' choice for group installs (#1461539) +- [repoquery] More strict queryformat parsing (RhBug:1631458) +- Redirect repo progress to std error (RhBug:1626011) +- Unify behavior of remove and module remove (RhBug:1629848) +- Change behavior of disabled module for module install (RhBug:1629711) +- Allow enablement on disabled plugin (RhBug:1614539) +- Resolves: rhbz#1622585 - [modularity] dnf should not be proposing distro-sync +- Resolves: rhbz#1614531 - dnf 3.2 does not depsolve correctly +- Bug 1564369 - don't show duplicate errors in dnf output +- Resolves: rhbz#1597257 - dnf should accept localinstall command, at least as an alias +- Resolves: rhbz#1613860 - dnf search behaviour is slightly confusing +- Resolves: rhbz#1625586 - Advise user about alternatives to the non-existing "python" package +- Resolves: rhbz#1614346 - dnf rollback doesn't work after install/downgrade/upgrade +- Resolves: rhbz#1612752 - platform-python should be used in completion_helper +- Resolves: rhbz#1618421 - dnf module install fails to find non-modular dependencies +- Bug 1629655 - not helpful/complete error message when specifying wrong stream or profile +- Bug 1629709 - disabled modules should be identified in the module listing +- Bug 1630761 - [usability] unable to determine if a stream with [d] is enabled or not +- Bug 1625270 - there is ???% [=== when baseurl is wrong +- Resolves: rhbz#1624056 - quoted baseurl is error out + +* Mon Sep 10 2018 Jaroslav Mracek - 3.5.1-1 +- [module] Fixed list and info subcommands (RhBug:1623388) (RhBug:1623535) + +* Fri Sep 07 2018 Jaroslav Mracek - 3.5.0-1 +- New implementation of modularity +- dnf makecache should not fail in red color if no enabled repos (RhBug:1622090) +- [modularity] dnf module profile command doesn't work (RhBug:1622580) +- [modularity] incorrect output in dnf module list (RhBug:1623398) +- [modularity] dnf could be smarter when installing what's already installed (RhBug:1622599) +- [modularity] dnf module install circular error on missing dependency (RhBug:1620233) +- not descriptive output in dnf verbose (RhBug:1612718) +- RFE: provide way to query all packages from module (RhBug:1569068) + +* Fri Aug 31 2018 Daniel Mach - 3.4.0-1 +- [history] Fix 'attempt to write a readonly database' error in addConsoleOutputLine(). +- [spec] Improve YUM v3 compat layer. +- [doc] document missing link from yum-rhn-plugin to dnf-plugin-spacewalk (RhBug:1580356) +- [doc] document difference between yum and dnf when listing packages (RhBug:1615834) +- [doc] document missing download functionality after transaction table is displayed (RhBug:1585140) +- [systemd] dnf-makecache.timer: move the ordering after network to .service +- [translations] Update translations from zanata. +- [cli] Fix 'already installed' message output. +- [module] change 'module_nsvp' to 'module_spec' +- [module] show module profiles without ', ...' +- [module] unify usability of RepoModuleDict.get_info*(); fix traceback +- [security] fix update count (RhBug:1585138) +- [cli] enable reposync to use --destdir (RhBug:1582152) +- [repo] Replace dnf.repo.Repo with libdnf implementation. +- [dnf] Limit DeprecationWarning to dnf.* modules only. + +* Mon Aug 13 2018 Daniel Mach - 3.3.0-1 +- [misc] Fallback to os.getuid() if /proc/self/loginuid can't be read (RhBug:1597005) +- [translations] Update translations from zanata. +- [doc] Update module documentation. +- [module] Fix `module provides` output. +- [module] Add `module reset` command. +- [module] Fix module disable command +- [repo] Improve error message on broken repo (RhBug:1595796) +- [doc] Enhance a command documentation (RhBug:1361617) +- [module] Automatically save module persistor in do_transaction(). +- [drpm] Fixed setting deltarpm_percentage=0 to switch drpm off +- [repo] Split base.download_packages into two functions +- [output] Use libdnf wrapper for smartcols +- [conf] Do not traceback on empty option (RhBug:1613577) + +* Tue Aug 07 2018 Daniel Mach - 3.2.0-1 +- [sack] Use module_platform_id option. +- [module] Switch module persistor to libdnf implementation. +- [module] Auto-enable module streams based on installed RPMs. +- [transaction] Fix: show packages from the current transaction. +- [conf] Convert any VectorString type to list. +- [module] Replace 'enabled' config option with 'state'. +- [install_specs] Do not exclude groups' packages +- [module] Use module sack filtering from libdnf +- [module] Many UX fixes. + +* Fri Jul 27 2018 Daniel Mach - 3.1.0-1 +- [module] Move 'hotfixes' conf option to libdnf and rename it to 'module_hotfixes'. +- [goal] Exclude @System repo packages from distro_sync. +- [conf] Setup configuration values using C++ bindings. +- [module] Drop module lock command. +- [crypto] Use handle from repo in dnf.crypto.retrieve(). +- [module] Assume a 'default' profile exists for all modules (RhBug:1568165) +- [base] Introduce easy installation of package, group and module specs. + +* Thu Jul 19 2018 Daniel Mach - 3.0.4-1 +- [transaction] Fix 'TransactionItem not found for key' error. +- [module] Allow removing module profile without specifying a stream. +- [module] Fix 'BaseCli' object has no attribute '_yumdb' error. +- [callback] Fix TransactionDisplay.PKG_ERASE redirect to a non-existing constant. +- [spec] Change yum compat package version to 4.0.version. +- [cache] Clean transaction temp files after successfull transaction +- [log] Log messages from libdnf logger +- [transaction] Add states to report rpm transaction progress +- [transaction] Cache TransactionItem during handling of RPM callback (RhBug:1599597) +- [systemd] dnf-makecache.timer: move to multi-user to fix loop + +* Thu Jul 12 2018 Martin Hatina - 3.0.3-1 +- Bug fix release + +* Fri Jun 29 2018 Jaroslav Mracek - 3.0.2-1 +- Update to 3.0.2-1 + +* Tue Jun 26 2018 Jaroslav Mracek - 3.0.1-1 +- Update to 3.0.1-1 +- Support of MODULES - new DNF command `module` +- Add attribute dnf.conf.Conf.proxy_auth_method +- New repoquery option `--depends` and `--whatdepends` +- Enhanced support of variables +- Enhanced documentation +- Resolves: rhbz#1565599 +- Resolves: rhbz#1508839 +- Resolves: rhbz#1506486 +- Resolves: rhbz#1506475 +- Resolves: rhbz#1505577 +- Resolves: rhbz#1505574 +- Resolves: rhbz#1505573 +- Resolves: rhbz#1480481 +- Resolves: rhbz#1496732 +- Resolves: rhbz#1497272 +- Resolves: rhbz#1488100 +- Resolves: rhbz#1488086 +- Resolves: rhbz#1488112 +- Resolves: rhbz#1488105 +- Resolves: rhbz#1488089 +- Resolves: rhbz#1488092 +- Resolves: rhbz#1486839 +- Resolves: rhbz#1486839 +- Resolves: rhbz#1486827 +- Resolves: rhbz#1486816 +- Resolves: rhbz#1565647 +- Resolves: rhbz#1583834 +- Resolves: rhbz#1576921 +- Resolves: rhbz#1270295 +- Resolves: rhbz#1361698 +- Resolves: rhbz#1369847 +- Resolves: rhbz#1368651 +- Resolves: rhbz#1563841 +- Resolves: rhbz#1387622 +- Resolves: rhbz#1575998 +- Resolves: rhbz#1577854 +- Resolves: rhbz#1387622 +- Resolves: rhbz#1542416 +- Resolves: rhbz#1542416 +- Resolves: rhbz#1496153 +- Resolves: rhbz#1568366 +- Resolves: rhbz#1539803 +- Resolves: rhbz#1552576 +- Resolves: rhbz#1545075 +- Resolves: rhbz#1544359 +- Resolves: rhbz#1547672 +- Resolves: rhbz#1537957 +- Resolves: rhbz#1542920 +- Resolves: rhbz#1507129 +- Resolves: rhbz#1512956 +- Resolves: rhbz#1512663 +- Resolves: rhbz#1247083 +- Resolves: rhbz#1247083 +- Resolves: rhbz#1247083 +- Resolves: rhbz#1519325 +- Resolves: rhbz#1492036 +- Resolves: rhbz#1391911 +- Resolves: rhbz#1391911 +- Resolves: rhbz#1479330 +- Resolves: rhbz#1505185 +- Resolves: rhbz#1305232 + +* Wed Oct 18 2017 Igor Gnatenko - 2.7.5-1 +- Improve performance for excludes and includes handling (RHBZ #1500361) +- Fixed problem of handling checksums for local repositories (RHBZ #1502106) +- Fix traceback when using dnf.Base.close() (RHBZ #1503575) + +* Mon Oct 16 2017 Jaroslav Mracek - 2.7.4-1 +- Update to 2.7.4-1 +- Enhanced performance for excludes and includes handling +- Solved memory leaks at time of closing of dnf.Base() +- Resolves: rhbz#1480979 - I thought it abnormal that dnf crashed. +- Resolves: rhbz#1461423 - Memory leak in python-dnf +- Resolves: rhbz#1499564 - dnf list installed crashes +- Resolves: rhbz#1499534 - dnf-2 is much slower than dnf-1 when handling groups +- Resolves: rhbz#1499623 - Mishandling stderr vs stdout (dnf search, dnf repoquery) + +* Fri Oct 06 2017 Igor Gnatenko - 2.7.3-1 +- Fix URL detection (RHBZ #1472847) +- Do not remove downloaded files with --destdir option (RHBZ #1498426) +- Fix handling of conditional packages in comps (RHBZ #1427144) + +* Mon Oct 02 2017 Jaroslav Mracek - 2.7.2-1 +- Update to 2.7.2-1 +- Added new option ``--comment=`` that adds a comment to transaction in history +- :meth:`dnf.Base.pre_configure_plugin` configure plugins by running their pre_configure() method +- Added pre_configure() methotd for plugins and commands to configure dnf before repos are loaded +- Resolves: rhbz#1421478 - dnf repository-packages: error: unrecognized arguments: -x rust-rpm-macros +- Resolves: rhbz#1491560 - 'dnf check' reports spurious "has missing requires of" errors +- Resolves: rhbz#1465292 - DNF remove protected duplicate package +- Resolves: rhbz#1279001 - [RFE] Missing dnf --downloaddir option +- Resolves: rhbz#1212341 - [RFE] Allow plugins to override the core configuration +- Resolves: rhbz#1299482 - mock --init fails with message "Failed calculating RPMDB checksum" +- Resolves: rhbz#1488398 - dnf upstream tests failures on f26 +- Resolves: rhbz#1192811 - dnf whatprovides should show which provides matched a pattern +- Resolves: rhbz#1288845 - "dnf provides" wildcard matching is unreliable (not all packages with matches listed) +- Resolves: rhbz#1473933 - [abrt] dnf-automatic: resolved(): rpm_conf.py:58:resolved:AttributeError: 'Rpmconf' object has no attribute '_interactive' +- Resolves: rhbz#1237349 - dnf autoremove not removing what dnf list extras shows +- Resolves: rhbz#1470050 - the 'priority=' option in /etc/yum.repos.d/*.repo is not respected +- Resolves: rhbz#1347927 - dnf --cacheonly downloads packages +- Resolves: rhbz#1478115 - [abrt] dnf: _hcmd_undo(): __init__.py:888:_hcmd_undo:IndexError: list index out of range +- Resolves: rhbz#1461171 - RFE: support --advisory= with install +- Resolves: rhbz#1448874 - "dnf needs-restarting" vanished from bash completion +- Resolves: rhbz#1495116 - Dnf version fails with traceback in container + +* Mon Aug 07 2017 Jaroslav Mracek 2.6.3-1 +- Fix problem with dnf.Package().remote_location() (RhBug:1476215) (Jaroslav + Mracek) +- Change behavior of -C according to documentation (RhBug:1473964) (Jaroslav + Mracek) +- It should prevent to ask attribute of None (RhBug:1359482) (Jaroslav Mracek) +- Solve a problems with --arch options (RhBug:1476834) (Jaroslav Mracek) +- Use security plugin code for dnf-automatic (Jaroslav Mracek) +- Fix unicode error for python2 (Jaroslav Mracek) +- Inform about packages installed for group (Jaroslav Mracek) +- Provide info if pkg is removed due to dependency (RhBug:1244755) (Jaroslav + Mracek) +- Unify format of %%{_mandir} paths in dnf.spec (Jaroslav Mracek) +- Remove test_yumlayer.py as unneeded test (Jaroslav Mracek) +- Provide yum4 package for rhel7 build (Jaroslav Mracek) +- Make yum compatible layer very minimal (RhBug:1476748) (Jaroslav Mracek) +- Remove metadata_expire from yum compatible layer (Jaroslav Mracek) +- Remove keepcache from yum compatibility layer (Jaroslav Mracek) +- Remove options from yum conf (Jaroslav Mracek) +- Remove unused functionality from yum compatible layer (Jaroslav Mracek) +- Add deplist command for dnf (Jaroslav Mracek) +- Fix problems with --downloaddir options (RhBug:1476464) (Jaroslav Mracek) +- Move description of --forcearch into proper place (Jaroslav Mracek) +- Provide description of --downloaddir option (Jaroslav Mracek) +- Fix if in spec file (Jaroslav Mracek) +- Add description of "test" tsflags (Jaroslav Mracek) +- Enable import gpg_keys with tsflag test (RhBug:1464192) (Jaroslav Mracek) +- Keep old reason when undoing erase (RhBug:1463107) (Eduard Čuba) +- spec: eliminate other weak dependencies for el<=7 (Igor Gnatenko) +- spec: do not strongly require inhibit plugin (Igor Gnatenko) +- Inform that packages are only downloaded (RhBug:1426196) (Jaroslav Mracek) +- Move releasever check after the etc/dnf/vars substitutions. (Alexander + Kanavin) +- Provide substitution for Repodict.add_new_repo() (RhBug:1457507) (Jaroslav + Mracek) + +* Mon Jul 24 2017 Jaroslav Mracek 2.6.2-1 +- Remove autodeglob optimization (Jaroslav Rohel) +- Integrate --destdir with --destdir from download plugin (Ondřej Sojka) +- Add CLI option --destdir (RhBug:1279001) (Ondřej Sojka) +- Add myself to the AUTHORS file (Nathaniel McCallum) +- Add the --forcearch CLI flag (Nathaniel McCallum) +- Add 'ignorearch' option (Nathaniel McCallum) +- Provide an API for setting 'arch' and 'basearch' (Nathaniel McCallum) +- Add nevra forms for repoquery command (Jaroslav Rohel) +- Fix UnicodeDecodeError during checkSig() on non UTF-8 locale (RhBug:1397848) + (Jaroslav Rohel) +- Add dnf option --noautoremove (RhBug:1361424) (Jaroslav Mracek) +- Add group argument for mark command (Jaroslav Mracek) +- Report problems for each pkg during gpgcheck (RhBug:1387925) (Jaroslav + Mracek) +- fix minor spelling mistakes (René Genz) +- Print warning when wrong delimiter in cache (RhBug:1332099) (Vítek Hoch) +- Fix the loading of config for dnf-automatic command_email (RhBug:1470116) + (Jaroslav Rohel) +- Enable download progress bar if redirected output (RhBug:1161950) (Jaroslav + Mracek) +- Support short abbrevations of commands (RhBug:1320254) (Vítek Hoch) +- Remove unused variables kwargs (Jaroslav Mracek) +- Not reinstall packages if install from repository-pkgs used (Jaroslav Mracek) +- bump dnf version to 2.6.0 (Igor Gnatenko) +- spec: use python2- prefix for hawkey (Igor Gnatenko) +- spec: use sphinx-build binary rather than package name (Igor Gnatenko) +- spec: python-bugzilla is not needed for building (Igor Gnatenko) +- spec: fix instructions about generating tarball (Igor Gnatenko) +- po: Update translations (Igor Gnatenko) +- Add an example of installation without weak-deps (RhBug:1424723) (Jaroslav + Mracek) +- Add detection if mirrorlist is used for metalink (Jaroslav Mracek) +- Rename variable (Jaroslav Mracek) +- Add --groupmember option to repoquery (RhBug:1462486) (Jaroslav Mracek) +- Check checksum for local repositories (RhBug:1314405) (Jaroslav Mracek) +- Spelling fixes (Ville Skyttä) +- repoquery --obsoletes prints obsoletes (RhBug:1457368) (Matěj Cepl) +- Provide pkg name hint for icase (RhBug:1339280) (RhBug:1138978) (Jaroslav + Mracek) +- Return only latest pkgs for "dnf list upgrades" (RhBug:1423472) (Jaroslav + Mracek) +- cleanup code not executed in case of exception (Marek Blaha) +- Allow to modify message for user confirmation (Jaroslav Mracek) +- Add autocheck_running_kernel config option (Štěpán Smetana) +- Inform about skipped packages for group install (RhBug:1427365) (Jaroslav + Mracek) +- Remove group remove unneeded pkgs (RhBug:1398871) (RhBug:1432312) (Jaroslav + Mracek) +- po: update translations (Igor Gnatenko) + +* Mon Jun 12 2017 Jaroslav Mracek 2.5.1-1 +- bump version to 2.5.1 + update release notes (Jaroslav Mracek) +- Fix: dnf update --refresh fails for repo_gpgcheck=1 (RhBug:1456419) (Daniel + Mach) +- Don't try to cut datetime message (Jaroslav Rohel) +- Use localized datetime format (RhBug:1445021) (Jaroslav Rohel) +- Work with locale date (Jaroslav Rohel) +- Use ISO 8601 time format in logfile (Jaroslav Rohel) +- Add unitest to prevent callbacks breakage (Jaroslav Mracek) +- Provide compatibility for tools that do not use total_drpms (Jaroslav Mracek) +- Requires strict usage of repoquery --recursive (Jaroslav Mracek) +- Fix output for --resolve with --installed for repoquery (Jaroslav Mracek) +- Remove unnecessary inheritance of yum conf options (Martin Hatina) +- Remove alwaysprompt option support (RhBug:1400714) (Jaroslav Rohel) +- Allow to install groups with multilib_policy=all (RhBug:1250702) (Jaroslav + Mracek) +- Redesign Base.install() to provide alternatives (Jaroslav Mracek) +- Report excludes includes into logger.debug (RhBug:1381988) (Jaroslav Mracek) +- Provide new API to parse string to NEVRA () (Jaroslav Mracek) +- Add more repoquery querytags (Jaroslav Rohel) +- Not hide tracebacks (Jaroslav Mracek) +- Solve error handling for get attr in yumdb (RhBug:1397848) (Jaroslav Mracek) +- Provide a better error if throttle to low (RhBug:1321407) (Jaroslav Mracek) +- Change timeout to 30s (RhBug:1291867) (Jaroslav Mracek) +- Add pre_transaction hook for plugins (Jaroslav Rohel) +- Not download metadata if "dnf history [info|list|userinstalled]" (Jaroslav + Mracek) +- Not download metadata if "dnf repo-pkgs list --installed" (Jaroslav + Mracek) +- Not download metadata if "dnf list --installed" (RhBug:1372895) (Jaroslav + Mracek) +- Format pkg str for repoquery --tree due to -qf (RhBug:1444751) (Jaroslav + Mracek) + +* Mon May 22 2017 Jaroslav Mracek 2.5.0-1 +- Update release notes (Jaroslav Mracek) +- Change documentation for history --userinstalled (RhBug:1370062) (Jaroslav + Mracek) +- Change example to install plugin using versionlock (Jaroslav Mracek) +- Remove unused method Goal.best_run_diff() (Jaroslav Mracek) +- Change recommendations if some problems appear (RhBug:1293067) (Jaroslav + Mracek) +- Report problems for goals with optional=True (Jaroslav Mracek) +- Format resolve problem messages in method in dnf.util (Jaroslav Mracek) +- Enhance reports about broken dep (RhBug:1398040)(RhBug:1393814) (Jaroslav + Mracek) +- search: do not generate error if not match anything (RhBug:1342157) (Jaroslav + Rohel) +- Check if any plugin is removed in transaction (RhBug:1379906) (Jaroslav + Mracek) +- Show progress for DRPM (RhBug:1198975) (Jaroslav Mracek) +- Fix disabledplugin option (Iavael) +- [history]: fixed info command merged output (Eduard Čuba) + +* Thu May 11 2017 Jaroslav Mracek 2.4.1-1 +- bump version to 2.4.1 + update release notes (Jaroslav Mracek) +- goal: do not mark weak dependencies as userinstalled (Igor Gnatenko) +- fix typo in supplements (RhBug:1446756) (Igor Gnatenko) +- Describe present behavior of installonly_limit conf option (Jaroslav Mracek) +- Reset all transaction for groups if Base.reset() (RhBug:1446432) (Jaroslav + Mracek) +- Explain how add negative num for --latest-limit (RhBug:1446641) (Jaroslav + Mracek) +- trivial: don't duplicate option names (Igor Gnatenko) +- Add support for --userinstalled for repoquery command (RhBug:1278124) + (Jaroslav Rohel) +- Fix header of search result sections (RhBug:1301868) (Jaroslav Rohel) +- Filter out src for get_best_selector (Jaroslav Mracek) +- Add minor changes in formating of documentation (Jaroslav Mracek) + +* Tue May 02 2017 Jaroslav Mracek 2.4.0-1 +- po: Update translations (Igor Gnatenko) +- po: Update translations (Igor Gnatenko) +- introduce '--enableplugin' option (Martin Hatina) +- Improve detection of file patterns (Jaroslav Mracek) +- Add method _get_nevra_solution() for subject (Jaroslav Mracek) +- Do not add "*" into query filter in _nevra_to_filters() (Jaroslav Mracek) +- Remove usage of nevra_possibilities_real() (Jaroslav Mracek) +- Increase performance for downgrade_to() (Jaroslav Mracek) +- Add additional keys for get_best_query() (Jaroslav Mracek) +- Increase performance for get_best_selector() (Jaroslav Mracek) +- Increase performance for get_best_query() (Jaroslav Mracek) +- Fix "Package" text translation (RhBug:1302935) (Jaroslav Rohel) +- Create a warning if releasever is None (Jaroslav Mracek) +- Adds cost, excludepkgs, and includepkgs to Doc (RhBug:1248684) (Jaroslav + Mracek) +- Change auto-detection of releasever in empty installroot (Jaroslav Mracek) +- Do not load system repo for makecache command (RhBug:1441636) (Jaroslav + Mracek) +- Do not raise assertion if group inst and rmv pkgs (RhBug:1438438) (Jaroslav + Mracek) +- yum layer using python3 (Martin Hatina) +- Filter url protocols for baseurl in Package.remote_location (Jaroslav Mracek) +- Add armv5tl to arm basearch (Neal Gompa) +- Setup additional parameters for handler for remote packages (Jaroslav Mracek) +- Use same method for user/password setting of every librepo.handle (Jaroslav + Mracek) +- Fix PEP8 violations and remove unused import (Jaroslav Mracek) +- Handle unknown file size in download progress (Jaroslav Mracek) +- Allow to delete cashed files from command line by clean command (Jaroslav + Mracek) +- Save command line packages into chachedir (RhBug:1256313) (Jaroslav Mracek) +- Add progress bar for download of commandline pkgs (RhBug:1161950) (Jaroslav + Mracek) +- Fix minor typo Closes: #781 Approved by: ignatenkobrain (Yuri Chornoivan) +- Mark unremoved packages as failed (RhBug:1421244) (Jaroslav Mracek) + +* Mon Apr 10 2017 Jaroslav Mracek 2.3.0-1 +- update release notes (Jaroslav Mracek) +- po: Update translations (Igor Gnatenko) +- Add require of subcommand for repo-pkgs command (Jaroslav Rohel) +- shell: Fix commands initialization (Jaroslav Rohel) +- po: Update translations (Igor Gnatenko) +- Add support for --location for repoquery command (RhBug:1290137) (Jaroslav + Mracek) +- Add support of --recursive with --resolve in repoquery (Jaroslav Mracek) +- Add --recursive option for repoquery (Jaroslav Mracek) +- Add --whatconflicts for repoquery (Jaroslav Mracek) +- Add support for multiple options for repoquery (Jaroslav Mracek) +- Add multiple format option for repoquery (Jaroslav Mracek) +- Fix problem with "dnf repoquery --querytags" (Jaroslav Mracek) +- Add support of 3 options into updateinfo command (Jaroslav Mracek) +- Add inheritance of reason for obsoleting packages (Jaroslav Mracek) +- Mark installonlypkgs correctly as user installed (RhBug:1349314) (Jaroslav + Mracek) +- Solve a problem with None names in callbacks (Jaroslav Mracek) +- Solve a problem for callbacks (Jaroslav Mracek) +- Revert "remove: CLI: --randomwait" (RhBug:1247122) (Ondřej Sojka) +- po: update translations (Igor Gnatenko) +- po: update translations (Igor Gnatenko) +- Set strings for translations (RhBug:1298717) (Jaroslav Mracek) + +* Mon Mar 27 2017 Jaroslav Mracek 2.2.0-1 +- bump version to 2.2.0 + update release notes (Jaroslav Mracek) +- Add documentation of new API callback actions (RhBug:1411432) (Jaroslav + Mracek) +- Fix python2 doesn't have e.__traceback__ attribute (Jaroslav Mracek) +- Do not report erasing package as None. (Jaroslav Mracek) +- Display scriplet for transaction (RhBug:1411423) (RhBug:1406130) (Jaroslav + Mracek) +- Add support for rpmcallbacks (Jaroslav Mracek) +- AUTHORS: updated (Jaroslav Rohel) +- Not show expiration check if no repo enabled (RhBug:1369212) (Jaroslav + Mracek) +- Fix changelog in dnf spec file (Jaroslav Mracek) +- po: update translations (Igor Gnatenko) +- Add myself (mhatina) to AUTHORS (Martin Hatina) +- po: Update translations (Igor Gnatenko) + +* Tue Mar 21 2017 Jaroslav Mracek 2.1.1-1 +- bump version to 2.1.1 + update release notes (Jaroslav Mracek) +- Sync the translation with locale (Jaroslav Rohel) +- Disable exceptions in logging (Jaroslav Rohel) +- Fix severity info in "updateinfo info" (Jaroslav Mracek) +- Add help for shell commands (Jaroslav Rohel) +- shell: no crash if missing args (Jaroslav Rohel) +- proper check of releasever, when using installroot (RhBug:1417542) (Martin + Hatina) +- Inform about "Cache was expired" with "dnf clean" (RhBug:1401446) (Jaroslav + Mracek) +- crypto: port to the official gpgme bindings (Igor Gnatenko) +- Fix doc example for `fill_sack` method (Lubomír Sedlář) +- po: update translations (Igor Gnatenko) +- Not try to install src package (RhBug:1416699) (Jaroslav Mracek) +- Add usage for add_new_repo() with repofrompath option (Jaroslav Mracek) +- Add new API add_new_repo() in RepoDict() (RhBug:1427132) (Jaroslav Mracek) +- docs: adds documentation for dnf-automatic's Command and CommandEmail + emitters. (rhn) +- docs: fixes typo in section description in automatic (rhn) +- Adds new emitters for dnf-automatic. (rhn) +- po: update translations (Igor Gnatenko) +- Ensure that callback will not kill dnf transaction (Jaroslav Mracek) +- Ensure that name will be not requested on None (RhBug:1397047) (Jaroslav + Mracek) +- Python 3.6 invalid escape sequence deprecation fix (Ville Skyttä) +- display severity information in updateinfo (#741) (Michael Mraka) +- po: update translations (Igor Gnatenko) +- Add --nodocs option for dnf (RhBug:1379628) (Jaroslav Mracek) +- Replace passive plugin noroot (Jaroslav Mracek) +- Fix incorrect formating of string for logger.info (Jaroslav Mracek) +- Not print help if empty line in script for shell command (Jaroslav Mracek) +- Run fill_sack after all repos have changed status (Jaroslav Mracek) +- Remove Hawkey object from repo if rerun of dnf.fill_sack (Jaroslav Mracek) +- util/on_metered_connection: be more polite to failures (Igor Gnatenko) +- cosmetic: i18n: rewording of 'Login user' (RhBug:1424939) (Jan Silhan) +- Fix problem with --whatprovides in repoquery (RhBug:1396992) (Jaroslav + Mracek) +- Add -a and --all option for repoquery (RhBug:1412970) (Jaroslav Mracek) +- Change camel-case of output of grouplist (Jaroslav Mracek) +- Minor correction in release notes (Jaroslav Mracek) +- Minor correction in release notes (Jaroslav Mracek) + +* Thu Feb 16 2017 Jaroslav Mracek 2.1.0-1 +- bump version to 2.1.0 + update release notes (Jaroslav Mracek) +- Fix problem with --recent option in repoquery (Jaroslav Mracek) +- Fix problem with duplicated --obsoletes (RhBug:1421835) (Jaroslav Mracek) +- Python 3.6 invalid escape sequence deprecation fixes (Ville Skyttä) +- Add --repoid as alias for --repo (Jaroslav Mracek) +- introduce dnf.base.Base.update_cache() (Martin Hatina) +- Try to install uninstalled packages if group installed (Jaroslav Mracek) +- Enable search of provides in /usr/(s)bin (RgBug:1421618) (Jaroslav Mracek) +- style: ignore E261 (Igor Gnatenko) +- makecache: do not run on metered connections (RhBug:1415711) (Igor Gnatenko) +- change '--disableplugins' to '--disableplugin' (Martin Hatina) +- cosmetic: removed unused import (Jan Silhan) +- show hint how to display why package was skipped (RhBug:1417627) (Jan Silhan) +- spec: add information how to obtain archive (Igor Gnatenko) +- fix messages (UX) (Jaroslav Rohel) +- zanata update (Jan Silhan) + +* Thu Feb 09 2017 Jaroslav Mracek 2.0.1-1 +- bump version to 2.0.1 + update release notes (Jaroslav Mracek) +- introduce cli 'obsoletes' option (Martin Hatina) +- swap tids if they are in wrong order (RhBug:1409361) (Michael Mraka) +- Disable shell command recursion (Jaroslav Rohel) +- Honor additional arguments for DNF shell repo list command (Jaroslav Rohel) +- don't traceback when bug title is not set (Michael Mraka) +- introducing list-security, info-security etc. commands (Michael Mraka) +- Add lsedlar to contributors list (Lubomír Sedlář) +- Return just name from Package.source_name (Lubomír Sedlář) +- introduce dnf.conf.config.MainConf.exclude() (Martin Hatina) +- systemd: Disable daemons on ostree-managed systems (Colin Walters) +- introduced dnf.base.Base.autoremove() (RhBug:1414512) (Martin Hatina) +- po: update translations (Igor Gnatenko) +- build: use relative directory for translations (Igor Gnatenko) +- Temporary eliminate a problem with install remove loop (Jaroslav Mracek) +- Handle info message when DRPM wastes data (RhBug:1238808) (Daniel + Aleksandersen) +- Fix output for better translation (RhBug:1386085) (Abhijeet Kasurde) +- yum layer refactored (Martin Hatina) +- return values changed to match yum's (Martin Hatina) +- Reword sentence after removing package (RhBug:1286553) (Abhijeet Kasurde) +- Minor documentation revisions (Mark Szymanski) +- Minor code fix (Abhijeet Kasurde) +- automatic: email emitter date header (David Greenhouse) +- Solve problem when no repo and only rpms with upgrade command (Jaroslav + Mracek) +- bash_completion: use system-python if it's available (Igor Gnatenko) +- spec: use system-python for dnf-yum as well (Igor Gnatenko) +- comps/groups: fix tests (Michal Luscon) +- comps: adjust group_upgrade to new CompsTransPkg style (Michal Luscon) +- groups: refactored installation (RhBug:1337731, RhBug:1336879) (Michal + Luscon) +- Increase requirement for hawkey (Jaroslav Mracek) +- Change reporting problems for downgradePkgs() (Jaroslav Mracek) +- Use selector for base.package_upgrade() (Jaroslav Mracek) +- Add usage of selectors for base.package_install() (Jaroslav Mracek) +- Use selector for base.package_downgrade() (Jaroslav Mracek) +- Redirect base.downgrade() to base.downgrade_to() (Jaroslav Mracek) +- Enable wildcard for downgrade command (RhBug:1173349) (Jaroslav Mracek) +- Refactor downgrade cmd behavior (RhBug:1329617)(RhBug:1283255) (Jaroslav + Mracek) +- Redirect logger.info into stderr for repolist (RhBug:1369411) (Jaroslav + Mracek) +- Redirect logger.info into stderr for repoquery (RhBug:1243393) (Jaroslav + Mracek) +- Add possibility for commands to redirect logger (Jaroslav Mracek) +- Put information about metadata expiration into stdout (Jaroslav Mracek) +- Change warning about added repo into info (RhBug:1243393) (Jaroslav Mracek) +- Move grouplist output from logger into stdout (Jaroslav Mracek) +- let repo exclude work the same way as global exclude (Michael Mraka) +- Fix wrong assumptions about metalinks (RhBug:1411349) (Jaroslav Mracek) +- handle --disablerepo/--enablerepo properly with strict (RhBug:1345976) + (Štěpán Smetana) +- Add fix to notify user about no repos (RhBug:1369212) (Abhijeet Kasurde) +- Add information about "hidden" option in dnf doc (RhBug:1349247) (Abhijeet + Kasurde) +- Fix for 'history package-list' (Amit Upadhye) +- Enable multiple args for repoquery -f (RhBug:1403930) (Jaroslav Mracek) +- Set default repo.name as repo._section (Jaroslav Mracek) +- Create from self.forms value forms in cmd.run() (Jaroslav Mracek) +- Add description of swap command into documentation (Jaroslav Mracek) +- Add swap command (RhBug:1403465) (RhBug:1110780) (Jaroslav Mracek) +- Solve a problem with shell when empty line or EOF (Jaroslav Mracek) +- shell: add history of commands (RhBug:1405333) (Michal Luscon) +- Add info if no files with repoquery -l (RhBug:1254879) (Jaroslav Mracek) +- po: update translations (Igor Gnatenko) +- po: migrate to zanata python client and trivial fixes in build (Igor + Gnatenko) +- po: include all possible languages from zanata (Igor Gnatenko) +- po: include comments for translations (Igor Gnatenko) +- shell: catch exceptions from depsolving (Michal Luscon) +- shell: update documentation (Michal Luscon) +- shell: add transaction reset cmd (Michal Luscon) +- shell: add transaction resolve cmd (Michal Luscon) +- shell: provide rewritable demands for cmds (Michal Luscon) +- shell: catch tracebacks from shlex (Michal Luscon) +- shell: handle ctrl+D more gracefully (Michal Luscon) +- groups: set demands in configure instead of run (Michal Luscon) +- shell: implement config cmd (Michal Luscon) +- shell: add help (Michal Luscon) +- shell: make alias repo list -> repolist (Michal Luscon) +- shell: catch exceptions from do_transaction (Michal Luscon) +- shell: resolve transaction in ts run (Michal Luscon) +- shell: add default value for internal methods argument (Michal Luscon) +- shell: create run alias for ts run (Michal Luscon) +- shell: add ts list cmd (Michal Luscon) +- shell: refill sack after every successful repo cmd (Michal Luscon) +- shell: allow running multiple transaction in one session (Michal Luscon) +- shell: add ts command (Michal Luscon) +- shell: catch cmd parsing and run exceptions (Michal Luscon) +- shell: allow to run scripts (Michal Luscon) +- shell: add repo cmd (Michal Luscon) +- shell: add resolving + transaction run support (Michal Luscon) +- shell: implement quit method (Michal Luscon) +- shell: add custom cmds stubs (Michal Luscon) +- shell: implement basic logic (Michal Luscon) +- shell: register new cmd (Michal Luscon) + +* Wed Dec 14 2016 Michal Luscon 2.0.0-1 +- tests: catch ModuleNotFoundError as well (Igor Gnatenko) +- Switch out automatic service for automatic-download and automatic-install + (Pat Riehecky) +- Make upgrade-to alias for upgrade (RhBug:1327999) (Jaroslav Mracek) +- skip appending an empty option (RhBug: 1400081) (Michael Mraka) +- Add description of nevra foems for commands and autoremove args (Jaroslav + Mracek) +- Add support of arguments nevra forms for autoremove command (Jaroslav Mracek) +- Add nevra forms for remove command (Jaroslav Mracek) +- Add nevra forms for install command (Jaroslav Mracek) +- add bin/yum into .gitignore (Michal Luscon) +- clean: acquire all locks before cleaning (RhBug:1293782) (Michal Luscon) +- Change hawkey version requirement (Jaroslav Mracek) +- Add information for translators (RhBug:1386078) (Jaroslav Mracek) +- Change info to warning for clean repoquery output (RhBug:1358245) (Jaroslav + Mracek) +- Add description of pkg flag for Query (RhBug:1243393) (Jaroslav Mracek) +- Add minor changes in documentation (Jaroslav Mracek) +- Do not always overwrite the name with the repo ID (Neal Gompa) + +* Fri Dec 02 2016 Martin Hatina 2.0.0-0.rc2.1 +- See http://dnf.readthedocs.io/en/latest/release_notes.html + +* Thu Sep 29 2016 Michal Luscon 2.0.0-0.rc1.1 +- See http://dnf.readthedocs.io/en/latest/release_notes.html + +* Thu Sep 08 2016 Igor Gnatenko - 1.1.10-2 +- Obsolete dnf-langpacks +- Backport patch for dnf repolist disabled + +* Thu Aug 18 2016 Igor Gnatenko - 1.1.10-1 +- Update to 1.1.10 + +* Tue Aug 09 2016 Igor Gnatenko - 1.1.9-6 +- Fix typo + +* Tue Aug 09 2016 Igor Gnatenko - 1.1.9-5 +- Also change shebang for %%{?system_python_abi} in %%{_bindir}/dnf + +* Tue Aug 09 2016 Igor Gnatenko - 1.1.9-4 +- Add %%{?system_python_abi} + +* Tue Jul 19 2016 Fedora Release Engineering - 1.1.9-3 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Tue May 24 2016 Michal Luscon 1.1.9-2 +- Revert "group: treat mandatory pkgs as mandatory if strict=true" (RhBug:1337731) +- enforce-api: reflect changes from #992475 in completion_helper (RhBug:1338504) +- enforce-api: add compatibility methods for renamed counterparts (RhBug:1338564) + +* Thu May 19 2016 Igor Gnatenko 1.1.9-1 +- doc: release notes 1.1.9 (Igor Gnatenko) +- spec: correctly set up requirements for python subpkg (Igor Gnatenko) +- spec: follow new packaging guidelines & make compatible with el7 (Igor + Gnatenko) +- zanata update (Jan Silhan) +- enforce-api: add missing bits of Base class (Michal Luscon) +- help: unify help msg strings (Michal Luscon) +- enforce-api: decorate Base class (Michal Luscon) +- util: add decorator informing users of nonapi functions (Michal Luscon) +- Added description for 'autoremove' in dnf help (RhBug:1324086) (Abhijeet + Kasurde) +- i18n: fixup for 0db13feed (Michal Luscon) +- i18n: use fallback mode if terminal does not support UTF-8 (RhBug:1332012) + (Michal Luscon) +- Revert "spec: follow new packaging guidelines & make compatible with el7" + (Michal Luscon) +- move autoglob feature directly to filterm() and filter() (Michael Mraka) +- group: treat mandatory pkgs as mandatory if strict=true (RhBug:1292892) + (Michal Luscon) +- locks: fix lock paths in tmpfsd config since cachedir has been changed + (Michal Luscon) +- remove formating from translation strings (Michal Luscon) +- base: set diskspace check filter before applying the filters (RhBug:1328674) + (Michal Luscon) +- order repos by priority and cost (Michael Mraka) +- spec: follow new packaging guidelines & make compatible with el7 (Igor + Gnatenko) +- bash-completion: first try to set fallback to BASH_COMPLETION_COMPATDIR (Igor + Gnatenko) +- updated copyrights for files changed this year (Michael Mraka) +- cli: fix warning from re.split() about non-empty pattern (RhBug:1286556) + (Igor Gnatenko) +- update authors file (Michal Luscon) +- Define __hash__ method for YumHistoryPackage (RhBug:1245121) (Max Prokhorov) + +* Tue Apr 05 2016 Michal Luscon 1.1.8-1 +- refactor: repo: add md_expired property (Michal Domonkos) +- test: fix cachedir usage in LocalRepoTest (Michal Domonkos) +- clean: operate on all cached repos (RhBug:1278225) (Michal Domonkos) +- refactor: repo: globally define valid repoid chars (Michal Domonkos) +- RepoPersistor: only write to disk when requested (Michal Domonkos) +- clean: remove dead subcommands (Michal Domonkos) +- doc: --best in case of problem (RhBug:1309408) (Jan Silhan) +- Added fix for correct error message for group info (RhBug:1209649) (Abhijeet + Kasurde) +- repo: don't get current timeout for librepo (RhBug:1272977) (Igor Gnatenko) +- doc: fix default timeout value (Michal Luscon) +- cli: inform only about nonzero md cache check interval (Michal Luscon) +- base: report errors in batch at the end of md downloading (Michal Luscon) +- repo: produce more sane error if md download fails (Michal Luscon) +- zanata update (RhBug:1322226) (Jan Silhan) +- doc: Fixed syntax of `assumeyes` and `defaultyes` ref lables in + `conf_ref.rst` (Matt Sturgeon) +- Fix output headers for dnf history command (Michael Dunphy) +- doc: change example of 'dnf-command(repoquery)' (Jaroslav Mracek) +- makacache.service: shorten journal logs (RhBug:1315349) (Michal Luscon) +- config: improve UX of error msg (Michal Luscon) +- Added user friendly message for out of range value (RhBug:1214562) (Abhijeet + Kasurde) +- doc: prefer repoquery to list (Jan Silhan) +- history: fix empty history cmd (RhBug:1313215) (Michal Luscon) +- Very minor tweak to the docs for `--assumeyes` and `--assumeno` (Matt + Sturgeon) + +* Thu Feb 25 2016 Michal Luscon 1.1.7-1 +- Add `/etc/distro.repos.d` as a path owned by the dnf package (Neal Gompa + (ニール・ゴンパ)) +- Change order of search and add new default repodirs (RhBug:1286477) (Neal + Gompa (ニール・ゴンパ)) +- group: don't mark available packages as installed (RhBug:1305356) (Jan + Silhan) +- history: adjust demands for particular subcommands (RhBug:1258503) (Michal + Luscon) +- Added extension command for group list (RhBug:1283432) (Abhijeet Kasurde) +- perf: dnf repository-packages upgrade (RhBug:1306304) (Jan Silhan) +- sack: Pass base.conf.substitutions["arch"] to sack in build_sack() function. + (Daniel Mach) +- build: make python2/3 binaries at build time (Michal Domonkos) +- fix dnf history traceback (RhBug:1303149) (Jan Silhan) +- cli: truncate expiration msg (RhBug:1302217) (Michal Luscon) + +* Mon Jan 25 2016 Michal Luscon 1.1.6-1 +- history: don't fail if there is no history (RhBug:1291895) (Michal Luscon) +- Allow dnf to use a socks5 proxy, since curl support it (RhBug:1256587) + (Michael Scherer) +- output: do not log rpm info twice (RhBug:1287221) (Michal Luscon) +- dnf owns /var/lib/dnf dir (RhBug:1294241) (Jan Silhan) +- Fix handling of repo that never expire (RhBug:1289166) (Jaroslav Mracek) +- Filter out .src packages when multilib_proto=all (Jeff Smith) +- Enable string for translation (RhBug:1294355) (Parag Nemade) +- Let logging format messages on demand (Ville Skyttä) +- clean: include metadata of local repos (RhBug:1226322) (Michal Domonkos) +- completion: Install to where bash-completion.pc says (Ville Skyttä) +- spec: bash completion is not a %%config file (Ville Skyttä) +- Change assertion handling for rpmsack.py (RhBug:1275878) (Jaroslav Mracek) +- cli: fix storing arguments in history (RhBug:1239274) (Ting-Wei Lan) + +* Thu Dec 17 2015 Michal Luscon 1.1.5-1 +- base: save group persistor only after successful transaction (RhBug:1229046) + (Michal Luscon) +- base: do not clean tempfiles after remove transaction (RhBug:1282250) (Michal + Luscon) +- base: clean packages that do not belong to any trans (Michal Luscon) +- upgrade: allow group upgrade via @ syntax (RhBug:1265391) (Michal Luscon) +- spec: Mark license files as %%license where available (Ville Skyttä) +- Remove unused imports (Ville Skyttä) +- Spelling fixes (Ville Skyttä) +- Fix typos in documentation (Rob Cutmore) +- parser: add support for braces in substitution (RhBug:1283017) (Dave + Johansen) +- completion_helper: Don't omit "packages" from clean completions (Ville + Skyttä) +- bash-completion: Avoid unnecessary python invocation per _dnf_helper (Ville + Skyttä) +- repo: Download drpms early (RhBug:1260421) (Ville Skyttä) +- clean: Don't hardcode list of args in two places (Ville Skyttä) +- cli: don't crash if y/n and sys.stdin is None (RhBug:1278382) (Adam + Williamson) +- sp err "environement" -> "environment" (Michael Goodwin) +- Remove -OO from #!/usr/bin/python (RhBug:1230820) (Jaroslav Mracek) +- cli: warn if plugins are disabled (RhBug:1280240) (Michal Luscon) + +* Mon Nov 16 2015 Michal Luscon 1.1.4-1 +- AUTHORS: updated (Jan Silhan) +- query: add compatibility methods (Michal Luscon) +- query: add recent, extras and autoremove methods to Query (Michal Luscon) +- query: add duplicated and latest-limit queries into api (Michal Luscon) +- format the email message with its as_string method (Olivier Andrieu) +- added dnf.i18n.ucd* functions as deprecated API (Jan Silhan) +- i18n: unicode resulting translations (RhBug:1278031) (Jan Silhan) +- po: get rid of new lines in translation (Jan Silhan) +- output: add skip count to summary (RhBug:1264032) (Michal Domonkos) +- groups: fix environment upgrade (Michal Luscon) +- Fix plural strings extraction (RhBug:1209056) (Baurzhan Muftakhidinov) +- po: fixed malformed beginning / ending (Jan Silhan) +- zanata update (Jan Silhan) +- cli: prevent tracebacks after C^ (RhBug:1274946) (Michal Luscon) + +* Wed Oct 14 2015 Michal Luscon 1.1.3-1 +- Update command_ref.rst (Jaroslav Mracek) +- Change in automatic.conf email settings to prevent email error with default + sender name (Jaroslav Mracek) +- Replace assert_called() with assert_called_with() for Py35 support (Neal + Gompa (ニール・ゴンパ)) +- doc: improve documentation (Jaroslav Mracek) +- doc: update the instructions related to nightly builds (Radek Holy) +- Revert "Add the continuous integration script" (Radek Holy) +- Revert "cosmetic: ci: fix the Copr name in the README" (Radek Holy) +- Fix typo in Command.canonical's doctring (Timo Wilken) +- base: group_install is able to exclude mandatory packages + (Related:RhBug:1199868) (Jan Silhan) + +* Wed Sep 30 2015 Michal Luscon 1.1.2-4 +- don't import readline as it causes crashes in Anaconda + (related:RhBug:1258364) + +* Tue Sep 22 2015 Michal Luscon 1.1.2-3 +- Revert "completion_helper: don't get IndexError (RhBug:1250038)" + +* Tue Sep 22 2015 Michal Luscon 1.1.2-2 +- add hawkey version requirement +- revert commit #70956 + +* Tue Sep 22 2015 Michal Luscon 1.1.2-1 +- doc: release notes 1.1.2 (Michal Luscon) +- sanitize non Unicode command attributes (RhBug:1262082) (Jan Silhan) +- don't redirect confirmation to stderr RhBug(1258364) (Vladan Kudlac) +- clean: add rpmdb to usage (Vladan Kudlac) +- completion_helper: don't get IndexError (RhBug:1250038) (Vladan Kudlac) +- add --downloadonly switch (RhBug:1048433) (Adam Salih) +- Add globbing support to base.by_provides() (RhBug:11259650) (Valentina + Mukhamedzhanova) +- spec: packaging python(3)-dnf according to new Fedora guidelines + (RhBug:1260198) (Jaroslav Mracek) +- Bug in Source0: URL in dnf.spec fixed (RhBug:126255) (Jaroslav Mracek) +- To dnf.spec added provides dnf-command(command name) for 21 dnf commands + (RhBug:1259657) (jmracek) +- Expire repo cache on failed package download (Valentina Mukhamedzhanova) +- cosmetic: ci: fix the Copr name in the README (Radek Holy) +- Add the continuous integration script (Radek Holy) +- Set proper charset on email in dnf-automatic (RhBug:1254982) (Valentina + Mukhamedzhanova) +- doc: improve configuration description (RhBug:1261766) (Michal Luscon) +- remove: show from which repo a package is (Vladan Kudlac) +- list: show from which repo a package is (RhBug:1234491) (Vladan Kudlac) +- Spelling/grammar fixes (Ville Skyttä) +- install: fix crash when terminal window is small (RhBug:1256531) (Vladan + Kudlac) +- install: mark unification of the progress bar (Vladan Kudlac) +- fix translations in python3 (RhBug:1254687) (Michal Luscon) +- group: CompsQuery now returns group ids (RhBug:1261656) (Michal Luscon) + +* Tue Sep 08 2015 Michal Luscon 1.1.1-2 +- fix access to demands (RhBug:1259194) (Jan Silhan) +- make clean_requiremets_on_remove=True (RhBug:1260280) (Jan Silhan) + +* Mon Aug 31 2015 Michal Luscon 1.1.1-1 +- Fixed typo (RhBug:1249319) (Adam Salih) +- fixed downgrade with wildcard (RhBug:1234763) (Adam Salih) +- reorganize logic of get_best_selector(s) and query (RhBug:1242946) (Adam + Salih) +- completion_helper: don't crash if exception occurred (RhBug:1225225) (Igor + Gnatenko) +- base: expire cache if repo is not available (Michal Luscon) +- Don't suggest --allowerasing if it is enabled (Christian Stadelmann) +- translation works in python3 (RhBug:1254687) (Jan Silhan) +- logrotate less often (RhBug:1247766) (Jan Silhan) +- implement dnf mark command (RhBug:1125925) (Michal Luscon) +- groups: use comps data to migrate persistor (Michal Luscon) +- groups: preserve api compatibility (Michal Luscon) +- groups: use persistor data for removing env/group (Michal Luscon) +- persistor: add migration and bump version (Michal Luscon) +- persistor: store name and ui_name of group (Michal Luscon) +- show real metadata timestamp on the server in verbose mode (Jan Silhan) +- lock: make rpmdb lock blocking (RhBug:1210289) (Michal Luscon) + +* Wed Aug 12 2015 Michal Luscon 1.1.0-2 +- update: installonly pkgs are not shown in both install and skipped section + (RhBug:1252415) (Jan Silhan) +- output: sort skipped packages (Jan Silhan) +- output: skipped conflicts are set (RhBug:1252032) (Jan Silhan) +- keep the dwongrading package installed if transaction fails (RhBug:1249379) + (Jan Silhan) +- don't store empty attributes (RhBug:1246928) (Michael Mraka) +- doc: correct dnf.conf man section (RhBug:1245349) (Michal Luscon) + +* Mon Aug 10 2015 Michal Luscon 1.1.0-1 +- print skipped pkg with broken deps too (Related:RhBug:1210445) (Jan Silhan) +- history: set commands output as default (RhBug:1218401) (Michal Luscon) +- Update es.po. save:guardar -> save:ahorrar (Máximo Castañeda) +- cosmetic: option arg in Base.*install is replaced with strict (Jan Silhan) +- group: don't fail on first non-existing group (Jan Silhan) +- install: skips local pkgs of lower version when strict=0 + (Related:RhBug:1227952) (Jan Silhan) +- install: skip broken/conflicting packages in groups when strict=0 (Jan + Silhan) +- install: skip broken/conflicting packages when strict=0 (Jan Silhan) +- implemented `strict` config option working in install cmd (RhBug:1197456) + (Jan Silhan) +- fixed 'dnf --quiet repolist' lack of output (RhBug:1236310) (Nick Coghlan) +- Add support for MIPS architecture (Michal Toman) +- package: respect baseurl attribute in localPkg() (RhBug:1219638) (Michal + Luscon) +- Download error message is not written on the same line as progress bar + anymore (RhBug: 1224248) (Adam Salih) +- dnf downgrade does not try to downgrade not installed packages (RhBug: + 1243501) (max9631) +- pkgs not installed due to rpm error are reported (RhBug:1207981) (Adam Salih) +- dnf install checks availability of all given packages (RhBug:1208918) (Adam + Salih) +- implemented install_weak_deps config option (RhBug:1221635) (Jan Silhan) +- ignore SIGPIPE (RhBug:1236306) (Michael Mraka) +- always add LoggingTransactionDisplay to the list of transaction displays + (RhBug:1234639) (Radek Holy) +- Add missing FILES section (RhBug: 1225237) (Adam Salih) +- doc: Add yum vs dnf hook information (RhBug:1244486) (Parag Nemade) +- doc: clarify the expected type of the do_transactions's display parameter + (Radek Holy) +- apichange: add dnf.cli.demand.DemandSheet.transaction_display (Radek Holy) +- apichange: add dnf.callback.TransactionProgress (Radek Holy) +- move the error output from TransactionDisplay into a separate class (Radek + Holy) +- rename TransactionDisplay.errorlog to TransactionDisplay.error (Radek Holy) +- report package verification as a regular RPM transaction event (Radek Holy) +- rename TransactionDisplay.event to TransactionDisplay.progress (Radek Holy) +- apichange: deprecate dnf.callback.LoggingTransactionDisplay (Radek Holy) +- use both CliTransactionDisplay and demands.transaction_display (Radek Holy) +- apichange: accept multiple displays in do_transaction (Radek Holy) +- support multiple displays in RPMTransaction (Radek Holy) + +* Fri Jul 31 2015 Michal Luscon 1.0.2-3 +- Fix regression in group list command introduced by 02c3cc3 (Adam Salih) +- AUTHORS: updated (Jan Silhan) +- stop saying "experimental" (Matthew Miller) + +* Tue Jul 21 2015 Jan Silhan 1.0.2-2 +- fixed python3 syntax error from f427aa2 (Jan Silhan) + +* Fri Jul 17 2015 Michal Luscon 1.0.2-1 +- give --allowerasing hint when error occurs during resolution (RhBug:1148630) + (Jan Silhan) +- show --best hint with skipped packages every time (RhBug:1176351) (Jan Silhan) +- notify about skipped packages when upgrade (RhBug:1210445) (Jan Silhan) +- dnf-automatic: Document apply_updates=no behavior wrt keepcache (Ville + Skyttä) +- persistor: share functionality of JSONDB (Jan Silhan) +- keepcache=0 persists packages till next successful transaction + (RhBug:1220074) (Jan Silhan) +- do not use releasever in cache path (related to RhBug:1173107) (Michael + Mraka) +- doc: add dnf list use case (Michal Luscon) +- repo: allow ntlm proxy auth (RhBug:1219199) (Michal Luscon) +- add a script which updates release notes (Radek Holy) +- doc: reverse the order of release notes (Radek Holy) +- completion_helper: fix tb if list XXX is not known arg (RhBug:1220040) (Igor + Gnatenko) +- configurable maximum number of parallel downloads (RhBug:1230975) (Igor + Gnatenko) +- add info to bash_completion (1nsan3) +- dnf upgrade does not try to upgrade uninstalled packages (RhBug: 1234763) + (Adam Salih) +- dnf group list now checks every package and prints out only invalid ones + (Adam Salih) +- install: return zero exit code if group is already installed (RhBug:1232815) + (Michal Luscon) +- doc: add -b which does the same as --best (Igor Gnatenko) +- support category groups (Michael Mraka) +- cli test update for repofrompath (Michael Mraka) +- documentation for --repofrompath (Michael Mraka) +- implemented --repofrompath option (RhBug:1113384) (Michael Mraka) +- doc: document filter provides and obsoletes (Michal Luscon) +- doc: extend --quiet explanation (RhBug:1133979) (Jan Silhan) +- fixed dnf-automatic email emitter unicode error (RhBug:1238958) (Jan Silhan) +- doc: be specific what 'available' means in list/info (Jan Silhan) +- cosmetic: fixed typo (RhBug:1238252) (Jan Silhan) +- groups: clean dependencies (Michal Luscon) +- groups: fix removing of env that contains previously removed group (Michal + Luscon) +- groups: fix removing of empty group (Michal Luscon) +- AUTHORS: updated (Jan Silhan) +- bash-completion: ignore sqlite3 user configuration (Peter Simonyi) +- Fix package name for rawhide .repo files (Frank Dana) +- Add 'transaction_display' to DemandSheet (Will Woods) +- translation: update (Jan Silhan) +- translation: use zanata instead of transifex (Jan Silhan) +- Updated Polish translation (Piotr Drąg) +- updated georgian translation (George Machitidze) +- group: fixed installing of already installed environment (Jan Silhan) +- conf: change minrate threshold to librepo default (RhBug:1212320) (Michal + Luscon) + +* Tue Jun 09 2015 Michal Luscon 1.0.1-2 +- conf: change minrate threshold to librepo default (RhBug:1212320) +- group: fixed installation of already installed environments + +* Tue Jun 09 2015 Michal Luscon 1.0.1-1 +- doc: document variables in repo conf (Michal Luscon) +- groups: temporary fix for group remove (RhBug:1214968) (Michal Luscon) +- group: print summary of marked groups / environments together at the end (Jan + Silhan) +- group: fixed marking as installed (RhBug:1222694) (Jan Silhan) +- doc: Spelling fixes (Ville Skyttä) +- dnf-automatic: Fix systemd service description (thanks Ville Skyttä) (Jan + Silhan) +- doc: assumeyes added to Base.conf and config option (Jan Silhan) +- optionparser: deleted --obsoletes option that conflicted with repoquery + plugin (Jan Silhan) +- dnf-automatic: Document emit_via default (Ville Skyttä) +- man: yum2dnf don;t show content (RhBug:1225246) (Thanks Adam Salih) (Jan + Silhan) +- doc: allowed chars of repo ID (Jan Silhan) +- doc: minimal repo config file (Jan Silhan) +- doc: configuration files replacement policy (Jan Silhan) +- fixed typo in man page (RhBug:1225168) (Michael Mraka) +- Update authors (Michal Luscon) +- dnf-automatic: add random_sleep option (RhBug:1213985) (Vladan Kudlac) +- don't print bug report statement when rpmdb is corrupted + (Related:RhBug:1225277) (Jan Silhan) +- comps: fix unicode issue (RhBug:1223932) (Thanks Parag) (Parag Nemade) +- logging: setup librepo log in verbose mode (Michal Luscon) +- doc: document the versioning scheme (Radek Holy) +- groups: end up empty group removal before solving (Michal Luscon) +- groups: end up empty installation before solving (RhBug:1223614) (Michal + Luscon) +- doc: add support for transactions/packages/ranges in "dnf history list" + (Radek Holy) +- doc: add support for transaction ranges in "dnf history info" (Radek Holy) +- support ssl client certificates (RhBug:1203661) (Michael Mraka) +- doc: document the "mirrorlist" configuration option (Radek Holy) +- doc: document the "metalink" configuration option (Radek Holy) +- doc: document the "baseurl" configuration option (Radek Holy) +- doc: document the "enabled" configuration option (Radek Holy) +- doc: document the "name" configuration option (Radek Holy) +- Revert "spec: added sqlite requirement" (Jan Silhan) +- spec: added sqlite requirement (Jan Silhan) +- cosmetic: fixed typo in comment (Jan Silhan) +- man: added reference to bug reporting guide (Jan Silhan) +- test: ignore user terminal width (Jan Silhan) +- cosmetic: base: import dnf.util.first (Jan Silhan) +- base.upgrade: inform user when pkg not installed and skipped (RhBug:1187741) + (Jan Silhan) +- disable buildtime c/c++ dependency (Michael Mraka) +- doc: document the new virtual provides (Radek Holy) +- AUTHORS: updated (Jan Silhan) +- AUTHORS: distuinguish authors and contributors (Jan Silhan) +- Create ka.po (George Machitidze) +- Parser: fix path handling (Haikel Guemar) +- doc: metadata_timer_sync checked every hour (Jan Silhan) + +* Wed Apr 29 2015 Michal Luscon 1.0.0-1 +- doc: release notes dnf-1.0.0 (Michal Luscon) +- completion: don't do aliases (RhBug:1215289) (Jan Silhan) +- use Sack.load_repo() instead of Sack.load_yum_repo() (Jan Silhan) +- Repo.name has default value of repo ID (RhBug:1215560) (Jan Silhan) +- cosmetic: get rid of user visible yum references (Jan Silhan) +- moved install_or_skip to dnf.comps (Jan Silhan) +- group: see already installed group during installation (RhBug:1199648) (Jan + Silhan) +- group: install_or_skip returns num of packages to install (Jan Silhan) +- group: made global function install_or_skip (Jan Silhan) +- AUTHORS: updated (Radek Holy) +- describe --refresh option in --help output (Pádraig Brady) +- better no such command message (RhBug:1208773) (Jan Silhan) +- doc: package-cleanup example doesn't print 'No match for argument:...' + garbage (Jan Silhan) +- mention yum check replacement (Michael Mraka) +- added ref to dnf list (Michael Mraka) +- added package-cleanup to dnf translation table (Michael Mraka) +- python3: Repo comparison (RhBug:1208018) (Jan Silhan) +- python3: YumHistoryRpmdbProblem comparison (RhBug:1207861) (Jan Silhan) +- python3: YumHistoryTransaction comparison (Jan Silhan) +- tests: use packages in test_transaction (Radek Holy) +- cosmetic: fix some Pylint errors (Radek Holy) +- updated documentation wrt installonlypkgs and auto removal (Michael Mraka) +- mark installonly packages always as userinstalled (RhBug:1201445) (Michael + Mraka) +- mark username/password as api (Michael Mraka) +- document username/password repo attributes (Michael Mraka) +- support HTTP basic auth (RhBug:1210275) (Michael Mraka) +- cli: better metadata timestamp info (Michal Luscon) +- repo: add metadata mirror failure callback (Michal Luscon) +- dnf-yum: cosmetic: lower case after comma (Jan Silhan) +- dnf-yum: print how to install migrate plugin (Jan Silhan) +- doc: show the real package for each tool in dnf-plugins-extras (Tim + Lauridsen) +- doc: improve the documentation of repo costs (Radek Holy) +- doc: fix debuginfo-install package name (Michal Luscon) +- doc: release notes 0.6.5 (Michal Luscon) +- bash-completion: allow only one subcmd for help (Igor Gnatenko) +- bash-completion: add history completion (Igor Gnatenko) +- bash-completion: add completion for help (Igor Gnatenko) +- bash-completion: check where pointing bin/dnf (Igor Gnatenko) +- bash-completion: implement completion for clean cmd (Igor Gnatenko) +- bash_completion: implement downgrade command (Igor Gnatenko) +- bash-completion: refactor to python helper (Igor Gnatenko) +- command downgrade does downgrade_to (RhBug:1191275) (Jan Silhan) +- AUTHORS: updated (Jan Silhan) +- clean: 'dnf clean all' should also clean presto and updateinfo solvx files + (Parag Nemade) +- dnf-yum: modified warning message (RhBug:1207965) (Jan Silhan) + +* Tue Mar 31 2015 Michal Luscon 0.6.5-1 +- subject: expand every glob name only once (RhBug:1203151) (Michal Luscon) +- group mark: skips already installed groups (Jan Silhan) +- Merge pull request #246 from mluscon/yum2dnf (mluscon) +- Add yum2dnf man page (Michal Luscon) +- doc: extend cli_vs_yum (Michal Luscon) +- dnf-yum package does not conflict with yum 3.4.3-505+ (Jan Silhan) +- fixed double set of demand from 0e4276f (Jan Silhan) +- group: remove cmd don't load available_repos, see 04da412 (Jan Silhan) +- spec: /var/lib/dnf owned by dnf-conf (Jan Silhan) +- spec: apply the weak dependencies only on F21+ (Radek Holy) +- dnf-automatic: fixed python_sitelib (RhBug:1199450) (Jan Silhan) +- Add release instructions (Michal Luscon) +- setup tito to bump version in VERSION.cmake (Michal Luscon) +- initialize to use tito (Michal Luscon) +- prepare repo for tito build system (Michal Luscon) +- spec: recommends bash-completion (RhBug:1190671) (Jan Silhan) +- completion: work with just python(3)-dnf (Jan Silhan) +- spec: move necessary files inside python(3) subpackages (RhBug:1191579) (Jan Silhan) +- bash-completion: use python method to get commands (RhBug:1187579) (Igor Gnatenko) +- api: exposed pluginconfpath main config (RhBug:1195325) (Jan Silhan) +- updated AUTHORS (Jan Silhan) +- add reinstall to bash_completion (Alberto Ruiz) +- added new packages to @System for duplicated query test (Michael Mraka) +- test for duplicated, installonly and latest_limit pkgs (Michael Mraka) +- tests for autoremove, extras and recent pkgs (Michael Mraka) +- moved push_userinstalled from base to goal (Michael Mraka) +- filter or skip 'n' latest packages (Michael Mraka) +- moved recent to query (Michael Mraka) +- moved autoremove to query (Michael Mraka) +- moved extras list to query (Michael Mraka) +- create query for installonly packages (Michael Mraka) +- create query for duplicated packages (Michael Mraka) +- cosmetic: base: fixed pylint warnings (Jan Silhan) +- do transaction cleanup after plugin hook (RhBug:1185977) (Michal Luscon) +- base: extend download lock (RhBug:1157233) (Michal Luscon) +- lock: output meaningful error for malformed lock file (Michal Luscon) +- util: fix race condition in ensure_dir() (Michal Luscon) +- lock: switch metadata lock to blocking mode (Michal Luscon) +- install nonmandatory group packages as optional (Related:RhBug:1167881) (Michal Luscon) +- remove command deletes whole dependency tree (RhBug:1154202) (Jan Silhan) +- cmd list takes as parameter, revert of 526e674 (Jan Silhan) +- spec: own /var/lib/dnf directory (RhBug:1198999) (Jan Silhan) +- transifex update (Jan Silhan) +- doc: fixed systemd execution of dnf-automatic (Jan Silhan) +- doc: how to run dnf-automatic (RhBug:1195240) (Jan Silhan) +- cosmetic: added forgotten :api mark from 05b03fc (Jan Silhan) +- api: exposed Repo.skip_if_unavailable config (RhBug:1189083) (Jan Silhan) +- updated documentation for 'dnf list autoremove' (Michael Mraka) +- reuse list_autoremove() in autoremove command (Michael Mraka) +- function for autoremove package list (Michael Mraka) +- implemented dnf list autoremove (Michael Mraka) +- exclude not documented history subcommands (RhBug:1193914,1193915) (Jan Silhan) +- better file pattern recognition (RhBug:1195385) (Jan Silhan) +- spec: fix Obsoletes of the new DNF (Radek Holy) +- remove boot only constraint and add missing download lock (Michal Luscon) +- util: remove unused user_run_dir() function (Michal Luscon) +- lock: change the destination folder of locks to allow suided programs work properly (RhBug:1195661) (Michal Luscon) +- install dnf-3 only when python3 is enabled (thanks glensc) (Jan Silhan) +- fixed unicode Download error (RhBug:1190458) (Jan Silhan) +- log: print metadata age along with timestamp (Petr Spacek) +- cli: fix double expansion of cachedir (RhBug:1194685) (Michal Luscon) +- removed unused dnf-makecache.cron (Jan Silhan) +- renamed erase command to remove (RhBug:1160806) (Jan Silhan) +- spec: made python3-dnf package installed by default in f23 (Jan Silhan) +- AUTHORS: changed email address (Jan Silhan) +- doc: improve the documentation of the "install" command (Radek Holy) +- "dnf install non-existent" should fail (Radek Holy) +- tests: add some tests of Base.install (Radek Holy) +- tests: add some tests of Base.package_install (Radek Holy) +- Revert "doesn't upgrade packages by installing local packages" (RhBug:1160950) (Radek Holy) +- lint: fix all Pylint errors in test_install (Radek Holy) +- tests: add some tests to test_install (Radek Holy) +- tests: improve some tests in test_install (Radek Holy) +- cosmetic: reorder tests in test_install (Radek Holy) +- cosmetic: rename some tests in test_install and add some docstrings (Radek Holy) +- AUTHORS: updated (Jan Silhan) +- Add support for armv6hl (Peter Hjalmarsson) +- doc: subject.__init__(): what is pkg_spec (Jan Silhan) +- doc: mentioning raising IOError from Base.fill_sack() (Jan Silhan) +- option_parser: fixed splitting multiple values (RhBug:1186710) (Jan Silhan) +- AUTHORS: updated (Jan Silhan) +- Standardize words describing boolean data type (Christopher Meng) + +* Wed Feb 4 2015 Jan Silhan - 0.6.4-1 +- Adapt to librepo-1.7.13, metalink and mirrorlist are not loaded anymore when the repo is local. (Radek Holy) +- not raises value error when no metadata exist (Jan Silhan) +- Remove lock files during boot (RhBug:1154476) (Michal Luscon) +- doc: groups are ordered not categories (Jan Silhan) +- doc: added Package attributes to API (Jan Silhan) +- README: link to bug reporting guide (Jan Silhan) +- README: the official documentation is on readthedoc (Jan Silhan) +- i18n: unicode encoding does not throw error (RhBug:1155877) (Jan Silhan) +- conf: added minrate repo option (Related:RhBug:1175466) (Jan Silhan) +- conf: added timeout repo option (RhBug:1175466) (Jan Silhan) +- doc: api_queries: add 'file' filter description (RhBug:1186461) (Igor Gnatenko) +- doc: documenting enablegroups (Jan Silhan) +- log: printing metadata timestamp (RhBug:1170156) (Jan Silhan) +- base: setup default cachedir value (RhBug:1184943) (Michal Luscon) +- orders groups/environments by display_order tag (RhBug:1177002) (Jan Silhan) +- no need to call create_cmdline_repo (Jan Silhan) +- base: package-spec matches all packages which the name glob pattern fits (RhBug:1169165) (Michal Luscon) +- doc: move dnf.conf to appropriate man page section (RhBug:1167982) (Michal Luscon) +- tests: add test for blocking process lock (Michal Luscon) +- lock: fix several race conditions in process lock mechanism (Michal Luscon) +- base: use blocking process lock during download phase (RhBug:1157233) (Michal Luscon) +- Update the Source0 generation commands in dnf.spec.in file (Parag Nemade) +- Enhancement to dnf.spec.in file which follows current fedora packaging guidelines (Parag Nemade) +- doc: add some examples and documentation of the core use case (RhBug:1138096) (Radek Holy) +- bash-completion: enable downgrading packages for local files (RhBug:1181189) (Igor Gnatenko) +- group: prints plain package name when package not in any repo (RhBug:1181397) (Jan Silhan) +- spec: own __pycache__ for python 3 (Igor Gnatenko) +- changed hawkey.log dir to /var/log (RhBug:1175434) (Jan Silhan) +- bash-completion: handle sqlite errors (Igor Gnatenko) +- use LANG=C when invoking 'dnf help' and 'sed' with regular expressions (Jakub Dorňák) +- spec: own __pycache__ directory for py3 (Igor Gnatenko) +- doc: mentioning Install command accepts path to local rpm package (Jan Silhan) +- groups: in erase and install cmd non-existent group does not abort transaction (Jan Silhan) +- doc: running tests in README (Jan Silhan) +- api: transaction: added install_set and remove_set (RhBug:1162887) (Jan Silhan) +- cosmetic: fixed some typos in documentation (Jan Silhan) +- groups: environments described after @ sign works (RhBug:1156084) (Jan Silhan) +- own /etc/dnf/protected.d (RhBug:1175098) (Jan Silhan) +- i18n: computing width of char right (RhBug:1174136) (Jan Silhan) +- cosmetic: renamed _splitArg -> _split_arg (Jan Silhan) +- conf: removed include name conflict (RhBug:1055910) (Jan Silhan) +- output: removed unpredictable decision based on probability introduced in ab4d2c5 (Jan Silhan) +- output: history list is not limited to 20 records (RhBug:1155918) (Jan Silhan) +- doc: referenced forgotten bug fix to release notes (Jan Silhan) +- cosmetic: doc: removed duplicated word (Jan Silhan) +- doc: described unavailable package corner case with skip_if_unavailable option (RhBug:1119030) (Jan Silhan) +- log: replaced size with maxsize directive (RhBug:1177394) (Jan Silhan) +- spec: fixed %ghost log file names (Jan Silhan) + +* Mon Dec 8 2014 Jan Silhan - 0.6.3-2 +- logging: reverted naming from a6dde81 + +* Mon Dec 8 2014 Jan Silhan - 0.6.3-1 +- transifex update (Jan Silhan) +- bash-completion: don't query if we trying to use local file (RhBug:1153543) (Igor Gnatenko) +- bash-completion: fix local completion (RhBug:1151231) (Igor Gnatenko) +- bash-completion: use sqlite cache from dnf-plugins-core (Igor Gnatenko) +- base: output a whole list of installed packages with glob pattern (RhBug:1163063) (Michal Luscon) +- cli: _process_demands() does not respect --caheonly (RhBug:1151854) (Michal Luscon) +- new authors added (Jan Silhan) +- install: allow installation of provides with glob (Related:RhBug:1148353) (Michal Luscon) +- tests: removed mock patch for _, P_ (Jan Silhan) +- fixed error summary traceback (RhBug:1151740) (Jan Silhan) +- doc: swap command alternative mentioned (RhBug:1110780) (Jan Silhan) +- base: package_reinstall works only with the same package versions (Jan Silhan) +- base: package_install allows install different arch of installed package (Jan Silhan) +- base: package_downgrade prints message on failure (Jan Silhan) +- base: package_upgrade does not reinstall or downgrade (RhBug:1149972) (Jan Silhan) +- groups: searches also within localized names (RhBug:1150474) (Jan Silhan) +- Run tests with C locales. (Daniel Mach) +- Adds new motd emitter for dnf-automatic (RhBug:995537) (Kushal Das) +- Fix wrong cache directory path used to clean up binary cache (Satoshi Matsumoto) +- fix: traceback in history info (RhBug: 1149952) (Tim Lauridsen) +- logging: added logrotate script for hawkey.log (RhBug:1149350) (Jan Silhan) +- output: renamed displayPkgsInGroups (Jan Silhan) +- logging: renamed log files (RhBug:1074715)" (Jan Silhan) +- comps: Environment differentiates optional and mandatory groups (Jan Silhan) +- group info handles environments (RhBug:1147523) (Jan Silhan) +- deltarpm enabled by default (RhBug:1148208) (Jan Silhan) +- doc: deplist command (Jan Silhan) +- doc: minor fixes + repo references changed (Jan Silhan) +- spec: requires rpm-plugin-systemd-inhibit (RhBug:1109927) (Jan Silhan) + +* Fri Oct 3 2014 Jan Silhan - 0.6.2-1 +- transifex update (Jan Silhan) +- refactor: move MakeCacheCommand out into its own file. (Ales Kozumplik) +- api: add dnf.cli.CliError. (Ales Kozumplik) +- Update user_faq.rst (Stef Krie) +- Make --refresh play nice with lazy commands. (Ales Kozumplik) +- bash-completion: more faster completing install/remove (Igor Gnatenko) +- bash-completion: complete 'clean|groups|repolist' using help (Igor Gnatenko) +- Allow some commands to use stale metadata. (RhBug:909856) (Ales Kozumplik) +- does not install new pkgs when updating from local pkgs (RhBug:1134893) (Jan Silhan) +- doesn't upgrade packages by installing local packages (Related:RhBug:1138700) (Jan Silhan) +- refactor: repo: separate concepts of 'expiry' and 'sync strategy'. (Ales Kozumplik) +- fix: dnf.cli.util.* leaks file handles. (Ales Kozumplik) +- remove: YumRPMTransError. (Ales Kozumplik) +- rename: Base's runTransaction -> _run_transaction(). (Ales Kozumplik) +- drop unused parameter of Base.verify_transaction(). (Ales Kozumplik) +- bash-completion: new completion from scratch (RhBug:1070902) (Igor Gnatenko) +- py3: add queue.Queue to pycomp. (Ales Kozumplik) +- locking: store lockfiles with the resource they are locking. (RhBug:1124316) (Ales Kozumplik) +- groups: marks reason 'group' for packages that have no record yet (RhBug:1136584) (Jan Silhan) +- goal: renamed undefined name variable (Jan Silhan) +- refactor: split out and clean up the erase command. (Ales Kozumplik) +- py3: fix traceback in fmtColumns() on a non-subscriptable 'columns'. (Ales Kozumplik) +- groups: allow erasing depending packages on remove (RhBug:1135861) (Ales Kozumplik) +- history: fixed wrong set operation (RhBug:1136223) (Jan Silhan) +- base: does not reinstall pkgs from local rpms with install command (RhBug:1122617) (Jan Silhan) +- refactor: crypto: drop the integer keyid representation altogether. (Ales Kozumplik) +- crypto: fix importing rpmfusion keys. (RhBug:1133830) (Ales Kozumplik) +- refactor: crypto: Key is a class, not an "info" dict. (Ales Kozumplik) +- repos: fix total downloaded size reporting for cached packages. (RhBug:1121184) (Ales Kozumplik) + +* Thu Aug 28 2014 Jan Silhan - 0.6.1-1 +- packaging: add dnf-yum. (Ales Kozumplik) +- cli: added plugins missing hint (RhBug:1132335) (Jan Silhan) +- using ts.addReinstall for package reinstallation (RhBug:1071854) (Jan Silhan) +- Add history redo command. (Radek Holy) +- Add a TransactionConverter class. (Radek Holy) +- bash-completion: complete `help` with commands (Igor Gnatenko) +- bash-completion: generate commands dynamically (Igor Gnatenko) +- base: group_install accepts glob exclude names (RhBug:1131969) (Jan Silhan) +- README: changed references to new repo location (Jan Silhan) +- transifex update (Jan Silhan) +- syntax: fixed indentation (Jan Silhan) +- removed lt.po which was accidentally added in c2e9b39 (Jan Silhan) +- lint: fix convention violations in the new source files (Radek Holy) +- Fix setting of the resolving demand for repo-pkgs command. (Radek Holy) +- Add repository-packages remove-or-distro-sync command. (RhBug:908764) (Radek Holy) +- fix: traceback that GroupPersistor._original might not exist. (RhBug:1130878) (Ales Kozumplik) +- pycomp: drop to_ord(). (Ales Kozumplik) +- refactor: crypto.keyids_from_pubring() using _extract_signing_subkey(). (Ales Kozumplik) +- fix: another 32-bit hex() problem in crypto. (Ales Kozumplik) +- remove: pgpmsg.py. (Ales Kozumplik) +- replace the whole of pgpmsg.py with gpgme and a dummy context. (Ales Kozumplik) +- cosmetic: sort methods of Repo according to the coding standard. (Ales Kozumplik) +- Fix dnf.crypto.keyinfo2keyid(). (Ales Kozumplik) +- util: get rid of an inconvenient 'default_handle' constant. (Ales Kozumplik) +- simplify misc.import_key_to_pubring()'s signature. (Ales Kozumplik) +- cleanup: header of dnf.yum.pgpmsg. (Ales Kozumplik) +- crypto: add crypto.retrieve() and drop Base._retrievePublicKey() (Ales Kozumplik) +- cosmetic: order of functions in dnf.crypto. (Ales Kozumplik) +- unicode: fixed locale.format error (RhBug:1130432) (Jan Silhan) +- remove: misc.valid_detached_sig(). (Ales Kozumplik) +- tests: some tests for dnf.crypto. (Ales Kozumplik) +- crypto: use pubring_dir() context manager systematically. (Ales Kozumplik) +- Drop unused argument from getgpgkeyinfo(). (Ales Kozumplik) +- remove: Base._log_key_import(). (Ales Kozumplik) +- doc: cosmetic: conf_ref: maintain alphabetical order of the options. (Ales Kozumplik) +- crypto: document crypto options for repo. (Ales Kozumplik) +- crypto: fixup procgpgkey() to work with Py3 bytes. (Ales Kozumplik) +- dnf.util.urlopen(): do not create unicode streams for Py3 and bytes for Py2 by default. (Ales Kozumplik) +- lint: delinting of the repo_gpgcheck patchset. (Ales Kozumplik) +- Add CLI parts to let the user confirm key imports. (RhBug:1118236) (Ales Kozumplik) +- gpg: make key decoding work under Py3. (Ales Kozumplik) +- crypto: add dnf.crypto and fix things up so untrusted repo keys can be imported. (Ales Kozumplik) +- transifex update (Jan Silhan) +- syntax: fixed indentation (Jan Silhan) +- packaging: pygpgme is a requirement. (Ales Kozumplik) +- remove: support for gpgcakey gets dropped for now. (Ales Kozumplik) +- repo: smarter _DetailedLibrepoError construction. (Ales Kozumplik) +- repo: nicer error message on librepo's perform() failure. (Ales Kozumplik) +- get_best_selector returns empty selector instead of None (Jan Silhan) +- packaging: add automatic's systemd unit files. (RhBug:1109915) (Ales Kozumplik) +- automatic: handle 'security' update_cmd. (Ales Kozumplik) + +* Tue Aug 12 2014 Aleš Kozumplík - 0.6.0-1 +- lint: fix convention violations in the new source files (Radek Holy) +- Add "updateinfo [] [] security" command. (RhBug:850912) (Radek Holy) +- Add "updateinfo [] [] bugfix" command. (Radek Holy) +- Add "updateinfo [] [] enhancement" command. (Radek Holy) +- Add "updateinfo [] [] [...]" command. (Radek Holy) +- Add "updateinfo [] [] [...]" command. (Radek Holy) +- Add "updateinfo [] all" command. (Radek Holy) +- Add "updateinfo [] updates" command. (Radek Holy) +- Add "updateinfo [] installed" command. (Radek Holy) +- Add "-v updateinfo info" command. (Radek Holy) +- Add "updateinfo info" command. (Radek Holy) +- Add "updateinfo list" command. (Radek Holy) +- Add "updateinfo available" command. (Radek Holy) +- Add "updateinfo summary" command. (Radek Holy) +- Add basic updateinfo command. (Radek Holy) +- test: add updateinfo to the testing repository (Radek Holy) +- test: support adding directory repos to Base stubs (Radek Holy) +- test: really don't break other tests with the DRPM fixture (Radek Holy) +- Load UpdateInfo.xml during the sack preparation. (Radek Holy) +- Add Repo.updateinfo_fn. (Radek Holy) +- lint: add Selector calls to false positives, it's a hawkey type. (Ales Kozumplik) +- removed recursive calling of ucd in DownloadError (Jan Silhan) +- does not throw error when selector is empty (RhBug:1127206) (Jan Silhan) +- remove etc/version-groups.conf, not used. (Ales Kozumplik) +- lint: dnf.conf.parser (Ales Kozumplik) +- rename: dnf.conf.parser.varReplace()->substitute() (Ales Kozumplik) +- pycomp: add urlparse/urllib.parser. (Ales Kozumplik) +- move: dnf.yum.parser -> dnf.conf.parser. (Ales Kozumplik) +- packaging: add dnf-automatic subpackage. (Ales Kozumplik) +- doc: properly list the authors. (Ales Kozumplik) +- automatic: add documentation, including dnf.automatic(8) man page. (Ales Kozumplik) +- dnf-automatic: tool supplying the yum-cron functionality. (Ales Kozumplik) +- doc: cosmetic: fixed indent in proxy directive (Jan Silhan) +- include directive support added (RhBug:1055910) (Jan Silhan) +- refactor: move MultiCallList to util. (Ales Kozumplik) +- cli: do not output that extra starting newline in list_transaction(). (Ales Kozumplik) +- refactor: extract CLI cachedir magic to cli.cachedir_fit. (Ales Kozumplik) +- transifex update (Jan Silhan) +- move: test_output to tests/cli. (Ales Kozumplik) +- refactor: move Term into its own module. (Ales Kozumplik) +- refactoring: cleanup and linting in dnf.exceptions. (Ales Kozumplik) +- lint: test_cli.py (Ales Kozumplik) +- lint: rudimentary cleanups in tests.support. (Ales Kozumplik) +- refactor: loggers are module-level variables. (Ales Kozumplik) +- groups: promote unknown-reason installed packages to 'group' on group install. (RhBug:1116666) (Ales Kozumplik) +- c82267f refactoring droppped plugins.run_transaction(). (Ales Kozumplik) +- cli: sort packages in the transaction summary. (Ales Kozumplik) +- refactor: cli: massively simplify how errors are propagated from do_transaction(). (Ales Kozumplik) +- groups: rearrange things in CLI so user has to confirm the group changes. (Ales Kozumplik) +- groups: committing the persistor data should only happen at one place. (Ales Kozumplik) +- groups: visualizing the groups transactions. (Ales Kozumplik) +- Add dnf.util.get_in() to navigate nested dicts with sequences of keys. (Ales Kozumplik) +- group persistor: generate diffs between old and new DBs. (Ales Kozumplik) +- Better quoting in dnf_pylint. (Ales Kozumplik) +- lint: logging.py. (Ales Kozumplik) +- Do not print tracebacks to the tty on '-d 10' (RhBug:1118272) (Ales Kozumplik) +- search: do not double-report no matches. (Ales Kozumplik) +- refactor: move UpgradeToCommand to its own module. (Ales Kozumplik) + +* Mon Jul 28 2014 Aleš Kozumplík - 0.5.5-1 +- packaging: also add pyliblzma to BuildRequires. (Ales Kozumplik) +- essential cleanup in dnf.yum.misc, removing a couple of functions too. (Ales Kozumplik) +- remove: Base.findDeps and friends. (Ales Kozumplik) +- Make pyliblzma a requriement. (RhBug:1123688) (Ales Kozumplik) +- whole user name can contain non-ascii chars (RhBug:1121280) (Jan Silhan) +- Straighten up the exceptions when getting a packages header. (RhBug:1122900) (Ales Kozumplik) +- tests: refactor: rename test_resource_path() -> resource_path() and use it more. (Ales Kozumplik) +- transifex update (Jan Silhan) +- remove: conf.commands. (Ales Kozumplik) +- proxy username and password, for both CLI and API. (RhBug:1120583) (Ales Kozumplik) +- conf: only 'main' is a reserved section name. (Ales Kozumplik) +- refactoring: cleanup a couple of lint warnings in base.py. (Ales Kozumplik) +- refactoring: move repo reading implementation out of dnf.Base. (Ales Kozumplik) +- refactor: repo_setopts is a CLI thing and doesn't belong to Base. (Ales Kozumplik) +- refactor: move cleanup methods to dnf.cli.commands.clean. (Ales Kozumplik) +- depsolving: doesn't install both architectures of pkg by filename (RhBug:1100946) (Jan Silhan) +- refactor: put CleanCommand in its own module. (Ales Kozumplik) +- cli: avoid 'Error: None' output on malformed CLI commands. (Ales Kozumplik) +- remove the special SIGQUIT handler. (Ales Kozumplik) +- api: In Repo(), cachedir is a required argument. (Ales Kozumplik) +- api: better describe how Repos should be created, example. (RhBug:1117789) (Ales Kozumplik) +- Base._conf lasts the lifetime of Base and can be passed via constructor. (Ales Kozumplik) +- doc: faq: having Yum and DNF installed at the same time. (Ales Kozumplik) +- remove: protected_packages config option, it has been ignored. (Ales Kozumplik) +- fix: misleading error message when no repo is enabled. (Ales Kozumplik) + +* Wed Jul 16 2014 Aleš Kozumplík - 0.5.4-1 +- pkg name from rpm transaction callback is in Unicode (RhBug:1118796) (Jan Silhan) +- packaging: python3-dnf depends on dnf. (RhBug:1119032) (Ales Kozumplik) +- Ship /usr/bin/dnf-3 to run DNF under Py3. (RhBug:1117678) (Ales Kozumplik) +- packaging: own /etc/dnf/plugins. (RhBug:1118178) (Ales Kozumplik) +- fix: pluginconfpath is a list. (Ales Kozumplik) +- cosmetic: use classmethod as a decorator in config.py. (Ales Kozumplik) +- cleanup: imports in dnf.cli.output (Ales Kozumplik) +- lint: straightforward lint fixes in dnf.cli.output. (Ales Kozumplik) +- Repo.__setattr__ has to use the parsed value. (Ales Kozumplik) +- Repo priorities. (RhBug:1048973) (Ales Kozumplik) +- repo: simplify how things are propagated to repo.hawkey_repo. (Ales Kozumplik) +- refactor: concentrate Repo.hawkey_repo construction in Repo.__init__(). (Ales Kozumplik) +- bash-completion: Update command and option lists, sort in same order as --help (Ville Skyttä) +- bash-completion: Use grep -E instead of deprecated egrep (Ville Skyttä) +- output: fixed identation of info command output (Jan Silhan) +- i18n: calculates right width of asian utf-8 strings (RhBug:1116544) (Jan Silhan) +- transifex update + renamed po files to Fedora conventions (Jan Silhan) +- remove: CLI: --randomwait (Ales Kozumplik) +- cli: fix: --installroot has to be used with --releasever (RhBug:1117293) (Ales Kozumplik) +- Base.reset(goal=True) also resets the group persistor (RhBug:1116839) (Ales Kozumplik) +- tests: fix failing DistroSync.test_distro_sync(). (Ales Kozumplik) +- logging: RPM transaction markers are too loud. (Ales Kozumplik) +- logging: silence drpm a bit. (Ales Kozumplik) +- logging: put timing functionality into one place. (Ales Kozumplik) +- repolist: fix traceback with disabled repos. (RhBug:1116845) (Ales Kozumplik) +- refactor: cleanups in repolist. (Ales Kozumplik) +- lint: remove some unused imports. (Ales Kozumplik) +- cli: break out the repolsit command into a separate module. (Ales Kozumplik) +- does not crash with non-ascii user name (RhBug:1108908) (Jan Silhan) +- doc: document 'pluginpath' configuration option. (RhBug:1117102) (Ales Kozumplik) +- Spelling fixes (Ville Skyttä) +- cli: Fix software name in --version help (Ville Skyttä) +- doc: ip_resolve documented at two places. remove one. (Ales Kozumplik) + +* Thu Jul 3 2014 Aleš Kozumplík - 0.5.3-1 +- packaging: bump hawkey dep to 0.4.17. (Ales Kozumplik) +- api: remove Base.select_group(). (Ales Kozumplik) +- tests: cleanup our base test case classes a bit. (Ales Kozumplik) +- Add DNF itself among the protected packages. (Ales Kozumplik) +- api: plugins: add the resolved() hook. (Ales Kozumplik) +- api: expose Transaction introspecting in the API. (RhBug:1067156) (Ales Kozumplik) +- api: add basic documentation for dnf.package.Package. (Ales Kozumplik) +- tests: cosmetic: conf.protected_packages is ignored, drop it in FakeConf. (Ales Kozumplik) +- cli: simplify exception handling more. (Ales Kozumplik) +- Fixed a minor typo in user_faq - 'intall' should be 'install' (Martin Preisler) +- fixed encoding of parsed config line (RhBug:1110800) (Jan Silhan) +- syntax: replaced tab with spaces (Jan Silhan) +- doc: acknowledge the existence of plugins on the man page (RhBug:1112669) (Ales Kozumplik) +- improve the 'got root?' message of why a transaction couldn't start. (RhBug:1111569) (Ales Kozumplik) +- traceback in Base.do_transaction. to_utf8() is gone since 06fb280. (Ales Kozumplik) +- fix traceback from broken string formatting in _retrievePublicKey(). (RhBug:1111997) (Ales Kozumplik) +- doc: replace Yum with DNF in command_ref.rst (Viktor Ashirov) +- Fix a missing s in the title (mscherer) +- api: add dnf.rpm.detect_releasever() (Ales Kozumplik) +- Detect distroverpkg from 'system-release(release)' (RhBug:1047049) (Ales Kozumplik) +- bulid: add dnf/conf to cmake. (Ales Kozumplik) +- lint: clean up most lint messages in dnf.yum.config (Ales Kozumplik) +- remove: couple of dead-code methods in dnf.yum.config. (Ales Kozumplik) +- api: document client's responsibility to preset the substitutions. (RhBug:1104757) (Ales Kozumplik) +- move: rpmUtils -> rpm. (Ales Kozumplik) +- refactor: move yumvar out into its proper module dnf.conf.substitutions. (Ales Kozumplik) +- refactor: turn dnf.conf into a package. (Ales Kozumplik) +- doc: api_base.rst pointing to nonexistent method. (Ales Kozumplik) +- remove: some logging from Transaction.populate_rpm_ts(). (Ales Kozumplik) +- Update cli_vs_yum.rst (James Pearson) +- api: doc: queries relation specifiers, with an example. (RhBug:1105009) (Ales Kozumplik) +- doc: phrasing in ip_resolve documentation. (Ales Kozumplik) +- cli: refactored transferring cmdline options to conf (Jan Silhan) +- cli: added -4/-6 option for using ipv4/ipv6 connection (RhBug:1093420) (Jan Silhan) +- cosmetic: empty set inicialization (Jan Silhan) +- repo: improve the RepoError message to include URL. (Ales Kozumplik) +- remove: dnf.yum.config.writeRawRepoFile(). (Ales Kozumplik) +- remove: bunch of (now) blank config options. (Ales Kozumplik) +- removed unique function (Jan Silhan) +- tests: mock.assert_has_calls() enforces its iterable arguments in py3.4. (Ales Kozumplik) +- logging: improve how repolist logs the total number of packages. (Ales Kozumplik) +- logging: Base.close() should not log to the terminal. (Ales Kozumplik) + +* Wed May 28 2014 Aleš Kozumplík - 0.5.2-1 +- doc: packaging: add license block to each .rst. (Ales Kozumplik) +- cosmetic: replaced yum with dnf in comment (Jan Silhan) +- takes non-ascii cmd line input (RhBug:1092777) (Jan Silhan) +- replaced 'unicode' conversion functions with 'ucd' (RhBug:1095861) (Jan Silhan) +- using write_to_file py2/py3 compatibility write function (Jan Silhan) +- encoding: all encode methods are using utf-8 coding instead of default ascii (Jan Silhan) +- fixed rpmbuild warning of missing file (Jan Silhan) +- transifex update (Jan Silhan) +- fixed typos in comments (Jan Silhan) +- Drop --debugrepodata and susetags generation with it. (Ales Kozumplik) +- doc: document --debugsolver. (Ales Kozumplik) +- fix: 'dnf repo-pkgs' failures (RhBug:1092006) (Radek Holy) +- lint: make dnf_pylint take '-s' that suppresses line/column numbers. (Ales Kozumplik) +- doc: cli_vs_yum: we do not promote installs to the obsoleting package. (RhBug:1096506) (Ales Kozumplik) +- dealing with installonlies, we always need RPMPROB_FILTER_OLDPACKAGE (RhBug:1095580) (Ales Kozumplik) +- transifex update (Jan Silhan) +- arch: recognize noarch as noarch's basearch. (RhBug:1094594) (Ales Kozumplik) +- pylint: clean up dnf.repo. (Ales Kozumplik) +- sslverify: documentation and bumped librepo require. (Ales Kozumplik) +- repos: support sslverify setting. (RhBug:1076045) (Ales Kozumplik) +- search: exact matches should propagate higher. (RhBug:1093888) (Ales Kozumplik) +- refactor: concentrate specific search functionality in commands.search. (Ales Kozumplik) +- refactor: SearchCommand in its own file. (Ales Kozumplik) +- pylint: fix around one hundred pylint issues in dnf.base. (Ales Kozumplik) +- pylint: add simple pylint script (Ales Kozumplik) +- autoerase: write out the debugdata used to calculate redundant packages. (Ales Kozumplik) +- cosmetic: fix pylint comment in test_group.py. (Ales Kozumplik) +- refactor: err_mini_usage() is public. (Ales Kozumplik) +- refactor: fix several pylint errors in dnf.cli.commands.group. (Ales Kozumplik) +- fix: 'dnf remove' is deprecated so autoremove should be autoerase. (Ales Kozumplik) +- doc: command_ref: remove the deprecated aliases from the initial list. (Ales Kozumplik) +- Add autoremove command. (RhBug:963345) (Ales Kozumplik) +- refactor: Base.push_userinstalled() is public. (Ales Kozumplik) +- Remove sudo from dnf-completion.bash RhBug:1073457 (Elad Alfassa) +- exclude switch takes as a parameter (Jan Silhan) +- using nevra glob query during list command (RhBug:1083679) (Jan Silhan) +- removed rpm.RPMPROB_FILTER_REPLACEOLDFILES filter flag (Jan Silhan) +- test: changed tests according to new distro-sync behavior (Jan Silhan) +- packaging: cosmetic: copyright years in bin/dnf. (Ales Kozumplik) +- bin/dnf: run the python interpreter with -OO. (Ales Kozumplik) + +* Fri May 2 2014 Aleš Kozumplík - 0.5.1-1 +- drpm: output stats (RhBug:1065882) (Ales Kozumplik) +- refactor: architectures. (Ales Kozumplik) +- cli: be lot less verbose about dep processing. (Ales Kozumplik) +- groups: do not error out if group install/remove produces no RPM transaction. (Ales Kozumplik) +- fix: do not traceback on comps remove operations if proper pkg reasons can not be found. (Ales Kozumplik) +- fix: tracebacks in 'group remove ...' (Ales Kozumplik) +- groups: move all the logic of persistor saving from main.py to Base. (Ales Kozumplik) +- groups: auto-saving the groups persistor. (RhBug:1089864) (Ales Kozumplik) +- transifex update (Jan Silhan) +- remove: profiling code from cli.main. (Ales Kozumplik) +- remove: removal of dead code (Miroslav Suchý) +- doc: changes to rhbug.py to work on readthedocs.org. (Ales Kozumplik) +- doc: build the documentation without any dependencies (on DNF or anything else). (Ales Kozumplik) +- doc: make clear where one should expect bin/dnf (Miroslav Suchý) +- abrt: disable abrt for 'dnf makecache timer' run from systemd.service. (RhBug:1081753) (Ales Kozumplik) +- remove: stray itertools import from group.py. (Ales Kozumplik) + +* Wed Apr 23 2014 Aleš Kozumplík - 0.5.0-1 +- doc: fix formatting in api_cli.rst. (Ales Kozumplik) +- doc: document operation of 'group upgrade'. (Ales Kozumplik) +- comps: ensure only packages of 'group' reason get deleted on 'group erase'. (Ales Kozumplik) +- comps: store 'group' reason when installing a group-membering package. (Ales Kozumplik) +- Override Goal.get_reason(). (Ales Kozumplik) +- Add dnf.goal.Goal deriving from hawkey.Goal. (Ales Kozumplik) +- fix: encoding of yumdb directory names in py3. (Ales Kozumplik) +- tests: clean up the functions that load seeded comps a bit. (Ales Kozumplik) +- remove: cli._*aybeYouMeant(). (Ales Kozumplik) +- simplify groups/envs API methods in Base a lot. (Ales Kozumplik) +- tests: add test for Base._translate_comps_pkg_types() (Ales Kozumplik) +- refactor: move the group listing etc. methods() away from Base into GroupCommand. (Ales Kozumplik) +- api: add group.upgrade opration to Base and CLI (RhBug:1029022) (Ales Kozumplik) +- remove: OriginalGroupPersistor. (Ales Kozumplik) +- groups: store format version of the groups db. (Ales Kozumplik) +- groups: saving the persistent data. (Ales Kozumplik) +- refactor: extract out the transactioning part of _main(). (Ales Kozumplik) +- groups: Integrate the redone components with Base. (Ales Kozumplik) +- Add comps Solver. (Ales Kozumplik) +- groups: redo the GroupPersistor class. (Ales Kozumplik) +- doc: faq: why we don't check for root. (RhBug:1088166) (Ales Kozumplik) +- cosmetic: reordered import statements (Jan Silhan) +- added --refresh option (RhBug:1064226) (Jan Silhan) +- added forgotten import (Jan Silhan) +- fixed import errors after yum/i18n.py removal (Jan Silhan) +- removed to_utf8 from yum/i18n.py (Jan Silhan) +- removed to_str from yum/i18n.py (Jan Silhan) +- removed utf8_text_fill from yum/i18n.py (Jan Silhan) +- removed utf8_width from yum/i18n.py (Jan Silhan) +- removed utf8_width_fill from yum/i18n.py (Jan Silhan) +- removed to_unicode from yum/i18n.py (Jan Silhan) +- make all strings unicode_literals implicitly (Jan Silhan) +- moved _, P_ to dnf/i18n.py (Jan Silhan) +- removed utf8_valid from yum/i18n.py (Jan Silhan) +- removed str_eq from yum/i18n.py (Jan Silhan) +- removed exception2msg from yum/i18n.py (Jan Silhan) +- removed dummy_wrapper from yum/i18n.py (Jan Silhan) +- cosmetics: leave around the good things from 660c3e5 (documentation, UT). (Ales Kozumplik) +- Revert "fix: provides are not recognized for erase command. (RhBug:1087063)" (Ales Kozumplik) +- fix: provides are not recognized for erase command. (RhBug:1087063) (Ales Kozumplik) +- test: fix UsageTest test, so it work without dnf is installed on the system PEP8 cleanup (Tim Lauridsen) +- cleanup: getSummary() and getUsage() can be dropped entirely now. (Ales Kozumplik) +- test: use Command.usage & Command.summary API in unittest (Tim Lauridsen) +- show plugin commands in separate block api: add new public Command.usage & Command.summary API cleanup: make Commands (Tim Lauridsen) +- tests: move libcomps test to a separate test file. (Ales Kozumplik) +- refactor: put DistoSyncCommand into its own file (Tim Lauridsen) +- refactor: commands.group: _split_extcmd is a static method. (Ales Kozumplik) +- GroupsCommand: make the way comps are searched more robust. (RhBug:1051869) (Ales Kozumplik) +- tests: move GroupCommand tests to a more proper place. (Ales Kozumplik) +- fix leak: Base.__del__ causes GC-uncollectable circles. (Ales Kozumplik) +- gruops: 'list' and similar commands should run without root. (RhBug:1080331) (Ales Kozumplik) +- refactor: conf is given to Output on instantiation. (Ales Kozumplik) +- remove: Command.done_command_once and Command.hidden. (Ales Kozumplik) +- [doc] improve documentation of '--best' (RhBug:1084553) (Ales Kozumplik) +- api: Command.base and Command.cli are API attributes. (Ales Kozumplik) +- demands: similarly to 78661a4, commands should set the exit success_exit_status directly. (Ales Kozumplik) +- demands: commands requiring resolving dymamically need to set the demand now. (Ales Kozumplik) +- doc: typo in group doc. (RhBug:1084139) (Ales Kozumplik) +- api: Base.resolve() takes allow_erasing. (RhBug:1073859) (Ales Kozumplik) +- refactor: OptionParser._checkAbsInstallRoot is static. (Ales Kozumplik) +- option_parser: remove base dependency. (Ales Kozumplik) +- move: dnf.cli.cli.OptionParser -> dnf.cli.option_parser.OptionParser. (Ales Kozumplik) +- doc: 'clean packages' incorrectly mentions we do not delete cached packages. (RhBug:1083767) (Ales Kozumplik) +- fix: TypeError in dnf history info (RHBug: #1082230) (Tim Lauridsen) +- Start new version: 0.5.0. (Ales Kozumplik) +- remove: instance attrs of Base, namely cacheonly. (Ales Kozumplik) +- tests: remove: support.MockCli. (Ales Kozumplik) +- tests: fix locale independence. (Radek Holy) +- cleanups in cli.OptionParser. (Ales Kozumplik) +- fix: PendingDeprecationWarning from RPM in gpgKeyCheck(). (Ales Kozumplik) +- api: add Cli.demands.root_user (RhBug:1062889) (Ales Kozumplik) +- api: add Cli.demands and Command.config() to the API (RhBug:1062884) (Ales Kozumplik) +- Integrate DemandSheet into CLI. (Ales Kozumplik) +- Command.configure() takes the command arguments like run(). (Ales Kozumplik) +- Add dnf.cli.demand.DemandSheet. (Ales Kozumplik) +- remove: dead code for deplist, version and check-rpmdb commands. (Ales Kozumplik) +- sync with transifex (Jan Silhan) +- removed _enc method that did nothing without specspo (Jan Silhan) +- fixed local reinstall error (Jan Silhan) +- Fix Term.MODE setting under Python 3 in case of incapable tty stdout. (Radek Holy) +- tests: move Term tests to better file. (Radek Holy) +- refactor: move ReinstallCommand in its own module. (Ales Kozumplik) +- rename: yumbase (case insensitive) -> base. (Ales Kozumplik) +- fixed py3 error thrown by search command (Jan Silhan) +- fixed wrong named variable (Jan Silhan) +- fixed local downgrade error (Jan Silhan) +- doc: fix Package references that are ambiguous now. (Ales Kozumplik) +- fix: resource leak in yum.misc.checksum() under py3. (Ales Kozumplik) +- fix: leak: couple of files objects left open. (Ales Kozumplik) +- fix PendingDepreaction warning from rpm in _getsysver(). (Ales Kozumplik) +- repo: Repo.cachedir is not a list. (Ales Kozumplik) +- api: add Base.package_install et al. and Base.add_remote_rpm(). (RhBug:1079519) (Ales Kozumplik) +- tests: fix tests broken under foreign locale after 32818b2. (Ales Kozumplik) +- refactor: move install, downgrade and upgrade commands into separate modules. (Ales Kozumplik) +- tests: refactor: make Term tests more isolated. (Radek Holy) +- tests: fix terminfo capability independence. (Radek Holy) +- api: explain that Base is a context manager with a close(). (Ales Kozumplik) +- cosmetic: move stuff around in comps. (Ales Kozumplik) +- api: groups: add comps.Package, add group.package_iter(). (RhBug:1079932) (Ales Kozumplik) +- fixed installation of conflicted packages (RhBug:1061780) (Jan Silhan) +- removed never executed code based on _ts_saved_file variable (Jan Silhan) +- added logrotate script and ownership of log files to dnf (RhBug:1064211) (Jan Silhan) +- fixed: highlight characters broken under py3 (RhBug:1076884) (Jan Silhan) +- remove: base.deselectGroup(). it is not used. (Ales Kozumplik) +- tests: fix broken InstallMultilib.test_install_src_fails(). (Ales Kozumplik) +- groups: support manipulation with environments (RhBug:1063666) (Ales Kozumplik) +- add dnf.util.partition(). (Ales Kozumplik) +- refactor: RepoPersistor: use the global logger instead of an instance variable. (Ales Kozumplik) +- groups: besides installed groups also store persistently the environments. (Ales Kozumplik) +- rename: persistor.Groups -> ClonableDict. (Ales Kozumplik) +- doc: cli_vs_yum: typography in bandwidth limiting section. (Ales Kozumplik) +- doc: cli_vs_yum: we do not partially allow operations that install .srpm. (RhBug:1080489) (Ales Kozumplik) +- refactor: imports order in cli/commands/__init__.py. (Ales Kozumplik) +- refactor: groups: make all commands use _patterns2groups(). (Ales Kozumplik) +- kernel: remove kernel-source from const.INSTALLONLYPKGS. (Ales Kozumplik) +- build: 0.4.19-1 (Ales Kozumplik) +- New version: 0.4.19 (Ales Kozumplik) +- downloads: bump number of downloaded files on a skip. (RhBug:1079621) (Ales Kozumplik) +- packaging: add dnf.cli.commands to the installation. (Ales Kozumplik) +- refactor: put GroupCommand into its separate module. (Ales Kozumplik) +- rename: make cli.commands a subpackage. (Ales Kozumplik) +- AUTHORS: added Albert. (Ales Kozumplik) +- test: fixed CacheTest.test_noroot() when running as root (Albert Uchytil) +- AUTHORS: added Tim. (Ales Kozumplik) +- fixes TypeError: '_DownloadErrors' object is not iterable (RhBug:1078832) (Tim Lauridsen) +- fixed not including .mo files (Jan Silhan) +- comps: _by_pattern() no longer does the comma splitting. (Ales Kozumplik) + +* Mon Mar 24 2014 Aleš Kozumplík - 0.4.19-1 +- downloads: bump number of downloaded files on a skip. (RhBug:1079621) (Ales Kozumplik) +- packaging: add dnf.cli.commands to the installation. (Ales Kozumplik) +- refactor: put GroupCommand into its separate module. (Ales Kozumplik) +- rename: make cli.commands a subpackage. (Ales Kozumplik) +- AUTHORS: added Albert. (Ales Kozumplik) +- test: fixed CacheTest.test_noroot() when running as root (Albert Uchytil) +- AUTHORS: added Tim. (Ales Kozumplik) +- fixes TypeError: '_DownloadErrors' object is not iterable (RhBug:1078832) (Tim Lauridsen) +- fixed not including .mo files (Jan Silhan) +- comps: _by_pattern() no longer does the comma splitting. (Ales Kozumplik) +- including .mo files correctly (Jan Silhan) +- tests: fix locale independence. (Radek Holy) +- remove: unused trashy methods in dnf.yum.misc. (Ales Kozumplik) +- persistor: do not save Groups if it didn't change (RhBug:1077173) (Ales Kozumplik) +- tests: simplify the traceback logging. (Ales Kozumplik) +- main: log IO errors etc. thrown even during Base.__exit__. (Ales Kozumplik) +- logging: do not log IOError tracebacks in verbose mode. (Ales Kozumplik) +- refactor: move out main._main()'s inner error handlers. (Ales Kozumplik) +- added gettext as a build dependency for translation files (Jan Silhan) +- translation: updated .pot file and fetched fresh .po files from transifex (Jan Silhan) +- removed redundant word from persistor translation (Jan Silhan) +- translation: show relative path in generated pot file (Jan Silhan) +- refactor: replaced type comparisons with isinstance (Jan Silhan) +- translation: added mo files generation and including them in rpm package (Jan Silhan) +- removed unused imports in base.py (Jan Silhan) +- doc: typo in Base.group_install(). (Ales Kozumplik) + +* Mon Mar 17 2014 Aleš Kozumplík - 0.4.18-1 +- api: drop items deprecated since 0.4.9 or earlier. (Ales Kozumplik) +- api: deprecate Base.select_group() (Ales Kozumplik) +- doc: document the group marking operations. (Ales Kozumplik) +- api: add Base.group_install() with exclude capability. (Ales Kozumplik) +- groups: recognize 'mark install' instead of 'mark-install'. (Ales Kozumplik) +- Allow installing optional packages from a group. (RhBug:1067136) (Ales Kozumplik) +- groups: add installing groups the object marking style. (Ales Kozumplik) +- groups: add Base.group_remove(). (Ales Kozumplik) +- groups: add support for marking/unmarking groups. (Ales Kozumplik) +- groups: add dnf.persistor.GroupPersistor(), to store the installed groups. (Ales Kozumplik) +- logging: log plugin import tracebacks on the subdebug level. (Ales Kozumplik) +- rename: dnf.persistor.Persistor -> RepoPersistor. (Ales Kozumplik) +- doc: update README and FAQ with the unabbreviated name. (Ales Kozumplik) +- groups: fix grouplist crashes with new libcomps. (Ales Kozumplik) +- Do not terminate for unreadable repository config. (RhBug:1071212) (Ales Kozumplik) +- cli: get rid of ridiculous slashes and the file:// scheme on config read fails. (Ales Kozumplik) +- repo: log more than nothing about a remote repo MD download. (Ales Kozumplik) +- drpm: fallback to .rpm download on drpm rebuild error. (RhBug:1071501) (Ales Kozumplik) +- remove: Base.download_packages()' inner function mediasort(). (Ales Kozumplik) +- tests: tidy up the imports, in particular import mock from support. (Ales Kozumplik) +- changed documentation of distro-sync command (Jan Silhan) +- added distro-sync explicit packages support (RhBug:963710) (Jan Silhan) +- renamed testcase to distro_sync_all (Jan Silhan) +- Minor spelling (Arjun Temurnikar) +- i18n: translate repo sync error message. (Ales Kozumplik) +- add support for ppc64le (Dennis Gilmore) +- there is no arch called arm64 it is aarch64 (Dennis Gilmore) + +* Wed Mar 5 2014 Aleš Kozumplík - 0.4.17-1 +- doc: in the faq, warn users who might install rawhide packages on stable. (RhBug:1071677) (Ales Kozumplik) +- cli: better format the download errors report. (Ales Kozumplik) +- drpm: properly report applydeltarpm errors. (RhBug:1071501) (Ales Kozumplik) +- fixed Japanese translatated message (RhBug:1071455) (Jan Silhan) +- generated and synchronized translations with transifex (Jan Silhan) +- added transifex support to cmake (gettext-export, gettext-update) (Jan Silhan) +- api: expose RepoDict.get_matching() and RepoDict.all() (RhBug:1071323) (Ales Kozumplik) +- api: add Repo.set_progress_bar() to the API. (Ales Kozumplik) +- tests: test_cli_progress uses StringIO to check the output. (Ales Kozumplik) +- downloads: fix counting past 100% on mirror failures (RhBug:1070598) (Ales Kozumplik) +- repo: log callback calls to librepo. (Ales Kozumplik) +- Add repository-packages remove-or-reinstall command. (Radek Holy) +- Support negative filtering by new repository name in Base.reinstall. (Radek Holy) +- Support removal N/A packages in Base.reinstall. (Radek Holy) +- Add repository-packages remove command. (Radek Holy) +- refactor: Reduce amount of code in repository-packages subcommands. (Radek Holy) +- Support filtering by repository name in Base.remove. (Radek Holy) +- remove: BaseCli.erasePkgs (Radek Holy) +- Add repository-packages reinstall command. (Radek Holy) +- exceptions: improve empty key handling in DownloadError.__str__(). (Ales Kozumplik) +- downloads: fix fatal error message return value from download_payloads() (RhBug:1071518) (Ales Kozumplik) +- fixes problem with TypeError in Base.read_comps() in python3 (RhBug:1070710) (Tim Lauridsen) +- fix read_comps: not throwing exceptions when repo has no repodata (RhBug:1059704) (Jan Silhan) +- not decompressing groups when --cacheonly option is set (RhBug:1058224) (Jan Silhan) +- added forgotten import (Jan Silhan) +- Add repository-packages move-to command. (Radek Holy) +- Add repository-packages reinstall-old command. (Radek Holy) +- Support filtering by repository name in Base.reinstall. (Radek Holy) +- tests: test effects instead of mock calls. (Radek Holy) +- Wrap some recently added long lines. (Radek Holy) +- remove: BaseCli.reinstallPkgs (Radek Holy) +- repos: repos can never expire. (RhBug:1069538) (Ales Kozumplik) +- build: rebuild with 9d95442 (updated summaries_cache). (Ales Kozumplik) +- doc: update summaries_cache. (Ales Kozumplik) + +* Wed Feb 26 2014 Aleš Kozumplík - 0.4.16-1 +- fix: ensure MDPayload always has a valid progress attribute. (RhBug:1069996) (Ales Kozumplik) +- refactor: Move repo-pkgs upgrade-to to a standalone class instead of reusing the UpgradeToCommand. (Radek Holy) +- remove: BaseCli.updatePkgs (Radek Holy) +- refactor: Remove the reference to updatePkgs from UpgradeSubCommand. (Radek Holy) +- refactor: Remove the reference to updatePkgs from UpgradeCommand. (Radek Holy) +- refactor: Move repo-pkgs upgrade to a standalone class instead of reusing the UpgradeCommand. (Radek Holy) +- remove: BaseCli.installPkgs (Radek Holy) +- refactor: Remove the reference to installPkgs from InstallSubCommand. (Radek Holy) +- refactor: Remove the reference to installPkgs from InstallCommand. (Radek Holy) +- refactor: Move repo-pkgs install to a standalone class instead of reusing the InstallCommand. (Radek Holy) +- Revert "Support filtering by repository name in install_groupie." (Radek Holy) +- Revert "Support filtering by repository name in Base.select_group." (Radek Holy) +- Drop group filtering by repository name from installPkgs. (Radek Holy) +- Drop "repo-pkgs install @Group" support. (Radek Holy) +- refactor: Move CheckUpdateCommand.check_updates to BaseCli. (Radek Holy) +- refactor: Move repo-pkgs check-update to a standalone class instead of reusing the CheckUpdateCommand. (Radek Holy) +- refactor: Move repo-pkgs list to a standalone class instead of reusing the ListCommand. (Radek Holy) +- tests: Add tests of repo-pkgs info against the documentation. (Radek Holy) +- Fix "repo-pkgs info installed" behavior with respect to the documentation. (Radek Holy) +- refactor: Move MockBase methods to BaseStubMixin. (Radek Holy) +- refactor: Move repo-pkgs info to a standalone class instead of reusing the InfoCommand. (Radek Holy) +- refactor: Move InfoCommand._print_packages to BaseCli.output_packages. (Radek Holy) diff --git a/sources b/sources new file mode 100644 index 0000000..5623a52 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (dnf-4.7.0.tar.gz) = 40bb6371986314ac1e6ef3eb2896a43cab560da850b3ecb37c9cf84143ff8ec6c6f1ee94f1d2bddd31d5399d5672f22828c678c766107d9ab3fd18e2f07232fa