From 0613d003bc024881b0aaaba73807e37aea777d21 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 18 2021 06:39:10 +0000 Subject: import dnf-plugins-core-4.0.18-4.el8 --- diff --git a/.dnf-plugins-core.metadata b/.dnf-plugins-core.metadata index d528aaa..fc3009b 100644 --- a/.dnf-plugins-core.metadata +++ b/.dnf-plugins-core.metadata @@ -1 +1 @@ -f938708df18862c3e31e2b9d49e5c9b322d79897 SOURCES/dnf-plugins-core-4.0.17.tar.gz +3b8638dec2cb91a13241106b9a57114ed037d2ca SOURCES/dnf-plugins-core-4.0.18.tar.gz diff --git a/.gitignore b/.gitignore index 41ae935..dae8243 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/dnf-plugins-core-4.0.17.tar.gz +SOURCES/dnf-plugins-core-4.0.18.tar.gz diff --git a/SOURCES/0001-groups-manager-Re-introduce-yum-groups-manager-funct.patch b/SOURCES/0001-groups-manager-Re-introduce-yum-groups-manager-funct.patch new file mode 100644 index 0000000..ddebf40 --- /dev/null +++ b/SOURCES/0001-groups-manager-Re-introduce-yum-groups-manager-funct.patch @@ -0,0 +1,653 @@ +From 40f08d7a22907e6292c314462c01de94584c0854 Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Tue, 27 Oct 2020 15:46:03 +0100 +Subject: [PATCH 1/2] [groups-manager] Re-introduce yum-groups-manager + functionality (RhBug:1826016) + +Implements 'dnf groups-manager' command with features: +- read, merge, print and write groups metadata files +- edit group attributes name (with translated variants), + description (with translated variants), uservisible, displayorder +- add packgages to group +- remove packages from group + += changelog = +msg: Re-introduce yum-groups-manager functionality +type: enhancement +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1826016 +--- + dnf-plugins-core.spec | 22 ++- + doc/CMakeLists.txt | 2 + + doc/conf.py | 2 + + doc/groups-manager.rst | 94 ++++++++++++ + doc/index.rst | 1 + + libexec/dnf-utils.in | 1 + + plugins/CMakeLists.txt | 1 + + plugins/groups_manager.py | 314 ++++++++++++++++++++++++++++++++++++++ + 8 files changed, 432 insertions(+), 5 deletions(-) + create mode 100644 doc/groups-manager.rst + create mode 100644 plugins/groups_manager.py + +diff --git a/dnf-plugins-core.spec b/dnf-plugins-core.spec +index d13a996..42d0884 100644 +--- a/dnf-plugins-core.spec ++++ b/dnf-plugins-core.spec +@@ -58,6 +58,7 @@ Provides: dnf-command(debug-dump) + Provides: dnf-command(debug-restore) + Provides: dnf-command(debuginfo-install) + Provides: dnf-command(download) ++Provides: dnf-command(groups-manager) + Provides: dnf-command(repoclosure) + Provides: dnf-command(repograph) + Provides: dnf-command(repomanage) +@@ -73,6 +74,7 @@ Provides: dnf-plugin-debuginfo-install = %{version}-%{release} + Provides: dnf-plugin-download = %{version}-%{release} + Provides: dnf-plugin-generate_completion_cache = %{version}-%{release} + Provides: dnf-plugin-needs_restarting = %{version}-%{release} ++Provides: dnf-plugin-groups-manager = %{version}-%{release} + Provides: dnf-plugin-repoclosure = %{version}-%{release} + Provides: dnf-plugin-repodiff = %{version}-%{release} + Provides: dnf-plugin-repograph = %{version}-%{release} +@@ -87,7 +89,7 @@ Conflicts: dnf-plugins-extras-common-data < %{dnf_plugins_extra} + + %description + Core Plugins for DNF. This package enhances DNF with builddep, config-manager, +-copr, debug, debuginfo-install, download, needs-restarting, repoclosure, ++copr, debug, debuginfo-install, download, needs-restarting, groups-manager, repoclosure, + repograph, repomanage, reposync, changelog and repodiff commands. Additionally + provides generate_completion_cache passive plugin. + +@@ -129,7 +131,8 @@ Conflicts: python-%{name} < %{version}-%{release} + %description -n python2-%{name} + Core Plugins for DNF, Python 2 interface. This package enhances DNF with builddep, + config-manager, copr, degug, debuginfo-install, download, needs-restarting, +-repoclosure, repograph, repomanage, reposync, changelog and repodiff commands. ++groups-manager, repoclosure, repograph, repomanage, reposync, changelog ++and repodiff commands. + Additionally provides generate_completion_cache passive plugin. + %endif + +@@ -163,7 +166,8 @@ Conflicts: python-%{name} < %{version}-%{release} + %description -n python3-%{name} + Core Plugins for DNF, Python 3 interface. This package enhances DNF with builddep, + config-manager, copr, debug, debuginfo-install, download, needs-restarting, +-repoclosure, repograph, repomanage, reposync, changelog and repodiff commands. ++groups-manager, repoclosure, repograph, repomanage, reposync, changelog ++and repodiff commands. + Additionally provides generate_completion_cache passive plugin. + %endif + +@@ -190,8 +194,8 @@ Summary: Yum-utils CLI compatibility layer + %description -n %{yum_utils_subpackage_name} + As a Yum-utils CLI compatibility layer, supplies in CLI shims for + debuginfo-install, repograph, package-cleanup, repoclosure, repomanage, +-repoquery, reposync, repotrack, repodiff, builddep, config-manager, debug +-and download that use new implementations using DNF. ++repoquery, reposync, repotrack, repodiff, builddep, config-manager, debug, ++download and yum-groups-manager that use new implementations using DNF. + %endif + + %if 0%{?rhel} == 0 && %{with python2} +@@ -458,6 +462,7 @@ ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-builddep + ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-config-manager + ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-debug-dump + ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-debug-restore ++ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-groups-manager + ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yumdownloader + # These commands don't have a dedicated man page, so let's just point them + # to the utils page which contains their descriptions. +@@ -483,6 +488,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ + %{_mandir}/man8/dnf-debuginfo-install.* + %{_mandir}/man8/dnf-download.* + %{_mandir}/man8/dnf-generate_completion_cache.* ++%{_mandir}/man8/dnf-groups-manager.* + %{_mandir}/man8/dnf-needs-restarting.* + %{_mandir}/man8/dnf-repoclosure.* + %{_mandir}/man8/dnf-repodiff.* +@@ -513,6 +519,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ + %{python2_sitelib}/dnf-plugins/debuginfo-install.* + %{python2_sitelib}/dnf-plugins/download.* + %{python2_sitelib}/dnf-plugins/generate_completion_cache.* ++%{python2_sitelib}/dnf-plugins/groups_manager.* + %{python2_sitelib}/dnf-plugins/needs_restarting.* + %{python2_sitelib}/dnf-plugins/repoclosure.* + %{python2_sitelib}/dnf-plugins/repodiff.* +@@ -538,6 +545,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ + %{python3_sitelib}/dnf-plugins/debuginfo-install.py + %{python3_sitelib}/dnf-plugins/download.py + %{python3_sitelib}/dnf-plugins/generate_completion_cache.py ++%{python3_sitelib}/dnf-plugins/groups_manager.py + %{python3_sitelib}/dnf-plugins/needs_restarting.py + %{python3_sitelib}/dnf-plugins/repoclosure.py + %{python3_sitelib}/dnf-plugins/repodiff.py +@@ -552,6 +560,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ + %{python3_sitelib}/dnf-plugins/__pycache__/debuginfo-install.* + %{python3_sitelib}/dnf-plugins/__pycache__/download.* + %{python3_sitelib}/dnf-plugins/__pycache__/generate_completion_cache.* ++%{python3_sitelib}/dnf-plugins/__pycache__/groups_manager.* + %{python3_sitelib}/dnf-plugins/__pycache__/needs_restarting.* + %{python3_sitelib}/dnf-plugins/__pycache__/repoclosure.* + %{python3_sitelib}/dnf-plugins/__pycache__/repodiff.* +@@ -579,6 +588,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ + %{_bindir}/yum-config-manager + %{_bindir}/yum-debug-dump + %{_bindir}/yum-debug-restore ++%{_bindir}/yum-groups-manager + %{_bindir}/yumdownloader + %{_mandir}/man1/debuginfo-install.* + %{_mandir}/man1/needs-restarting.* +@@ -591,6 +601,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ + %{_mandir}/man1/yum-config-manager.* + %{_mandir}/man1/yum-debug-dump.* + %{_mandir}/man1/yum-debug-restore.* ++%{_mandir}/man1/yum-groups-manager.* + %{_mandir}/man1/yumdownloader.* + %{_mandir}/man1/package-cleanup.* + %{_mandir}/man1/dnf-utils.* +@@ -612,6 +623,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ + %exclude %{_mandir}/man1/yum-config-manager.* + %exclude %{_mandir}/man1/yum-debug-dump.* + %exclude %{_mandir}/man1/yum-debug-restore.* ++%exclude %{_mandir}/man1/yum-groups-manager.* + %exclude %{_mandir}/man1/yumdownloader.* + %exclude %{_mandir}/man1/package-cleanup.* + %exclude %{_mandir}/man1/dnf-utils.* +diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt +index dd97eb2..3fb665d 100644 +--- a/doc/CMakeLists.txt ++++ b/doc/CMakeLists.txt +@@ -26,6 +26,7 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/dnf-builddep.8 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-debuginfo-install.8 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-download.8 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-generate_completion_cache.8 ++ ${CMAKE_CURRENT_BINARY_DIR}/dnf-groups-manager.8 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-leaves.8 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-needs-restarting.8 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-repoclosure.8 +@@ -61,6 +62,7 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/debuginfo-install.1 + ${CMAKE_CURRENT_BINARY_DIR}/yum-config-manager.1 + ${CMAKE_CURRENT_BINARY_DIR}/yum-debug-dump.1 + ${CMAKE_CURRENT_BINARY_DIR}/yum-debug-restore.1 ++ ${CMAKE_CURRENT_BINARY_DIR}/yum-groups-manager.1 + ${CMAKE_CURRENT_BINARY_DIR}/yumdownloader.1 + ${CMAKE_CURRENT_BINARY_DIR}/package-cleanup.1 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-utils.1 +diff --git a/doc/conf.py b/doc/conf.py +index d760ef3..645185a 100644 +--- a/doc/conf.py ++++ b/doc/conf.py +@@ -251,6 +251,7 @@ man_pages = [ + ('download', 'dnf-download', u'DNF download Plugin', AUTHORS, 8), + ('generate_completion_cache', 'dnf-generate_completion_cache', + u'DNF generate_completion_cache Plugin', AUTHORS, 8), ++ ('groups-manager', 'dnf-groups-manager', u'DNF groups-manager Plugin', AUTHORS, 8), + ('leaves', 'dnf-leaves', u'DNF leaves Plugin', AUTHORS, 8), + ('local', 'dnf-local', u'DNF local Plugin', AUTHORS, 8), + ('needs_restarting', 'dnf-needs-restarting', u'DNF needs_restarting Plugin', AUTHORS, 8), +@@ -268,6 +269,7 @@ man_pages = [ + ('copr', 'yum-copr', u'redirecting to DNF copr Plugin', AUTHORS, 8), + ('debuginfo-install', 'debuginfo-install', u'redirecting to DNF debuginfo-install Plugin', + AUTHORS, 1), ++ ('groups-manager', 'yum-groups-manager', u'redirecting to DNF groups-manager Plugin', AUTHORS, 1), + ('needs_restarting', 'needs-restarting', u'redirecting to DNF needs-restarting Plugin', + AUTHORS, 1), + ('repoclosure', 'repoclosure', u'redirecting to DNF repoclosure Plugin', AUTHORS, 1), +diff --git a/doc/groups-manager.rst b/doc/groups-manager.rst +new file mode 100644 +index 0000000..f8f76a1 +--- /dev/null ++++ b/doc/groups-manager.rst +@@ -0,0 +1,94 @@ ++.. ++ Copyright (C) 2020 Red Hat, Inc. ++ ++ This copyrighted material is made available to anyone wishing to use, ++ modify, copy, or redistribute it subject to the terms and conditions of ++ the GNU General Public License v.2, or (at your option) any later version. ++ This program is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY expressed or implied, including the implied warranties of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++ Public License for more details. You should have received a copy of the ++ GNU General Public License along with this program; if not, write to the ++ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++ 02110-1301, USA. Any Red Hat trademarks that are incorporated in the ++ source code or documentation are not subject to the GNU General Public ++ License and may only be used or replicated with the express permission of ++ Red Hat, Inc. ++ ++========================= ++DNF groups-manager Plugin ++========================= ++ ++Create and edit groups repository metadata files. ++ ++-------- ++Synopsis ++-------- ++ ++``dnf groups-manager [options] [package-name-spec [package-name-spec ...]]`` ++ ++----------- ++Description ++----------- ++groups-manager plugin is used to create or edit a group metadata file for a repository. This is often much easier than writing/editing the XML by hand. The groups-manager can load an entire file of groups metadata and either create a new group or edit an existing group and then write all of the groups metadata back out. ++ ++--------- ++Arguments ++--------- ++ ++```` ++ Package to add to a group or remove from a group. ++ ++------- ++Options ++------- ++ ++All general DNF options are accepted, see `Options` in :manpage:`dnf(8)` for details. ++ ++``--load=`` ++ Load the groups metadata information from the specified file before performing any operations. Metadata from all files are merged together if the option is specified multiple times. ++ ++``--save=`` ++ Save the result to this file. You can specify the name of a file you are loading from as the data will only be saved when all the operations have been performed. This option can also be specified multiple times. ++ ++``--merge=`` ++ This is the same as loading and saving a file, however the "merge" file is loaded before any others and saved last. ++ ++``--print`` ++ Also print the result to stdout. ++ ++``--id=`` ++ The id to lookup/use for the group. If you don't specify an ````, but do specify a name that doesn't refer to an existing group, then an id for the group is generated based on the name. ++ ++``-n , --name=`` ++ The name to lookup/use for the group. If you specify an existing group id, then the group with that id will have it's name changed to this value. ++ ++``--description=`` ++ The description to use for the group. ++ ++``--display-order=`` ++ Change the integer which controls the order groups are presented in, for example in ``dnf grouplist``. ++ ++``--translated-name=`` ++ A translation of the group name in the given language. The syntax is ``lang:text``. Eg. ``en:my-group-name-in-english`` ++ ++``--translated-description=`` ++ A translation of the group description in the given language. The syntax is ``lang:text``. Eg. ``en:my-group-description-in-english``. ++ ++``--user-visible`` ++ Make the group visible in ``dnf grouplist`` (this is the default). ++ ++``--not-user-visible`` ++ Make the group not visible in ``dnf grouplist``. ++ ++``--mandatory`` ++ Store the package names specified within the mandatory section of the specified group, the default is to use the default section. ++ ++``--optional`` ++ Store the package names specified within the optional section of the specified group, the default is to use the default section. ++ ++``--remove`` ++ Instead of adding packages remove them. Note that the packages are removed from all sections (default, mandatory and optional). ++ ++``--dependencies`` ++ Also include the names of the direct dependencies for each package specified. +diff --git a/doc/index.rst b/doc/index.rst +index 91bb36e..7213253 100644 +--- a/doc/index.rst ++++ b/doc/index.rst +@@ -33,6 +33,7 @@ This documents core plugins of DNF: + debuginfo-install + download + generate_completion_cache ++ groups-manager + leaves + local + migrate +diff --git a/libexec/dnf-utils.in b/libexec/dnf-utils.in +index 667ce13..af1e893 100644 +--- a/libexec/dnf-utils.in ++++ b/libexec/dnf-utils.in +@@ -37,6 +37,7 @@ MAPPING = {'debuginfo-install': ['debuginfo-install'], + 'yum-config-manager': ['config-manager'], + 'yum-debug-dump': ['debug-dump'], + 'yum-debug-restore': ['debug-restore'], ++ 'yum-groups-manager': ['groups-manager'], + 'yumdownloader': ['download'] + } + +diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt +index 7465e53..f66d3df 100644 +--- a/plugins/CMakeLists.txt ++++ b/plugins/CMakeLists.txt +@@ -6,6 +6,7 @@ INSTALL (FILES config_manager.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + INSTALL (FILES copr.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + INSTALL (FILES download.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + INSTALL (FILES generate_completion_cache.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) ++INSTALL (FILES groups_manager.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + INSTALL (FILES leaves.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + if (${WITHOUT_LOCAL} STREQUAL "0") + INSTALL (FILES local.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) +diff --git a/plugins/groups_manager.py b/plugins/groups_manager.py +new file mode 100644 +index 0000000..382df37 +--- /dev/null ++++ b/plugins/groups_manager.py +@@ -0,0 +1,314 @@ ++# groups_manager.py ++# DNF plugin for managing comps groups metadata files ++# ++# Copyright (C) 2020 Red Hat, Inc. ++# ++# This copyrighted material is made available to anyone wishing to use, ++# modify, copy, or redistribute it subject to the terms and conditions of ++# the GNU General Public License v.2, or (at your option) any later version. ++# This program is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY expressed or implied, including the implied warranties of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++# Public License for more details. You should have received a copy of the ++# GNU General Public License along with this program; if not, write to the ++# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++# 02110-1301, USA. Any Red Hat trademarks that are incorporated in the ++# source code or documentation are not subject to the GNU General Public ++# License and may only be used or replicated with the express permission of ++# Red Hat, Inc. ++# ++ ++from __future__ import absolute_import ++from __future__ import unicode_literals ++ ++import argparse ++import gzip ++import libcomps ++import os ++import re ++import shutil ++import tempfile ++ ++from dnfpluginscore import _, logger ++import dnf ++import dnf.cli ++ ++ ++RE_GROUP_ID_VALID = '-a-z0-9_.:' ++RE_GROUP_ID = re.compile(r'^[{}]+$'.format(RE_GROUP_ID_VALID)) ++RE_LANG = re.compile(r'^[-a-zA-Z0-9_.@]+$') ++COMPS_XML_OPTIONS = { ++ 'default_explicit': True, ++ 'uservisible_explicit': True, ++ 'empty_groups': True} ++ ++ ++def group_id_type(value): ++ '''group id validator''' ++ if not RE_GROUP_ID.match(value): ++ raise argparse.ArgumentTypeError(_('Invalid group id')) ++ return value ++ ++ ++def translation_type(value): ++ '''translated texts validator''' ++ data = value.split(':', 2) ++ if len(data) != 2: ++ raise argparse.ArgumentTypeError( ++ _("Invalid translated data, should be in form 'lang:text'")) ++ lang, text = data ++ if not RE_LANG.match(lang): ++ raise argparse.ArgumentTypeError(_('Invalid/empty language for translated data')) ++ return lang, text ++ ++ ++def text_to_id(text): ++ '''generate group id based on its name''' ++ group_id = text.lower() ++ group_id = re.sub('[^{}]'.format(RE_GROUP_ID_VALID), '', group_id) ++ if not group_id: ++ raise dnf.cli.CliError( ++ _("Can't generate group id from '{}'. Please specify group id using --id.").format( ++ text)) ++ return group_id ++ ++ ++@dnf.plugin.register_command ++class GroupsManagerCommand(dnf.cli.Command): ++ aliases = ('groups-manager',) ++ summary = _('create and edit groups metadata file') ++ ++ def __init__(self, cli): ++ super(GroupsManagerCommand, self).__init__(cli) ++ self.comps = libcomps.Comps() ++ ++ @staticmethod ++ def set_argparser(parser): ++ # input / output options ++ parser.add_argument('--load', action='append', default=[], ++ metavar='COMPS.XML', ++ help=_('load groups metadata from file')) ++ parser.add_argument('--save', action='append', default=[], ++ metavar='COMPS.XML', ++ help=_('save groups metadata to file')) ++ parser.add_argument('--merge', metavar='COMPS.XML', ++ help=_('load and save groups metadata to file')) ++ parser.add_argument('--print', action='store_true', default=False, ++ help=_('print the result metadata to stdout')) ++ # group options ++ parser.add_argument('--id', type=group_id_type, ++ help=_('group id')) ++ parser.add_argument('-n', '--name', help=_('group name')) ++ parser.add_argument('--description', ++ help=_('group description')) ++ parser.add_argument('--display-order', type=int, ++ help=_('group display order')) ++ parser.add_argument('--translated-name', action='append', default=[], ++ metavar='LANG:TEXT', type=translation_type, ++ help=_('translated name for the group')) ++ parser.add_argument('--translated-description', action='append', default=[], ++ metavar='LANG:TEXT', type=translation_type, ++ help=_('translated description for the group')) ++ visible = parser.add_mutually_exclusive_group() ++ visible.add_argument('--user-visible', dest='user_visible', action='store_true', ++ default=None, ++ help=_('make the group user visible (default)')) ++ visible.add_argument('--not-user-visible', dest='user_visible', action='store_false', ++ default=None, ++ help=_('make the group user invisible')) ++ ++ # package list options ++ section = parser.add_mutually_exclusive_group() ++ section.add_argument('--mandatory', action='store_true', ++ help=_('add packages to the mandatory section')) ++ section.add_argument('--optional', action='store_true', ++ help=_('add packages to the optional section')) ++ section.add_argument('--remove', action='store_true', default=False, ++ help=_('remove packages from the group instead of adding them')) ++ parser.add_argument('--dependencies', action='store_true', ++ help=_('include also direct dependencies for packages')) ++ ++ parser.add_argument("packages", nargs='*', metavar='PACKAGE', ++ help=_('package specification')) ++ ++ def configure(self): ++ demands = self.cli.demands ++ ++ if self.opts.packages: ++ demands.sack_activation = True ++ demands.available_repos = True ++ demands.load_system_repo = False ++ ++ # handle --merge option (shortcut to --load and --save the same file) ++ if self.opts.merge: ++ self.opts.load.insert(0, self.opts.merge) ++ self.opts.save.append(self.opts.merge) ++ ++ # check that group is specified when editing is attempted ++ if (self.opts.description ++ or self.opts.display_order ++ or self.opts.translated_name ++ or self.opts.translated_description ++ or self.opts.user_visible is not None ++ or self.opts.packages): ++ if not self.opts.id and not self.opts.name: ++ raise dnf.cli.CliError( ++ _("Can't edit group without specifying it (use --id or --name)")) ++ ++ def load_input_files(self): ++ """ ++ Loads all input xml files. ++ Returns True if at least one file was successfuly loaded ++ """ ++ for file_name in self.opts.load: ++ file_comps = libcomps.Comps() ++ try: ++ if file_name.endswith('.gz'): ++ # libcomps does not support gzipped files - decompress to temporary ++ # location ++ with gzip.open(file_name) as gz_file: ++ temp_file = tempfile.NamedTemporaryFile(delete=False) ++ try: ++ shutil.copyfileobj(gz_file, temp_file) ++ # close temp_file to ensure the content is flushed to disk ++ temp_file.close() ++ file_comps.fromxml_f(temp_file.name) ++ finally: ++ os.unlink(temp_file.name) ++ else: ++ file_comps.fromxml_f(file_name) ++ except (IOError, OSError, libcomps.ParserError) as err: ++ # gzip module raises OSError on reading from malformed gz file ++ # get_last_errors() output often contains duplicit lines, remove them ++ seen = set() ++ for error in file_comps.get_last_errors(): ++ if error in seen: ++ continue ++ logger.error(error.strip()) ++ seen.add(error) ++ raise dnf.exceptions.Error( ++ _("Can't load file \"{}\": {}").format(file_name, err)) ++ else: ++ self.comps += file_comps ++ ++ def save_output_files(self): ++ for file_name in self.opts.save: ++ try: ++ # xml_f returns a list of errors / log entries ++ errors = self.comps.xml_f(file_name, xml_options=COMPS_XML_OPTIONS) ++ except libcomps.XMLGenError as err: ++ errors = [err] ++ if errors: ++ # xml_f() method could return more than one error. In this case ++ # raise the latest of them and log the others. ++ for err in errors[:-1]: ++ logger.error(err.strip()) ++ raise dnf.exceptions.Error(_("Can't save file \"{}\": {}").format( ++ file_name, errors[-1].strip())) ++ ++ ++ def find_group(self, group_id, name): ++ ''' ++ Try to find group according to command line parameters - first by id ++ then by name. ++ ''' ++ group = None ++ if group_id: ++ for grp in self.comps.groups: ++ if grp.id == group_id: ++ group = grp ++ break ++ if group is None and name: ++ for grp in self.comps.groups: ++ if grp.name == name: ++ group = grp ++ break ++ return group ++ ++ def edit_group(self, group): ++ ''' ++ Set attributes and package lists for selected group ++ ''' ++ def langlist_to_strdict(lst): ++ str_dict = libcomps.StrDict() ++ for lang, text in lst: ++ str_dict[lang] = text ++ return str_dict ++ ++ # set group attributes ++ if self.opts.name: ++ group.name = self.opts.name ++ if self.opts.description: ++ group.desc = self.opts.description ++ if self.opts.display_order: ++ group.display_order = self.opts.display_order ++ if self.opts.user_visible is not None: ++ group.uservisible = self.opts.user_visible ++ if self.opts.translated_name: ++ group.name_by_lang = langlist_to_strdict(self.opts.translated_name) ++ if self.opts.translated_description: ++ group.desc_by_lang = langlist_to_strdict(self.opts.translated_description) ++ ++ # edit packages list ++ if self.opts.packages: ++ # find packages according to specifications from command line ++ packages = set() ++ for pkg_spec in self.opts.packages: ++ q = self.base.sack.query().filterm(name__glob=pkg_spec).latest() ++ if not q: ++ logger.warning(_("No match for argument: {}").format(pkg_spec)) ++ continue ++ packages.update(q) ++ if self.opts.dependencies: ++ # add packages that provide requirements ++ requirements = set() ++ for pkg in packages: ++ requirements.update(pkg.requires) ++ packages.update(self.base.sack.query().filterm(provides=requirements)) ++ ++ pkg_names = {pkg.name for pkg in packages} ++ ++ if self.opts.remove: ++ for pkg_name in pkg_names: ++ for pkg in group.packages_match(name=pkg_name, ++ type=libcomps.PACKAGE_TYPE_UNKNOWN): ++ group.packages.remove(pkg) ++ else: ++ if self.opts.mandatory: ++ pkg_type = libcomps.PACKAGE_TYPE_MANDATORY ++ elif self.opts.optional: ++ pkg_type = libcomps.PACKAGE_TYPE_OPTIONAL ++ else: ++ pkg_type = libcomps.PACKAGE_TYPE_DEFAULT ++ for pkg_name in sorted(pkg_names): ++ if not group.packages_match(name=pkg_name, type=pkg_type): ++ group.packages.append(libcomps.Package(name=pkg_name, type=pkg_type)) ++ ++ def run(self): ++ self.load_input_files() ++ ++ if self.opts.id or self.opts.name: ++ # we are adding / editing a group ++ group = self.find_group(group_id=self.opts.id, name=self.opts.name) ++ if group is None: ++ # create a new group ++ if self.opts.remove: ++ raise dnf.exceptions.Error(_("Can't remove packages from non-existent group")) ++ group = libcomps.Group() ++ if self.opts.id: ++ group.id = self.opts.id ++ group.name = self.opts.id ++ elif self.opts.name: ++ group_id = text_to_id(self.opts.name) ++ if self.find_group(group_id=group_id, name=None): ++ raise dnf.cli.CliError( ++ _("Group id '{}' generated from '{}' is duplicit. " ++ "Please specify group id using --id.").format( ++ group_id, self.opts.name)) ++ group.id = group_id ++ self.comps.groups.append(group) ++ self.edit_group(group) ++ ++ self.save_output_files() ++ if self.opts.print or (not self.opts.save): ++ print(self.comps.xml_str(xml_options=COMPS_XML_OPTIONS)) +-- +2.26.2 + diff --git a/SOURCES/0001-test-plugin-crash-if-needs-restarting-d-does-not-exist.patch b/SOURCES/0001-test-plugin-crash-if-needs-restarting-d-does-not-exist.patch deleted file mode 100644 index aaeb099..0000000 --- a/SOURCES/0001-test-plugin-crash-if-needs-restarting-d-does-not-exist.patch +++ /dev/null @@ -1,62 +0,0 @@ -From aa1f12be109a2d997eeb1c1cce22beb09dd21d04 Mon Sep 17 00:00:00 2001 -From: Nicola Sella -Date: Thu, 11 Jun 2020 09:32:17 +0200 -Subject: [PATCH 1/2] [needs-restarting] Fix plugin fail if needs-restarting.d - does not exist - -includes pep8 warning fix and string formatting space missing ---- - plugins/needs_restarting.py | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/plugins/needs_restarting.py b/plugins/needs_restarting.py -index 91f7e116..6b7dacb6 100644 ---- a/plugins/needs_restarting.py -+++ b/plugins/needs_restarting.py -@@ -46,6 +46,8 @@ def get_options_from_dir(filepath, base): - Return set of package names contained in files under filepath - """ - -+ if not os.path.exists(filepath): -+ return set() - options = set() - for file in os.listdir(filepath): - if os.path.isdir(file) or not file.endswith('.conf'): -@@ -58,9 +60,9 @@ def get_options_from_dir(filepath, base): - packages = set() - for pkg in base.sack.query().installed().filter(name={x[0] for x in options}): - packages.add(pkg.name) -- for name, file in {x for x in options if x[0] not in packages }: -+ for name, file in {x for x in options if x[0] not in packages}: - logger.warning( -- _('No installed package found for package name "{pkg}"' -+ _('No installed package found for package name "{pkg}" ' - 'specified in needs-restarting file "{file}".'.format(pkg=name, file=file))) - return packages - - -From 57955d299f751cb9927fe501fa086d9153092532 Mon Sep 17 00:00:00 2001 -From: Nicola Sella -Date: Thu, 11 Jun 2020 10:53:54 +0200 -Subject: [PATCH 2/2] [needs-restarting] add kernel-rt to reboot list - -BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1806060 ---- - plugins/needs_restarting.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/plugins/needs_restarting.py b/plugins/needs_restarting.py -index 6b7dacb6..69203f4d 100644 ---- a/plugins/needs_restarting.py -+++ b/plugins/needs_restarting.py -@@ -37,8 +37,8 @@ - - # For which package updates we should recommend a reboot - # Mostly taken from https://access.redhat.com/solutions/27943 --NEED_REBOOT = ['kernel', 'glibc', 'linux-firmware', 'systemd', 'dbus', -- 'dbus-broker', 'dbus-daemon'] -+NEED_REBOOT = ['kernel', 'kernel-rt', 'glibc', 'linux-firmware', -+ 'systemd', 'dbus', 'dbus-broker', 'dbus-daemon'] - - def get_options_from_dir(filepath, base): - """ diff --git a/SOURCES/0002-Fix-debug-restore-command-RhBug-1844533.patch b/SOURCES/0002-Fix-debug-restore-command-RhBug-1844533.patch deleted file mode 100644 index d1fea62..0000000 --- a/SOURCES/0002-Fix-debug-restore-command-RhBug-1844533.patch +++ /dev/null @@ -1,159 +0,0 @@ -From b94763c7f52dbbcc9920b4216d53fd8109e434c9 Mon Sep 17 00:00:00 2001 -From: Marek Blaha -Date: Wed, 17 Jun 2020 15:49:50 +0200 -Subject: [PATCH] Fix debug-restore command - -- correctly work with install-only packages (BZ#1844533) -- do not remove current versions of packages that are supposed to be - replaced (downgraded / upgraded) ---- - plugins/debug.py | 108 ++++++++++++++++++++++++----------------------- - 1 file changed, 56 insertions(+), 52 deletions(-) - -diff --git a/plugins/debug.py b/plugins/debug.py -index 6d00613d..29c5bf78 100644 ---- a/plugins/debug.py -+++ b/plugins/debug.py -@@ -201,10 +201,9 @@ def run(self): - self.opts.filter_types = set( - self.opts.filter_types.replace(",", " ").split()) - -- installed = self.base.sack.query().installed() - dump_pkgs = self.read_dump_file(self.opts.filename[0]) - -- self.process_installed(installed, dump_pkgs, self.opts) -+ self.process_installed(dump_pkgs, self.opts) - - self.process_dump(dump_pkgs, self.opts) - -@@ -212,56 +211,63 @@ def run(self): - self.base.resolve() - self.base.do_transaction() - -- def process_installed(self, installed, dump_pkgs, opts): -- for pkg in sorted(installed): -- filtered = False -+ def process_installed(self, dump_pkgs, opts): -+ installed = self.base.sack.query().installed() -+ installonly_pkgs = self.base._get_installonly_query(installed) -+ for pkg in installed: -+ pkg_remove = False - spec = pkgspec(pkg) -- action, dn, da, de, dv, dr = dump_pkgs.get((pkg.name, pkg.arch), -- [None, None, None, -- None, None, None]) -- dump_naevr = (dn, da, de, dv, dr) -- if pkg.pkgtup == dump_naevr: -- # package unchanged -- del dump_pkgs[(pkg.name, pkg.arch)] -- else: -- if action == "install": -- # already have some version -- dump_pkgs[(pkg.name, pkg.arch)][0] = "replace" -- if "replace" not in opts.filter_types: -- filtered = True -+ dumped_versions = dump_pkgs.get((pkg.name, pkg.arch), None) -+ if dumped_versions is not None: -+ evr = (pkg.epoch, pkg.version, pkg.release) -+ if evr in dumped_versions: -+ # the correct version is already installed -+ dumped_versions[evr] = 'skip' - else: -- if "remove" not in opts.filter_types: -- filtered = True -- if not filtered: -- if opts.output: -- print("remove %s" % spec) -+ # other version is currently installed -+ if pkg in installonly_pkgs: -+ # package is install-only, should be removed -+ pkg_remove = True - else: -- self.base.package_remove(pkg) -- -- def process_dump(self, dump_pkgs, opts): -- for (action, n, a, e, v, r) in sorted(dump_pkgs.values()): -- filtered = False -- if opts.ignore_arch: -- arch = "" -- else: -- arch = "." + a -- if opts.install_latest and action == "install": -- pkg_spec = "%s%s" % (n, arch) -- if "install" not in opts.filter_types: -- filtered = True -+ # package should be upgraded / downgraded -+ if "replace" in opts.filter_types: -+ action = 'replace' -+ else: -+ action = 'skip' -+ for d_evr in dumped_versions.keys(): -+ dumped_versions[d_evr] = action - else: -- pkg_spec = pkgtup2spec(n, arch, e, v, r) -- if (action == "replace" and -- "replace" not in opts.filter_types): -- filtered = True -- if not filtered: -+ # package should not be installed -+ pkg_remove = True -+ if pkg_remove and "remove" in opts.filter_types: - if opts.output: -- print("install %s" % pkg_spec) -+ print("remove %s" % spec) - else: -- try: -- self.base.install(pkg_spec) -- except dnf.exceptions.MarkingError: -- logger.error(_("Package %s is not available"), pkg_spec) -+ self.base.package_remove(pkg) -+ -+ def process_dump(self, dump_pkgs, opts): -+ for (n, a) in sorted(dump_pkgs.keys()): -+ dumped_versions = dump_pkgs[(n, a)] -+ for (e, v, r) in sorted(dumped_versions.keys()): -+ action = dumped_versions[(e, v, r)] -+ if action == 'skip': -+ continue -+ if opts.ignore_arch: -+ arch = "" -+ else: -+ arch = "." + a -+ if opts.install_latest and action == "install": -+ pkg_spec = "%s%s" % (n, arch) -+ else: -+ pkg_spec = pkgtup2spec(n, arch, e, v, r) -+ if action in opts.filter_types: -+ if opts.output: -+ print("%s %s" % (action, pkg_spec)) -+ else: -+ try: -+ self.base.install(pkg_spec) -+ except dnf.exceptions.MarkingError: -+ logger.error(_("Package %s is not available"), pkg_spec) - - @staticmethod - def read_dump_file(filename): -@@ -288,11 +294,9 @@ def read_dump_file(filename): - - pkg_spec = line.strip() - nevra = hawkey.split_nevra(pkg_spec) -- pkgs[(nevra.name, nevra.arch)] = ["install", ucd(nevra.name), -- ucd(nevra.arch), -- ucd(nevra.epoch), -- ucd(nevra.version), -- ucd(nevra.release)] -+ # {(name, arch): {(epoch, version, release): action}} -+ pkgs.setdefault((nevra.name, nevra.arch), {})[ -+ (nevra.epoch, nevra.version, nevra.release)] = "install" - - return pkgs - -@@ -321,6 +325,6 @@ def pkgspec(pkg): - - - def pkgtup2spec(name, arch, epoch, version, release): -- a = "" if not arch else ".%s" % arch -+ a = "" if not arch else ".%s" % arch.lstrip('.') - e = "" if epoch in (None, "") else "%s:" % epoch - return "%s-%s%s-%s%s" % (name, e, version, release, a) diff --git a/SOURCES/0002-needs-restarting-add-s-to-list-services-RhBug-177293.patch b/SOURCES/0002-needs-restarting-add-s-to-list-services-RhBug-177293.patch new file mode 100644 index 0000000..b832730 --- /dev/null +++ b/SOURCES/0002-needs-restarting-add-s-to-list-services-RhBug-177293.patch @@ -0,0 +1,138 @@ +From b2a912724d737ca7ac4350885b54117f5e043046 Mon Sep 17 00:00:00 2001 +From: Nicola Sella +Date: Thu, 5 Mar 2020 12:45:39 +0100 +Subject: [PATCH 2/2] [needs-restarting] add -s to list services + (RhBug:1772939) + += changelog = +msg: [needs-restarting] add -s to list services (RhBug:1772939) +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1772939 + +Closes: #395 +Approved by: kontura +--- + dnf-plugins-core.spec | 6 ++++++ + doc/needs_restarting.rst | 3 +++ + plugins/needs_restarting.py | 33 +++++++++++++++++++++++++++++++++ + 3 files changed, 42 insertions(+) + +diff --git a/dnf-plugins-core.spec b/dnf-plugins-core.spec +index 42d0884..012dde8 100644 +--- a/dnf-plugins-core.spec ++++ b/dnf-plugins-core.spec +@@ -99,8 +99,10 @@ Summary: Core Plugins for DNF + %{?python_provide:%python_provide python2-%{name}} + BuildRequires: python2-dnf >= %{dnf_lowest_compatible} + %if 0%{?rhel} && 0%{?rhel} <= 7 ++BuildRequires: dbus-python + BuildRequires: python-nose + %else ++BuildRequires: python2-dbus + BuildRequires: python2-nose + %endif + BuildRequires: python2-devel +@@ -110,8 +112,10 @@ Requires: python2-distro + Requires: python2-dnf >= %{dnf_lowest_compatible} + Requires: python2-hawkey >= %{hawkey_version} + %if 0%{?rhel} && 0%{?rhel} <= 7 ++Requires: dbus-python + Requires: python-dateutil + %else ++Requires: python2-dbus + Requires: python2-dateutil + %endif + Provides: python2-dnf-plugins-extras-debug = %{version}-%{release} +@@ -140,12 +144,14 @@ Additionally provides generate_completion_cache passive plugin. + %package -n python3-%{name} + Summary: Core Plugins for DNF + %{?python_provide:%python_provide python3-%{name}} ++BuildRequires: python3-dbus + BuildRequires: python3-devel + BuildRequires: python3-dnf >= %{dnf_lowest_compatible} + BuildRequires: python3-nose + %if 0%{?fedora} + Requires: python3-distro + %endif ++Requires: python3-dbus + Requires: python3-dnf >= %{dnf_lowest_compatible} + Requires: python3-hawkey >= %{hawkey_version} + Requires: python3-dateutil +diff --git a/doc/needs_restarting.rst b/doc/needs_restarting.rst +index e79b43f..1a3fbbe 100644 +--- a/doc/needs_restarting.rst ++++ b/doc/needs_restarting.rst +@@ -48,3 +48,6 @@ All general DNF options are accepted, see `Options` in :manpage:`dnf(8)` for det + ``-r, --reboothint`` + + Only report whether a reboot is required (exit code 1) or not (exit code 0). ++ ++``-s, --services`` ++ Only list the affected systemd services. +diff --git a/plugins/needs_restarting.py b/plugins/needs_restarting.py +index 69203f4..f6bf525 100644 +--- a/plugins/needs_restarting.py ++++ b/plugins/needs_restarting.py +@@ -29,6 +29,7 @@ from dnfpluginscore import logger, _ + + import dnf + import dnf.cli ++import dbus + import functools + import os + import re +@@ -126,6 +127,30 @@ def print_cmd(pid): + print('%d : %s' % (pid, command)) + + ++def get_service_dbus(pid): ++ bus = dbus.SystemBus() ++ systemd_manager_object = bus.get_object( ++ 'org.freedesktop.systemd1', ++ '/org/freedesktop/systemd1' ++ ) ++ systemd_manager_interface = dbus.Interface( ++ systemd_manager_object, ++ 'org.freedesktop.systemd1.Manager' ++ ) ++ service_proxy = bus.get_object( ++ 'org.freedesktop.systemd1', ++ systemd_manager_interface.GetUnitByPID(pid) ++ ) ++ service_properties = dbus.Interface( ++ service_proxy, dbus_interface="org.freedesktop.DBus.Properties") ++ name = service_properties.Get( ++ "org.freedesktop.systemd1.Unit", ++ 'Id' ++ ) ++ if name.endswith(".service"): ++ return name ++ return ++ + def smap2opened_file(pid, line): + slash = line.find('/') + if slash < 0: +@@ -205,6 +230,8 @@ class NeedsRestartingCommand(dnf.cli.Command): + parser.add_argument('-r', '--reboothint', action='store_true', + help=_("only report whether a reboot is required " + "(exit code 1) or not (exit code 0)")) ++ parser.add_argument('-s', '--services', action='store_true', ++ help=_("only report affected systemd services")) + + def configure(self): + demands = self.cli.demands +@@ -251,5 +278,11 @@ class NeedsRestartingCommand(dnf.cli.Command): + if pkg.installtime > process_start(ofile.pid): + stale_pids.add(ofile.pid) + ++ if self.opts.services: ++ names = set([get_service_dbus(pid) for pid in sorted(stale_pids)]) ++ for name in names: ++ if name is not None: ++ print(name) ++ return 0 + for pid in sorted(stale_pids): + print_cmd(pid) +-- +2.26.2 + diff --git a/SOURCES/0003-debug-Use-standard-demands.resolving-for-transaction.patch b/SOURCES/0003-debug-Use-standard-demands.resolving-for-transaction.patch deleted file mode 100644 index 89c4f51..0000000 --- a/SOURCES/0003-debug-Use-standard-demands.resolving-for-transaction.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 01f5570bb74aa923870e253007b76e8ed266a27f Mon Sep 17 00:00:00 2001 -From: Marek Blaha -Date: Wed, 1 Jul 2020 08:52:19 +0200 -Subject: [PATCH 3/5] [debug] Use standard demands.resolving for transaction - handling - -Do not handle the transaction in plugin, use standard demands.resolving -instead. This ensures that transaction errors are correctly presented to -the user. - -Before: -$ dnf debug-restore running-kernel-remove.txt.gz -$ echo $? -1 - -After the patch: -$ dnf debug-restore running-kernel-remove.txt.gz -Error: - Problem: The operation would result in removing the following protected packages: kernel-core -(try to add '--skip-broken' to skip uninstallable packages) -$ echo $? -1 ---- - plugins/debug.py | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/plugins/debug.py b/plugins/debug.py -index 29c5bf7..efe6bea 100644 ---- a/plugins/debug.py -+++ b/plugins/debug.py -@@ -175,6 +175,8 @@ class DebugRestoreCommand(dnf.cli.Command): - self.cli.demands.sack_activation = True - self.cli.demands.available_repos = True - self.cli.demands.root_user = True -+ if not self.opts.output: -+ self.cli.demands.resolving = True - - @staticmethod - def set_argparser(parser): -@@ -207,10 +209,6 @@ class DebugRestoreCommand(dnf.cli.Command): - - self.process_dump(dump_pkgs, self.opts) - -- if not self.opts.output: -- self.base.resolve() -- self.base.do_transaction() -- - def process_installed(self, dump_pkgs, opts): - installed = self.base.sack.query().installed() - installonly_pkgs = self.base._get_installonly_query(installed) --- -2.25.4 - diff --git a/SOURCES/0003-reposync-Check-GPG-signatures-of-downloaded-packages-RhBug-1856818.patch b/SOURCES/0003-reposync-Check-GPG-signatures-of-downloaded-packages-RhBug-1856818.patch new file mode 100644 index 0000000..45cc285 --- /dev/null +++ b/SOURCES/0003-reposync-Check-GPG-signatures-of-downloaded-packages-RhBug-1856818.patch @@ -0,0 +1,194 @@ +From a4f21266a6dab9e77913d56c04aba1e579f0e0c1 Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Fri, 23 Oct 2020 09:06:35 +0200 +Subject: [PATCH 1/2] [reposync] Reorder options alphabetically + +--- + doc/reposync.rst | 30 +++++++++++++++--------------- + plugins/reposync.py | 18 +++++++++--------- + 2 files changed, 24 insertions(+), 24 deletions(-) + +diff --git a/doc/reposync.rst b/doc/reposync.rst +index 71a435dc..3b820f33 100644 +--- a/doc/reposync.rst ++++ b/doc/reposync.rst +@@ -39,36 +39,36 @@ Options + + All general DNF options are accepted. Namely, the ``--repoid`` option can be used to specify the repositories to synchronize. See `Options` in :manpage:`dnf(8)` for details. + +-``-p , --download-path=`` +- Root path under which the downloaded repositories are stored, relative to the current working directory. Defaults to the current working directory. Every downloaded repository has a subdirectory named after its ID under this path. +- +-``--norepopath`` +- Don't add the reponame to the download path. Can only be used when syncing a single repository (default is to add the reponame). +- +-``--download-metadata`` +- Download all repository metadata. Downloaded copy is instantly usable as a repository, no need to run createrepo_c on it. +- + ``-a , --arch=`` + Download only packages of given architectures (default is all architectures). Can be used multiple times. + +-``--source`` +- Operate on source packages. ++``--delete`` ++ Delete local packages no longer present in repository. ++ ++``--download-metadata`` ++ Download all repository metadata. Downloaded copy is instantly usable as a repository, no need to run createrepo_c on it. + + ``-m, --downloadcomps`` + Also download and uncompress comps.xml. Consider using ``--download-metadata`` option which will download all available repository metadata. + ++``--metadata-path`` ++ Root path under which the downloaded metadata are stored. It defaults to ``--download-path`` value if not given. ++ + ``-n, --newest-only`` + Download only newest packages per-repo. + +-``--delete`` +- Delete local packages no longer present in repository. ++``--norepopath`` ++ Don't add the reponame to the download path. Can only be used when syncing a single repository (default is to add the reponame). + +-``--metadata-path`` +- Root path under which the downloaded metadata are stored. It defaults to ``--download-path`` value if not given. ++``-p , --download-path=`` ++ Root path under which the downloaded repositories are stored, relative to the current working directory. Defaults to the current working directory. Every downloaded repository has a subdirectory named after its ID under this path. + + ``--remote-time`` + Try to set the timestamps of the downloaded files to those on the remote side. + ++``--source`` ++ Operate on source packages. ++ + ``-u, --urls`` + Just print urls of what would be downloaded, don't download. + +diff --git a/plugins/reposync.py b/plugins/reposync.py +index 7556e7eb..6f572cac 100644 +--- a/plugins/reposync.py ++++ b/plugins/reposync.py +@@ -63,24 +63,24 @@ def set_argparser(parser): + help=_('download only packages for this ARCH')) + parser.add_argument('--delete', default=False, action='store_true', + help=_('delete local packages no longer present in repository')) +- parser.add_argument('-m', '--downloadcomps', default=False, action='store_true', +- help=_('also download and uncompress comps.xml')) + parser.add_argument('--download-metadata', default=False, action='store_true', + help=_('download all the metadata.')) ++ parser.add_argument('-m', '--downloadcomps', default=False, action='store_true', ++ help=_('also download and uncompress comps.xml')) ++ parser.add_argument('--metadata-path', ++ help=_('where to store downloaded repository metadata. ' ++ 'Defaults to the value of --download-path.')) + parser.add_argument('-n', '--newest-only', default=False, action='store_true', + help=_('download only newest packages per-repo')) +- parser.add_argument('-p', '--download-path', default='./', +- help=_('where to store downloaded repositories')) + parser.add_argument('--norepopath', default=False, action='store_true', + help=_("Don't add the reponame to the download path.")) +- parser.add_argument('--metadata-path', +- help=_('where to store downloaded repository metadata. ' +- 'Defaults to the value of --download-path.')) +- parser.add_argument('--source', default=False, action='store_true', +- help=_('operate on source packages')) ++ parser.add_argument('-p', '--download-path', default='./', ++ help=_('where to store downloaded repositories')) + parser.add_argument('--remote-time', default=False, action='store_true', + help=_('try to set local timestamps of local files by ' + 'the one on the server')) ++ parser.add_argument('--source', default=False, action='store_true', ++ help=_('operate on source packages')) + parser.add_argument('-u', '--urls', default=False, action='store_true', + help=_("Just list urls of what would be downloaded, " + "don't download")) + +From 978b7f2b1c654fed7b1b4cf45cb607143226804c Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Fri, 23 Oct 2020 09:14:02 +0200 +Subject: [PATCH 2/2] [reposync] Check GPG signatures of downloaded packages + (RhBug:1856818) + +YUMv3 reposync used to have --gpgcheck option to remove packages that fail GPG +signature checking after downloading. +This patch implements the option for DNF. + += changelog = +msg: Add --gpgcheck option to reposync (RhBug:1856818) +type: enhancement +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1856818 +--- + doc/reposync.rst | 4 ++++ + plugins/reposync.py | 21 +++++++++++++++++++++ + 2 files changed, 25 insertions(+) + +diff --git a/doc/reposync.rst b/doc/reposync.rst +index 3b820f33..de40957f 100644 +--- a/doc/reposync.rst ++++ b/doc/reposync.rst +@@ -48,6 +48,10 @@ All general DNF options are accepted. Namely, the ``--repoid`` option can be use + ``--download-metadata`` + Download all repository metadata. Downloaded copy is instantly usable as a repository, no need to run createrepo_c on it. + ++``-g, --gpgcheck`` ++ Remove packages that fail GPG signature checking after downloading. Exit code is ``1`` if at least one package was removed. ++ Note that for repositories with ``gpgcheck=0`` set in their configuration the GPG signature is not checked even with this option used. ++ + ``-m, --downloadcomps`` + Also download and uncompress comps.xml. Consider using ``--download-metadata`` option which will download all available repository metadata. + +diff --git a/plugins/reposync.py b/plugins/reposync.py +index 6f572cac..c891bfa2 100644 +--- a/plugins/reposync.py ++++ b/plugins/reposync.py +@@ -24,6 +24,7 @@ + import hawkey + import os + import shutil ++import types + + from dnfpluginscore import _, logger + from dnf.cli.option_parser import OptionParser +@@ -65,6 +66,9 @@ def set_argparser(parser): + help=_('delete local packages no longer present in repository')) + parser.add_argument('--download-metadata', default=False, action='store_true', + help=_('download all the metadata.')) ++ parser.add_argument('-g', '--gpgcheck', default=False, action='store_true', ++ help=_('Remove packages that fail GPG signature checking ' ++ 'after downloading')) + parser.add_argument('-m', '--downloadcomps', default=False, action='store_true', + help=_('also download and uncompress comps.xml')) + parser.add_argument('--metadata-path', +@@ -114,6 +118,7 @@ def configure(self): + + def run(self): + self.base.conf.keepcache = True ++ gpgcheck_ok = True + for repo in self.base.repos.iter_enabled(): + if self.opts.remote_time: + repo._repo.setPreserveRemoteTime(True) +@@ -150,8 +155,24 @@ def run(self): + self.print_urls(pkglist) + else: + self.download_packages(pkglist) ++ if self.opts.gpgcheck: ++ for pkg in pkglist: ++ local_path = self.pkg_download_path(pkg) ++ # base.package_signature_check uses pkg.localPkg() to determine ++ # the location of the package rpm file on the disk. ++ # Set it to the correct download path. ++ pkg.localPkg = types.MethodType( ++ lambda s, local_path=local_path: local_path, pkg) ++ result, error = self.base.package_signature_check(pkg) ++ if result != 0: ++ logger.warning(_("Removing {}: {}").format( ++ os.path.basename(local_path), error)) ++ os.unlink(local_path) ++ gpgcheck_ok = False + if self.opts.delete: + self.delete_old_local_packages(repo, pkglist) ++ if not gpgcheck_ok: ++ raise dnf.exceptions.Error(_("GPG signature check failed.")) + + def repo_target(self, repo): + return _pkgdir(self.opts.destdir or self.opts.download_path, diff --git a/SOURCES/0004-Reorder-options-in-dnf-debug-man-page-alphabetically.patch b/SOURCES/0004-Reorder-options-in-dnf-debug-man-page-alphabetically.patch deleted file mode 100644 index 2f883a4..0000000 --- a/SOURCES/0004-Reorder-options-in-dnf-debug-man-page-alphabetically.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 9fc9615a07cb314edca953ab71caec27b53fac6d Mon Sep 17 00:00:00 2001 -From: Marek Blaha -Date: Thu, 2 Jul 2020 14:29:18 +0200 -Subject: [PATCH 4/5] Reorder options in dnf-debug man page alphabetically - ---- - doc/debug.rst | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/doc/debug.rst b/doc/debug.rst -index 13ac071..ee9860f 100644 ---- a/doc/debug.rst -+++ b/doc/debug.rst -@@ -57,16 +57,16 @@ All general DNF options are accepted, see `Options` in :manpage:`dnf(8)` for det - - ``dnf debug-restore`` - --``--output`` -- Only output list of packages which will be installed or removed. -- No actuall changes are done. -- --``--install-latest`` -- When installing use the latest package of the same name and architecture. -+``--filter-types=[install,remove,replace]`` -+ Limit package changes to specified type. - - ``--ignore-arch`` - When installing package ignore architecture and install missing packages - matching the name, epoch, version and release. - --``--filter-types=[install,remove,replace]`` -- Limit package changes to specified type. -+``--install-latest`` -+ When installing use the latest package of the same name and architecture. -+ -+``--output`` -+ Only output list of packages which will be installed or removed. -+ No actuall changes are done. --- -2.25.4 - diff --git a/SOURCES/0004-Update-translations.patch b/SOURCES/0004-Update-translations.patch new file mode 100644 index 0000000..4572853 --- /dev/null +++ b/SOURCES/0004-Update-translations.patch @@ -0,0 +1,2743 @@ +From ffce18035e04a92d482bf775b450df2dadcbe19b Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Mon, 8 Mar 2021 15:51:24 +0100 +Subject: [PATCH] Update translations + +--- + po/CMakeLists.txt | 1 + + po/dnf-plugins-core.pot | 199 ++++++++++++++++---- + po/fr.po | 221 ++++++++++++++++++---- + po/ja.po | 405 ++++++++++++++++++++++++++++------------ + po/ko.po | 214 +++++++++++++++++---- + po/zh_CN.po | 402 +++++++++++++++++++++++++++------------ + 6 files changed, 1095 insertions(+), 347 deletions(-) + +diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt +index 4f106fc..1ef5055 100644 +--- a/po/CMakeLists.txt ++++ b/po/CMakeLists.txt +@@ -15,6 +15,7 @@ if (GIT_FOUND) + OUTPUT_VARIABLE CURRENT_BRANCH + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) ++ set(CURRENT_BRANCH "rhel-8") + + # output _weblate-clone is never created so the clonning of weblate repo is always processed + # and fresh *.po files are used +diff --git a/po/dnf-plugins-core.pot b/po/dnf-plugins-core.pot +index 7cd717e..f796147 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: 2020-10-05 09:18-0400\n" ++"POT-Creation-Date: 2021-02-22 10:06+0100\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -560,7 +560,7 @@ msgstr "" + msgid "when running with --url, limit to specific protocols" + msgstr "" + +-#: plugins/download.py:121 plugins/reposync.py:293 ++#: plugins/download.py:121 plugins/reposync.py:314 + #, python-format + msgid "Failed to get mirror for package: %s" + msgstr "" +@@ -583,6 +583,120 @@ msgstr "" + msgid "No package %s available." + msgstr "" + ++#: plugins/groups_manager.py:49 ++msgid "Invalid group id" ++msgstr "" ++ ++#: plugins/groups_manager.py:58 ++msgid "Invalid translated data, should be in form 'lang:text'" ++msgstr "" ++ ++#: plugins/groups_manager.py:61 ++msgid "Invalid/empty language for translated data" ++msgstr "" ++ ++#: plugins/groups_manager.py:71 ++msgid "Can't generate group id from '{}'. Please specify group id using --id." ++msgstr "" ++ ++#: plugins/groups_manager.py:79 ++msgid "create and edit groups metadata file" ++msgstr "" ++ ++#: plugins/groups_manager.py:90 ++msgid "load groups metadata from file" ++msgstr "" ++ ++#: plugins/groups_manager.py:93 ++msgid "save groups metadata to file" ++msgstr "" ++ ++#: plugins/groups_manager.py:95 ++msgid "load and save groups metadata to file" ++msgstr "" ++ ++#: plugins/groups_manager.py:97 ++msgid "print the result metadata to stdout" ++msgstr "" ++ ++#: plugins/groups_manager.py:100 ++msgid "group id" ++msgstr "" ++ ++#: plugins/groups_manager.py:101 ++msgid "group name" ++msgstr "" ++ ++#: plugins/groups_manager.py:103 ++msgid "group description" ++msgstr "" ++ ++#: plugins/groups_manager.py:105 ++msgid "group display order" ++msgstr "" ++ ++#: plugins/groups_manager.py:108 ++msgid "translated name for the group" ++msgstr "" ++ ++#: plugins/groups_manager.py:111 ++msgid "translated description for the group" ++msgstr "" ++ ++#: plugins/groups_manager.py:115 ++msgid "make the group user visible (default)" ++msgstr "" ++ ++#: plugins/groups_manager.py:118 ++msgid "make the group user invisible" ++msgstr "" ++ ++#: plugins/groups_manager.py:123 ++msgid "add packages to the mandatory section" ++msgstr "" ++ ++#: plugins/groups_manager.py:125 ++msgid "add packages to the optional section" ++msgstr "" ++ ++#: plugins/groups_manager.py:127 ++msgid "remove packages from the group instead of adding them" ++msgstr "" ++ ++#: plugins/groups_manager.py:129 ++msgid "include also direct dependencies for packages" ++msgstr "" ++ ++#: plugins/groups_manager.py:132 ++msgid "package specification" ++msgstr "" ++ ++#: plugins/groups_manager.py:156 ++msgid "Can't edit group without specifying it (use --id or --name)" ++msgstr "" ++ ++#: plugins/groups_manager.py:190 ++msgid "Can't load file \"{}\": {}" ++msgstr "" ++ ++#: plugins/groups_manager.py:206 ++msgid "Can't save file \"{}\": {}" ++msgstr "" ++ ++#: plugins/groups_manager.py:259 ++msgid "No match for argument: {}" ++msgstr "" ++ ++#: plugins/groups_manager.py:296 ++msgid "Can't remove packages from non-existent group" ++msgstr "" ++ ++#: plugins/groups_manager.py:305 ++msgid "" ++"Group id '{}' generated from '{}' is duplicit. Please specify group id using " ++"--id." ++msgstr "" ++ + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" + msgstr "" +@@ -615,43 +729,47 @@ msgstr "" + msgid "Migrating history data..." + msgstr "" + +-#: plugins/needs_restarting.py:65 ++#: plugins/needs_restarting.py:66 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." + msgstr "" + +-#: plugins/needs_restarting.py:199 ++#: plugins/needs_restarting.py:224 + msgid "determine updated binaries that need restarting" + msgstr "" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:229 + msgid "only consider this user's processes" + msgstr "" + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:231 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" + msgstr "" + +-#: plugins/needs_restarting.py:230 ++#: plugins/needs_restarting.py:234 ++msgid "only report affected systemd services" ++msgstr "" ++ ++#: plugins/needs_restarting.py:257 + msgid "Core libraries or services have been updated since boot-up:" + msgstr "" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:262 + msgid "Reboot is required to fully utilize these updates." + msgstr "" + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:263 + msgid "More information:" + msgstr "" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:267 + msgid "No core libraries or services have been updated since boot-up." + msgstr "" + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:269 + msgid "Reboot should not be necessary." + msgstr "" + +@@ -871,84 +989,96 @@ msgstr "" + msgid "Path to directory" + msgstr "" + +-#: plugins/reposync.py:54 ++#: plugins/reposync.py:55 + msgid "download all packages from remote repo" + msgstr "" + +-#: plugins/reposync.py:63 ++#: plugins/reposync.py:64 + msgid "download only packages for this ARCH" + msgstr "" + +-#: plugins/reposync.py:65 ++#: plugins/reposync.py:66 + msgid "delete local packages no longer present in repository" + msgstr "" + +-#: plugins/reposync.py:67 +-msgid "also download and uncompress comps.xml" +-msgstr "" +- +-#: plugins/reposync.py:69 ++#: plugins/reposync.py:68 + msgid "download all the metadata." + msgstr "" + +-#: plugins/reposync.py:71 +-msgid "download only newest packages per-repo" ++#: plugins/reposync.py:70 ++msgid "Remove packages that fail GPG signature checking after downloading" + msgstr "" + + #: plugins/reposync.py:73 +-msgid "where to store downloaded repositories" ++msgid "also download and uncompress comps.xml" + msgstr "" + + #: plugins/reposync.py:75 +-msgid "Don't add the reponame to the download path." +-msgstr "" +- +-#: plugins/reposync.py:77 + msgid "" + "where to store downloaded repository metadata. Defaults to the value of --" + "download-path." + msgstr "" + ++#: plugins/reposync.py:78 ++msgid "download only newest packages per-repo" ++msgstr "" ++ + #: plugins/reposync.py:80 +-msgid "operate on source packages" ++msgid "Don't add the reponame to the download path." + msgstr "" + + #: plugins/reposync.py:82 ++msgid "where to store downloaded repositories" ++msgstr "" ++ ++#: plugins/reposync.py:84 + msgid "try to set local timestamps of local files by the one on the server" + msgstr "" + +-#: plugins/reposync.py:85 ++#: plugins/reposync.py:87 ++msgid "operate on source packages" ++msgstr "" ++ ++#: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" + msgstr "" + +-#: plugins/reposync.py:109 ++#: plugins/reposync.py:113 + msgid "Can't use --norepopath with multiple repositories" + msgstr "" + +-#: plugins/reposync.py:127 ++#: plugins/reposync.py:132 + #, python-format + msgid "Failed to get mirror for metadata: %s" + msgstr "" + +-#: plugins/reposync.py:144 ++#: plugins/reposync.py:149 + msgid "Failed to get mirror for the group file." + msgstr "" + ++#: plugins/reposync.py:168 ++msgid "Removing {}: {}" ++msgstr "" ++ + #: plugins/reposync.py:175 ++msgid "GPG signature check failed." ++msgstr "" ++ ++#: plugins/reposync.py:196 + msgid "Download target '{}' is outside of download path '{}'." + msgstr "" + +-#: plugins/reposync.py:190 ++#: plugins/reposync.py:211 + #, python-format + msgid "[DELETED] %s" + msgstr "" + +-#: plugins/reposync.py:192 ++#: plugins/reposync.py:213 + #, python-format + msgid "failed to delete file %s" + msgstr "" + +-#: plugins/reposync.py:201 ++#: plugins/reposync.py:222 + #, python-format + msgid "comps.xml for repository %s saved" + msgstr "" +@@ -1018,3 +1148,4 @@ msgstr "" + #: plugins/versionlock.py:136 + msgid "Use package specifications as they are, do not try to parse them" + msgstr "" ++ +diff --git a/po/fr.po b/po/fr.po +index dfa06ad..d47761a 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -6,20 +6,21 @@ + # Ludek Janda , 2018. #zanata + # Jean-Baptiste Holcroft , 2019. #zanata, 2020. + # Julien Humbert , 2020. ++# Sundeep Anand , 2021. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-07-09 13:27+0000\n" +-"Last-Translator: Julien Humbert \n" +-"Language-Team: French \n" ++"POT-Creation-Date: 2021-02-22 10:06+0100\n" ++"PO-Revision-Date: 2021-03-08 11:08+0000\n" ++"Last-Translator: Sundeep Anand \n" ++"Language-Team: French \n" + "Language: fr\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=n > 1;\n" +-"X-Generator: Weblate 4.1.1\n" ++"X-Generator: Weblate 4.5.1\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +@@ -642,7 +643,7 @@ msgstr "" + msgid "when running with --url, limit to specific protocols" + msgstr "si --url est renseigné, limite aux protocoles spécifiés" + +-#: plugins/download.py:121 plugins/reposync.py:293 ++#: plugins/download.py:121 plugins/reposync.py:314 + #, python-format + msgid "Failed to get mirror for package: %s" + msgstr "Échec de l’obtention du miroir pour le paquet : %s" +@@ -665,6 +666,126 @@ msgstr "Aucune source définie pour %s" + msgid "No package %s available." + msgstr "Aucun paquet %s n’est disponible." + ++#: plugins/groups_manager.py:49 ++msgid "Invalid group id" ++msgstr "ID de groupe non valide" ++ ++#: plugins/groups_manager.py:58 ++msgid "Invalid translated data, should be in form 'lang:text'" ++msgstr "" ++"Les données traduites non valides doivent être sous la forme \"lang:text\"" ++ ++#: plugins/groups_manager.py:61 ++msgid "Invalid/empty language for translated data" ++msgstr "Langue non valable/vide pour les données traduites" ++ ++#: plugins/groups_manager.py:71 ++msgid "Can't generate group id from '{}'. Please specify group id using --id." ++msgstr "" ++"Impossible de générer un id de groupe à partir de '{}'. Veuillez spécifier " ++"l'id du groupe en utilisant --id." ++ ++#: plugins/groups_manager.py:79 ++msgid "create and edit groups metadata file" ++msgstr "créer et modifier le fichier de métadonnées des groupes" ++ ++#: plugins/groups_manager.py:90 ++msgid "load groups metadata from file" ++msgstr "charger les groupes de métadonnées du fichier" ++ ++#: plugins/groups_manager.py:93 ++msgid "save groups metadata to file" ++msgstr "enregistrer les métadonnées des groupes dans un fichier" ++ ++#: plugins/groups_manager.py:95 ++msgid "load and save groups metadata to file" ++msgstr "charger et enregistrer les métadonnées des groupes dans un fichier" ++ ++#: plugins/groups_manager.py:97 ++msgid "print the result metadata to stdout" ++msgstr "imprimer les métadonnées de résultat sur stdout" ++ ++#: plugins/groups_manager.py:100 ++msgid "group id" ++msgstr "id groupe" ++ ++#: plugins/groups_manager.py:101 ++msgid "group name" ++msgstr "nom du groupe" ++ ++#: plugins/groups_manager.py:103 ++msgid "group description" ++msgstr "description du groupe" ++ ++#: plugins/groups_manager.py:105 ++msgid "group display order" ++msgstr "ordre d'affichage des groupes" ++ ++#: plugins/groups_manager.py:108 ++msgid "translated name for the group" ++msgstr "nom traduit pour le groupe" ++ ++#: plugins/groups_manager.py:111 ++msgid "translated description for the group" ++msgstr "description traduite pour le groupe" ++ ++#: plugins/groups_manager.py:115 ++msgid "make the group user visible (default)" ++msgstr "rendre l'utilisateur du groupe visible (par défaut)" ++ ++#: plugins/groups_manager.py:118 ++msgid "make the group user invisible" ++msgstr "rendre l'utilisateur du groupe invisible" ++ ++#: plugins/groups_manager.py:123 ++msgid "add packages to the mandatory section" ++msgstr "ajouter des paquets à la section obligatoire" ++ ++#: plugins/groups_manager.py:125 ++msgid "add packages to the optional section" ++msgstr "ajouter des paquets à la section facultative" ++ ++#: plugins/groups_manager.py:127 ++msgid "remove packages from the group instead of adding them" ++msgstr "retirer des paquets du groupe au lieu de les ajouter" ++ ++#: plugins/groups_manager.py:129 ++msgid "include also direct dependencies for packages" ++msgstr "inclure également les dépendances directes pour les paquets" ++ ++#: plugins/groups_manager.py:132 ++msgid "package specification" ++msgstr "caractéristiques du paquet" ++ ++#: plugins/groups_manager.py:156 ++msgid "Can't edit group without specifying it (use --id or --name)" ++msgstr "" ++"Impossible de modifier le groupe sans le spécifier (utiliser --id ou --name)" ++ ++#: plugins/groups_manager.py:190 ++msgid "Can't load file \"{}\": {}" ++msgstr "Impossible de charger le fichier \"{}\" : {}" ++ ++#: plugins/groups_manager.py:206 ++msgid "Can't save file \"{}\": {}" ++msgstr "Impossible d'enregistrer le fichier \"{}\" : {}" ++ ++#: plugins/groups_manager.py:259 ++msgid "No match for argument: {}" ++msgstr "Aucune correspondance pour l’argument : {}" ++ ++#: plugins/groups_manager.py:296 ++msgid "Can't remove packages from non-existent group" ++msgstr "Impossible de retirer des paquets d'un groupe inexistant" ++ ++#: plugins/groups_manager.py:305 ++msgid "" ++"Group id '{}' generated from '{}' is duplicit. Please specify group id using" ++" --id." ++msgstr "" ++"L'identifiant de groupe '{}' généré à partir de '{}' est redondant. Veuillez" ++" spécifier l'identifiant du groupe en utilisant --id." ++ + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" + msgstr "" +@@ -698,7 +819,7 @@ msgstr "migrer les données d’historique, de groupe et de yumdb, vers dnf" + msgid "Migrating history data..." + msgstr "Migration des données d’historique …" + +-#: plugins/needs_restarting.py:65 ++#: plugins/needs_restarting.py:66 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" +@@ -707,44 +828,48 @@ msgstr "" + "Aucun paquet installé trouvé pour le nom de paquet « {pkg} » spécifié dans " + "needs-restarting du fichier « {file} »." + +-#: plugins/needs_restarting.py:199 ++#: plugins/needs_restarting.py:224 + msgid "determine updated binaries that need restarting" + msgstr "détermine les binaires mis à jour qui nécessitent un redémarrage" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:229 + msgid "only consider this user's processes" + msgstr "considère uniquement les processus de cet utilisateur" + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:231 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" + msgstr "" + "indique uniquement si un démarrage (reboot) est requis (exit code 1) ou non " + "(exit code 0)" + +-#: plugins/needs_restarting.py:230 ++#: plugins/needs_restarting.py:234 ++msgid "only report affected systemd services" ++msgstr "ne signaler que les services systémiques concernés" ++ ++#: plugins/needs_restarting.py:257 + msgid "Core libraries or services have been updated since boot-up:" + msgstr "" + "les bibliothèques et les services de base ont été mis à jour depuis le " + "démarrage (boot-up) :" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:262 + msgid "Reboot is required to fully utilize these updates." + msgstr "" + "Un nouveau démarrage est requis pour pouvoir bénéficier totalement de ces " + "mises à jour." + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:263 + msgid "More information:" + msgstr "Plus d’information :" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:267 + msgid "No core libraries or services have been updated since boot-up." + msgstr "" + "Aucune bibliothèque ou service de base n’a été mis à jour depuis le " + "démarrage." + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:269 + msgid "Reboot should not be necessary." + msgstr "Un nouveau démarrage ne devrait pas être utile." + +@@ -981,39 +1106,33 @@ msgstr "N paquets les plus récents à conserver — par défaut 1" + msgid "Path to directory" + msgstr "Chemin vers le répertoire" + +-#: plugins/reposync.py:54 ++#: plugins/reposync.py:55 + msgid "download all packages from remote repo" + msgstr "télécharger tous les paquets depuis le dépôt distant" + +-#: plugins/reposync.py:63 ++#: plugins/reposync.py:64 + msgid "download only packages for this ARCH" + msgstr "télécharger seulement les paquets s’appliquant à cette ARCH" + +-#: plugins/reposync.py:65 ++#: plugins/reposync.py:66 + msgid "delete local packages no longer present in repository" + msgstr "supprimer les paquets locaux qui ne sont plus présents dans le dépôt" + +-#: plugins/reposync.py:67 +-msgid "also download and uncompress comps.xml" +-msgstr "également télécharger et décompresser comps.xml" +- +-#: plugins/reposync.py:69 ++#: plugins/reposync.py:68 + msgid "download all the metadata." + msgstr "télécharger toutes les métadonnées." + +-#: plugins/reposync.py:71 +-msgid "download only newest packages per-repo" +-msgstr "ne télécharger que les nouveaux paquets per-rep" ++#: plugins/reposync.py:70 ++msgid "Remove packages that fail GPG signature checking after downloading" ++msgstr "" ++"Supprimer les paquets qui échouent à la vérification de la signature GPG " ++"après le téléchargement" + + #: plugins/reposync.py:73 +-msgid "where to store downloaded repositories" +-msgstr "lieu où stocker les dépôts téléchargés" ++msgid "also download and uncompress comps.xml" ++msgstr "également télécharger et décompresser comps.xml" + + #: plugins/reposync.py:75 +-msgid "Don't add the reponame to the download path." +-msgstr "N’ajoutez pas le nom du dépôt dans le chemin de téléchargement." +- +-#: plugins/reposync.py:77 + msgid "" + "where to store downloaded repository metadata. Defaults to the value of " + "--download-path." +@@ -1021,51 +1140,71 @@ msgstr "" + "là où stocker les métadonnées du dépôt. Prend par défaut la valeur de " + "--download-path." + ++#: plugins/reposync.py:78 ++msgid "download only newest packages per-repo" ++msgstr "ne télécharger que les nouveaux paquets per-rep" ++ + #: plugins/reposync.py:80 +-msgid "operate on source packages" +-msgstr "opère sur les paquets source" ++msgid "Don't add the reponame to the download path." ++msgstr "N’ajoutez pas le nom du dépôt dans le chemin de téléchargement." + + #: plugins/reposync.py:82 ++msgid "where to store downloaded repositories" ++msgstr "lieu où stocker les dépôts téléchargés" ++ ++#: plugins/reposync.py:84 + msgid "try to set local timestamps of local files by the one on the server" + msgstr "" + "essayez de définir les horodatages locaux des fichiers locaux par celui du " + "serveur" + +-#: plugins/reposync.py:85 ++#: plugins/reposync.py:87 ++msgid "operate on source packages" ++msgstr "opère sur les paquets source" ++ ++#: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" + msgstr "" + "Uniquement lister les URL qui seraient téléchargées, ne pas télécharger" + +-#: plugins/reposync.py:109 ++#: plugins/reposync.py:113 + msgid "Can't use --norepopath with multiple repositories" + msgstr "Impossible d’utiliser --norepopath avec de multiples dépôts" + +-#: plugins/reposync.py:127 ++#: plugins/reposync.py:132 + #, python-format + msgid "Failed to get mirror for metadata: %s" + msgstr "Échec de l’obtention du miroir pour les métadonnées : %s" + +-#: plugins/reposync.py:144 ++#: plugins/reposync.py:149 + msgid "Failed to get mirror for the group file." + msgstr "Échec de l’obtention du miroir pour le fichier de groupe." + ++#: plugins/reposync.py:168 ++msgid "Removing {}: {}" ++msgstr "Suppression {}: {}" ++ + #: plugins/reposync.py:175 ++msgid "GPG signature check failed." ++msgstr "La vérification de la signature du GPG a échoué." ++ ++#: plugins/reposync.py:196 + msgid "Download target '{}' is outside of download path '{}'." + msgstr "" + "La cible de téléchargement « {} » est en dehors du chemin de téléchargement " + "« {} »." + +-#: plugins/reposync.py:190 ++#: plugins/reposync.py:211 + #, python-format + msgid "[DELETED] %s" + msgstr "[DELETED] %s" + +-#: plugins/reposync.py:192 ++#: plugins/reposync.py:213 + #, python-format + msgid "failed to delete file %s" + msgstr "n’a pas pu supprimer le fichier %s" + +-#: plugins/reposync.py:201 ++#: plugins/reposync.py:222 + #, python-format + msgid "comps.xml for repository %s saved" + msgstr "comps.xml pour le dépôt %s sauvegardé" +diff --git a/po/ja.po b/po/ja.po +index 5e443ec..663b522 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -1,20 +1,21 @@ + # Ooyama Yosiyuki , 2015. #zanata + # Ludek Janda , 2018. #zanata + # Casey Jones , 2020. ++# Sundeep Anand , 2021. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-05-04 06:40+0000\n" +-"Last-Translator: Casey Jones \n" +-"Language-Team: Japanese \n" ++"POT-Creation-Date: 2021-02-22 10:06+0100\n" ++"PO-Revision-Date: 2021-03-08 11:08+0000\n" ++"Last-Translator: Sundeep Anand \n" ++"Language-Team: Japanese \n" + "Language: ja\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.0.3\n" ++"X-Generator: Weblate 4.5.1\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +@@ -35,7 +36,7 @@ msgstr "スペックファイルの解析にマクロを定義" + + #: plugins/builddep.py:95 + msgid "skip build dependencies not available in repositories" +-msgstr "" ++msgstr "リポジトリーで利用できないビルドの依存関係をスキップします" + + #: plugins/builddep.py:98 + msgid "treat commandline arguments as spec files" +@@ -83,31 +84,32 @@ msgstr "一致するパッケージはありません: %s" + #: plugins/changelog.py:37 + #, python-brace-format + msgid "Not a valid date: \"{0}\"." +-msgstr "" ++msgstr "有効な日付ではありません: \"{0}\"。" + + #: plugins/changelog.py:43 + msgid "Show changelog data of packages" +-msgstr "" ++msgstr "パッケージの changelog データを表示します" + + #: plugins/changelog.py:51 + msgid "" + "show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " + "is recommended." +-msgstr "" ++msgstr "DATE 以降の changelog エントリーを表示します。不明瞭さを避けるため、YYYY-MM-DD のフォーマットが推奨されます。" + + #: plugins/changelog.py:55 + msgid "show given number of changelog entries per package" +-msgstr "" ++msgstr "パッケージごとの changelog エントリーの与えられた数を表示します" + + #: plugins/changelog.py:58 + msgid "" + "show only new changelog entries for packages, that provide an upgrade for " + "some of already installed packages." + msgstr "" ++"パッケージ向けの新しい changelog エントリーのみを表示します。これは、インストール済みのパッケージの一部にアップグレードを提供します。" + + #: plugins/changelog.py:60 + msgid "PACKAGE" +-msgstr "" ++msgstr "パッケージ" + + #: plugins/changelog.py:81 plugins/debuginfo-install.py:90 + #, python-format +@@ -116,20 +118,20 @@ msgstr "一致した引数がありません: %s" + + #: plugins/changelog.py:109 + msgid "Listing changelogs since {}" +-msgstr "" ++msgstr "{} 以降の changelogs を一覧表示します" + + #: plugins/changelog.py:111 + msgid "Listing only latest changelog" + msgid_plural "Listing {} latest changelogs" +-msgstr[0] "" ++msgstr[0] "最新の changelog のみを一覧表示します" + + #: plugins/changelog.py:116 + msgid "Listing only new changelogs since installed version of the package" +-msgstr "" ++msgstr "パッケージのインストールされたバージョン以降の新しい changelogs のみを一覧表示します" + + #: plugins/changelog.py:118 + msgid "Listing all changelogs" +-msgstr "" ++msgstr "すべての changelogs を一覧表示します" + + #: plugins/changelog.py:122 + msgid "Changelogs for {}" +@@ -138,7 +140,7 @@ msgstr "{} の Changelogs" + #: plugins/config_manager.py:37 + #, python-brace-format + msgid "manage {prog} configuration options and repositories" +-msgstr "" ++msgstr "{prog} 設定オプションおよびリポジトリーを管理します" + + #: plugins/config_manager.py:44 + msgid "repo to modify" +@@ -162,21 +164,23 @@ msgstr "stdout に変数値を印刷" + + #: plugins/config_manager.py:60 + msgid "enable repos (automatically saves)" +-msgstr "" ++msgstr "レポを有効にする (自動保存)" + + #: plugins/config_manager.py:63 + msgid "disable repos (automatically saves)" +-msgstr "" ++msgstr "レポを無効にする (自動保存)" + + #: plugins/config_manager.py:77 + msgid "one of the following arguments is required: {}" +-msgstr "" ++msgstr "以下のいずれかの引数が必要です。{}" + + #: plugins/config_manager.py:86 + msgid "" + "Warning: --enablerepo/--disablerepo arguments have no meaningwith config " + "manager. Use --set-enabled/--set-disabled instead." + msgstr "" ++"警告: --enablerepo/--disablerepo の引数は config manager では意味がありません。代わりに -set-" ++"enabled/--set-disabled を使用してください。" + + #: plugins/config_manager.py:131 + #, python-format +@@ -274,7 +278,7 @@ msgstr "利用可能な Copr リポジトリーをユーザー NAME ごとに一 + + #: plugins/copr.py:115 + msgid "Specify an instance of Copr to work with" +-msgstr "" ++msgstr "作業する Copr のインスタンスを指定します" + + #: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 + msgid "Error: " +@@ -285,10 +289,12 @@ msgid "" + "specify Copr hub either with `--hub` or using " + "`copr_hub/copr_username/copr_projectname` format" + msgstr "" ++"`--hub` または `copr_hub/copr_username/copr_projectname` フォーマットを使って、Copr " ++"ハブを指定します" + + #: plugins/copr.py:153 + msgid "multiple hubs specified" +-msgstr "" ++msgstr "複数のハブが指定されています" + + #: plugins/copr.py:218 plugins/copr.py:222 + msgid "exactly two additional parameters to copr command are required" +@@ -316,6 +322,17 @@ msgid "" + "Please do not file bug reports about these packages in Fedora\n" + "Bugzilla. In case of problems, contact the owner of this repository.\n" + msgstr "" ++"\n" ++"Copr リポジトリーを有効化しています。このリポジトリーは\n" ++"主要ディストリビューションの一部ではないため、品質が一定していない点に注意してください。\n" ++"\n" ++"Fedora Project は、このリポジトリーのコンテンツに関して、 の \n" ++"Copr FAQ で示されたルールを超えて権利を行使することは\n" ++"ありません。また、パッケージは、任意の品質またはセキュリ\n" ++"ティーレベルを固守していません。\n" ++"\n" ++"Fedora Bugzilla でこれらのパッケージに関するバグ報告をしないでください。\n" ++"問題が発生した場合は、このリポジトリーのオーナーに連絡してください。\n" + + #: plugins/copr.py:271 + msgid "Repository successfully enabled." +@@ -339,6 +356,8 @@ msgid "" + " about Copr hub - the default one was assumed. Re-enable the project to fix " + "this." + msgstr "" ++"* これらの coprs には、Copr ハブに関する情報がない古いフォーマットの repo " ++"ファイルがあります。デフォルトは仮定です。これを修正するには、プロジェクトを再度有効化してください。" + + #: plugins/copr.py:353 + msgid "Can't parse repositories for username '{}'." +@@ -397,19 +416,33 @@ msgid "" + "\n" + "These repositories have been enabled automatically." + msgstr "" ++"有効化した Copr リポジトリの管理者は\n" ++"他のリポジトリに依存するように決めました。\n" ++"そのようなリポジトリは主な Corp レジストリー\n" ++"ランタイム依存関係を提供) から RPM のインストールを\n" ++"成功させるために通常必要です。\n" ++"\n" ++"上記の品質とバグ報告についての注意点が\n" ++"ここでも適用されますが、Fedora Project は内容を\n" ++"管理していないことに注意してください。以下のリストを確認\n" ++"してください。\n" ++"\n" ++"{0}\n" ++"\n" ++"これらのリポジトリは自動的に有効になっています。" + + #: plugins/copr.py:549 + msgid "Do you want to keep them enabled?" +-msgstr "" ++msgstr "有効にしておきますか?" + + #: plugins/copr.py:582 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" +-msgstr "" ++msgstr "copr repo {0}/{1}/{2} の削除に失敗しました" + + #: plugins/copr.py:593 + msgid "Failed to disable copr repo {}/{}" +-msgstr "copr repo {}/{} の無効化に失敗しました。" ++msgstr "copr repo {}/{} の無効化に失敗しました" + + #: plugins/copr.py:611 plugins/copr.py:648 + msgid "Unknown response from server." +@@ -420,14 +453,12 @@ msgid "Interact with Playground repository." + msgstr "Playground リポジトリーとの対話。" + + #: plugins/copr.py:639 +-#, fuzzy +-#| msgid "Interact with Playground repository." + msgid "Enabling a Playground repository." +-msgstr "Playground リポジトリーとの対話。" ++msgstr "Playgroundのリポジトリーの有効化。" + + #: plugins/copr.py:640 + msgid "Do you want to continue?" +-msgstr "" ++msgstr "続行しますか?" + + #: plugins/copr.py:683 + msgid "Playground repositories successfully enabled." +@@ -484,7 +515,7 @@ msgstr "指定したタイプに限定します" + msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." +-msgstr "" ++msgstr "インストールのみのパッケージの削除を許可します。このオプションを使用すると、実行しているカーネルの削除を試みる可能性があります。" + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -508,25 +539,25 @@ msgstr "debuginfo パッケージのインストール" + #, python-format + msgid "" + "Could not find debuginfo package for the following available packages: %s" +-msgstr "" ++msgstr "次の利用可能なパッケージの debuginfo パッケージが見つかりませんでした: %s" + + #: plugins/debuginfo-install.py:185 + #, python-format + msgid "" + "Could not find debugsource package for the following available packages: %s" +-msgstr "" ++msgstr "次の利用可能なパッケージの debugsource パッケージが見つかりませんでした: %s" + + #: plugins/debuginfo-install.py:190 + #, python-format + msgid "" + "Could not find debuginfo package for the following installed packages: %s" +-msgstr "" ++msgstr "次のインストールされたパッケージの debuginfo パッケージが見つかりませんでした: %s" + + #: plugins/debuginfo-install.py:195 + #, python-format + msgid "" + "Could not find debugsource package for the following installed packages: %s" +-msgstr "" ++msgstr "次のインストールされたパッケージの debugsource パッケージが見つかりませんでした: %s" + + #: plugins/debuginfo-install.py:199 + msgid "Unable to find a match" +@@ -550,7 +581,7 @@ msgstr "代わりに -debuginfo パッケージをダウンロードします" + + #: plugins/download.py:57 + msgid "download the -debugsource package instead" +-msgstr "" ++msgstr "代わりに、-debugsource パッケージをダウンロードします" + + #: plugins/download.py:60 + msgid "limit the query to packages of given architectures." +@@ -564,7 +595,7 @@ msgstr "必要な依存関係を解決し、ダウンロードします" + msgid "" + "when running with --resolve, download all dependencies (do not exclude " + "already installed ones)" +-msgstr "" ++msgstr "--resolve で実行する場合、すべての依存関係をダウンロードします (インストール済みのものを除外しないでください)" + + #: plugins/download.py:67 + msgid "" +@@ -575,7 +606,7 @@ msgstr "ダウンロードする代わりに、rpm をダウンロードでき + msgid "when running with --url, limit to specific protocols" + msgstr "--url で実行中の際は、特定のプロトコルに限定します" + +-#: plugins/download.py:121 plugins/reposync.py:293 ++#: plugins/download.py:121 plugins/reposync.py:314 + #, python-format + msgid "Failed to get mirror for package: %s" + msgstr "パッケージのミラー取得に失敗しました: %s" +@@ -598,6 +629,120 @@ msgstr "%s に対して定義されているソース rpm はありません" + msgid "No package %s available." + msgstr "利用可能なパッケージ %s はありません。" + ++#: plugins/groups_manager.py:49 ++msgid "Invalid group id" ++msgstr "'無効なグループ ID" ++ ++#: plugins/groups_manager.py:58 ++msgid "Invalid translated data, should be in form 'lang:text'" ++msgstr "無効な翻訳データです。'lang:text' の形式で指定する必要があります" ++ ++#: plugins/groups_manager.py:61 ++msgid "Invalid/empty language for translated data" ++msgstr "翻訳されたデータの無効または空な言語" ++ ++#: plugins/groups_manager.py:71 ++msgid "Can't generate group id from '{}'. Please specify group id using --id." ++msgstr "'{}' からグループ ID を生成できません。--id を使用してグループ ID を指定してください。" ++ ++#: plugins/groups_manager.py:79 ++msgid "create and edit groups metadata file" ++msgstr "グループメタデータファイルの作成および編集" ++ ++#: plugins/groups_manager.py:90 ++msgid "load groups metadata from file" ++msgstr "ファイルからグループメタデータを読み込みます" ++ ++#: plugins/groups_manager.py:93 ++msgid "save groups metadata to file" ++msgstr "グループメタデータをファイルに保存します" ++ ++#: plugins/groups_manager.py:95 ++msgid "load and save groups metadata to file" ++msgstr "グループメタデータをファイルにロードして保存します" ++ ++#: plugins/groups_manager.py:97 ++msgid "print the result metadata to stdout" ++msgstr "生成されたメタデータを stdout に出力します" ++ ++#: plugins/groups_manager.py:100 ++msgid "group id" ++msgstr "グループ id" ++ ++#: plugins/groups_manager.py:101 ++msgid "group name" ++msgstr "グループ名" ++ ++#: plugins/groups_manager.py:103 ++msgid "group description" ++msgstr "グループ説明" ++ ++#: plugins/groups_manager.py:105 ++msgid "group display order" ++msgstr "グループ表示順序" ++ ++#: plugins/groups_manager.py:108 ++msgid "translated name for the group" ++msgstr "グループの翻訳名" ++ ++#: plugins/groups_manager.py:111 ++msgid "translated description for the group" ++msgstr "グループの翻訳説明" ++ ++#: plugins/groups_manager.py:115 ++msgid "make the group user visible (default)" ++msgstr "グループユーザーを表示させる (デフォルト)" ++ ++#: plugins/groups_manager.py:118 ++msgid "make the group user invisible" ++msgstr "グループユーザーを非表示の状態にする" ++ ++#: plugins/groups_manager.py:123 ++msgid "add packages to the mandatory section" ++msgstr "必須セクションへのパッケージの追加" ++ ++#: plugins/groups_manager.py:125 ++msgid "add packages to the optional section" ++msgstr "オプションセクションへのパッケージの追加" ++ ++#: plugins/groups_manager.py:127 ++msgid "remove packages from the group instead of adding them" ++msgstr "パッケージを追加する代わりに、グループからパッケージを削除します" ++ ++#: plugins/groups_manager.py:129 ++msgid "include also direct dependencies for packages" ++msgstr "リポジトリーの直接の依存関係を含みます" ++ ++#: plugins/groups_manager.py:132 ++msgid "package specification" ++msgstr "パッケージ仕様" ++ ++#: plugins/groups_manager.py:156 ++msgid "Can't edit group without specifying it (use --id or --name)" ++msgstr "指定せずにはグループを編集できません (--id または --name を使用してください)" ++ ++#: plugins/groups_manager.py:190 ++msgid "Can't load file \"{}\": {}" ++msgstr "ファイル '{}' を書き込みできません: {}" ++ ++#: plugins/groups_manager.py:206 ++msgid "Can't save file \"{}\": {}" ++msgstr "ファイル '{}' を保存できません: {}" ++ ++#: plugins/groups_manager.py:259 ++msgid "No match for argument: {}" ++msgstr "一致した引数がありません: {}" ++ ++#: plugins/groups_manager.py:296 ++msgid "Can't remove packages from non-existent group" ++msgstr "存在しないグループからパッケージを削除できません" ++ ++#: plugins/groups_manager.py:305 ++msgid "" ++"Group id '{}' generated from '{}' is duplicit. Please specify group id using" ++" --id." ++msgstr "'{}' から生成されたグループ ID '{}' は重複しています。--id を使用してグループ ID を指定してください。" ++ + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" + msgstr "他のパッケージから必要とされないインスール済みパッケージを一覧表示します" +@@ -630,67 +775,73 @@ msgstr "yum の履歴、グループ、および yumdb データを dnf へ移 + msgid "Migrating history data..." + msgstr "履歴データを移行中..." + +-#: plugins/needs_restarting.py:65 ++#: plugins/needs_restarting.py:66 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." + msgstr "" ++"needs-restarting ファイル \"{file}\" に指定されている {pkg} " ++"というパッケージのインストール済みパッケージが見つかりません。" + +-#: plugins/needs_restarting.py:199 ++#: plugins/needs_restarting.py:224 + msgid "determine updated binaries that need restarting" + msgstr "再起動が必要な更新済みバイナリーを決定します" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:229 + msgid "only consider this user's processes" + msgstr "このユーザーのプロセスのみを検討します" + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:231 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" +-msgstr "" ++msgstr "再起動が必要か (終了コード 1) 必要でないか (終了コード 0) のみを報告します" + +-#: plugins/needs_restarting.py:230 ++#: plugins/needs_restarting.py:234 ++msgid "only report affected systemd services" ++msgstr "影響を受ける systemd サービスのみを報告" ++ ++#: plugins/needs_restarting.py:257 + msgid "Core libraries or services have been updated since boot-up:" +-msgstr "" ++msgstr "起動以降にコアライブラリーまたはサービスがアップデートされました:" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:262 + msgid "Reboot is required to fully utilize these updates." +-msgstr "" ++msgstr "これらのアップデートを完全に活用するには、再起動が必要です。" + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:263 + msgid "More information:" +-msgstr "" ++msgstr "詳細情報:" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:267 + msgid "No core libraries or services have been updated since boot-up." +-msgstr "" ++msgstr "起動以降にアップデートされたコアライブラリーまたはサービスはありません。" + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:269 + msgid "Reboot should not be necessary." +-msgstr "" ++msgstr "再起動な必要ありません。" + + #: plugins/post-transaction-actions.py:71 + #, python-format + msgid "Bad Action Line \"%s\": %s" +-msgstr "" ++msgstr "不正なアクション行 \"%s\": %s" + + #. unsupported state, skip it + #: plugins/post-transaction-actions.py:130 + #, python-format + msgid "Bad Transaction State: %s" +-msgstr "" ++msgstr "不正なトランザクション状態: %s" + + #: plugins/post-transaction-actions.py:153 + #: plugins/post-transaction-actions.py:155 + #, python-format + msgid "post-transaction-actions: %s" +-msgstr "" ++msgstr "post-transaction-actions: %s" + + #: plugins/post-transaction-actions.py:157 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" +-msgstr "" ++msgstr "post-transaction-actions: 不正なコマンド \"%s\": %s" + + #: plugins/repoclosure.py:42 + msgid "Display a list of unresolved dependencies for repositories" +@@ -718,129 +869,137 @@ msgstr "このパッケージのみのクロージャーを確認します" + + #: plugins/repodiff.py:45 + msgid "List differences between two sets of repositories" +-msgstr "" ++msgstr "2 セットのリポジトリー間の違いを一覧表示します" + + #: plugins/repodiff.py:58 + msgid "Specify old repository, can be used multiple times" +-msgstr "" ++msgstr "古いリポジトリーを指定します、これは複数回使用できます" + + #: plugins/repodiff.py:60 + msgid "Specify new repository, can be used multiple times" +-msgstr "" ++msgstr "新しいリポジトリーを指定します、これは複数回使用できます" + + #: plugins/repodiff.py:63 + msgid "" + "Specify architectures to compare, can be used multiple times. By default, " + "only source rpms are compared." +-msgstr "" ++msgstr "比較するアーキテクチャーを指定します、これは複数回使用できます。デフォルトで、ソース rpms のみが比較されます。" + + #: plugins/repodiff.py:67 + msgid "Output additional data about the size of the changes." +-msgstr "" ++msgstr "変更サイズに関する追加データを出力します。" + + #: plugins/repodiff.py:69 + msgid "" + "Compare packages also by arch. By default packages are compared just by " + "name." +-msgstr "" ++msgstr "パッケージを Arch でも比較します。デフォルトで、パッケージは名前のみで比較されます。" + + #: plugins/repodiff.py:72 + msgid "Output a simple one line message for modified packages." +-msgstr "" ++msgstr "変更されたパッケージに簡単な 1 行メッセージを出力します。" + + #: plugins/repodiff.py:74 + msgid "" + "Split the data for modified packages between upgraded and downgraded " + "packages." +-msgstr "" ++msgstr "アップグレードされたパッケージとダウングレードされたパッケージとの間で、変更されたパッケージのデータを分割します。" + + #: plugins/repodiff.py:86 + msgid "Both old and new repositories must be set." +-msgstr "" ++msgstr "新旧両方のリポジトリーを設定する必要があります。" + + #: plugins/repodiff.py:178 + msgid "Size change: {} bytes" +-msgstr "" ++msgstr "サイズの変更: {} バイト" + + #: plugins/repodiff.py:184 + msgid "Added package : {}" +-msgstr "" ++msgstr "追加されたパッケージ : {}" + + #: plugins/repodiff.py:187 + msgid "Removed package: {}" +-msgstr "" ++msgstr "削除されたパッケージ: {}" + + #: plugins/repodiff.py:190 + msgid "Obsoleted by : {}" +-msgstr "" ++msgstr "により廃止されました: {}" + + #: plugins/repodiff.py:195 + msgid "" + "\n" + "Upgraded packages" + msgstr "" ++"\n" ++"アップグレードされたパッケージ" + + #: plugins/repodiff.py:200 + msgid "" + "\n" + "Downgraded packages" + msgstr "" ++"\n" ++"ダウングレードされたパッケージ" + + #: plugins/repodiff.py:207 + msgid "" + "\n" + "Modified packages" + msgstr "" ++"\n" ++"変更されたパッケージ" + + #: plugins/repodiff.py:212 + msgid "" + "\n" + "Summary" + msgstr "" ++"\n" ++"サマリー" + + #: plugins/repodiff.py:213 + msgid "Added packages: {}" +-msgstr "" ++msgstr "追加されたパッケージ: {}" + + #: plugins/repodiff.py:214 + msgid "Removed packages: {}" +-msgstr "" ++msgstr "削除されたパッケージ: {}" + + #: plugins/repodiff.py:216 + msgid "Upgraded packages: {}" +-msgstr "" ++msgstr "アップグレードされたパッケージ: {}" + + #: plugins/repodiff.py:217 + msgid "Downgraded packages: {}" +-msgstr "" ++msgstr "ダウングレードされたパッケージ: {}" + + #: plugins/repodiff.py:219 + msgid "Modified packages: {}" +-msgstr "" ++msgstr "変更されたパッケージ: {}" + + #: plugins/repodiff.py:222 + msgid "Size of added packages: {}" +-msgstr "" ++msgstr "追加されたパッケージのサイズ: {}" + + #: plugins/repodiff.py:223 + msgid "Size of removed packages: {}" +-msgstr "" ++msgstr "削除されたパッケージのサイズ: {}" + + #: plugins/repodiff.py:225 + msgid "Size of modified packages: {}" +-msgstr "" ++msgstr "変更されたパッケージのサイズ: {}" + + #: plugins/repodiff.py:228 + msgid "Size of upgraded packages: {}" +-msgstr "" ++msgstr "アップグレードされたパッケージのサイズ: {}" + + #: plugins/repodiff.py:230 + msgid "Size of downgraded packages: {}" +-msgstr "" ++msgstr "ダウングレードされたパッケージのサイズ: {}" + + #: plugins/repodiff.py:232 + msgid "Size change: {}" +-msgstr "" ++msgstr "サイズの変更: {}" + + #: plugins/repograph.py:50 + msgid "Output a full package dependency graph in dot format" +@@ -887,84 +1046,96 @@ msgstr "維持する最新の N パッケージ - デフォルトは 1 に設定 + msgid "Path to directory" + msgstr "ディレクトリーへのパス" + +-#: plugins/reposync.py:54 ++#: plugins/reposync.py:55 + msgid "download all packages from remote repo" + msgstr "リモート repo からすべてのパッケージをダウンロードします" + +-#: plugins/reposync.py:63 ++#: plugins/reposync.py:64 + msgid "download only packages for this ARCH" + msgstr "この ARCH 向けのパッケージのみをダウンロード" + +-#: plugins/reposync.py:65 ++#: plugins/reposync.py:66 + msgid "delete local packages no longer present in repository" + msgstr "リポジトリーにもはや存在しないローカルパッケージを削除" + +-#: plugins/reposync.py:67 +-msgid "also download and uncompress comps.xml" +-msgstr "" +- +-#: plugins/reposync.py:69 ++#: plugins/reposync.py:68 + msgid "download all the metadata." +-msgstr "" ++msgstr "すべてのメタデータをダウンロードします。" + +-#: plugins/reposync.py:71 +-msgid "download only newest packages per-repo" +-msgstr "最新のパッケージ per-repo のみをダウンロード" ++#: plugins/reposync.py:70 ++msgid "Remove packages that fail GPG signature checking after downloading" ++msgstr "ダウンロード後に GPG 署名の確認に失敗するパッケージを削除します" + + #: plugins/reposync.py:73 +-msgid "where to store downloaded repositories" +-msgstr "" ++msgid "also download and uncompress comps.xml" ++msgstr "comps.xml もダウンロードして展開します" + + #: plugins/reposync.py:75 +-msgid "Don't add the reponame to the download path." +-msgstr "" +- +-#: plugins/reposync.py:77 + msgid "" + "where to store downloaded repository metadata. Defaults to the value of " + "--download-path." +-msgstr "" ++msgstr "ダウンロード済みリポジトリーメタデータの保管場所。初期値は --download-path です。" ++ ++#: plugins/reposync.py:78 ++msgid "download only newest packages per-repo" ++msgstr "最新のパッケージ per-repo のみをダウンロード" + + #: plugins/reposync.py:80 +-msgid "operate on source packages" +-msgstr "ソースパッケージでの操作" ++msgid "Don't add the reponame to the download path." ++msgstr "ダウンロードパスにはリポネームを追加しないでください。" + + #: plugins/reposync.py:82 ++msgid "where to store downloaded repositories" ++msgstr "ダウンロード済みリポジトリーの保管場所" ++ ++#: plugins/reposync.py:84 + msgid "try to set local timestamps of local files by the one on the server" +-msgstr "" ++msgstr "サーバー上から、ローカルファイルのローカル timestamps の設定を試みます" + +-#: plugins/reposync.py:85 ++#: plugins/reposync.py:87 ++msgid "operate on source packages" ++msgstr "ソースパッケージでの操作" ++ ++#: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" +-msgstr "" ++msgstr "ダウンロードする予定のものの URL をリストするだけで、ダウンロードしないでください" + +-#: plugins/reposync.py:109 ++#: plugins/reposync.py:113 + msgid "Can't use --norepopath with multiple repositories" +-msgstr "" ++msgstr "複数のリポジトリーでは -norepopath は使えません" + +-#: plugins/reposync.py:127 ++#: plugins/reposync.py:132 + #, python-format + msgid "Failed to get mirror for metadata: %s" +-msgstr "" ++msgstr "メタデータのミラー取得に失敗しました: %s" + +-#: plugins/reposync.py:144 ++#: plugins/reposync.py:149 + msgid "Failed to get mirror for the group file." +-msgstr "" ++msgstr "グループファイルのミラー取得に失敗しました。" ++ ++#: plugins/reposync.py:168 ++msgid "Removing {}: {}" ++msgstr "{} の削除中: {}" + + #: plugins/reposync.py:175 ++msgid "GPG signature check failed." ++msgstr "GPG 署名の確認に失敗しました。" ++ ++#: plugins/reposync.py:196 + msgid "Download target '{}' is outside of download path '{}'." +-msgstr "" ++msgstr "ダウンロードターゲット '{}' は、ダウンロードパス '{}' の外にあります。" + +-#: plugins/reposync.py:190 ++#: plugins/reposync.py:211 + #, python-format + msgid "[DELETED] %s" + msgstr "[DELETED] %s" + +-#: plugins/reposync.py:192 ++#: plugins/reposync.py:213 + #, python-format + msgid "failed to delete file %s" + msgstr "ファイル %s の削除に失敗しました" + +-#: plugins/reposync.py:201 ++#: plugins/reposync.py:222 + #, python-format + msgid "comps.xml for repository %s saved" + msgstr "リポジトリー %s の comps.xml が保存されました" +@@ -992,15 +1163,15 @@ msgstr "除外を追加:" + + #: plugins/versionlock.py:36 + msgid "Package already locked in equivalent form:" +-msgstr "" ++msgstr "同等の形で既にロックされているパッケージ。" + + #: plugins/versionlock.py:37 + msgid "Package {} is already locked" +-msgstr "" ++msgstr "パッケージ {} は既にロックされています" + + #: plugins/versionlock.py:38 + msgid "Package {} is already excluded" +-msgstr "" ++msgstr "パッケージ{}はすでに除外されています" + + #: plugins/versionlock.py:39 + msgid "Deleting versionlock for:" +@@ -1032,7 +1203,7 @@ msgstr "パッケージバージョンロックの制御" + + #: plugins/versionlock.py:136 + msgid "Use package specifications as they are, do not try to parse them" +-msgstr "" ++msgstr "パッケージ仕様をそのまま使用し、解析を試みないでください" + + #~ msgid "" + #~ "\n" +diff --git a/po/ko.po b/po/ko.po +index 3f4eb89..a8ba74b 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -3,7 +3,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" ++"POT-Creation-Date: 2021-02-22 10:06+0100\n" + "PO-Revision-Date: 2020-09-12 11:29+0000\n" + "Last-Translator: Ludek Janda \n" + "Language-Team: Korean \n" +@@ -559,7 +559,7 @@ msgstr "다운로드 대신 rpms를 다운로드 할 수있는 URL 목록 인쇄 + msgid "when running with --url, limit to specific protocols" + msgstr "--url을 사용하여 실행하면 특정 프로토콜로 제한됩니다." + +-#: plugins/download.py:121 plugins/reposync.py:293 ++#: plugins/download.py:121 plugins/reposync.py:314 + #, python-format + msgid "Failed to get mirror for package: %s" + msgstr "패키지 미러링에 실패했습니다. %s" +@@ -582,6 +582,132 @@ msgstr "소스 rpm이 정의되지 않았습니다. %s" + msgid "No package %s available." + msgstr "패키지 없음 %s 유효한." + ++#: plugins/groups_manager.py:49 ++msgid "Invalid group id" ++msgstr "" ++ ++#: plugins/groups_manager.py:58 ++msgid "Invalid translated data, should be in form 'lang:text'" ++msgstr "" ++ ++#: plugins/groups_manager.py:61 ++msgid "Invalid/empty language for translated data" ++msgstr "" ++ ++#: plugins/groups_manager.py:71 ++msgid "Can't generate group id from '{}'. Please specify group id using --id." ++msgstr "" ++ ++#: plugins/groups_manager.py:79 ++msgid "create and edit groups metadata file" ++msgstr "" ++ ++#: plugins/groups_manager.py:90 ++msgid "load groups metadata from file" ++msgstr "" ++ ++#: plugins/groups_manager.py:93 ++msgid "save groups metadata to file" ++msgstr "" ++ ++#: plugins/groups_manager.py:95 ++msgid "load and save groups metadata to file" ++msgstr "" ++ ++#: plugins/groups_manager.py:97 ++#, fuzzy ++#| msgid "print variable values to stdout" ++msgid "print the result metadata to stdout" ++msgstr "변수 값을 표준 출력으로 출력" ++ ++#: plugins/groups_manager.py:100 ++msgid "group id" ++msgstr "" ++ ++#: plugins/groups_manager.py:101 ++msgid "group name" ++msgstr "" ++ ++#: plugins/groups_manager.py:103 ++#, fuzzy ++#| msgid "No description given" ++msgid "group description" ++msgstr "설명이 없습니다." ++ ++#: plugins/groups_manager.py:105 ++msgid "group display order" ++msgstr "" ++ ++#: plugins/groups_manager.py:108 ++msgid "translated name for the group" ++msgstr "" ++ ++#: plugins/groups_manager.py:111 ++msgid "translated description for the group" ++msgstr "" ++ ++#: plugins/groups_manager.py:115 ++msgid "make the group user visible (default)" ++msgstr "" ++ ++#: plugins/groups_manager.py:118 ++msgid "make the group user invisible" ++msgstr "" ++ ++#: plugins/groups_manager.py:123 ++msgid "add packages to the mandatory section" ++msgstr "" ++ ++#: plugins/groups_manager.py:125 ++msgid "add packages to the optional section" ++msgstr "" ++ ++#: plugins/groups_manager.py:127 ++msgid "remove packages from the group instead of adding them" ++msgstr "" ++ ++#: plugins/groups_manager.py:129 ++#, fuzzy ++#| msgid "Display a list of unresolved dependencies for repositories" ++msgid "include also direct dependencies for packages" ++msgstr "저장소에 대한 확인되지 않은 종속성 목록 표시" ++ ++#: plugins/groups_manager.py:132 ++msgid "package specification" ++msgstr "" ++ ++#: plugins/groups_manager.py:156 ++msgid "Can't edit group without specifying it (use --id or --name)" ++msgstr "" ++ ++#: plugins/groups_manager.py:190 ++#, fuzzy ++#| msgid "Can't write file '{}'" ++msgid "Can't load file \"{}\": {}" ++msgstr "'{}'파일을 쓸 수 없습니다." ++ ++#: plugins/groups_manager.py:206 ++#, fuzzy ++#| msgid "Can't write file '{}'" ++msgid "Can't save file \"{}\": {}" ++msgstr "'{}'파일을 쓸 수 없습니다." ++ ++#: plugins/groups_manager.py:259 ++#, fuzzy ++#| msgid "No match for argument: %s" ++msgid "No match for argument: {}" ++msgstr "인수와 일치하는 항목 없음 : %s" ++ ++#: plugins/groups_manager.py:296 ++msgid "Can't remove packages from non-existent group" ++msgstr "" ++ ++#: plugins/groups_manager.py:305 ++msgid "" ++"Group id '{}' generated from '{}' is duplicit. Please specify group id using" ++" --id." ++msgstr "" ++ + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" + msgstr "다른 패키지에서 필요하지 않은 설치된 패키지 나열" +@@ -614,43 +740,47 @@ msgstr "yum의 히스토리, 그룹 및 yumdb 데이터를 dnf로 마이그레 + msgid "Migrating history data..." + msgstr "기록 데이터 마이그레이션 중 ..." + +-#: plugins/needs_restarting.py:65 ++#: plugins/needs_restarting.py:66 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." + msgstr "" + +-#: plugins/needs_restarting.py:199 ++#: plugins/needs_restarting.py:224 + msgid "determine updated binaries that need restarting" + msgstr "다시 시작해야하는 업데이트 된 바이너리 결정" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:229 + msgid "only consider this user's processes" + msgstr "이 사용자의 프로세스 만 고려하십시오." + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:231 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" + msgstr "" + +-#: plugins/needs_restarting.py:230 ++#: plugins/needs_restarting.py:234 ++msgid "only report affected systemd services" ++msgstr "" ++ ++#: plugins/needs_restarting.py:257 + msgid "Core libraries or services have been updated since boot-up:" + msgstr "" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:262 + msgid "Reboot is required to fully utilize these updates." + msgstr "" + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:263 + msgid "More information:" + msgstr "" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:267 + msgid "No core libraries or services have been updated since boot-up." + msgstr "" + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:269 + msgid "Reboot should not be necessary." + msgstr "" + +@@ -871,84 +1001,96 @@ msgstr "보관할 최신 N 패키지 - 기본값은 1입니다." + msgid "Path to directory" + msgstr "디렉토리 경로" + +-#: plugins/reposync.py:54 ++#: plugins/reposync.py:55 + msgid "download all packages from remote repo" + msgstr "원격 저장소에서 모든 패키지를 다운로드하십시오." + +-#: plugins/reposync.py:63 ++#: plugins/reposync.py:64 + msgid "download only packages for this ARCH" + msgstr "이 ARCH 용 패키지 만 다운로드하십시오." + +-#: plugins/reposync.py:65 ++#: plugins/reposync.py:66 + msgid "delete local packages no longer present in repository" + msgstr "저장소에 더 이상 존재하지 않는 로컬 패키지 삭제" + +-#: plugins/reposync.py:67 +-msgid "also download and uncompress comps.xml" +-msgstr "" +- +-#: plugins/reposync.py:69 ++#: plugins/reposync.py:68 + msgid "download all the metadata." + msgstr "" + +-#: plugins/reposync.py:71 +-msgid "download only newest packages per-repo" +-msgstr "repo 당 최신 패키지 만 다운로드하십시오." ++#: plugins/reposync.py:70 ++msgid "Remove packages that fail GPG signature checking after downloading" ++msgstr "" + + #: plugins/reposync.py:73 +-msgid "where to store downloaded repositories" ++msgid "also download and uncompress comps.xml" + msgstr "" + + #: plugins/reposync.py:75 +-msgid "Don't add the reponame to the download path." +-msgstr "" +- +-#: plugins/reposync.py:77 + msgid "" + "where to store downloaded repository metadata. Defaults to the value of " + "--download-path." + msgstr "" + ++#: plugins/reposync.py:78 ++msgid "download only newest packages per-repo" ++msgstr "repo 당 최신 패키지 만 다운로드하십시오." ++ + #: plugins/reposync.py:80 +-msgid "operate on source packages" +-msgstr "소스 패키지를 조작한다." ++msgid "Don't add the reponame to the download path." ++msgstr "" + + #: plugins/reposync.py:82 ++msgid "where to store downloaded repositories" ++msgstr "" ++ ++#: plugins/reposync.py:84 + msgid "try to set local timestamps of local files by the one on the server" + msgstr "" + +-#: plugins/reposync.py:85 ++#: plugins/reposync.py:87 ++msgid "operate on source packages" ++msgstr "소스 패키지를 조작한다." ++ ++#: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" + msgstr "" + +-#: plugins/reposync.py:109 ++#: plugins/reposync.py:113 + msgid "Can't use --norepopath with multiple repositories" + msgstr "" + +-#: plugins/reposync.py:127 ++#: plugins/reposync.py:132 + #, python-format + msgid "Failed to get mirror for metadata: %s" + msgstr "" + +-#: plugins/reposync.py:144 ++#: plugins/reposync.py:149 + msgid "Failed to get mirror for the group file." + msgstr "" + ++#: plugins/reposync.py:168 ++msgid "Removing {}: {}" ++msgstr "" ++ + #: plugins/reposync.py:175 ++msgid "GPG signature check failed." ++msgstr "" ++ ++#: plugins/reposync.py:196 + msgid "Download target '{}' is outside of download path '{}'." + msgstr "" + +-#: plugins/reposync.py:190 ++#: plugins/reposync.py:211 + #, python-format + msgid "[DELETED] %s" + msgstr "[DELETED] %s" + +-#: plugins/reposync.py:192 ++#: plugins/reposync.py:213 + #, python-format + msgid "failed to delete file %s" + msgstr "파일을 삭제하지 못했습니다. %s" + +-#: plugins/reposync.py:201 ++#: plugins/reposync.py:222 + #, python-format + msgid "comps.xml for repository %s saved" + msgstr "저장소에 대한 comps.xml %s 저장된" +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 151441d..27645c4 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -5,20 +5,21 @@ + # cheng ye <18969068329@163.com>, 2017. #zanata + # Ludek Janda , 2018. #zanata + # Hongqiao Chen , 2020. ++# Sundeep Anand , 2021. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-07-09 13:27+0000\n" +-"Last-Translator: Charles Lee \n" +-"Language-Team: Chinese (Simplified) \n" ++"POT-Creation-Date: 2021-02-22 10:06+0100\n" ++"PO-Revision-Date: 2021-03-08 11:08+0000\n" ++"Last-Translator: Sundeep Anand \n" ++"Language-Team: Chinese (Simplified) \n" + "Language: zh_CN\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.1.1\n" ++"X-Generator: Weblate 4.5.1\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +@@ -39,7 +40,7 @@ msgstr "定义一个用于处理 Spec 文件的宏" + + #: plugins/builddep.py:95 + msgid "skip build dependencies not available in repositories" +-msgstr "" ++msgstr "跳过存储库中不可用的构建依赖项" + + #: plugins/builddep.py:98 + msgid "treat commandline arguments as spec files" +@@ -51,7 +52,7 @@ msgstr "将命令行参数作为源码 RPM 处理" + + #: plugins/builddep.py:144 + msgid "RPM: {}" +-msgstr "" ++msgstr "RPM软件包: {}" + + #: plugins/builddep.py:153 + msgid "Some packages could not be found." +@@ -87,27 +88,27 @@ msgstr "无匹配软件包: %s" + #: plugins/changelog.py:37 + #, python-brace-format + msgid "Not a valid date: \"{0}\"." +-msgstr "" ++msgstr "无效的日期 : \"{0}\"." + + #: plugins/changelog.py:43 + msgid "Show changelog data of packages" +-msgstr "" ++msgstr "查看软件包的改变日志数据" + + #: plugins/changelog.py:51 + msgid "" + "show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " + "is recommended." +-msgstr "" ++msgstr "显示自 DATE 开始的改变日志信息。为了避免混淆,推荐使用 YYYY-MM-DD 格式。" + + #: plugins/changelog.py:55 + msgid "show given number of changelog entries per package" +-msgstr "" ++msgstr "每个软件包显示指定数量的改变日志信息" + + #: plugins/changelog.py:58 + msgid "" + "show only new changelog entries for packages, that provide an upgrade for " + "some of already installed packages." +-msgstr "" ++msgstr "只显示软件包新的改变日志信息,为已安装的软件包提供升级" + + #: plugins/changelog.py:60 + msgid "PACKAGE" +@@ -120,20 +121,20 @@ msgstr "未找到匹配的参数: %s" + + #: plugins/changelog.py:109 + msgid "Listing changelogs since {}" +-msgstr "" ++msgstr "列出自 {} 后的改变日志信息" + + #: plugins/changelog.py:111 + msgid "Listing only latest changelog" + msgid_plural "Listing {} latest changelogs" +-msgstr[0] "" ++msgstr[0] "只列出最新的改变日志" + + #: plugins/changelog.py:116 + msgid "Listing only new changelogs since installed version of the package" +-msgstr "" ++msgstr "在列出安装的软件包版本后的新改变日志" + + #: plugins/changelog.py:118 + msgid "Listing all changelogs" +-msgstr "" ++msgstr "列出所有改变日志" + + #: plugins/changelog.py:122 + msgid "Changelogs for {}" +@@ -142,7 +143,7 @@ msgstr "{}的变更记录" + #: plugins/config_manager.py:37 + #, python-brace-format + msgid "manage {prog} configuration options and repositories" +-msgstr "" ++msgstr "管理 {prog} 配置选项和软件仓库" + + #: plugins/config_manager.py:44 + msgid "repo to modify" +@@ -166,21 +167,23 @@ msgstr "打印变量值到标准输出" + + #: plugins/config_manager.py:60 + msgid "enable repos (automatically saves)" +-msgstr "" ++msgstr "启用仓库(自动保存)" + + #: plugins/config_manager.py:63 + msgid "disable repos (automatically saves)" +-msgstr "" ++msgstr "禁用仓库(自动保存)" + + #: plugins/config_manager.py:77 + msgid "one of the following arguments is required: {}" +-msgstr "" ++msgstr "需要以下参数之一:{}" + + #: plugins/config_manager.py:86 + msgid "" + "Warning: --enablerepo/--disablerepo arguments have no meaningwith config " + "manager. Use --set-enabled/--set-disabled instead." + msgstr "" ++"警告:--enablerepo/--disablerepo 参数对于 config manager 没有作用。请使用 --set-" ++"enabled/--set-disabled。" + + #: plugins/config_manager.py:131 + #, python-format +@@ -278,7 +281,7 @@ msgstr "按照用户 NAME 列出可用的 Copr 仓库" + + #: plugins/copr.py:115 + msgid "Specify an instance of Copr to work with" +-msgstr "" ++msgstr "指定需要使用的 Copr 实例" + + #: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 + msgid "Error: " +@@ -289,10 +292,11 @@ msgid "" + "specify Copr hub either with `--hub` or using " + "`copr_hub/copr_username/copr_projectname` format" + msgstr "" ++"使用 `--hub` 或使用 `copr_hub/copr_username/copr_projectname` 格式指定 Copr hub" + + #: plugins/copr.py:153 + msgid "multiple hubs specified" +-msgstr "" ++msgstr "指定多个 hub" + + #: plugins/copr.py:218 plugins/copr.py:222 + msgid "exactly two additional parameters to copr command are required" +@@ -320,6 +324,17 @@ msgid "" + "Please do not file bug reports about these packages in Fedora\n" + "Bugzilla. In case of problems, contact the owner of this repository.\n" + msgstr "" ++"\n" ++"启用一个 Copr 仓库。请注意这个仓库\n" ++"不是主发行版本的一部分,质量可能会有所不同。\n" ++"\n" ++"Fedora 项目对其不行使除了于 Copr 常见问题\n" ++"\n" ++"中所提出的规则外的任何权力,并且其软件包不保证达到特定质量\n" ++"和安全水准。\n" ++"\n" ++"请不要在 Fedora Bugzilla 中报告这些软件包中出现的\n" ++"问题。当出现问题时,请联系仓库的所有者。\n" + + #: plugins/copr.py:271 + msgid "Repository successfully enabled." +@@ -343,6 +358,7 @@ msgid "" + " about Copr hub - the default one was assumed. Re-enable the project to fix " + "this." + msgstr "" ++"* 这些 coprs 有使用旧格式的 repo 文件,它们没有包括 Copr hub 的信息 - 假设使用默认值。重新启用项目来解决这个问题。" + + #: plugins/copr.py:353 + msgid "Can't parse repositories for username '{}'." +@@ -401,15 +417,27 @@ msgid "" + "\n" + "These repositories have been enabled automatically." + msgstr "" ++"启用的 Copr 仓库的维护人员决定\n" ++"它需要依赖于其他仓库。这些仓库\n" ++"通常是必需的,如果需要从主 Copr 仓库\n" ++"(它们会提供运行时依赖软件包)安装 RPM。\n" ++"\n" ++"请注意上面关于质量和程序错误报告的备注\n" ++"也适用于这里,Fedora Project 不控制内容。\n" ++"请检查列表:\n" ++"\n" ++"{0}\n" ++"\n" ++"这些仓库已被自动启用。" + + #: plugins/copr.py:549 + msgid "Do you want to keep them enabled?" +-msgstr "" ++msgstr "您需要保持它们被启用吗?" + + #: plugins/copr.py:582 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" +-msgstr "" ++msgstr "删除 copr repo {0}/{1}/{2} 失败" + + #: plugins/copr.py:593 + msgid "Failed to disable copr repo {}/{}" +@@ -424,14 +452,12 @@ msgid "Interact with Playground repository." + msgstr "与 Playground 仓库交互。" + + #: plugins/copr.py:639 +-#, fuzzy +-#| msgid "Interact with Playground repository." + msgid "Enabling a Playground repository." +-msgstr "与 Playground 仓库交互。" ++msgstr "启用一个 Playground 仓库。" + + #: plugins/copr.py:640 + msgid "Do you want to continue?" +-msgstr "" ++msgstr "您希望继续吗?" + + #: plugins/copr.py:683 + msgid "Playground repositories successfully enabled." +@@ -488,7 +514,7 @@ msgstr "限制到指定类型" + msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." +-msgstr "" ++msgstr "允许删除只安装的软件包。使用这个选项可能会导致尝试删除正在运行的内核。" + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -512,25 +538,25 @@ msgstr "安装调试信息软件包" + #, python-format + msgid "" + "Could not find debuginfo package for the following available packages: %s" +-msgstr "" ++msgstr "无法为以下可用的软件包找到 debuginfo 软件包: %s" + + #: plugins/debuginfo-install.py:185 + #, python-format + msgid "" + "Could not find debugsource package for the following available packages: %s" +-msgstr "" ++msgstr "无法为以下可用的软件包找到 debugsource 软件包: %s" + + #: plugins/debuginfo-install.py:190 + #, python-format + msgid "" + "Could not find debuginfo package for the following installed packages: %s" +-msgstr "" ++msgstr "无法为以下安装的软件包找到 debuginfo 软件包: %s" + + #: plugins/debuginfo-install.py:195 + #, python-format + msgid "" + "Could not find debugsource package for the following installed packages: %s" +-msgstr "" ++msgstr "无法为以下安装的软件包找到 debugsource 软件包: %s" + + #: plugins/debuginfo-install.py:199 + msgid "Unable to find a match" +@@ -554,7 +580,7 @@ msgstr "取而代之下载 -debuginfo 软件包" + + #: plugins/download.py:57 + msgid "download the -debugsource package instead" +-msgstr "" ++msgstr "取而代之下载 -debugsource 软件包" + + #: plugins/download.py:60 + msgid "limit the query to packages of given architectures." +@@ -568,7 +594,7 @@ msgstr "解析并下载所需的依赖关系" + msgid "" + "when running with --resolve, download all dependencies (do not exclude " + "already installed ones)" +-msgstr "" ++msgstr "当运行时使用 --resolve,下载所有依赖软件包 (不排除已安装的软件包)" + + #: plugins/download.py:67 + msgid "" +@@ -579,7 +605,7 @@ msgstr "打印 rpm 可被下载的 url 列表而不是直接下载" + msgid "when running with --url, limit to specific protocols" + msgstr "当执行时带有 --url 参数,则限制使用指定协议" + +-#: plugins/download.py:121 plugins/reposync.py:293 ++#: plugins/download.py:121 plugins/reposync.py:314 + #, python-format + msgid "Failed to get mirror for package: %s" + msgstr "获取针对以下软件包的镜像失败:%s" +@@ -602,13 +628,127 @@ msgstr "未找到所定义 %s 的源代码软件包 SRPM" + msgid "No package %s available." + msgstr "没有可用的软件包 %s。" + ++#: plugins/groups_manager.py:49 ++msgid "Invalid group id" ++msgstr "无效的组 ID" ++ ++#: plugins/groups_manager.py:58 ++msgid "Invalid translated data, should be in form 'lang:text'" ++msgstr "无效的翻译数据,格式应该是 'lang:text'" ++ ++#: plugins/groups_manager.py:61 ++msgid "Invalid/empty language for translated data" ++msgstr "翻译数据的无效/空语言" ++ ++#: plugins/groups_manager.py:71 ++msgid "Can't generate group id from '{}'. Please specify group id using --id." ++msgstr "无法从 '{}' 生成组 ID。请使用 --id 指定组 ID。" ++ ++#: plugins/groups_manager.py:79 ++msgid "create and edit groups metadata file" ++msgstr "创建并编辑组元数据文件" ++ ++#: plugins/groups_manager.py:90 ++msgid "load groups metadata from file" ++msgstr "从文件加载组元数据" ++ ++#: plugins/groups_manager.py:93 ++msgid "save groups metadata to file" ++msgstr "将组元数据保存到文件中" ++ ++#: plugins/groups_manager.py:95 ++msgid "load and save groups metadata to file" ++msgstr "将组元数据加载并保存到文件中" ++ ++#: plugins/groups_manager.py:97 ++msgid "print the result metadata to stdout" ++msgstr "将结果元数据输出到标准输出" ++ ++#: plugins/groups_manager.py:100 ++msgid "group id" ++msgstr "组 id" ++ ++#: plugins/groups_manager.py:101 ++msgid "group name" ++msgstr "组名称" ++ ++#: plugins/groups_manager.py:103 ++msgid "group description" ++msgstr "组描述" ++ ++#: plugins/groups_manager.py:105 ++msgid "group display order" ++msgstr "组显示顺序" ++ ++#: plugins/groups_manager.py:108 ++msgid "translated name for the group" ++msgstr "组的翻译名称" ++ ++#: plugins/groups_manager.py:111 ++msgid "translated description for the group" ++msgstr "组的翻译描述" ++ ++#: plugins/groups_manager.py:115 ++msgid "make the group user visible (default)" ++msgstr "使组用户可见(默认)" ++ ++#: plugins/groups_manager.py:118 ++msgid "make the group user invisible" ++msgstr "使组用户不可见" ++ ++#: plugins/groups_manager.py:123 ++msgid "add packages to the mandatory section" ++msgstr "在必填部分添加软件包" ++ ++#: plugins/groups_manager.py:125 ++msgid "add packages to the optional section" ++msgstr "在可选部分添加软件包" ++ ++#: plugins/groups_manager.py:127 ++msgid "remove packages from the group instead of adding them" ++msgstr "从组群中删除软件包而不是添加它们" ++ ++#: plugins/groups_manager.py:129 ++msgid "include also direct dependencies for packages" ++msgstr "同时包括软件包的直接依赖软件包" ++ ++#: plugins/groups_manager.py:132 ++msgid "package specification" ++msgstr "软件包规格" ++ ++#: plugins/groups_manager.py:156 ++msgid "Can't edit group without specifying it (use --id or --name)" ++msgstr "没有指定组(使用 --id 或 --name)就无法编辑组" ++ ++#: plugins/groups_manager.py:190 ++msgid "Can't load file \"{}\": {}" ++msgstr "无法加载文件 \"{}\": {}" ++ ++#: plugins/groups_manager.py:206 ++msgid "Can't save file \"{}\": {}" ++msgstr "无法保存文件 \"{}\": {}" ++ ++#: plugins/groups_manager.py:259 ++msgid "No match for argument: {}" ++msgstr "未找到匹配的参数: {}" ++ ++#: plugins/groups_manager.py:296 ++msgid "Can't remove packages from non-existent group" ++msgstr "无法从不存在的组中删除软件包" ++ ++#: plugins/groups_manager.py:305 ++msgid "" ++"Group id '{}' generated from '{}' is duplicit. Please specify group id using" ++" --id." ++msgstr "从 '{}' 生成的组 id '{}' 是显式的。请使用 --id 指定组 ID。" ++ + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" + msgstr "列出已安装但不被任何其他软件包所需要的软件包" + + #: plugins/local.py:122 + msgid "Unable to create a directory '{}' due to '{}'" +-msgstr "无法创建目录 '{}' 由于 '{}'" ++msgstr "无法创建目录 '{}' 由于 '{}'" + + #: plugins/local.py:126 + msgid "'{}' is not a directory" +@@ -634,67 +774,71 @@ msgstr "迁移 yum 的历史、分组以及 yumdb 数据至 dnf" + msgid "Migrating history data..." + msgstr "正在迁移历史数据…" + +-#: plugins/needs_restarting.py:65 ++#: plugins/needs_restarting.py:66 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" + "restarting file \"{file}\"." +-msgstr "" ++msgstr "没有为在需要重新启动文件 \"{file}\" 中指定的名为 \"{pkg}\" 的软件包找到安装的软件包。" + +-#: plugins/needs_restarting.py:199 ++#: plugins/needs_restarting.py:224 + msgid "determine updated binaries that need restarting" + msgstr "判断所升级的二进制文件是否需要重启" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:229 + msgid "only consider this user's processes" + msgstr "仅考虑当前用户的进程" + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:231 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" +-msgstr "" ++msgstr "只报告需要重新引导 (退出代码为 1) 或不需要重新引导 (退出代码为 0)" ++ ++#: plugins/needs_restarting.py:234 ++msgid "only report affected systemd services" ++msgstr "只报告受影响的 systemd 服务" + +-#: plugins/needs_restarting.py:230 ++#: plugins/needs_restarting.py:257 + msgid "Core libraries or services have been updated since boot-up:" +-msgstr "" ++msgstr "在引导后 Core 库或服务已被更新 :" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:262 + msgid "Reboot is required to fully utilize these updates." +-msgstr "" ++msgstr "需要重新启动后才可以使这些更新完全生效" + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:263 + msgid "More information:" +-msgstr "" ++msgstr "更多信息 :" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:267 + msgid "No core libraries or services have been updated since boot-up." +-msgstr "" ++msgstr "在引导后没有 core 库或服务被更新。" + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:269 + msgid "Reboot should not be necessary." +-msgstr "" ++msgstr "不需要重新启动。" + + #: plugins/post-transaction-actions.py:71 + #, python-format + msgid "Bad Action Line \"%s\": %s" +-msgstr "" ++msgstr "错误的操作行“ %s”: %s" + + #. unsupported state, skip it + #: plugins/post-transaction-actions.py:130 + #, python-format + msgid "Bad Transaction State: %s" +-msgstr "" ++msgstr "错误的事务状态: %s" + + #: plugins/post-transaction-actions.py:153 + #: plugins/post-transaction-actions.py:155 + #, python-format + msgid "post-transaction-actions: %s" +-msgstr "" ++msgstr "交易后的操作: %s" + + #: plugins/post-transaction-actions.py:157 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" +-msgstr "" ++msgstr "交易后的操作 : 错误命令 \"%s\": %s" + + #: plugins/repoclosure.py:42 + msgid "Display a list of unresolved dependencies for repositories" +@@ -722,129 +866,137 @@ msgstr "仅为该软件包检查依赖闭合性" + + #: plugins/repodiff.py:45 + msgid "List differences between two sets of repositories" +-msgstr "" ++msgstr "列出两组仓库中的不同" + + #: plugins/repodiff.py:58 + msgid "Specify old repository, can be used multiple times" +-msgstr "" ++msgstr "指定旧的仓库,可以使用多次" + + #: plugins/repodiff.py:60 + msgid "Specify new repository, can be used multiple times" +-msgstr "" ++msgstr "指定新的仓库,可以使用多次" + + #: plugins/repodiff.py:63 + msgid "" + "Specify architectures to compare, can be used multiple times. By default, " + "only source rpms are compared." +-msgstr "" ++msgstr "指定要比较的架构,可以使用多次。默认情况下,只比较源 rpms。" + + #: plugins/repodiff.py:67 + msgid "Output additional data about the size of the changes." +-msgstr "" ++msgstr "输出关于改变大小的额外数据。" + + #: plugins/repodiff.py:69 + msgid "" + "Compare packages also by arch. By default packages are compared just by " + "name." +-msgstr "" ++msgstr "同时按架构比较软件包。在默认情况下只按名称比较软件包。" + + #: plugins/repodiff.py:72 + msgid "Output a simple one line message for modified packages." +-msgstr "" ++msgstr "为修改的软件包输出一个简单的单行信息。" + + #: plugins/repodiff.py:74 + msgid "" + "Split the data for modified packages between upgraded and downgraded " + "packages." +-msgstr "" ++msgstr "在升级和降级的软件包间为修改的软件包分隔数据。" + + #: plugins/repodiff.py:86 + msgid "Both old and new repositories must be set." +-msgstr "" ++msgstr "新仓库和旧仓库都需要被设置。" + + #: plugins/repodiff.py:178 + msgid "Size change: {} bytes" +-msgstr "" ++msgstr "大小的变化 : {} 字节" + + #: plugins/repodiff.py:184 + msgid "Added package : {}" +-msgstr "" ++msgstr "添加的软件包 : {}" + + #: plugins/repodiff.py:187 + msgid "Removed package: {}" +-msgstr "" ++msgstr "删除的软件包 : {}" + + #: plugins/repodiff.py:190 + msgid "Obsoleted by : {}" +-msgstr "" ++msgstr "过期于 : {}" + + #: plugins/repodiff.py:195 + msgid "" + "\n" + "Upgraded packages" + msgstr "" ++"\n" ++"升级的软件包" + + #: plugins/repodiff.py:200 + msgid "" + "\n" + "Downgraded packages" + msgstr "" ++"\n" ++"降级的软件包" + + #: plugins/repodiff.py:207 + msgid "" + "\n" + "Modified packages" + msgstr "" ++"\n" ++"修改的软件包" + + #: plugins/repodiff.py:212 + msgid "" + "\n" + "Summary" + msgstr "" ++"\n" ++"概述" + + #: plugins/repodiff.py:213 + msgid "Added packages: {}" +-msgstr "" ++msgstr "添加的软件包 : {}" + + #: plugins/repodiff.py:214 + msgid "Removed packages: {}" +-msgstr "" ++msgstr "删除的软件包 : {}" + + #: plugins/repodiff.py:216 + msgid "Upgraded packages: {}" +-msgstr "" ++msgstr "升级的软件包 : {}" + + #: plugins/repodiff.py:217 + msgid "Downgraded packages: {}" +-msgstr "" ++msgstr "降级的软件包 : {}" + + #: plugins/repodiff.py:219 + msgid "Modified packages: {}" +-msgstr "" ++msgstr "修改的软件包 : {}" + + #: plugins/repodiff.py:222 + msgid "Size of added packages: {}" +-msgstr "" ++msgstr "添加的软件包的大小 : {}" + + #: plugins/repodiff.py:223 + msgid "Size of removed packages: {}" +-msgstr "" ++msgstr "删除的软件包的大小 : {}" + + #: plugins/repodiff.py:225 + msgid "Size of modified packages: {}" +-msgstr "" ++msgstr "修改的软件包的大小 : {}" + + #: plugins/repodiff.py:228 + msgid "Size of upgraded packages: {}" +-msgstr "" ++msgstr "升级的软件包的大小 : {}" + + #: plugins/repodiff.py:230 + msgid "Size of downgraded packages: {}" +-msgstr "" ++msgstr "降级的软件包的大小 : {}" + + #: plugins/repodiff.py:232 + msgid "Size change: {}" +-msgstr "" ++msgstr "大小改变 : {}" + + #: plugins/repograph.py:50 + msgid "Output a full package dependency graph in dot format" +@@ -891,84 +1043,96 @@ msgstr "要保留的最新的 N 个软件包 - 默认值为 1" + msgid "Path to directory" + msgstr "指向目录的路径" + +-#: plugins/reposync.py:54 ++#: plugins/reposync.py:55 + msgid "download all packages from remote repo" + msgstr "下载远程仓库中的全部软件包" + +-#: plugins/reposync.py:63 ++#: plugins/reposync.py:64 + msgid "download only packages for this ARCH" + msgstr "只下载这个 ARCH 的软件包" + +-#: plugins/reposync.py:65 ++#: plugins/reposync.py:66 + msgid "delete local packages no longer present in repository" + msgstr "删除已不在仓库中的本地软件包" + +-#: plugins/reposync.py:67 +-msgid "also download and uncompress comps.xml" +-msgstr "" +- +-#: plugins/reposync.py:69 ++#: plugins/reposync.py:68 + msgid "download all the metadata." +-msgstr "" ++msgstr "下载所有元数据" + +-#: plugins/reposync.py:71 +-msgid "download only newest packages per-repo" +-msgstr "只下载最新的软件包 per-repo" ++#: plugins/reposync.py:70 ++msgid "Remove packages that fail GPG signature checking after downloading" ++msgstr "下载后删除无法进行 GPG 签名检查的软件包" + + #: plugins/reposync.py:73 +-msgid "where to store downloaded repositories" +-msgstr "" ++msgid "also download and uncompress comps.xml" ++msgstr "同时下载并解压 comps.xml" + + #: plugins/reposync.py:75 +-msgid "Don't add the reponame to the download path." +-msgstr "" +- +-#: plugins/reposync.py:77 + msgid "" + "where to store downloaded repository metadata. Defaults to the value of " + "--download-path." +-msgstr "" ++msgstr "存储下载的仓库元数据的位置。默认为 --download-path 的值。" ++ ++#: plugins/reposync.py:78 ++msgid "download only newest packages per-repo" ++msgstr "只下载最新的软件包 per-repo" + + #: plugins/reposync.py:80 +-msgid "operate on source packages" +-msgstr "在源软件包中操作" ++msgid "Don't add the reponame to the download path." ++msgstr "不要在下载路径中添加仓库名(reponame)。" + + #: plugins/reposync.py:82 ++msgid "where to store downloaded repositories" ++msgstr "存储下载的仓库的位置" ++ ++#: plugins/reposync.py:84 + msgid "try to set local timestamps of local files by the one on the server" +-msgstr "" ++msgstr "根据服务器上的文件设置本地文件的本地时间戳" + +-#: plugins/reposync.py:85 ++#: plugins/reposync.py:87 ++msgid "operate on source packages" ++msgstr "在源软件包中操作" ++ ++#: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" +-msgstr "" ++msgstr "只列出要下载内容的 url,不实际下载" + +-#: plugins/reposync.py:109 ++#: plugins/reposync.py:113 + msgid "Can't use --norepopath with multiple repositories" +-msgstr "" ++msgstr "不能使用 --norepopath 与多个仓库一起使用。" + +-#: plugins/reposync.py:127 ++#: plugins/reposync.py:132 + #, python-format + msgid "Failed to get mirror for metadata: %s" +-msgstr "" ++msgstr "获取元数据镜像失败:%s" + +-#: plugins/reposync.py:144 ++#: plugins/reposync.py:149 + msgid "Failed to get mirror for the group file." +-msgstr "" ++msgstr "获取组文件镜像失败" ++ ++#: plugins/reposync.py:168 ++msgid "Removing {}: {}" ++msgstr "正在删除 {}: {}" + + #: plugins/reposync.py:175 ++msgid "GPG signature check failed." ++msgstr "GPG 签名检查失败。" ++ ++#: plugins/reposync.py:196 + msgid "Download target '{}' is outside of download path '{}'." +-msgstr "" ++msgstr "下载的目标 '{}' 在下载路径 '{}' 以外。" + +-#: plugins/reposync.py:190 ++#: plugins/reposync.py:211 + #, python-format + msgid "[DELETED] %s" + msgstr "[DELETED] %s" + +-#: plugins/reposync.py:192 ++#: plugins/reposync.py:213 + #, python-format + msgid "failed to delete file %s" + msgstr "无法删除文件 %s" + +-#: plugins/reposync.py:201 ++#: plugins/reposync.py:222 + #, python-format + msgid "comps.xml for repository %s saved" + msgstr "仓库 %s 的 comps.xml 已保存" +@@ -996,15 +1160,15 @@ msgstr "正在添加排除:" + + #: plugins/versionlock.py:36 + msgid "Package already locked in equivalent form:" +-msgstr "" ++msgstr "软件包已使用等同的格式锁定:" + + #: plugins/versionlock.py:37 + msgid "Package {} is already locked" +-msgstr "" ++msgstr "软件包 {} 已被锁定" + + #: plugins/versionlock.py:38 + msgid "Package {} is already excluded" +-msgstr "" ++msgstr "软件包 {} 已被排除" + + #: plugins/versionlock.py:39 + msgid "Deleting versionlock for:" +@@ -1036,7 +1200,7 @@ msgstr "控制软件包版本锁" + + #: plugins/versionlock.py:136 + msgid "Use package specifications as they are, do not try to parse them" +-msgstr "" ++msgstr "按原样使用程序包规格,请勿尝试解析它们" + + #~ msgid "" + #~ "\n" +-- +2.29.2 + diff --git a/SOURCES/0005-debug-Do-not-remove-install-only-packages-RhBug-1844.patch b/SOURCES/0005-debug-Do-not-remove-install-only-packages-RhBug-1844.patch deleted file mode 100644 index 15e896f..0000000 --- a/SOURCES/0005-debug-Do-not-remove-install-only-packages-RhBug-1844.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 5a05773dfcfbd317e082a8a58edc391d53bed845 Mon Sep 17 00:00:00 2001 -From: Marek Blaha -Date: Thu, 2 Jul 2020 14:30:34 +0200 -Subject: [PATCH 5/5] [debug] Do not remove install-only packages - (RhBug:1844533) - -Running debug-restore command may result in an attempt to remove the -running kernel (in case the running kernel package is not present in the -dump file). -Newly the install-only packages are not removed, only the versions -mentioned in the dump file are marked for installation (the decision on -what versions to keep on the system is done according to -installonly_limit config option). -New option `--remove-installonly` to force removal of those versions of -install-only packages that are not present in the dump file is -introduced. - -https://bugzilla.redhat.com/show_bug.cgi?id=1844533 ---- - doc/debug.rst | 18 +++++++++++++++++- - plugins/debug.py | 13 +++++++++---- - 2 files changed, 26 insertions(+), 5 deletions(-) - -diff --git a/doc/debug.rst b/doc/debug.rst -index ee9860f..2f8418f 100644 ---- a/doc/debug.rst -+++ b/doc/debug.rst -@@ -23,7 +23,18 @@ DNF debug Plugin - Description - ----------- - --Writes system RPM configuration to a dump file and restore it. -+The plugin provides two dnf commands: -+ -+``debug-dump`` -+ Writes system RPM configuration to a dump file -+ -+``debug-restore`` -+ Restore the installed packages to the versions written in the dump file. By -+ default, it does not remove already installed versions of install-only -+ packages and only marks those versions that are mentioned in the dump file -+ for installation. The final decision on which versions to keep on the -+ system is left to dnf and can be fine-tuned using the `installonly_limit` -+ (see :manpage:`dnf.conf(5)`) configuration option. - - .. note:: DNF and Yum debug files are not compatible and thus can't be used - by the other program. -@@ -70,3 +81,8 @@ All general DNF options are accepted, see `Options` in :manpage:`dnf(8)` for det - ``--output`` - Only output list of packages which will be installed or removed. - No actuall changes are done. -+ -+``--remove-installonly`` -+ Allow removal of install-only packages. Using this option may result in an -+ attempt to remove the running kernel version (in situations when the currently -+ running kernel version is not part of the dump file). -diff --git a/plugins/debug.py b/plugins/debug.py -index efe6bea..ad136a9 100644 ---- a/plugins/debug.py -+++ b/plugins/debug.py -@@ -194,6 +194,10 @@ class DebugRestoreCommand(dnf.cli.Command): - "--filter-types", metavar="[install, remove, replace]", - default="install, remove, replace", - help=_("limit to specified type")) -+ parser.add_argument( -+ "--remove-installonly", action="store_true", -+ help=_('Allow removing of install-only packages. Using this option may ' -+ 'result in an attempt to remove the running kernel.')) - parser.add_argument( - "filename", nargs=1, help=_("name of dump file")) - -@@ -238,10 +242,11 @@ class DebugRestoreCommand(dnf.cli.Command): - # package should not be installed - pkg_remove = True - if pkg_remove and "remove" in opts.filter_types: -- if opts.output: -- print("remove %s" % spec) -- else: -- self.base.package_remove(pkg) -+ if pkg not in installonly_pkgs or opts.remove_installonly: -+ if opts.output: -+ print("remove %s" % spec) -+ else: -+ self.base.package_remove(pkg) - - def process_dump(self, dump_pkgs, opts): - for (n, a) in sorted(dump_pkgs.keys()): --- -2.25.4 - diff --git a/SOURCES/0006-Update-translations-RhBug-1820546.patch b/SOURCES/0006-Update-translations-RhBug-1820546.patch deleted file mode 100644 index 4d5f640..0000000 --- a/SOURCES/0006-Update-translations-RhBug-1820546.patch +++ /dev/null @@ -1,7289 +0,0 @@ -From 94b8d182d1b643303a7ebfc96630621f3ddb0dce Mon Sep 17 00:00:00 2001 -From: Marek Blaha -Date: Tue, 28 Jul 2020 15:55:33 +0200 -Subject: [PATCH] Update translations (RhBug:1820546) - -https://bugzilla.redhat.com/show_bug.cgi?id=1820546 ---- - po/fr.po | 1627 ++++++++++++++++++++++++++------------------------- - po/ja.po | 1520 ++++++++++++++++++++++++----------------------- - po/ko.po | 1454 +++++++++++++++++++++++---------------------- - po/zh_CN.po | 1502 ++++++++++++++++++++++++----------------------- - 4 files changed, 3173 insertions(+), 2930 deletions(-) - -diff --git a/po/fr.po b/po/fr.po -index 1645052..0b59798 100644 ---- a/po/fr.po -+++ b/po/fr.po -@@ -5,87 +5,97 @@ - # Jean-Baptiste Holcroft , 2018. #zanata, 2020. - # Ludek Janda , 2018. #zanata - # Jean-Baptiste Holcroft , 2019. #zanata, 2020. -+# Julien Humbert , 2020. - msgid "" - msgstr "" - "Project-Id-Version: PACKAGE VERSION\n" - "Report-Msgid-Bugs-To: \n" --"POT-Creation-Date: 2020-03-19 14:54+0100\n" --"PO-Revision-Date: 2020-03-19 21:07+0000\n" --"Last-Translator: Jean-Baptiste Holcroft \n" -+"POT-Creation-Date: 2020-06-26 09:18-0400\n" -+"PO-Revision-Date: 2020-05-27 17:40+0000\n" -+"Last-Translator: Julien Humbert \n" - "Language-Team: French \n" - "Language: fr\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" - "Plural-Forms: nplurals=2; plural=n > 1;\n" --"X-Generator: Weblate 3.11.3\n" -+"X-Generator: Weblate 4.0.4\n" - --#: ../plugins/reposync.orig.py:42 ../plugins/reposync.py:54 --#: ../plugins/reposync.175df5c.py:42 --msgid "download all packages from remote repo" --msgstr "télécharger tous les paquets depuis le dépôt distant" -+#: plugins/builddep.py:45 -+msgid "[PACKAGE|PACKAGE.spec]" -+msgstr "[PAQUET|PAQUET.spec]" - --#: ../plugins/reposync.orig.py:48 ../plugins/reposync.py:63 --#: ../plugins/reposync.175df5c.py:48 --msgid "download only packages for this ARCH" --msgstr "télécharger seulement les paquets s’appliquant à cette ARCH" -+#: plugins/builddep.py:85 -+#, python-format -+msgid "'%s' is not of the format 'MACRO EXPR'" -+msgstr "« %s » n’est pas du format « MACRO EXPR »" - --#: ../plugins/reposync.orig.py:50 ../plugins/reposync.py:65 --#: ../plugins/reposync.175df5c.py:50 --msgid "delete local packages no longer present in repository" --msgstr "supprimer les paquets locaux qui ne sont plus présents dans le dépôt" -+#: plugins/builddep.py:90 -+msgid "packages with builddeps to install" -+msgstr "paquets avec dépendances de construction à installer" - --#: ../plugins/reposync.orig.py:52 ../plugins/reposync.175df5c.py:52 --msgid "also download comps.xml" --msgstr "télécharger comps.xml également" -+#: plugins/builddep.py:93 -+msgid "define a macro for spec file parsing" -+msgstr "définit une macro pour l’interprétation du fichier spec" - --#: ../plugins/reposync.orig.py:54 ../plugins/reposync.py:71 --#: ../plugins/reposync.175df5c.py:54 --msgid "download only newest packages per-repo" --msgstr "ne télécharger que les nouveaux paquets per-rep" -+#: plugins/builddep.py:95 -+msgid "skip build dependencies not available in repositories" -+msgstr "" -+"ignorer les dépendances de compilation non disponibles dans les dépôts" - --#: ../plugins/reposync.orig.py:56 ../plugins/reposync.175df5c.py:56 --msgid "where to store downloaded repositories " --msgstr "là où stocker les dépôts téléchargés " -+#: plugins/builddep.py:98 -+msgid "treat commandline arguments as spec files" -+msgstr "traite les arguments en ligne de commande comme des fichiers spec" - --#: ../plugins/reposync.orig.py:58 ../plugins/reposync.py:80 --#: ../plugins/reposync.175df5c.py:58 --msgid "operate on source packages" --msgstr "opère sur les paquets source" -+#: plugins/builddep.py:100 -+msgid "treat commandline arguments as source rpm" -+msgstr "traite les arguments en ligne de commande comme des sources rpm" -+ -+#: plugins/builddep.py:144 -+msgid "RPM: {}" -+msgstr "RPM : {}" -+ -+#: plugins/builddep.py:153 -+msgid "Some packages could not be found." -+msgstr "Certains paquets n’ont pu être trouvés." - --#: ../plugins/reposync.orig.py:98 ../plugins/reposync.py:190 --#: ../plugins/reposync.175df5c.py:95 -+#. 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 "[DELETED] %s" --msgstr "[DELETED] %s" -+msgid "No matching package to install: '%s'" -+msgstr "Aucun paquet correspondant à installer : « %s »" - --#: ../plugins/reposync.orig.py:100 ../plugins/reposync.py:192 --#: ../plugins/reposync.175df5c.py:97 -+#: plugins/builddep.py:191 - #, python-format --msgid "failed to delete file %s" --msgstr "n’a pas pu supprimer le fichier %s" -+msgid "Failed to open: '%s', not a valid source rpm file." -+msgstr "Échec d’ouverture : « %s », n’est pas un fichier source rpm valide." -+ -+#: plugins/builddep.py:204 plugins/builddep.py:220 plugins/builddep.py:237 -+msgid "Not all dependencies satisfied" -+msgstr "Toutes les dépendances ne sont pas satisfaites" - --#: ../plugins/reposync.orig.py:110 ../plugins/reposync.175df5c.py:107 -+#: plugins/builddep.py:211 - #, python-format --msgid "Could not make repository directory: %s" --msgstr "N'a pas pu créer le répertoire de dépôt : %s" -+msgid "Failed to open: '%s', not a valid spec file: %s" -+msgstr "Échec à l’ouverture de « %s », %s n’est pas un fichier spec valide" - --#: ../plugins/reposync.orig.py:114 ../plugins/reposync.py:201 --#: ../plugins/reposync.175df5c.py:111 -+#: plugins/builddep.py:230 plugins/repoclosure.py:118 - #, python-format --msgid "comps.xml for repository %s saved" --msgstr "comps.xml pour le dépôt %s sauvegardé" -+msgid "no package matched: %s" -+msgstr "aucun paquet ne correspond à : %s" - --#: ../plugins/changelog.py:37 -+#: plugins/changelog.py:37 - #, python-brace-format - msgid "Not a valid date: \"{0}\"." - msgstr "Date invalide : « {0} »." - --#: ../plugins/changelog.py:43 -+#: plugins/changelog.py:43 - msgid "Show changelog data of packages" - msgstr "affiche le contenu du journal des changements des paquets" - --#: ../plugins/changelog.py:51 -+#: plugins/changelog.py:51 - msgid "" - "show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " - "is recommended." -@@ -93,12 +103,12 @@ msgstr "" - "affiche les entrées du journal des changements depuis DATE. Pour éviter " - "l’ambiguïté, le format AAAA-MM-JJ est recommandé." - --#: ../plugins/changelog.py:55 -+#: plugins/changelog.py:55 - msgid "show given number of changelog entries per package" - msgstr "" - "afficher le nombre donné d’entrées de journal des changements par paquet" - --#: ../plugins/changelog.py:58 -+#: plugins/changelog.py:58 - msgid "" - "show only new changelog entries for packages, that provide an upgrade for " - "some of already installed packages." -@@ -107,663 +117,504 @@ msgstr "" - "paquets qui fournissent une mise à niveau pour certains paquets déjà " - "installés." - --#: ../plugins/changelog.py:60 -+#: plugins/changelog.py:60 - msgid "PACKAGE" - msgstr "PAQUET" - --#: ../plugins/changelog.py:81 ../plugins/debuginfo-install.py:90 -+#: plugins/changelog.py:81 plugins/debuginfo-install.py:90 - #, python-format - msgid "No match for argument: %s" - msgstr "Aucune correspondance pour l’argument : %s" - --#: ../plugins/changelog.py:109 -+#: plugins/changelog.py:109 - msgid "Listing changelogs since {}" - msgstr "Liste des journaux des changements depuis {}" - --#: ../plugins/changelog.py:111 -+#: plugins/changelog.py:111 - msgid "Listing only latest changelog" - msgid_plural "Listing {} latest changelogs" - msgstr[0] "Liste uniquement les derniers changements" - msgstr[1] "Liste les {} derniers changements" - --#: ../plugins/changelog.py:116 -+#: plugins/changelog.py:116 - msgid "Listing only new changelogs since installed version of the package" - msgstr "" - "Liste uniquement les nouveaux changements depuis la version installée du " - "paquet" - --#: ../plugins/changelog.py:118 -+#: plugins/changelog.py:118 - msgid "Listing all changelogs" - msgstr "Liste tous les changements" - --#: ../plugins/changelog.py:122 -+#: plugins/changelog.py:122 - msgid "Changelogs for {}" - msgstr "Changements pour {}" - --#: ../plugins/debuginfo-install.py:56 --msgid "install debuginfo packages" --msgstr "installe les paquets debuginfo" -- --#: ../plugins/debuginfo-install.py:180 --#, python-format --msgid "" --"Could not find debuginfo package for the following available packages: %s" --msgstr "" --"Impossible de trouver le paquet debuginfo pour ces paquets disponibles : %s" -- --#: ../plugins/debuginfo-install.py:185 --#, python-format --msgid "" --"Could not find debugsource package for the following available packages: %s" --msgstr "" --"Impossible de trouver le paquet debugsource pour ces paquets disponibles : " --"%s" -- --#: ../plugins/debuginfo-install.py:190 --#, python-format --msgid "" --"Could not find debuginfo package for the following installed packages: %s" --msgstr "" --"Impossible de trouver le paquet debuginfo pour ces paquets installés : %s" -- --#: ../plugins/debuginfo-install.py:195 --#, python-format --msgid "" --"Could not find debugsource package for the following installed packages: %s" --msgstr "" --"Impossible de trouver le paquet debugsource pour ces paquets installés : %s" -- --#: ../plugins/debuginfo-install.py:199 --msgid "Unable to find a match" --msgstr "Impossible de trouver une correspondance" -- --#: ../plugins/versionlock_old.py:32 ../plugins/versionlock.py:32 --#: ../plugins/versionlock_master.py:32 --#, python-format --msgid "Unable to read version lock configuration: %s" --msgstr "Ne peut lire la configuration du verrouillage de version : %s" -- --#: ../plugins/versionlock_old.py:33 ../plugins/versionlock.py:33 --#: ../plugins/versionlock_master.py:33 --msgid "Locklist not set" --msgstr "Liste des verrouillages non établie" -- --#: ../plugins/versionlock_old.py:34 ../plugins/versionlock.py:34 --#: ../plugins/versionlock_master.py:34 --msgid "Adding versionlock on:" --msgstr "Verrouille la version de :" -- --#: ../plugins/versionlock_old.py:35 ../plugins/versionlock.py:35 --#: ../plugins/versionlock_master.py:35 --msgid "Adding exclude on:" --msgstr "Exclusion de :" -- --#: ../plugins/versionlock_old.py:36 ../plugins/versionlock.py:39 --#: ../plugins/versionlock_master.py:36 --msgid "Deleting versionlock for:" --msgstr "Déverrouille la version de :" -- --#: ../plugins/versionlock_old.py:37 ../plugins/versionlock.py:40 --#: ../plugins/versionlock_master.py:37 --msgid "No package found for:" --msgstr "Aucun paquet trouvé pour :" -- --#: ../plugins/versionlock_old.py:38 ../plugins/versionlock.py:41 --#: ../plugins/versionlock_master.py:38 --msgid "Excludes from versionlock plugin were not applied" --msgstr "Les exclusions du plugin versionlock n’ont pas été appliquées" -- --#: ../plugins/versionlock_old.py:102 ../plugins/versionlock.py:127 --#: ../plugins/versionlock_master.py:119 --msgid "control package version locks" --msgstr "contrôle le verrouillage de version des paquets" -- --#: ../plugins/migrate.py:45 --msgid "migrate yum's history, group and yumdb data to dnf" --msgstr "migrer les données d’historique, de groupe et de yumdb, vers dnf" -- --#: ../plugins/migrate.py:54 --msgid "Migrating history data..." --msgstr "Migration des données d’historique …" -- --#: ../plugins/repograph.py:50 --msgid "Output a full package dependency graph in dot format" --msgstr "Sortie d’un graphe de dépendance des paquets complet au format dot" -- --#: ../plugins/repograph.py:110 --#, python-format --msgid "Nothing provides: '%s'" --msgstr "Aucun paquet ne fournit : « %s »" -- --#: ../plugins/versionlock.py:36 --msgid "Package already locked in equivalent form:" --msgstr "Paquet déjà verrouillé sous une forme équivalente :" -- --#: ../plugins/versionlock.py:37 --msgid "Package {} is already locked" --msgstr "Le paquet {} est déjà verrouillé" -- --#: ../plugins/versionlock.py:38 --msgid "Package {} is already excluded" --msgstr "Le paquet {} est déjà exclu" -- --#: ../plugins/versionlock.py:42 ../plugins/versionlock_master.py:39 --msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" --msgstr "" --"Plugin versionlock : nombre de règles de verrouillage du fichier \"{}\" " --"appliquées : {}" -- --#: ../plugins/versionlock.py:43 ../plugins/versionlock_master.py:40 --msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" --msgstr "" --"Plugin versionlock : nombre de règles d’exclusion du fichier \"{}\" " --"appliquées : {}" -- --#: ../plugins/versionlock.py:44 ../plugins/versionlock_master.py:41 --msgid "Versionlock plugin: could not parse pattern:" --msgstr "Plugin versionlock : n’a pas pu analyser le modèle :" -- --#: ../plugins/versionlock.py:133 --msgid "Use package specifications as they are, do not try to parse them" --msgstr "" --"Utiliser les spécifications de paquet telles quelles, ne pas essayer de les " --"analyser" -- --#: ../plugins/post-transaction-actions.py:71 --#, python-format --msgid "Bad Action Line \"%s\": %s" --msgstr "Mauvaise ligne d’action « %s » : %s" -- --#. unsupported state, skip it --#: ../plugins/post-transaction-actions.py:130 --#, python-format --msgid "Bad Transaction State: %s" --msgstr "Mauvais état de transaction : %s" -- --#: ../plugins/post-transaction-actions.py:153 --#: ../plugins/post-transaction-actions.py:155 --#, python-format --msgid "post-transaction-actions: %s" --msgstr "post-transaction-actions : %s" -- --#: ../plugins/post-transaction-actions.py:157 --#, python-format --msgid "post-transaction-actions: Bad Command \"%s\": %s" --msgstr "post-transaction-actions : mauvaise commande « %s » : %s" -- --#: ../plugins/builddep.py:45 --msgid "[PACKAGE|PACKAGE.spec]" --msgstr "[PAQUET|PAQUET.spec]" -- --#: ../plugins/builddep.py:85 --#, python-format --msgid "'%s' is not of the format 'MACRO EXPR'" --msgstr "« %s » n’est pas du format « MACRO EXPR »" -- --#: ../plugins/builddep.py:90 --msgid "packages with builddeps to install" --msgstr "paquets avec dépendances de construction à installer" -- --#: ../plugins/builddep.py:93 --msgid "define a macro for spec file parsing" --msgstr "définit une macro pour l’interprétation du fichier spec" -- --#: ../plugins/builddep.py:95 --msgid "skip build dependencies not available in repositories" --msgstr "" --"ignorer les dépendances de compilation non disponibles dans les dépôts" -- --#: ../plugins/builddep.py:98 --msgid "treat commandline arguments as spec files" --msgstr "traite les arguments en ligne de commande comme des fichiers spec" -- --#: ../plugins/builddep.py:100 --msgid "treat commandline arguments as source rpm" --msgstr "traite les arguments en ligne de commande comme des sources rpm" -- --#: ../plugins/builddep.py:144 --msgid "RPM: {}" --msgstr "RPM : {}" -- --#: ../plugins/builddep.py:153 --msgid "Some packages could not be found." --msgstr "Certains paquets n’ont pu être trouvés." -- --#. 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 "Aucun paquet correspondant à installer : « %s »" -- --#: ../plugins/builddep.py:191 --#, python-format --msgid "Failed to open: '%s', not a valid source rpm file." --msgstr "Échec d’ouverture : « %s », n’est pas un fichier source rpm valide." -- --#: ../plugins/builddep.py:204 ../plugins/builddep.py:220 --#: ../plugins/builddep.py:237 --msgid "Not all dependencies satisfied" --msgstr "Toutes les dépendances ne sont pas satisfaites" -- --#: ../plugins/builddep.py:211 --#, python-format --msgid "Failed to open: '%s', not a valid spec file: %s" --msgstr "Échec à l’ouverture de « %s », %s n’est pas un fichier spec valide" -- --#: ../plugins/builddep.py:230 ../plugins/repoclosure.py:118 --#, python-format --msgid "no package matched: %s" --msgstr "aucun paquet ne correspond à : %s" -- --#: ../plugins/config_manager.py:37 -+#: plugins/config_manager.py:37 - #, python-brace-format - msgid "manage {prog} configuration options and repositories" - msgstr "gestion de la configuration et des dépôts {prog}" - --#: ../plugins/config_manager.py:44 -+#: plugins/config_manager.py:44 - msgid "repo to modify" - msgstr "dépôt à modifier" - --#: ../plugins/config_manager.py:47 -+#: plugins/config_manager.py:47 - msgid "save the current options (useful with --setopt)" - msgstr "enregistrer les options actuelles (utile avec --setopt)" - --#: ../plugins/config_manager.py:50 -+#: plugins/config_manager.py:50 - msgid "add (and enable) the repo from the specified file or url" - msgstr "ajoute (et active) le dépôt à partir du fichier ou de l’url indiqué" - --#: ../plugins/config_manager.py:53 -+#: plugins/config_manager.py:53 - msgid "print current configuration values to stdout" - msgstr "" - "affiche les valeurs de la configuration actuelle sur la sortie standard" - --#: ../plugins/config_manager.py:56 -+#: plugins/config_manager.py:56 - msgid "print variable values to stdout" - msgstr "affiche les valeurs des variables sur la sortie standard" - --#: ../plugins/config_manager.py:70 -+#: plugins/config_manager.py:60 -+msgid "enable repos (automatically saves)" -+msgstr "activer les dépôts (enregistre automatiquement)" -+ -+#: plugins/config_manager.py:63 -+msgid "disable repos (automatically saves)" -+msgstr "désactiver les dépôts (enregistre automatiquement)" -+ -+#: plugins/config_manager.py:77 - msgid "one of the following arguments is required: {}" - msgstr "un des paramètres suivants est nécessaire : {}" - --#: ../plugins/config_manager.py:113 -+#: plugins/config_manager.py:86 -+msgid "" -+"Warning: --enablerepo/--disablerepo arguments have no meaningwith config " -+"manager. Use --set-enabled/--set-disabled instead." -+msgstr "" -+"Attention : les arguments --enablerepo/--disablerepo n’ont aucune " -+"signification avec le gestionnaire de configuration. Utilisez plutôt --set-" -+"enabled/--set-disabled." -+ -+#: plugins/config_manager.py:131 - #, python-format - msgid "No matching repo to modify: %s." - msgstr "Aucun dépôt correspondant à modifier : %s." - --#: ../plugins/config_manager.py:164 -+#: plugins/config_manager.py:182 - #, python-format - msgid "Adding repo from: %s" - msgstr "Ajout du dépôt depuis : %s" - --#: ../plugins/config_manager.py:188 -+#: plugins/config_manager.py:206 - msgid "Configuration of repo failed" - msgid_plural "Configuration of repos failed" - msgstr[0] "La configuration du dépôt a échoué" - msgstr[1] "La configuration des dépôts a échoué" - --#: ../plugins/config_manager.py:198 -+#: plugins/config_manager.py:216 - #, python-format - 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/local.py:122 --msgid "Unable to create a directory '{}' due to '{}'" --msgstr "Impossible de créer le répertoire « {} » du fait de « {} »" -- --#: ../plugins/local.py:126 --msgid "'{}' is not a directory" --msgstr "« {} » n’est pas un répertoire" -- --#: ../plugins/local.py:135 --msgid "Copying '{}' to local repo" --msgstr "Copie de « {} » vers le dépôt local en cours" -- --#: ../plugins/local.py:141 --msgid "Can't write file '{}'" --msgstr "Impossible d’écrire le fichier « {} »" -+#: plugins/copr.py:59 -+msgid "y" -+msgstr "o" - --#: ../plugins/local.py:156 --msgid "Rebuilding local repo" --msgstr "Reconstruction du dépôt local" -+#: plugins/copr.py:59 -+msgid "yes" -+msgstr "oui" - --#: ../plugins/leaves.py:32 --msgid "List installed packages not required by any other package" --msgstr "" --"Lister les paquets installés qui ne sont pas requis par un autre paquet" -+#: plugins/copr.py:60 -+msgid "n" -+msgstr "n" - --#: ../plugins/needs_restarting.py:173 --msgid "determine updated binaries that need restarting" --msgstr "détermine les binaires mis à jour qui nécessitent un redémarrage" -+#: plugins/copr.py:60 -+msgid "no" -+msgstr "non" - --#: ../plugins/needs_restarting.py:178 --msgid "only consider this user's processes" --msgstr "considère uniquement les processus de cet utilisateur" -+#: plugins/copr.py:79 -+msgid "Interact with Copr repositories." -+msgstr "Interagit avec les dépôts Copr." - --#: ../plugins/needs_restarting.py:180 -+#: plugins/copr.py:81 - msgid "" --"only report whether a reboot is required (exit code 1) or not (exit code 0)" --msgstr "" --"indique uniquement si un démarrage (reboot) est requis (exit code 1) ou non " --"(exit code 0)" -- --#: ../plugins/needs_restarting.py:199 --msgid "Core libraries or services have been updated since boot-up:" -+"\n" -+" enable name/project [chroot]\n" -+" disable name/project\n" -+" remove name/project\n" -+" list --installed/enabled/disabled\n" -+" list --available-by-user=NAME\n" -+" search project\n" -+"\n" -+" Examples:\n" -+" copr enable rhscl/perl516 epel-6-x86_64\n" -+" copr enable ignatenkobrain/ocltoys\n" -+" copr disable rhscl/perl516\n" -+" copr remove rhscl/perl516\n" -+" copr list --enabled\n" -+" copr list --available-by-user=ignatenkobrain\n" -+" copr search tests\n" -+" " - msgstr "" --"les bibliothèques et les services de base ont été mis à jour depuis le " --"démarrage (boot-up) :" -+"\n" -+" enable nom/projet [chroot]\n" -+" disable nom/projet\n" -+" remove nom/projet\n" -+" list --installed/enabled/disabled\n" -+" list --available-by-user=NOM\n" -+" search projet\n" -+"\n" -+" Exemples :\n" -+" copr enable rhscl/perl516 epel-6-x86_64\n" -+" copr enable ignatenkobrain/ocltoys\n" -+" copr disable rhscl/perl516\n" -+" copr remove rhscl/perl516\n" -+" copr list --enabled¶\n" -+" copr list --available-by-user=ignatenkobrain¶\n" -+" copr search tests\n" -+" " - --#: ../plugins/needs_restarting.py:204 --msgid "Reboot is required to fully utilize these updates." --msgstr "" --"Un nouveau démarrage est requis pour pouvoir bénéficier totalement de ces " --"mises à jour." -+#: plugins/copr.py:107 -+msgid "List all installed Copr repositories (default)" -+msgstr "Lister tous les dépôts Copr installés (par défaut)" - --#: ../plugins/needs_restarting.py:205 --msgid "More information:" --msgstr "Plus d’information :" -+#: plugins/copr.py:109 -+msgid "List enabled Copr repositories" -+msgstr "Lister les dépôts Copr activés" - --#: ../plugins/needs_restarting.py:209 --msgid "No core libraries or services have been updated since boot-up." --msgstr "" --"Aucune bibliothèque ou service de base n’a été mis à jour depuis le " --"démarrage." -+#: plugins/copr.py:111 -+msgid "List disabled Copr repositories" -+msgstr "Lister les dépôts Copr désactivés" - --#: ../plugins/needs_restarting.py:211 --msgid "Reboot should not be necessary." --msgstr "Un nouveau démarrage ne devrait pas être utile." -+#: plugins/copr.py:113 -+msgid "List available Copr repositories by user NAME" -+msgstr "Lister les dépôts Copr disponibles par NOM d’utilisateur" - --#: ../plugins/repoclosure.py:42 --msgid "Display a list of unresolved dependencies for repositories" --msgstr "Affiche une liste de dépendances non résolues pour les dépôts" -+#: plugins/copr.py:115 -+msgid "Specify an instance of Copr to work with" -+msgstr "Précisez une instance Copr avec laquelle travailler" - --#: ../plugins/repoclosure.py:66 --msgid "Repoclosure ended with unresolved dependencies." --msgstr "Repoclosure a terminé avec des dépendances non-résolues." -+#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 -+msgid "Error: " -+msgstr "Erreur : " - --#: ../plugins/repoclosure.py:153 --msgid "check packages of the given archs, can be specified multiple times" -+#: plugins/copr.py:150 -+msgid "" -+"specify Copr hub either with `--hub` or using " -+"`copr_hub/copr_username/copr_projectname` format" - msgstr "" --"vérifie les paquets pour les architectures spécifiées, peut être utilisé " --"plusieurs fois" -- --#: ../plugins/repoclosure.py:156 --msgid "Specify repositories to check" --msgstr "Spécifie les dépôts à vérifier" -- --#: ../plugins/repoclosure.py:158 --msgid "Check only the newest packages in the repos" --msgstr "Vérifier uniquement les paquets les plus récents dans les dépôts" -+"précisez un hub Copr soit via `--hub` ou en utilisant le format " -+"`hub_copr/utilisateur_copr/projet_copr`" - --#: ../plugins/repoclosure.py:161 --msgid "Check closure for this package only" --msgstr "Vérifie la clôture pour ce paquet seulement" -+#: plugins/copr.py:153 -+msgid "multiple hubs specified" -+msgstr "de multiples hubs ont été renseignés" - --#: ../plugins/repodiff.py:45 --msgid "List differences between two sets of repositories" --msgstr "Liste les différences entre deux ensembles de dépôts" -+#: plugins/copr.py:218 plugins/copr.py:222 -+msgid "exactly two additional parameters to copr command are required" -+msgstr "la commande copr requiert exactement deux paramètres additionnels" - --#: ../plugins/repodiff.py:58 --msgid "Specify old repository, can be used multiple times" --msgstr "Définir un ancien dépôt, peut être utilisé plusieurs fois" -+#: plugins/copr.py:238 -+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/repodiff.py:60 --msgid "Specify new repository, can be used multiple times" --msgstr "Définir un nouveau dépôt, peut être utilisé plusieurs fois" -+#: plugins/copr.py:240 -+msgid "bad copr project format" -+msgstr "mauvais format de projet copr" - --#: ../plugins/repodiff.py:63 -+#: plugins/copr.py:254 - msgid "" --"Specify architectures to compare, can be used multiple times. By default, " --"only source rpms are compared." -+"\n" -+"Enabling a Copr repository. Please note that this repository is not part\n" -+"of the main distribution, and quality may vary.\n" -+"\n" -+"The Fedora Project does not exercise any power over the contents of\n" -+"this repository beyond the rules outlined in the Copr FAQ at\n" -+",\n" -+"and packages are not held to any quality or security level.\n" -+"\n" -+"Please do not file bug reports about these packages in Fedora\n" -+"Bugzilla. In case of problems, contact the owner of this repository.\n" - msgstr "" --"Définir les architectures à comparer, peut-être utilisé plusieurs fois. Par " --"défaut, les rpms source sont comparés." -+"\n" -+"Activation d’un dépôt Copr. Veuillez noter que ce dépôt n’est pas\n" -+"partie intégrante de la distribution, et que la qualité pourrait varier.\n" -+"\n" -+"Le projet Fedora n’exerce aucun pouvoir sur le contenu de ce dépôt au delà\n" -+"des règles précisées dans la FAQ Copr \n" -+",\n" -+"et les paquets ne sont tenus à aucun niveau de qualité ou de sécurité.\n" -+"\n" -+"Veuillez ne pas signaler de bogues à propos de ces paquets dans le Bugzilla de Fedora.\n" -+"En cas de problèmes, contactez le propriétaire de ce dépôt.\n" - --#: ../plugins/repodiff.py:67 --msgid "Output additional data about the size of the changes." --msgstr "Affichez des données supplémentaires sur la taille des changements." -+#: plugins/copr.py:271 -+msgid "Repository successfully enabled." -+msgstr "Activation du dépôt réussie." - --#: ../plugins/repodiff.py:69 --msgid "" --"Compare packages also by arch. By default packages are compared just by " --"name." --msgstr "" --"Compare également les paquets par architecture. Par défaut, les paquets sont" --" uniquement comparés par nom." -+#: plugins/copr.py:276 -+msgid "Repository successfully disabled." -+msgstr "Désactivation du dépôt réussie." - --#: ../plugins/repodiff.py:72 --msgid "Output a simple one line message for modified packages." --msgstr "Produit un message simple d’une ligne pour les paquets modifiés." -+#: plugins/copr.py:280 -+msgid "Repository successfully removed." -+msgstr "Suppression du dépôt réussie." -+ -+#: plugins/copr.py:284 plugins/copr.py:689 -+msgid "Unknown subcommand {}." -+msgstr "Sous-commande inconnue {}." - --#: ../plugins/repodiff.py:74 -+#: plugins/copr.py:337 - msgid "" --"Split the data for modified packages between upgraded and downgraded " --"packages." -+"* 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 "" --"Segmenter les données des paquets modifiés entre ceux mis à niveau et ceux " --"rétrogradés." -+"* Ces Copr ont des fichiers de dépôts avec un ancien format qui ne contient " -+"aucune information à propos de Copr hub - celui par défaut a été utilisé. " -+"Réactivez le projet pour résoudre le problème." - --#: ../plugins/repodiff.py:86 --msgid "Both old and new repositories must be set." --msgstr "Le nouveau et l’ancien dépôt doivent être renseignés." -+#: plugins/copr.py:349 -+msgid "Can't parse repositories for username '{}'." -+msgstr "" -+"Ne peut analyser les dépôts pour y chercher le nom d’utilisateur « {} »." - --#: ../plugins/repodiff.py:178 --msgid "Size change: {} bytes" --msgstr "Taille des changements : {} bytes" -+#: plugins/copr.py:352 -+msgid "List of {} coprs" -+msgstr "Liste de {} coprs" - --#: ../plugins/repodiff.py:184 --msgid "Added package : {}" --msgstr "Paquet ajouté : {}" -+#: plugins/copr.py:360 -+msgid "No description given" -+msgstr "Aucune description fournie" - --#: ../plugins/repodiff.py:187 --msgid "Removed package: {}" --msgstr "Paquet retiré : {}" -+#: plugins/copr.py:372 -+msgid "Can't parse search for '{}'." -+msgstr "Impossible d’analyser la recherche pour « {} »." - --#: ../plugins/repodiff.py:190 --msgid "Obsoleted by : {}" --msgstr "Rendu obsolète par : {}" -+#: plugins/copr.py:375 -+msgid "Matched: {}" -+msgstr "Correspondance : {}" -+ -+#: plugins/copr.py:383 -+msgid "No description given." -+msgstr "Pas de description fournie." -+ -+#: plugins/copr.py:406 -+msgid "Safe and good answer. Exiting." -+msgstr "Réponse sûre et exacte. Fin." -+ -+#: plugins/copr.py:413 -+msgid "This command has to be run under the root user." -+msgstr "Cette commande requiert les privilèges du super utilisateur." - --#: ../plugins/repodiff.py:195 -+#: plugins/copr.py:477 - msgid "" --"\n" --"Upgraded packages" -+"This repository does not have any builds yet so you cannot enable it now." - msgstr "" --"\n" --"Paquets mis à niveau" -+"Ce dépôt ne contient pas encore d’exécutables vous ne pouvez donc pas " -+"l’activer." - --#: ../plugins/repodiff.py:200 -+#: plugins/copr.py:480 -+msgid "Such repository does not exist." -+msgstr "Ce dépôt n’existe pas." -+ -+#: plugins/copr.py:524 -+#, python-brace-format - msgid "" -+"Maintainer of the enabled Copr repository decided to make\n" -+"it dependent on other repositories. Such repositories are\n" -+"usually necessary for successful installation of RPMs from\n" -+"the main Copr repository (they provide runtime dependencies).\n" - "\n" --"Downgraded packages" --msgstr "" -+"Be aware that the note about quality and bug-reporting\n" -+"above applies here too, Fedora Project doesn't control the\n" -+"content. Please review the list:\n" - "\n" --"Paquets rétrogradés" -- --#: ../plugins/repodiff.py:207 --msgid "" -+"{0}\n" - "\n" --"Modified packages" -+"These repositories have been enabled automatically." - msgstr "" -+"Le mainteneur du dépôt Copr activé a décidé de le faire\n" -+"dépend d’autres dépôts. Ces dépôts sont généralement\n" -+"nécessaires pour l’installation correcte des RPM du dépôt\n" -+"Copr principal (ils fournissent les dépendances d’exécution).\n" - "\n" --"Paquets modifiés" -- --#: ../plugins/repodiff.py:212 --msgid "" -+"Veuillez noter que la mention sur la qualité et le signalement\n" -+"de bogues ci-dessus s’applique ici aussi, le projet Fedora ne\n" -+"contrôle pas le contenu. Veuillez examiner la liste :\n" - "\n" --"Summary" --msgstr "" -+"{0}\n" - "\n" --"Résumé" -+"Ces dépôts ont été activés automatiquement." - --#: ../plugins/repodiff.py:213 --msgid "Added packages: {}" --msgstr "Paquets ajoutés : {}" -- --#: ../plugins/repodiff.py:214 --msgid "Removed packages: {}" --msgstr "Paquets retirés : {}" -+#: plugins/copr.py:545 -+msgid "Do you want to keep them enabled?" -+msgstr "Souhaitez-vous les maintenir activés ?" - --#: ../plugins/repodiff.py:216 --msgid "Upgraded packages: {}" --msgstr "Paquets mis à niveau : {}" -+#: plugins/copr.py:578 -+#, 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/repodiff.py:217 --msgid "Downgraded packages: {}" --msgstr "Paquets rétrogradés : {}" -+#: plugins/copr.py:589 -+msgid "Failed to disable copr repo {}/{}" -+msgstr "Échec de la désactivation du dépôt copr {}/{}" - --#: ../plugins/repodiff.py:219 --msgid "Modified packages: {}" --msgstr "Paquets modifiés : {}" -+#: plugins/copr.py:607 plugins/copr.py:644 -+msgid "Unknown response from server." -+msgstr "Réponse inconnue du serveur." - --#: ../plugins/repodiff.py:222 --msgid "Size of added packages: {}" --msgstr "Taille des paquets ajoutés : {}" -+#: plugins/copr.py:629 -+msgid "Interact with Playground repository." -+msgstr "Interagit avec le dépôt Playground." - --#: ../plugins/repodiff.py:223 --msgid "Size of removed packages: {}" --msgstr "Taille des paquets retirés : {}" -+#: plugins/copr.py:635 -+msgid "Enabling a Playground repository." -+msgstr "Activation d’un dépôt Playground." - --#: ../plugins/repodiff.py:225 --msgid "Size of modified packages: {}" --msgstr "Taille des paquets modifiés : {}" -+#: plugins/copr.py:636 -+msgid "Do you want to continue?" -+msgstr "Souhaitez-vous continuer ?" - --#: ../plugins/repodiff.py:228 --msgid "Size of upgraded packages: {}" --msgstr "Taille des paquets mis à niveau : {}" -+#: plugins/copr.py:679 -+msgid "Playground repositories successfully enabled." -+msgstr "Activation des dépôts Playground réussie." - --#: ../plugins/repodiff.py:230 --msgid "Size of downgraded packages: {}" --msgstr "Taille des paquets téléchargés : {}" -+#: plugins/copr.py:682 -+msgid "Playground repositories successfully disabled." -+msgstr "Désactivation des dépôts Playground réussie." - --#: ../plugins/repodiff.py:232 --msgid "Size change: {}" --msgstr "Taille des changements : {}" -+#: plugins/copr.py:686 -+msgid "Playground repositories successfully updated." -+msgstr "Mise à jour des dépôts Playground réussie." - --#: ../plugins/reposync.py:67 --msgid "also download and uncompress comps.xml" --msgstr "également télécharger et décompresser comps.xml" -+#: plugins/debug.py:53 -+msgid "dump information about installed rpm packages to file" -+msgstr "déverse les informations des paquets rpm installés vers un fichier" - --#: ../plugins/reposync.py:69 --msgid "download all the metadata." --msgstr "télécharger toutes les métadonnées." -+#: plugins/debug.py:67 -+msgid "do not attempt to dump the repository contents." -+msgstr "ne pas tenter de déverser le contenu du dépôt." - --#: ../plugins/reposync.py:73 --msgid "where to store downloaded repositories" --msgstr "lieu où stocker les dépôts téléchargés" -+#: plugins/debug.py:70 -+msgid "optional name of dump file" -+msgstr "nom optionnel du fichier de déversement" - --#: ../plugins/reposync.py:75 --msgid "Don't add the reponame to the download path." --msgstr "N’ajoutez pas le nom du dépôt dans le chemin de téléchargement." -+#: plugins/debug.py:95 -+#, python-format -+msgid "Output written to: %s" -+msgstr "Sortie écrite dans : %s" - --#: ../plugins/reposync.py:77 --msgid "" --"where to store downloaded repository metadata. Defaults to the value of " --"--download-path." --msgstr "" --"là où stocker les métadonnées du dépôt. Prend par défaut la valeur de " --"--download-path." -- --#: ../plugins/reposync.py:82 --msgid "try to set local timestamps of local files by the one on the server" -+#: plugins/debug.py:172 -+msgid "restore packages recorded in debug-dump file" - msgstr "" --"essayez de définir les horodatages locaux des fichiers locaux par celui du " --"serveur" -+"restaure les paquets enregistrés dans le fichier de déversement de débuggage" - --#: ../plugins/reposync.py:85 --msgid "Just list urls of what would be downloaded, don't download" -+#: plugins/debug.py:183 -+msgid "output commands that would be run to stdout." - msgstr "" --"Uniquement lister les URL qui seraient téléchargées, ne pas télécharger" -- --#: ../plugins/reposync.py:109 --msgid "Can't use --norepopath with multiple repositories" --msgstr "Impossible d’utiliser --norepopath avec de multiples dépôts" -- --#: ../plugins/reposync.py:127 --#, python-format --msgid "Failed to get mirror for metadata: %s" --msgstr "Échec de l’obtention du miroir pour les métadonnées : %s" -+"liste les commandes qui devraient être exécutées vers la sortie standard." - --#: ../plugins/reposync.py:144 --msgid "Failed to get mirror for the group file." --msgstr "Échec de l’obtention du miroir pour le fichier de groupe." -+#: plugins/debug.py:186 -+msgid "Install the latest version of recorded packages." -+msgstr "Installer la dernière version des paquets enregistrés." - --#: ../plugins/reposync.py:175 --msgid "Download target '{}' is outside of download path '{}'." -+#: plugins/debug.py:189 -+msgid "" -+"Ignore architecture and install missing packages matching the name, epoch, " -+"version and release." - msgstr "" --"La cible de téléchargement « {} » est en dehors du chemin de téléchargement " --"« {} »." -+"Ignorer l’architecture et installe les paquets manquants correspondant aux " -+"nom, époque, version et révision." - --#: ../plugins/reposync.py:260 ../plugins/download.py:121 --#, python-format --msgid "Failed to get mirror for package: %s" --msgstr "Échec de l’obtention du miroir pour le paquet : %s" -+#: plugins/debug.py:194 -+msgid "limit to specified type" -+msgstr "limiter au type spécifié" - --#: ../plugins/repomanage.py:44 --msgid "Manage a directory of rpm packages" --msgstr "Gère un dossier de paquets rpm" -+#: plugins/debug.py:196 -+msgid "name of dump file" -+msgstr "nom du fichier de l’instantané" - --#: ../plugins/repomanage.py:58 --msgid "Pass either --old or --new, not both!" --msgstr "Passez soit --old, soit --new, mais pas les deux !" -+#: plugins/debug.py:270 -+#, python-format -+msgid "Package %s is not available" -+msgstr "Le paquet %s n’est pas disponible" - --#: ../plugins/repomanage.py:68 --msgid "No files to process" --msgstr "Aucun fichier à traiter" -+#: plugins/debug.py:280 -+#, python-format -+msgid "Bad dnf debug file: %s" -+msgstr "Erreur du fichier debug : %s" - --#: ../plugins/repomanage.py:73 --msgid "Could not open {}" --msgstr "Ouverture de {} impossible" -+#: plugins/debuginfo-install.py:56 -+msgid "install debuginfo packages" -+msgstr "installe les paquets debuginfo" - --#: ../plugins/repomanage.py:130 --msgid "Print the older packages" --msgstr "Afficher les paquets plus anciens" -+#: plugins/debuginfo-install.py:180 -+#, python-format -+msgid "" -+"Could not find debuginfo package for the following available packages: %s" -+msgstr "" -+"Impossible de trouver le paquet debuginfo pour ces paquets disponibles : %s" - --#: ../plugins/repomanage.py:132 --msgid "Print the newest packages" --msgstr "Afficher les paquets les plus récents" -+#: plugins/debuginfo-install.py:185 -+#, python-format -+msgid "" -+"Could not find debugsource package for the following available packages: %s" -+msgstr "" -+"Impossible de trouver le paquet debugsource pour ces paquets disponibles : " -+"%s" - --#: ../plugins/repomanage.py:134 --msgid "Space separated output, not newline" --msgstr "Sorties séparées par des espaces plutôt que des retours à la ligne" -+#: plugins/debuginfo-install.py:190 -+#, python-format -+msgid "" -+"Could not find debuginfo package for the following installed packages: %s" -+msgstr "" -+"Impossible de trouver le paquet debuginfo pour ces paquets installés : %s" - --#: ../plugins/repomanage.py:136 --msgid "Newest N packages to keep - defaults to 1" --msgstr "N paquets les plus récents à conserver — par défaut 1" -+#: plugins/debuginfo-install.py:195 -+#, python-format -+msgid "" -+"Could not find debugsource package for the following installed packages: %s" -+msgstr "" -+"Impossible de trouver le paquet debugsource pour ces paquets installés : %s" - --#: ../plugins/repomanage.py:139 --msgid "Path to directory" --msgstr "Chemin vers le répertoire" -+#: plugins/debuginfo-install.py:199 -+msgid "Unable to find a match" -+msgstr "Impossible de trouver une correspondance" - --#: ../plugins/download.py:41 -+#: plugins/download.py:41 - msgid "Download package to current directory" - msgstr "Téléchargement du paquet dans le répertoire courant" - --#: ../plugins/download.py:51 -+#: plugins/download.py:51 - msgid "packages to download" - msgstr "paquets à télécharger" - --#: ../plugins/download.py:53 -+#: plugins/download.py:53 - msgid "download the src.rpm instead" - msgstr "télécharge plutôt le src.rpm" - --#: ../plugins/download.py:55 -+#: plugins/download.py:55 - msgid "download the -debuginfo package instead" - msgstr "télécharge plutôt le paquet -debuginfo" - --#: ../plugins/download.py:57 -+#: plugins/download.py:57 - msgid "download the -debugsource package instead" - msgstr "télécharge plutôt le paquet -debugsource" - --#: ../plugins/download.py:60 -+#: plugins/download.py:60 - msgid "limit the query to packages of given architectures." - msgstr "limite les requêtes de paquets aux architectures spécifiées." - --#: ../plugins/download.py:62 -+#: plugins/download.py:62 - msgid "resolve and download needed dependencies" - msgstr "résout et télécharge les dépendances nécessaires" - --#: ../plugins/download.py:64 -+#: plugins/download.py:64 - msgid "" - "when running with --resolve, download all dependencies (do not exclude " - "already installed ones)" -@@ -771,342 +622,538 @@ msgstr "" - "quand utilisé avec --resolve, téléchargez toutes les dépendances (sans " - "exclure celles déjà installées)" - --#: ../plugins/download.py:67 -+#: plugins/download.py:67 - msgid "" - "print list of urls where the rpms can be downloaded instead of downloading" - msgstr "" - "affiche la list des urls où les rpms peuvent être téléchargés, plutôt que " - "les télécharger" - --#: ../plugins/download.py:72 -+#: plugins/download.py:72 - msgid "when running with --url, limit to specific protocols" - msgstr "si --url est renseigné, limite aux protocoles spécifiés" - --#: ../plugins/download.py:243 -+#: plugins/download.py:121 plugins/reposync.py:260 -+#, python-format -+msgid "Failed to get mirror for package: %s" -+msgstr "Échec de l’obtention du miroir pour le paquet : %s" -+ -+#: plugins/download.py:243 - msgid "Exiting due to strict setting." - msgstr "Fin du programme suite au paramétrage stricte." - --#: ../plugins/download.py:261 -+#: plugins/download.py:261 - msgid "Error in resolve of packages:" - msgstr "Erreur de résolution des paquets :" - --#: ../plugins/download.py:279 -+#: plugins/download.py:279 - #, python-format - msgid "No source rpm defined for %s" - msgstr "Aucune source définie pour %s" - --#: ../plugins/download.py:296 ../plugins/download.py:309 -+#: plugins/download.py:296 plugins/download.py:309 - #, python-format - msgid "No package %s available." - msgstr "Aucun paquet %s n’est disponible." - --#: ../plugins/show_leaves.py:54 --msgid "New leaves:" --msgstr "Nouvelles feuilles :" -- --#: ../plugins/copr.py:56 --msgid "yes" --msgstr "oui" -- --#: ../plugins/copr.py:56 --msgid "y" --msgstr "o" -+#: plugins/leaves.py:32 -+msgid "List installed packages not required by any other package" -+msgstr "" -+"Lister les paquets installés qui ne sont pas requis par un autre paquet" - --#: ../plugins/copr.py:57 --msgid "no" --msgstr "non" -+#: plugins/local.py:122 -+msgid "Unable to create a directory '{}' due to '{}'" -+msgstr "Impossible de créer le répertoire « {} » du fait de « {} »" - --#: ../plugins/copr.py:57 --msgid "n" --msgstr "n" -+#: plugins/local.py:126 -+msgid "'{}' is not a directory" -+msgstr "« {} » n’est pas un répertoire" - --#: ../plugins/copr.py:76 --msgid "Interact with Copr repositories." --msgstr "Interagit avec les dépôts Copr." -+#: plugins/local.py:135 -+msgid "Copying '{}' to local repo" -+msgstr "Copie de « {} » vers le dépôt local en cours" - --#: ../plugins/copr.py:77 --msgid "" --"\n" --" enable name/project [chroot]\n" --" disable name/project\n" --" remove name/project\n" --" list --installed/enabled/disabled\n" --" list --available-by-user=NAME\n" --" search project\n" --"\n" --" Examples:\n" --" copr enable rhscl/perl516 epel-6-x86_64\n" --" copr enable ignatenkobrain/ocltoys\n" --" copr disable rhscl/perl516\n" --" copr remove rhscl/perl516\n" --" copr list --enabled\n" --" copr list --available-by-user=ignatenkobrain\n" --" copr search tests\n" --" " --msgstr "" --"\n" --" enable nom/projet [chroot]\n" --" disable nom/projet\n" --" remove nom/projet\n" --" list --installed/enabled/disabled\n" --" list --available-by-user=NOM\n" --" search projet\n" --"\n" --" Exemples :\n" --" copr enable rhscl/perl516 epel-6-x86_64\n" --" copr enable ignatenkobrain/ocltoys\n" --" copr disable rhscl/perl516\n" --" copr remove rhscl/perl516\n" --" copr list --enabled¶\n" --" copr list --available-by-user=ignatenkobrain¶\n" --" copr search tests\n" --" " -+#: plugins/local.py:141 -+msgid "Can't write file '{}'" -+msgstr "Impossible d’écrire le fichier « {} »" - --#: ../plugins/copr.py:103 --msgid "List all installed Copr repositories (default)" --msgstr "Lister tous les dépôts Copr installés (par défaut)" -+#: plugins/local.py:156 -+msgid "Rebuilding local repo" -+msgstr "Reconstruction du dépôt local" - --#: ../plugins/copr.py:105 --msgid "List enabled Copr repositories" --msgstr "Lister les dépôts Copr activés" -+#: plugins/migrate.py:45 -+msgid "migrate yum's history, group and yumdb data to dnf" -+msgstr "migrer les données d’historique, de groupe et de yumdb, vers dnf" - --#: ../plugins/copr.py:107 --msgid "List disabled Copr repositories" --msgstr "Lister les dépôts Copr désactivés" -+#: plugins/migrate.py:54 -+msgid "Migrating history data..." -+msgstr "Migration des données d’historique …" - --#: ../plugins/copr.py:109 --msgid "List available Copr repositories by user NAME" --msgstr "Lister les dépôts Copr disponibles par NOM d’utilisateur" -+#: plugins/needs_restarting.py:65 -+#, python-brace-format -+msgid "" -+"No installed package found for package name \"{pkg}\" specified in needs-" -+"restarting file \"{file}\"." -+msgstr "" -+"Aucun paquet installé n'a été trouvé pour le nom de paquet \"{pkg}\" " -+"spécifié dans le fichier de redémarrage needs-restarting \"{file}\"." - --#: ../plugins/copr.py:111 --msgid "Specify an instance of Copr to work with" --msgstr "Précisez une instance Copr avec laquelle travailler" -+#: plugins/needs_restarting.py:199 -+msgid "determine updated binaries that need restarting" -+msgstr "détermine les binaires mis à jour qui nécessitent un redémarrage" - --#: ../plugins/copr.py:145 ../plugins/copr.py:210 ../plugins/copr.py:230 --msgid "Error: " --msgstr "Erreur : " -+#: plugins/needs_restarting.py:204 -+msgid "only consider this user's processes" -+msgstr "considère uniquement les processus de cet utilisateur" - --#: ../plugins/copr.py:146 -+#: plugins/needs_restarting.py:206 - msgid "" --"specify Copr hub either with `--hub` or using " --"`copr_hub/copr_username/copr_projectname` format" -+"only report whether a reboot is required (exit code 1) or not (exit code 0)" - msgstr "" --"précisez un hub Copr soit via `--hub` ou en utilisant le format " --"`hub_copr/utilisateur_copr/projet_copr`" -- --#: ../plugins/copr.py:149 --msgid "multiple hubs specified" --msgstr "de multiples hubs ont été renseignés" -+"indique uniquement si un démarrage (reboot) est requis (exit code 1) ou non " -+"(exit code 0)" - --#: ../plugins/copr.py:211 ../plugins/copr.py:215 --msgid "exactly two additional parameters to copr command are required" --msgstr "la commande copr requiert exactement deux paramètres additionnels" -+#: plugins/needs_restarting.py:230 -+msgid "Core libraries or services have been updated since boot-up:" -+msgstr "" -+"les bibliothèques et les services de base ont été mis à jour depuis le " -+"démarrage (boot-up) :" - --#: ../plugins/copr.py:231 --msgid "use format `copr_username/copr_projectname` to reference copr project" -+#: plugins/needs_restarting.py:235 -+msgid "Reboot is required to fully utilize these updates." - msgstr "" --"utilisez le format `copr_username/copr_projectname` pour faire référence au " --"projet copr" -+"Un nouveau démarrage est requis pour pouvoir bénéficier totalement de ces " -+"mises à jour." - --#: ../plugins/copr.py:233 --msgid "bad copr project format" --msgstr "mauvais format de projet copr" -+#: plugins/needs_restarting.py:236 -+msgid "More information:" -+msgstr "Plus d’information :" - --#: ../plugins/copr.py:247 --#, python-brace-format --msgid "" --"\n" --"You are about to enable a Copr repository. Please note that this\n" --"repository is not part of the main distribution, and quality may vary.\n" --"\n" --"The Fedora Project does not exercise any power over the contents of\n" --"this repository beyond the rules outlined in the Copr FAQ at\n" --",\n" --"and packages are not held to any quality or security level.\n" --"\n" --"Please do not file bug reports about these packages in Fedora\n" --"Bugzilla. In case of problems, contact the owner of this repository.\n" --"\n" --"Do you really want to enable {0}?" -+#: plugins/needs_restarting.py:240 -+msgid "No core libraries or services have been updated since boot-up." - msgstr "" --"\n" --"Vous êtes sur le point d’activer un dépôt Copr. Veuillez remarquer que ce dépôt\n" --"n’est pas partie intégrante de la distribution, et que la qualité pourrait varier.\n" --"\n" --"Le projet Fedora n’exerce aucun pouvoir sur le contenu de ce dépôt au delà\n" --"des règles précisées dans la FAQ Copr \n" --",\n" --"et les paquets ne sont tenus à aucun niveau de qualité ou de sécurité.\n" --"\n" --"Veuillez ne pas signaler de bugs à propos de ces paquets dans le Bugzilla de Fedora.\n" --"En cas de problèmes, contactez le propriétaire de ce dépôt.\n" --"\n" --"Voulez-vous vraiment activer {0} ?" -+"Aucune bibliothèque ou service de base n’a été mis à jour depuis le " -+"démarrage." - --#: ../plugins/copr.py:263 --msgid "Repository successfully enabled." --msgstr "Activation du dépôt réussie." -+#: plugins/needs_restarting.py:242 -+msgid "Reboot should not be necessary." -+msgstr "Un nouveau démarrage ne devrait pas être utile." - --#: ../plugins/copr.py:267 --msgid "Repository successfully disabled." --msgstr "Désactivation du dépôt réussie." -+#: plugins/post-transaction-actions.py:71 -+#, python-format -+msgid "Bad Action Line \"%s\": %s" -+msgstr "Mauvaise ligne d’action « %s » : %s" - --#: ../plugins/copr.py:271 --msgid "Repository successfully removed." --msgstr "Suppression du dépôt réussie." -+#. unsupported state, skip it -+#: plugins/post-transaction-actions.py:130 -+#, python-format -+msgid "Bad Transaction State: %s" -+msgstr "Mauvais état de transaction : %s" - --#: ../plugins/copr.py:275 ../plugins/copr.py:625 --msgid "Unknown subcommand {}." --msgstr "Sous-commande inconnue {}." -+#: plugins/post-transaction-actions.py:153 -+#: plugins/post-transaction-actions.py:155 -+#, python-format -+msgid "post-transaction-actions: %s" -+msgstr "post-transaction-actions : %s" - --#: ../plugins/copr.py:328 --msgid "" --"* These coprs have repo file with an old format that contains no information" --" about Copr hub - the default one was assumed. Re-enable the project to fix " --"this." --msgstr "" --"* Ces Copr ont des fichiers de dépôts avec un ancien format qui ne contient " --"aucune information à propos de Copr hub - celui par défaut a été utilisé. " --"Réactivez le projet pour résoudre le problème." -+#: plugins/post-transaction-actions.py:157 -+#, python-format -+msgid "post-transaction-actions: Bad Command \"%s\": %s" -+msgstr "post-transaction-actions : mauvaise commande « %s » : %s" - --#: ../plugins/copr.py:340 --msgid "Can't parse repositories for username '{}'." -+#: plugins/repoclosure.py:42 -+msgid "Display a list of unresolved dependencies for repositories" -+msgstr "Affiche une liste de dépendances non résolues pour les dépôts" -+ -+#: plugins/repoclosure.py:66 -+msgid "Repoclosure ended with unresolved dependencies." -+msgstr "Repoclosure a terminé avec des dépendances non-résolues." -+ -+#: plugins/repoclosure.py:153 -+msgid "check packages of the given archs, can be specified multiple times" - msgstr "" --"Ne peut analyser les dépôts pour y chercher le nom d’utilisateur « {} »." -+"vérifie les paquets pour les architectures spécifiées, peut être utilisé " -+"plusieurs fois" - --#: ../plugins/copr.py:343 --msgid "List of {} coprs" --msgstr "Liste de {} coprs" -+#: plugins/repoclosure.py:156 -+msgid "Specify repositories to check" -+msgstr "Spécifie les dépôts à vérifier" - --#: ../plugins/copr.py:351 --msgid "No description given" --msgstr "Aucune description fournie" -+#: plugins/repoclosure.py:158 -+msgid "Check only the newest packages in the repos" -+msgstr "Vérifier uniquement les paquets les plus récents dans les dépôts" - --#: ../plugins/copr.py:363 --msgid "Can't parse search for '{}'." --msgstr "Impossible d’analyser la recherche pour « {} »." -+#: plugins/repoclosure.py:161 -+msgid "Check closure for this package only" -+msgstr "Vérifie la clôture pour ce paquet seulement" - --#: ../plugins/copr.py:366 --msgid "Matched: {}" --msgstr "Correspondance : {}" -+#: plugins/repodiff.py:45 -+msgid "List differences between two sets of repositories" -+msgstr "Liste les différences entre deux ensembles de dépôts" - --#: ../plugins/copr.py:374 --msgid "No description given." --msgstr "Pas de description fournie." -+#: plugins/repodiff.py:58 -+msgid "Specify old repository, can be used multiple times" -+msgstr "Définir un ancien dépôt, peut être utilisé plusieurs fois" - --#: ../plugins/copr.py:387 --msgid "Safe and good answer. Exiting." --msgstr "Réponse sûre et exacte. Fin." -+#: plugins/repodiff.py:60 -+msgid "Specify new repository, can be used multiple times" -+msgstr "Définir un nouveau dépôt, peut être utilisé plusieurs fois" - --#: ../plugins/copr.py:394 --msgid "This command has to be run under the root user." --msgstr "Cette commande requiert les privilèges du super utilisateur." -+#: plugins/repodiff.py:63 -+msgid "" -+"Specify architectures to compare, can be used multiple times. By default, " -+"only source rpms are compared." -+msgstr "" -+"Définir les architectures à comparer, peut-être utilisé plusieurs fois. Par " -+"défaut, les rpms source sont comparés." -+ -+#: plugins/repodiff.py:67 -+msgid "Output additional data about the size of the changes." -+msgstr "Affichez des données supplémentaires sur la taille des changements." - --#: ../plugins/copr.py:458 -+#: plugins/repodiff.py:69 - msgid "" --"This repository does not have any builds yet so you cannot enable it now." -+"Compare packages also by arch. By default packages are compared just by " -+"name." - msgstr "" --"Ce dépôt ne contient pas encore d’exécutables vous ne pouvez donc pas " --"l’activer." -+"Compare également les paquets par architecture. Par défaut, les paquets sont" -+" uniquement comparés par nom." - --#: ../plugins/copr.py:461 --msgid "Such repository does not exist." --msgstr "Ce dépôt n’existe pas." -+#: plugins/repodiff.py:72 -+msgid "Output a simple one line message for modified packages." -+msgstr "Produit un message simple d’une ligne pour les paquets modifiés." - --#: ../plugins/copr.py:509 --#, 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/repodiff.py:74 -+msgid "" -+"Split the data for modified packages between upgraded and downgraded " -+"packages." -+msgstr "" -+"Segmenter les données des paquets modifiés entre ceux mis à niveau et ceux " -+"rétrogradés." - --#: ../plugins/copr.py:520 --msgid "Failed to disable copr repo {}/{}" --msgstr "Échec de la désactivation du dépôt copr {}/{}" -+#: plugins/repodiff.py:86 -+msgid "Both old and new repositories must be set." -+msgstr "Le nouveau et l’ancien dépôt doivent être renseignés." - --#: ../plugins/copr.py:542 ../plugins/copr.py:580 --msgid "Unknown response from server." --msgstr "Réponse inconnue du serveur." -+#: plugins/repodiff.py:178 -+msgid "Size change: {} bytes" -+msgstr "Taille des changements : {} bytes" - --#: ../plugins/copr.py:564 --msgid "Interact with Playground repository." --msgstr "Interagit avec le dépôt Playground." -+#: plugins/repodiff.py:184 -+msgid "Added package : {}" -+msgstr "Paquet ajouté : {}" -+ -+#: plugins/repodiff.py:187 -+msgid "Removed package: {}" -+msgstr "Paquet retiré : {}" -+ -+#: plugins/repodiff.py:190 -+msgid "Obsoleted by : {}" -+msgstr "Rendu obsolète par : {}" - --#: ../plugins/copr.py:569 -+#: plugins/repodiff.py:195 - msgid "" - "\n" --"You are about to enable a Playground repository.\n" -+"Upgraded packages" -+msgstr "" -+"\n" -+"Paquets mis à niveau" -+ -+#: plugins/repodiff.py:200 -+msgid "" - "\n" --"Do you want to continue?" -+"Downgraded packages" - msgstr "" - "\n" --"Vous êtes sur le point d’activer un dépôt bac-à-sable.\n" -+"Paquets rétrogradés" -+ -+#: plugins/repodiff.py:207 -+msgid "" -+"\n" -+"Modified packages" -+msgstr "" - "\n" --"Voulez-vous continuer ?" -+"Paquets modifiés" - --#: ../plugins/copr.py:615 --msgid "Playground repositories successfully enabled." --msgstr "Activation des dépôts Playground réussie." -+#: plugins/repodiff.py:212 -+msgid "" -+"\n" -+"Summary" -+msgstr "" -+"\n" -+"Résumé" - --#: ../plugins/copr.py:618 --msgid "Playground repositories successfully disabled." --msgstr "Désactivation des dépôts Playground réussie." -+#: plugins/repodiff.py:213 -+msgid "Added packages: {}" -+msgstr "Paquets ajoutés : {}" - --#: ../plugins/copr.py:622 --msgid "Playground repositories successfully updated." --msgstr "Mise à jour des dépôts Playground réussie." -+#: plugins/repodiff.py:214 -+msgid "Removed packages: {}" -+msgstr "Paquets retirés : {}" - --#: ../plugins/debug.py:53 --msgid "dump information about installed rpm packages to file" --msgstr "déverse les informations des paquets rpm installés vers un fichier" -+#: plugins/repodiff.py:216 -+msgid "Upgraded packages: {}" -+msgstr "Paquets mis à niveau : {}" - --#: ../plugins/debug.py:67 --msgid "do not attempt to dump the repository contents." --msgstr "ne pas tenter de déverser le contenu du dépôt." -+#: plugins/repodiff.py:217 -+msgid "Downgraded packages: {}" -+msgstr "Paquets rétrogradés : {}" - --#: ../plugins/debug.py:70 --msgid "optional name of dump file" --msgstr "nom optionnel du fichier de déversement" -+#: plugins/repodiff.py:219 -+msgid "Modified packages: {}" -+msgstr "Paquets modifiés : {}" -+ -+#: plugins/repodiff.py:222 -+msgid "Size of added packages: {}" -+msgstr "Taille des paquets ajoutés : {}" - --#: ../plugins/debug.py:95 -+#: plugins/repodiff.py:223 -+msgid "Size of removed packages: {}" -+msgstr "Taille des paquets retirés : {}" -+ -+#: plugins/repodiff.py:225 -+msgid "Size of modified packages: {}" -+msgstr "Taille des paquets modifiés : {}" -+ -+#: plugins/repodiff.py:228 -+msgid "Size of upgraded packages: {}" -+msgstr "Taille des paquets mis à niveau : {}" -+ -+#: plugins/repodiff.py:230 -+msgid "Size of downgraded packages: {}" -+msgstr "Taille des paquets téléchargés : {}" -+ -+#: plugins/repodiff.py:232 -+msgid "Size change: {}" -+msgstr "Taille des changements : {}" -+ -+#: plugins/repograph.py:50 -+msgid "Output a full package dependency graph in dot format" -+msgstr "Sortie d’un graphe de dépendance des paquets complet au format dot" -+ -+#: plugins/repograph.py:110 - #, python-format --msgid "Output written to: %s" --msgstr "Sortie écrite dans : %s" -+msgid "Nothing provides: '%s'" -+msgstr "Aucun paquet ne fournit : « %s »" - --#: ../plugins/debug.py:172 --msgid "restore packages recorded in debug-dump file" -+#: plugins/repomanage.py:45 -+msgid "Manage a directory of rpm packages" -+msgstr "Gère un dossier de paquets rpm" -+ -+#: plugins/repomanage.py:59 -+msgid "Pass either --old or --new, not both!" -+msgstr "Passez soit --old, soit --new, mais pas les deux !" -+ -+#: plugins/repomanage.py:71 -+msgid "No files to process" -+msgstr "Aucun fichier à traiter" -+ -+#: plugins/repomanage.py:93 -+msgid "Could not open {}" -+msgstr "Ouverture de {} impossible" -+ -+#: plugins/repomanage.py:177 -+msgid "Print the older packages" -+msgstr "Afficher les paquets plus anciens" -+ -+#: plugins/repomanage.py:179 -+msgid "Print the newest packages" -+msgstr "Afficher les paquets les plus récents" -+ -+#: plugins/repomanage.py:181 -+msgid "Space separated output, not newline" -+msgstr "Sorties séparées par des espaces plutôt que des retours à la ligne" -+ -+#: plugins/repomanage.py:183 -+msgid "Newest N packages to keep - defaults to 1" -+msgstr "N paquets les plus récents à conserver — par défaut 1" -+ -+#: plugins/repomanage.py:186 -+msgid "Path to directory" -+msgstr "Chemin vers le répertoire" -+ -+#: plugins/reposync.py:54 -+msgid "download all packages from remote repo" -+msgstr "télécharger tous les paquets depuis le dépôt distant" -+ -+#: plugins/reposync.py:63 -+msgid "download only packages for this ARCH" -+msgstr "télécharger seulement les paquets s’appliquant à cette ARCH" -+ -+#: plugins/reposync.py:65 -+msgid "delete local packages no longer present in repository" -+msgstr "supprimer les paquets locaux qui ne sont plus présents dans le dépôt" -+ -+#: plugins/reposync.py:67 -+msgid "also download and uncompress comps.xml" -+msgstr "également télécharger et décompresser comps.xml" -+ -+#: plugins/reposync.py:69 -+msgid "download all the metadata." -+msgstr "télécharger toutes les métadonnées." -+ -+#: plugins/reposync.py:71 -+msgid "download only newest packages per-repo" -+msgstr "ne télécharger que les nouveaux paquets per-rep" -+ -+#: plugins/reposync.py:73 -+msgid "where to store downloaded repositories" -+msgstr "lieu où stocker les dépôts téléchargés" -+ -+#: plugins/reposync.py:75 -+msgid "Don't add the reponame to the download path." -+msgstr "N’ajoutez pas le nom du dépôt dans le chemin de téléchargement." -+ -+#: plugins/reposync.py:77 -+msgid "" -+"where to store downloaded repository metadata. Defaults to the value of " -+"--download-path." - msgstr "" --"restaure les paquets enregistrés dans le fichier de déversement de débuggage" -+"là où stocker les métadonnées du dépôt. Prend par défaut la valeur de " -+"--download-path." - --#: ../plugins/debug.py:183 --msgid "output commands that would be run to stdout." -+#: plugins/reposync.py:80 -+msgid "operate on source packages" -+msgstr "opère sur les paquets source" -+ -+#: plugins/reposync.py:82 -+msgid "try to set local timestamps of local files by the one on the server" - msgstr "" --"liste les commandes qui devraient être exécutées vers la sortie standard." -+"essayez de définir les horodatages locaux des fichiers locaux par celui du " -+"serveur" - --#: ../plugins/debug.py:186 --msgid "Install the latest version of recorded packages." --msgstr "Installer la dernière version des paquets enregistrés." -+#: plugins/reposync.py:85 -+msgid "Just list urls of what would be downloaded, don't download" -+msgstr "" -+"Uniquement lister les URL qui seraient téléchargées, ne pas télécharger" - --#: ../plugins/debug.py:189 --msgid "" --"Ignore architecture and install missing packages matching the name, epoch, " --"version and release." -+#: plugins/reposync.py:109 -+msgid "Can't use --norepopath with multiple repositories" -+msgstr "Impossible d’utiliser --norepopath avec de multiples dépôts" -+ -+#: plugins/reposync.py:127 -+#, python-format -+msgid "Failed to get mirror for metadata: %s" -+msgstr "Échec de l’obtention du miroir pour les métadonnées : %s" -+ -+#: plugins/reposync.py:144 -+msgid "Failed to get mirror for the group file." -+msgstr "Échec de l’obtention du miroir pour le fichier de groupe." -+ -+#: plugins/reposync.py:175 -+msgid "Download target '{}' is outside of download path '{}'." - msgstr "" --"Ignorer l’architecture et installe les paquets manquants correspondant aux " --"nom, époque, version et révision." -+"La cible de téléchargement « {} » est en dehors du chemin de téléchargement " -+"« {} »." - --#: ../plugins/debug.py:194 --msgid "limit to specified type" --msgstr "limiter au type spécifié" -+#: plugins/reposync.py:190 -+#, python-format -+msgid "[DELETED] %s" -+msgstr "[DELETED] %s" - --#: ../plugins/debug.py:196 --msgid "name of dump file" --msgstr "nom du fichier de l’instantané" -+#: plugins/reposync.py:192 -+#, python-format -+msgid "failed to delete file %s" -+msgstr "n’a pas pu supprimer le fichier %s" - --#: ../plugins/debug.py:264 -+#: plugins/reposync.py:201 - #, python-format --msgid "Package %s is not available" --msgstr "Le paquet %s n’est pas disponible" -+msgid "comps.xml for repository %s saved" -+msgstr "comps.xml pour le dépôt %s sauvegardé" -+ -+#: plugins/show_leaves.py:54 -+msgid "New leaves:" -+msgstr "Nouvelles feuilles :" - --#: ../plugins/debug.py:274 -+#: plugins/versionlock.py:32 - #, python-format --msgid "Bad dnf debug file: %s" --msgstr "Erreur du fichier debug : %s" -+msgid "Unable to read version lock configuration: %s" -+msgstr "Ne peut lire la configuration du verrouillage de version : %s" -+ -+#: plugins/versionlock.py:33 -+msgid "Locklist not set" -+msgstr "Liste des verrouillages non établie" -+ -+#: plugins/versionlock.py:34 -+msgid "Adding versionlock on:" -+msgstr "Verrouille la version de :" -+ -+#: plugins/versionlock.py:35 -+msgid "Adding exclude on:" -+msgstr "Exclusion de :" -+ -+#: plugins/versionlock.py:36 -+msgid "Package already locked in equivalent form:" -+msgstr "Paquet déjà verrouillé sous une forme équivalente :" -+ -+#: plugins/versionlock.py:37 -+msgid "Package {} is already locked" -+msgstr "Le paquet {} est déjà verrouillé" -+ -+#: plugins/versionlock.py:38 -+msgid "Package {} is already excluded" -+msgstr "Le paquet {} est déjà exclu" -+ -+#: plugins/versionlock.py:39 -+msgid "Deleting versionlock for:" -+msgstr "Déverrouille la version de :" -+ -+#: plugins/versionlock.py:40 -+msgid "No package found for:" -+msgstr "Aucun paquet trouvé pour :" -+ -+#: plugins/versionlock.py:41 -+msgid "Excludes from versionlock plugin were not applied" -+msgstr "Les exclusions du plugin versionlock n’ont pas été appliquées" -+ -+#: plugins/versionlock.py:42 -+msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" -+msgstr "" -+"Plugin versionlock : nombre de règles de verrouillage du fichier \"{}\" " -+"appliquées : {}" -+ -+#: plugins/versionlock.py:43 -+msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" -+msgstr "" -+"Plugin versionlock : nombre de règles d’exclusion du fichier \"{}\" " -+"appliquées : {}" -+ -+#: plugins/versionlock.py:44 -+msgid "Versionlock plugin: could not parse pattern:" -+msgstr "Plugin versionlock : n’a pas pu analyser le modèle :" -+ -+#: plugins/versionlock.py:130 -+msgid "control package version locks" -+msgstr "contrôle le verrouillage de version des paquets" -+ -+#: plugins/versionlock.py:136 -+msgid "Use package specifications as they are, do not try to parse them" -+msgstr "" -+"Utiliser les spécifications de paquet telles quelles, ne pas essayer de les " -+"analyser" -+ -+#~ msgid "" -+#~ "\n" -+#~ "These repositories have been enabled automatically.\n" -+#~ "Do you want to keep them enabled?" -+#~ msgstr "" -+#~ "\n" -+#~ "Ces dépôts ont été activés automatiquement.\n" -+#~ "Souhaitez-vous les conserver activés ?" -+ -+#~ msgid "" -+#~ "\n" -+#~ "You are about to enable a Playground repository.\n" -+#~ "\n" -+#~ "Do you want to continue?" -+#~ msgstr "" -+#~ "\n" -+#~ "Vous êtes sur le point d’activer un dépôt bac-à-sable.\n" -+#~ "\n" -+#~ "Voulez-vous continuer ?" -+ -+#~ msgid "also download comps.xml" -+#~ msgstr "télécharger comps.xml également" -+ -+#~ msgid "where to store downloaded repositories " -+#~ msgstr "là où stocker les dépôts téléchargés " -diff --git a/po/ja.po b/po/ja.po -index 3992dc7..1c99ee3 100644 ---- a/po/ja.po -+++ b/po/ja.po -@@ -1,766 +1,227 @@ - # Ooyama Yosiyuki , 2015. #zanata - # Ludek Janda , 2018. #zanata -+# Casey Jones , 2020. - msgid "" - msgstr "" - "Project-Id-Version: PACKAGE VERSION\n" - "Report-Msgid-Bugs-To: \n" --"POT-Creation-Date: 2020-03-19 14:54+0100\n" --"PO-Revision-Date: 2018-09-11 12:23+0000\n" --"Last-Translator: Ooyama Yosiyuki \n" --"Language-Team: Japanese\n" -+"POT-Creation-Date: 2020-06-26 09:18-0400\n" -+"PO-Revision-Date: 2020-05-04 06:40+0000\n" -+"Last-Translator: Casey Jones \n" -+"Language-Team: Japanese \n" - "Language: ja\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" --"Plural-Forms: nplurals=1; plural=0\n" --"X-Generator: Zanata 4.6.2\n" -+"Plural-Forms: nplurals=1; plural=0;\n" -+"X-Generator: Weblate 4.0.3\n" - --#: ../plugins/reposync.orig.py:42 ../plugins/reposync.py:54 --#: ../plugins/reposync.175df5c.py:42 --msgid "download all packages from remote repo" --msgstr "リモート repo からすべてのパッケージをダウンロードします" -- --#: ../plugins/reposync.orig.py:48 ../plugins/reposync.py:63 --#: ../plugins/reposync.175df5c.py:48 --msgid "download only packages for this ARCH" --msgstr "この ARCH 向けのパッケージのみをダウンロード" -- --#: ../plugins/reposync.orig.py:50 ../plugins/reposync.py:65 --#: ../plugins/reposync.175df5c.py:50 --msgid "delete local packages no longer present in repository" --msgstr "リポジトリーにもはや存在しないローカルパッケージを削除" -- --#: ../plugins/reposync.orig.py:52 ../plugins/reposync.175df5c.py:52 --msgid "also download comps.xml" --msgstr "comps.xml もダウンロード" -- --#: ../plugins/reposync.orig.py:54 ../plugins/reposync.py:71 --#: ../plugins/reposync.175df5c.py:54 --msgid "download only newest packages per-repo" --msgstr "最新のパッケージ per-repo のみをダウンロード" -- --#: ../plugins/reposync.orig.py:56 ../plugins/reposync.175df5c.py:56 --msgid "where to store downloaded repositories " --msgstr "ダウンロード済みリポジトリーの保管場所 " -- --#: ../plugins/reposync.orig.py:58 ../plugins/reposync.py:80 --#: ../plugins/reposync.175df5c.py:58 --msgid "operate on source packages" --msgstr "ソースパッケージでの操作" -- --#: ../plugins/reposync.orig.py:98 ../plugins/reposync.py:190 --#: ../plugins/reposync.175df5c.py:95 --#, python-format --msgid "[DELETED] %s" --msgstr "[DELETED] %s" -- --#: ../plugins/reposync.orig.py:100 ../plugins/reposync.py:192 --#: ../plugins/reposync.175df5c.py:97 --#, python-format --msgid "failed to delete file %s" --msgstr "ファイル %s の削除に失敗しました" -- --#: ../plugins/reposync.orig.py:110 ../plugins/reposync.175df5c.py:107 --#, python-format --msgid "Could not make repository directory: %s" --msgstr "リポジトリーディレクトリーを作成できませんでした: %s" -- --#: ../plugins/reposync.orig.py:114 ../plugins/reposync.py:201 --#: ../plugins/reposync.175df5c.py:111 --#, python-format --msgid "comps.xml for repository %s saved" --msgstr "リポジトリー %s の comps.xml が保存されました" -- --#: ../plugins/changelog.py:37 --#, python-brace-format --msgid "Not a valid date: \"{0}\"." --msgstr "" -- --#: ../plugins/changelog.py:43 --msgid "Show changelog data of packages" --msgstr "" -- --#: ../plugins/changelog.py:51 --msgid "" --"show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " --"is recommended." --msgstr "" -- --#: ../plugins/changelog.py:55 --msgid "show given number of changelog entries per 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 "" -- --#: ../plugins/changelog.py:60 --msgid "PACKAGE" --msgstr "" -- --#: ../plugins/changelog.py:81 ../plugins/debuginfo-install.py:90 --#, python-format --msgid "No match for argument: %s" --msgstr "一致した引数がありません: %s" -- --#: ../plugins/changelog.py:109 --msgid "Listing changelogs since {}" --msgstr "" -- --#: ../plugins/changelog.py:111 --msgid "Listing only latest changelog" --msgid_plural "Listing {} latest changelogs" --msgstr[0] "" -- --#: ../plugins/changelog.py:116 --msgid "Listing only new changelogs since installed version of the package" --msgstr "" -- --#: ../plugins/changelog.py:118 --msgid "Listing all changelogs" --msgstr "" -- --#: ../plugins/changelog.py:122 --msgid "Changelogs for {}" --msgstr "" -- --#: ../plugins/debuginfo-install.py:56 --msgid "install debuginfo packages" --msgstr "debuginfo パッケージのインストール" -- --#: ../plugins/debuginfo-install.py:180 --#, python-format --msgid "" --"Could not find debuginfo package for the following available packages: %s" --msgstr "" -- --#: ../plugins/debuginfo-install.py:185 --#, python-format --msgid "" --"Could not find debugsource package for the following available packages: %s" --msgstr "" -- --#: ../plugins/debuginfo-install.py:190 --#, python-format --msgid "" --"Could not find debuginfo package for the following installed packages: %s" --msgstr "" -- --#: ../plugins/debuginfo-install.py:195 --#, python-format --msgid "" --"Could not find debugsource package for the following installed packages: %s" --msgstr "" -- --#: ../plugins/debuginfo-install.py:199 --msgid "Unable to find a match" --msgstr "一致するものが見つかりません" -- --#: ../plugins/versionlock_old.py:32 ../plugins/versionlock.py:32 --#: ../plugins/versionlock_master.py:32 --#, python-format --msgid "Unable to read version lock configuration: %s" --msgstr "バージョンロック設定の読み込みができません: %s" -- --#: ../plugins/versionlock_old.py:33 ../plugins/versionlock.py:33 --#: ../plugins/versionlock_master.py:33 --msgid "Locklist not set" --msgstr "ロックリストが設定されていません" -- --#: ../plugins/versionlock_old.py:34 ../plugins/versionlock.py:34 --#: ../plugins/versionlock_master.py:34 --msgid "Adding versionlock on:" --msgstr "versionlock を追加:" -- --#: ../plugins/versionlock_old.py:35 ../plugins/versionlock.py:35 --#: ../plugins/versionlock_master.py:35 --msgid "Adding exclude on:" --msgstr "除外を追加:" -- --#: ../plugins/versionlock_old.py:36 ../plugins/versionlock.py:39 --#: ../plugins/versionlock_master.py:36 --msgid "Deleting versionlock for:" --msgstr "versionlock を削除:" -- --#: ../plugins/versionlock_old.py:37 ../plugins/versionlock.py:40 --#: ../plugins/versionlock_master.py:37 --msgid "No package found for:" --msgstr "パッケージが見つかりませんでした:" -- --#: ../plugins/versionlock_old.py:38 ../plugins/versionlock.py:41 --#: ../plugins/versionlock_master.py:38 --msgid "Excludes from versionlock plugin were not applied" --msgstr "versionlock プラグインからの除外は適用されませんでした" -- --#: ../plugins/versionlock_old.py:102 ../plugins/versionlock.py:127 --#: ../plugins/versionlock_master.py:119 --msgid "control package version locks" --msgstr "パッケージバージョンロックの制御" -- --#: ../plugins/migrate.py:45 --msgid "migrate yum's history, group and yumdb data to dnf" --msgstr "yum の履歴、グループ、および yumdb データを dnf へ移行" -- --#: ../plugins/migrate.py:54 --msgid "Migrating history data..." --msgstr "履歴データを移行中..." -- --#: ../plugins/repograph.py:50 --msgid "Output a full package dependency graph in dot format" --msgstr "ドット形式でパッケージの依存関係グラフ全体を出力" -- --#: ../plugins/repograph.py:110 --#, python-format --msgid "Nothing provides: '%s'" --msgstr "何も提供しません: '%s'" -- --#: ../plugins/versionlock.py:36 --msgid "Package already locked in equivalent form:" --msgstr "" -- --#: ../plugins/versionlock.py:37 --msgid "Package {} is already locked" --msgstr "" -- --#: ../plugins/versionlock.py:38 --msgid "Package {} is already excluded" --msgstr "" -- --#: ../plugins/versionlock.py:42 ../plugins/versionlock_master.py:39 --msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" --msgstr "versionlock プラグイン: ファイル \"{}\" のロックルールの数を適用: {}" -- --#: ../plugins/versionlock.py:43 ../plugins/versionlock_master.py:40 --msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" --msgstr "versionlock プラグイン: ファイル \"{}\" の除外ルールの数を適用: {}" -- --#: ../plugins/versionlock.py:44 ../plugins/versionlock_master.py:41 --msgid "Versionlock plugin: could not parse pattern:" --msgstr "versionlock プラグイン: パターンを解析できませんでした:" -- --#: ../plugins/versionlock.py:133 --msgid "Use package specifications as they are, do not try to parse them" --msgstr "" -- --#: ../plugins/post-transaction-actions.py:71 --#, python-format --msgid "Bad Action Line \"%s\": %s" --msgstr "" -- --#. unsupported state, skip it --#: ../plugins/post-transaction-actions.py:130 --#, python-format --msgid "Bad Transaction State: %s" --msgstr "" -- --#: ../plugins/post-transaction-actions.py:153 --#: ../plugins/post-transaction-actions.py:155 --#, python-format --msgid "post-transaction-actions: %s" --msgstr "" -- --#: ../plugins/post-transaction-actions.py:157 --#, python-format --msgid "post-transaction-actions: Bad Command \"%s\": %s" --msgstr "" -- --#: ../plugins/builddep.py:45 -+#: plugins/builddep.py:45 - msgid "[PACKAGE|PACKAGE.spec]" - msgstr "[PACKAGE|PACKAGE.spec]" - --#: ../plugins/builddep.py:85 -+#: plugins/builddep.py:85 - #, python-format - msgid "'%s' is not of the format 'MACRO EXPR'" - msgstr "'%s' は、'MACRO EXPR' の形式ではありません" - --#: ../plugins/builddep.py:90 -+#: plugins/builddep.py:90 - msgid "packages with builddeps to install" - msgstr "インストールする builddeps パッケージ" - --#: ../plugins/builddep.py:93 -+#: plugins/builddep.py:93 - msgid "define a macro for spec file parsing" - msgstr "スペックファイルの解析にマクロを定義" - --#: ../plugins/builddep.py:95 -+#: plugins/builddep.py:95 - msgid "skip build dependencies not available in repositories" --msgstr "" -+msgstr "リポジトリーで利用できないビルドの依存関係をスキップします" - --#: ../plugins/builddep.py:98 -+#: plugins/builddep.py:98 - msgid "treat commandline arguments as spec files" - msgstr "コマンドラインの引数をスペックファイルとして処理" - --#: ../plugins/builddep.py:100 -+#: plugins/builddep.py:100 - msgid "treat commandline arguments as source rpm" - msgstr "コマンドラインの引数をソース rpm として処理" - --#: ../plugins/builddep.py:144 -+#: plugins/builddep.py:144 - msgid "RPM: {}" --msgstr "" -+msgstr "RPM: {}" - --#: ../plugins/builddep.py:153 -+#: plugins/builddep.py:153 - msgid "Some packages could not be found." - msgstr "一部のパッケージは見つかりませんでした。" - - #. No provides, no files - #. Richdeps can have no matches but it could be correct (solver must decide - #. later) --#: ../plugins/builddep.py:173 -+#: plugins/builddep.py:173 - #, python-format - msgid "No matching package to install: '%s'" - msgstr "インストール用の一致するパッケージがありません: '%s'" - --#: ../plugins/builddep.py:191 -+#: plugins/builddep.py:191 - #, python-format - msgid "Failed to open: '%s', not a valid source rpm file." - msgstr "開くことに失敗しました: '%s'、有効なソース rpm ファイルではありません。" - --#: ../plugins/builddep.py:204 ../plugins/builddep.py:220 --#: ../plugins/builddep.py:237 -+#: plugins/builddep.py:204 plugins/builddep.py:220 plugins/builddep.py:237 - msgid "Not all dependencies satisfied" - msgstr "すべての依存関係が満たされているわけではない" - --#: ../plugins/builddep.py:211 -+#: plugins/builddep.py:211 - #, python-format - msgid "Failed to open: '%s', not a valid spec file: %s" - msgstr "開くことに失敗しました: '%s'、有効なスペックファイルではありません: %s" - --#: ../plugins/builddep.py:230 ../plugins/repoclosure.py:118 -+#: plugins/builddep.py:230 plugins/repoclosure.py:118 - #, python-format - msgid "no package matched: %s" - msgstr "一致するパッケージはありません: %s" - --#: ../plugins/config_manager.py:37 -+#: plugins/changelog.py:37 - #, python-brace-format --msgid "manage {prog} configuration options and repositories" -+msgid "Not a valid date: \"{0}\"." -+msgstr "有効な日付ではありません: \"{0}\"。" -+ -+#: plugins/changelog.py:43 -+msgid "Show changelog data of packages" -+msgstr "パッケージの changelog データを表示します" -+ -+#: plugins/changelog.py:51 -+msgid "" -+"show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " -+"is recommended." -+msgstr "DATE 以降の changelog エントリーを表示します。不明瞭さを避けるため、YYYY-MM-DD のフォーマットが推奨されます。" -+ -+#: plugins/changelog.py:55 -+msgid "show given number of changelog entries per package" -+msgstr "パッケージごとの changelog エントリーの与えられた数を表示します" -+ -+#: plugins/changelog.py:58 -+msgid "" -+"show only new changelog entries for packages, that provide an upgrade for " -+"some of already installed packages." - msgstr "" -+"パッケージ向けの新しい changelog エントリーのみを表示します。これは、インストール済みのパッケージの一部にアップグレードを提供します。" -+ -+#: plugins/changelog.py:60 -+msgid "PACKAGE" -+msgstr "パッケージ" -+ -+#: plugins/changelog.py:81 plugins/debuginfo-install.py:90 -+#, python-format -+msgid "No match for argument: %s" -+msgstr "一致した引数がありません: %s" -+ -+#: plugins/changelog.py:109 -+msgid "Listing changelogs since {}" -+msgstr "{} 以降の changelogs を一覧表示します" -+ -+#: plugins/changelog.py:111 -+msgid "Listing only latest changelog" -+msgid_plural "Listing {} latest changelogs" -+msgstr[0] "最新の changelog のみを一覧表示します" -+ -+#: plugins/changelog.py:116 -+msgid "Listing only new changelogs since installed version of the package" -+msgstr "パッケージのインストールされたバージョン以降の新しい changelogs のみを一覧表示します" -+ -+#: plugins/changelog.py:118 -+msgid "Listing all changelogs" -+msgstr "すべての changelogs を一覧表示します" -+ -+#: plugins/changelog.py:122 -+msgid "Changelogs for {}" -+msgstr "{} の Changelogs" - --#: ../plugins/config_manager.py:44 -+#: plugins/config_manager.py:37 -+#, python-brace-format -+msgid "manage {prog} configuration options and repositories" -+msgstr "{prog} 設定オプションおよびリポジトリーを管理します" -+ -+#: plugins/config_manager.py:44 - msgid "repo to modify" - msgstr "修正する repo" - --#: ../plugins/config_manager.py:47 -+#: plugins/config_manager.py:47 - msgid "save the current options (useful with --setopt)" - msgstr "現在のオプションを保存 (--setopt で有用)" - --#: ../plugins/config_manager.py:50 -+#: plugins/config_manager.py:50 - msgid "add (and enable) the repo from the specified file or url" - msgstr "指定されたファイルまたは url から repo を追加 (および有効化)" - --#: ../plugins/config_manager.py:53 -+#: plugins/config_manager.py:53 - msgid "print current configuration values to stdout" - msgstr "stdout に現在の設定値を印刷" - --#: ../plugins/config_manager.py:56 -+#: plugins/config_manager.py:56 - msgid "print variable values to stdout" - msgstr "stdout に変数値を印刷" - --#: ../plugins/config_manager.py:70 -+#: plugins/config_manager.py:60 -+msgid "enable repos (automatically saves)" -+msgstr "レポを有効にする (自動保存)" -+ -+#: plugins/config_manager.py:63 -+msgid "disable repos (automatically saves)" -+msgstr "レポを無効にする (自動保存)" -+ -+#: plugins/config_manager.py:77 - msgid "one of the following arguments is required: {}" -+msgstr "以下のいずれかの引数が必要です。{}" -+ -+#: plugins/config_manager.py:86 -+msgid "" -+"Warning: --enablerepo/--disablerepo arguments have no meaningwith config " -+"manager. Use --set-enabled/--set-disabled instead." - msgstr "" -+"警告: --enablerepo/--disablerepo の引数は config manager では意味がありません。代わりに -set-" -+"enabled/--set-disabled を使用してください。" - --#: ../plugins/config_manager.py:113 -+#: plugins/config_manager.py:131 - #, python-format - msgid "No matching repo to modify: %s." - msgstr "修正用の一致する repo はありません: %s." - --#: ../plugins/config_manager.py:164 -+#: plugins/config_manager.py:182 - #, python-format - msgid "Adding repo from: %s" - msgstr "repo の追加: %s" - --#: ../plugins/config_manager.py:188 -+#: plugins/config_manager.py:206 - msgid "Configuration of repo failed" - msgid_plural "Configuration of repos failed" - msgstr[0] "repo の設定に失敗しました" - --#: ../plugins/config_manager.py:198 -+#: plugins/config_manager.py:216 - #, python-format - msgid "Could not save repo to repofile %s: %s" - msgstr "repofile %s に repo を保存できませんでした: %s" - --#: ../plugins/local.py:122 --msgid "Unable to create a directory '{}' due to '{}'" --msgstr "'{}' のため、ディレクトリー '{}' を作成できませんでした" -- --#: ../plugins/local.py:126 --msgid "'{}' is not a directory" --msgstr "'{}' はディレクトリーではありません" -- --#: ../plugins/local.py:135 --msgid "Copying '{}' to local repo" --msgstr "ローカル repo に '{}' をコピー中" -- --#: ../plugins/local.py:141 --msgid "Can't write file '{}'" --msgstr "ファイル '{}' を書き込みできません" -+#: plugins/copr.py:59 -+msgid "y" -+msgstr "y" - --#: ../plugins/local.py:156 --msgid "Rebuilding local repo" --msgstr "ローカル repo を再ビルド中" -+#: plugins/copr.py:59 -+msgid "yes" -+msgstr "はい" - --#: ../plugins/leaves.py:32 --msgid "List installed packages not required by any other package" --msgstr "他のパッケージから必要とされないインスール済みパッケージを一覧表示します" -+#: plugins/copr.py:60 -+msgid "n" -+msgstr "n" - --#: ../plugins/needs_restarting.py:173 --msgid "determine updated binaries that need restarting" --msgstr "再起動が必要な更新済みバイナリーを決定します" -+#: plugins/copr.py:60 -+msgid "no" -+msgstr "いいえ" - --#: ../plugins/needs_restarting.py:178 --msgid "only consider this user's processes" --msgstr "このユーザーのプロセスのみを検討します" -+#: plugins/copr.py:79 -+msgid "Interact with Copr repositories." -+msgstr "Copr リポジトリーとの対話。" - --#: ../plugins/needs_restarting.py:180 --msgid "" --"only report whether a reboot is required (exit code 1) or not (exit code 0)" --msgstr "" -- --#: ../plugins/needs_restarting.py:199 --msgid "Core libraries or services have been updated since boot-up:" --msgstr "" -- --#: ../plugins/needs_restarting.py:204 --msgid "Reboot is required to fully utilize these updates." --msgstr "" -- --#: ../plugins/needs_restarting.py:205 --msgid "More information:" --msgstr "" -- --#: ../plugins/needs_restarting.py:209 --msgid "No core libraries or services have been updated since boot-up." --msgstr "" -- --#: ../plugins/needs_restarting.py:211 --msgid "Reboot should not be necessary." --msgstr "" -- --#: ../plugins/repoclosure.py:42 --msgid "Display a list of unresolved dependencies for repositories" --msgstr "リポジトリーの未解決の依存関係の一覧を表示します" -- --#: ../plugins/repoclosure.py:66 --msgid "Repoclosure ended with unresolved dependencies." --msgstr "repoclosure は未解決の依存関係で終了しました。" -- --#: ../plugins/repoclosure.py:153 --msgid "check packages of the given archs, can be specified multiple times" --msgstr "特定の arch のパッケージを確認します。複数回指定することができます" -- --#: ../plugins/repoclosure.py:156 --msgid "Specify repositories to check" --msgstr "確認するリポジトリーを指定します" -- --#: ../plugins/repoclosure.py:158 --msgid "Check only the newest packages in the repos" --msgstr "repo の最新パッケージのみを確認します" -- --#: ../plugins/repoclosure.py:161 --msgid "Check closure for this package only" --msgstr "このパッケージのみのクロージャーを確認します" -- --#: ../plugins/repodiff.py:45 --msgid "List differences between two sets of repositories" --msgstr "" -- --#: ../plugins/repodiff.py:58 --msgid "Specify old repository, can be used multiple times" --msgstr "" -- --#: ../plugins/repodiff.py:60 --msgid "Specify new repository, can be used multiple times" --msgstr "" -- --#: ../plugins/repodiff.py:63 --msgid "" --"Specify architectures to compare, can be used multiple times. By default, " --"only source rpms are compared." --msgstr "" -- --#: ../plugins/repodiff.py:67 --msgid "Output additional data about the size of the changes." --msgstr "" -- --#: ../plugins/repodiff.py:69 --msgid "" --"Compare packages also by arch. By default packages are compared just by " --"name." --msgstr "" -- --#: ../plugins/repodiff.py:72 --msgid "Output a simple one line message for modified packages." --msgstr "" -- --#: ../plugins/repodiff.py:74 --msgid "" --"Split the data for modified packages between upgraded and downgraded " --"packages." --msgstr "" -- --#: ../plugins/repodiff.py:86 --msgid "Both old and new repositories must be set." --msgstr "" -- --#: ../plugins/repodiff.py:178 --msgid "Size change: {} bytes" --msgstr "" -- --#: ../plugins/repodiff.py:184 --msgid "Added package : {}" --msgstr "" -- --#: ../plugins/repodiff.py:187 --msgid "Removed package: {}" --msgstr "" -- --#: ../plugins/repodiff.py:190 --msgid "Obsoleted by : {}" --msgstr "" -- --#: ../plugins/repodiff.py:195 --msgid "" --"\n" --"Upgraded packages" --msgstr "" -- --#: ../plugins/repodiff.py:200 --msgid "" --"\n" --"Downgraded packages" --msgstr "" -- --#: ../plugins/repodiff.py:207 --msgid "" --"\n" --"Modified packages" --msgstr "" -- --#: ../plugins/repodiff.py:212 --msgid "" --"\n" --"Summary" --msgstr "" -- --#: ../plugins/repodiff.py:213 --msgid "Added packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:214 --msgid "Removed packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:216 --msgid "Upgraded packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:217 --msgid "Downgraded packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:219 --msgid "Modified packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:222 --msgid "Size of added packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:223 --msgid "Size of removed packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:225 --msgid "Size of modified packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:228 --msgid "Size of upgraded packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:230 --msgid "Size of downgraded packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:232 --msgid "Size change: {}" --msgstr "" -- --#: ../plugins/reposync.py:67 --msgid "also download and uncompress comps.xml" --msgstr "" -- --#: ../plugins/reposync.py:69 --msgid "download all the metadata." --msgstr "" -- --#: ../plugins/reposync.py:73 --msgid "where to store downloaded repositories" --msgstr "" -- --#: ../plugins/reposync.py:75 --msgid "Don't add the reponame to the download path." --msgstr "" -- --#: ../plugins/reposync.py:77 --msgid "" --"where to store downloaded repository metadata. Defaults to the value of " --"--download-path." --msgstr "" -- --#: ../plugins/reposync.py:82 --msgid "try to set local timestamps of local files by the one on the server" --msgstr "" -- --#: ../plugins/reposync.py:85 --msgid "Just list urls of what would be downloaded, don't download" --msgstr "" -- --#: ../plugins/reposync.py:109 --msgid "Can't use --norepopath with multiple repositories" --msgstr "" -- --#: ../plugins/reposync.py:127 --#, python-format --msgid "Failed to get mirror for metadata: %s" --msgstr "" -- --#: ../plugins/reposync.py:144 --msgid "Failed to get mirror for the group file." --msgstr "" -- --#: ../plugins/reposync.py:175 --msgid "Download target '{}' is outside of download path '{}'." --msgstr "" -- --#: ../plugins/reposync.py:260 ../plugins/download.py:121 --#, python-format --msgid "Failed to get mirror for package: %s" --msgstr "パッケージのミラー取得に失敗しました: %s" -- --#: ../plugins/repomanage.py:44 --msgid "Manage a directory of rpm packages" --msgstr "rpm パッケージのディレクトリーを管理します" -- --#: ../plugins/repomanage.py:58 --msgid "Pass either --old or --new, not both!" --msgstr "--old または --new のいずれかを渡します。両方ではありません。" -- --#: ../plugins/repomanage.py:68 --msgid "No files to process" --msgstr "処理するファイルはありません" -- --#: ../plugins/repomanage.py:73 --msgid "Could not open {}" --msgstr "{} を開くことができません" -- --#: ../plugins/repomanage.py:130 --msgid "Print the older packages" --msgstr "古いパッケージを印刷します" -- --#: ../plugins/repomanage.py:132 --msgid "Print the newest packages" --msgstr "最新のパッケージを印刷します" -- --#: ../plugins/repomanage.py:134 --msgid "Space separated output, not newline" --msgstr "スペースで区切られた出力で、改行ではありません" -- --#: ../plugins/repomanage.py:136 --msgid "Newest N packages to keep - defaults to 1" --msgstr "維持する最新の N パッケージ - デフォルトは 1 に設定されます" -- --#: ../plugins/repomanage.py:139 --msgid "Path to directory" --msgstr "ディレクトリーへのパス" -- --#: ../plugins/download.py:41 --msgid "Download package to current directory" --msgstr "現在のディレクトリーにパッケージをダウンロードします" -- --#: ../plugins/download.py:51 --msgid "packages to download" --msgstr "ダウンロードするパッケージ" -- --#: ../plugins/download.py:53 --msgid "download the src.rpm instead" --msgstr "代わりに src.rpm をダウンロードします" -- --#: ../plugins/download.py:55 --msgid "download the -debuginfo package instead" --msgstr "代わりに -debuginfo パッケージをダウンロードします" -- --#: ../plugins/download.py:57 --msgid "download the -debugsource package instead" --msgstr "" -- --#: ../plugins/download.py:60 --msgid "limit the query to packages of given architectures." --msgstr "特定のアーキテクチャーのパッケージへのクエリーを制限します。" -- --#: ../plugins/download.py:62 --msgid "resolve and download needed dependencies" --msgstr "必要な依存関係を解決し、ダウンロードします" -- --#: ../plugins/download.py:64 --msgid "" --"when running with --resolve, download all dependencies (do not exclude " --"already installed ones)" --msgstr "" -- --#: ../plugins/download.py:67 --msgid "" --"print list of urls where the rpms can be downloaded instead of downloading" --msgstr "ダウンロードする代わりに、rpm をダウンロードできる url の一覧を印刷します" -- --#: ../plugins/download.py:72 --msgid "when running with --url, limit to specific protocols" --msgstr "--url で実行中の際は、特定のプロトコルに限定します" -- --#: ../plugins/download.py:243 --msgid "Exiting due to strict setting." --msgstr "厳密な設定により終了中です。" -- --#: ../plugins/download.py:261 --msgid "Error in resolve of packages:" --msgstr "パッケージの解決でエラー:" -- --#: ../plugins/download.py:279 --#, python-format --msgid "No source rpm defined for %s" --msgstr "%s に対して定義されているソース rpm はありません" -- --#: ../plugins/download.py:296 ../plugins/download.py:309 --#, python-format --msgid "No package %s available." --msgstr "利用可能なパッケージ %s はありません。" -- --#: ../plugins/show_leaves.py:54 --msgid "New leaves:" --msgstr "新規のリーフパッケージ (他のパッケージから依存されていないパッケージ) :" -- --#: ../plugins/copr.py:56 --msgid "yes" --msgstr "はい" -- --#: ../plugins/copr.py:56 --msgid "y" --msgstr "y" -- --#: ../plugins/copr.py:57 --msgid "no" --msgstr "いいえ" -- --#: ../plugins/copr.py:57 --msgid "n" --msgstr "n" -- --#: ../plugins/copr.py:76 --msgid "Interact with Copr repositories." --msgstr "Copr リポジトリーとの対話。" -- --#: ../plugins/copr.py:77 -+#: plugins/copr.py:81 - msgid "" - "\n" - " enable name/project [chroot]\n" -@@ -798,58 +259,59 @@ msgstr "" - " copr search tests\n" - " " - --#: ../plugins/copr.py:103 -+#: plugins/copr.py:107 - msgid "List all installed Copr repositories (default)" - msgstr "インストール済みのすべての Copr リポジトリーを一覧表示します (デフォルト)" - --#: ../plugins/copr.py:105 -+#: plugins/copr.py:109 - msgid "List enabled Copr repositories" - msgstr "有効化された Copr リポジトリーを一覧表示します" - --#: ../plugins/copr.py:107 -+#: plugins/copr.py:111 - msgid "List disabled Copr repositories" - msgstr "無効化された Copr リポジトリーを一覧表示します" - --#: ../plugins/copr.py:109 -+#: plugins/copr.py:113 - msgid "List available Copr repositories by user NAME" - msgstr "利用可能な Copr リポジトリーをユーザー NAME ごとに一覧表示します" - --#: ../plugins/copr.py:111 -+#: plugins/copr.py:115 - msgid "Specify an instance of Copr to work with" --msgstr "" -+msgstr "作業する Copr のインスタンスを指定します" - --#: ../plugins/copr.py:145 ../plugins/copr.py:210 ../plugins/copr.py:230 -+#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 - msgid "Error: " - msgstr "エラー: " - --#: ../plugins/copr.py:146 -+#: plugins/copr.py:150 - msgid "" - "specify Copr hub either with `--hub` or using " - "`copr_hub/copr_username/copr_projectname` format" - msgstr "" -+"`--hub` または `copr_hub/copr_username/copr_projectname` フォーマットを使って、Copr " -+"ハブを指定します" - --#: ../plugins/copr.py:149 -+#: plugins/copr.py:153 - msgid "multiple hubs specified" --msgstr "" -+msgstr "複数のハブが指定されています" - --#: ../plugins/copr.py:211 ../plugins/copr.py:215 -+#: plugins/copr.py:218 plugins/copr.py:222 - msgid "exactly two additional parameters to copr command are required" - msgstr "copr コマンドに厳密に 2 つの追加パラメーターが必要です" - --#: ../plugins/copr.py:231 -+#: plugins/copr.py:238 - msgid "use format `copr_username/copr_projectname` to reference copr project" - msgstr "copr プロジェクトを参照するには `copr_username/copr_projectname` 形式を使用します" - --#: ../plugins/copr.py:233 -+#: plugins/copr.py:240 - msgid "bad copr project format" - msgstr "不正な copr プロジェクト形式" - --#: ../plugins/copr.py:247 --#, python-brace-format -+#: plugins/copr.py:254 - msgid "" - "\n" --"You are about to enable a Copr repository. Please note that this\n" --"repository is not part of the main distribution, and quality may vary.\n" -+"Enabling a Copr repository. Please note that this repository is not part\n" -+"of the main distribution, and quality may vary.\n" - "\n" - "The Fedora Project does not exercise any power over the contents of\n" - "this repository beyond the rules outlined in the Copr FAQ at\n" -@@ -858,164 +320,768 @@ msgid "" - "\n" - "Please do not file bug reports about these packages in Fedora\n" - "Bugzilla. In case of problems, contact the owner of this repository.\n" --"\n" --"Do you really want to enable {0}?" - msgstr "" -+"\n" -+"Copr リポジトリーを有効化しています。このリポジトリーは\n" -+"主要ディストリビューションの一部ではないため、品質が一定していない点に注意してください。\n" -+"\n" -+"Fedora Project は、このリポジトリーのコンテンツに関して、 の \n" -+"Copr FAQ で示されたルールを超えて権利を行使することは\n" -+"ありません。また、パッケージは、任意の品質またはセキュリ\n" -+"ティーレベルを固守していません。\n" -+"\n" -+"Fedora Bugzilla でこれらのパッケージに関するバグ報告をしないでください。\n" -+"問題が発生した場合は、このリポジトリーのオーナーに連絡してください。\n" - --#: ../plugins/copr.py:263 -+#: plugins/copr.py:271 - msgid "Repository successfully enabled." - msgstr "リポジトリが正常に有効化されました。" - --#: ../plugins/copr.py:267 -+#: plugins/copr.py:276 - msgid "Repository successfully disabled." - msgstr "リポジトリが正常に無効化されました。" - --#: ../plugins/copr.py:271 -+#: plugins/copr.py:280 - msgid "Repository successfully removed." - msgstr "リポジトリーが正常に削除されました。" - --#: ../plugins/copr.py:275 ../plugins/copr.py:625 -+#: plugins/copr.py:284 plugins/copr.py:689 - msgid "Unknown subcommand {}." - msgstr "不明なサブコマンド {}。" - --#: ../plugins/copr.py:328 -+#: plugins/copr.py:337 - msgid "" - "* These coprs have repo file with an old format that contains no information" - " about Copr hub - the default one was assumed. Re-enable the project to fix " - "this." - msgstr "" -+"* これらの coprs には、Copr ハブに関する情報がない古いフォーマットの repo " -+"ファイルがあります。デフォルトは仮定です。これを修正するには、プロジェクトを再度有効化してください。" - --#: ../plugins/copr.py:340 -+#: plugins/copr.py:349 - msgid "Can't parse repositories for username '{}'." - msgstr "ユーザー名 '{}' のリポジトリーを解析できません。" - --#: ../plugins/copr.py:343 -+#: plugins/copr.py:352 - msgid "List of {} coprs" - msgstr "{} coprs の一覧" - --#: ../plugins/copr.py:351 -+#: plugins/copr.py:360 - msgid "No description given" - msgstr "説明がありません" - --#: ../plugins/copr.py:363 -+#: plugins/copr.py:372 - msgid "Can't parse search for '{}'." - msgstr "'{}' の検索を解析できません。" - --#: ../plugins/copr.py:366 -+#: plugins/copr.py:375 - msgid "Matched: {}" - msgstr "一致: {}" - --#: ../plugins/copr.py:374 -+#: plugins/copr.py:383 - msgid "No description given." - msgstr "説明が与えられていません。" - --#: ../plugins/copr.py:387 -+#: plugins/copr.py:406 - msgid "Safe and good answer. Exiting." - msgstr "安全で優れた回答。終了中。" - --#: ../plugins/copr.py:394 -+#: plugins/copr.py:413 - msgid "This command has to be run under the root user." - msgstr "このコマンドは root ユーザーの下で実行する必要があります。" - --#: ../plugins/copr.py:458 -+#: plugins/copr.py:477 - msgid "" - "This repository does not have any builds yet so you cannot enable it now." - msgstr "このリポジトリーにはまだビルドがありませんので、今すぐ有効化できません。" - --#: ../plugins/copr.py:461 -+#: plugins/copr.py:480 - msgid "Such repository does not exist." - msgstr "そのようなリポジトリーは存在しません。" - --#: ../plugins/copr.py:509 -+#: plugins/copr.py:524 - #, python-brace-format --msgid "Failed to remove copr repo {0}/{1}/{2}" -+msgid "" -+"Maintainer of the enabled Copr repository decided to make\n" -+"it dependent on other repositories. Such repositories are\n" -+"usually necessary for successful installation of RPMs from\n" -+"the main Copr repository (they provide runtime dependencies).\n" -+"\n" -+"Be aware that the note about quality and bug-reporting\n" -+"above applies here too, Fedora Project doesn't control the\n" -+"content. Please review the list:\n" -+"\n" -+"{0}\n" -+"\n" -+"These repositories have been enabled automatically." - msgstr "" -+"有効化した Copr リポジトリの管理者は\n" -+"他のリポジトリに依存するように決めました。\n" -+"そのようなリポジトリは主な Corp レジストリー\n" -+"ランタイム依存関係を提供) から RPM のインストールを\n" -+"成功させるために通常必要です。\n" -+"\n" -+"上記の品質とバグ報告についての注意点が\n" -+"ここでも適用されますが、Fedora Project は内容を\n" -+"管理していないことに注意してください。以下のリストを確認\n" -+"してください。\n" -+"\n" -+"{0}\n" -+"\n" -+"これらのリポジトリは自動的に有効になっています。" -+ -+#: plugins/copr.py:545 -+msgid "Do you want to keep them enabled?" -+msgstr "有効にしておきますか?" -+ -+#: plugins/copr.py:578 -+#, python-brace-format -+msgid "Failed to remove copr repo {0}/{1}/{2}" -+msgstr "copr repo {0}/{1}/{2} の削除に失敗しました" - --#: ../plugins/copr.py:520 -+#: plugins/copr.py:589 - msgid "Failed to disable copr repo {}/{}" - msgstr "copr repo {}/{} の無効化に失敗しました。" - --#: ../plugins/copr.py:542 ../plugins/copr.py:580 -+#: plugins/copr.py:607 plugins/copr.py:644 - msgid "Unknown response from server." - msgstr "サーバーからの不明な応答です。" - --#: ../plugins/copr.py:564 -+#: plugins/copr.py:629 - msgid "Interact with Playground repository." - msgstr "Playground リポジトリーとの対話。" - --#: ../plugins/copr.py:569 --msgid "" --"\n" --"You are about to enable a Playground repository.\n" --"\n" --"Do you want to continue?" --msgstr "" --"\n" --"Playground リポジトリーを有効化しようとしています。\n" --"\n" --"続行しますか?" -+#: plugins/copr.py:635 -+#| msgid "Interact with Playground repository." -+msgid "Enabling a Playground repository." -+msgstr "Playgroundのリポジトリーの有効化。" - --#: ../plugins/copr.py:615 -+#: plugins/copr.py:636 -+msgid "Do you want to continue?" -+msgstr "続行しますか?" -+ -+#: plugins/copr.py:679 - msgid "Playground repositories successfully enabled." - msgstr "Playground リポジトリーが正常に有効化されました。" - --#: ../plugins/copr.py:618 -+#: plugins/copr.py:682 - msgid "Playground repositories successfully disabled." - msgstr "Playground リポジトリーが正常に無効化されました。" - --#: ../plugins/copr.py:622 -+#: plugins/copr.py:686 - msgid "Playground repositories successfully updated." - msgstr "Playground リポジトリーが正常に更新されました。" - --#: ../plugins/debug.py:53 -+#: plugins/debug.py:53 - msgid "dump information about installed rpm packages to file" - msgstr "ファイルにインストール済みの rpm パッケージに関するダンプ情報" - --#: ../plugins/debug.py:67 -+#: plugins/debug.py:67 - msgid "do not attempt to dump the repository contents." - msgstr "リポジトリーコンテンツのダンプは試みないでください。" - --#: ../plugins/debug.py:70 -+#: plugins/debug.py:70 - msgid "optional name of dump file" - msgstr "ダンプファイルの名前のオプション" - --#: ../plugins/debug.py:95 -+#: plugins/debug.py:95 - #, python-format - msgid "Output written to: %s" - msgstr "書き込まれた出力: %s" - --#: ../plugins/debug.py:172 -+#: plugins/debug.py:172 - msgid "restore packages recorded in debug-dump file" - msgstr "debug-dump ファイルに記録されたパッケージを復元します" - --#: ../plugins/debug.py:183 -+#: plugins/debug.py:183 - msgid "output commands that would be run to stdout." - msgstr "stdout に実行するコマンドを出力します。" - --#: ../plugins/debug.py:186 -+#: plugins/debug.py:186 - msgid "Install the latest version of recorded packages." - msgstr "記録されたパッケージの最新バージョンをインストールします。" - --#: ../plugins/debug.py:189 -+#: plugins/debug.py:189 - msgid "" - "Ignore architecture and install missing packages matching the name, epoch, " - "version and release." - msgstr "アーキテクチャーを無視し、名前、エポック、バージョン、およびリリースと一致する不足のパッケージをインストールします。" - --#: ../plugins/debug.py:194 -+#: plugins/debug.py:194 - msgid "limit to specified type" - msgstr "指定したタイプに限定します" - --#: ../plugins/debug.py:196 -+#: plugins/debug.py:196 - msgid "name of dump file" - msgstr "ダンプファイルの名前" - --#: ../plugins/debug.py:264 -+#: plugins/debug.py:270 - #, python-format - msgid "Package %s is not available" - msgstr "パッケージ %s は利用できません" - --#: ../plugins/debug.py:274 -+#: plugins/debug.py:280 - #, python-format - msgid "Bad dnf debug file: %s" - msgstr "不正な dnf デバッグファイル: %s" -+ -+#: plugins/debuginfo-install.py:56 -+msgid "install debuginfo packages" -+msgstr "debuginfo パッケージのインストール" -+ -+#: plugins/debuginfo-install.py:180 -+#, python-format -+msgid "" -+"Could not find debuginfo package for the following available packages: %s" -+msgstr "次の利用可能なパッケージの debuginfo パッケージが見つかりませんでした: %s" -+ -+#: plugins/debuginfo-install.py:185 -+#, python-format -+msgid "" -+"Could not find debugsource package for the following available packages: %s" -+msgstr "次の利用可能なパッケージの debugsource パッケージが見つかりませんでした: %s" -+ -+#: plugins/debuginfo-install.py:190 -+#, python-format -+msgid "" -+"Could not find debuginfo package for the following installed packages: %s" -+msgstr "次のインストールされたパッケージの debuginfo パッケージが見つかりませんでした: %s" -+ -+#: plugins/debuginfo-install.py:195 -+#, python-format -+msgid "" -+"Could not find debugsource package for the following installed packages: %s" -+msgstr "次のインストールされたパッケージの debugsource パッケージが見つかりませんでした: %s" -+ -+#: plugins/debuginfo-install.py:199 -+msgid "Unable to find a match" -+msgstr "一致するものが見つかりません" -+ -+#: plugins/download.py:41 -+msgid "Download package to current directory" -+msgstr "現在のディレクトリーにパッケージをダウンロードします" -+ -+#: plugins/download.py:51 -+msgid "packages to download" -+msgstr "ダウンロードするパッケージ" -+ -+#: plugins/download.py:53 -+msgid "download the src.rpm instead" -+msgstr "代わりに src.rpm をダウンロードします" -+ -+#: plugins/download.py:55 -+msgid "download the -debuginfo package instead" -+msgstr "代わりに -debuginfo パッケージをダウンロードします" -+ -+#: plugins/download.py:57 -+msgid "download the -debugsource package instead" -+msgstr "代わりに、-debugsource パッケージをダウンロードします" -+ -+#: plugins/download.py:60 -+msgid "limit the query to packages of given architectures." -+msgstr "特定のアーキテクチャーのパッケージへのクエリーを制限します。" -+ -+#: plugins/download.py:62 -+msgid "resolve and download needed dependencies" -+msgstr "必要な依存関係を解決し、ダウンロードします" -+ -+#: plugins/download.py:64 -+msgid "" -+"when running with --resolve, download all dependencies (do not exclude " -+"already installed ones)" -+msgstr "--resolve で実行する場合、すべての依存関係をダウンロードします (インストール済みのものを除外しないでください)" -+ -+#: plugins/download.py:67 -+msgid "" -+"print list of urls where the rpms can be downloaded instead of downloading" -+msgstr "ダウンロードする代わりに、rpm をダウンロードできる url の一覧を印刷します" -+ -+#: plugins/download.py:72 -+msgid "when running with --url, limit to specific protocols" -+msgstr "--url で実行中の際は、特定のプロトコルに限定します" -+ -+#: plugins/download.py:121 plugins/reposync.py:260 -+#, python-format -+msgid "Failed to get mirror for package: %s" -+msgstr "パッケージのミラー取得に失敗しました: %s" -+ -+#: plugins/download.py:243 -+msgid "Exiting due to strict setting." -+msgstr "厳密な設定により終了中です。" -+ -+#: plugins/download.py:261 -+msgid "Error in resolve of packages:" -+msgstr "パッケージの解決でエラー:" -+ -+#: plugins/download.py:279 -+#, python-format -+msgid "No source rpm defined for %s" -+msgstr "%s に対して定義されているソース rpm はありません" -+ -+#: plugins/download.py:296 plugins/download.py:309 -+#, python-format -+msgid "No package %s available." -+msgstr "利用可能なパッケージ %s はありません。" -+ -+#: plugins/leaves.py:32 -+msgid "List installed packages not required by any other package" -+msgstr "他のパッケージから必要とされないインスール済みパッケージを一覧表示します" -+ -+#: plugins/local.py:122 -+msgid "Unable to create a directory '{}' due to '{}'" -+msgstr "'{}' のため、ディレクトリー '{}' を作成できませんでした" -+ -+#: plugins/local.py:126 -+msgid "'{}' is not a directory" -+msgstr "'{}' はディレクトリーではありません" -+ -+#: plugins/local.py:135 -+msgid "Copying '{}' to local repo" -+msgstr "ローカル repo に '{}' をコピー中" -+ -+#: plugins/local.py:141 -+msgid "Can't write file '{}'" -+msgstr "ファイル '{}' を書き込みできません" -+ -+#: plugins/local.py:156 -+msgid "Rebuilding local repo" -+msgstr "ローカル repo を再ビルド中" -+ -+#: plugins/migrate.py:45 -+msgid "migrate yum's history, group and yumdb data to dnf" -+msgstr "yum の履歴、グループ、および yumdb データを dnf へ移行" -+ -+#: plugins/migrate.py:54 -+msgid "Migrating history data..." -+msgstr "履歴データを移行中..." -+ -+#: plugins/needs_restarting.py:65 -+#, python-brace-format -+msgid "" -+"No installed package found for package name \"{pkg}\" specified in needs-" -+"restarting file \"{file}\"." -+msgstr "" -+"needs-restarting ファイル \"{file}\" に指定されている {pkg} " -+"というパッケージのインストール済みパッケージが見つかりません。" -+ -+#: plugins/needs_restarting.py:199 -+msgid "determine updated binaries that need restarting" -+msgstr "再起動が必要な更新済みバイナリーを決定します" -+ -+#: plugins/needs_restarting.py:204 -+msgid "only consider this user's processes" -+msgstr "このユーザーのプロセスのみを検討します" -+ -+#: plugins/needs_restarting.py:206 -+msgid "" -+"only report whether a reboot is required (exit code 1) or not (exit code 0)" -+msgstr "再起動が必要か (終了コード 1) 必要でないか (終了コード 0) のみを報告します" -+ -+#: plugins/needs_restarting.py:230 -+msgid "Core libraries or services have been updated since boot-up:" -+msgstr "起動以降にコアライブラリーまたはサービスがアップデートされました:" -+ -+#: plugins/needs_restarting.py:235 -+msgid "Reboot is required to fully utilize these updates." -+msgstr "これらのアップデートを完全に活用するには、再起動が必要です。" -+ -+#: plugins/needs_restarting.py:236 -+msgid "More information:" -+msgstr "詳細情報:" -+ -+#: plugins/needs_restarting.py:240 -+msgid "No core libraries or services have been updated since boot-up." -+msgstr "起動以降にアップデートされたコアライブラリーまたはサービスはありません。" -+ -+#: plugins/needs_restarting.py:242 -+msgid "Reboot should not be necessary." -+msgstr "再起動な必要ありません。" -+ -+#: plugins/post-transaction-actions.py:71 -+#, python-format -+msgid "Bad Action Line \"%s\": %s" -+msgstr "不正なアクション行 \"%s\": %s" -+ -+#. unsupported state, skip it -+#: plugins/post-transaction-actions.py:130 -+#, python-format -+msgid "Bad Transaction State: %s" -+msgstr "不正なトランザクション状態: %s" -+ -+#: plugins/post-transaction-actions.py:153 -+#: plugins/post-transaction-actions.py:155 -+#, python-format -+msgid "post-transaction-actions: %s" -+msgstr "post-transaction-actions: %s" -+ -+#: plugins/post-transaction-actions.py:157 -+#, python-format -+msgid "post-transaction-actions: Bad Command \"%s\": %s" -+msgstr "post-transaction-actions: 不正なコマンド \"%s\": %s" -+ -+#: plugins/repoclosure.py:42 -+msgid "Display a list of unresolved dependencies for repositories" -+msgstr "リポジトリーの未解決の依存関係の一覧を表示します" -+ -+#: plugins/repoclosure.py:66 -+msgid "Repoclosure ended with unresolved dependencies." -+msgstr "repoclosure は未解決の依存関係で終了しました。" -+ -+#: plugins/repoclosure.py:153 -+msgid "check packages of the given archs, can be specified multiple times" -+msgstr "特定の arch のパッケージを確認します。複数回指定することができます" -+ -+#: plugins/repoclosure.py:156 -+msgid "Specify repositories to check" -+msgstr "確認するリポジトリーを指定します" -+ -+#: plugins/repoclosure.py:158 -+msgid "Check only the newest packages in the repos" -+msgstr "repo の最新パッケージのみを確認します" -+ -+#: plugins/repoclosure.py:161 -+msgid "Check closure for this package only" -+msgstr "このパッケージのみのクロージャーを確認します" -+ -+#: plugins/repodiff.py:45 -+msgid "List differences between two sets of repositories" -+msgstr "2 セットのリポジトリー間の違いを一覧表示します" -+ -+#: plugins/repodiff.py:58 -+msgid "Specify old repository, can be used multiple times" -+msgstr "古いリポジトリーを指定します、これは複数回使用できます" -+ -+#: plugins/repodiff.py:60 -+msgid "Specify new repository, can be used multiple times" -+msgstr "新しいリポジトリーを指定します、これは複数回使用できます" -+ -+#: plugins/repodiff.py:63 -+msgid "" -+"Specify architectures to compare, can be used multiple times. By default, " -+"only source rpms are compared." -+msgstr "比較するアーキテクチャーを指定します、これは複数回使用できます。デフォルトで、ソース rpms のみが比較されます。" -+ -+#: plugins/repodiff.py:67 -+msgid "Output additional data about the size of the changes." -+msgstr "変更サイズに関する追加データを出力します。" -+ -+#: plugins/repodiff.py:69 -+msgid "" -+"Compare packages also by arch. By default packages are compared just by " -+"name." -+msgstr "パッケージを Arch でも比較します。デフォルトで、パッケージは名前のみで比較されます。" -+ -+#: plugins/repodiff.py:72 -+msgid "Output a simple one line message for modified packages." -+msgstr "変更されたパッケージに簡単な 1 行メッセージを出力します。" -+ -+#: plugins/repodiff.py:74 -+msgid "" -+"Split the data for modified packages between upgraded and downgraded " -+"packages." -+msgstr "アップグレードされたパッケージとダウングレードされたパッケージとの間で、変更されたパッケージのデータを分割します。" -+ -+#: plugins/repodiff.py:86 -+msgid "Both old and new repositories must be set." -+msgstr "新旧両方のリポジトリーを設定する必要があります。" -+ -+#: plugins/repodiff.py:178 -+msgid "Size change: {} bytes" -+msgstr "サイズの変更: {} バイト" -+ -+#: plugins/repodiff.py:184 -+msgid "Added package : {}" -+msgstr "追加されたパッケージ : {}" -+ -+#: plugins/repodiff.py:187 -+msgid "Removed package: {}" -+msgstr "削除されたパッケージ: {}" -+ -+#: plugins/repodiff.py:190 -+msgid "Obsoleted by : {}" -+msgstr "により廃止されました: {}" -+ -+#: plugins/repodiff.py:195 -+msgid "" -+"\n" -+"Upgraded packages" -+msgstr "" -+"\n" -+"アップグレードされたパッケージ" -+ -+#: plugins/repodiff.py:200 -+msgid "" -+"\n" -+"Downgraded packages" -+msgstr "" -+"\n" -+"ダウングレードされたパッケージ" -+ -+#: plugins/repodiff.py:207 -+msgid "" -+"\n" -+"Modified packages" -+msgstr "" -+"\n" -+"変更されたパッケージ" -+ -+#: plugins/repodiff.py:212 -+msgid "" -+"\n" -+"Summary" -+msgstr "" -+"\n" -+"サマリー" -+ -+#: plugins/repodiff.py:213 -+msgid "Added packages: {}" -+msgstr "追加されたパッケージ: {}" -+ -+#: plugins/repodiff.py:214 -+msgid "Removed packages: {}" -+msgstr "削除されたパッケージ: {}" -+ -+#: plugins/repodiff.py:216 -+msgid "Upgraded packages: {}" -+msgstr "アップグレードされたパッケージ: {}" -+ -+#: plugins/repodiff.py:217 -+msgid "Downgraded packages: {}" -+msgstr "ダウングレードされたパッケージ: {}" -+ -+#: plugins/repodiff.py:219 -+msgid "Modified packages: {}" -+msgstr "変更されたパッケージ: {}" -+ -+#: plugins/repodiff.py:222 -+msgid "Size of added packages: {}" -+msgstr "追加されたパッケージのサイズ: {}" -+ -+#: plugins/repodiff.py:223 -+msgid "Size of removed packages: {}" -+msgstr "削除されたパッケージのサイズ: {}" -+ -+#: plugins/repodiff.py:225 -+msgid "Size of modified packages: {}" -+msgstr "変更されたパッケージのサイズ: {}" -+ -+#: plugins/repodiff.py:228 -+msgid "Size of upgraded packages: {}" -+msgstr "アップグレードされたパッケージのサイズ: {}" -+ -+#: plugins/repodiff.py:230 -+msgid "Size of downgraded packages: {}" -+msgstr "ダウングレードされたパッケージのサイズ: {}" -+ -+#: plugins/repodiff.py:232 -+msgid "Size change: {}" -+msgstr "サイズの変更: {}" -+ -+#: plugins/repograph.py:50 -+msgid "Output a full package dependency graph in dot format" -+msgstr "ドット形式でパッケージの依存関係グラフ全体を出力" -+ -+#: plugins/repograph.py:110 -+#, python-format -+msgid "Nothing provides: '%s'" -+msgstr "何も提供しません: '%s'" -+ -+#: plugins/repomanage.py:45 -+msgid "Manage a directory of rpm packages" -+msgstr "rpm パッケージのディレクトリーを管理します" -+ -+#: plugins/repomanage.py:59 -+msgid "Pass either --old or --new, not both!" -+msgstr "--old または --new のいずれかを渡します。両方ではありません。" -+ -+#: plugins/repomanage.py:71 -+msgid "No files to process" -+msgstr "処理するファイルはありません" -+ -+#: plugins/repomanage.py:93 -+msgid "Could not open {}" -+msgstr "{} を開くことができません" -+ -+#: plugins/repomanage.py:177 -+msgid "Print the older packages" -+msgstr "古いパッケージを印刷します" -+ -+#: plugins/repomanage.py:179 -+msgid "Print the newest packages" -+msgstr "最新のパッケージを印刷します" -+ -+#: plugins/repomanage.py:181 -+msgid "Space separated output, not newline" -+msgstr "スペースで区切られた出力で、改行ではありません" -+ -+#: plugins/repomanage.py:183 -+msgid "Newest N packages to keep - defaults to 1" -+msgstr "維持する最新の N パッケージ - デフォルトは 1 に設定されます" -+ -+#: plugins/repomanage.py:186 -+msgid "Path to directory" -+msgstr "ディレクトリーへのパス" -+ -+#: plugins/reposync.py:54 -+msgid "download all packages from remote repo" -+msgstr "リモート repo からすべてのパッケージをダウンロードします" -+ -+#: plugins/reposync.py:63 -+msgid "download only packages for this ARCH" -+msgstr "この ARCH 向けのパッケージのみをダウンロード" -+ -+#: plugins/reposync.py:65 -+msgid "delete local packages no longer present in repository" -+msgstr "リポジトリーにもはや存在しないローカルパッケージを削除" -+ -+#: plugins/reposync.py:67 -+msgid "also download and uncompress comps.xml" -+msgstr "comps.xml もダウンロードして展開します" -+ -+#: plugins/reposync.py:69 -+msgid "download all the metadata." -+msgstr "すべてのメタデータをダウンロードします。" -+ -+#: plugins/reposync.py:71 -+msgid "download only newest packages per-repo" -+msgstr "最新のパッケージ per-repo のみをダウンロード" -+ -+#: plugins/reposync.py:73 -+msgid "where to store downloaded repositories" -+msgstr "ダウンロード済みリポジトリーの保管場所" -+ -+#: plugins/reposync.py:75 -+msgid "Don't add the reponame to the download path." -+msgstr "ダウンロードパスにはリポネームを追加しないでください。" -+ -+#: plugins/reposync.py:77 -+msgid "" -+"where to store downloaded repository metadata. Defaults to the value of " -+"--download-path." -+msgstr "ダウンロード済みリポジトリーメタデータの保管場所。初期値は --download-path です。" -+ -+#: plugins/reposync.py:80 -+msgid "operate on source packages" -+msgstr "ソースパッケージでの操作" -+ -+#: plugins/reposync.py:82 -+msgid "try to set local timestamps of local files by the one on the server" -+msgstr "サーバー上から、ローカルファイルのローカル timestamps の設定を試みます" -+ -+#: plugins/reposync.py:85 -+msgid "Just list urls of what would be downloaded, don't download" -+msgstr "ダウンロードする予定のものの URL をリストするだけで、ダウンロードしないでください" -+ -+#: plugins/reposync.py:109 -+msgid "Can't use --norepopath with multiple repositories" -+msgstr "複数のリポジトリーでは -norepopath は使えません" -+ -+#: plugins/reposync.py:127 -+#, python-format -+msgid "Failed to get mirror for metadata: %s" -+msgstr "メタデータのミラー取得に失敗しました: %s" -+ -+#: plugins/reposync.py:144 -+msgid "Failed to get mirror for the group file." -+msgstr "グループファイルのミラー取得に失敗しました。" -+ -+#: plugins/reposync.py:175 -+msgid "Download target '{}' is outside of download path '{}'." -+msgstr "ダウンロードターゲット '{}' は、ダウンロードパス '{}' の外にあります。" -+ -+#: plugins/reposync.py:190 -+#, python-format -+msgid "[DELETED] %s" -+msgstr "[DELETED] %s" -+ -+#: plugins/reposync.py:192 -+#, python-format -+msgid "failed to delete file %s" -+msgstr "ファイル %s の削除に失敗しました" -+ -+#: plugins/reposync.py:201 -+#, python-format -+msgid "comps.xml for repository %s saved" -+msgstr "リポジトリー %s の comps.xml が保存されました" -+ -+#: plugins/show_leaves.py:54 -+msgid "New leaves:" -+msgstr "新規のリーフパッケージ (他のパッケージから依存されていないパッケージ) :" -+ -+#: plugins/versionlock.py:32 -+#, python-format -+msgid "Unable to read version lock configuration: %s" -+msgstr "バージョンロック設定の読み込みができません: %s" -+ -+#: plugins/versionlock.py:33 -+msgid "Locklist not set" -+msgstr "ロックリストが設定されていません" -+ -+#: plugins/versionlock.py:34 -+msgid "Adding versionlock on:" -+msgstr "versionlock を追加:" -+ -+#: plugins/versionlock.py:35 -+msgid "Adding exclude on:" -+msgstr "除外を追加:" -+ -+#: plugins/versionlock.py:36 -+msgid "Package already locked in equivalent form:" -+msgstr "同等の形で既にロックされているパッケージ。" -+ -+#: plugins/versionlock.py:37 -+msgid "Package {} is already locked" -+msgstr "パッケージ {} は既にロックされています" -+ -+#: plugins/versionlock.py:38 -+msgid "Package {} is already excluded" -+msgstr "パッケージ{}はすでに除外されています" -+ -+#: plugins/versionlock.py:39 -+msgid "Deleting versionlock for:" -+msgstr "versionlock を削除:" -+ -+#: plugins/versionlock.py:40 -+msgid "No package found for:" -+msgstr "パッケージが見つかりませんでした:" -+ -+#: plugins/versionlock.py:41 -+msgid "Excludes from versionlock plugin were not applied" -+msgstr "versionlock プラグインからの除外は適用されませんでした" -+ -+#: plugins/versionlock.py:42 -+msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" -+msgstr "versionlock プラグイン: ファイル \"{}\" のロックルールの数を適用: {}" -+ -+#: plugins/versionlock.py:43 -+msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" -+msgstr "versionlock プラグイン: ファイル \"{}\" の除外ルールの数を適用: {}" -+ -+#: plugins/versionlock.py:44 -+msgid "Versionlock plugin: could not parse pattern:" -+msgstr "versionlock プラグイン: パターンを解析できませんでした:" -+ -+#: plugins/versionlock.py:130 -+msgid "control package version locks" -+msgstr "パッケージバージョンロックの制御" -+ -+#: plugins/versionlock.py:136 -+msgid "Use package specifications as they are, do not try to parse them" -+msgstr "パッケージ仕様をそのまま使用し、解析を試みないでください" -+ -+#~ msgid "" -+#~ "\n" -+#~ "You are about to enable a Playground repository.\n" -+#~ "\n" -+#~ "Do you want to continue?" -+#~ msgstr "" -+#~ "\n" -+#~ "Playground リポジトリーを有効化しようとしています。\n" -+#~ "\n" -+#~ "続行しますか?" -+ -+#~ msgid "also download comps.xml" -+#~ msgstr "comps.xml もダウンロード" -+ -+#~ msgid "where to store downloaded repositories " -+#~ msgstr "ダウンロード済みリポジトリーの保管場所 " -diff --git a/po/ko.po b/po/ko.po -index d65e316..68c00fa 100644 ---- a/po/ko.po -+++ b/po/ko.po -@@ -3,7 +3,7 @@ msgid "" - msgstr "" - "Project-Id-Version: PACKAGE VERSION\n" - "Report-Msgid-Bugs-To: \n" --"POT-Creation-Date: 2020-03-19 14:54+0100\n" -+"POT-Creation-Date: 2020-06-26 09:18-0400\n" - "PO-Revision-Date: 2018-11-02 04:31+0000\n" - "Last-Translator: Copied by Zanata \n" - "Language-Team: Korean\n" -@@ -14,991 +14,1063 @@ msgstr "" - "Plural-Forms: nplurals=1; plural=0\n" - "X-Generator: Zanata 4.6.2\n" - --#: ../plugins/reposync.orig.py:42 ../plugins/reposync.py:54 --#: ../plugins/reposync.175df5c.py:42 --msgid "download all packages from remote repo" --msgstr "원격 저장소에서 모든 패키지를 다운로드하십시오." -+#: plugins/builddep.py:45 -+msgid "[PACKAGE|PACKAGE.spec]" -+msgstr "[PACKAGE|PACKAGE.spec]" - --#: ../plugins/reposync.orig.py:48 ../plugins/reposync.py:63 --#: ../plugins/reposync.175df5c.py:48 --msgid "download only packages for this ARCH" --msgstr "이 ARCH 용 패키지 만 다운로드하십시오." -+#: plugins/builddep.py:85 -+#, python-format -+msgid "'%s' is not of the format 'MACRO EXPR'" -+msgstr "'%s'는'MACRO EXPR '형식이 아닙니다." - --#: ../plugins/reposync.orig.py:50 ../plugins/reposync.py:65 --#: ../plugins/reposync.175df5c.py:50 --msgid "delete local packages no longer present in repository" --msgstr "저장소에 더 이상 존재하지 않는 로컬 패키지 삭제" -+#: plugins/builddep.py:90 -+msgid "packages with builddeps to install" -+msgstr "builddeps가 있는 패키지" - --#: ../plugins/reposync.orig.py:52 ../plugins/reposync.175df5c.py:52 --msgid "also download comps.xml" --msgstr "comps.xml도 다운로드하십시오." -+#: plugins/builddep.py:93 -+msgid "define a macro for spec file parsing" -+msgstr "spec 파일 구문 분석을 위한 매크로 정의" - --#: ../plugins/reposync.orig.py:54 ../plugins/reposync.py:71 --#: ../plugins/reposync.175df5c.py:54 --msgid "download only newest packages per-repo" --msgstr "repo 당 최신 패키지 만 다운로드하십시오." -+#: plugins/builddep.py:95 -+msgid "skip build dependencies not available in repositories" -+msgstr "리포지토리에서 사용할 수 없는 빌드 종속성 건너 뛰기" - --#: ../plugins/reposync.orig.py:56 ../plugins/reposync.175df5c.py:56 --msgid "where to store downloaded repositories " --msgstr "다운로드 한 저장소를 저장할 위치 " -+#: plugins/builddep.py:98 -+msgid "treat commandline arguments as spec files" -+msgstr "명령행 인수를 spec 파일로 처리" - --#: ../plugins/reposync.orig.py:58 ../plugins/reposync.py:80 --#: ../plugins/reposync.175df5c.py:58 --msgid "operate on source packages" --msgstr "소스 패키지를 조작한다." -+#: plugins/builddep.py:100 -+msgid "treat commandline arguments as source rpm" -+msgstr "명령행 인수를 소스 rpm으로 처리" -+ -+#: plugins/builddep.py:144 -+msgid "RPM: {}" -+msgstr "RPM: {}" -+ -+#: plugins/builddep.py:153 -+msgid "Some packages could not be found." -+msgstr "일부 패키지를 찾을 수 없습니다." - --#: ../plugins/reposync.orig.py:98 ../plugins/reposync.py:190 --#: ../plugins/reposync.175df5c.py:95 -+#. 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 "[DELETED] %s" --msgstr "[DELETED] %s" -+msgid "No matching package to install: '%s'" -+msgstr "일치하는 패키지가 없습니다: '%s'" - --#: ../plugins/reposync.orig.py:100 ../plugins/reposync.py:192 --#: ../plugins/reposync.175df5c.py:97 -+#: plugins/builddep.py:191 - #, python-format --msgid "failed to delete file %s" --msgstr "파일을 삭제하지 못했습니다. %s" -+msgid "Failed to open: '%s', not a valid source rpm file." -+msgstr "파일을 열지 못했습니다: '%s', 유효한 소스 rpm 파일이 아닙니다." -+ -+#: plugins/builddep.py:204 plugins/builddep.py:220 plugins/builddep.py:237 -+msgid "Not all dependencies satisfied" -+msgstr "모든 종속성이 충족되는 것은 아닙니다" - --#: ../plugins/reposync.orig.py:110 ../plugins/reposync.175df5c.py:107 -+#: plugins/builddep.py:211 - #, python-format --msgid "Could not make repository directory: %s" --msgstr "저장소 디렉토리를 만들지 못했습니다 : %s" -+msgid "Failed to open: '%s', not a valid spec file: %s" -+msgstr "파일을 열지 못했습니다: '%s', 유효한 spec 파일이 아닙니다: %s" - --#: ../plugins/reposync.orig.py:114 ../plugins/reposync.py:201 --#: ../plugins/reposync.175df5c.py:111 -+#: plugins/builddep.py:230 plugins/repoclosure.py:118 - #, python-format --msgid "comps.xml for repository %s saved" --msgstr "저장소에 대한 comps.xml %s 저장된" -+msgid "no package matched: %s" -+msgstr "일치하는 패키지 없음 : %s" - --#: ../plugins/changelog.py:37 -+#: plugins/changelog.py:37 - #, python-brace-format - msgid "Not a valid date: \"{0}\"." --msgstr "" -+msgstr "잘못된 날짜: \"{0}\"" - --#: ../plugins/changelog.py:43 -+#: plugins/changelog.py:43 - msgid "Show changelog data of packages" --msgstr "" -+msgstr "패키지의 변경 로그 데이터 표시" - --#: ../plugins/changelog.py:51 -+#: plugins/changelog.py:51 - msgid "" - "show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " - "is recommended." --msgstr "" -+msgstr "DATE 이후의 변경 로그 정보를 표시합니다. 혼동을 피하려면 YYYY-MM-DD 형식을 사용하는 것이 좋습니다." - --#: ../plugins/changelog.py:55 -+#: plugins/changelog.py:55 - msgid "show given number of changelog entries per package" --msgstr "" -+msgstr "각 패키지마다 지정된 수의 변경 로그 정보 표시" - --#: ../plugins/changelog.py:58 -+#: plugins/changelog.py:58 - msgid "" - "show only new changelog entries for packages, that provide an upgrade for " - "some of already installed packages." --msgstr "" -+msgstr "패키지의 새 변경 로그 정보만 표시하고 이미 설치된 패키지에 대한 업그레이드를 제공합니다." - --#: ../plugins/changelog.py:60 -+#: plugins/changelog.py:60 - msgid "PACKAGE" --msgstr "" -+msgstr "패키지" - --#: ../plugins/changelog.py:81 ../plugins/debuginfo-install.py:90 -+#: plugins/changelog.py:81 plugins/debuginfo-install.py:90 - #, python-format - msgid "No match for argument: %s" - msgstr "인수와 일치하는 항목 없음 : %s" - --#: ../plugins/changelog.py:109 -+#: plugins/changelog.py:109 - msgid "Listing changelogs since {}" --msgstr "" -+msgstr "{} 이후의 변경 로그 정보 표시" - --#: ../plugins/changelog.py:111 -+#: plugins/changelog.py:111 - msgid "Listing only latest changelog" - msgid_plural "Listing {} latest changelogs" --msgstr[0] "" -+msgstr[0] "최신 변경 로그 정보만 나열" - --#: ../plugins/changelog.py:116 -+#: plugins/changelog.py:116 - msgid "Listing only new changelogs since installed version of the package" --msgstr "" -+msgstr "설치된 패키지 버전 이후의 새로운 변경 로그만 나열" - --#: ../plugins/changelog.py:118 -+#: plugins/changelog.py:118 - msgid "Listing all changelogs" --msgstr "" -+msgstr "모든 변경 로그 나열" - --#: ../plugins/changelog.py:122 -+#: plugins/changelog.py:122 - msgid "Changelogs for {}" --msgstr "" -+msgstr "{}에 대한 변경 로그" - --#: ../plugins/debuginfo-install.py:56 --msgid "install debuginfo packages" --msgstr "debuginfo 패키지 설치" -+#: plugins/config_manager.py:37 -+#, python-brace-format -+msgid "manage {prog} configuration options and repositories" -+msgstr "{prog} 설정 옵션 및 리포지토리 관리" - --#: ../plugins/debuginfo-install.py:180 --#, python-format --msgid "" --"Could not find debuginfo package for the following available packages: %s" --msgstr "" -+#: plugins/config_manager.py:44 -+msgid "repo to modify" -+msgstr "수정할 repo" - --#: ../plugins/debuginfo-install.py:185 --#, python-format -+#: plugins/config_manager.py:47 -+msgid "save the current options (useful with --setopt)" -+msgstr "현재 옵션 저장 (--setopt와 함께 유용함)" -+ -+#: plugins/config_manager.py:50 -+msgid "add (and enable) the repo from the specified file or url" -+msgstr "지정된 파일 또는 URL에서 repo를 추가 (및 활성화)" -+ -+#: plugins/config_manager.py:53 -+msgid "print current configuration values to stdout" -+msgstr "현재 구성 값을 표준 출력으로 인쇄" -+ -+#: plugins/config_manager.py:56 -+msgid "print variable values to stdout" -+msgstr "변수 값을 표준 출력으로 출력" -+ -+#: plugins/config_manager.py:60 -+msgid "enable repos (automatically saves)" -+msgstr "리포지토리 활성화 (자동 저장)" -+ -+#: plugins/config_manager.py:63 -+msgid "disable repos (automatically saves)" -+msgstr "리포지토리 비활성화 (자동 저장)" -+ -+#: plugins/config_manager.py:77 -+msgid "one of the following arguments is required: {}" -+msgstr "다음 인수 중 하나가 필요합니다. {}" -+ -+#: plugins/config_manager.py:86 - msgid "" --"Could not find debugsource package for the following available packages: %s" -+"Warning: --enablerepo/--disablerepo arguments have no meaningwith config " -+"manager. Use --set-enabled/--set-disabled instead." - msgstr "" -+"경고 : --enablerepo/--disablerepo 인수는 config manager에서 의미가 없습니다. 대신 --set-" -+"enabled/--set-disabled를 사용하십시오." - --#: ../plugins/debuginfo-install.py:190 -+#: plugins/config_manager.py:131 - #, python-format --msgid "" --"Could not find debuginfo package for the following installed packages: %s" --msgstr "" -+msgid "No matching repo to modify: %s." -+msgstr "수정할 일치하는 Repo가 없습니다. %s." - --#: ../plugins/debuginfo-install.py:195 -+#: plugins/config_manager.py:182 - #, python-format --msgid "" --"Could not find debugsource package for the following installed packages: %s" --msgstr "" -+msgid "Adding repo from: %s" -+msgstr "다음 위치에서 레포 추가 : %s" - --#: ../plugins/debuginfo-install.py:199 --msgid "Unable to find a match" --msgstr "경기를 찾을 수 없습니다." -+#: plugins/config_manager.py:206 -+msgid "Configuration of repo failed" -+msgid_plural "Configuration of repos failed" -+msgstr[0] "저장소 구성에 실패했습니다." - --#: ../plugins/versionlock_old.py:32 ../plugins/versionlock.py:32 --#: ../plugins/versionlock_master.py:32 -+#: plugins/config_manager.py:216 - #, python-format --msgid "Unable to read version lock configuration: %s" --msgstr "버전 잠금 설정을 읽을 수 없습니다 : %s" -+msgid "Could not save repo to repofile %s: %s" -+msgstr "repofile에 repo를 저장할 수 없습니다. %s: %s" - --#: ../plugins/versionlock_old.py:33 ../plugins/versionlock.py:33 --#: ../plugins/versionlock_master.py:33 --msgid "Locklist not set" --msgstr "잠금 목록이 설정되지 않았습니다." -+#: plugins/copr.py:59 -+msgid "y" -+msgstr "y" - --#: ../plugins/versionlock_old.py:34 ../plugins/versionlock.py:34 --#: ../plugins/versionlock_master.py:34 --msgid "Adding versionlock on:" --msgstr "" -+#: plugins/copr.py:59 -+msgid "yes" -+msgstr "예" - --#: ../plugins/versionlock_old.py:35 ../plugins/versionlock.py:35 --#: ../plugins/versionlock_master.py:35 --msgid "Adding exclude on:" --msgstr "" -+#: plugins/copr.py:60 -+msgid "n" -+msgstr "n" - --#: ../plugins/versionlock_old.py:36 ../plugins/versionlock.py:39 --#: ../plugins/versionlock_master.py:36 --msgid "Deleting versionlock for:" --msgstr "" -+#: plugins/copr.py:60 -+msgid "no" -+msgstr "아니요" - --#: ../plugins/versionlock_old.py:37 ../plugins/versionlock.py:40 --#: ../plugins/versionlock_master.py:37 --msgid "No package found for:" --msgstr "" -+#: plugins/copr.py:79 -+msgid "Interact with Copr repositories." -+msgstr "Copr 저장소와 상호 작용하십시오." - --#: ../plugins/versionlock_old.py:38 ../plugins/versionlock.py:41 --#: ../plugins/versionlock_master.py:38 --msgid "Excludes from versionlock plugin were not applied" -+#: plugins/copr.py:81 -+msgid "" -+"\n" -+" enable name/project [chroot]\n" -+" disable name/project\n" -+" remove name/project\n" -+" list --installed/enabled/disabled\n" -+" list --available-by-user=NAME\n" -+" search project\n" -+"\n" -+" Examples:\n" -+" copr enable rhscl/perl516 epel-6-x86_64\n" -+" copr enable ignatenkobrain/ocltoys\n" -+" copr disable rhscl/perl516\n" -+" copr remove rhscl/perl516\n" -+" copr list --enabled\n" -+" copr list --available-by-user=ignatenkobrain\n" -+" copr search tests\n" -+" " - msgstr "" -+"\n" -+" enable name/project [chroot]\n" -+" disable name/project\n" -+" remove name/project\n" -+" list --installed/enabled/disabled\n" -+" list --available-by-user=NAME\n" -+" search project\n" -+"\n" -+" Examples:\n" -+" copr enable rhscl/perl516 epel-6-x86_64\n" -+" copr enable ignatenkobrain/ocltoys\n" -+" copr disable rhscl/perl516\n" -+" copr remove rhscl/perl516\n" -+" copr list --enabled\n" -+" copr list --available-by-user=ignatenkobrain\n" -+" copr search tests\n" -+" " - --#: ../plugins/versionlock_old.py:102 ../plugins/versionlock.py:127 --#: ../plugins/versionlock_master.py:119 --msgid "control package version locks" --msgstr "" -+#: plugins/copr.py:107 -+msgid "List all installed Copr repositories (default)" -+msgstr "설치된 모든 Copr 저장소 나열 (기본값)" - --#: ../plugins/migrate.py:45 --msgid "migrate yum's history, group and yumdb data to dnf" --msgstr "yum의 히스토리, 그룹 및 yumdb 데이터를 dnf로 마이그레이션합니다." -+#: plugins/copr.py:109 -+msgid "List enabled Copr repositories" -+msgstr "사용 가능한 Copr 저장소 목록" - --#: ../plugins/migrate.py:54 --msgid "Migrating history data..." --msgstr "기록 데이터 마이그레이션 중 ..." -+#: plugins/copr.py:111 -+msgid "List disabled Copr repositories" -+msgstr "비활성화 된 Copr 저장소 목록" - --#: ../plugins/repograph.py:50 --msgid "Output a full package dependency graph in dot format" --msgstr "도트 형식의 전체 패키지 종속성 그래프 출력" -+#: plugins/copr.py:113 -+msgid "List available Copr repositories by user NAME" -+msgstr "사용자가 사용할 수있는 Copr 저장소를 나열합니다. NAME" - --#: ../plugins/repograph.py:110 --#, python-format --msgid "Nothing provides: '%s'" --msgstr "아무것도 제공하지 않습니다 : '%s'" -+#: plugins/copr.py:115 -+msgid "Specify an instance of Copr to work with" -+msgstr "사용할 Copr 인스턴스 지정" - --#: ../plugins/versionlock.py:36 --msgid "Package already locked in equivalent form:" --msgstr "" -+#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 -+msgid "Error: " -+msgstr "오류: " - --#: ../plugins/versionlock.py:37 --msgid "Package {} is already locked" -+#: plugins/copr.py:150 -+msgid "" -+"specify Copr hub either with `--hub` or using " -+"`copr_hub/copr_username/copr_projectname` format" - msgstr "" -+"`--hub` 또는`copr_hub/copr_username/copr_projectname` 형식을 사용하여 Copr hub를 " -+"지정하십시오." - --#: ../plugins/versionlock.py:38 --msgid "Package {} is already excluded" --msgstr "" -+#: plugins/copr.py:153 -+msgid "multiple hubs specified" -+msgstr "여러 hub 지정" - --#: ../plugins/versionlock.py:42 ../plugins/versionlock_master.py:39 --msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" --msgstr "" -+#: plugins/copr.py:218 plugins/copr.py:222 -+msgid "exactly two additional parameters to copr command are required" -+msgstr "copr 명령에 정확히 두 개의 추가 매개 변수가 필요합니다." - --#: ../plugins/versionlock.py:43 ../plugins/versionlock_master.py:40 --msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" --msgstr "" -+#: plugins/copr.py:238 -+msgid "use format `copr_username/copr_projectname` to reference copr project" -+msgstr "copr 프로젝트를 참조하기 위해`copr_username / copr_projectname` 형식을 사용하십시오" - --#: ../plugins/versionlock.py:44 ../plugins/versionlock_master.py:41 --msgid "Versionlock plugin: could not parse pattern:" --msgstr "" -+#: plugins/copr.py:240 -+msgid "bad copr project format" -+msgstr "잘못된 copr 프로젝트 형식" - --#: ../plugins/versionlock.py:133 --msgid "Use package specifications as they are, do not try to parse them" -+#: plugins/copr.py:254 -+msgid "" -+"\n" -+"Enabling a Copr repository. Please note that this repository is not part\n" -+"of the main distribution, and quality may vary.\n" -+"\n" -+"The Fedora Project does not exercise any power over the contents of\n" -+"this repository beyond the rules outlined in the Copr FAQ at\n" -+",\n" -+"and packages are not held to any quality or security level.\n" -+"\n" -+"Please do not file bug reports about these packages in Fedora\n" -+"Bugzilla. In case of problems, contact the owner of this repository.\n" - msgstr "" -+"\n" -+"Copr 리포지토리를 활성화합니다. 이 리포지토리는 주요 릴리스 배포의 일부가 아닌 경우 품질이 다를 수 있습니다.\n" -+"\n" -+"Fedora 프로젝트는 의\n" -+"Copr FAQ에 명시된 규칙 외에,\n" -+"이 리포지토리의 내용에 대해 어떠한 권한도 행사할 수 없습니다.\n" -+"또한 패키지는 특정 품질 또는 보안 수준을 유지하지 않습니다\n" -+"\n" -+"Fedora Bugzilla에 이러한 패키지에 대한 버그 보고서를 제출하지 마십시오. 문제가 발생할 경우 이 리포지토리의 소유자에게 문의하십시오.\n" - --#: ../plugins/post-transaction-actions.py:71 --#, python-format --msgid "Bad Action Line \"%s\": %s" --msgstr "" -+#: plugins/copr.py:271 -+msgid "Repository successfully enabled." -+msgstr "리포지토리가 사용 설정되었습니다." - --#. unsupported state, skip it --#: ../plugins/post-transaction-actions.py:130 --#, python-format --msgid "Bad Transaction State: %s" --msgstr "" -+#: plugins/copr.py:276 -+msgid "Repository successfully disabled." -+msgstr "리포지토리가 사용 중지되었습니다." - --#: ../plugins/post-transaction-actions.py:153 --#: ../plugins/post-transaction-actions.py:155 --#, python-format --msgid "post-transaction-actions: %s" --msgstr "" -+#: plugins/copr.py:280 -+msgid "Repository successfully removed." -+msgstr "리포지토리가 제거되었습니다." - --#: ../plugins/post-transaction-actions.py:157 --#, python-format --msgid "post-transaction-actions: Bad Command \"%s\": %s" --msgstr "" -+#: plugins/copr.py:284 plugins/copr.py:689 -+msgid "Unknown subcommand {}." -+msgstr "알 수 없는 하위 명령 {}." - --#: ../plugins/builddep.py:45 --msgid "[PACKAGE|PACKAGE.spec]" -+#: plugins/copr.py:337 -+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 "" -+"* 이 copr에는 Copr hub에 대한 정보를 포함하지 않는 이전 형식의 repo 파일이 있으며 기본값이 사용되었다고 가정합니다. 이" -+" 문제를 해결하려면 프로젝트를 다시 활성화하십시오." - --#: ../plugins/builddep.py:85 --#, python-format --msgid "'%s' is not of the format 'MACRO EXPR'" --msgstr "" -+#: plugins/copr.py:349 -+msgid "Can't parse repositories for username '{}'." -+msgstr "사용자 이름 '{}'에 대한 리포지토리를 구문 분석 할 수 없습니다." - --#: ../plugins/builddep.py:90 --msgid "packages with builddeps to install" --msgstr "" -+#: plugins/copr.py:352 -+msgid "List of {} coprs" -+msgstr "{} 명의 경찰 목록" - --#: ../plugins/builddep.py:93 --msgid "define a macro for spec file parsing" --msgstr "" -+#: plugins/copr.py:360 -+msgid "No description given" -+msgstr "설명이 없습니다." - --#: ../plugins/builddep.py:95 --msgid "skip build dependencies not available in repositories" --msgstr "" -+#: plugins/copr.py:372 -+msgid "Can't parse search for '{}'." -+msgstr "'{}'에 대한 검색을 구문 분석 할 수 없습니다." - --#: ../plugins/builddep.py:98 --msgid "treat commandline arguments as spec files" --msgstr "" -+#: plugins/copr.py:375 -+msgid "Matched: {}" -+msgstr "일치하는 항목 : {}" - --#: ../plugins/builddep.py:100 --msgid "treat commandline arguments as source rpm" --msgstr "" -+#: plugins/copr.py:383 -+msgid "No description given." -+msgstr "설명이 없습니다." - --#: ../plugins/builddep.py:144 --msgid "RPM: {}" --msgstr "" -+#: plugins/copr.py:406 -+msgid "Safe and good answer. Exiting." -+msgstr "안전하고 좋은 대답. 나가기." - --#: ../plugins/builddep.py:153 --msgid "Some packages could not be found." --msgstr "" -+#: plugins/copr.py:413 -+msgid "This command has to be run under the root user." -+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'" -+#: plugins/copr.py:477 -+msgid "" -+"This repository does not have any builds yet so you cannot enable it now." -+msgstr "이 저장소에는 빌드가 아직 없으므로 지금 사용할 수 없습니다." -+ -+#: plugins/copr.py:480 -+msgid "Such repository does not exist." -+msgstr "이러한 저장소는 존재하지 않습니다." -+ -+#: plugins/copr.py:524 -+#, python-brace-format -+msgid "" -+"Maintainer of the enabled Copr repository decided to make\n" -+"it dependent on other repositories. Such repositories are\n" -+"usually necessary for successful installation of RPMs from\n" -+"the main Copr repository (they provide runtime dependencies).\n" -+"\n" -+"Be aware that the note about quality and bug-reporting\n" -+"above applies here too, Fedora Project doesn't control the\n" -+"content. Please review the list:\n" -+"\n" -+"{0}\n" -+"\n" -+"These repositories have been enabled automatically." - msgstr "" -+"활성화된 Copr 리포지토리 관리자는다른 리포지토리에\n" -+"종속되도록 지정했습니다. 이러한 리포지토리는 일반적으로\n" -+"주 Copr 리포지토리에서 RPM을 설치하는 데\n" -+"필요합니다 (런타임 종속성을 제공함).\n" -+"\n" -+"위의 품질 및 버그 보고에 대한 유의 사항도 여기에 적용되며\n" -+"Fedora Project는 컨텐츠를 제어하지 않습니다\n" -+"다음 목록을 확인하십시오:\n" -+"\n" -+"{0}\n" -+"\n" -+"이 리포지토리는 자동으로 활성화되어 있습니다." -+ -+#: plugins/copr.py:545 -+msgid "Do you want to keep them enabled?" -+msgstr "계속 활성화하시겠습니까?" -+ -+#: plugins/copr.py:578 -+#, python-brace-format -+msgid "Failed to remove copr repo {0}/{1}/{2}" -+msgstr "copr repo {0}/{1}/{2}을/를 제거하지 못했습니다" -+ -+#: plugins/copr.py:589 -+msgid "Failed to disable copr repo {}/{}" -+msgstr "copr repo {} / {}를 사용 중지하지 못했습니다." -+ -+#: plugins/copr.py:607 plugins/copr.py:644 -+msgid "Unknown response from server." -+msgstr "서버에서 알 수없는 응답." - --#: ../plugins/builddep.py:191 -+#: plugins/copr.py:629 -+msgid "Interact with Playground repository." -+msgstr "Playground 리포지토리와 상호 작용하십시오." -+ -+#: plugins/copr.py:635 -+#| msgid "Interact with Playground repository." -+msgid "Enabling a Playground repository." -+msgstr "Playground 리포지토리 활성화" -+ -+#: plugins/copr.py:636 -+msgid "Do you want to continue?" -+msgstr "계속 하시겠습니까?" -+ -+#: plugins/copr.py:679 -+msgid "Playground repositories successfully enabled." -+msgstr "Playground 리포지토리를 사용하도록 설정했습니다." -+ -+#: plugins/copr.py:682 -+msgid "Playground repositories successfully disabled." -+msgstr "Playground 리포지토리가 사용 중지되었습니다." -+ -+#: plugins/copr.py:686 -+msgid "Playground repositories successfully updated." -+msgstr "Playground 리포지토리가 성공적으로 업데이트되었습니다." -+ -+#: plugins/debug.py:53 -+msgid "dump information about installed rpm packages to file" -+msgstr "설치된 rpm 패키지에 대한 정보를 파일에 덤프하십시오." -+ -+#: plugins/debug.py:67 -+msgid "do not attempt to dump the repository contents." -+msgstr "저장소 내용을 덤프하지 마십시오." -+ -+#: plugins/debug.py:70 -+msgid "optional name of dump file" -+msgstr "덤프 파일의 선택적 이름" -+ -+#: plugins/debug.py:95 - #, python-format --msgid "Failed to open: '%s', not a valid source rpm file." --msgstr "" -+msgid "Output written to: %s" -+msgstr "작성된 출력 : %s" - --#: ../plugins/builddep.py:204 ../plugins/builddep.py:220 --#: ../plugins/builddep.py:237 --msgid "Not all dependencies satisfied" --msgstr "" -+#: plugins/debug.py:172 -+msgid "restore packages recorded in debug-dump file" -+msgstr "디버그 덤프 파일에 기록 된 패키지 복원" -+ -+#: plugins/debug.py:183 -+msgid "output commands that would be run to stdout." -+msgstr "stdout으로 실행될 출력 명령." -+ -+#: plugins/debug.py:186 -+msgid "Install the latest version of recorded packages." -+msgstr "기록 된 패키지의 최신 버전을 설치하십시오." -+ -+#: plugins/debug.py:189 -+msgid "" -+"Ignore architecture and install missing packages matching the name, epoch, " -+"version and release." -+msgstr "아키텍처를 무시하고 이름, 기원, 버전 및 릴리스와 일치하는 누락 된 패키지를 설치하십시오." -+ -+#: plugins/debug.py:194 -+msgid "limit to specified type" -+msgstr "특정 유형으로 제한" -+ -+#: plugins/debug.py:196 -+msgid "name of dump file" -+msgstr "덤프 파일의 이름" - --#: ../plugins/builddep.py:211 -+#: plugins/debug.py:270 - #, python-format --msgid "Failed to open: '%s', not a valid spec file: %s" --msgstr "" -+msgid "Package %s is not available" -+msgstr "패키지 %s을/를 사용할 수 없습니다" - --#: ../plugins/builddep.py:230 ../plugins/repoclosure.py:118 -+#: plugins/debug.py:280 - #, python-format --msgid "no package matched: %s" --msgstr "일치하는 패키지 없음 : %s" -+msgid "Bad dnf debug file: %s" -+msgstr "잘못된 dnf 디버그 파일 : %s" - --#: ../plugins/config_manager.py:37 --#, python-brace-format --msgid "manage {prog} configuration options and repositories" --msgstr "" -+#: plugins/debuginfo-install.py:56 -+msgid "install debuginfo packages" -+msgstr "debuginfo 패키지 설치" - --#: ../plugins/config_manager.py:44 --msgid "repo to modify" --msgstr "수정할 repo" -+#: plugins/debuginfo-install.py:180 -+#, python-format -+msgid "" -+"Could not find debuginfo package for the following available packages: %s" -+msgstr "사용 가능한 다음 패키지에 대한 debuginfo 패키지를 찾을 수 없습니다. %s" - --#: ../plugins/config_manager.py:47 --msgid "save the current options (useful with --setopt)" --msgstr "현재 옵션 저장 (--setopt와 함께 유용함)" -+#: plugins/debuginfo-install.py:185 -+#, python-format -+msgid "" -+"Could not find debugsource package for the following available packages: %s" -+msgstr "사용 가능한 다음 패키지에 대한 debugsource 패키지를 찾을 수 없습니다. %s" - --#: ../plugins/config_manager.py:50 --msgid "add (and enable) the repo from the specified file or url" --msgstr "지정된 파일 또는 URL에서 repo를 추가 (및 활성화)" -+#: plugins/debuginfo-install.py:190 -+#, python-format -+msgid "" -+"Could not find debuginfo package for the following installed packages: %s" -+msgstr "설치된 다음 패키지에 대한 debuginfo 패키지를 찾을 수 없습니다. %s" - --#: ../plugins/config_manager.py:53 --msgid "print current configuration values to stdout" --msgstr "현재 구성 값을 표준 출력으로 인쇄" -+#: plugins/debuginfo-install.py:195 -+#, python-format -+msgid "" -+"Could not find debugsource package for the following installed packages: %s" -+msgstr "설치된 다음 패키지에 대한 debugsource 패키지를 찾을 수 없습니다. %s" - --#: ../plugins/config_manager.py:56 --msgid "print variable values to stdout" --msgstr "변수 값을 표준 출력으로 출력" -+#: plugins/debuginfo-install.py:199 -+msgid "Unable to find a match" -+msgstr "일치하지 않습니다." - --#: ../plugins/config_manager.py:70 --msgid "one of the following arguments is required: {}" --msgstr "" -+#: plugins/download.py:41 -+msgid "Download package to current directory" -+msgstr "현재 디렉토리에 패키지 다운로드" - --#: ../plugins/config_manager.py:113 --#, python-format --msgid "No matching repo to modify: %s." --msgstr "수정할 일치하는 Repo가 없습니다. %s." -+#: plugins/download.py:51 -+msgid "packages to download" -+msgstr "다운로드 할 패키지" -+ -+#: plugins/download.py:53 -+msgid "download the src.rpm instead" -+msgstr "대신 src.rpm을 다운로드하십시오." -+ -+#: plugins/download.py:55 -+msgid "download the -debuginfo package instead" -+msgstr "대신 -debuginfo 패키지를 다운로드하십시오." -+ -+#: plugins/download.py:57 -+msgid "download the -debugsource package instead" -+msgstr "대신 -debugsource 패키지를 다운로드하십시오." - --#: ../plugins/config_manager.py:164 -+#: plugins/download.py:60 -+msgid "limit the query to packages of given architectures." -+msgstr "쿼리를 주어진 아키텍처의 패키지로 제한하십시오." -+ -+#: plugins/download.py:62 -+msgid "resolve and download needed dependencies" -+msgstr "필요한 종속성을 해결하고 다운로드하십시오." -+ -+#: plugins/download.py:64 -+msgid "" -+"when running with --resolve, download all dependencies (do not exclude " -+"already installed ones)" -+msgstr "--resolve로 실행할 때 모든 종속 패키지를 다운로드하십시오 (이미 설치된 패키지를 제외하지 마십시오)" -+ -+#: plugins/download.py:67 -+msgid "" -+"print list of urls where the rpms can be downloaded instead of downloading" -+msgstr "다운로드 대신 rpms를 다운로드 할 수있는 URL 목록 인쇄" -+ -+#: plugins/download.py:72 -+msgid "when running with --url, limit to specific protocols" -+msgstr "--url을 사용하여 실행하면 특정 프로토콜로 제한됩니다." -+ -+#: plugins/download.py:121 plugins/reposync.py:260 - #, python-format --msgid "Adding repo from: %s" --msgstr "다음 위치에서 레포 추가 : %s" -+msgid "Failed to get mirror for package: %s" -+msgstr "패키지 미러링에 실패했습니다. %s" - --#: ../plugins/config_manager.py:188 --msgid "Configuration of repo failed" --msgid_plural "Configuration of repos failed" --msgstr[0] "저장소 구성에 실패했습니다." -+#: plugins/download.py:243 -+msgid "Exiting due to strict setting." -+msgstr "엄격한 설정으로 인해 종료됩니다." -+ -+#: plugins/download.py:261 -+msgid "Error in resolve of packages:" -+msgstr "패키지 해결 오류 :" - --#: ../plugins/config_manager.py:198 -+#: plugins/download.py:279 - #, python-format --msgid "Could not save repo to repofile %s: %s" --msgstr "repofile에 repo를 저장할 수 없습니다. %s: %s" -+msgid "No source rpm defined for %s" -+msgstr "소스 rpm이 정의되지 않았습니다. %s" -+ -+#: plugins/download.py:296 plugins/download.py:309 -+#, python-format -+msgid "No package %s available." -+msgstr "패키지 없음 %s 유효한." -+ -+#: plugins/leaves.py:32 -+msgid "List installed packages not required by any other package" -+msgstr "다른 패키지에서 필요하지 않은 설치된 패키지 나열" - --#: ../plugins/local.py:122 -+#: plugins/local.py:122 - msgid "Unable to create a directory '{}' due to '{}'" - msgstr "'{}'(으)로 인해 '{}'디렉토리를 만들 수 없습니다." - --#: ../plugins/local.py:126 -+#: plugins/local.py:126 - msgid "'{}' is not a directory" - msgstr "'{}'은 (는) 디렉토리가 아닙니다." - --#: ../plugins/local.py:135 -+#: plugins/local.py:135 - msgid "Copying '{}' to local repo" - msgstr "'{}'을 (를) 로컬 저장소로 복사 중입니다." - --#: ../plugins/local.py:141 -+#: plugins/local.py:141 - msgid "Can't write file '{}'" - msgstr "'{}'파일을 쓸 수 없습니다." - --#: ../plugins/local.py:156 -+#: plugins/local.py:156 - msgid "Rebuilding local repo" - msgstr "지역 레포 복구" - --#: ../plugins/leaves.py:32 --msgid "List installed packages not required by any other package" --msgstr "다른 패키지에서 필요하지 않은 설치된 패키지 나열" -+#: plugins/migrate.py:45 -+msgid "migrate yum's history, group and yumdb data to dnf" -+msgstr "yum의 히스토리, 그룹 및 yumdb 데이터를 dnf로 마이그레이션합니다." -+ -+#: plugins/migrate.py:54 -+msgid "Migrating history data..." -+msgstr "기록 데이터 마이그레이션 중 ..." -+ -+#: plugins/needs_restarting.py:65 -+#, python-brace-format -+msgid "" -+"No installed package found for package name \"{pkg}\" specified in needs-" -+"restarting file \"{file}\"." -+msgstr "다시 시작해야하는 파일에 지정된 \"{file}\" 패키지 이름 “{pkg}\"의 설치된 패키지가 없습니다." - --#: ../plugins/needs_restarting.py:173 -+#: plugins/needs_restarting.py:199 - msgid "determine updated binaries that need restarting" - msgstr "다시 시작해야하는 업데이트 된 바이너리 결정" - --#: ../plugins/needs_restarting.py:178 -+#: plugins/needs_restarting.py:204 - msgid "only consider this user's processes" - msgstr "이 사용자의 프로세스 만 고려하십시오." - --#: ../plugins/needs_restarting.py:180 -+#: plugins/needs_restarting.py:206 - msgid "" - "only report whether a reboot is required (exit code 1) or not (exit code 0)" --msgstr "" -+msgstr "재부팅이 필요하거나 (종료 코드 1) 재부팅이 필요하지 않음 (종료 코드 0) 만 보고하십시오" - --#: ../plugins/needs_restarting.py:199 -+#: plugins/needs_restarting.py:230 - msgid "Core libraries or services have been updated since boot-up:" --msgstr "" -+msgstr "부팅 이후 코어 라이브러리 또는 서비스가 업데이트되었습니다." - --#: ../plugins/needs_restarting.py:204 -+#: plugins/needs_restarting.py:235 - msgid "Reboot is required to fully utilize these updates." --msgstr "" -+msgstr "이 업데이트를 완전히 적용하려면 재부팅해야합니다." - --#: ../plugins/needs_restarting.py:205 -+#: plugins/needs_restarting.py:236 - msgid "More information:" --msgstr "" -+msgstr "자세한 정보" - --#: ../plugins/needs_restarting.py:209 -+#: plugins/needs_restarting.py:240 - msgid "No core libraries or services have been updated since boot-up." --msgstr "" -+msgstr "부팅 후 코어 라이브러리 또는 서비스가 업데이트되지 않았습니다." - --#: ../plugins/needs_restarting.py:211 -+#: plugins/needs_restarting.py:242 - msgid "Reboot should not be necessary." --msgstr "" -+msgstr "재부팅이 필요하지 않습니다." -+ -+#: plugins/post-transaction-actions.py:71 -+#, python-format -+msgid "Bad Action Line \"%s\": %s" -+msgstr "잘못된 작업 라인 \"%s\": %s" -+ -+#. unsupported state, skip it -+#: plugins/post-transaction-actions.py:130 -+#, python-format -+msgid "Bad Transaction State: %s" -+msgstr "잘못된 트랜잭션 상태: %s" -+ -+#: plugins/post-transaction-actions.py:153 -+#: plugins/post-transaction-actions.py:155 -+#, python-format -+msgid "post-transaction-actions: %s" -+msgstr "트랜잭션 후 작업: %s" -+ -+#: plugins/post-transaction-actions.py:157 -+#, python-format -+msgid "post-transaction-actions: Bad Command \"%s\": %s" -+msgstr "트랜잭션 후 작업: 잘못된 명령 \"%s\": %s" - --#: ../plugins/repoclosure.py:42 -+#: plugins/repoclosure.py:42 - msgid "Display a list of unresolved dependencies for repositories" - msgstr "저장소에 대한 확인되지 않은 종속성 목록 표시" - --#: ../plugins/repoclosure.py:66 -+#: plugins/repoclosure.py:66 - msgid "Repoclosure ended with unresolved dependencies." - msgstr "재구 축은 해결되지 않은 종속성으로 종료되었습니다." - --#: ../plugins/repoclosure.py:153 -+#: plugins/repoclosure.py:153 - msgid "check packages of the given archs, can be specified multiple times" - msgstr "지정된 아치의 패키지를 검사하고 여러 번 지정할 수 있습니다." - --#: ../plugins/repoclosure.py:156 -+#: plugins/repoclosure.py:156 - msgid "Specify repositories to check" - msgstr "확인할 저장소를 지정하십시오." - --#: ../plugins/repoclosure.py:158 -+#: plugins/repoclosure.py:158 - msgid "Check only the newest packages in the repos" - msgstr "리포지토리의 최신 패키지 만 확인하십시오." - --#: ../plugins/repoclosure.py:161 -+#: plugins/repoclosure.py:161 - msgid "Check closure for this package only" - msgstr "이 패키지의 폐쇄 만 확인하십시오." - --#: ../plugins/repodiff.py:45 -+#: plugins/repodiff.py:45 - msgid "List differences between two sets of repositories" --msgstr "" -+msgstr "두 리포지토리 간의 차이점을 나열하십시오" - --#: ../plugins/repodiff.py:58 -+#: plugins/repodiff.py:58 - msgid "Specify old repository, can be used multiple times" --msgstr "" -+msgstr "여러 번 사용할 수 있는 이전 리포지토리를 지정합니다" - --#: ../plugins/repodiff.py:60 -+#: plugins/repodiff.py:60 - msgid "Specify new repository, can be used multiple times" --msgstr "" -+msgstr "여러 번 사용할 수 있는 새 리포지토리를 지정합니다" - --#: ../plugins/repodiff.py:63 -+#: plugins/repodiff.py:63 - msgid "" - "Specify architectures to compare, can be used multiple times. By default, " - "only source rpms are compared." --msgstr "" -+msgstr "여러 번 사용할 수 있는 비교할 아키텍처를 지정합니다. 기본적으로 소스 rpm 만 비교됩니다." - --#: ../plugins/repodiff.py:67 -+#: plugins/repodiff.py:67 - msgid "Output additional data about the size of the changes." --msgstr "" -+msgstr "크기 변경에 대한 추가 데이터를 출력합니다." - --#: ../plugins/repodiff.py:69 -+#: plugins/repodiff.py:69 - msgid "" - "Compare packages also by arch. By default packages are compared just by " - "name." --msgstr "" -+msgstr "아키텍처별로 패키지를 비교하십시오. 기본적으로 패키지는 이름별로 비교됩니다." - --#: ../plugins/repodiff.py:72 -+#: plugins/repodiff.py:72 - msgid "Output a simple one line message for modified packages." --msgstr "" -+msgstr "수정된 패키지에 대한 간단한 한 줄 메시지를 출력합니다." - --#: ../plugins/repodiff.py:74 -+#: plugins/repodiff.py:74 - msgid "" - "Split the data for modified packages between upgraded and downgraded " - "packages." --msgstr "" -+msgstr "업그레이드된 패키지와 다운 그레이드된 패키지간에 수정된 패키지의 데이터를 분할하십시오." - --#: ../plugins/repodiff.py:86 -+#: plugins/repodiff.py:86 - msgid "Both old and new repositories must be set." --msgstr "" -+msgstr "기존 리포지토리와 새 리포지토리를 모두 설정해야합니다." - --#: ../plugins/repodiff.py:178 -+#: plugins/repodiff.py:178 - msgid "Size change: {} bytes" --msgstr "" -+msgstr "크기 변경: {} 바이트" - --#: ../plugins/repodiff.py:184 -+#: plugins/repodiff.py:184 - msgid "Added package : {}" --msgstr "" -+msgstr "추가된 패키지 : {}" - --#: ../plugins/repodiff.py:187 -+#: plugins/repodiff.py:187 - msgid "Removed package: {}" --msgstr "" -+msgstr "제거된 패키지 : {}" - --#: ../plugins/repodiff.py:190 -+#: plugins/repodiff.py:190 - msgid "Obsoleted by : {}" --msgstr "" -+msgstr "사용 중지 : {}" - --#: ../plugins/repodiff.py:195 -+#: plugins/repodiff.py:195 - msgid "" - "\n" - "Upgraded packages" - msgstr "" -+"\n" -+"업그레이드된 패키지" - --#: ../plugins/repodiff.py:200 -+#: plugins/repodiff.py:200 - msgid "" - "\n" - "Downgraded packages" - msgstr "" -+"\n" -+"다운 그레이드된 패키지" - --#: ../plugins/repodiff.py:207 -+#: plugins/repodiff.py:207 - msgid "" - "\n" - "Modified packages" - msgstr "" -+"\n" -+"수정된 패키지" - --#: ../plugins/repodiff.py:212 -+#: plugins/repodiff.py:212 - msgid "" - "\n" - "Summary" - msgstr "" -+"\n" -+"요약" - --#: ../plugins/repodiff.py:213 -+#: plugins/repodiff.py:213 - msgid "Added packages: {}" --msgstr "" -+msgstr "추가된 패키지: {}" - --#: ../plugins/repodiff.py:214 -+#: plugins/repodiff.py:214 - msgid "Removed packages: {}" --msgstr "" -+msgstr "제거된 패키지: {}" - --#: ../plugins/repodiff.py:216 -+#: plugins/repodiff.py:216 - msgid "Upgraded packages: {}" --msgstr "" -+msgstr "업그레이드된 패키지: {}" - --#: ../plugins/repodiff.py:217 -+#: plugins/repodiff.py:217 - msgid "Downgraded packages: {}" --msgstr "" -+msgstr "다운 그레이드된 패키지: {}" - --#: ../plugins/repodiff.py:219 -+#: plugins/repodiff.py:219 - msgid "Modified packages: {}" --msgstr "" -+msgstr "수정된 패키지: {}" - --#: ../plugins/repodiff.py:222 -+#: plugins/repodiff.py:222 - msgid "Size of added packages: {}" --msgstr "" -+msgstr "추가된 패키지 크기: {}" - --#: ../plugins/repodiff.py:223 -+#: plugins/repodiff.py:223 - msgid "Size of removed packages: {}" --msgstr "" -+msgstr "제거된 패키지 크기: {}" - --#: ../plugins/repodiff.py:225 -+#: plugins/repodiff.py:225 - msgid "Size of modified packages: {}" --msgstr "" -+msgstr "수정된 패키지 크기: {}" - --#: ../plugins/repodiff.py:228 -+#: plugins/repodiff.py:228 - msgid "Size of upgraded packages: {}" --msgstr "" -+msgstr "업그레이드된 패키지 크기: {}" - --#: ../plugins/repodiff.py:230 -+#: plugins/repodiff.py:230 - msgid "Size of downgraded packages: {}" --msgstr "" -+msgstr "다운 그레이드된 패키지 크기: {}" - --#: ../plugins/repodiff.py:232 -+#: plugins/repodiff.py:232 - msgid "Size change: {}" --msgstr "" -+msgstr "크기 변경: {}" - --#: ../plugins/reposync.py:67 --msgid "also download and uncompress comps.xml" --msgstr "" -+#: plugins/repograph.py:50 -+msgid "Output a full package dependency graph in dot format" -+msgstr "도트 형식의 전체 패키지 종속성 그래프 출력" - --#: ../plugins/reposync.py:69 --msgid "download all the metadata." --msgstr "" -+#: plugins/repograph.py:110 -+#, python-format -+msgid "Nothing provides: '%s'" -+msgstr "아무것도 제공하지 않습니다 : '%s'" - --#: ../plugins/reposync.py:73 --msgid "where to store downloaded repositories" --msgstr "" -+#: plugins/repomanage.py:45 -+msgid "Manage a directory of rpm packages" -+msgstr "rpm 패키지 디렉토리 관리" - --#: ../plugins/reposync.py:75 --msgid "Don't add the reponame to the download path." --msgstr "" -+#: plugins/repomanage.py:59 -+msgid "Pass either --old or --new, not both!" -+msgstr "--old 또는 --new 중 하나를 전달하십시오." - --#: ../plugins/reposync.py:77 --msgid "" --"where to store downloaded repository metadata. Defaults to the value of " --"--download-path." --msgstr "" -+#: plugins/repomanage.py:71 -+msgid "No files to process" -+msgstr "처리 할 파일이 없습니다." - --#: ../plugins/reposync.py:82 --msgid "try to set local timestamps of local files by the one on the server" --msgstr "" -+#: plugins/repomanage.py:93 -+msgid "Could not open {}" -+msgstr "{}을 (를) 열 수 없습니다." - --#: ../plugins/reposync.py:85 --msgid "Just list urls of what would be downloaded, don't download" --msgstr "" -+#: plugins/repomanage.py:177 -+msgid "Print the older packages" -+msgstr "이전 패키지 인쇄" - --#: ../plugins/reposync.py:109 --msgid "Can't use --norepopath with multiple repositories" --msgstr "" -- --#: ../plugins/reposync.py:127 --#, python-format --msgid "Failed to get mirror for metadata: %s" --msgstr "" -- --#: ../plugins/reposync.py:144 --msgid "Failed to get mirror for the group file." --msgstr "" -- --#: ../plugins/reposync.py:175 --msgid "Download target '{}' is outside of download path '{}'." --msgstr "" -- --#: ../plugins/reposync.py:260 ../plugins/download.py:121 --#, python-format --msgid "Failed to get mirror for package: %s" --msgstr "패키지 미러링에 실패했습니다. %s" -- --#: ../plugins/repomanage.py:44 --msgid "Manage a directory of rpm packages" --msgstr "rpm 패키지 디렉토리 관리" -- --#: ../plugins/repomanage.py:58 --msgid "Pass either --old or --new, not both!" --msgstr "--old 또는 --new 중 하나를 전달하십시오." -- --#: ../plugins/repomanage.py:68 --msgid "No files to process" --msgstr "처리 할 파일이 없습니다." -- --#: ../plugins/repomanage.py:73 --msgid "Could not open {}" --msgstr "{}을 (를) 열 수 없습니다." -- --#: ../plugins/repomanage.py:130 --msgid "Print the older packages" --msgstr "이전 패키지 인쇄" -- --#: ../plugins/repomanage.py:132 -+#: plugins/repomanage.py:179 - msgid "Print the newest packages" - msgstr "최신 패키지 인쇄" - --#: ../plugins/repomanage.py:134 -+#: plugins/repomanage.py:181 - msgid "Space separated output, not newline" - msgstr "공백으로 구분 된 출력이 아닌 개행 문자" - --#: ../plugins/repomanage.py:136 -+#: plugins/repomanage.py:183 - msgid "Newest N packages to keep - defaults to 1" - msgstr "보관할 최신 N 패키지 - 기본값은 1입니다." - --#: ../plugins/repomanage.py:139 -+#: plugins/repomanage.py:186 - msgid "Path to directory" - msgstr "디렉토리 경로" - --#: ../plugins/download.py:41 --msgid "Download package to current directory" --msgstr "현재 디렉토리에 패키지 다운로드" -+#: plugins/reposync.py:54 -+msgid "download all packages from remote repo" -+msgstr "원격 저장소에서 모든 패키지를 다운로드하십시오." - --#: ../plugins/download.py:51 --msgid "packages to download" --msgstr "다운로드 할 패키지" -+#: plugins/reposync.py:63 -+msgid "download only packages for this ARCH" -+msgstr "이 ARCH 용 패키지 만 다운로드하십시오." - --#: ../plugins/download.py:53 --msgid "download the src.rpm instead" --msgstr "대신 src.rpm을 다운로드하십시오." -+#: plugins/reposync.py:65 -+msgid "delete local packages no longer present in repository" -+msgstr "저장소에 더 이상 존재하지 않는 로컬 패키지 삭제" - --#: ../plugins/download.py:55 --msgid "download the -debuginfo package instead" --msgstr "대신 -debuginfo 패키지를 다운로드하십시오." -+#: plugins/reposync.py:67 -+msgid "also download and uncompress comps.xml" -+msgstr "comps.xml 다운로드 및 압축 해제" - --#: ../plugins/download.py:57 --msgid "download the -debugsource package instead" --msgstr "" -+#: plugins/reposync.py:69 -+msgid "download all the metadata." -+msgstr "모든 메타 데이터를 다운로드하십시오." - --#: ../plugins/download.py:60 --msgid "limit the query to packages of given architectures." --msgstr "쿼리를 주어진 아키텍처의 패키지로 제한하십시오." -+#: plugins/reposync.py:71 -+msgid "download only newest packages per-repo" -+msgstr "repo 당 최신 패키지 만 다운로드하십시오." - --#: ../plugins/download.py:62 --msgid "resolve and download needed dependencies" --msgstr "필요한 종속성을 해결하고 다운로드하십시오." -+#: plugins/reposync.py:73 -+msgid "where to store downloaded repositories" -+msgstr "다운로드 한 저장소를 저장할 위치" - --#: ../plugins/download.py:64 --msgid "" --"when running with --resolve, download all dependencies (do not exclude " --"already installed ones)" --msgstr "" -+#: plugins/reposync.py:75 -+msgid "Don't add the reponame to the download path." -+msgstr "다운로드 경로에 reponame을 추가하지 마십시오." - --#: ../plugins/download.py:67 -+#: plugins/reposync.py:77 - msgid "" --"print list of urls where the rpms can be downloaded instead of downloading" --msgstr "다운로드 대신 rpms를 다운로드 할 수있는 URL 목록 인쇄" -+"where to store downloaded repository metadata. Defaults to the value of " -+"--download-path." -+msgstr "다운로드한 리포지터리 메타 데이터를 저장할 위치입니다. 기본값은 --download-path입니다." - --#: ../plugins/download.py:72 --msgid "when running with --url, limit to specific protocols" --msgstr "--url을 사용하여 실행하면 특정 프로토콜로 제한됩니다." -+#: plugins/reposync.py:80 -+msgid "operate on source packages" -+msgstr "소스 패키지에서 작동합니다" - --#: ../plugins/download.py:243 --msgid "Exiting due to strict setting." --msgstr "엄격한 설정으로 인해 종료됩니다." -+#: plugins/reposync.py:82 -+msgid "try to set local timestamps of local files by the one on the server" -+msgstr "서버에서 로컬 파일의 로컬 타임 스탬프를 설정하십시오." - --#: ../plugins/download.py:261 --msgid "Error in resolve of packages:" --msgstr "패키지 해결 오류 :" -+#: plugins/reposync.py:85 -+msgid "Just list urls of what would be downloaded, don't download" -+msgstr "다운로드할 URL만 나열하고 다운로드하지 마십시오." - --#: ../plugins/download.py:279 --#, python-format --msgid "No source rpm defined for %s" --msgstr "소스 rpm이 정의되지 않았습니다. %s" -+#: plugins/reposync.py:109 -+msgid "Can't use --norepopath with multiple repositories" -+msgstr "여러 리포지토리에 --norepopath를 사용할 수 없습니다" - --#: ../plugins/download.py:296 ../plugins/download.py:309 -+#: plugins/reposync.py:127 - #, python-format --msgid "No package %s available." --msgstr "패키지 없음 %s 유효한." -- --#: ../plugins/show_leaves.py:54 --msgid "New leaves:" --msgstr "새 잎 :" -- --#: ../plugins/copr.py:56 --msgid "yes" --msgstr "예" -- --#: ../plugins/copr.py:56 --msgid "y" --msgstr "y" -- --#: ../plugins/copr.py:57 --msgid "no" --msgstr "아니" -- --#: ../plugins/copr.py:57 --msgid "n" --msgstr "n" -- --#: ../plugins/copr.py:76 --msgid "Interact with Copr repositories." --msgstr "Copr 저장소와 상호 작용하십시오." -- --#: ../plugins/copr.py:77 --msgid "" --"\n" --" enable name/project [chroot]\n" --" disable name/project\n" --" remove name/project\n" --" list --installed/enabled/disabled\n" --" list --available-by-user=NAME\n" --" search project\n" --"\n" --" Examples:\n" --" copr enable rhscl/perl516 epel-6-x86_64\n" --" copr enable ignatenkobrain/ocltoys\n" --" copr disable rhscl/perl516\n" --" copr remove rhscl/perl516\n" --" copr list --enabled\n" --" copr list --available-by-user=ignatenkobrain\n" --" copr search tests\n" --" " --msgstr "" --"\n" --" 프로젝트 이름 / 프로젝트 제거 - 설치 / 사용 / 사용 안 함 목록 - 사용 가능 사용자 = NAME 검색 프로젝트 예 : copr enable rhscl / perl516 epel-6-x86_64 copr enable ignatenkobrain / ocltoys copr 비활성화 rhscl / perl516 copr 제거 rhscl / perl516 copr 목록 - 사용 가능 목록 - 사용 가능 사용자 = ignatenkobrain copr 검색 테스트\n" --" " -- --#: ../plugins/copr.py:103 --msgid "List all installed Copr repositories (default)" --msgstr "설치된 모든 Copr 저장소 나열 (기본값)" -- --#: ../plugins/copr.py:105 --msgid "List enabled Copr repositories" --msgstr "사용 가능한 Copr 저장소 목록" -- --#: ../plugins/copr.py:107 --msgid "List disabled Copr repositories" --msgstr "비활성화 된 Copr 저장소 목록" -- --#: ../plugins/copr.py:109 --msgid "List available Copr repositories by user NAME" --msgstr "사용자가 사용할 수있는 Copr 저장소를 나열합니다. NAME" -- --#: ../plugins/copr.py:111 --msgid "Specify an instance of Copr to work with" --msgstr "" -- --#: ../plugins/copr.py:145 ../plugins/copr.py:210 ../plugins/copr.py:230 --msgid "Error: " --msgstr "오류: " -- --#: ../plugins/copr.py:146 --msgid "" --"specify Copr hub either with `--hub` or using " --"`copr_hub/copr_username/copr_projectname` format" --msgstr "" -- --#: ../plugins/copr.py:149 --msgid "multiple hubs specified" --msgstr "" -- --#: ../plugins/copr.py:211 ../plugins/copr.py:215 --msgid "exactly two additional parameters to copr command are required" --msgstr "copr 명령에 정확히 두 개의 추가 매개 변수가 필요합니다." -- --#: ../plugins/copr.py:231 --msgid "use format `copr_username/copr_projectname` to reference copr project" --msgstr "copr 프로젝트를 참조하기 위해`copr_username / copr_projectname` 형식을 사용하십시오" -- --#: ../plugins/copr.py:233 --msgid "bad copr project format" --msgstr "나쁜 copr 프로젝트 형식" -- --#: ../plugins/copr.py:247 --#, python-brace-format --msgid "" --"\n" --"You are about to enable a Copr repository. Please note that this\n" --"repository is not part of the main distribution, and quality may vary.\n" --"\n" --"The Fedora Project does not exercise any power over the contents of\n" --"this repository beyond the rules outlined in the Copr FAQ at\n" --",\n" --"and packages are not held to any quality or security level.\n" --"\n" --"Please do not file bug reports about these packages in Fedora\n" --"Bugzilla. In case of problems, contact the owner of this repository.\n" --"\n" --"Do you really want to enable {0}?" --msgstr "" -- --#: ../plugins/copr.py:263 --msgid "Repository successfully enabled." --msgstr "저장소가 사용 설정되었습니다." -- --#: ../plugins/copr.py:267 --msgid "Repository successfully disabled." --msgstr "저장소가 사용 중지되었습니다." -- --#: ../plugins/copr.py:271 --msgid "Repository successfully removed." --msgstr "저장소가 제거되었습니다." -- --#: ../plugins/copr.py:275 ../plugins/copr.py:625 --msgid "Unknown subcommand {}." --msgstr "알 수없는 부속 명령 {}." -- --#: ../plugins/copr.py:328 --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:340 --msgid "Can't parse repositories for username '{}'." --msgstr "사용자 이름 '{}'에 대한 리포지토리를 구문 분석 할 수 없습니다." -- --#: ../plugins/copr.py:343 --msgid "List of {} coprs" --msgstr "{} 명의 경찰 목록" -- --#: ../plugins/copr.py:351 --msgid "No description given" --msgstr "설명이 없습니다." -- --#: ../plugins/copr.py:363 --msgid "Can't parse search for '{}'." --msgstr "'{}'에 대한 검색을 구문 분석 할 수 없습니다." -- --#: ../plugins/copr.py:366 --msgid "Matched: {}" --msgstr "일치하는 항목 : {}" -- --#: ../plugins/copr.py:374 --msgid "No description given." --msgstr "설명이 없습니다." -- --#: ../plugins/copr.py:387 --msgid "Safe and good answer. Exiting." --msgstr "안전하고 좋은 대답. 나가기." -- --#: ../plugins/copr.py:394 --msgid "This command has to be run under the root user." --msgstr "이 명령은 루트 사용자로 실행해야합니다." -- --#: ../plugins/copr.py:458 --msgid "" --"This repository does not have any builds yet so you cannot enable it now." --msgstr "이 저장소에는 빌드가 아직 없으므로 지금 사용할 수 없습니다." -+msgid "Failed to get mirror for metadata: %s" -+msgstr "메타데이터 미러링에 실패했습니다. %s" - --#: ../plugins/copr.py:461 --msgid "Such repository does not exist." --msgstr "이러한 저장소는 존재하지 않습니다." -+#: plugins/reposync.py:144 -+msgid "Failed to get mirror for the group file." -+msgstr "그룹 파일의 미러를 가져 오지 못했습니다." - --#: ../plugins/copr.py:509 --#, python-brace-format --msgid "Failed to remove copr repo {0}/{1}/{2}" --msgstr "" -+#: plugins/reposync.py:175 -+msgid "Download target '{}' is outside of download path '{}'." -+msgstr "다운로드 대상 '{}'이/가 다운로드 경로 '{}'외부에 있습니다." - --#: ../plugins/copr.py:520 --msgid "Failed to disable copr repo {}/{}" --msgstr "copr repo {} / {}를 사용 중지하지 못했습니다." -+#: plugins/reposync.py:190 -+#, python-format -+msgid "[DELETED] %s" -+msgstr "[DELETED] %s" - --#: ../plugins/copr.py:542 ../plugins/copr.py:580 --msgid "Unknown response from server." --msgstr "서버에서 알 수없는 응답." -+#: plugins/reposync.py:192 -+#, python-format -+msgid "failed to delete file %s" -+msgstr "파일을 삭제하지 못했습니다. %s" - --#: ../plugins/copr.py:564 --msgid "Interact with Playground repository." --msgstr "놀이터 저장소와 상호 작용하십시오." -+#: plugins/reposync.py:201 -+#, python-format -+msgid "comps.xml for repository %s saved" -+msgstr "리포지터리 %s에 대한 comps.xml이 저장되었습니다" - --#: ../plugins/copr.py:569 --msgid "" --"\n" --"You are about to enable a Playground repository.\n" --"\n" --"Do you want to continue?" --msgstr "" --"\n" --"놀이터 저장소를 사용하려고합니다. 계속 하시겠습니까?" -+#: plugins/show_leaves.py:54 -+msgid "New leaves:" -+msgstr "새 항목 :" - --#: ../plugins/copr.py:615 --msgid "Playground repositories successfully enabled." --msgstr "놀이터 저장소를 사용하도록 설정했습니다." -+#: plugins/versionlock.py:32 -+#, python-format -+msgid "Unable to read version lock configuration: %s" -+msgstr "버전 잠금 설정을 읽을 수 없습니다 : %s" - --#: ../plugins/copr.py:618 --msgid "Playground repositories successfully disabled." --msgstr "놀이터 저장소가 사용 중지되었습니다." -+#: plugins/versionlock.py:33 -+msgid "Locklist not set" -+msgstr "잠금 목록이 설정되지 않았습니다." - --#: ../plugins/copr.py:622 --msgid "Playground repositories successfully updated." --msgstr "놀이터 저장소가 성공적으로 업데이트되었습니다." -+#: plugins/versionlock.py:34 -+msgid "Adding versionlock on:" -+msgstr "버전 잠금 추가 :" - --#: ../plugins/debug.py:53 --msgid "dump information about installed rpm packages to file" --msgstr "설치된 rpm 패키지에 대한 정보를 파일에 덤프하십시오." -+#: plugins/versionlock.py:35 -+msgid "Adding exclude on:" -+msgstr "제외 항목 추가 :" - --#: ../plugins/debug.py:67 --msgid "do not attempt to dump the repository contents." --msgstr "저장소 내용을 덤프하지 마십시오." -+#: plugins/versionlock.py:36 -+msgid "Package already locked in equivalent form:" -+msgstr "패키지는 다음과 동등한 형식으로 잠겨 있습니다." - --#: ../plugins/debug.py:70 --msgid "optional name of dump file" --msgstr "덤프 파일의 선택적 이름" -+#: plugins/versionlock.py:37 -+msgid "Package {} is already locked" -+msgstr "{} 패키지가 이미 잠겨 있습니다" - --#: ../plugins/debug.py:95 --#, python-format --msgid "Output written to: %s" --msgstr "작성된 출력 : %s" -+#: plugins/versionlock.py:38 -+msgid "Package {} is already excluded" -+msgstr "{} 패키지가 이미 제외되었습니다" - --#: ../plugins/debug.py:172 --msgid "restore packages recorded in debug-dump file" --msgstr "디버그 덤프 파일에 기록 된 패키지 복원" -+#: plugins/versionlock.py:39 -+msgid "Deleting versionlock for:" -+msgstr "버전 잠금 삭제:" - --#: ../plugins/debug.py:183 --msgid "output commands that would be run to stdout." --msgstr "stdout으로 실행될 출력 명령." -+#: plugins/versionlock.py:40 -+msgid "No package found for:" -+msgstr "패키지를 찾을 수 없습니다" - --#: ../plugins/debug.py:186 --msgid "Install the latest version of recorded packages." --msgstr "기록 된 패키지의 최신 버전을 설치하십시오." -+#: plugins/versionlock.py:41 -+msgid "Excludes from versionlock plugin were not applied" -+msgstr "versionlock 플러그인에서 제외 항목이 적용되지 않았습니다" - --#: ../plugins/debug.py:189 --msgid "" --"Ignore architecture and install missing packages matching the name, epoch, " --"version and release." --msgstr "아키텍처를 무시하고 이름, 기원, 버전 및 릴리스와 일치하는 누락 된 패키지를 설치하십시오." -+#: plugins/versionlock.py:42 -+msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" -+msgstr "Versionlock 플러그인: 파일 \"{}\"의 잠금 규칙 수가 적용됨: {}" - --#: ../plugins/debug.py:194 --msgid "limit to specified type" --msgstr "특정 유형으로 제한" -+#: plugins/versionlock.py:43 -+msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" -+msgstr "Versionlock플러그인: 파일 \"{}\"의 제외 규칙 수가 적용됨: {}" - --#: ../plugins/debug.py:196 --msgid "name of dump file" --msgstr "덤프 파일의 이름" -+#: plugins/versionlock.py:44 -+msgid "Versionlock plugin: could not parse pattern:" -+msgstr "Versionlock 플러그인: 패턴을 구문 분석할 수 없습니다." - --#: ../plugins/debug.py:264 --#, python-format --msgid "Package %s is not available" --msgstr "꾸러미 %s 사용할 수 없습니다" -+#: plugins/versionlock.py:130 -+msgid "control package version locks" -+msgstr "컨트롤 패키지 버전 잠금" - --#: ../plugins/debug.py:274 --#, python-format --msgid "Bad dnf debug file: %s" --msgstr "잘못된 dnf 디버그 파일 : %s" -+#: plugins/versionlock.py:136 -+msgid "Use package specifications as they are, do not try to parse them" -+msgstr "구문 분석하지 말고 패키지 사양을 그대로 사용하십시오." -+ -+#~ msgid "" -+#~ "\n" -+#~ "You are about to enable a Playground repository.\n" -+#~ "\n" -+#~ "Do you want to continue?" -+#~ msgstr "" -+#~ "\n" -+#~ "놀이터 저장소를 사용하려고합니다. 계속 하시겠습니까?" -+ -+#~ msgid "also download comps.xml" -+#~ msgstr "comps.xml도 다운로드하십시오." -+ -+#~ msgid "where to store downloaded repositories " -+#~ msgstr "다운로드 한 저장소를 저장할 위치 " -diff --git a/po/zh_CN.po b/po/zh_CN.po -index 7bc00f2..b0b849b 100644 ---- a/po/zh_CN.po -+++ b/po/zh_CN.po -@@ -9,7 +9,7 @@ msgid "" - msgstr "" - "Project-Id-Version: PACKAGE VERSION\n" - "Report-Msgid-Bugs-To: \n" --"POT-Creation-Date: 2020-03-19 14:54+0100\n" -+"POT-Creation-Date: 2020-06-26 09:18-0400\n" - "PO-Revision-Date: 2020-03-22 12:28+0000\n" - "Last-Translator: Hongqiao Chen \n" - "Language-Team: Chinese (Simplified) \n" -@@ -20,752 +20,211 @@ msgstr "" - "Plural-Forms: nplurals=1; plural=0;\n" - "X-Generator: Weblate 3.11.3\n" - --#: ../plugins/reposync.orig.py:42 ../plugins/reposync.py:54 --#: ../plugins/reposync.175df5c.py:42 --msgid "download all packages from remote repo" --msgstr "下载远程仓库中的全部软件包" -- --#: ../plugins/reposync.orig.py:48 ../plugins/reposync.py:63 --#: ../plugins/reposync.175df5c.py:48 --msgid "download only packages for this ARCH" --msgstr "只下载这个 ARCH 的软件包" -- --#: ../plugins/reposync.orig.py:50 ../plugins/reposync.py:65 --#: ../plugins/reposync.175df5c.py:50 --msgid "delete local packages no longer present in repository" --msgstr "删除已不在仓库中的本地软件包" -- --#: ../plugins/reposync.orig.py:52 ../plugins/reposync.175df5c.py:52 --msgid "also download comps.xml" --msgstr "也下载 comps.xml" -- --#: ../plugins/reposync.orig.py:54 ../plugins/reposync.py:71 --#: ../plugins/reposync.175df5c.py:54 --msgid "download only newest packages per-repo" --msgstr "只下载最新的软件包 per-repo" -- --#: ../plugins/reposync.orig.py:56 ../plugins/reposync.175df5c.py:56 --msgid "where to store downloaded repositories " --msgstr "在何处保存已下载的仓库 " -- --#: ../plugins/reposync.orig.py:58 ../plugins/reposync.py:80 --#: ../plugins/reposync.175df5c.py:58 --msgid "operate on source packages" --msgstr "在源软件包中操作" -- --#: ../plugins/reposync.orig.py:98 ../plugins/reposync.py:190 --#: ../plugins/reposync.175df5c.py:95 --#, python-format --msgid "[DELETED] %s" --msgstr "[DELETED] %s" -- --#: ../plugins/reposync.orig.py:100 ../plugins/reposync.py:192 --#: ../plugins/reposync.175df5c.py:97 --#, python-format --msgid "failed to delete file %s" --msgstr "无法删除文件 %s" -- --#: ../plugins/reposync.orig.py:110 ../plugins/reposync.175df5c.py:107 --#, python-format --msgid "Could not make repository directory: %s" --msgstr "无法创建仓库目录: %s" -- --#: ../plugins/reposync.orig.py:114 ../plugins/reposync.py:201 --#: ../plugins/reposync.175df5c.py:111 --#, python-format --msgid "comps.xml for repository %s saved" --msgstr "仓库 %s 的 comps.xml 已保存" -- --#: ../plugins/changelog.py:37 --#, python-brace-format --msgid "Not a valid date: \"{0}\"." --msgstr "" -- --#: ../plugins/changelog.py:43 --msgid "Show changelog data of packages" --msgstr "" -- --#: ../plugins/changelog.py:51 --msgid "" --"show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " --"is recommended." --msgstr "" -- --#: ../plugins/changelog.py:55 --msgid "show given number of changelog entries per 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 "" -- --#: ../plugins/changelog.py:60 --msgid "PACKAGE" --msgstr "" -- --#: ../plugins/changelog.py:81 ../plugins/debuginfo-install.py:90 --#, python-format --msgid "No match for argument: %s" --msgstr "未找到匹配的参数: %s" -- --#: ../plugins/changelog.py:109 --msgid "Listing changelogs since {}" --msgstr "" -- --#: ../plugins/changelog.py:111 --msgid "Listing only latest changelog" --msgid_plural "Listing {} latest changelogs" --msgstr[0] "" -- --#: ../plugins/changelog.py:116 --msgid "Listing only new changelogs since installed version of the package" --msgstr "" -- --#: ../plugins/changelog.py:118 --msgid "Listing all changelogs" --msgstr "" -- --#: ../plugins/changelog.py:122 --msgid "Changelogs for {}" --msgstr "{}的变更记录" -- --#: ../plugins/debuginfo-install.py:56 --msgid "install debuginfo packages" --msgstr "安装调试信息软件包" -- --#: ../plugins/debuginfo-install.py:180 --#, python-format --msgid "" --"Could not find debuginfo package for the following available packages: %s" --msgstr "" -- --#: ../plugins/debuginfo-install.py:185 --#, python-format --msgid "" --"Could not find debugsource package for the following available packages: %s" --msgstr "" -- --#: ../plugins/debuginfo-install.py:190 --#, python-format --msgid "" --"Could not find debuginfo package for the following installed packages: %s" --msgstr "" -- --#: ../plugins/debuginfo-install.py:195 --#, python-format --msgid "" --"Could not find debugsource package for the following installed packages: %s" --msgstr "" -- --#: ../plugins/debuginfo-install.py:199 --msgid "Unable to find a match" --msgstr "没有任何匹配" -- --#: ../plugins/versionlock_old.py:32 ../plugins/versionlock.py:32 --#: ../plugins/versionlock_master.py:32 --#, python-format --msgid "Unable to read version lock configuration: %s" --msgstr "无法读取版本锁配置: %s" -- --#: ../plugins/versionlock_old.py:33 ../plugins/versionlock.py:33 --#: ../plugins/versionlock_master.py:33 --msgid "Locklist not set" --msgstr "锁列表未设置" -- --#: ../plugins/versionlock_old.py:34 ../plugins/versionlock.py:34 --#: ../plugins/versionlock_master.py:34 --msgid "Adding versionlock on:" --msgstr "正在添加版本锁:" -- --#: ../plugins/versionlock_old.py:35 ../plugins/versionlock.py:35 --#: ../plugins/versionlock_master.py:35 --msgid "Adding exclude on:" --msgstr "正在添加排除:" -- --#: ../plugins/versionlock_old.py:36 ../plugins/versionlock.py:39 --#: ../plugins/versionlock_master.py:36 --msgid "Deleting versionlock for:" --msgstr "正在删除版本锁:" -- --#: ../plugins/versionlock_old.py:37 ../plugins/versionlock.py:40 --#: ../plugins/versionlock_master.py:37 --msgid "No package found for:" --msgstr "未找到软件包:" -- --#: ../plugins/versionlock_old.py:38 ../plugins/versionlock.py:41 --#: ../plugins/versionlock_master.py:38 --msgid "Excludes from versionlock plugin were not applied" --msgstr "从 versionlock 插件中排除的没有被应用" -- --#: ../plugins/versionlock_old.py:102 ../plugins/versionlock.py:127 --#: ../plugins/versionlock_master.py:119 --msgid "control package version locks" --msgstr "控制软件包版本锁" -- --#: ../plugins/migrate.py:45 --msgid "migrate yum's history, group and yumdb data to dnf" --msgstr "迁移 yum 的历史、分组以及 yumdb 数据至 dnf" -- --#: ../plugins/migrate.py:54 --msgid "Migrating history data..." --msgstr "正在迁移历史数据…" -- --#: ../plugins/repograph.py:50 --msgid "Output a full package dependency graph in dot format" --msgstr "以点线图方式输出完整的软件包依赖关系图" -- --#: ../plugins/repograph.py:110 --#, python-format --msgid "Nothing provides: '%s'" --msgstr "没有任何软件包能提供:'%s'" -- --#: ../plugins/versionlock.py:36 --msgid "Package already locked in equivalent form:" --msgstr "" -- --#: ../plugins/versionlock.py:37 --msgid "Package {} is already locked" --msgstr "" -- --#: ../plugins/versionlock.py:38 --msgid "Package {} is already excluded" --msgstr "" -- --#: ../plugins/versionlock.py:42 ../plugins/versionlock_master.py:39 --msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" --msgstr "Versionlock 插件: 文件 \"{}\" 中的锁定数量规则被应用:{}" -- --#: ../plugins/versionlock.py:43 ../plugins/versionlock_master.py:40 --msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" --msgstr "Versionlock 插件: 文件 \"{}\" 中的排除规则数量被应用:{}" -- --#: ../plugins/versionlock.py:44 ../plugins/versionlock_master.py:41 --msgid "Versionlock plugin: could not parse pattern:" --msgstr "Versionlock 插件:不能解析特征:" -- --#: ../plugins/versionlock.py:133 --msgid "Use package specifications as they are, do not try to parse them" --msgstr "" -- --#: ../plugins/post-transaction-actions.py:71 --#, python-format --msgid "Bad Action Line \"%s\": %s" --msgstr "" -- --#. unsupported state, skip it --#: ../plugins/post-transaction-actions.py:130 --#, python-format --msgid "Bad Transaction State: %s" --msgstr "" -- --#: ../plugins/post-transaction-actions.py:153 --#: ../plugins/post-transaction-actions.py:155 --#, python-format --msgid "post-transaction-actions: %s" --msgstr "" -- --#: ../plugins/post-transaction-actions.py:157 --#, python-format --msgid "post-transaction-actions: Bad Command \"%s\": %s" --msgstr "" -- --#: ../plugins/builddep.py:45 -+#: plugins/builddep.py:45 - msgid "[PACKAGE|PACKAGE.spec]" - msgstr "[软件包名|软件包名.spec]" - --#: ../plugins/builddep.py:85 -+#: plugins/builddep.py:85 - #, python-format - msgid "'%s' is not of the format 'MACRO EXPR'" - msgstr "'%s' 不是 'MACRO EXPR' 的类型" - --#: ../plugins/builddep.py:90 -+#: plugins/builddep.py:90 - msgid "packages with builddeps to install" - msgstr "由于构建依赖安装的软件包" - --#: ../plugins/builddep.py:93 -+#: plugins/builddep.py:93 - msgid "define a macro for spec file parsing" - msgstr "定义一个用于处理 Spec 文件的宏" - --#: ../plugins/builddep.py:95 -+#: plugins/builddep.py:95 - msgid "skip build dependencies not available in repositories" --msgstr "" -+msgstr "跳过存储库中不可用的构建依赖项" - --#: ../plugins/builddep.py:98 -+#: plugins/builddep.py:98 - msgid "treat commandline arguments as spec files" - msgstr "将命令行参数作为 Spec 文件处理" - --#: ../plugins/builddep.py:100 -+#: plugins/builddep.py:100 - msgid "treat commandline arguments as source rpm" - msgstr "将命令行参数作为源码 RPM 处理" - --#: ../plugins/builddep.py:144 -+#: plugins/builddep.py:144 - msgid "RPM: {}" --msgstr "" -+msgstr "RPM软件包: {}" - --#: ../plugins/builddep.py:153 -+#: plugins/builddep.py:153 - msgid "Some packages could not be found." - msgstr "某些软件包无法找到。" - - #. No provides, no files - #. Richdeps can have no matches but it could be correct (solver must decide - #. later) --#: ../plugins/builddep.py:173 -+#: plugins/builddep.py:173 - #, python-format - msgid "No matching package to install: '%s'" - msgstr "没有匹配的软件包可以安装: '%s'" - --#: ../plugins/builddep.py:191 -+#: plugins/builddep.py:191 - #, python-format - msgid "Failed to open: '%s', not a valid source rpm file." - msgstr "打开文件失败: '%s',不是有效的源码 RPM 文件。" - --#: ../plugins/builddep.py:204 ../plugins/builddep.py:220 --#: ../plugins/builddep.py:237 -+#: plugins/builddep.py:204 plugins/builddep.py:220 plugins/builddep.py:237 - msgid "Not all dependencies satisfied" - msgstr "没有满足全部的依赖关系" - --#: ../plugins/builddep.py:211 -+#: plugins/builddep.py:211 - #, python-format - msgid "Failed to open: '%s', not a valid spec file: %s" - msgstr "打开失败: '%s', 不是有效的 spec 文件: %s" - --#: ../plugins/builddep.py:230 ../plugins/repoclosure.py:118 -+#: plugins/builddep.py:230 plugins/repoclosure.py:118 - #, python-format - msgid "no package matched: %s" - msgstr "无匹配软件包: %s" - --#: ../plugins/config_manager.py:37 -+#: plugins/changelog.py:37 -+#, python-brace-format -+msgid "Not a valid date: \"{0}\"." -+msgstr "无效的日期 : \"{0}\"." -+ -+#: plugins/changelog.py:43 -+msgid "Show changelog data of packages" -+msgstr "查看软件包的改变日志数据" -+ -+#: plugins/changelog.py:51 -+msgid "" -+"show changelog entries since DATE. To avoid ambiguosity, YYYY-MM-DD format " -+"is recommended." -+msgstr "显示自 DATE 开始的改变日志信息。为了避免混淆,推荐使用 YYYY-MM-DD 格式。" -+ -+#: plugins/changelog.py:55 -+msgid "show given number of changelog entries per 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 "只显示软件包新的改变日志信息,为已安装的软件包提供升级" -+ -+#: plugins/changelog.py:60 -+msgid "PACKAGE" -+msgstr "软件包" -+ -+#: plugins/changelog.py:81 plugins/debuginfo-install.py:90 -+#, python-format -+msgid "No match for argument: %s" -+msgstr "未找到匹配的参数: %s" -+ -+#: plugins/changelog.py:109 -+msgid "Listing changelogs since {}" -+msgstr "列出自 {} 后的改变日志信息" -+ -+#: plugins/changelog.py:111 -+msgid "Listing only latest changelog" -+msgid_plural "Listing {} latest changelogs" -+msgstr[0] "只列出最新的改变日志" -+ -+#: plugins/changelog.py:116 -+msgid "Listing only new changelogs since installed version of the package" -+msgstr "在列出安装的软件包版本后的新改变日志" -+ -+#: plugins/changelog.py:118 -+msgid "Listing all changelogs" -+msgstr "列出所有改变日志" -+ -+#: plugins/changelog.py:122 -+msgid "Changelogs for {}" -+msgstr "{}的变更记录" -+ -+#: plugins/config_manager.py:37 - #, python-brace-format - msgid "manage {prog} configuration options and repositories" --msgstr "" -+msgstr "管理 {prog} 配置选项和软件仓库" - --#: ../plugins/config_manager.py:44 -+#: plugins/config_manager.py:44 - msgid "repo to modify" - msgstr "要修改的仓库" - --#: ../plugins/config_manager.py:47 -+#: plugins/config_manager.py:47 - msgid "save the current options (useful with --setopt)" - msgstr "保存当前选项(与 --setopt 和用)" - --#: ../plugins/config_manager.py:50 -+#: plugins/config_manager.py:50 - msgid "add (and enable) the repo from the specified file or url" - msgstr "从指定文件或 URL 添加(并启用)仓库" - --#: ../plugins/config_manager.py:53 -+#: plugins/config_manager.py:53 - msgid "print current configuration values to stdout" - msgstr "打印当前配置值到标准输出" - --#: ../plugins/config_manager.py:56 -+#: plugins/config_manager.py:56 - msgid "print variable values to stdout" - msgstr "打印变量值到标准输出" - --#: ../plugins/config_manager.py:70 -+#: plugins/config_manager.py:60 -+msgid "enable repos (automatically saves)" -+msgstr "启用仓库(自动保存)" -+ -+#: plugins/config_manager.py:63 -+msgid "disable repos (automatically saves)" -+msgstr "禁用仓库(自动保存)" -+ -+#: plugins/config_manager.py:77 - msgid "one of the following arguments is required: {}" -+msgstr "需要以下参数之一:{}" -+ -+#: plugins/config_manager.py:86 -+msgid "" -+"Warning: --enablerepo/--disablerepo arguments have no meaningwith config " -+"manager. Use --set-enabled/--set-disabled instead." - msgstr "" -+"警告:--enablerepo/--disablerepo 参数对于 config manager 没有作用。请使用 --set-" -+"enabled/--set-disabled。" - --#: ../plugins/config_manager.py:113 -+#: plugins/config_manager.py:131 - #, python-format - msgid "No matching repo to modify: %s." - msgstr "没有匹配的仓库可以修改:%s 。" - --#: ../plugins/config_manager.py:164 -+#: plugins/config_manager.py:182 - #, python-format - msgid "Adding repo from: %s" - msgstr "添加仓库自:%s" - --#: ../plugins/config_manager.py:188 -+#: plugins/config_manager.py:206 - msgid "Configuration of repo failed" - msgid_plural "Configuration of repos failed" - msgstr[0] "配置仓库失败" - --#: ../plugins/config_manager.py:198 -+#: plugins/config_manager.py:216 - #, python-format - msgid "Could not save repo to repofile %s: %s" - msgstr "无法保存仓库至仓库文件 %s:%s" - --#: ../plugins/local.py:122 --msgid "Unable to create a directory '{}' due to '{}'" --msgstr "无法创建目录 '{}' 由于 '{}'" -- --#: ../plugins/local.py:126 --msgid "'{}' is not a directory" --msgstr "'{}' 不是一个目录" -- --#: ../plugins/local.py:135 --msgid "Copying '{}' to local repo" --msgstr "正在复制 '{}' 至本地仓库" -- --#: ../plugins/local.py:141 --msgid "Can't write file '{}'" --msgstr "无法写入文件 '{}'" -+#: plugins/copr.py:59 -+msgid "y" -+msgstr "y" - --#: ../plugins/local.py:156 --msgid "Rebuilding local repo" --msgstr "正在重建本地仓库" -+#: plugins/copr.py:59 -+msgid "yes" -+msgstr "确定" - --#: ../plugins/leaves.py:32 --msgid "List installed packages not required by any other package" --msgstr "列出已安装但不被任何其他软件包所需要的软件包" -+#: plugins/copr.py:60 -+msgid "n" -+msgstr "n" - --#: ../plugins/needs_restarting.py:173 --msgid "determine updated binaries that need restarting" --msgstr "判断所升级的二进制文件是否需要重启" -+#: plugins/copr.py:60 -+msgid "no" -+msgstr "取消" - --#: ../plugins/needs_restarting.py:178 --msgid "only consider this user's processes" --msgstr "仅考虑当前用户的进程" -+#: plugins/copr.py:79 -+msgid "Interact with Copr repositories." -+msgstr "与 Copr 仓库交互" - --#: ../plugins/needs_restarting.py:180 --msgid "" --"only report whether a reboot is required (exit code 1) or not (exit code 0)" --msgstr "" -- --#: ../plugins/needs_restarting.py:199 --msgid "Core libraries or services have been updated since boot-up:" --msgstr "" -- --#: ../plugins/needs_restarting.py:204 --msgid "Reboot is required to fully utilize these updates." --msgstr "" -- --#: ../plugins/needs_restarting.py:205 --msgid "More information:" --msgstr "" -- --#: ../plugins/needs_restarting.py:209 --msgid "No core libraries or services have been updated since boot-up." --msgstr "" -- --#: ../plugins/needs_restarting.py:211 --msgid "Reboot should not be necessary." --msgstr "" -- --#: ../plugins/repoclosure.py:42 --msgid "Display a list of unresolved dependencies for repositories" --msgstr "显示仓库中未被解决的依赖关系的列表" -- --#: ../plugins/repoclosure.py:66 --msgid "Repoclosure ended with unresolved dependencies." --msgstr "Repoclosure 退出时还有依赖关系未解决。" -- --#: ../plugins/repoclosure.py:153 --msgid "check packages of the given archs, can be specified multiple times" --msgstr "检查给定架构的软件包,可以被指定多次" -- --#: ../plugins/repoclosure.py:156 --msgid "Specify repositories to check" --msgstr "指定要检查的软件仓库" -- --#: ../plugins/repoclosure.py:158 --msgid "Check only the newest packages in the repos" --msgstr "只检查仓库中最新的软件包" -- --#: ../plugins/repoclosure.py:161 --msgid "Check closure for this package only" --msgstr "仅为该软件包检查依赖闭合性" -- --#: ../plugins/repodiff.py:45 --msgid "List differences between two sets of repositories" --msgstr "" -- --#: ../plugins/repodiff.py:58 --msgid "Specify old repository, can be used multiple times" --msgstr "" -- --#: ../plugins/repodiff.py:60 --msgid "Specify new repository, can be used multiple times" --msgstr "" -- --#: ../plugins/repodiff.py:63 --msgid "" --"Specify architectures to compare, can be used multiple times. By default, " --"only source rpms are compared." --msgstr "" -- --#: ../plugins/repodiff.py:67 --msgid "Output additional data about the size of the changes." --msgstr "" -- --#: ../plugins/repodiff.py:69 --msgid "" --"Compare packages also by arch. By default packages are compared just by " --"name." --msgstr "" -- --#: ../plugins/repodiff.py:72 --msgid "Output a simple one line message for modified packages." --msgstr "" -- --#: ../plugins/repodiff.py:74 --msgid "" --"Split the data for modified packages between upgraded and downgraded " --"packages." --msgstr "" -- --#: ../plugins/repodiff.py:86 --msgid "Both old and new repositories must be set." --msgstr "" -- --#: ../plugins/repodiff.py:178 --msgid "Size change: {} bytes" --msgstr "" -- --#: ../plugins/repodiff.py:184 --msgid "Added package : {}" --msgstr "" -- --#: ../plugins/repodiff.py:187 --msgid "Removed package: {}" --msgstr "" -- --#: ../plugins/repodiff.py:190 --msgid "Obsoleted by : {}" --msgstr "" -- --#: ../plugins/repodiff.py:195 --msgid "" --"\n" --"Upgraded packages" --msgstr "" -- --#: ../plugins/repodiff.py:200 --msgid "" --"\n" --"Downgraded packages" --msgstr "" -- --#: ../plugins/repodiff.py:207 --msgid "" --"\n" --"Modified packages" --msgstr "" -- --#: ../plugins/repodiff.py:212 --msgid "" --"\n" --"Summary" --msgstr "" -- --#: ../plugins/repodiff.py:213 --msgid "Added packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:214 --msgid "Removed packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:216 --msgid "Upgraded packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:217 --msgid "Downgraded packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:219 --msgid "Modified packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:222 --msgid "Size of added packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:223 --msgid "Size of removed packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:225 --msgid "Size of modified packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:228 --msgid "Size of upgraded packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:230 --msgid "Size of downgraded packages: {}" --msgstr "" -- --#: ../plugins/repodiff.py:232 --msgid "Size change: {}" --msgstr "" -- --#: ../plugins/reposync.py:67 --msgid "also download and uncompress comps.xml" --msgstr "" -- --#: ../plugins/reposync.py:69 --msgid "download all the metadata." --msgstr "" -- --#: ../plugins/reposync.py:73 --msgid "where to store downloaded repositories" --msgstr "" -- --#: ../plugins/reposync.py:75 --msgid "Don't add the reponame to the download path." --msgstr "" -- --#: ../plugins/reposync.py:77 --msgid "" --"where to store downloaded repository metadata. Defaults to the value of " --"--download-path." --msgstr "" -- --#: ../plugins/reposync.py:82 --msgid "try to set local timestamps of local files by the one on the server" --msgstr "" -- --#: ../plugins/reposync.py:85 --msgid "Just list urls of what would be downloaded, don't download" --msgstr "" -- --#: ../plugins/reposync.py:109 --msgid "Can't use --norepopath with multiple repositories" --msgstr "" -- --#: ../plugins/reposync.py:127 --#, python-format --msgid "Failed to get mirror for metadata: %s" --msgstr "" -- --#: ../plugins/reposync.py:144 --msgid "Failed to get mirror for the group file." --msgstr "" -- --#: ../plugins/reposync.py:175 --msgid "Download target '{}' is outside of download path '{}'." --msgstr "" -- --#: ../plugins/reposync.py:260 ../plugins/download.py:121 --#, python-format --msgid "Failed to get mirror for package: %s" --msgstr "获取针对以下软件包的镜像失败:%s" -- --#: ../plugins/repomanage.py:44 --msgid "Manage a directory of rpm packages" --msgstr "管理 RPM 软件包目录" -- --#: ../plugins/repomanage.py:58 --msgid "Pass either --old or --new, not both!" --msgstr "传入 --old 或者 --new,不可同时传入!" -- --#: ../plugins/repomanage.py:68 --msgid "No files to process" --msgstr "没有可处理的文件" -- --#: ../plugins/repomanage.py:73 --msgid "Could not open {}" --msgstr "无法打开 {}" -- --#: ../plugins/repomanage.py:130 --msgid "Print the older packages" --msgstr "打印较旧的软件包" -- --#: ../plugins/repomanage.py:132 --msgid "Print the newest packages" --msgstr "打印最新的软件包" -- --#: ../plugins/repomanage.py:134 --msgid "Space separated output, not newline" --msgstr "用空格分割输出,而不是新行" -- --#: ../plugins/repomanage.py:136 --msgid "Newest N packages to keep - defaults to 1" --msgstr "要保留的最新的 N 个软件包 - 默认值为 1" -- --#: ../plugins/repomanage.py:139 --msgid "Path to directory" --msgstr "指向目录的路径" -- --#: ../plugins/download.py:41 --msgid "Download package to current directory" --msgstr "下载软件包至当前目录" -- --#: ../plugins/download.py:51 --msgid "packages to download" --msgstr "将要下载的软件包" -- --#: ../plugins/download.py:53 --msgid "download the src.rpm instead" --msgstr "取而代之下载源代码软件包 src.rpm" -- --#: ../plugins/download.py:55 --msgid "download the -debuginfo package instead" --msgstr "取而代之下载 -debuginfo 软件包" -- --#: ../plugins/download.py:57 --msgid "download the -debugsource package instead" --msgstr "" -- --#: ../plugins/download.py:60 --msgid "limit the query to packages of given architectures." --msgstr "限定查询指定架构的软件包" -- --#: ../plugins/download.py:62 --msgid "resolve and download needed dependencies" --msgstr "解析并下载所需的依赖关系" -- --#: ../plugins/download.py:64 --msgid "" --"when running with --resolve, download all dependencies (do not exclude " --"already installed ones)" --msgstr "" -- --#: ../plugins/download.py:67 --msgid "" --"print list of urls where the rpms can be downloaded instead of downloading" --msgstr "打印 rpm 可被下载的 url 列表而不是直接下载" -- --#: ../plugins/download.py:72 --msgid "when running with --url, limit to specific protocols" --msgstr "当执行时带有 --url 参数,则限制使用指定协议" -- --#: ../plugins/download.py:243 --msgid "Exiting due to strict setting." --msgstr "退出由于严格设置。" -- --#: ../plugins/download.py:261 --msgid "Error in resolve of packages:" --msgstr "resolve 软件包失败:" -- --#: ../plugins/download.py:279 --#, python-format --msgid "No source rpm defined for %s" --msgstr "未找到所定义 %s 的源代码软件包 SRPM" -- --#: ../plugins/download.py:296 ../plugins/download.py:309 --#, python-format --msgid "No package %s available." --msgstr "没有可用的软件包 %s。" -- --#: ../plugins/show_leaves.py:54 --msgid "New leaves:" --msgstr "新增保留项:" -- --#: ../plugins/copr.py:56 --msgid "yes" --msgstr "确定" -- --#: ../plugins/copr.py:56 --msgid "y" --msgstr "y" -- --#: ../plugins/copr.py:57 --msgid "no" --msgstr "取消" -- --#: ../plugins/copr.py:57 --msgid "n" --msgstr "n" -- --#: ../plugins/copr.py:76 --msgid "Interact with Copr repositories." --msgstr "与 Copr 仓库交互" -- --#: ../plugins/copr.py:77 -+#: plugins/copr.py:81 - msgid "" - "\n" - " enable name/project [chroot]\n" -@@ -803,58 +262,58 @@ msgstr "" - " copr search tests\n" - " " - --#: ../plugins/copr.py:103 -+#: plugins/copr.py:107 - msgid "List all installed Copr repositories (default)" - msgstr "列出所有安装的 Copr 仓库(默认)" - --#: ../plugins/copr.py:105 -+#: plugins/copr.py:109 - msgid "List enabled Copr repositories" - msgstr "列出启动的 Copr 仓库" - --#: ../plugins/copr.py:107 -+#: plugins/copr.py:111 - msgid "List disabled Copr repositories" - msgstr "列出禁用的 Copr 仓库" - --#: ../plugins/copr.py:109 -+#: plugins/copr.py:113 - msgid "List available Copr repositories by user NAME" - msgstr "按照用户 NAME 列出可用的 Copr 仓库" - --#: ../plugins/copr.py:111 -+#: plugins/copr.py:115 - msgid "Specify an instance of Copr to work with" --msgstr "" -+msgstr "指定需要使用的 Copr 实例" - --#: ../plugins/copr.py:145 ../plugins/copr.py:210 ../plugins/copr.py:230 -+#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 - msgid "Error: " - msgstr "错误: " - --#: ../plugins/copr.py:146 -+#: plugins/copr.py:150 - msgid "" - "specify Copr hub either with `--hub` or using " - "`copr_hub/copr_username/copr_projectname` format" - msgstr "" -+"使用 `--hub` 或使用 `copr_hub/copr_username/copr_projectname` 格式指定 Copr hub" - --#: ../plugins/copr.py:149 -+#: plugins/copr.py:153 - msgid "multiple hubs specified" --msgstr "" -+msgstr "指定多个 hub" - --#: ../plugins/copr.py:211 ../plugins/copr.py:215 -+#: plugins/copr.py:218 plugins/copr.py:222 - msgid "exactly two additional parameters to copr command are required" - msgstr "Copr 命令要求有且仅有两个额外参数" - --#: ../plugins/copr.py:231 -+#: plugins/copr.py:238 - msgid "use format `copr_username/copr_projectname` to reference copr project" - msgstr "使用格式 `copr_username/copr_projectname` 来引用 Copr 项目" - --#: ../plugins/copr.py:233 -+#: plugins/copr.py:240 - msgid "bad copr project format" - msgstr "错误的 Copr 项目格式" - --#: ../plugins/copr.py:247 --#, python-brace-format -+#: plugins/copr.py:254 - msgid "" - "\n" --"You are about to enable a Copr repository. Please note that this\n" --"repository is not part of the main distribution, and quality may vary.\n" -+"Enabling a Copr repository. Please note that this repository is not part\n" -+"of the main distribution, and quality may vary.\n" - "\n" - "The Fedora Project does not exercise any power over the contents of\n" - "this repository beyond the rules outlined in the Copr FAQ at\n" -@@ -863,164 +322,763 @@ msgid "" - "\n" - "Please do not file bug reports about these packages in Fedora\n" - "Bugzilla. In case of problems, contact the owner of this repository.\n" --"\n" --"Do you really want to enable {0}?" - msgstr "" -+"\n" -+"启用一个 Copr 仓库。请注意这个仓库\n" -+"不是主发行版本的一部分,质量可能会有所不同。\n" -+"\n" -+"Fedora 项目对其不行使除了于 Copr 常见问题\n" -+"\n" -+"中所提出的规则外的任何权力,并且其软件包不保证达到特定质量\n" -+"和安全水准。\n" -+"\n" -+"请不要在 Fedora Bugzilla 中报告这些软件包中出现的\n" -+"问题。当出现问题时,请联系仓库的所有者。\n" - --#: ../plugins/copr.py:263 -+#: plugins/copr.py:271 - msgid "Repository successfully enabled." - msgstr "启用软件仓库成功。" - --#: ../plugins/copr.py:267 -+#: plugins/copr.py:276 - msgid "Repository successfully disabled." - msgstr "禁用软件仓库成功。" - --#: ../plugins/copr.py:271 -+#: plugins/copr.py:280 - msgid "Repository successfully removed." - msgstr "软件仓库已成功删除。" - --#: ../plugins/copr.py:275 ../plugins/copr.py:625 -+#: plugins/copr.py:284 plugins/copr.py:689 - msgid "Unknown subcommand {}." - msgstr "未知的子命令 {}。" - --#: ../plugins/copr.py:328 -+#: plugins/copr.py:337 - msgid "" - "* These coprs have repo file with an old format that contains no information" - " about Copr hub - the default one was assumed. Re-enable the project to fix " - "this." - msgstr "" -+"* 这些 coprs 有使用旧格式的 repo 文件,它们没有包括 Copr hub 的信息 - 假设使用默认值。重新启用项目来解决这个问题。" - --#: ../plugins/copr.py:340 -+#: plugins/copr.py:349 - msgid "Can't parse repositories for username '{}'." - msgstr "无法为用户名 username '{}' 解析仓库。" - --#: ../plugins/copr.py:343 -+#: plugins/copr.py:352 - msgid "List of {} coprs" - msgstr "{} Coprs 列表" - --#: ../plugins/copr.py:351 -+#: plugins/copr.py:360 - msgid "No description given" - msgstr "没有给出描述" - --#: ../plugins/copr.py:363 -+#: plugins/copr.py:372 - msgid "Can't parse search for '{}'." - msgstr "无法解析针对 '{}' 的搜索。" - --#: ../plugins/copr.py:366 -+#: plugins/copr.py:375 - msgid "Matched: {}" - msgstr "匹配:{}" - --#: ../plugins/copr.py:374 -+#: plugins/copr.py:383 - msgid "No description given." - msgstr "没有给出描述。" - --#: ../plugins/copr.py:387 -+#: plugins/copr.py:406 - msgid "Safe and good answer. Exiting." - msgstr "安全及明智的答案。退出。" - --#: ../plugins/copr.py:394 -+#: plugins/copr.py:413 - msgid "This command has to be run under the root user." - msgstr "该命令必须以 root 用户运行" - --#: ../plugins/copr.py:458 -+#: plugins/copr.py:477 - msgid "" - "This repository does not have any builds yet so you cannot enable it now." - msgstr "该仓库尚未包含任何构建所以您现在无法启用它。" - --#: ../plugins/copr.py:461 -+#: plugins/copr.py:480 - msgid "Such repository does not exist." - msgstr "该软件仓库不存在。" - --#: ../plugins/copr.py:509 -+#: plugins/copr.py:524 - #, python-brace-format --msgid "Failed to remove copr repo {0}/{1}/{2}" -+msgid "" -+"Maintainer of the enabled Copr repository decided to make\n" -+"it dependent on other repositories. Such repositories are\n" -+"usually necessary for successful installation of RPMs from\n" -+"the main Copr repository (they provide runtime dependencies).\n" -+"\n" -+"Be aware that the note about quality and bug-reporting\n" -+"above applies here too, Fedora Project doesn't control the\n" -+"content. Please review the list:\n" -+"\n" -+"{0}\n" -+"\n" -+"These repositories have been enabled automatically." - msgstr "" -+"启用的 Copr 仓库的维护人员决定\n" -+"它需要依赖于其他仓库。这些仓库\n" -+"通常是必需的,如果需要从主 Copr 仓库\n" -+"(它们会提供运行时依赖软件包)安装 RPM。\n" -+"\n" -+"请注意上面关于质量和程序错误报告的备注\n" -+"也适用于这里,Fedora Project 不控制内容。\n" -+"请检查列表:\n" -+"\n" -+"{0}\n" -+"\n" -+"这些仓库已被自动启用。" -+ -+#: plugins/copr.py:545 -+msgid "Do you want to keep them enabled?" -+msgstr "您需要保持它们被启用吗?" -+ -+#: plugins/copr.py:578 -+#, python-brace-format -+msgid "Failed to remove copr repo {0}/{1}/{2}" -+msgstr "删除 copr repo {0}/{1}/{2} 失败" - --#: ../plugins/copr.py:520 -+#: plugins/copr.py:589 - msgid "Failed to disable copr repo {}/{}" - msgstr "无法禁用 Copr 软件仓库 {}/{}" - --#: ../plugins/copr.py:542 ../plugins/copr.py:580 -+#: plugins/copr.py:607 plugins/copr.py:644 - msgid "Unknown response from server." - msgstr "来自服务器的未知响应。" - --#: ../plugins/copr.py:564 -+#: plugins/copr.py:629 - msgid "Interact with Playground repository." - msgstr "与 Playground 仓库交互。" - --#: ../plugins/copr.py:569 --msgid "" --"\n" --"You are about to enable a Playground repository.\n" --"\n" --"Do you want to continue?" --msgstr "" --"\n" --"您将启用一个 Playground 仓库。\n" --"\n" --"是否继续?" -+#: plugins/copr.py:635 -+#| msgid "Interact with Playground repository." -+msgid "Enabling a Playground repository." -+msgstr "启用一个 Playground 仓库。" - --#: ../plugins/copr.py:615 -+#: plugins/copr.py:636 -+msgid "Do you want to continue?" -+msgstr "您希望继续吗?" -+ -+#: plugins/copr.py:679 - msgid "Playground repositories successfully enabled." - msgstr "启用 Playground 仓库成功。" - --#: ../plugins/copr.py:618 -+#: plugins/copr.py:682 - msgid "Playground repositories successfully disabled." - msgstr "禁用 Playground 仓库成功。" - --#: ../plugins/copr.py:622 -+#: plugins/copr.py:686 - msgid "Playground repositories successfully updated." - msgstr "更新 Playground 仓库成功。" - --#: ../plugins/debug.py:53 -+#: plugins/debug.py:53 - msgid "dump information about installed rpm packages to file" - msgstr "转储已安装的 RPM 软件包信息至文件" - --#: ../plugins/debug.py:67 -+#: plugins/debug.py:67 - msgid "do not attempt to dump the repository contents." - msgstr "不要尝试转储仓库内容。" - --#: ../plugins/debug.py:70 -+#: plugins/debug.py:70 - msgid "optional name of dump file" - msgstr "可选的转储文件名称" - --#: ../plugins/debug.py:95 -+#: plugins/debug.py:95 - #, python-format - msgid "Output written to: %s" - msgstr "输出文件写入至:%s" - --#: ../plugins/debug.py:172 -+#: plugins/debug.py:172 - msgid "restore packages recorded in debug-dump file" - msgstr "恢复调试用转储文件中的软件包记录" - --#: ../plugins/debug.py:183 -+#: plugins/debug.py:183 - msgid "output commands that would be run to stdout." - msgstr "输出将要在标准输出运行的命令。" - --#: ../plugins/debug.py:186 -+#: plugins/debug.py:186 - msgid "Install the latest version of recorded packages." - msgstr "安装被记录的软件包中的最新版本。" - --#: ../plugins/debug.py:189 -+#: plugins/debug.py:189 - msgid "" - "Ignore architecture and install missing packages matching the name, epoch, " - "version and release." - msgstr "忽略架构并安装当前丢失但匹配名称、世代、版本和发行版的软件包。" - --#: ../plugins/debug.py:194 -+#: plugins/debug.py:194 - msgid "limit to specified type" - msgstr "限制到指定类型" - --#: ../plugins/debug.py:196 -+#: plugins/debug.py:196 - msgid "name of dump file" - msgstr "转储文件名称" - --#: ../plugins/debug.py:264 -+#: plugins/debug.py:270 - #, python-format - msgid "Package %s is not available" - msgstr "软件包 %s 不可用。" - --#: ../plugins/debug.py:274 -+#: plugins/debug.py:280 - #, python-format - msgid "Bad dnf debug file: %s" - msgstr "损坏的 dnf 调试文件:%s" -+ -+#: plugins/debuginfo-install.py:56 -+msgid "install debuginfo packages" -+msgstr "安装调试信息软件包" -+ -+#: plugins/debuginfo-install.py:180 -+#, python-format -+msgid "" -+"Could not find debuginfo package for the following available packages: %s" -+msgstr "无法为以下可用的软件包找到 debuginfo 软件包: %s" -+ -+#: plugins/debuginfo-install.py:185 -+#, python-format -+msgid "" -+"Could not find debugsource package for the following available packages: %s" -+msgstr "无法为以下可用的软件包找到 debugsource 软件包: %s" -+ -+#: plugins/debuginfo-install.py:190 -+#, python-format -+msgid "" -+"Could not find debuginfo package for the following installed packages: %s" -+msgstr "无法为以下安装的软件包找到 debuginfo 软件包: %s" -+ -+#: plugins/debuginfo-install.py:195 -+#, python-format -+msgid "" -+"Could not find debugsource package for the following installed packages: %s" -+msgstr "无法为以下安装的软件包找到 debugsource 软件包: %s" -+ -+#: plugins/debuginfo-install.py:199 -+msgid "Unable to find a match" -+msgstr "没有任何匹配" -+ -+#: plugins/download.py:41 -+msgid "Download package to current directory" -+msgstr "下载软件包至当前目录" -+ -+#: plugins/download.py:51 -+msgid "packages to download" -+msgstr "将要下载的软件包" -+ -+#: plugins/download.py:53 -+msgid "download the src.rpm instead" -+msgstr "取而代之下载源代码软件包 src.rpm" -+ -+#: plugins/download.py:55 -+msgid "download the -debuginfo package instead" -+msgstr "取而代之下载 -debuginfo 软件包" -+ -+#: plugins/download.py:57 -+msgid "download the -debugsource package instead" -+msgstr "取而代之下载 -debugsource 软件包" -+ -+#: plugins/download.py:60 -+msgid "limit the query to packages of given architectures." -+msgstr "限定查询指定架构的软件包" -+ -+#: plugins/download.py:62 -+msgid "resolve and download needed dependencies" -+msgstr "解析并下载所需的依赖关系" -+ -+#: plugins/download.py:64 -+msgid "" -+"when running with --resolve, download all dependencies (do not exclude " -+"already installed ones)" -+msgstr "当运行时使用 --resolve,下载所有依赖软件包 (不排除已安装的软件包)" -+ -+#: plugins/download.py:67 -+msgid "" -+"print list of urls where the rpms can be downloaded instead of downloading" -+msgstr "打印 rpm 可被下载的 url 列表而不是直接下载" -+ -+#: plugins/download.py:72 -+msgid "when running with --url, limit to specific protocols" -+msgstr "当执行时带有 --url 参数,则限制使用指定协议" -+ -+#: plugins/download.py:121 plugins/reposync.py:260 -+#, python-format -+msgid "Failed to get mirror for package: %s" -+msgstr "获取针对以下软件包的镜像失败:%s" -+ -+#: plugins/download.py:243 -+msgid "Exiting due to strict setting." -+msgstr "退出由于严格设置。" -+ -+#: plugins/download.py:261 -+msgid "Error in resolve of packages:" -+msgstr "resolve 软件包失败:" -+ -+#: plugins/download.py:279 -+#, python-format -+msgid "No source rpm defined for %s" -+msgstr "未找到所定义 %s 的源代码软件包 SRPM" -+ -+#: plugins/download.py:296 plugins/download.py:309 -+#, python-format -+msgid "No package %s available." -+msgstr "没有可用的软件包 %s。" -+ -+#: plugins/leaves.py:32 -+msgid "List installed packages not required by any other package" -+msgstr "列出已安装但不被任何其他软件包所需要的软件包" -+ -+#: plugins/local.py:122 -+msgid "Unable to create a directory '{}' due to '{}'" -+msgstr "无法创建目录 '{}' 由于 '{}'" -+ -+#: plugins/local.py:126 -+msgid "'{}' is not a directory" -+msgstr "'{}' 不是一个目录" -+ -+#: plugins/local.py:135 -+msgid "Copying '{}' to local repo" -+msgstr "正在复制 '{}' 至本地仓库" -+ -+#: plugins/local.py:141 -+msgid "Can't write file '{}'" -+msgstr "无法写入文件 '{}'" -+ -+#: plugins/local.py:156 -+msgid "Rebuilding local repo" -+msgstr "正在重建本地仓库" -+ -+#: plugins/migrate.py:45 -+msgid "migrate yum's history, group and yumdb data to dnf" -+msgstr "迁移 yum 的历史、分组以及 yumdb 数据至 dnf" -+ -+#: plugins/migrate.py:54 -+msgid "Migrating history data..." -+msgstr "正在迁移历史数据…" -+ -+#: plugins/needs_restarting.py:65 -+#, python-brace-format -+msgid "" -+"No installed package found for package name \"{pkg}\" specified in needs-" -+"restarting file \"{file}\"." -+msgstr "没有为在需要重新启动文件 \"{file}\" 中指定的名为 \"{pkg}\" 的软件包找到安装的软件包。" -+ -+#: plugins/needs_restarting.py:199 -+msgid "determine updated binaries that need restarting" -+msgstr "判断所升级的二进制文件是否需要重启" -+ -+#: plugins/needs_restarting.py:204 -+msgid "only consider this user's processes" -+msgstr "仅考虑当前用户的进程" -+ -+#: plugins/needs_restarting.py:206 -+msgid "" -+"only report whether a reboot is required (exit code 1) or not (exit code 0)" -+msgstr "只报告需要重新引导 (退出代码为 1) 或不需要重新引导 (退出代码为 0)" -+ -+#: plugins/needs_restarting.py:230 -+msgid "Core libraries or services have been updated since boot-up:" -+msgstr "在引导后 Core 库或服务已被更新 :" -+ -+#: plugins/needs_restarting.py:235 -+msgid "Reboot is required to fully utilize these updates." -+msgstr "需要重新启动后才可以使这些更新完全生效" -+ -+#: plugins/needs_restarting.py:236 -+msgid "More information:" -+msgstr "更多信息 :" -+ -+#: plugins/needs_restarting.py:240 -+msgid "No core libraries or services have been updated since boot-up." -+msgstr "在引导后没有 core 库或服务被更新。" -+ -+#: plugins/needs_restarting.py:242 -+msgid "Reboot should not be necessary." -+msgstr "不需要重新启动。" -+ -+#: plugins/post-transaction-actions.py:71 -+#, python-format -+msgid "Bad Action Line \"%s\": %s" -+msgstr "错误的操作行“ %s”: %s" -+ -+#. unsupported state, skip it -+#: plugins/post-transaction-actions.py:130 -+#, python-format -+msgid "Bad Transaction State: %s" -+msgstr "错误的事务状态: %s" -+ -+#: plugins/post-transaction-actions.py:153 -+#: plugins/post-transaction-actions.py:155 -+#, python-format -+msgid "post-transaction-actions: %s" -+msgstr "交易后的操作: %s" -+ -+#: plugins/post-transaction-actions.py:157 -+#, python-format -+msgid "post-transaction-actions: Bad Command \"%s\": %s" -+msgstr "交易后的操作 : 错误命令 \"%s\": %s" -+ -+#: plugins/repoclosure.py:42 -+msgid "Display a list of unresolved dependencies for repositories" -+msgstr "显示仓库中未被解决的依赖关系的列表" -+ -+#: plugins/repoclosure.py:66 -+msgid "Repoclosure ended with unresolved dependencies." -+msgstr "Repoclosure 退出时还有依赖关系未解决。" -+ -+#: plugins/repoclosure.py:153 -+msgid "check packages of the given archs, can be specified multiple times" -+msgstr "检查给定架构的软件包,可以被指定多次" -+ -+#: plugins/repoclosure.py:156 -+msgid "Specify repositories to check" -+msgstr "指定要检查的软件仓库" -+ -+#: plugins/repoclosure.py:158 -+msgid "Check only the newest packages in the repos" -+msgstr "只检查仓库中最新的软件包" -+ -+#: plugins/repoclosure.py:161 -+msgid "Check closure for this package only" -+msgstr "仅为该软件包检查依赖闭合性" -+ -+#: plugins/repodiff.py:45 -+msgid "List differences between two sets of repositories" -+msgstr "列出两组仓库中的不同" -+ -+#: plugins/repodiff.py:58 -+msgid "Specify old repository, can be used multiple times" -+msgstr "指定旧的仓库,可以使用多次" -+ -+#: plugins/repodiff.py:60 -+msgid "Specify new repository, can be used multiple times" -+msgstr "指定新的仓库,可以使用多次" -+ -+#: plugins/repodiff.py:63 -+msgid "" -+"Specify architectures to compare, can be used multiple times. By default, " -+"only source rpms are compared." -+msgstr "指定要比较的架构,可以使用多次。默认情况下,只比较源 rpms。" -+ -+#: plugins/repodiff.py:67 -+msgid "Output additional data about the size of the changes." -+msgstr "输出关于改变大小的额外数据。" -+ -+#: plugins/repodiff.py:69 -+msgid "" -+"Compare packages also by arch. By default packages are compared just by " -+"name." -+msgstr "同时按架构比较软件包。在默认情况下只按名称比较软件包。" -+ -+#: plugins/repodiff.py:72 -+msgid "Output a simple one line message for modified packages." -+msgstr "为修改的软件包输出一个简单的单行信息。" -+ -+#: plugins/repodiff.py:74 -+msgid "" -+"Split the data for modified packages between upgraded and downgraded " -+"packages." -+msgstr "在升级和降级的软件包间为修改的软件包分隔数据。" -+ -+#: plugins/repodiff.py:86 -+msgid "Both old and new repositories must be set." -+msgstr "新仓库和旧仓库都需要被设置。" -+ -+#: plugins/repodiff.py:178 -+msgid "Size change: {} bytes" -+msgstr "大小的变化 : {} 字节" -+ -+#: plugins/repodiff.py:184 -+msgid "Added package : {}" -+msgstr "添加的软件包 : {}" -+ -+#: plugins/repodiff.py:187 -+msgid "Removed package: {}" -+msgstr "删除的软件包 : {}" -+ -+#: plugins/repodiff.py:190 -+msgid "Obsoleted by : {}" -+msgstr "过期于 : {}" -+ -+#: plugins/repodiff.py:195 -+msgid "" -+"\n" -+"Upgraded packages" -+msgstr "" -+"\n" -+"升级的软件包" -+ -+#: plugins/repodiff.py:200 -+msgid "" -+"\n" -+"Downgraded packages" -+msgstr "" -+"\n" -+"降级的软件包" -+ -+#: plugins/repodiff.py:207 -+msgid "" -+"\n" -+"Modified packages" -+msgstr "" -+"\n" -+"修改的软件包" -+ -+#: plugins/repodiff.py:212 -+msgid "" -+"\n" -+"Summary" -+msgstr "" -+"\n" -+"概述" -+ -+#: plugins/repodiff.py:213 -+msgid "Added packages: {}" -+msgstr "添加的软件包 : {}" -+ -+#: plugins/repodiff.py:214 -+msgid "Removed packages: {}" -+msgstr "删除的软件包 : {}" -+ -+#: plugins/repodiff.py:216 -+msgid "Upgraded packages: {}" -+msgstr "升级的软件包 : {}" -+ -+#: plugins/repodiff.py:217 -+msgid "Downgraded packages: {}" -+msgstr "降级的软件包 : {}" -+ -+#: plugins/repodiff.py:219 -+msgid "Modified packages: {}" -+msgstr "修改的软件包 : {}" -+ -+#: plugins/repodiff.py:222 -+msgid "Size of added packages: {}" -+msgstr "添加的软件包的大小 : {}" -+ -+#: plugins/repodiff.py:223 -+msgid "Size of removed packages: {}" -+msgstr "删除的软件包的大小 : {}" -+ -+#: plugins/repodiff.py:225 -+msgid "Size of modified packages: {}" -+msgstr "修改的软件包的大小 : {}" -+ -+#: plugins/repodiff.py:228 -+msgid "Size of upgraded packages: {}" -+msgstr "升级的软件包的大小 : {}" -+ -+#: plugins/repodiff.py:230 -+msgid "Size of downgraded packages: {}" -+msgstr "降级的软件包的大小 : {}" -+ -+#: plugins/repodiff.py:232 -+msgid "Size change: {}" -+msgstr "大小改变 : {}" -+ -+#: plugins/repograph.py:50 -+msgid "Output a full package dependency graph in dot format" -+msgstr "以点线图方式输出完整的软件包依赖关系图" -+ -+#: plugins/repograph.py:110 -+#, python-format -+msgid "Nothing provides: '%s'" -+msgstr "没有任何软件包能提供:'%s'" -+ -+#: plugins/repomanage.py:45 -+msgid "Manage a directory of rpm packages" -+msgstr "管理 RPM 软件包目录" -+ -+#: plugins/repomanage.py:59 -+msgid "Pass either --old or --new, not both!" -+msgstr "传入 --old 或者 --new,不可同时传入!" -+ -+#: plugins/repomanage.py:71 -+msgid "No files to process" -+msgstr "没有可处理的文件" -+ -+#: plugins/repomanage.py:93 -+msgid "Could not open {}" -+msgstr "无法打开 {}" -+ -+#: plugins/repomanage.py:177 -+msgid "Print the older packages" -+msgstr "打印较旧的软件包" -+ -+#: plugins/repomanage.py:179 -+msgid "Print the newest packages" -+msgstr "打印最新的软件包" -+ -+#: plugins/repomanage.py:181 -+msgid "Space separated output, not newline" -+msgstr "用空格分割输出,而不是新行" -+ -+#: plugins/repomanage.py:183 -+msgid "Newest N packages to keep - defaults to 1" -+msgstr "要保留的最新的 N 个软件包 - 默认值为 1" -+ -+#: plugins/repomanage.py:186 -+msgid "Path to directory" -+msgstr "指向目录的路径" -+ -+#: plugins/reposync.py:54 -+msgid "download all packages from remote repo" -+msgstr "下载远程仓库中的全部软件包" -+ -+#: plugins/reposync.py:63 -+msgid "download only packages for this ARCH" -+msgstr "只下载这个 ARCH 的软件包" -+ -+#: plugins/reposync.py:65 -+msgid "delete local packages no longer present in repository" -+msgstr "删除已不在仓库中的本地软件包" -+ -+#: plugins/reposync.py:67 -+msgid "also download and uncompress comps.xml" -+msgstr "同时下载并解压 comps.xml" -+ -+#: plugins/reposync.py:69 -+msgid "download all the metadata." -+msgstr "下载所有元数据" -+ -+#: plugins/reposync.py:71 -+msgid "download only newest packages per-repo" -+msgstr "只下载最新的软件包 per-repo" -+ -+#: plugins/reposync.py:73 -+msgid "where to store downloaded repositories" -+msgstr "存储下载的仓库的位置" -+ -+#: plugins/reposync.py:75 -+msgid "Don't add the reponame to the download path." -+msgstr "不要在下载路径中添加仓库名(reponame)。" -+ -+#: plugins/reposync.py:77 -+msgid "" -+"where to store downloaded repository metadata. Defaults to the value of " -+"--download-path." -+msgstr "存储下载的仓库元数据的位置。默认为 --download-path 的值。" -+ -+#: plugins/reposync.py:80 -+msgid "operate on source packages" -+msgstr "在源软件包中操作" -+ -+#: plugins/reposync.py:82 -+msgid "try to set local timestamps of local files by the one on the server" -+msgstr "根据服务器上的文件设置本地文件的本地时间戳" -+ -+#: plugins/reposync.py:85 -+msgid "Just list urls of what would be downloaded, don't download" -+msgstr "只列出要下载内容的 url,不实际下载" -+ -+#: plugins/reposync.py:109 -+msgid "Can't use --norepopath with multiple repositories" -+msgstr "不能使用 --norepopath 与多个仓库一起使用。" -+ -+#: plugins/reposync.py:127 -+#, python-format -+msgid "Failed to get mirror for metadata: %s" -+msgstr "获取元数据镜像失败:%s" -+ -+#: plugins/reposync.py:144 -+msgid "Failed to get mirror for the group file." -+msgstr "获取组文件镜像失败" -+ -+#: plugins/reposync.py:175 -+msgid "Download target '{}' is outside of download path '{}'." -+msgstr "下载的目标 '{}' 在下载路径 '{}' 以外。" -+ -+#: plugins/reposync.py:190 -+#, python-format -+msgid "[DELETED] %s" -+msgstr "[DELETED] %s" -+ -+#: plugins/reposync.py:192 -+#, python-format -+msgid "failed to delete file %s" -+msgstr "无法删除文件 %s" -+ -+#: plugins/reposync.py:201 -+#, python-format -+msgid "comps.xml for repository %s saved" -+msgstr "仓库 %s 的 comps.xml 已保存" -+ -+#: plugins/show_leaves.py:54 -+msgid "New leaves:" -+msgstr "新增保留项:" -+ -+#: plugins/versionlock.py:32 -+#, python-format -+msgid "Unable to read version lock configuration: %s" -+msgstr "无法读取版本锁配置: %s" -+ -+#: plugins/versionlock.py:33 -+msgid "Locklist not set" -+msgstr "锁列表未设置" -+ -+#: plugins/versionlock.py:34 -+msgid "Adding versionlock on:" -+msgstr "正在添加版本锁:" -+ -+#: plugins/versionlock.py:35 -+msgid "Adding exclude on:" -+msgstr "正在添加排除:" -+ -+#: plugins/versionlock.py:36 -+msgid "Package already locked in equivalent form:" -+msgstr "软件包已使用等同的格式锁定:" -+ -+#: plugins/versionlock.py:37 -+msgid "Package {} is already locked" -+msgstr "软件包 {} 已被锁定" -+ -+#: plugins/versionlock.py:38 -+msgid "Package {} is already excluded" -+msgstr "软件包 {} 已被排除" -+ -+#: plugins/versionlock.py:39 -+msgid "Deleting versionlock for:" -+msgstr "正在删除版本锁:" -+ -+#: plugins/versionlock.py:40 -+msgid "No package found for:" -+msgstr "未找到软件包:" -+ -+#: plugins/versionlock.py:41 -+msgid "Excludes from versionlock plugin were not applied" -+msgstr "从 versionlock 插件中排除的没有被应用" -+ -+#: plugins/versionlock.py:42 -+msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" -+msgstr "Versionlock 插件: 文件 \"{}\" 中的锁定数量规则被应用:{}" -+ -+#: plugins/versionlock.py:43 -+msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" -+msgstr "Versionlock 插件: 文件 \"{}\" 中的排除规则数量被应用:{}" -+ -+#: plugins/versionlock.py:44 -+msgid "Versionlock plugin: could not parse pattern:" -+msgstr "Versionlock 插件:不能解析特征:" -+ -+#: plugins/versionlock.py:130 -+msgid "control package version locks" -+msgstr "控制软件包版本锁" -+ -+#: plugins/versionlock.py:136 -+msgid "Use package specifications as they are, do not try to parse them" -+msgstr "按原样使用程序包规格,请勿尝试解析它们" -+ -+#~ msgid "" -+#~ "\n" -+#~ "You are about to enable a Playground repository.\n" -+#~ "\n" -+#~ "Do you want to continue?" -+#~ msgstr "" -+#~ "\n" -+#~ "您将启用一个 Playground 仓库。\n" -+#~ "\n" -+#~ "是否继续?" -+ -+#~ msgid "also download comps.xml" -+#~ msgstr "也下载 comps.xml" -+ -+#~ msgid "where to store downloaded repositories " -+#~ msgstr "在何处保存已下载的仓库 " --- -2.25.4 - diff --git a/SOURCES/0007-reposync-Add-latest-NEVRAs-per-stream-to-download-RhBug-1833074.patch b/SOURCES/0007-reposync-Add-latest-NEVRAs-per-stream-to-download-RhBug-1833074.patch deleted file mode 100644 index 583c949..0000000 --- a/SOURCES/0007-reposync-Add-latest-NEVRAs-per-stream-to-download-RhBug-1833074.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 37d60b626fcb3e3f68b02c2c24e4ae5149cf223f Mon Sep 17 00:00:00 2001 -From: Marek Blaha -Date: Thu, 23 Jul 2020 16:27:22 +0200 -Subject: [PATCH] [reposync] Add latest NEVRAs per stream to download (RhBug: - 1833074) - -This covers situation when package with the newest NEVRA is part of -an older version of a stream and reposync was used with --newest-only -switch. -With this patch these package versions are going to be downloaded: -- the latest NEVRAs from non-modular packages -- all packages from stream version with the latest package NEVRA (in - case the latest NEVRA is part of multiple stream versions only the - highest is downloaded) -- all packages from the latest stream version - -https://bugzilla.redhat.com/show_bug.cgi?id=1833074 ---- - plugins/reposync.py | 53 ++++++++++++++++++++++++++++++++++++--------- - 1 file changed, 43 insertions(+), 10 deletions(-) - -diff --git a/plugins/reposync.py b/plugins/reposync.py -index 548a05b4..7556e7eb 100644 ---- a/plugins/reposync.py -+++ b/plugins/reposync.py -@@ -207,27 +207,60 @@ def download_metadata(self, repo): - - def _get_latest(self, query): - """ -- return query with latest nonmodular package and all packages from latest version per stream -+ return union of these queries: -+ - the latest NEVRAs from non-modular packages -+ - all packages from stream version with the latest package NEVRA -+ (this should not be needed but the latest package NEVRAs might be -+ part of an older module version) -+ - all packages from the latest stream version - """ - if not dnf.base.WITH_MODULES: - return query.latest() -+ - query.apply() - module_packages = self.base._moduleContainer.getModulePackages() - all_artifacts = set() - module_dict = {} # {NameStream: {Version: [modules]}} -+ artifact_version = {} # {artifact: {NameStream: [Version]}} - for module_package in module_packages: -- all_artifacts.update(module_package.getArtifacts()) -+ artifacts = module_package.getArtifacts() -+ all_artifacts.update(artifacts) - module_dict.setdefault(module_package.getNameStream(), {}).setdefault( - module_package.getVersionNum(), []).append(module_package) -- non_modular_latest = query.filter( -+ for artifact in artifacts: -+ artifact_version.setdefault(artifact, {}).setdefault( -+ module_package.getNameStream(), []).append(module_package.getVersionNum()) -+ -+ # the latest NEVRAs from non-modular packages -+ latest_query = query.filter( - pkg__neq=query.filter(nevra_strict=all_artifacts)).latest() -- latest_artifacts = set() -- for version_dict in module_dict.values(): -- keys = sorted(version_dict.keys(), reverse=True) -- for module in version_dict[keys[0]]: -- latest_artifacts.update(module.getArtifacts()) -- latest_modular_query = query.filter(nevra_strict=latest_artifacts) -- return latest_modular_query.union(non_modular_latest) -+ -+ # artifacts from the newest version and those versions that contain an artifact -+ # with the highest NEVRA -+ latest_stream_artifacts = set() -+ for namestream, version_dict in module_dict.items(): -+ # versions that will be synchronized -+ versions = set() -+ # add the newest stream version -+ versions.add(sorted(version_dict.keys(), reverse=True)[0]) -+ # collect all artifacts in all stream versions -+ stream_artifacts = set() -+ for modules in version_dict.values(): -+ for module in modules: -+ stream_artifacts.update(module.getArtifacts()) -+ # find versions to which the packages with the highest NEVRAs belong -+ for latest_pkg in query.filter(nevra_strict=stream_artifacts).latest(): -+ # here we depend on modules.yaml allways containing full NEVRA (including epoch) -+ nevra = "{0.name}-{0.epoch}:{0.version}-{0.release}.{0.arch}".format(latest_pkg) -+ # download only highest version containing the latest artifact -+ versions.add(max(artifact_version[nevra][namestream])) -+ # add all artifacts from selected versions for synchronization -+ for version in versions: -+ for module in version_dict[version]: -+ latest_stream_artifacts.update(module.getArtifacts()) -+ latest_query = latest_query.union(query.filter(nevra_strict=latest_stream_artifacts)) -+ -+ return latest_query - - def get_pkglist(self, repo): - query = self.base.sack.query(flags=hawkey.IGNORE_MODULAR_EXCLUDES).available().filterm( diff --git a/SPECS/dnf-plugins-core.spec b/SPECS/dnf-plugins-core.spec index 90d8492..5fa1aa9 100644 --- a/SPECS/dnf-plugins-core.spec +++ b/SPECS/dnf-plugins-core.spec @@ -31,19 +31,16 @@ %endif Name: dnf-plugins-core -Version: 4.0.17 -Release: 5%{?dist} +Version: 4.0.18 +Release: 4%{?dist} Summary: Core Plugins for DNF License: GPLv2+ URL: https://github.com/rpm-software-management/dnf-plugins-core Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz -Patch1: 0001-test-plugin-crash-if-needs-restarting-d-does-not-exist.patch -Patch2: 0002-Fix-debug-restore-command-RhBug-1844533.patch -Patch3: 0003-debug-Use-standard-demands.resolving-for-transaction.patch -Patch4: 0004-Reorder-options-in-dnf-debug-man-page-alphabetically.patch -Patch5: 0005-debug-Do-not-remove-install-only-packages-RhBug-1844.patch -Patch6: 0006-Update-translations-RhBug-1820546.patch -Patch7: 0007-reposync-Add-latest-NEVRAs-per-stream-to-download-RhBug-1833074.patch +Patch1: 0001-groups-manager-Re-introduce-yum-groups-manager-funct.patch +Patch2: 0002-needs-restarting-add-s-to-list-services-RhBug-177293.patch +Patch3: 0003-reposync-Check-GPG-signatures-of-downloaded-packages-RhBug-1856818.patch +Patch4: 0004-Update-translations.patch BuildArch: noarch BuildRequires: cmake BuildRequires: gettext @@ -63,6 +60,7 @@ Provides: dnf-command(debug-dump) Provides: dnf-command(debug-restore) Provides: dnf-command(debuginfo-install) Provides: dnf-command(download) +Provides: dnf-command(groups-manager) Provides: dnf-command(repoclosure) Provides: dnf-command(repograph) Provides: dnf-command(repomanage) @@ -78,6 +76,7 @@ Provides: dnf-plugin-debuginfo-install = %{version}-%{release} Provides: dnf-plugin-download = %{version}-%{release} Provides: dnf-plugin-generate_completion_cache = %{version}-%{release} Provides: dnf-plugin-needs_restarting = %{version}-%{release} +Provides: dnf-plugin-groups-manager = %{version}-%{release} Provides: dnf-plugin-repoclosure = %{version}-%{release} Provides: dnf-plugin-repodiff = %{version}-%{release} Provides: dnf-plugin-repograph = %{version}-%{release} @@ -92,7 +91,7 @@ Conflicts: dnf-plugins-extras-common-data < %{dnf_plugins_extra} %description Core Plugins for DNF. This package enhances DNF with builddep, config-manager, -copr, debug, debuginfo-install, download, needs-restarting, repoclosure, +copr, debug, debuginfo-install, download, groups-manager, needs-restarting, repoclosure, repograph, repomanage, reposync, changelog and repodiff commands. Additionally provides generate_completion_cache passive plugin. @@ -102,8 +101,10 @@ Summary: Core Plugins for DNF %{?python_provide:%python_provide python2-%{name}} BuildRequires: python2-dnf >= %{dnf_lowest_compatible} %if 0%{?rhel} && 0%{?rhel} <= 7 +BuildRequires: dbus-python BuildRequires: python-nose %else +BuildRequires: python2-dbus BuildRequires: python2-nose %endif BuildRequires: python2-devel @@ -113,8 +114,10 @@ Requires: python2-distro Requires: python2-dnf >= %{dnf_lowest_compatible} Requires: python2-hawkey >= %{hawkey_version} %if 0%{?rhel} && 0%{?rhel} <= 7 +Requires: dbus-python Requires: python-dateutil %else +Requires: python2-dbus Requires: python2-dateutil %endif Provides: python2-dnf-plugins-extras-debug = %{version}-%{release} @@ -133,7 +136,7 @@ Conflicts: python-%{name} < %{version}-%{release} %description -n python2-%{name} Core Plugins for DNF, Python 2 interface. This package enhances DNF with builddep, -config-manager, copr, degug, debuginfo-install, download, needs-restarting, +config-manager, copr, degug, debuginfo-install, download, groups-manager, needs-restarting, repoclosure, repograph, repomanage, reposync, changelog and repodiff commands. Additionally provides generate_completion_cache passive plugin. %endif @@ -142,12 +145,14 @@ Additionally provides generate_completion_cache passive plugin. %package -n python3-%{name} Summary: Core Plugins for DNF %{?python_provide:%python_provide python3-%{name}} +BuildRequires: python3-dbus BuildRequires: python3-devel BuildRequires: python3-dnf >= %{dnf_lowest_compatible} BuildRequires: python3-nose %if 0%{?fedora} Requires: python3-distro %endif +Requires: python3-dbus Requires: python3-dnf >= %{dnf_lowest_compatible} Requires: python3-hawkey >= %{hawkey_version} Requires: python3-dateutil @@ -167,7 +172,7 @@ Conflicts: python-%{name} < %{version}-%{release} %description -n python3-%{name} Core Plugins for DNF, Python 3 interface. This package enhances DNF with builddep, -config-manager, copr, debug, debuginfo-install, download, needs-restarting, +config-manager, copr, debug, debuginfo-install, download, groups-manager, needs-restarting, repoclosure, repograph, repomanage, reposync, changelog and repodiff commands. Additionally provides generate_completion_cache passive plugin. %endif @@ -195,8 +200,8 @@ Summary: Yum-utils CLI compatibility layer %description -n %{yum_utils_subpackage_name} As a Yum-utils CLI compatibility layer, supplies in CLI shims for debuginfo-install, repograph, package-cleanup, repoclosure, repomanage, -repoquery, reposync, repotrack, repodiff, builddep, config-manager, debug -and download that use new implementations using DNF. +repoquery, reposync, repotrack, repodiff, builddep, config-manager, debug, +download and yum-groups-manager that use new implementations using DNF. %endif %if 0%{?rhel} == 0 && %{with python2} @@ -463,6 +468,7 @@ ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-builddep ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-config-manager ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-debug-dump ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-debug-restore +ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yum-groups-manager ln -sf %{_libexecdir}/dnf-utils %{buildroot}%{_bindir}/yumdownloader # These commands don't have a dedicated man page, so let's just point them # to the utils page which contains their descriptions. @@ -488,6 +494,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ %{_mandir}/man8/dnf-debuginfo-install.* %{_mandir}/man8/dnf-download.* %{_mandir}/man8/dnf-generate_completion_cache.* +%{_mandir}/man8/dnf-groups-manager.* %{_mandir}/man8/dnf-needs-restarting.* %{_mandir}/man8/dnf-repoclosure.* %{_mandir}/man8/dnf-repodiff.* @@ -518,6 +525,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ %{python2_sitelib}/dnf-plugins/debuginfo-install.* %{python2_sitelib}/dnf-plugins/download.* %{python2_sitelib}/dnf-plugins/generate_completion_cache.* +%{python2_sitelib}/dnf-plugins/groups_manager.* %{python2_sitelib}/dnf-plugins/needs_restarting.* %{python2_sitelib}/dnf-plugins/repoclosure.* %{python2_sitelib}/dnf-plugins/repodiff.* @@ -543,6 +551,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ %{python3_sitelib}/dnf-plugins/debuginfo-install.py %{python3_sitelib}/dnf-plugins/download.py %{python3_sitelib}/dnf-plugins/generate_completion_cache.py +%{python3_sitelib}/dnf-plugins/groups_manager.py %{python3_sitelib}/dnf-plugins/needs_restarting.py %{python3_sitelib}/dnf-plugins/repoclosure.py %{python3_sitelib}/dnf-plugins/repodiff.py @@ -557,6 +566,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ %{python3_sitelib}/dnf-plugins/__pycache__/debuginfo-install.* %{python3_sitelib}/dnf-plugins/__pycache__/download.* %{python3_sitelib}/dnf-plugins/__pycache__/generate_completion_cache.* +%{python3_sitelib}/dnf-plugins/__pycache__/groups_manager.* %{python3_sitelib}/dnf-plugins/__pycache__/needs_restarting.* %{python3_sitelib}/dnf-plugins/__pycache__/repoclosure.* %{python3_sitelib}/dnf-plugins/__pycache__/repodiff.* @@ -584,6 +594,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ %{_bindir}/yum-config-manager %{_bindir}/yum-debug-dump %{_bindir}/yum-debug-restore +%{_bindir}/yum-groups-manager %{_bindir}/yumdownloader %{_mandir}/man1/debuginfo-install.* %{_mandir}/man1/needs-restarting.* @@ -596,6 +607,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ %{_mandir}/man1/yum-config-manager.* %{_mandir}/man1/yum-debug-dump.* %{_mandir}/man1/yum-debug-restore.* +%{_mandir}/man1/yum-groups-manager.* %{_mandir}/man1/yumdownloader.* %{_mandir}/man1/package-cleanup.* %{_mandir}/man1/dnf-utils.* @@ -617,6 +629,7 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ %exclude %{_mandir}/man1/yum-config-manager.* %exclude %{_mandir}/man1/yum-debug-dump.* %exclude %{_mandir}/man1/yum-debug-restore.* +%exclude %{_mandir}/man1/yum-groups-manager.* %exclude %{_mandir}/man1/yumdownloader.* %exclude %{_mandir}/man1/package-cleanup.* %exclude %{_mandir}/man1/dnf-utils.* @@ -749,6 +762,29 @@ PYTHONPATH=./plugins nosetests-%{python3_version} -s tests/ %endif %changelog +* Mon Mar 8 2021 Marek Blaha - 4.0.18-4 +- Update translations (RhBug:1899687) + +* Fri Jan 15 2021 Nicola Sella - 4.0.18-3 +- [reposync] Check GPG signatures of downloaded packages (RhBug:1856818) + +* Tue Dec 8 2020 Marek Blaha - 4.0.18-2 +- Introduce groups-manager plugin (RhBug:1826016) +- [needs-restarting] add -s to list services (RhBug:1772939) + +* Tue Nov 10 2020 Nicola Sella - 4.0.18-1 +- Update to 4.0.18 +- [needs-restarting] Fix plugin fail if needs-restarting.d does not exist +- [needs-restarting] add kernel-rt to reboot list +- Fix debug-restore command +- [config-manager] enable/disable comma separated pkgs (RhBug:1830530) +- [debug] Use standard demands.resolving for transaction handling +- [debug] Do not remove install-only packages (RhBug:1844533) +- return error when dnf download failed +- README: Reference Fedora Weblate instead of Zanata +- [reposync] Add latest NEVRAs per stream to download (RhBug: 1833074) +- copr: don't try to list runtime dependencies + * Wed Aug 05 2020 Nicola Sella - 4.0.17-5 - [reposync] Add latest NEVRAs per stream to download (RhBug: 1833074)