diff --git a/SOURCES/0012-Update-translations-RhBug-2017271.patch b/SOURCES/0012-Update-translations-RhBug-2017271.patch index 2d3f6e7..eff2480 100644 --- a/SOURCES/0012-Update-translations-RhBug-2017271.patch +++ b/SOURCES/0012-Update-translations-RhBug-2017271.patch @@ -1,7 +1,7 @@ -From ef261df4ed656b9e49bf3029643dfdfae82ea416 Mon Sep 17 00:00:00 2001 +From 7844c40c75b3b753284982398962d399f63ef6f0 Mon Sep 17 00:00:00 2001 From: Marek Blaha Date: Fri, 18 Mar 2022 15:29:49 +0100 -Subject: [PATCH] Update translations (RhBug:2017348) +Subject: [PATCH] Update translations (RhBug:2017271) --- po/dnf-plugins-core.pot | 434 +++++++++++++++------ @@ -7020,5 +7020,5 @@ index 755d9e6..f7ea95b 100644 #~ "\n" #~ "These repositories have been enabled automatically.\n" -- -2.35.1 +2.36.1 diff --git a/SOURCES/0013-repomanage-Use-modules-only-from-repo-they-are-handl.patch b/SOURCES/0013-repomanage-Use-modules-only-from-repo-they-are-handl.patch new file mode 100644 index 0000000..1ddd4df --- /dev/null +++ b/SOURCES/0013-repomanage-Use-modules-only-from-repo-they-are-handl.patch @@ -0,0 +1,48 @@ +From e80f79b2f5e17a20065617c0b614b272dd53c57c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= +Date: Thu, 26 May 2022 07:21:45 +0200 +Subject: [PATCH] repomanage: Use modules only from repo they are handling + (RhBug:2072441) + += changelog = +msg: [repomanage] Modules are used only when they belong to target repo +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2072441 +--- + plugins/repomanage.py | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/plugins/repomanage.py b/plugins/repomanage.py +index 989bd78..67a6fc7 100644 +--- a/plugins/repomanage.py ++++ b/plugins/repomanage.py +@@ -66,7 +66,8 @@ class RepoManageCommand(dnf.cli.Command): + keepnum = int(self.opts.keep) # the number of items to keep + + try: +- repo_conf = self.base.repos.add_new_repo("repomanage_repo", self.base.conf, baseurl=[self.opts.path]) ++ REPOMANAGE_REPOID = "repomanage_repo" ++ repo_conf = self.base.repos.add_new_repo(REPOMANAGE_REPOID, self.base.conf, baseurl=[self.opts.path]) + # Always expire the repo, otherwise repomanage could use cached metadata and give identical results + # for multiple runs even if the actual repo changed in the meantime + repo_conf._repo.expire() +@@ -78,9 +79,13 @@ class RepoManageCommand(dnf.cli.Command): + module_packages = self.base._moduleContainer.getModulePackages() + + for module_package in module_packages: +- all_modular_artifacts.update(module_package.getArtifacts()) +- module_dict.setdefault(module_package.getNameStream(), {}).setdefault( +- module_package.getVersionNum(), []).append(module_package) ++ # Even though we load only REPOMANAGE_REPOID other modules can be loaded from system ++ # failsafe data automatically, we don't want them affecting repomanage results so ONLY ++ # use modules from REPOMANAGE_REPOID. ++ if module_package.getRepoID() == REPOMANAGE_REPOID: ++ all_modular_artifacts.update(module_package.getArtifacts()) ++ module_dict.setdefault(module_package.getNameStream(), {}).setdefault( ++ module_package.getVersionNum(), []).append(module_package) + + except dnf.exceptions.RepoError: + rpm_list = [] +-- +2.36.1 + diff --git a/SOURCES/0014-feat-repomanage-Add-new-option-oldonly.patch b/SOURCES/0014-feat-repomanage-Add-new-option-oldonly.patch new file mode 100644 index 0000000..66288c5 --- /dev/null +++ b/SOURCES/0014-feat-repomanage-Add-new-option-oldonly.patch @@ -0,0 +1,117 @@ +From eb1d6edf55c167d575ce3d16bd6349e382d05600 Mon Sep 17 00:00:00 2001 +From: Masahiro Matsuya +Date: Wed, 13 Apr 2022 18:42:03 +0900 +Subject: [PATCH] feat(repomanage): Add new option --oldonly + += changelog = +msg: repomanage: Add new option --oldonly +type: enhancement +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2034736 +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2058676 +--- + doc/repomanage.rst | 3 +++ + plugins/repomanage.py | 46 ++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 46 insertions(+), 3 deletions(-) + +diff --git a/doc/repomanage.rst b/doc/repomanage.rst +index e3171ef..3c01289 100644 +--- a/doc/repomanage.rst ++++ b/doc/repomanage.rst +@@ -47,6 +47,9 @@ The following options set what packages are displayed. These options are mutuall + ``--old`` + Show older packages (for a package or a stream show all versions except the newest one). + ++``--oldonly`` ++ Show older packages (same as --old, but exclude the newest packages even when it's included in the older stream versions). ++ + ``--new`` + Show newest packages. + +diff --git a/plugins/repomanage.py b/plugins/repomanage.py +index 67a6fc7..d23497a 100644 +--- a/plugins/repomanage.py ++++ b/plugins/repomanage.py +@@ -57,6 +57,12 @@ class RepoManageCommand(dnf.cli.Command): + def run(self): + if self.opts.new and self.opts.old: + raise dnf.exceptions.Error(_("Pass either --old or --new, not both!")) ++ if self.opts.new and self.opts.oldonly: ++ raise dnf.exceptions.Error(_("Pass either --oldonly or --new, not both!")) ++ if self.opts.old and self.opts.oldonly: ++ raise dnf.exceptions.Error(_("Pass either --old or --oldonly, not both!")) ++ if not self.opts.old and not self.opts.oldonly: ++ self.opts.new = True + + verfile = {} + pkgdict = {} +@@ -123,8 +129,7 @@ class RepoManageCommand(dnf.cli.Command): + # modular packages + keepnum_latest_stream_artifacts = set() + +- # if new +- if not self.opts.old: ++ if self.opts.new: + # regular packages + for (n, a) in pkgdict.keys(): + evrlist = pkgdict[(n, a)] +@@ -146,7 +151,6 @@ class RepoManageCommand(dnf.cli.Command): + for stream in streams_by_version[i]: + keepnum_latest_stream_artifacts.update(set(stream.getArtifacts())) + +- + if self.opts.old: + # regular packages + for (n, a) in pkgdict.keys(): +@@ -169,6 +173,40 @@ class RepoManageCommand(dnf.cli.Command): + for stream in streams_by_version[i]: + keepnum_latest_stream_artifacts.update(set(stream.getArtifacts())) + ++ if self.opts.oldonly: ++ # regular packages ++ for (n, a) in pkgdict.keys(): ++ evrlist = pkgdict[(n, a)] ++ ++ oldevrs = evrlist[:-keepnum] ++ ++ for package in oldevrs: ++ nevra = self._package_to_nevra(package) ++ for fpkg in verfile[nevra]: ++ outputpackages.append(fpkg) ++ ++ # modular packages ++ keepnum_newer_stream_artifacts = set() ++ ++ for streams_by_version in module_dict.values(): ++ sorted_stream_versions = sorted(streams_by_version.keys()) ++ ++ new_sorted_stream_versions = sorted_stream_versions[-keepnum:] ++ ++ for i in new_sorted_stream_versions: ++ for stream in streams_by_version[i]: ++ keepnum_newer_stream_artifacts.update(set(stream.getArtifacts())) ++ ++ for streams_by_version in module_dict.values(): ++ sorted_stream_versions = sorted(streams_by_version.keys()) ++ ++ old_sorted_stream_versions = sorted_stream_versions[:-keepnum] ++ ++ for i in old_sorted_stream_versions: ++ for stream in streams_by_version[i]: ++ for artifact in stream.getArtifacts(): ++ if artifact not in keepnum_newer_stream_artifacts: ++ keepnum_latest_stream_artifacts.add(artifact) + + modular_packages = [self._package_to_path(x) for x in query.filter(pkg__eq=query.filter(nevra_strict=keepnum_latest_stream_artifacts)).available()] + outputpackages = outputpackages + modular_packages +@@ -183,6 +221,8 @@ class RepoManageCommand(dnf.cli.Command): + def set_argparser(parser): + parser.add_argument("-o", "--old", action="store_true", + help=_("Print the older packages")) ++ parser.add_argument("-O", "--oldonly", action="store_true", ++ help=_("Print the older packages. Exclude the newest packages.")) + parser.add_argument("-n", "--new", action="store_true", + help=_("Print the newest packages")) + parser.add_argument("-s", "--space", action="store_true", +-- +2.36.1 + diff --git a/SOURCES/0015-Skip-all-non-rpm-tsi-for-transaction_action-plugins-.patch b/SOURCES/0015-Skip-all-non-rpm-tsi-for-transaction_action-plugins-.patch new file mode 100644 index 0000000..0ebf2f6 --- /dev/null +++ b/SOURCES/0015-Skip-all-non-rpm-tsi-for-transaction_action-plugins-.patch @@ -0,0 +1,28 @@ +From b4e0cafe70680db24ab3611e0fd4dd95c8311ccc Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Tue, 26 Apr 2022 11:23:41 +0200 +Subject: [PATCH] Skip all non rpm tsi for transaction_action plugins + (rhbug:2023652) + +It prevent traceback in output when reason change is in transaction +--- + plugins/post-transaction-actions.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/plugins/post-transaction-actions.py b/plugins/post-transaction-actions.py +index 05a7841..1520c26 100644 +--- a/plugins/post-transaction-actions.py ++++ b/plugins/post-transaction-actions.py +@@ -115,6 +115,9 @@ class PostTransactionActions(dnf.Plugin): + in_ts_items.append(ts_item) + elif ts_item.action in dnf.transaction.BACKWARD_ACTIONS: + out_ts_items.append(ts_item) ++ else: ++ # The action is not rpm change. It can be a reason change, therefore we can skip that item ++ continue + all_ts_items.append(ts_item) + + commands_to_run = [] +-- +2.36.1 + diff --git a/SOURCES/0016-Fix-dnf-copr-enable-on-Fedora-35.patch b/SOURCES/0016-Fix-dnf-copr-enable-on-Fedora-35.patch new file mode 100644 index 0000000..3fad14d --- /dev/null +++ b/SOURCES/0016-Fix-dnf-copr-enable-on-Fedora-35.patch @@ -0,0 +1,28 @@ +From 76d7c9e2d2fa052cc6d9fab08af51c603d7e20e5 Mon Sep 17 00:00:00 2001 +From: Pavel Raiskup +Date: Fri, 16 Jul 2021 12:52:03 +0200 +Subject: [PATCH] Fix 'dnf copr enable' on Fedora 35 + +The output from linux_distribution() changed so it returns: +>>> distro.linux_distribution() +('Fedora Linux', '35', '') +--- + plugins/copr.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plugins/copr.py b/plugins/copr.py +index 7fc6c6f..235989b 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -430,7 +430,7 @@ Bugzilla. In case of problems, contact the owner of this repository. + dist = linux_distribution() + # Get distribution architecture + distarch = self.base.conf.substitutions['basearch'] +- if "Fedora" in dist: ++ if any([name in dist for name in ["Fedora", "Fedora Linux"]]): + if "Rawhide" in dist: + chroot = ("fedora-rawhide-" + distarch) + # workaround for enabling repos in Rawhide when VERSION in os-release +-- +2.36.1 + diff --git a/SOURCES/0017-Disable-dnf-playground-command.patch b/SOURCES/0017-Disable-dnf-playground-command.patch new file mode 100644 index 0000000..8016028 --- /dev/null +++ b/SOURCES/0017-Disable-dnf-playground-command.patch @@ -0,0 +1,37 @@ +From 517f0093218e3c23097d7e7e3f3d65930059ef82 Mon Sep 17 00:00:00 2001 +From: Silvie Chlupova +Date: Thu, 12 Aug 2021 16:24:56 +0200 +Subject: [PATCH] Disable dnf playground command + += changelog = +msg: playground command doesn't work +type: bugfix +related: https://bugzilla.redhat.com/show_bug.cgi?id=1955907 +--- + plugins/copr.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/plugins/copr.py b/plugins/copr.py +index 235989b..e1e7018 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -122,6 +122,8 @@ class CoprCommand(dnf.cli.Command): + parser.add_argument('arg', nargs='*') + + def configure(self): ++ if self.cli.command.opts.command != "copr": ++ return + copr_hub = None + copr_plugin_config = ConfigParser() + config_files = [] +@@ -680,6 +682,7 @@ class PlaygroundCommand(CoprCommand): + choices=['enable', 'disable', 'upgrade']) + + def run(self): ++ raise dnf.exceptions.Error("Playground is temporarily unsupported") + subcommand = self.opts.subcommand[0] + chroot = self._guess_chroot() + if subcommand == "enable": +-- +2.36.1 + diff --git a/SOURCES/0018-Fix-baseurl-for-centos-stream-chroot.patch b/SOURCES/0018-Fix-baseurl-for-centos-stream-chroot.patch new file mode 100644 index 0000000..f9f84bc --- /dev/null +++ b/SOURCES/0018-Fix-baseurl-for-centos-stream-chroot.patch @@ -0,0 +1,29 @@ +From 7f9d6809f7cb9ac48f11ef02a4e7c0cadeef9594 Mon Sep 17 00:00:00 2001 +From: Silvie Chlupova +Date: Wed, 22 Sep 2021 22:35:21 +0200 +Subject: [PATCH] Fix baseurl for centos stream chroot + += changelog = +msg: dnf copr enable on CentOS Stream should enable centos stream chroot, not epel 8 +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1994154 +--- + plugins/copr.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/plugins/copr.py b/plugins/copr.py +index e1e7018..c216408 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -457,6 +457,8 @@ Bugzilla. In case of problems, contact the owner of this repository. + chroot = ("opensuse-tumbleweed-{}".format(distarch)) + else: + chroot = ("opensuse-leap-{0}-{1}".format(dist[1], distarch)) ++ elif "CentOS Stream" in dist: ++ chroot = ("centos-stream-{0}-{1}".format(dist[1], distarch)) + else: + chroot = ("epel-%s-x86_64" % dist[1].split(".", 1)[0]) + return chroot +-- +2.36.1 + diff --git a/SOURCES/0019-Silence-a-deprecation-warning-in-plugins-copr.py.patch b/SOURCES/0019-Silence-a-deprecation-warning-in-plugins-copr.py.patch new file mode 100644 index 0000000..09efd6c --- /dev/null +++ b/SOURCES/0019-Silence-a-deprecation-warning-in-plugins-copr.py.patch @@ -0,0 +1,42 @@ +From a07db6dcd669eecb27b7ddbf1b85cd842bdcc35b Mon Sep 17 00:00:00 2001 +From: Otto Urpelainen +Date: Wed, 6 Oct 2021 22:08:54 +0300 +Subject: [PATCH] Silence a deprecation warning in plugins/copr.py + +In version 1.6.0, the 'distro' package deprecated linux_distribution(). +This causes a deprecation warning to printed to stdout +every time the user calls the copr plugin. + +In order to avoid the printout +and to protect against possible removal in the future, +the function is reimplemented +using still supported functions from 'distro'. + += changelog = +msg: [copr] Avoid using deprecated function distro.linux_distribution() +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2011550 +--- + plugins/copr.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/plugins/copr.py b/plugins/copr.py +index c216408..9f597dd 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -38,7 +38,11 @@ import rpm + # If that fails, attempt to import the deprecated implementation + # from the platform module. + try: +- from distro import linux_distribution, os_release_attr ++ from distro import name, version, codename, os_release_attr ++ ++ # Re-implement distro.linux_distribution() to avoid a deprecation warning ++ def linux_distribution(): ++ return (name(), version(), codename()) + except ImportError: + def os_release_attr(_): + return "" +-- +2.36.1 + diff --git a/SOURCES/0020-Shorter-verification-that-the-project-exists.patch b/SOURCES/0020-Shorter-verification-that-the-project-exists.patch new file mode 100644 index 0000000..37ca545 --- /dev/null +++ b/SOURCES/0020-Shorter-verification-that-the-project-exists.patch @@ -0,0 +1,49 @@ +From bf230d570763acc6ccd4f4b3951f4b8325a8e4b8 Mon Sep 17 00:00:00 2001 +From: Silvie Chlupova +Date: Fri, 3 Sep 2021 15:45:43 +0200 +Subject: [PATCH] Shorter verification that the project exists + +--- + plugins/copr.py | 16 ++++++---------- + 1 file changed, 6 insertions(+), 10 deletions(-) + +diff --git a/plugins/copr.py b/plugins/copr.py +index 9f597dd..1539c0d 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -70,8 +70,10 @@ NO = set([_('no'), _('n'), '']) + + if PY3: + from configparser import ConfigParser, NoOptionError, NoSectionError ++ from urllib.request import urlopen, HTTPError + else: + from ConfigParser import ConfigParser, NoOptionError, NoSectionError ++ from urllib2 import urlopen, HTTPError + + @dnf.plugin.register_command + class CoprCommand(dnf.cli.Command): +@@ -478,17 +480,11 @@ Bugzilla. In case of problems, contact the owner of this repository. + if os.path.exists(repo_filename): + os.remove(repo_filename) + if '404' in str(e): +- if PY3: +- import urllib.request +- try: +- res = urllib.request.urlopen(self.copr_url + "/coprs/" + project_name) +- status_code = res.getcode() +- except urllib.error.HTTPError as e: +- status_code = e.getcode() +- else: +- import urllib +- res = urllib.urlopen(self.copr_url + "/coprs/" + project_name) ++ try: ++ res = urlopen(self.copr_url + "/coprs/" + project_name) + status_code = res.getcode() ++ except HTTPError as e: ++ status_code = e.getcode() + if str(status_code) != '404': + raise dnf.exceptions.Error(_("This repository does not have" + " any builds yet so you cannot enable it now.")) +-- +2.36.1 + diff --git a/SOURCES/0021-Better-error-message-for-dnf-copr-enable.patch b/SOURCES/0021-Better-error-message-for-dnf-copr-enable.patch new file mode 100644 index 0000000..43368d0 --- /dev/null +++ b/SOURCES/0021-Better-error-message-for-dnf-copr-enable.patch @@ -0,0 +1,114 @@ +From 1d097d0e4ecfef78aec5d760278b44d5f3192cdc Mon Sep 17 00:00:00 2001 +From: Silvie Chlupova +Date: Mon, 2 Aug 2021 15:04:17 +0200 +Subject: [PATCH] Better error message for dnf copr enable + += changelog = +msg: show better error message if the command dnf copr enable fails +type: enhancement +--- + plugins/copr.py | 63 +++++++++++++++++++++++++++++++------------------ + 1 file changed, 40 insertions(+), 23 deletions(-) + +diff --git a/plugins/copr.py b/plugins/copr.py +index 1539c0d..721c010 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -27,6 +27,8 @@ import re + import shutil + import stat + import sys ++import base64 ++import json + + from dnfpluginscore import _, logger + import dnf +@@ -70,10 +72,10 @@ NO = set([_('no'), _('n'), '']) + + if PY3: + from configparser import ConfigParser, NoOptionError, NoSectionError +- from urllib.request import urlopen, HTTPError ++ from urllib.request import urlopen, HTTPError, URLError + else: + from ConfigParser import ConfigParser, NoOptionError, NoSectionError +- from urllib2 import urlopen, HTTPError ++ from urllib2 import urlopen, HTTPError, URLError + + @dnf.plugin.register_command + class CoprCommand(dnf.cli.Command): +@@ -475,28 +477,40 @@ Bugzilla. In case of problems, contact the owner of this repository. + api_path = "/coprs/{0}/repo/{1}/dnf.repo?arch={2}".format(project_name, short_chroot, arch) + + try: +- f = self.base.urlopen(self.copr_url + api_path, mode='w+') +- except IOError as e: ++ response = urlopen(self.copr_url + api_path) + if os.path.exists(repo_filename): + os.remove(repo_filename) +- if '404' in str(e): +- try: +- res = urlopen(self.copr_url + "/coprs/" + project_name) +- status_code = res.getcode() +- except HTTPError as e: +- status_code = e.getcode() +- if str(status_code) != '404': +- raise dnf.exceptions.Error(_("This repository does not have" +- " any builds yet so you cannot enable it now.")) +- else: +- raise dnf.exceptions.Error(_("Such repository does not exist.")) +- raise +- +- for line in f: +- if re.match(r"\[copr:", line): +- repo_filename = os.path.join(self.base.conf.get_reposdir, +- "_" + line[1:-2] + ".repo") +- break ++ except HTTPError as e: ++ if e.code != 404: ++ error_msg = _("Request to {0} failed: {1} - {2}").format(self.copr_url + api_path, e.code, str(e)) ++ raise dnf.exceptions.Error(error_msg) ++ error_msg = _("It wasn't possible to enable this project.\n") ++ error_data = e.headers.get("Copr-Error-Data") ++ if error_data: ++ error_data_decoded = base64.b64decode(error_data).decode('utf-8') ++ error_data_decoded = json.loads(error_data_decoded) ++ error_msg += _("Repository '{0}' does not exist in project '{1}'.").format( ++ '-'.join(self.chroot_parts), project_name) ++ if error_data_decoded.get("available chroots"): ++ error_msg += _("\nAvailable repositories: ") + ', '.join( ++ "'{}'".format(x) for x in error_data_decoded["available chroots"]) ++ error_msg += _("\n\nIf you want to enable a non-default repository, use the following command:\n" ++ " 'dnf copr enable {0} '\n" ++ "But note that the installed repo file will likely need a manual " ++ "modification.").format(project_name) ++ raise dnf.exceptions.Error(error_msg) ++ else: ++ error_msg += _("Project {0} does not exist.").format(project_name) ++ raise dnf.exceptions.Error(error_msg) ++ except URLError as e: ++ error_msg = _("Failed to connect to {0}: {1}").format(self.copr_url + api_path, e.reason.strerror) ++ raise dnf.exceptions.Error(error_msg) ++ ++ # Try to read the first line, and detect the repo_filename from that (override the repo_filename value). ++ first_line = response.readline() ++ line = first_line.decode("utf-8") ++ if re.match(r"\[copr:", line): ++ repo_filename = os.path.join(self.base.conf.get_reposdir, "_" + line[1:-2] + ".repo") + + # if using default hub, remove possible old repofile + if self.copr_url == self.default_url: +@@ -507,7 +521,10 @@ Bugzilla. In case of problems, contact the owner of this repository. + if os.path.exists(old_repo_filename): + os.remove(old_repo_filename) + +- shutil.copy2(f.name, repo_filename) ++ with open(repo_filename, 'wb') as f: ++ f.write(first_line) ++ for line in response.readlines(): ++ f.write(line) + os.chmod(repo_filename, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH) + + def _runtime_deps_warning(self, copr_username, copr_projectname): +-- +2.36.1 + diff --git a/SOURCES/0022-copr-allow-specifying-protocol-as-part-of-hub.patch b/SOURCES/0022-copr-allow-specifying-protocol-as-part-of-hub.patch new file mode 100644 index 0000000..802fe2d --- /dev/null +++ b/SOURCES/0022-copr-allow-specifying-protocol-as-part-of-hub.patch @@ -0,0 +1,33 @@ +From b2d019658ebb40606e1a9efcb2233a8e38834410 Mon Sep 17 00:00:00 2001 +From: Alexander Sosedkin +Date: Thu, 7 Oct 2021 19:08:47 +0200 +Subject: [PATCH] copr: allow specifying protocol as part of --hub + +This way it doesn't try to connect to +https://http//url if --hub started with http://. +--- + plugins/copr.py | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/plugins/copr.py b/plugins/copr.py +index 721c010..297210b 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -198,8 +198,12 @@ class CoprCommand(dnf.cli.Command): + self.copr_hostname += ":" + port + + if not self.copr_url: +- self.copr_hostname = copr_hub +- self.copr_url = self.default_protocol + "://" + copr_hub ++ if '://' not in copr_hub: ++ self.copr_hostname = copr_hub ++ self.copr_url = self.default_protocol + "://" + copr_hub ++ else: ++ self.copr_hostname = copr_hub.split('://', 1)[1] ++ self.copr_url = copr_hub + + def _read_config_item(self, config, hub, section, default): + try: +-- +2.36.1 + diff --git a/SOURCES/0023-copr-Guess-EPEL-chroots-for-CentOS-Stream-RhBug-2058.patch b/SOURCES/0023-copr-Guess-EPEL-chroots-for-CentOS-Stream-RhBug-2058.patch new file mode 100644 index 0000000..55d370c --- /dev/null +++ b/SOURCES/0023-copr-Guess-EPEL-chroots-for-CentOS-Stream-RhBug-2058.patch @@ -0,0 +1,37 @@ +From 4b0001d0f13598369ec2e6a800af519e8c3a334c Mon Sep 17 00:00:00 2001 +From: Carl George +Date: Mon, 27 Jun 2022 23:12:05 -0500 +Subject: [PATCH] copr: Guess EPEL chroots for CentOS Stream (RhBug:2058471) + +Packages built in epel-9 chroots are almost always compatible with +CentOS Stream 9. Not having the copr plugin guess this chroot is +causing user friction. Users are creating epel-9 chroots expecting them +to work for both CentOS Stream 9 and RHEL 9. When they get reports +about `dnf copr enable` not working, they try to add a centos-stream-9 +chroot, only to discover the dependencies they need from EPEL are not +available. + +Instead of making the majority of CentOS Stream users include an +explicit chroot argument, let's reserve that workaround only for the +people that don't want their CentOS Stream systems picking the EPEL +chroot. +--- + plugins/copr.py | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/plugins/copr.py b/plugins/copr.py +index 297210b..16946b7 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -469,8 +469,6 @@ Bugzilla. In case of problems, contact the owner of this repository. + chroot = ("opensuse-tumbleweed-{}".format(distarch)) + else: + chroot = ("opensuse-leap-{0}-{1}".format(dist[1], distarch)) +- elif "CentOS Stream" in dist: +- chroot = ("centos-stream-{0}-{1}".format(dist[1], distarch)) + else: + chroot = ("epel-%s-x86_64" % dist[1].split(".", 1)[0]) + return chroot +-- +2.36.1 + diff --git a/SOURCES/0024-Update-translations-RHEL-8.7.patch b/SOURCES/0024-Update-translations-RHEL-8.7.patch new file mode 100644 index 0000000..0e0ce33 --- /dev/null +++ b/SOURCES/0024-Update-translations-RHEL-8.7.patch @@ -0,0 +1,2637 @@ +From 147460b9e9cc33e03c77c03aa77c9eab15c535b4 Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Wed, 14 Sep 2022 13:20:38 +0200 +Subject: [PATCH] Update translations RHEL 8.7 + +--- + po/dnf-plugins-core.pot | 163 ++++++++++++------- + po/fr.po | 186 ++++++++++++++-------- + po/ja.po | 219 ++++++++++++++++---------- + po/ko.po | 341 +++++++++++++++++++++++----------------- + po/zh_CN.po | 194 ++++++++++++++--------- + 5 files changed, 687 insertions(+), 416 deletions(-) + +diff --git a/po/dnf-plugins-core.pot b/po/dnf-plugins-core.pot +index 3ec9a50..735a54d 100644 +--- a/po/dnf-plugins-core.pot ++++ b/po/dnf-plugins-core.pot +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-02-28 11:53+0100\n" ++"POT-Creation-Date: 2022-08-30 15:38+0200\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -201,27 +201,27 @@ msgstr[1] "" + msgid "Could not save repo to repofile %s: %s" + msgstr "" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "y" + msgstr "" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "yes" + msgstr "" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "n" + msgstr "" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "no" + msgstr "" + +-#: plugins/copr.py:84 ++#: plugins/copr.py:92 + msgid "Interact with Copr repositories." + msgstr "" + +-#: plugins/copr.py:86 ++#: plugins/copr.py:94 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -242,63 +242,63 @@ msgid "" + " " + msgstr "" + +-#: plugins/copr.py:112 ++#: plugins/copr.py:120 + msgid "List all installed Copr repositories (default)" + msgstr "" + +-#: plugins/copr.py:114 ++#: plugins/copr.py:122 + msgid "List enabled Copr repositories" + msgstr "" + +-#: plugins/copr.py:116 ++#: plugins/copr.py:124 + msgid "List disabled Copr repositories" + msgstr "" + +-#: plugins/copr.py:118 ++#: plugins/copr.py:126 + msgid "List available Copr repositories by user NAME" + msgstr "" + +-#: plugins/copr.py:120 ++#: plugins/copr.py:128 + msgid "Specify an instance of Copr to work with" + msgstr "" + +-#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 ++#: plugins/copr.py:164 plugins/copr.py:236 plugins/copr.py:263 + msgid "Error: " + msgstr "" + +-#: plugins/copr.py:155 ++#: plugins/copr.py:165 + msgid "" + "specify Copr hub either with `--hub` or using `copr_hub/copr_username/" + "copr_projectname` format" + msgstr "" + +-#: plugins/copr.py:158 ++#: plugins/copr.py:168 + msgid "multiple hubs specified" + msgstr "" + +-#: plugins/copr.py:223 plugins/copr.py:227 ++#: plugins/copr.py:237 plugins/copr.py:241 + msgid "exactly two additional parameters to copr command are required" + msgstr "" + +-#: plugins/copr.py:232 ++#: plugins/copr.py:246 + msgid "Too many arguments." + msgstr "" + +-#: plugins/copr.py:235 ++#: plugins/copr.py:249 + msgid "" + "Bad format of optional chroot. The format is distribution-version-" + "architecture." + msgstr "" + +-#: plugins/copr.py:250 ++#: plugins/copr.py:264 + msgid "use format `copr_username/copr_projectname` to reference copr project" + msgstr "" + +-#: plugins/copr.py:252 ++#: plugins/copr.py:266 + msgid "bad copr project format" + msgstr "" + +-#: plugins/copr.py:266 ++#: plugins/copr.py:280 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -314,71 +314,102 @@ msgid "" + "Bugzilla. In case of problems, contact the owner of this repository.\n" + msgstr "" + +-#: plugins/copr.py:283 ++#: plugins/copr.py:297 + msgid "Repository successfully enabled." + msgstr "" + +-#: plugins/copr.py:288 ++#: plugins/copr.py:302 + msgid "Repository successfully disabled." + msgstr "" + +-#: plugins/copr.py:292 ++#: plugins/copr.py:306 + msgid "Repository successfully removed." + msgstr "" + +-#: plugins/copr.py:296 plugins/copr.py:697 ++#: plugins/copr.py:310 plugins/copr.py:721 + msgid "Unknown subcommand {}." + msgstr "" + +-#: plugins/copr.py:353 ++#: plugins/copr.py:367 + msgid "" + "* These coprs have repo file with an old format that contains no information " + "about Copr hub - the default one was assumed. Re-enable the project to fix " + "this." + msgstr "" + +-#: plugins/copr.py:366 ++#: plugins/copr.py:380 + msgid "Can't parse repositories for username '{}'." + msgstr "" + +-#: plugins/copr.py:369 ++#: plugins/copr.py:383 + msgid "List of {} coprs" + msgstr "" + +-#: plugins/copr.py:374 ++#: plugins/copr.py:388 + msgid "No description given" + msgstr "" + +-#: plugins/copr.py:386 ++#: plugins/copr.py:400 + msgid "Can't parse search for '{}'." + msgstr "" + +-#: plugins/copr.py:389 ++#: plugins/copr.py:403 + msgid "Matched: {}" + msgstr "" + +-#: plugins/copr.py:394 ++#: plugins/copr.py:408 + msgid "No description given." + msgstr "" + +-#: plugins/copr.py:416 ++#: plugins/copr.py:430 + msgid "Safe and good answer. Exiting." + msgstr "" + +-#: plugins/copr.py:423 ++#: plugins/copr.py:437 + msgid "This command has to be run under the root user." + msgstr "" + +-#: plugins/copr.py:485 ++#: plugins/copr.py:487 ++#, python-brace-format ++msgid "Request to {0} failed: {1} - {2}" ++msgstr "" ++ ++#: plugins/copr.py:489 ++msgid "It wasn't possible to enable this project.\n" ++msgstr "" ++ ++#: plugins/copr.py:494 ++#, python-brace-format ++msgid "Repository '{0}' does not exist in project '{1}'." ++msgstr "" ++ ++#: plugins/copr.py:497 + msgid "" +-"This repository does not have any builds yet so you cannot enable it now." ++"\n" ++"Available repositories: " + msgstr "" + +-#: plugins/copr.py:488 +-msgid "Such repository does not exist." ++#: plugins/copr.py:499 ++#, python-brace-format ++msgid "" ++"\n" ++"\n" ++"If you want to enable a non-default repository, use the following command:\n" ++" 'dnf copr enable {0} '\n" ++"But note that the installed repo file will likely need a manual modification." ++msgstr "" ++ ++#: plugins/copr.py:505 ++#, python-brace-format ++msgid "Project {0} does not exist." ++msgstr "" ++ ++#: plugins/copr.py:508 ++#, python-brace-format ++msgid "Failed to connect to {0}: {1}" + msgstr "" + +-#: plugins/copr.py:532 ++#: plugins/copr.py:555 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -395,44 +426,44 @@ msgid "" + "These repositories have been enabled automatically." + msgstr "" + +-#: plugins/copr.py:553 ++#: plugins/copr.py:576 + msgid "Do you want to keep them enabled?" + msgstr "" + +-#: plugins/copr.py:586 ++#: plugins/copr.py:609 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" + msgstr "" + +-#: plugins/copr.py:597 ++#: plugins/copr.py:620 + msgid "Failed to disable copr repo {}/{}" + msgstr "" + +-#: plugins/copr.py:615 plugins/copr.py:652 ++#: plugins/copr.py:638 plugins/copr.py:675 + msgid "Unknown response from server." + msgstr "" + +-#: plugins/copr.py:637 ++#: plugins/copr.py:660 + msgid "Interact with Playground repository." + msgstr "" + +-#: plugins/copr.py:643 ++#: plugins/copr.py:666 + msgid "Enabling a Playground repository." + msgstr "" + +-#: plugins/copr.py:644 ++#: plugins/copr.py:667 + msgid "Do you want to continue?" + msgstr "" + +-#: plugins/copr.py:687 ++#: plugins/copr.py:711 + msgid "Playground repositories successfully enabled." + msgstr "" + +-#: plugins/copr.py:690 ++#: plugins/copr.py:714 + msgid "Playground repositories successfully disabled." + msgstr "" + +-#: plugins/copr.py:694 ++#: plugins/copr.py:718 + msgid "Playground repositories successfully updated." + msgstr "" + +@@ -845,18 +876,18 @@ msgid "Bad Action Line \"%s\": %s" + msgstr "" + + #. unsupported state, skip it +-#: plugins/post-transaction-actions.py:130 ++#: plugins/post-transaction-actions.py:133 + #, python-format + msgid "Bad Transaction State: %s" + msgstr "" + +-#: plugins/post-transaction-actions.py:157 +-#: plugins/post-transaction-actions.py:159 ++#: plugins/post-transaction-actions.py:160 ++#: plugins/post-transaction-actions.py:162 + #, python-format + msgid "post-transaction-actions: %s" + msgstr "" + +-#: plugins/post-transaction-actions.py:161 ++#: plugins/post-transaction-actions.py:164 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" + msgstr "" +@@ -1027,31 +1058,43 @@ msgstr "" + msgid "Pass either --old or --new, not both!" + msgstr "" + +-#: plugins/repomanage.py:89 ++#: plugins/repomanage.py:61 ++msgid "Pass either --oldonly or --new, not both!" ++msgstr "" ++ ++#: plugins/repomanage.py:63 ++msgid "Pass either --old or --oldonly, not both!" ++msgstr "" ++ ++#: plugins/repomanage.py:100 + msgid "No files to process" + msgstr "" + +-#: plugins/repomanage.py:96 ++#: plugins/repomanage.py:107 + msgid "Could not open {}" + msgstr "" + +-#: plugins/repomanage.py:180 ++#: plugins/repomanage.py:223 + msgid "Print the older packages" + msgstr "" + +-#: plugins/repomanage.py:182 ++#: plugins/repomanage.py:225 ++msgid "Print the older packages. Exclude the newest packages." ++msgstr "" ++ ++#: plugins/repomanage.py:227 + msgid "Print the newest packages" + msgstr "" + +-#: plugins/repomanage.py:184 ++#: plugins/repomanage.py:229 + msgid "Space separated output, not newline" + msgstr "" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:231 + msgid "Newest N packages to keep - defaults to 1" + msgstr "" + +-#: plugins/repomanage.py:189 ++#: plugins/repomanage.py:234 + msgid "Path to directory" + msgstr "" + +diff --git a/po/fr.po b/po/fr.po +index f70bfb2..53ed3fb 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -12,11 +12,11 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-02-28 11:53+0100\n" ++"POT-Creation-Date: 2022-08-30 15:38+0200\n" + "PO-Revision-Date: 2022-03-09 12:39+0000\n" + "Last-Translator: Ludek Janda \n" +-"Language-Team: French \n" ++"Language-Team: French \n" + "Language: fr\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" +@@ -219,27 +219,27 @@ msgstr[1] "La configuration des dépôts a échoué" + msgid "Could not save repo to repofile %s: %s" + msgstr "Sauvegarde impossible du dépôt dans le fichier du dépôt %s : %s" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "y" + msgstr "o" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "yes" + msgstr "oui" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "n" + msgstr "n" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "no" + msgstr "non" + +-#: plugins/copr.py:84 ++#: plugins/copr.py:92 + msgid "Interact with Copr repositories." + msgstr "Interagit avec les dépôts Copr." + +-#: plugins/copr.py:86 ++#: plugins/copr.py:94 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -277,31 +277,31 @@ msgstr "" + " copr search tests\n" + " " + +-#: plugins/copr.py:112 ++#: plugins/copr.py:120 + msgid "List all installed Copr repositories (default)" + msgstr "Lister tous les dépôts Copr installés (par défaut)" + +-#: plugins/copr.py:114 ++#: plugins/copr.py:122 + msgid "List enabled Copr repositories" + msgstr "Lister les dépôts Copr activés" + +-#: plugins/copr.py:116 ++#: plugins/copr.py:124 + msgid "List disabled Copr repositories" + msgstr "Lister les dépôts Copr désactivés" + +-#: plugins/copr.py:118 ++#: plugins/copr.py:126 + msgid "List available Copr repositories by user NAME" + msgstr "Lister les dépôts Copr disponibles par NOM d’utilisateur" + +-#: plugins/copr.py:120 ++#: plugins/copr.py:128 + msgid "Specify an instance of Copr to work with" + msgstr "Précisez une instance Copr avec laquelle travailler" + +-#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 ++#: plugins/copr.py:164 plugins/copr.py:236 plugins/copr.py:263 + msgid "Error: " + msgstr "Erreur : " + +-#: plugins/copr.py:155 ++#: plugins/copr.py:165 + msgid "" + "specify Copr hub either with `--hub` or using `copr_hub/copr_username/" + "copr_projectname` format" +@@ -309,19 +309,19 @@ msgstr "" + "précisez un hub Copr soit via `--hub` ou en utilisant le format `hub_copr/" + "utilisateur_copr/projet_copr`" + +-#: plugins/copr.py:158 ++#: plugins/copr.py:168 + msgid "multiple hubs specified" + msgstr "de multiples hubs ont été renseignés" + +-#: plugins/copr.py:223 plugins/copr.py:227 ++#: plugins/copr.py:237 plugins/copr.py:241 + msgid "exactly two additional parameters to copr command are required" + msgstr "la commande copr requiert exactement deux paramètres additionnels" + +-#: plugins/copr.py:232 ++#: plugins/copr.py:246 + msgid "Too many arguments." + msgstr "Trop d'arguments." + +-#: plugins/copr.py:235 ++#: plugins/copr.py:249 + msgid "" + "Bad format of optional chroot. The format is distribution-version-" + "architecture." +@@ -329,17 +329,17 @@ msgstr "" + "Mauvais format du chroot optionnel. Le format est distribution-version-" + "architecture." + +-#: plugins/copr.py:250 ++#: plugins/copr.py:264 + msgid "use format `copr_username/copr_projectname` to reference copr project" + msgstr "" + "utilisez le format `copr_username/copr_projectname` pour faire référence au " + "projet copr" + +-#: plugins/copr.py:252 ++#: plugins/copr.py:266 + msgid "bad copr project format" + msgstr "mauvais format de projet copr" + +-#: plugins/copr.py:266 ++#: plugins/copr.py:280 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -368,23 +368,23 @@ msgstr "" + "de Fedora.\n" + "En cas de problèmes, contactez le propriétaire de ce dépôt.\n" + +-#: plugins/copr.py:283 ++#: plugins/copr.py:297 + msgid "Repository successfully enabled." + msgstr "Activation du dépôt réussie." + +-#: plugins/copr.py:288 ++#: plugins/copr.py:302 + msgid "Repository successfully disabled." + msgstr "Désactivation du dépôt réussie." + +-#: plugins/copr.py:292 ++#: plugins/copr.py:306 + msgid "Repository successfully removed." + msgstr "Suppression du dépôt réussie." + +-#: plugins/copr.py:296 plugins/copr.py:697 ++#: plugins/copr.py:310 plugins/copr.py:721 + msgid "Unknown subcommand {}." + msgstr "Sous-commande inconnue {}." + +-#: plugins/copr.py:353 ++#: plugins/copr.py:367 + msgid "" + "* These coprs have repo file with an old format that contains no information " + "about Copr hub - the default one was assumed. Re-enable the project to fix " +@@ -394,51 +394,85 @@ msgstr "" + "aucune information à propos de Copr hub - celui par défaut a été utilisé. " + "Réactivez le projet pour résoudre le problème." + +-#: plugins/copr.py:366 ++#: plugins/copr.py:380 + msgid "Can't parse repositories for username '{}'." + msgstr "" + "Ne peut analyser les dépôts pour y chercher le nom d’utilisateur « {} »." + +-#: plugins/copr.py:369 ++#: plugins/copr.py:383 + msgid "List of {} coprs" + msgstr "Liste de {} coprs" + +-#: plugins/copr.py:374 ++#: plugins/copr.py:388 + msgid "No description given" + msgstr "Aucune description fournie" + +-#: plugins/copr.py:386 ++#: plugins/copr.py:400 + msgid "Can't parse search for '{}'." + msgstr "Impossible d’analyser la recherche pour « {} »." + +-#: plugins/copr.py:389 ++#: plugins/copr.py:403 + msgid "Matched: {}" + msgstr "Correspondance : {}" + +-#: plugins/copr.py:394 ++#: plugins/copr.py:408 + msgid "No description given." + msgstr "Pas de description fournie." + +-#: plugins/copr.py:416 ++#: plugins/copr.py:430 + msgid "Safe and good answer. Exiting." + msgstr "Réponse sûre et exacte. Fin." + +-#: plugins/copr.py:423 ++#: plugins/copr.py:437 + msgid "This command has to be run under the root user." + msgstr "Cette commande requiert les privilèges du super utilisateur." + +-#: plugins/copr.py:485 ++#: plugins/copr.py:487 ++#, python-brace-format ++msgid "Request to {0} failed: {1} - {2}" ++msgstr "" ++ ++#: plugins/copr.py:489 ++msgid "It wasn't possible to enable this project.\n" ++msgstr "" ++ ++#: plugins/copr.py:494 ++#, fuzzy, python-brace-format ++#| msgid "Such repository does not exist." ++msgid "Repository '{0}' does not exist in project '{1}'." ++msgstr "Ce dépôt n’existe pas." ++ ++#: plugins/copr.py:497 ++#, fuzzy ++#| msgid "List enabled Copr repositories" + msgid "" +-"This repository does not have any builds yet so you cannot enable it now." ++"\n" ++"Available repositories: " ++msgstr "Lister les dépôts Copr activés" ++ ++#: plugins/copr.py:499 ++#, python-brace-format ++msgid "" ++"\n" ++"\n" ++"If you want to enable a non-default repository, use the following command:\n" ++" 'dnf copr enable {0} '\n" ++"But note that the installed repo file will likely need a manual modification." + msgstr "" +-"Ce dépôt ne contient pas encore d’exécutables vous ne pouvez donc pas " +-"l’activer." + +-#: plugins/copr.py:488 +-msgid "Such repository does not exist." ++#: plugins/copr.py:505 ++#, fuzzy, python-brace-format ++#| msgid "Such repository does not exist." ++msgid "Project {0} does not exist." + msgstr "Ce dépôt n’existe pas." + +-#: plugins/copr.py:532 ++#: plugins/copr.py:508 ++#, fuzzy, python-brace-format ++#| msgid "Failed to remove copr repo {0}/{1}/{2}" ++msgid "Failed to connect to {0}: {1}" ++msgstr "Échec de la suppression du dépôt Copr {0}/{1}/{2}" ++ ++#: plugins/copr.py:555 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -467,44 +501,44 @@ msgstr "" + "\n" + "Ces dépôts ont été activés automatiquement." + +-#: plugins/copr.py:553 ++#: plugins/copr.py:576 + msgid "Do you want to keep them enabled?" + msgstr "Souhaitez-vous les maintenir activés ?" + +-#: plugins/copr.py:586 ++#: plugins/copr.py:609 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" + msgstr "Échec de la suppression du dépôt Copr {0}/{1}/{2}" + +-#: plugins/copr.py:597 ++#: plugins/copr.py:620 + msgid "Failed to disable copr repo {}/{}" + msgstr "Échec de la désactivation du dépôt copr {}/{}" + +-#: plugins/copr.py:615 plugins/copr.py:652 ++#: plugins/copr.py:638 plugins/copr.py:675 + msgid "Unknown response from server." + msgstr "Réponse inconnue du serveur." + +-#: plugins/copr.py:637 ++#: plugins/copr.py:660 + msgid "Interact with Playground repository." + msgstr "Interagit avec le dépôt Playground." + +-#: plugins/copr.py:643 ++#: plugins/copr.py:666 + msgid "Enabling a Playground repository." + msgstr "Activation d’un dépôt Playground." + +-#: plugins/copr.py:644 ++#: plugins/copr.py:667 + msgid "Do you want to continue?" + msgstr "Souhaitez-vous continuer ?" + +-#: plugins/copr.py:687 ++#: plugins/copr.py:711 + msgid "Playground repositories successfully enabled." + msgstr "Activation des dépôts Playground réussie." + +-#: plugins/copr.py:690 ++#: plugins/copr.py:714 + msgid "Playground repositories successfully disabled." + msgstr "Désactivation des dépôts Playground réussie." + +-#: plugins/copr.py:694 ++#: plugins/copr.py:718 + msgid "Playground repositories successfully updated." + msgstr "Mise à jour des dépôts Playground réussie." + +@@ -954,18 +988,18 @@ msgid "Bad Action Line \"%s\": %s" + msgstr "Mauvaise ligne d’action « %s » : %s" + + #. unsupported state, skip it +-#: plugins/post-transaction-actions.py:130 ++#: plugins/post-transaction-actions.py:133 + #, python-format + msgid "Bad Transaction State: %s" + msgstr "Mauvais état de transaction : %s" + +-#: plugins/post-transaction-actions.py:157 +-#: plugins/post-transaction-actions.py:159 ++#: plugins/post-transaction-actions.py:160 ++#: plugins/post-transaction-actions.py:162 + #, python-format + msgid "post-transaction-actions: %s" + msgstr "post-transaction-actions : %s" + +-#: plugins/post-transaction-actions.py:161 ++#: plugins/post-transaction-actions.py:164 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" + msgstr "post-transaction-actions : mauvaise commande « %s » : %s" +@@ -1152,31 +1186,49 @@ msgstr "Gère un dossier de paquets rpm" + msgid "Pass either --old or --new, not both!" + msgstr "Passez soit --old, soit --new, mais pas les deux !" + +-#: plugins/repomanage.py:89 ++#: plugins/repomanage.py:61 ++#, fuzzy ++#| msgid "Pass either --old or --new, not both!" ++msgid "Pass either --oldonly or --new, not both!" ++msgstr "Passez soit --old, soit --new, mais pas les deux !" ++ ++#: plugins/repomanage.py:63 ++#, fuzzy ++#| msgid "Pass either --old or --new, not both!" ++msgid "Pass either --old or --oldonly, not both!" ++msgstr "Passez soit --old, soit --new, mais pas les deux !" ++ ++#: plugins/repomanage.py:100 + msgid "No files to process" + msgstr "Aucun fichier à traiter" + +-#: plugins/repomanage.py:96 ++#: plugins/repomanage.py:107 + msgid "Could not open {}" + msgstr "Ouverture de {} impossible" + +-#: plugins/repomanage.py:180 ++#: plugins/repomanage.py:223 + msgid "Print the older packages" + msgstr "Afficher les paquets plus anciens" + +-#: plugins/repomanage.py:182 ++#: plugins/repomanage.py:225 ++#, fuzzy ++#| msgid "Print the newest packages" ++msgid "Print the older packages. Exclude the newest packages." ++msgstr "Afficher les paquets les plus récents" ++ ++#: plugins/repomanage.py:227 + msgid "Print the newest packages" + msgstr "Afficher les paquets les plus récents" + +-#: plugins/repomanage.py:184 ++#: plugins/repomanage.py:229 + msgid "Space separated output, not newline" + msgstr "Sorties séparées par des espaces plutôt que des retours à la ligne" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:231 + msgid "Newest N packages to keep - defaults to 1" + msgstr "N paquets les plus récents à conserver — par défaut 1" + +-#: plugins/repomanage.py:189 ++#: plugins/repomanage.py:234 + msgid "Path to directory" + msgstr "Chemin vers le répertoire" + +@@ -1361,6 +1413,12 @@ msgstr "" + "La sous-commande '{}' est obsolète. Utilisez plutôt la sous-commande " + "'exclude'." + ++#~ msgid "" ++#~ "This repository does not have any builds yet so you cannot enable it now." ++#~ msgstr "" ++#~ "Ce dépôt ne contient pas encore d’exécutables vous ne pouvez donc pas " ++#~ "l’activer." ++ + #~ msgid "" + #~ "\n" + #~ "These repositories have been enabled automatically.\n" +diff --git a/po/ja.po b/po/ja.po +index c5c4691..7f9952d 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -7,8 +7,8 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-02-28 11:53+0100\n" +-"PO-Revision-Date: 2022-03-09 12:39+0000\n" ++"POT-Creation-Date: 2022-08-30 15:38+0200\n" ++"PO-Revision-Date: 2022-09-07 14:19+0000\n" + "Last-Translator: Transtats \n" + "Language-Team: Japanese \n" +@@ -17,7 +17,7 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.11.2\n" ++"X-Generator: Weblate 4.14\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +@@ -209,27 +209,27 @@ msgstr[0] "repo の設定に失敗しました" + msgid "Could not save repo to repofile %s: %s" + msgstr "repofile %s に repo を保存できませんでした: %s" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "y" + msgstr "y" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "yes" + msgstr "はい" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "n" + msgstr "n" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "no" + msgstr "いいえ" + +-#: plugins/copr.py:84 ++#: plugins/copr.py:92 + msgid "Interact with Copr repositories." + msgstr "Copr リポジトリーとの対話。" + +-#: plugins/copr.py:86 ++#: plugins/copr.py:94 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -267,32 +267,32 @@ msgstr "" + " copr search tests\n" + " " + +-#: plugins/copr.py:112 ++#: plugins/copr.py:120 + msgid "List all installed Copr repositories (default)" + msgstr "" + "インストール済みのすべての Copr リポジトリーを一覧表示します (デフォルト)" + +-#: plugins/copr.py:114 ++#: plugins/copr.py:122 + msgid "List enabled Copr repositories" + msgstr "有効化された Copr リポジトリーを一覧表示します" + +-#: plugins/copr.py:116 ++#: plugins/copr.py:124 + msgid "List disabled Copr repositories" + msgstr "無効化された Copr リポジトリーを一覧表示します" + +-#: plugins/copr.py:118 ++#: plugins/copr.py:126 + msgid "List available Copr repositories by user NAME" + msgstr "利用可能な Copr リポジトリーをユーザー NAME ごとに一覧表示します" + +-#: plugins/copr.py:120 ++#: plugins/copr.py:128 + msgid "Specify an instance of Copr to work with" + msgstr "作業する Copr のインスタンスを指定します" + +-#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 ++#: plugins/copr.py:164 plugins/copr.py:236 plugins/copr.py:263 + msgid "Error: " + msgstr "エラー: " + +-#: plugins/copr.py:155 ++#: plugins/copr.py:165 + msgid "" + "specify Copr hub either with `--hub` or using `copr_hub/copr_username/" + "copr_projectname` format" +@@ -300,36 +300,37 @@ msgstr "" + "`--hub` または `copr_hub/copr_username/copr_projectname` フォーマットを使っ" + "て、Copr ハブを指定します" + +-#: plugins/copr.py:158 ++#: plugins/copr.py:168 + msgid "multiple hubs specified" + msgstr "複数のハブが指定されています" + +-#: plugins/copr.py:223 plugins/copr.py:227 ++#: plugins/copr.py:237 plugins/copr.py:241 + msgid "exactly two additional parameters to copr command are required" + msgstr "copr コマンドに厳密に 2 つの追加パラメーターが必要です" + +-#: plugins/copr.py:232 ++#: plugins/copr.py:246 + msgid "Too many arguments." + msgstr "引数が多すぎます。" + +-#: plugins/copr.py:235 ++#: plugins/copr.py:249 + msgid "" + "Bad format of optional chroot. The format is distribution-version-" + "architecture." +-msgstr "オプションの chroot の形式が無効です。正しい形式は distribution-version-" ++msgstr "" ++"オプションの chroot の形式が無効です。正しい形式は distribution-version-" + "architecture です。" + +-#: plugins/copr.py:250 ++#: plugins/copr.py:264 + msgid "use format `copr_username/copr_projectname` to reference copr project" + msgstr "" + "copr プロジェクトを参照するには `copr_username/copr_projectname` 形式を使用し" + "ます" + +-#: plugins/copr.py:252 ++#: plugins/copr.py:266 + msgid "bad copr project format" + msgstr "不正な copr プロジェクト形式" + +-#: plugins/copr.py:266 ++#: plugins/copr.py:280 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -358,23 +359,23 @@ msgstr "" + "Fedora Bugzilla でこれらのパッケージに関するバグ報告をしないでください。\n" + "問題が発生した場合は、このリポジトリーのオーナーに連絡してください。\n" + +-#: plugins/copr.py:283 ++#: plugins/copr.py:297 + msgid "Repository successfully enabled." + msgstr "リポジトリが正常に有効化されました。" + +-#: plugins/copr.py:288 ++#: plugins/copr.py:302 + msgid "Repository successfully disabled." + msgstr "リポジトリが正常に無効化されました。" + +-#: plugins/copr.py:292 ++#: plugins/copr.py:306 + msgid "Repository successfully removed." + msgstr "リポジトリーが正常に削除されました。" + +-#: plugins/copr.py:296 plugins/copr.py:697 ++#: plugins/copr.py:310 plugins/copr.py:721 + msgid "Unknown subcommand {}." + msgstr "不明なサブコマンド {}。" + +-#: plugins/copr.py:353 ++#: plugins/copr.py:367 + msgid "" + "* These coprs have repo file with an old format that contains no information " + "about Copr hub - the default one was assumed. Re-enable the project to fix " +@@ -384,49 +385,87 @@ msgstr "" + "ファイルがあります。デフォルトは仮定です。これを修正するには、プロジェクトを" + "再度有効化してください。" + +-#: plugins/copr.py:366 ++#: plugins/copr.py:380 + msgid "Can't parse repositories for username '{}'." + msgstr "ユーザー名 '{}' のリポジトリーを解析できません。" + +-#: plugins/copr.py:369 ++#: plugins/copr.py:383 + msgid "List of {} coprs" + msgstr "{} coprs の一覧" + +-#: plugins/copr.py:374 ++#: plugins/copr.py:388 + msgid "No description given" + msgstr "説明がありません" + +-#: plugins/copr.py:386 ++#: plugins/copr.py:400 + msgid "Can't parse search for '{}'." + msgstr "'{}' の検索を解析できません。" + +-#: plugins/copr.py:389 ++#: plugins/copr.py:403 + msgid "Matched: {}" + msgstr "一致: {}" + +-#: plugins/copr.py:394 ++#: plugins/copr.py:408 + msgid "No description given." + msgstr "説明が与えられていません。" + +-#: plugins/copr.py:416 ++#: plugins/copr.py:430 + msgid "Safe and good answer. Exiting." + msgstr "安全で優れた回答。終了中。" + +-#: plugins/copr.py:423 ++#: plugins/copr.py:437 + msgid "This command has to be run under the root user." + msgstr "このコマンドは root ユーザーの下で実行する必要があります。" + +-#: plugins/copr.py:485 ++#: plugins/copr.py:487 ++#, python-brace-format ++msgid "Request to {0} failed: {1} - {2}" ++msgstr "{0} へのリクエストに失敗しました: {1} - {2}" ++ ++#: plugins/copr.py:489 ++msgid "It wasn't possible to enable this project.\n" ++msgstr "このプロジェクトを有効にすることができませんでした。\n" ++ ++#: plugins/copr.py:494 ++#, python-brace-format ++msgid "Repository '{0}' does not exist in project '{1}'." ++msgstr "'{0}' リポジトリーはプロジェクト '{1}' に存在しません。" ++ ++#: plugins/copr.py:497 ++msgid "" ++"\n" ++"Available repositories: " ++msgstr "" ++"\n" ++"利用可能なリポジトリー: " ++ ++#: plugins/copr.py:499 ++#, python-brace-format + msgid "" +-"This repository does not have any builds yet so you cannot enable it now." ++"\n" ++"\n" ++"If you want to enable a non-default repository, use the following command:\n" ++" 'dnf copr enable {0} '\n" ++"But note that the installed repo file will likely need a manual modification." + msgstr "" +-"このリポジトリーにはまだビルドがありませんので、今すぐ有効化できません。" ++"\n" ++"\n" ++"デフォルト以外のリポジトリーを有効にする場合は、以下のコマンドを使用します:\n" ++" 'dnf copr enable {0} '\n" ++"ただし、インストールされているリポジトリーファイルを手動で変更する必要がある" ++"可能性があることに注意してください。" + +-#: plugins/copr.py:488 +-msgid "Such repository does not exist." +-msgstr "そのようなリポジトリーは存在しません。" ++#: plugins/copr.py:505 ++#, python-brace-format ++msgid "Project {0} does not exist." ++msgstr "プロジェクト {0} は存在しません。" + +-#: plugins/copr.py:532 ++#: plugins/copr.py:508 ++#, python-brace-format ++msgid "Failed to connect to {0}: {1}" ++msgstr "{0} への接続に失敗しました: {1}" ++ ++#: plugins/copr.py:555 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -444,8 +483,8 @@ msgid "" + msgstr "" + "有効化した Copr リポジトリーの管理者は\n" + "他のリポジトリーに依存するように決めました。\n" +-"そのようなリポジトリーは通常、主な Corp " +-"レジストリー(ランタイム依存関係を提供) から RPM を\n" ++"そのようなリポジトリーは通常、主な Corp レジストリー(ランタイム依存関係を提" ++"供) から RPM を\n" + "正常にインストールするために必要です。\n" + "\n" + "上記の品質とバグ報告についての注意点がここでも適用\n" +@@ -456,44 +495,44 @@ msgstr "" + "\n" + "これらのリポジトリーは自動的に有効になっています。" + +-#: plugins/copr.py:553 ++#: plugins/copr.py:576 + msgid "Do you want to keep them enabled?" + msgstr "有効にしておきますか?" + +-#: plugins/copr.py:586 ++#: plugins/copr.py:609 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" + msgstr "copr repo {0}/{1}/{2} の削除に失敗しました" + +-#: plugins/copr.py:597 ++#: plugins/copr.py:620 + msgid "Failed to disable copr repo {}/{}" + msgstr "copr repo {}/{} の無効化に失敗しました" + +-#: plugins/copr.py:615 plugins/copr.py:652 ++#: plugins/copr.py:638 plugins/copr.py:675 + msgid "Unknown response from server." + msgstr "サーバーからの不明な応答です。" + +-#: plugins/copr.py:637 ++#: plugins/copr.py:660 + msgid "Interact with Playground repository." + msgstr "Playground リポジトリーとの対話。" + +-#: plugins/copr.py:643 ++#: plugins/copr.py:666 + msgid "Enabling a Playground repository." + msgstr "Playgroundのリポジトリーの有効化。" + +-#: plugins/copr.py:644 ++#: plugins/copr.py:667 + msgid "Do you want to continue?" + msgstr "続行しますか?" + +-#: plugins/copr.py:687 ++#: plugins/copr.py:711 + msgid "Playground repositories successfully enabled." + msgstr "Playground リポジトリーが正常に有効化されました。" + +-#: plugins/copr.py:690 ++#: plugins/copr.py:714 + msgid "Playground repositories successfully disabled." + msgstr "Playground リポジトリーが正常に無効化されました。" + +-#: plugins/copr.py:694 ++#: plugins/copr.py:718 + msgid "Playground repositories successfully updated." + msgstr "Playground リポジトリーが正常に更新されました。" + +@@ -822,7 +861,8 @@ msgstr "履歴データを移行中..." + #: plugins/modulesync.py:37 + msgid "" + "Download packages from modules and/or create a repository with modular data" +-msgstr "モジュールからパッケージをダウンロードしたり、モジュラーデータでリポジトリー" ++msgstr "" ++"モジュールからパッケージをダウンロードしたり、モジュラーデータでリポジトリー" + "を作成したりします" + + #: plugins/modulesync.py:44 +@@ -839,8 +879,9 @@ msgstr "ソースパッケージを含むリポジトリーを有効にします + + #: plugins/modulesync.py:49 + msgid "enable repositories with debug-info and debug-source packages" +-msgstr "debug-info パッケージおよび debug-source " +-"パッケージでリポジトリーを有効にします" ++msgstr "" ++"debug-info パッケージおよび debug-source パッケージでリポジトリーを有効にしま" ++"す" + + #: plugins/modulesync.py:53 + msgid "download only packages from newest modules" +@@ -855,8 +896,9 @@ msgstr[0] "引数に一致するものが見つかりませんでした: '{}'" + msgid "" + "Creation of repository failed with return code {}. All downloaded content " + "was kept on the system" +-msgstr "リポジトリーの作成は戻りコード {} " +-"で失敗しました。ダウンロードされたコンテンツはすべてシステムに保持されました" ++msgstr "" ++"リポジトリーの作成は戻りコード {} で失敗しました。ダウンロードされたコンテン" ++"ツはすべてシステムに保持されました" + + #: plugins/modulesync.py:144 + #, python-brace-format +@@ -866,8 +908,9 @@ msgstr "モジュール '{1}' のアーティファクト '{0}' に一致する + #: plugins/modulesync.py:162 + #, python-brace-format + msgid "No match for package name '{0}' in profile {1} from module {2}" +-msgstr "モジュール {2} からのプロファイル {1} のパッケージ名 '{0}' " +-"に一致するものはありません" ++msgstr "" ++"モジュール {2} からのプロファイル {1} のパッケージ名 '{0}' に一致するものはあ" ++"りません" + + #: plugins/modulesync.py:166 + msgid "No mach for argument '{}'" +@@ -884,8 +927,8 @@ msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." + msgstr "" +-"needs-restarting ファイル \"{file}\" に指定されている \"{pkg}\" " +-"というパッケージのインストール済みパッケージが見つかりません。" ++"needs-restarting ファイル \"{file}\" に指定されている \"{pkg}\" というパッ" ++"ケージのインストール済みパッケージが見つかりません。" + + #: plugins/needs_restarting.py:220 + msgid "determine updated binaries that need restarting" +@@ -932,18 +975,18 @@ msgid "Bad Action Line \"%s\": %s" + msgstr "不正なアクション行 \"%s\": %s" + + #. unsupported state, skip it +-#: plugins/post-transaction-actions.py:130 ++#: plugins/post-transaction-actions.py:133 + #, python-format + msgid "Bad Transaction State: %s" + msgstr "不正なトランザクション状態: %s" + +-#: plugins/post-transaction-actions.py:157 +-#: plugins/post-transaction-actions.py:159 ++#: plugins/post-transaction-actions.py:160 ++#: plugins/post-transaction-actions.py:162 + #, python-format + msgid "post-transaction-actions: %s" + msgstr "post-transaction-actions: %s" + +-#: plugins/post-transaction-actions.py:161 ++#: plugins/post-transaction-actions.py:164 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" + msgstr "post-transaction-actions: 不正なコマンド \"%s\": %s" +@@ -1126,33 +1169,45 @@ msgstr "rpm パッケージのディレクトリーを管理します" + + #: plugins/repomanage.py:59 + msgid "Pass either --old or --new, not both!" +-msgstr "--old または --new のいずれかを渡します。両方ではありません。" ++msgstr "--old または --new のいずれかを渡します、両方ではありません!" ++ ++#: plugins/repomanage.py:61 ++msgid "Pass either --oldonly or --new, not both!" ++msgstr "--oldonly または --new のいずれかを渡します、両方ではありません!" + +-#: plugins/repomanage.py:89 ++#: plugins/repomanage.py:63 ++msgid "Pass either --old or --oldonly, not both!" ++msgstr "--old または --oldonly のいずれかを渡します、両方ではありません!" ++ ++#: plugins/repomanage.py:100 + msgid "No files to process" + msgstr "処理するファイルはありません" + +-#: plugins/repomanage.py:96 ++#: plugins/repomanage.py:107 + msgid "Could not open {}" + msgstr "{} を開くことができません" + +-#: plugins/repomanage.py:180 ++#: plugins/repomanage.py:223 + msgid "Print the older packages" + msgstr "古いパッケージを印刷します" + +-#: plugins/repomanage.py:182 ++#: plugins/repomanage.py:225 ++msgid "Print the older packages. Exclude the newest packages." ++msgstr "古いパッケージを出力します。最新のパッケージを除外します。" ++ ++#: plugins/repomanage.py:227 + msgid "Print the newest packages" + msgstr "最新のパッケージを印刷します" + +-#: plugins/repomanage.py:184 ++#: plugins/repomanage.py:229 + msgid "Space separated output, not newline" + msgstr "スペースで区切られた出力で、改行ではありません" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:231 + msgid "Newest N packages to keep - defaults to 1" + msgstr "維持する最新の N パッケージ - デフォルトは 1 に設定されます" + +-#: plugins/repomanage.py:189 ++#: plugins/repomanage.py:234 + msgid "Path to directory" + msgstr "ディレクトリーへのパス" + +@@ -1323,8 +1378,14 @@ msgstr "パッケージ仕様をそのまま使用し、解析を試みないで + + #: plugins/versionlock.py:160 + msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." +-msgstr "サブコマンド '{}' は非推奨になりました。代わりに 'exclude' " +-"サブコマンドを使用してください。" ++msgstr "" ++"サブコマンド '{}' は非推奨になりました。代わりに 'exclude' サブコマンドを使用" ++"してください。" ++ ++#~ msgid "" ++#~ "This repository does not have any builds yet so you cannot enable it now." ++#~ msgstr "" ++#~ "このリポジトリーにはまだビルドがありませんので、今すぐ有効化できません。" + + #~ msgid "" + #~ "\n" +diff --git a/po/ko.po b/po/ko.po +index 307ccc7..e2e3009 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -1,13 +1,14 @@ + # Ludek Janda , 2018. #zanata, 2020. + # simmon , 2021. + # Kim InSoo , 2022. ++# 김인수 , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-02-28 11:53+0100\n" +-"PO-Revision-Date: 2022-03-02 04:16+0000\n" +-"Last-Translator: Kim InSoo \n" ++"POT-Creation-Date: 2022-08-30 15:38+0200\n" ++"PO-Revision-Date: 2022-09-02 02:19+0000\n" ++"Last-Translator: 김인수 \n" + "Language-Team: Korean \n" + "Language: ko\n" +@@ -15,7 +16,7 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.11\n" ++"X-Generator: Weblate 4.14\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +@@ -28,7 +29,7 @@ msgstr "'%s'는 'MACRO EXPR' 형식이 아닙니다" + + #: plugins/builddep.py:90 + msgid "packages with builddeps to install" +-msgstr "설치 할 builddeps가 있는 꾸러미(package)" ++msgstr "설치 할 builddeps가 있는 꾸러미" + + #: plugins/builddep.py:93 + msgid "define a macro for spec file parsing" +@@ -44,7 +45,7 @@ msgstr "명령줄 인수를 지정한 파일로 다룬다" + + #: plugins/builddep.py:100 + msgid "treat commandline arguments as source rpm" +-msgstr "명령줄 인수를 rpm 소스로 다룬다" ++msgstr "원천 rpm으로 명령줄 인수를 다룬다" + + #: plugins/builddep.py:144 + msgid "RPM: {}" +@@ -52,14 +53,14 @@ msgstr "RPM: {}" + + #: plugins/builddep.py:153 + msgid "Some packages could not be found." +-msgstr "몇몇 꾸러미(packages)를 찾을 수 없습니다." ++msgstr "몇몇 꾸러미를 찾을 수 없습니다." + + #. No provides, no files + #. Richdeps can have no matches but it could be correct (solver must decide later) + #: plugins/builddep.py:173 + #, python-format + msgid "No matching package to install: '%s'" +-msgstr "설치: '%s' 꾸러미(package)가 일치하지 않습니다" ++msgstr "설치: '%s' 꾸러미가 일치하지 않습니다" + + #: plugins/builddep.py:191 + #, python-format +@@ -78,16 +79,16 @@ msgstr "여는데 실패하였습니다 '%s', 지정한 파일: %s가 유효하 + #: plugins/builddep.py:230 plugins/repoclosure.py:118 + #, python-format + msgid "no package matched: %s" +-msgstr "일치하는 꾸러미(package) 없음: %s" ++msgstr "일치하는 꾸러미 없음: %s" + + #: plugins/changelog.py:37 + #, python-brace-format + msgid "Not a valid date: \"{0}\"." +-msgstr "유효한 날자가 아닙니다: \"{0}\"." ++msgstr "유효한 날짜가 아닙니다: \"{0}\"." + + #: plugins/changelog.py:43 + msgid "Show changelog data of packages" +-msgstr "꾸러미(packages)의 변화 기록자료를 보여줍니다" ++msgstr "꾸러미의 변화 기록자료를 보여줍니다" + + #: plugins/changelog.py:51 + msgid "" +@@ -99,19 +100,19 @@ msgstr "" + + #: plugins/changelog.py:55 + msgid "show given number of changelog entries per package" +-msgstr "주어진 수의 꾸러미(package) 마다 변화기록 항목을 보여줍니다" ++msgstr "주어진 수의 꾸러미 마다 변화기록 항목을 보여줍니다" + + #: plugins/changelog.py:58 + msgid "" + "show only new changelog entries for packages, that provide an upgrade for " + "some of already installed packages." + msgstr "" +-"몇몇 이미 설치된 꾸러미(package)들의 최신화를 제공하는 꾸러미를 위하여 새로" +-"운 변화기록만을 보여줍니다." ++"몇몇 이미 설치된 꾸러미들의 최신화를 제공하는 꾸러미를 위하여 새로운 변화기록" ++"만을 보여줍니다." + + #: plugins/changelog.py:60 + msgid "PACKAGE" +-msgstr "꾸러미(package)" ++msgstr "꾸러미" + + #: plugins/changelog.py:81 plugins/debuginfo-install.py:90 + #, python-format +@@ -146,7 +147,7 @@ msgstr "{prog} 환경 선택과 저장소 관리" + + #: plugins/config_manager.py:45 + msgid "repo to modify" +-msgstr "수정할 repo" ++msgstr "수정하려는 저장소" + + #: plugins/config_manager.py:48 + msgid "save the current options (useful with --setopt)" +@@ -204,27 +205,27 @@ msgstr[0] "저장소 구성에 실패했습니다" + msgid "Could not save repo to repofile %s: %s" + msgstr "repofile에 repo를 저장할 수 없습니다. %s: %s" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "y" + msgstr "y" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "yes" + msgstr "예" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "n" + msgstr "n" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "no" + msgstr "아니" + +-#: plugins/copr.py:84 ++#: plugins/copr.py:92 + msgid "Interact with Copr repositories." + msgstr "Copr 저장소와 상호 작용하십시오." + +-#: plugins/copr.py:86 ++#: plugins/copr.py:94 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -262,31 +263,31 @@ msgstr "" + " copr search tests\n" + " " + +-#: plugins/copr.py:112 ++#: plugins/copr.py:120 + msgid "List all installed Copr repositories (default)" + msgstr "설치된 모든 Copr 저장소 나열 (기본값)" + +-#: plugins/copr.py:114 ++#: plugins/copr.py:122 + msgid "List enabled Copr repositories" + msgstr "사용 가능한 Copr 저장소 목록" + +-#: plugins/copr.py:116 ++#: plugins/copr.py:124 + msgid "List disabled Copr repositories" + msgstr "비활성화 된 Copr 저장소 목록" + +-#: plugins/copr.py:118 ++#: plugins/copr.py:126 + msgid "List available Copr repositories by user NAME" + msgstr "사용자가 사용할 수있는 Copr 저장소를 나열합니다. NAME" + +-#: plugins/copr.py:120 ++#: plugins/copr.py:128 + msgid "Specify an instance of Copr to work with" + msgstr "일하는 Copr의 예를 지정합니다" + +-#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 ++#: plugins/copr.py:164 plugins/copr.py:236 plugins/copr.py:263 + msgid "Error: " + msgstr "오류: " + +-#: plugins/copr.py:155 ++#: plugins/copr.py:165 + msgid "" + "specify Copr hub either with `--hub` or using `copr_hub/copr_username/" + "copr_projectname` format" +@@ -294,35 +295,35 @@ msgstr "" + "Corp hub를 `--hub` 또는 사용하기 `copr_hub/copr_username/copr_projectname`형" + "식으로 지정합니다" + +-#: plugins/copr.py:158 ++#: plugins/copr.py:168 + msgid "multiple hubs specified" + msgstr "지정된 여러 허브" + +-#: plugins/copr.py:223 plugins/copr.py:227 ++#: plugins/copr.py:237 plugins/copr.py:241 + msgid "exactly two additional parameters to copr command are required" + msgstr "copr 명령에 정확히 두 개의 추가 매개 변수가 필요합니다" + +-#: plugins/copr.py:232 ++#: plugins/copr.py:246 + msgid "Too many arguments." + msgstr "너무 많은 인수." + +-#: plugins/copr.py:235 ++#: plugins/copr.py:249 + msgid "" + "Bad format of optional chroot. The format is distribution-version-" + "architecture." + msgstr "선택적인 chroot의 나쁜 형식. 형식은 배포-버전-구조입니다." + +-#: plugins/copr.py:250 ++#: plugins/copr.py:264 + msgid "use format `copr_username/copr_projectname` to reference copr project" + msgstr "" + "copr 프로젝트를 참조하기 위해`copr_username / copr_projectname` 형식을 사용하" + "십시오" + +-#: plugins/copr.py:252 ++#: plugins/copr.py:266 + msgid "bad copr project format" + msgstr "나쁜 copr 프로젝트 형식" + +-#: plugins/copr.py:266 ++#: plugins/copr.py:280 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -352,23 +353,23 @@ msgstr "" + "페도라 버그질라에 이들 꾸러미에 대한 파일 결점 보고를 제출하지 마세요.\n" + "이들 문제는, 이들 저장소 소유자와 접촉하세요.\n" + +-#: plugins/copr.py:283 ++#: plugins/copr.py:297 + msgid "Repository successfully enabled." + msgstr "저장소가 사용 설정되었습니다." + +-#: plugins/copr.py:288 ++#: plugins/copr.py:302 + msgid "Repository successfully disabled." + msgstr "저장소가 사용 중지되었습니다." + +-#: plugins/copr.py:292 ++#: plugins/copr.py:306 + msgid "Repository successfully removed." + msgstr "저장소가 제거되었습니다." + +-#: plugins/copr.py:296 plugins/copr.py:697 ++#: plugins/copr.py:310 plugins/copr.py:721 + msgid "Unknown subcommand {}." + msgstr "알 수없는 부속 명령 {}." + +-#: plugins/copr.py:353 ++#: plugins/copr.py:367 + msgid "" + "* These coprs have repo file with an old format that contains no information " + "about Copr hub - the default one was assumed. Re-enable the project to fix " +@@ -377,48 +378,88 @@ msgstr "" + "* 이들 coprs은 Copr hub에 대하여 어떤 정보도 포함하지 않는 오래된 형태의 저장" + "소 파일을 갖고 있습니다. 이 문제를 수정하기 위하여 프로젝트를 재활성화하세요." + +-#: plugins/copr.py:366 ++#: plugins/copr.py:380 + msgid "Can't parse repositories for username '{}'." + msgstr "사용자 이름 '{}'에 대한 리포지토리를 구문 분석 할 수 없습니다." + +-#: plugins/copr.py:369 ++#: plugins/copr.py:383 + msgid "List of {} coprs" + msgstr "{} 명의 경찰 목록" + +-#: plugins/copr.py:374 ++#: plugins/copr.py:388 + msgid "No description given" + msgstr "설명이 없습니다" + +-#: plugins/copr.py:386 ++#: plugins/copr.py:400 + msgid "Can't parse search for '{}'." + msgstr "'{}'에 대한 검색을 구문 분석 할 수 없습니다." + +-#: plugins/copr.py:389 ++#: plugins/copr.py:403 + msgid "Matched: {}" + msgstr "일치하는 항목 : {}" + +-#: plugins/copr.py:394 ++#: plugins/copr.py:408 + msgid "No description given." + msgstr "설명이 없습니다." + +-#: plugins/copr.py:416 ++#: plugins/copr.py:430 + msgid "Safe and good answer. Exiting." + msgstr "안전하고 좋은 대답. 나가기." + +-#: plugins/copr.py:423 ++#: plugins/copr.py:437 + msgid "This command has to be run under the root user." + msgstr "이 명령은 루트 사용자로 실행해야합니다." + +-#: plugins/copr.py:485 ++#: plugins/copr.py:487 ++#, python-brace-format ++msgid "Request to {0} failed: {1} - {2}" ++msgstr "{0}에 대한 요청이 실패함: {1} - {2}" ++ ++#: plugins/copr.py:489 ++msgid "It wasn't possible to enable this project.\n" ++msgstr "이와 같은 프로젝트를 활성화 할 수 없습니다.\n" ++ ++#: plugins/copr.py:494 ++#, python-brace-format ++msgid "Repository '{0}' does not exist in project '{1}'." ++msgstr "저장소 '{0}'는 프로젝트 '{1}'에 존재하지 않습니다." ++ ++#: plugins/copr.py:497 + msgid "" +-"This repository does not have any builds yet so you cannot enable it now." +-msgstr "이 저장소에는 빌드가 아직 없으므로 지금 사용할 수 없습니다." ++"\n" ++"Available repositories: " ++msgstr "" ++"\n" ++"사용 가능한 저장소: " ++ ++#: plugins/copr.py:499 ++#, python-brace-format ++msgid "" ++"\n" ++"\n" ++"If you want to enable a non-default repository, use the following command:\n" ++" 'dnf copr enable {0} '\n" ++"But note that the installed repo file will likely need a manual modification." ++msgstr "" ++"\n" ++"\n" ++"만약 기본설정되지 않은 저장소를 활성화 하고자 한다면, 다음 명령을 사용하세요:" ++" \n" ++" 'dnf copr enable {0} ' \n" ++"하지만 설치된 저장소 파일은 수동으로 수정해야 할 필요가 있다는 점을 " ++"참고하세요." + +-#: plugins/copr.py:488 +-msgid "Such repository does not exist." +-msgstr "이러한 저장소는 존재하지 않습니다." ++#: plugins/copr.py:505 ++#, python-brace-format ++msgid "Project {0} does not exist." ++msgstr "프로젝트 {0}가 존재하지 않습니다." ++ ++#: plugins/copr.py:508 ++#, python-brace-format ++msgid "Failed to connect to {0}: {1}" ++msgstr "연결 하는데 실패함 {0}: {1}" + +-#: plugins/copr.py:532 ++#: plugins/copr.py:555 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -447,50 +488,50 @@ msgstr "" + "\n" + "이들 저장소는 자동으로 활성화 됩니다." + +-#: plugins/copr.py:553 ++#: plugins/copr.py:576 + msgid "Do you want to keep them enabled?" + msgstr "계속 사용하길 원하시나요?" + +-#: plugins/copr.py:586 ++#: plugins/copr.py:609 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" + msgstr "copr repo {0}/{1}/{2} 제거를 실패하였습니다" + +-#: plugins/copr.py:597 ++#: plugins/copr.py:620 + msgid "Failed to disable copr repo {}/{}" + msgstr "copr repo {} / {}를 사용 중지를 실패하였습니다" + +-#: plugins/copr.py:615 plugins/copr.py:652 ++#: plugins/copr.py:638 plugins/copr.py:675 + msgid "Unknown response from server." + msgstr "서버에서 알 수없는 응답." + +-#: plugins/copr.py:637 ++#: plugins/copr.py:660 + msgid "Interact with Playground repository." + msgstr "놀이터 저장소와 상호 작용하십시오." + +-#: plugins/copr.py:643 ++#: plugins/copr.py:666 + msgid "Enabling a Playground repository." + msgstr "동작 저장소와 활용하기." + +-#: plugins/copr.py:644 ++#: plugins/copr.py:667 + msgid "Do you want to continue?" + msgstr "계속하기를 원하십니까?" + +-#: plugins/copr.py:687 ++#: plugins/copr.py:711 + msgid "Playground repositories successfully enabled." + msgstr "놀이터 저장소를 사용하도록 설정했습니다." + +-#: plugins/copr.py:690 ++#: plugins/copr.py:714 + msgid "Playground repositories successfully disabled." + msgstr "놀이터 저장소가 사용 중지되었습니다." + +-#: plugins/copr.py:694 ++#: plugins/copr.py:718 + msgid "Playground repositories successfully updated." + msgstr "놀이터 저장소가 성공적으로 업데이트되었습니다." + + #: plugins/debug.py:53 + msgid "dump information about installed rpm packages to file" +-msgstr "설치된 rpm 꾸러미(package)에 대한 정보를 파일에 덤프하십시오" ++msgstr "설치된 rpm 꾸러미에 대한 정보를 파일에 덤프하세요" + + #: plugins/debug.py:67 + msgid "do not attempt to dump the repository contents." +@@ -507,7 +548,7 @@ msgstr "작성된 출력 : %s" + + #: plugins/debug.py:172 + msgid "restore packages recorded in debug-dump file" +-msgstr "디버그 덤프 파일에 기록 된 꾸러미(package) 복원" ++msgstr "디버그 덤프 파일에 기록 된 꾸러미 복원" + + #: plugins/debug.py:185 + msgid "output commands that would be run to stdout." +@@ -544,7 +585,7 @@ msgstr "덤프 파일의 이름" + #: plugins/debug.py:273 + #, python-format + msgid "Package %s is not available" +-msgstr "꾸러미(package) %s 사용 할 수 없습니다" ++msgstr "꾸러미 %s를 사용 할 수 없습니다" + + #: plugins/debug.py:283 + #, python-format +@@ -553,39 +594,32 @@ msgstr "잘못된 dnf 디버그 파일 : %s" + + #: plugins/debuginfo-install.py:56 + msgid "install debuginfo packages" +-msgstr "디버그정보 꾸러미(package) 설치" ++msgstr "디버그정보 꾸러미 설치" + + #: plugins/debuginfo-install.py:180 + #, python-format + msgid "" + "Could not find debuginfo package for the following available packages: %s" + msgstr "" +-"다음 사용가능한 꾸러미(package): %s 를 위하여 디버그정보 꾸러미를 찾을 수 없" +-"습니다" ++"다음 사용가능한 꾸러미를 위하여 디버그정보 꾸러미를 찾을 수 없습니다: %s" + + #: plugins/debuginfo-install.py:185 + #, python-format + msgid "" + "Could not find debugsource package for the following available packages: %s" +-msgstr "" +-"다음 가용한 꾸러미(package): %s 를 위하여 디버그자원 꾸러미(package)를 찾을 " +-"수 없습니다" ++msgstr "다음 가용한 꾸러미: %s 를 위하여 디버그자원 꾸러미를 찾을 수 없습니다" + + #: plugins/debuginfo-install.py:190 + #, python-format + msgid "" + "Could not find debuginfo package for the following installed packages: %s" +-msgstr "" +-"다음 설치된 꾸러미(package): %s 를 위한 디버그정보 꾸러미(package)를 찾을 수 " +-"없습니다" ++msgstr "다음 설치된 꾸러미를 위한 디버그정보 꾸러미를 찾을 수 없습니다: %s" + + #: plugins/debuginfo-install.py:195 + #, python-format + msgid "" + "Could not find debugsource package for the following installed packages: %s" +-msgstr "" +-"다음 설치된 꾸러미(package): %s 를 위하여 디버그자원 꾸러미(package)를 찾을 " +-"수 없습니다" ++msgstr "다음 설치된 꾸러미: %s 를 위하여 디버그자원 꾸러미를 찾을 수 없습니다" + + #: plugins/debuginfo-install.py:199 + msgid "Unable to find a match" +@@ -605,15 +639,15 @@ msgstr "대신 src.rpm을 내려받으세요" + + #: plugins/download.py:55 + msgid "download the -debuginfo package instead" +-msgstr "대신 -debuginfo 꾸러미(package)를 내려받아요" ++msgstr "대신 -debuginfo 꾸러미를 내려받아요" + + #: plugins/download.py:57 + msgid "download the -debugsource package instead" +-msgstr "대신 -debuginfo 꾸러미(package)를 내려받으세요" ++msgstr "대신 -debuginfo 꾸러미를 내려받으세요" + + #: plugins/download.py:60 + msgid "limit the query to packages of given architectures." +-msgstr "요청를 주어진 구조 꾸러미(package)로 제한하십시오." ++msgstr "요청를 제공된 구조의 꾸러미로 제한합니다." + + #: plugins/download.py:62 plugins/modulesync.py:51 + msgid "resolve and download needed dependencies" +@@ -647,17 +681,17 @@ msgstr "엄격한 설정으로 인해 종료됩니다." + + #: plugins/download.py:261 + msgid "Error in resolve of packages:" +-msgstr "꾸러미(package) 해결 오류 :" ++msgstr "꾸러미 해결 오류 :" + + #: plugins/download.py:279 + #, python-format + msgid "No source rpm defined for %s" +-msgstr "소스 rpm이 정의되지 않았습니다. %s" ++msgstr "%s를 위한 원천 rpm이 정의되지 않음" + + #: plugins/download.py:296 plugins/download.py:309 + #, python-format + msgid "No package %s available." +-msgstr "가용한 꾸러미(package) %s가 없습니다." ++msgstr "가용한 꾸러미 %s가 없습니다." + + #: plugins/groups_manager.py:49 + msgid "Invalid group id" +@@ -731,23 +765,23 @@ msgstr "그룹 사용자를 보이지 않게 표시" + + #: plugins/groups_manager.py:123 + msgid "add packages to the mandatory section" +-msgstr "꾸러미(package)를 필 수 부분에 추가합니다" ++msgstr "꾸러미를 필수 부분에 추가합니다" + + #: plugins/groups_manager.py:125 + msgid "add packages to the optional section" +-msgstr "꾸러미(package)를 선택 부분에 추가합니다" ++msgstr "꾸러미를 선택 부분에 추가합니다" + + #: plugins/groups_manager.py:127 + msgid "remove packages from the group instead of adding them" +-msgstr "추가하기 대신에 그룹에서 꾸러미(package)를 제거합니다" ++msgstr "추가하기 대신에 그룹에서 꾸러미를 제거합니다" + + #: plugins/groups_manager.py:129 + msgid "include also direct dependencies for packages" +-msgstr "꾸러미(package)를 위해 직접적인 의존성을 포함한다" ++msgstr "꾸러미를 위해 직접적인 의존성을 포함한다" + + #: plugins/groups_manager.py:132 + msgid "package specification" +-msgstr "꾸러미(package) 사양" ++msgstr "꾸러미 사양" + + #: plugins/groups_manager.py:156 + msgid "Can't edit group without specifying it (use --id or --name)" +@@ -767,7 +801,7 @@ msgstr "일치하는 인수가 없습니다 :{}" + + #: plugins/groups_manager.py:298 + msgid "Can't remove packages from non-existent group" +-msgstr "존재하지 않는 그룹에서 꾸러미(package)를 제거 할 수 없습니다" ++msgstr "존재하지 않는 그룹에서 꾸러미를 제거 할 수 없습니다" + + #: plugins/groups_manager.py:307 + msgid "" +@@ -779,7 +813,7 @@ msgstr "" + + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" +-msgstr "다른 꾸러미(package)에서 필요하지 않은 설치된 꾸러미(packages) 나열" ++msgstr "다른 꾸러미에서 필요하지 않은 설치된 꾸러미 나열" + + #: plugins/local.py:122 + msgid "Unable to create a directory '{}' due to '{}'" +@@ -812,23 +846,24 @@ msgstr "기록 데이터 마이그레이션 중 ..." + #: plugins/modulesync.py:37 + msgid "" + "Download packages from modules and/or create a repository with modular data" +-msgstr "모듈에서 꾸러미를 내려 받기와/또는 모듈식 자료를 갖고 있는 저장소를 생성" ++msgstr "" ++"모듈에서 꾸러미를 내려 받기와/또는 모듈식 자료를 갖고 있는 저장소를 생성" + + #: plugins/modulesync.py:44 + msgid "MODULE" +-msgstr "모듈" ++msgstr "MODULE" + + #: plugins/modulesync.py:45 + msgid "modules to download" +-msgstr "내려받아야 할 모듈" ++msgstr "내려받기 할 모듈" + + #: plugins/modulesync.py:47 + msgid "enable repositories with source packages" +-msgstr "원천 꾸러미와 함께 저장소를 활성화" ++msgstr "원천 꾸러미로 저장소 활성화" + + #: plugins/modulesync.py:49 + msgid "enable repositories with debug-info and debug-source packages" +-msgstr "디버그-정보와 디버그-원천 꾸러미와 함께 저장소 활성화" ++msgstr "debug-info와 debug-source 꾸러미로 저장소 활성화" + + #: plugins/modulesync.py:53 + msgid "download only packages from newest modules" +@@ -837,28 +872,30 @@ msgstr "최신 모듈에서 꾸러미만 내려받기" + #: plugins/modulesync.py:85 + msgid "Unable to find a match for argument: '{}'" + msgid_plural "Unable to find a match for arguments: '{}'" +-msgstr[0] "인수와 일치하는 항목을 찾을 수 없습니다: '{}'" ++msgstr[0] "인수와 일치 항목을 찾을 수 없음: '{}'" + + #: plugins/modulesync.py:107 + msgid "" + "Creation of repository failed with return code {}. All downloaded content " + "was kept on the system" +-msgstr "반환 코드 {}로 인하여 저장소 생성에 실패함. 모두 내려받기된 내용은 " +-"시스템에서 보관됩니다" ++msgstr "" ++"반환 코드 {}로 인하여 저장소 생성에 실패함. 모두 내려받기된 내용은 시스템에" ++"서 보관됩니다" + + #: plugins/modulesync.py:144 + #, python-brace-format + msgid "No match for artifact '{0}' from module '{1}'" +-msgstr "모듈 '{1}'에서 인위 결과물 '{0}'과 일치하는 부분이 없습니다" ++msgstr "모듈 '{1}' 에서 인위 결과물 '{0}'과 일치하는 부분이 없습니다" + + #: plugins/modulesync.py:162 + #, python-brace-format + msgid "No match for package name '{0}' in profile {1} from module {2}" +-msgstr "모듈 {2}에서 프로파일 {1}인 꾸러미 이름 '{0}'과 일치하는 부분이 없습니다" ++msgstr "" ++"모듈 {2}에서 프로파일 {1}인 꾸러미 이름 '{0}'과 일치하는 부분이 없습니다" + + #: plugins/modulesync.py:166 + msgid "No mach for argument '{}'" +-msgstr "인수와 일치하는 항목이 없습니다 '{}'" ++msgstr "인수 '{}'와 일치하는 항목이 없습니다" + + #. TODO(jmracek) Shell we end with an error or with RC 1? + #: plugins/modulesync.py:198 +@@ -870,8 +907,9 @@ msgstr "필요사항 {}를 만족 할 수 없음" + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." +-msgstr "재시작이 필요한 파일 \"{file}\" 에 지정한 꾸러미 이름 \"{pkg}\"을 위하여 " +-"설치된 꾸러미를 찾을 수 없습니다." ++msgstr "" ++"재시작이 필요한 파일 \"{file}\" 에 지정한 꾸러미 이름 \"{pkg}\"을 위하여 설치" ++"된 꾸러미를 찾을 수 없습니다." + + #: plugins/needs_restarting.py:220 + msgid "determine updated binaries that need restarting" +@@ -917,18 +955,18 @@ msgid "Bad Action Line \"%s\": %s" + msgstr "잘못된 동작 선 \"%s\": %s" + + #. unsupported state, skip it +-#: plugins/post-transaction-actions.py:130 ++#: plugins/post-transaction-actions.py:133 + #, python-format + msgid "Bad Transaction State: %s" + msgstr "잘못된 연결 상태: %s" + +-#: plugins/post-transaction-actions.py:157 +-#: plugins/post-transaction-actions.py:159 ++#: plugins/post-transaction-actions.py:160 ++#: plugins/post-transaction-actions.py:162 + #, python-format + msgid "post-transaction-actions: %s" + msgstr "연결 후 동작: %s" + +-#: plugins/post-transaction-actions.py:161 ++#: plugins/post-transaction-actions.py:164 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" + msgstr "연결 후 동작: 잘못된 명령 \"%s\": %s" +@@ -943,7 +981,7 @@ msgstr "재구 축은 해결되지 않은 종속성으로 종료되었습니다. + + #: plugins/repoclosure.py:153 + msgid "check packages of the given archs, can be specified multiple times" +-msgstr "지정된 아치의 꾸러미(package)를 검사하고 여러 번 지정할 수 있습니다" ++msgstr "지정된 아치의 꾸러미를 검사하고 여러 번 지정할 수 있습니다" + + #: plugins/repoclosure.py:156 + msgid "Specify repositories to check" +@@ -951,11 +989,11 @@ msgstr "점검 할 저장소를 지정하세요" + + #: plugins/repoclosure.py:158 + msgid "Check only the newest packages in the repos" +-msgstr "저장소 최신 꾸러미(package)만 확인하세요" ++msgstr "저장소 최신 꾸러미만 확인하세요" + + #: plugins/repoclosure.py:161 + msgid "Check closure for this package only" +-msgstr "이 꾸러미(package)의 폐쇄만 확인하세요" ++msgstr "이 꾸러미의 폐쇄만 확인하세요" + + #: plugins/repodiff.py:45 + msgid "List differences between two sets of repositories" +@@ -985,12 +1023,12 @@ msgstr "크기 변화에 대한 추가 자료를 출력합니다." + msgid "" + "Compare packages also by arch. By default packages are compared just by name." + msgstr "" +-"구조에 의해 꾸러미(package) 또한 비교합니다. 기본적으로 꾸러미(package)는 이" +-"름으로만 비교됩니다." ++"구조에 의해 꾸러미 또한 비교합니다. 기본적으로 꾸러미는 이름으로만 비교됩니" ++"다." + + #: plugins/repodiff.py:72 + msgid "Output a simple one line message for modified packages." +-msgstr "수정된 꾸러미(pacakage)지를 위해 단순히 한 줄 메시지를 출력합니다." ++msgstr "수정된 꾸러미를 위해 단순히 한 줄 메시지를 출력합니다." + + #: plugins/repodiff.py:74 + msgid "" +@@ -1008,11 +1046,11 @@ msgstr "크기 변화: {} bytes" + + #: plugins/repodiff.py:184 + msgid "Added package : {}" +-msgstr "추가된 꾸러미(package) : {}" ++msgstr "추가된 꾸러미 : {}" + + #: plugins/repodiff.py:187 + msgid "Removed package: {}" +-msgstr "제거된 꾸러미(package): {}" ++msgstr "제거된 꾸러미: {}" + + #: plugins/repodiff.py:190 + msgid "Obsoleted by : {}" +@@ -1024,7 +1062,7 @@ msgid "" + "Upgraded packages" + msgstr "" + "\n" +-"향상된 꾸러미(package)" ++"향상된 꾸러미" + + #: plugins/repodiff.py:200 + msgid "" +@@ -1040,7 +1078,7 @@ msgid "" + "Modified packages" + msgstr "" + "\n" +-"변형된 꾸러미(package)" ++"변형된 꾸러미" + + #: plugins/repodiff.py:212 + msgid "" +@@ -1052,35 +1090,35 @@ msgstr "" + + #: plugins/repodiff.py:213 + msgid "Added packages: {}" +-msgstr "추가된 꾸러미(package): {}" ++msgstr "추가된 꾸러미: {}" + + #: plugins/repodiff.py:214 + msgid "Removed packages: {}" +-msgstr "제거된 꾸러미(package): {}" ++msgstr "제거된 꾸러미: {}" + + #: plugins/repodiff.py:216 + msgid "Upgraded packages: {}" +-msgstr "향상된 꾸러미(package): {}" ++msgstr "향상된 꾸러미: {}" + + #: plugins/repodiff.py:217 + msgid "Downgraded packages: {}" +-msgstr "하향설치된 꾸러미: {}" ++msgstr "하향 설치된 꾸러미: {}" + + #: plugins/repodiff.py:219 + msgid "Modified packages: {}" +-msgstr "변형된 꾸러미(package): {}" ++msgstr "변형된 꾸러미: {}" + + #: plugins/repodiff.py:222 + msgid "Size of added packages: {}" +-msgstr "크기가 증가된 꾸러미(package): {}" ++msgstr "크기가 증가된 꾸러미: {}" + + #: plugins/repodiff.py:223 + msgid "Size of removed packages: {}" +-msgstr "크기가 제거된 꾸러미(package): {}" ++msgstr "크기가 제거된 꾸러미: {}" + + #: plugins/repodiff.py:225 + msgid "Size of modified packages: {}" +-msgstr "크기가 변형된 꾸러미(package): {}" ++msgstr "크기가 변형된 꾸러미: {}" + + #: plugins/repodiff.py:228 + msgid "Size of upgraded packages: {}" +@@ -1096,7 +1134,7 @@ msgstr "크기 변경: {}" + + #: plugins/repograph.py:50 + msgid "Output a full package dependency graph in dot format" +-msgstr "도트 형식의 전체 꾸러미(package) 종속성 그래프 출력" ++msgstr "도트 형식의 전체 꾸러미 종속성 그래프 출력" + + #: plugins/repograph.py:110 + #, python-format +@@ -1105,43 +1143,55 @@ msgstr "아무것도 제공하지 않습니다 : '%s'" + + #: plugins/repomanage.py:45 + msgid "Manage a directory of rpm packages" +-msgstr "rpm 꾸러미(package) 디렉토리 관리" ++msgstr "rpm 꾸러미 디렉토리 관리" + + #: plugins/repomanage.py:59 + msgid "Pass either --old or --new, not both!" + msgstr "--old 또는 --new 중 하나를 전달하세요!" + +-#: plugins/repomanage.py:89 ++#: plugins/repomanage.py:61 ++msgid "Pass either --oldonly or --new, not both!" ++msgstr "--oldonly 또는 --new 중 하나를 전달하세요!" ++ ++#: plugins/repomanage.py:63 ++msgid "Pass either --old or --oldonly, not both!" ++msgstr "--oldonly 또는 --new 중 하나를 전달하세요!" ++ ++#: plugins/repomanage.py:100 + msgid "No files to process" + msgstr "처리 할 파일 없음" + +-#: plugins/repomanage.py:96 ++#: plugins/repomanage.py:107 + msgid "Could not open {}" + msgstr "{}을 열 수 없습니다" + +-#: plugins/repomanage.py:180 ++#: plugins/repomanage.py:223 + msgid "Print the older packages" +-msgstr "이전 꾸러미(package) 인쇄" ++msgstr "이전 꾸러미 인쇄" + +-#: plugins/repomanage.py:182 ++#: plugins/repomanage.py:225 ++msgid "Print the older packages. Exclude the newest packages." ++msgstr "오래된 꾸러미를 출력합니다. 최신 꾸러미는 제외합니다." ++ ++#: plugins/repomanage.py:227 + msgid "Print the newest packages" + msgstr "최신 꾸러미(package) 인쇄" + +-#: plugins/repomanage.py:184 ++#: plugins/repomanage.py:229 + msgid "Space separated output, not newline" + msgstr "공백으로 구분 된 출력이 아닌 개행 문자" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:231 + msgid "Newest N packages to keep - defaults to 1" + msgstr "보관할 최신 N 꾸러미(package) - 기본값은 1입니다" + +-#: plugins/repomanage.py:189 ++#: plugins/repomanage.py:234 + msgid "Path to directory" + msgstr "디렉토리 경로" + + #: plugins/reposync.py:55 + msgid "download all packages from remote repo" +-msgstr "원격 저장소에서 모든 꾸러미(package)를 내려받아요" ++msgstr "원격 저장소에서 모든 꾸러미를 내려받아요" + + #: plugins/reposync.py:64 + msgid "download only packages for this ARCH" +@@ -1237,7 +1287,7 @@ msgstr "저장소에 대한 comps.xml %s 저장된" + + #: plugins/show_leaves.py:54 + msgid "New leaves:" +-msgstr "독립 꾸러미(package):" ++msgstr "독립 꾸러미:" + + #: plugins/versionlock.py:33 + #, python-format +@@ -1303,8 +1353,13 @@ msgstr "꾸러미(package) 사양을 그대로 사용하며, 구문 분석을 + + #: plugins/versionlock.py:160 + msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." +-msgstr "하위명령 '{}'는 더 이상 사용하지 않습니다. 대신에 하위명령 'exclude'를 " +-"사용합니다." ++msgstr "" ++"하위명령 '{}'는 더 이상 사용하지 않습니다. 대신에 하위명령 'exclude'를 사용합" ++"니다." ++ ++#~ msgid "" ++#~ "This repository does not have any builds yet so you cannot enable it now." ++#~ msgstr "이 저장소에는 빌드가 아직 없으므로 지금 사용할 수 없습니다." + + #~ msgid "" + #~ "\n" +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 5e5627e..37c1e9d 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -12,8 +12,8 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-02-28 11:53+0100\n" +-"PO-Revision-Date: 2022-03-09 12:39+0000\n" ++"POT-Creation-Date: 2022-08-30 15:38+0200\n" ++"PO-Revision-Date: 2022-09-07 14:19+0000\n" + "Last-Translator: Transtats \n" + "Language-Team: Chinese (Simplified) \n" +@@ -22,7 +22,7 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.11.2\n" ++"X-Generator: Weblate 4.14\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +@@ -208,27 +208,27 @@ msgstr[0] "配置仓库失败" + msgid "Could not save repo to repofile %s: %s" + msgstr "无法保存仓库至仓库文件 %s:%s" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "y" + msgstr "y" + +-#: plugins/copr.py:64 ++#: plugins/copr.py:70 + msgid "yes" + msgstr "是" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "n" + msgstr "n" + +-#: plugins/copr.py:65 ++#: plugins/copr.py:71 + msgid "no" + msgstr "否" + +-#: plugins/copr.py:84 ++#: plugins/copr.py:92 + msgid "Interact with Copr repositories." + msgstr "与 Copr 仓库交互。" + +-#: plugins/copr.py:86 ++#: plugins/copr.py:94 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -266,31 +266,31 @@ msgstr "" + " copr search tests\n" + " " + +-#: plugins/copr.py:112 ++#: plugins/copr.py:120 + msgid "List all installed Copr repositories (default)" + msgstr "列出所有安装的 Copr 仓库(默认)" + +-#: plugins/copr.py:114 ++#: plugins/copr.py:122 + msgid "List enabled Copr repositories" + msgstr "列出启动的 Copr 仓库" + +-#: plugins/copr.py:116 ++#: plugins/copr.py:124 + msgid "List disabled Copr repositories" + msgstr "列出禁用的 Copr 仓库" + +-#: plugins/copr.py:118 ++#: plugins/copr.py:126 + msgid "List available Copr repositories by user NAME" + msgstr "按照用户 NAME 列出可用的 Copr 仓库" + +-#: plugins/copr.py:120 ++#: plugins/copr.py:128 + msgid "Specify an instance of Copr to work with" + msgstr "指定需要使用的 Copr 实例" + +-#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 ++#: plugins/copr.py:164 plugins/copr.py:236 plugins/copr.py:263 + msgid "Error: " + msgstr "错误: " + +-#: plugins/copr.py:155 ++#: plugins/copr.py:165 + msgid "" + "specify Copr hub either with `--hub` or using `copr_hub/copr_username/" + "copr_projectname` format" +@@ -298,33 +298,33 @@ msgstr "" + "使用 `--hub` 或使用 `copr_hub/copr_username/copr_projectname` 格式指定 Copr " + "hub" + +-#: plugins/copr.py:158 ++#: plugins/copr.py:168 + msgid "multiple hubs specified" + msgstr "指定多个 hub" + +-#: plugins/copr.py:223 plugins/copr.py:227 ++#: plugins/copr.py:237 plugins/copr.py:241 + msgid "exactly two additional parameters to copr command are required" + msgstr "Copr 命令要求有且仅有两个额外参数" + +-#: plugins/copr.py:232 ++#: plugins/copr.py:246 + msgid "Too many arguments." + msgstr "参数过多。" + +-#: plugins/copr.py:235 ++#: plugins/copr.py:249 + msgid "" + "Bad format of optional chroot. The format is distribution-version-" + "architecture." + msgstr "可选 chroot 的错误格式。格式为 distribution-version-architecture。" + +-#: plugins/copr.py:250 ++#: plugins/copr.py:264 + msgid "use format `copr_username/copr_projectname` to reference copr project" + msgstr "使用格式 `copr_username/copr_projectname` 来引用 Copr 项目" + +-#: plugins/copr.py:252 ++#: plugins/copr.py:266 + msgid "bad copr project format" + msgstr "错误的 Copr 项目格式" + +-#: plugins/copr.py:266 ++#: plugins/copr.py:280 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -352,23 +352,23 @@ msgstr "" + "请不要在 Fedora Bugzilla 中报告这些软件包中出现的\n" + "问题。当出现问题时,请联系仓库的所有者。\n" + +-#: plugins/copr.py:283 ++#: plugins/copr.py:297 + msgid "Repository successfully enabled." + msgstr "启用软件仓库成功。" + +-#: plugins/copr.py:288 ++#: plugins/copr.py:302 + msgid "Repository successfully disabled." + msgstr "禁用软件仓库成功。" + +-#: plugins/copr.py:292 ++#: plugins/copr.py:306 + msgid "Repository successfully removed." + msgstr "软件仓库已成功删除。" + +-#: plugins/copr.py:296 plugins/copr.py:697 ++#: plugins/copr.py:310 plugins/copr.py:721 + msgid "Unknown subcommand {}." + msgstr "未知的子命令 {}。" + +-#: plugins/copr.py:353 ++#: plugins/copr.py:367 + msgid "" + "* These coprs have repo file with an old format that contains no information " + "about Copr hub - the default one was assumed. Re-enable the project to fix " +@@ -377,48 +377,86 @@ msgstr "" + "* 这些 coprs 有使用旧格式的 repo 文件,它们没有包括 Copr hub 的信息 - 假设使" + "用默认值。重新启用项目来解决这个问题。" + +-#: plugins/copr.py:366 ++#: plugins/copr.py:380 + msgid "Can't parse repositories for username '{}'." + msgstr "无法为用户名 username '{}' 解析仓库。" + +-#: plugins/copr.py:369 ++#: plugins/copr.py:383 + msgid "List of {} coprs" + msgstr "{} Coprs 列表" + +-#: plugins/copr.py:374 ++#: plugins/copr.py:388 + msgid "No description given" + msgstr "没有给出描述" + +-#: plugins/copr.py:386 ++#: plugins/copr.py:400 + msgid "Can't parse search for '{}'." + msgstr "无法解析针对 '{}' 的搜索。" + +-#: plugins/copr.py:389 ++#: plugins/copr.py:403 + msgid "Matched: {}" + msgstr "匹配:{}" + +-#: plugins/copr.py:394 ++#: plugins/copr.py:408 + msgid "No description given." + msgstr "没有给出描述。" + +-#: plugins/copr.py:416 ++#: plugins/copr.py:430 + msgid "Safe and good answer. Exiting." + msgstr "安全及明智的答案。退出。" + +-#: plugins/copr.py:423 ++#: plugins/copr.py:437 + msgid "This command has to be run under the root user." + msgstr "该命令必须以 root 用户运行。" + +-#: plugins/copr.py:485 ++#: plugins/copr.py:487 ++#, python-brace-format ++msgid "Request to {0} failed: {1} - {2}" ++msgstr "请求 {0} 失败:{1} - {2}" ++ ++#: plugins/copr.py:489 ++msgid "It wasn't possible to enable this project.\n" ++msgstr "无法启用此项目。\n" ++ ++#: plugins/copr.py:494 ++#, python-brace-format ++msgid "Repository '{0}' does not exist in project '{1}'." ++msgstr "仓库 '{0}' 在项目 '{1}' 中不存在。" ++ ++#: plugins/copr.py:497 ++msgid "" ++"\n" ++"Available repositories: " ++msgstr "" ++"\n" ++"可用软件仓库: " ++ ++#: plugins/copr.py:499 ++#, python-brace-format + msgid "" +-"This repository does not have any builds yet so you cannot enable it now." +-msgstr "该仓库尚未包含任何构建所以您现在无法启用它。" ++"\n" ++"\n" ++"If you want to enable a non-default repository, use the following command:\n" ++" 'dnf copr enable {0} '\n" ++"But note that the installed repo file will likely need a manual modification." ++msgstr "" ++"\n" ++"\n" ++"如果需要启用一个非默认的仓库,使用以下命令 :\n" ++" 'dnf copr enable {0} '\n" ++"但请注意,安装的 repo 文件将来可能需要手动修改。" ++ ++#: plugins/copr.py:505 ++#, python-brace-format ++msgid "Project {0} does not exist." ++msgstr "项目 {0} 不存在。" + +-#: plugins/copr.py:488 +-msgid "Such repository does not exist." +-msgstr "该软件仓库不存在。" ++#: plugins/copr.py:508 ++#, python-brace-format ++msgid "Failed to connect to {0}: {1}" ++msgstr "连接到 {0} 失败:{1}" + +-#: plugins/copr.py:532 ++#: plugins/copr.py:555 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -447,44 +485,44 @@ msgstr "" + "\n" + "这些仓库已被自动启用。" + +-#: plugins/copr.py:553 ++#: plugins/copr.py:576 + msgid "Do you want to keep them enabled?" + msgstr "您需要保持它们被启用吗?" + +-#: plugins/copr.py:586 ++#: plugins/copr.py:609 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" +-msgstr "删除 copr 仓库 {0}/{1}/{2} 失败" ++msgstr "无法删除 copr 存储库 {0}/{1}/{2}" + +-#: plugins/copr.py:597 ++#: plugins/copr.py:620 + msgid "Failed to disable copr repo {}/{}" +-msgstr "无法禁用 Copr 软件仓库 {}/{}" ++msgstr "无法禁用 Copr 存储库 {}/{}" + +-#: plugins/copr.py:615 plugins/copr.py:652 ++#: plugins/copr.py:638 plugins/copr.py:675 + msgid "Unknown response from server." + msgstr "来自服务器的未知响应。" + +-#: plugins/copr.py:637 ++#: plugins/copr.py:660 + msgid "Interact with Playground repository." + msgstr "与 Playground 仓库交互。" + +-#: plugins/copr.py:643 ++#: plugins/copr.py:666 + msgid "Enabling a Playground repository." + msgstr "启用 Playground 仓库。" + +-#: plugins/copr.py:644 ++#: plugins/copr.py:667 + msgid "Do you want to continue?" + msgstr "您希望继续吗?" + +-#: plugins/copr.py:687 ++#: plugins/copr.py:711 + msgid "Playground repositories successfully enabled." + msgstr "启用 Playground 仓库成功。" + +-#: plugins/copr.py:690 ++#: plugins/copr.py:714 + msgid "Playground repositories successfully disabled." + msgstr "禁用 Playground 仓库成功。" + +-#: plugins/copr.py:694 ++#: plugins/copr.py:718 + msgid "Playground repositories successfully updated." + msgstr "更新 Playground 仓库成功。" + +@@ -737,7 +775,7 @@ msgstr "软件包规格" + + #: plugins/groups_manager.py:156 + msgid "Can't edit group without specifying it (use --id or --name)" +-msgstr "没有指定组(使用 --id 或 --name)就无法编辑组" ++msgstr "没有指定它(使用 --id 或 --name)就不能编辑组" + + #: plugins/groups_manager.py:190 + msgid "Can't load file \"{}\": {}" +@@ -821,7 +859,7 @@ msgstr "只从最新的模块中下载软件包" + #: plugins/modulesync.py:85 + msgid "Unable to find a match for argument: '{}'" + msgid_plural "Unable to find a match for arguments: '{}'" +-msgstr[0] "找不到与参数:'{}'相匹配的项" ++msgstr[0] "找不到与参数匹配的项:'{}'" + + #: plugins/modulesync.py:107 + msgid "" +@@ -853,7 +891,7 @@ msgstr "无法满足要求 {}" + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." +-msgstr "未找到在需要重新启动文件 \"{file}\" 中指定的软件包名为 \"{pkg}\" " ++msgstr "未找到在需要重新启动的文件 \"{file}\" 中指定的软件包名为 \"{pkg}\" " + "的已安装的软件包。" + + #: plugins/needs_restarting.py:220 +@@ -899,18 +937,18 @@ msgid "Bad Action Line \"%s\": %s" + msgstr "错误的操作行“ %s”: %s" + + #. unsupported state, skip it +-#: plugins/post-transaction-actions.py:130 ++#: plugins/post-transaction-actions.py:133 + #, python-format + msgid "Bad Transaction State: %s" + msgstr "错误的事务状态: %s" + +-#: plugins/post-transaction-actions.py:157 +-#: plugins/post-transaction-actions.py:159 ++#: plugins/post-transaction-actions.py:160 ++#: plugins/post-transaction-actions.py:162 + #, python-format + msgid "post-transaction-actions: %s" + msgstr "事物后的操作: %s" + +-#: plugins/post-transaction-actions.py:161 ++#: plugins/post-transaction-actions.py:164 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" + msgstr "事物后的操作 : 无效的命令 \"%s\": %s" +@@ -1087,33 +1125,45 @@ msgstr "管理 RPM 软件包目录" + + #: plugins/repomanage.py:59 + msgid "Pass either --old or --new, not both!" +-msgstr "传入 --old 或者 --new,不可同时传入!" ++msgstr "传递 --old 或者 --new,而不是两者都传递!" ++ ++#: plugins/repomanage.py:61 ++msgid "Pass either --oldonly or --new, not both!" ++msgstr "传递 --oldonly 或 --new,而不是两者都传递!" ++ ++#: plugins/repomanage.py:63 ++msgid "Pass either --old or --oldonly, not both!" ++msgstr "传递 --old 或 --oldonly,而不是两者都传递!" + +-#: plugins/repomanage.py:89 ++#: plugins/repomanage.py:100 + msgid "No files to process" + msgstr "没有可处理的文件" + +-#: plugins/repomanage.py:96 ++#: plugins/repomanage.py:107 + msgid "Could not open {}" + msgstr "无法打开 {}" + +-#: plugins/repomanage.py:180 ++#: plugins/repomanage.py:223 + msgid "Print the older packages" + msgstr "打印较旧的软件包" + +-#: plugins/repomanage.py:182 ++#: plugins/repomanage.py:225 ++msgid "Print the older packages. Exclude the newest packages." ++msgstr "打印旧的软件包。排除最新的软件包。" ++ ++#: plugins/repomanage.py:227 + msgid "Print the newest packages" + msgstr "打印最新的软件包" + +-#: plugins/repomanage.py:184 ++#: plugins/repomanage.py:229 + msgid "Space separated output, not newline" + msgstr "用空格分割输出,而不是新行" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:231 + msgid "Newest N packages to keep - defaults to 1" + msgstr "要保留的最新的 N 个软件包 - 默认值为 1" + +-#: plugins/repomanage.py:189 ++#: plugins/repomanage.py:234 + msgid "Path to directory" + msgstr "指向目录的路径" + +@@ -1281,6 +1331,10 @@ msgstr "按原样使用程序包规格,请勿尝试解析它们" + msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." + msgstr "子命令 '{}' 已被弃用。改为使用 'exclude' 子命令。" + ++#~ msgid "" ++#~ "This repository does not have any builds yet so you cannot enable it now." ++#~ msgstr "该仓库尚未包含任何构建所以您现在无法启用它。" ++ + #~ msgid "" + #~ "\n" + #~ "You are about to enable a Playground repository.\n" +-- +2.37.3 + diff --git a/SPECS/dnf-plugins-core.spec b/SPECS/dnf-plugins-core.spec index 64b8193..e9128e1 100644 --- a/SPECS/dnf-plugins-core.spec +++ b/SPECS/dnf-plugins-core.spec @@ -34,7 +34,7 @@ Name: dnf-plugins-core Version: 4.0.21 -Release: 11%{?dist} +Release: 14.1%{?dist} Summary: Core Plugins for DNF License: GPLv2+ URL: https://github.com/rpm-software-management/dnf-plugins-core @@ -51,6 +51,19 @@ Patch9: 0009-Update-documentation-for-adding-specific-version-RhBug20133 Patch10: 0010-needs-restarting-Fix-wrong-boot-time-RhBug1960437.patch Patch11: 0011-Add-new-command-modulesync-RhBug1868047.patch Patch12: 0012-Update-translations-RhBug-2017271.patch +Patch13: 0013-repomanage-Use-modules-only-from-repo-they-are-handl.patch +Patch14: 0014-feat-repomanage-Add-new-option-oldonly.patch +Patch15: 0015-Skip-all-non-rpm-tsi-for-transaction_action-plugins-.patch +Patch16: 0016-Fix-dnf-copr-enable-on-Fedora-35.patch +Patch17: 0017-Disable-dnf-playground-command.patch +Patch18: 0018-Fix-baseurl-for-centos-stream-chroot.patch +Patch19: 0019-Silence-a-deprecation-warning-in-plugins-copr.py.patch +Patch20: 0020-Shorter-verification-that-the-project-exists.patch +Patch21: 0021-Better-error-message-for-dnf-copr-enable.patch +Patch22: 0022-copr-allow-specifying-protocol-as-part-of-hub.patch +Patch23: 0023-copr-Guess-EPEL-chroots-for-CentOS-Stream-RhBug-2058.patch +Patch24: 0024-Update-translations-RHEL-8.7.patch + BuildArch: noarch BuildRequires: cmake @@ -794,7 +807,25 @@ ln -sf %{_mandir}/man1/%{yum_utils_subpackage_name}.1.gz %{buildroot}%{_mandir}/ %endif %changelog -* Fri Mar 18 2022 Marek Blaha - 4.0.21-11 +* Wed Sep 14 2022 Marek Blaha - 4.0.21-14.1 +- Update translations + +* Tue Jul 19 2022 Lukas Hrazky - 4.0.21-14 +- [copr] Guess EPEL chroots for CentOS Stream + +* Tue Jun 14 2022 Lukas Hrazky - 4.0.21-13 +- [copr] Fix 'dnf copr enable' on Fedora 35 +- [copr] Disable dnf playground command +- [copr] Fix baseurl for centos stream chroot +- [copr] Silence a deprecation warning in plugins/copr.py +- [copr] Shorter verification that the project exists +- [copr] Better error message for dnf copr enable +- [copr] allow specifying protocol as part of --hub + +* Tue Jun 14 2022 Lukas Hrazky - 4.0.21-12 +- [repomanage] Use modules only from repo they are handling +- [repomanage] Add new option --oldonly +- Skip all non rpm tsi for transaction_action plugins - Update translations * Fri Jan 14 2022 Pavla Kratochvilova - 4.0.21-10