diff --git a/SOURCES/0004-Update-translations.patch b/SOURCES/0004-Update-translations.patch deleted file mode 100644 index 3ab0465..0000000 --- a/SOURCES/0004-Update-translations.patch +++ /dev/null @@ -1,3341 +0,0 @@ -From a15c6beee8ba3af9005cc49794ac6517f018d7a1 Mon Sep 17 00:00:00 2001 -From: Marek Blaha -Date: Mon, 13 Sep 2021 10:01:53 +0200 -Subject: [PATCH] Update translations - ---- - po/fr.po | 222 +++++++++++++++++---- - po/ja.po | 409 +++++++++++++++++++++++++++----------- - po/ko.po | 556 ++++++++++++++++++++++++++++++++++------------------ - po/zh_CN.po | 417 +++++++++++++++++++++++++++------------ - 4 files changed, 1130 insertions(+), 474 deletions(-) - -diff --git a/po/fr.po b/po/fr.po -index dfa06ad..e517103 100644 ---- a/po/fr.po -+++ b/po/fr.po -@@ -3,23 +3,24 @@ - # José Fournier , 2017. #zanata - # Jérôme Fenal , 2017. #zanata - # Jean-Baptiste Holcroft , 2018. #zanata, 2020. --# Ludek Janda , 2018. #zanata -+# Ludek Janda , 2018. #zanata, 2021. - # Jean-Baptiste Holcroft , 2019. #zanata, 2020. - # Julien Humbert , 2020. -+# 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-09-03 10:36+0000\n" -+"Last-Translator: Ludek Janda \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.8\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,125 @@ 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 invalide" -+ -+#: plugins/groups_manager.py:58 -+msgid "Invalid translated data, should be in form 'lang:text'" -+msgstr "Données traduites invalides, doivent être au format « lang : text »" -+ -+#: plugins/groups_manager.py:61 -+msgid "Invalid/empty language for translated data" -+msgstr "Langue non valide / vide pour les données traduites" -+ -+#: plugins/groups_manager.py:71 -+msgid "Can't generate group id from '{}'. Please specify group id using --id." -+msgstr "" -+"Impossible de générer l'id du groupe à partir de «{}». Veuillez spécifier " -+"l'id du groupe en utilisant --id." -+ -+#: 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 des métadonnées de groupes à partir d'un 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 "charge et enregistre les métadonnées des groupes dans un fichier" -+ -+#: plugins/groups_manager.py:97 -+msgid "print the result metadata to stdout" -+msgstr "affiche les métadonnées du résultat sur la sortie standard" -+ -+#: plugins/groups_manager.py:100 -+msgid "group id" -+msgstr "id du 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 du groupe" -+ -+#: 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 "ajoute les paquets à la section obligatoire" -+ -+#: plugins/groups_manager.py:125 -+msgid "add packages to the optional section" -+msgstr "ajoute les paquets à la section optionnelle" -+ -+#: plugins/groups_manager.py:127 -+msgid "remove packages from the group instead of adding them" -+msgstr "supprime les paquets du groupe au lieu de les ajouter" -+ -+#: plugins/groups_manager.py:129 -+msgid "include also direct dependencies for packages" -+msgstr "inclus également les dépendances directes pour les paquets" -+ -+#: plugins/groups_manager.py:132 -+msgid "package specification" -+msgstr "spécification du paquet" -+ -+#: plugins/groups_manager.py:156 -+msgid "Can't edit group without specifying it (use --id or --name)" -+msgstr "" -+"Un groupe ne peut pas être édité sans le spécifier (utilisez --id ou --name)" -+ -+#: 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 "Les paquets ne peuvent pas être retirés d'un groupe qui n'existe pas" -+ -+#: plugins/groups_manager.py:305 -+msgid "" -+"Group id '{}' generated from '{}' is duplicit. Please specify group id using" -+" --id." -+msgstr "" -+"L'id du groupe « {} » qui a été généré pour « {} » est en double. Veuillez " -+"le spécifier en utilisant --id." -+ - #: plugins/leaves.py:32 - msgid "List installed packages not required by any other package" - msgstr "" -@@ -698,7 +818,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 +827,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 "signaler uniquement les services systemd affecté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 +1105,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 "" -+"Retire les paquets qui ont échoué la vérification de la signature GPG après " -+"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 +1139,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 de « {} » : {}" -+ - #: plugins/reposync.py:175 -+msgid "GPG signature check failed." -+msgstr "La vérification de la signature GPG a échoué." -+ -+#: plugins/reposync.py:196 - msgid "Download target '{}' is outside of download path '{}'." - msgstr "" - "La cible de téléchargement « {} » est en dehors du chemin de téléchargement " - "« {} »." - --#: 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..854e20e 100644 ---- a/po/ja.po -+++ b/po/ja.po -@@ -1,20 +1,21 @@ - # Ooyama Yosiyuki , 2015. #zanata --# Ludek Janda , 2018. #zanata -+# Ludek Janda , 2018. #zanata, 2021. - # 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-09-03 10:36+0000\n" -+"Last-Translator: Ludek Janda \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.8\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 -@@ -246,7 +250,7 @@ msgstr "" - " list --available-by-user=NAME\n" - " search project\n" - "\n" --" Examples:\n" -+" 例:\n" - " copr enable rhscl/perl516 epel-6-x86_64\n" - " copr enable ignatenkobrain/ocltoys\n" - " copr disable rhscl/perl516\n" -@@ -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: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 "起動以降にコアライブラリーまたはサービスがアップデートされました:" - --#: 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..520a72b 100644 ---- a/po/ko.po -+++ b/po/ko.po -@@ -1,55 +1,56 @@ - # Ludek Janda , 2018. #zanata, 2020. -+# simmon , 2021. - msgid "" - msgstr "" - "Project-Id-Version: PACKAGE VERSION\n" - "Report-Msgid-Bugs-To: \n" --"POT-Creation-Date: 2020-10-05 09:18-0400\n" --"PO-Revision-Date: 2020-09-12 11:29+0000\n" --"Last-Translator: Ludek Janda \n" --"Language-Team: Korean \n" -+"POT-Creation-Date: 2021-02-22 10:06+0100\n" -+"PO-Revision-Date: 2021-04-18 16:02+0000\n" -+"Last-Translator: simmon \n" -+"Language-Team: Korean \n" - "Language: ko\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" - "Plural-Forms: nplurals=1; plural=0;\n" --"X-Generator: Weblate 4.2.2\n" -+"X-Generator: Weblate 4.5.3\n" - - #: plugins/builddep.py:45 - msgid "[PACKAGE|PACKAGE.spec]" --msgstr "" -+msgstr "[PACKAGE|PACKAGE.spec]" - - #: plugins/builddep.py:85 - #, python-format - msgid "'%s' is not of the format 'MACRO EXPR'" --msgstr "" -+msgstr "'%s'는 'MACRO EXPR' 형식이 아닙니다" - - #: plugins/builddep.py:90 - msgid "packages with builddeps to install" --msgstr "" -+msgstr "설치 할 builddeps가 있는 꾸러미(package)" - - #: plugins/builddep.py:93 - msgid "define a macro for spec file parsing" --msgstr "" -+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" --msgstr "" -+msgstr "명령줄 인수를 지정한 파일로 다룬다" - - #: plugins/builddep.py:100 - msgid "treat commandline arguments as source rpm" --msgstr "" -+msgstr "명령줄 인수를 rpm 소스로 다룬다" - - #: plugins/builddep.py:144 - msgid "RPM: {}" --msgstr "" -+msgstr "RPM: {}" - - #: plugins/builddep.py:153 - msgid "Some packages could not be found." --msgstr "" -+msgstr "몇몇 꾸러미(packages)를 찾을 수 없습니다." - - #. No provides, no files - #. Richdeps can have no matches but it could be correct (solver must decide -@@ -57,86 +58,86 @@ msgstr "" - #: plugins/builddep.py:173 - #, python-format - msgid "No matching package to install: '%s'" --msgstr "" -+msgstr "설치: '%s' 꾸러미(package)가 일치하지 않습니다" - - #: plugins/builddep.py:191 - #, python-format - msgid "Failed to open: '%s', not a valid source rpm file." --msgstr "" -+msgstr "여는데 실패하였습니다: '%s', 유효한 rpm 파일 출처가 아닙니다." - - #: plugins/builddep.py:204 plugins/builddep.py:220 plugins/builddep.py:237 - msgid "Not all dependencies satisfied" --msgstr "" -+msgstr "모든 의존성을 만족하지 않습니다" - - #: plugins/builddep.py:211 - #, python-format - msgid "Failed to open: '%s', not a valid spec file: %s" --msgstr "" -+msgstr "여는데 실패하였습니다 '%s', 지정한 파일: %s가 유효하지 않습니다" - - #: plugins/builddep.py:230 plugins/repoclosure.py:118 - #, python-format - msgid "no package matched: %s" --msgstr "일치하는 패키지 없음 : %s" -+msgstr "일치하는 꾸러미(package) 없음: %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 "꾸러미(packages)의 변화 기록자료를 보여줍니다" - - #: 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 "주어진 수의 꾸러미(package) 마다 변화기록 항목을 보여줍니다" - - #: plugins/changelog.py:58 - msgid "" - "show only new changelog entries for packages, that provide an upgrade for " - "some of already installed packages." --msgstr "" -+msgstr "몇몇 이미 설치된 꾸러미(package)들의 최신화를 제공하는 꾸러미를 위하여 새로운 변화기록만을 보여줍니다." - - #: plugins/changelog.py:60 - msgid "PACKAGE" --msgstr "" -+msgstr "꾸러미(package)" - - #: plugins/changelog.py:81 plugins/debuginfo-install.py:90 - #, python-format - msgid "No match for argument: %s" --msgstr "인수와 일치하는 항목 없음 : %s" -+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 {}" --msgstr "" -+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" -@@ -160,21 +161,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 인수는 설정 관리자와 함께 의미를 갖고 있지 않습니다. 대신에 --set-" -+"enabled/--set-disabled를 사용하세요." - - #: plugins/config_manager.py:131 - #, python-format -@@ -189,7 +192,7 @@ msgstr "다음 위치에서 레포 추가 : %s" - #: plugins/config_manager.py:206 - msgid "Configuration of repo failed" - msgid_plural "Configuration of repos failed" --msgstr[0] "저장소 구성에 실패했습니다." -+msgstr[0] "저장소 구성에 실패했습니다" - - #: plugins/config_manager.py:216 - #, python-format -@@ -237,7 +240,21 @@ msgid "" - " " - 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" -+" 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/copr.py:107 -@@ -258,7 +275,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: " -@@ -269,14 +286,16 @@ msgid "" - "specify Copr hub either with `--hub` or using " - "`copr_hub/copr_username/copr_projectname` format" - msgstr "" -+"Corp hub를 `--hub` 또는 사용하기 `copr_hub/copr_username/copr_projectname`형식으로 " -+"지정합니다" - - #: 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" --msgstr "copr 명령에 정확히 두 개의 추가 매개 변수가 필요합니다." -+msgstr "copr 명령에 정확히 두 개의 추가 매개 변수가 필요합니다" - - #: plugins/copr.py:238 - msgid "use format `copr_username/copr_projectname` to reference copr project" -@@ -300,6 +319,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" -+"Core 저정소를 활성화합니다. 이 저장소는 주요 배포판 부분이 아님을 알고 있기 바라고,\n" -+"품질이 다를 수 있습니다.\n" -+"\n" -+"페도라 프로젝트는\n" -+"에\n" -+"Core FAQ에 있는 설명된 규칙을 넘는 저장소 내용 이상의 권한을 시험하지 않으며,\n" -+"그리고 꾸러미(package)는 어떤 품질이나 보안 수준을 유지하지 않습니다.\n" -+"\n" -+"페도라 버그질라에 이들 꾸러미에 대한 파일 결점 보고를 제출하지 마세요.\n" -+"이들 문제는, 이들 저장소 소유자와 접촉하세요.\n" - - #: plugins/copr.py:271 - msgid "Repository successfully enabled." -@@ -323,6 +353,8 @@ msgid "" - " about Copr hub - the default one was assumed. Re-enable the project to fix " - "this." - msgstr "" -+"* 이들 coprs은 Copr hub에 대하여 어떤 정보도 포함하지 않는 오래된 형태의 저장소 파일을 갖고 있습니다. 이 문제를 수정하기" -+" 위하여 프로젝트를 재활성화하세요." - - #: plugins/copr.py:353 - msgid "Can't parse repositories for username '{}'." -@@ -334,7 +366,7 @@ msgstr "{} 명의 경찰 목록" - - #: plugins/copr.py:364 - msgid "No description given" --msgstr "설명이 없습니다." -+msgstr "설명이 없습니다" - - #: plugins/copr.py:376 - msgid "Can't parse search for '{}'." -@@ -381,19 +413,31 @@ msgid "" - "\n" - "These repositories have been enabled automatically." - msgstr "" -+"활성화된 Core 저장소의 유지는 다른 저장소에 이를 독립적으로\n" -+"만드는 것으로 결정하였습니다.\n" -+"그런 저장소는 주요 Corp 저장소에서 성공적인 RPM 설치를\n" -+"위하여 일반적으로 필요합니다(이들은 실행 의존성을 제공합니다).\n" -+"\n" -+"위도 여기에 적용되며 품질과 결점-보고에 대한 참고 사항을 알아야 하고,\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." -@@ -404,14 +448,12 @@ msgid "Interact with Playground repository." - msgstr "놀이터 저장소와 상호 작용하십시오." - - #: plugins/copr.py:639 --#, fuzzy --#| msgid "Interact with Playground repository." - msgid "Enabling a Playground repository." --msgstr "놀이터 저장소와 상호 작용하십시오." -+msgstr "동작 저장소와 활용하기." - - #: plugins/copr.py:640 - msgid "Do you want to continue?" --msgstr "" -+msgstr "계속하기를 원하십니까?" - - #: plugins/copr.py:683 - msgid "Playground repositories successfully enabled." -@@ -427,7 +469,7 @@ msgstr "놀이터 저장소가 성공적으로 업데이트되었습니다." - - #: plugins/debug.py:53 - msgid "dump information about installed rpm packages to file" --msgstr "설치된 rpm 패키지에 대한 정보를 파일에 덤프하십시오." -+msgstr "설치된 rpm 꾸러미(package)에 대한 정보를 파일에 덤프하십시오" - - #: plugins/debug.py:67 - msgid "do not attempt to dump the repository contents." -@@ -444,7 +486,7 @@ msgstr "작성된 출력 : %s" - - #: plugins/debug.py:172 - msgid "restore packages recorded in debug-dump file" --msgstr "디버그 덤프 파일에 기록 된 패키지 복원" -+msgstr "디버그 덤프 파일에 기록 된 꾸러미(package) 복원" - - #: plugins/debug.py:185 - msgid "output commands that would be run to stdout." -@@ -452,13 +494,13 @@ msgstr "stdout으로 실행될 출력 명령." - - #: plugins/debug.py:188 - msgid "Install the latest version of recorded packages." --msgstr "기록 된 패키지의 최신 버전을 설치하십시오." -+msgstr "기록 된 꾸러미의 최신 버전을 설치하십시오." - - #: plugins/debug.py:191 - msgid "" - "Ignore architecture and install missing packages matching the name, epoch, " - "version and release." --msgstr "아키텍처를 무시하고 이름, 기원, 버전 및 릴리스와 일치하는 누락 된 패키지를 설치하십시오." -+msgstr "구조를 무시하고 이름, 기원, 버전및 출시와 일치하는 누락 된 꾸러미를 설치하십시오." - - #: plugins/debug.py:196 - msgid "limit to specified type" -@@ -468,7 +510,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" -@@ -477,7 +519,7 @@ msgstr "덤프 파일의 이름" - #: plugins/debug.py:273 - #, python-format - msgid "Package %s is not available" --msgstr "꾸러미 %s 사용할 수 없습니다" -+msgstr "꾸러미(package) %s 사용 할 수 없습니다" - - #: plugins/debug.py:283 - #, python-format -@@ -486,31 +528,31 @@ msgstr "잘못된 dnf 디버그 파일 : %s" - - #: plugins/debuginfo-install.py:56 - msgid "install debuginfo packages" --msgstr "debuginfo 패키지 설치" -+msgstr "디버그정보 꾸러미(package) 설치" - - #: plugins/debuginfo-install.py:180 - #, python-format - msgid "" - "Could not find debuginfo package for the following available packages: %s" --msgstr "" -+msgstr "다음 사용가능한 꾸러미(package): %s 를 위하여 디버그정보 꾸러미를 찾을 수 없습니다" - - #: plugins/debuginfo-install.py:185 - #, python-format - msgid "" - "Could not find debugsource package for the following available packages: %s" --msgstr "" -+msgstr "다음 가용한 꾸러미(package): %s 를 위하여 디버그자원 꾸러미(package)를 찾을 수 없습니다" - - #: plugins/debuginfo-install.py:190 - #, python-format - msgid "" - "Could not find debuginfo package for the following installed packages: %s" --msgstr "" -+msgstr "다음 설치된 꾸러미(package): %s 를 위한 디버그정보 꾸러미(package)를 찾을 수 없습니다" - - #: plugins/debuginfo-install.py:195 - #, python-format - msgid "" - "Could not find debugsource package for the following installed packages: %s" --msgstr "" -+msgstr "다음 설치된 꾸러미(package): %s 를 위하여 디버그자원 꾸러미(package)를 찾을 수 없습니다" - - #: plugins/debuginfo-install.py:199 - msgid "Unable to find a match" -@@ -518,51 +560,51 @@ msgstr "일치하는 항목을 찾을 수 없습니다" - - #: plugins/download.py:41 - msgid "Download package to current directory" --msgstr "현재 디렉토리에 패키지 다운로드" -+msgstr "현재 디렉토리에 꾸러미 내려받기" - - #: plugins/download.py:51 - msgid "packages to download" --msgstr "다운로드 할 패키지" -+msgstr "내려받기 할 꾸러미" - - #: plugins/download.py:53 - msgid "download the src.rpm instead" --msgstr "대신 src.rpm을 다운로드하십시오." -+msgstr "대신 src.rpm을 내려받으세요" - - #: plugins/download.py:55 - msgid "download the -debuginfo package instead" --msgstr "대신 -debuginfo 패키지를 다운로드하십시오." -+msgstr "대신 -debuginfo 꾸러미(package)를 내려받아요" - - #: plugins/download.py:57 - msgid "download the -debugsource package instead" --msgstr "" -+msgstr "대신 -debuginfo 꾸러미(package)를 내려받으세요" - - #: plugins/download.py:60 - msgid "limit the query to packages of given architectures." --msgstr "쿼리를 주어진 아키텍처의 패키지로 제한하십시오." -+msgstr "요청를 주어진 구조 꾸러미(package)로 제한하십시오." - - #: plugins/download.py:62 - msgid "resolve and download needed dependencies" --msgstr "필요한 종속성을 해결하고 다운로드하십시오." -+msgstr "필요한 종속성을 해결하고 내려받아요" - - #: plugins/download.py:64 - msgid "" - "when running with --resolve, download all dependencies (do not exclude " - "already installed ones)" --msgstr "" -+msgstr "--resolve 와 함께 실행 할 때에, 모든 의존성을 내려받습니다 (이미 설치된 것들은 포함하지 않습니다)" - - #: plugins/download.py:67 - msgid "" - "print list of urls where the rpms can be downloaded instead of downloading" --msgstr "다운로드 대신 rpms를 다운로드 할 수있는 URL 목록 인쇄" -+msgstr "내려받기 대신 rpms를 내려받기 할 수 있는 URL 목록 인쇄" - - #: plugins/download.py:72 - msgid "when running with --url, limit to specific protocols" --msgstr "--url을 사용하여 실행하면 특정 프로토콜로 제한됩니다." -+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" -+msgstr "꾸러미 연결주소 얻기에 실패했습니다: %s" - - #: plugins/download.py:243 - msgid "Exiting due to strict setting." -@@ -570,7 +612,7 @@ msgstr "엄격한 설정으로 인해 종료됩니다." - - #: plugins/download.py:261 - msgid "Error in resolve of packages:" --msgstr "패키지 해결 오류 :" -+msgstr "꾸러미(package) 해결 오류 :" - - #: plugins/download.py:279 - #, python-format -@@ -580,27 +622,141 @@ msgstr "소스 rpm이 정의되지 않았습니다. %s" - #: plugins/download.py:296 plugins/download.py:309 - #, python-format - msgid "No package %s available." --msgstr "패키지 없음 %s 유효한." -+msgstr "가용한 꾸러미(package) %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 "꾸러미(package)를 필 수 부분에 추가합니다" -+ -+#: plugins/groups_manager.py:125 -+msgid "add packages to the optional section" -+msgstr "꾸러미(package)를 선택 부분에 추가합니다" -+ -+#: plugins/groups_manager.py:127 -+msgid "remove packages from the group instead of adding them" -+msgstr "추가하기 대신에 그룹에서 꾸러미(package)를 제거합니다" -+ -+#: plugins/groups_manager.py:129 -+msgid "include also direct dependencies for packages" -+msgstr "꾸러미(package)를 위해 직접적인 의존성을 포함한다" -+ -+#: plugins/groups_manager.py:132 -+msgid "package specification" -+msgstr "꾸러미(package) 사양" -+ -+#: plugins/groups_manager.py:156 -+msgid "Can't edit group without specifying it (use --id or --name)" -+msgstr "이것(user --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 "존재하지 않는 그룹에서 꾸러미(package)를 제거 할 수 없습니다" -+ -+#: 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 "다른 패키지에서 필요하지 않은 설치된 패키지 나열" -+msgstr "다른 꾸러미(package)에서 필요하지 않은 설치된 꾸러미(packages) 나열" - - #: plugins/local.py:122 - msgid "Unable to create a directory '{}' due to '{}'" --msgstr "'{}'(으)로 인해 '{}'디렉토리를 만들 수 없습니다." -+msgstr "'{}'(으)로 인해 '{}'디렉토리를 만들 수 없습니다" - - #: plugins/local.py:126 - msgid "'{}' is not a directory" --msgstr "'{}'은 (는) 디렉토리가 아닙니다." -+msgstr "'{}'는 디렉토리가 아닙니다" - - #: plugins/local.py:135 - msgid "Copying '{}' to local repo" --msgstr "'{}'을 (를) 로컬 저장소로 복사 중입니다." -+msgstr "'{}'을 로컬 저장소로 복사 중입니다" - - #: plugins/local.py:141 - msgid "Can't write file '{}'" --msgstr "'{}'파일을 쓸 수 없습니다." -+msgstr "'{}'파일을 쓸 수 없습니다" - - #: plugins/local.py:156 - msgid "Rebuilding local repo" -@@ -608,73 +764,79 @@ msgstr "지역 레포 복구" - - #: plugins/migrate.py:45 - msgid "migrate yum's history, group and yumdb data to dnf" --msgstr "yum의 히스토리, 그룹 및 yumdb 데이터를 dnf로 마이그레이션합니다." -+msgstr "yum 사용기록, 그룹 및 yumdb 데이터를 dnf로 마이그레이션합니다" - - #: plugins/migrate.py:54 - 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 "" -+"재시작이 필요한 파일 \"{file}\" 에 지정한 꾸러미 이름 \"{pkg}\"을 위하여 설치된 꾸러미(package)를 찾을 수 " -+"없습니다." - --#: 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 "이 사용자의 프로세스 만 고려하십시오." -+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 "재시작이 요구되는 (exit code 1) 또는 아닌(exit code0) 경우에만 보고합니다" - --#: 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 "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 "핵심 라이브러리와 서비스는 재시작 이 후에 최신화 되지 않습니다." - --#: 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" -@@ -686,149 +848,157 @@ msgstr "재구 축은 해결되지 않은 종속성으로 종료되었습니다. - - #: plugins/repoclosure.py:153 - msgid "check packages of the given archs, can be specified multiple times" --msgstr "지정된 아치의 패키지를 검사하고 여러 번 지정할 수 있습니다." -+msgstr "지정된 아치의 꾸러미(package)를 검사하고 여러 번 지정할 수 있습니다" - - #: plugins/repoclosure.py:156 - msgid "Specify repositories to check" --msgstr "확인할 저장소를 지정하십시오." -+msgstr "점검 할 저장소를 지정하세요" - - #: plugins/repoclosure.py:158 - msgid "Check only the newest packages in the repos" --msgstr "리포지토리의 최신 패키지 만 확인하십시오." -+msgstr "저장소 최신 꾸러미(package)만 확인하세요" - - #: plugins/repoclosure.py:161 - msgid "Check closure for this package only" --msgstr "이 패키지의 폐쇄 만 확인하십시오." -+msgstr "이 꾸러미(package)의 폐쇄만 확인하세요" - - #: 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 "구조에 의해 꾸러미(package) 또한 비교합니다. 기본적으로 꾸러미(package)는 이름으로만 비교됩니다." - - #: plugins/repodiff.py:72 - msgid "Output a simple one line message for modified packages." --msgstr "" -+msgstr "수정된 꾸러미(pacakage)지를 위해 단순히 한 줄 메시지를 출력합니다." - - #: 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 "크기 변화: {} bytes" - - #: plugins/repodiff.py:184 - msgid "Added package : {}" --msgstr "" -+msgstr "추가된 꾸러미(package) : {}" - - #: plugins/repodiff.py:187 - msgid "Removed package: {}" --msgstr "" -+msgstr "제거된 꾸러미(package): {}" - - #: plugins/repodiff.py:190 - msgid "Obsoleted by : {}" --msgstr "" -+msgstr "사용되지 않음 : {}" - - #: plugins/repodiff.py:195 - msgid "" - "\n" - "Upgraded packages" - msgstr "" -+"\n" -+"향상된 꾸러미(package)" - - #: plugins/repodiff.py:200 - msgid "" - "\n" - "Downgraded packages" - msgstr "" -+"\n" -+"꾸러미 하향설치" - - #: plugins/repodiff.py:207 - msgid "" - "\n" - "Modified packages" - msgstr "" -+"\n" -+"변형된 꾸러미(package)" - - #: plugins/repodiff.py:212 - msgid "" - "\n" - "Summary" - msgstr "" -+"\n" -+"요약" - - #: plugins/repodiff.py:213 - msgid "Added packages: {}" --msgstr "" -+msgstr "추가된 꾸러미(package): {}" - - #: plugins/repodiff.py:214 - msgid "Removed packages: {}" --msgstr "" -+msgstr "제거된 꾸러미(package): {}" - - #: plugins/repodiff.py:216 - msgid "Upgraded packages: {}" --msgstr "" -+msgstr "향상된 꾸러미(package): {}" - - #: plugins/repodiff.py:217 - msgid "Downgraded packages: {}" --msgstr "" -+msgstr "하향설치된 꾸러미: {}" - - #: plugins/repodiff.py:219 - msgid "Modified packages: {}" --msgstr "" -+msgstr "변형된 꾸러미(package): {}" - - #: plugins/repodiff.py:222 - msgid "Size of added packages: {}" --msgstr "" -+msgstr "크기가 증가된 꾸러미(package): {}" - - #: plugins/repodiff.py:223 - msgid "Size of removed packages: {}" --msgstr "" -+msgstr "크기가 제거된 꾸러미(package): {}" - - #: plugins/repodiff.py:225 - msgid "Size of modified packages: {}" --msgstr "" -+msgstr "크기가 변형된 꾸러미(package): {}" - - #: 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" --msgstr "도트 형식의 전체 패키지 종속성 그래프 출력" -+msgstr "도트 형식의 전체 꾸러미(package) 종속성 그래프 출력" - - #: plugins/repograph.py:110 - #, python-format -@@ -837,27 +1007,27 @@ msgstr "아무것도 제공하지 않습니다 : '%s'" - - #: plugins/repomanage.py:45 - msgid "Manage a directory of rpm packages" --msgstr "rpm 패키지 디렉토리 관리" -+msgstr "rpm 꾸러미(package) 디렉토리 관리" - - #: plugins/repomanage.py:59 - msgid "Pass either --old or --new, not both!" --msgstr "--old 또는 --new 중 하나를 전달하십시오." -+msgstr "--old 또는 --new 중 하나를 전달하세요!" - - #: plugins/repomanage.py:71 - msgid "No files to process" --msgstr "처리 할 파일이 없습니다." -+msgstr "처리 할 파일 없음" - - #: plugins/repomanage.py:93 - msgid "Could not open {}" --msgstr "{}을 (를) 열 수 없습니다." -+msgstr "{}을 열 수 없습니다" - - #: plugins/repomanage.py:177 - msgid "Print the older packages" --msgstr "이전 패키지 인쇄" -+msgstr "이전 꾸러미(package) 인쇄" - - #: plugins/repomanage.py:179 - msgid "Print the newest packages" --msgstr "최신 패키지 인쇄" -+msgstr "최신 꾸러미(package) 인쇄" - - #: plugins/repomanage.py:181 - msgid "Space separated output, not newline" -@@ -865,97 +1035,109 @@ msgstr "공백으로 구분 된 출력이 아닌 개행 문자" - - #: plugins/repomanage.py:183 - msgid "Newest N packages to keep - defaults to 1" --msgstr "보관할 최신 N 패키지 - 기본값은 1입니다." -+msgstr "보관할 최신 N 꾸러미(package) - 기본값은 1입니다" - - #: plugins/repomanage.py:186 - msgid "Path to directory" - msgstr "디렉토리 경로" - --#: plugins/reposync.py:54 -+#: plugins/reposync.py:55 - msgid "download all packages from remote repo" --msgstr "원격 저장소에서 모든 패키지를 다운로드하십시오." -+msgstr "원격 저장소에서 모든 꾸러미(package)를 내려받아요" - --#: plugins/reposync.py:63 -+#: plugins/reposync.py:64 - msgid "download only packages for this ARCH" --msgstr "이 ARCH 용 패키지 만 다운로드하십시오." -+msgstr "이 ARCH용 꾸러미(package)만 내려받아요" - --#: plugins/reposync.py:65 -+#: plugins/reposync.py:66 - msgid "delete local packages no longer present in repository" --msgstr "저장소에 더 이상 존재하지 않는 로컬 패키지 삭제" -+msgstr "저장소에 더 이상 존재하지 않는 로컬 꾸러미(package) 삭제" - --#: 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 "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 "저장소 최신 꾸러미(package)만 내려받아요" - - #: 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 "서버에 있는 하나에서 로컬파일의 로컬 타임스템프 설정을 시도하세요" - --#: 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 "다중 저장소와 함께 --norepath를 사용 할 수 없습니다" - --#: 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 "저장소에 대한 comps.xml %s 저장된" - - #: plugins/show_leaves.py:54 - msgid "New leaves:" --msgstr "새 잎 :" -+msgstr "독립 꾸러미(package):" - - #: plugins/versionlock.py:32 - #, python-format -@@ -964,59 +1146,59 @@ msgstr "버전 잠금 설정을 읽을 수 없습니다 : %s" - - #: plugins/versionlock.py:33 - msgid "Locklist not set" --msgstr "잠금 목록이 설정되지 않았습니다." -+msgstr "잠금 목록 설정되지 않음" - - #: plugins/versionlock.py:34 - msgid "Adding versionlock on:" --msgstr "" -+msgstr "버전잠금 설정 추가하기:" - - #: plugins/versionlock.py:35 - msgid "Adding exclude on:" --msgstr "" -+msgstr "제외 하기 추가하기:" - - #: plugins/versionlock.py:36 - msgid "Package already locked in equivalent form:" --msgstr "" -+msgstr "꾸러미(package)는 이미 동일한 형태로 잠겨졌습니다:" - - #: plugins/versionlock.py:37 - msgid "Package {} is already locked" --msgstr "" -+msgstr "꾸러미(package) {} 는 이미 잠겨졌습니다" - - #: plugins/versionlock.py:38 - msgid "Package {} is already excluded" --msgstr "" -+msgstr "꾸러미(package) {} 는 이미 제외되었습니다" - - #: plugins/versionlock.py:39 - msgid "Deleting versionlock for:" --msgstr "" -+msgstr "버전 잠금을 제거하기:" - - #: plugins/versionlock.py:40 - msgid "No package found for:" --msgstr "" -+msgstr "찾고자 하는 꾸러미(package)가 없습니다:" - - #: plugins/versionlock.py:41 - msgid "Excludes from versionlock plugin were not applied" --msgstr "" -+msgstr "버전 잠금 플러그인에서 제외는 적용되지 않습니다" - - #: plugins/versionlock.py:42 - msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" --msgstr "" -+msgstr "버전 잠금 플러그인: 적용된 파일 \"{} \"에서 잠금 규칙의 수: {}" - - #: plugins/versionlock.py:43 - msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" --msgstr "" -+msgstr "버전 잠금 플러그인: 적용된 파일 \"{} \"에서 제외 규칙의 수: {}" - - #: plugins/versionlock.py:44 - msgid "Versionlock plugin: could not parse pattern:" --msgstr "" -+msgstr "버전 잠금 플러그인: 유형을 구문 분석 할 수 없습니다:" - - #: plugins/versionlock.py:130 - msgid "control package version locks" --msgstr "" -+msgstr "꾸러미 버전 잠금을 제어합니다" - - #: plugins/versionlock.py:136 - msgid "Use package specifications as they are, do not try to parse them" --msgstr "" -+msgstr "꾸러미(package) 사양을 그대로 사용하며, 구문 분석을 시도하지 않습니다" - - #~ msgid "" - #~ "\n" -diff --git a/po/zh_CN.po b/po/zh_CN.po -index 151441d..ea0afbc 100644 ---- a/po/zh_CN.po -+++ b/po/zh_CN.po -@@ -1,24 +1,26 @@ - # Tommy He , 2015. #zanata - # Tommy He , 2016. #zanata - # mosquito , 2016. #zanata --# Charles Lee , 2017. #zanata, 2020. -+# Charles Lee , 2017. #zanata, 2020, 2021. - # cheng ye <18969068329@163.com>, 2017. #zanata --# Ludek Janda , 2018. #zanata -+# Ludek Janda , 2018. #zanata, 2021. - # Hongqiao Chen , 2020. -+# Sundeep Anand , 2021. -+# Qiyu Yan , 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-09-03 07:40+0000\n" -+"Last-Translator: Ludek Janda \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.8\n" - - #: plugins/builddep.py:45 - msgid "[PACKAGE|PACKAGE.spec]" -@@ -39,7 +41,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 +53,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 +89,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 +122,20 @@ msgstr "未找到匹配的参数: %s" - - #: plugins/changelog.py:109 - msgid "Listing changelogs since {}" --msgstr "" -+msgstr "列出自 {} 后的改变日志信息" - - #: plugins/changelog.py:111 - msgid "Listing only latest changelog" - msgid_plural "Listing {} latest changelogs" --msgstr[0] "" -+msgstr[0] "只列出最新 {} 项更改日志" - - #: plugins/changelog.py:116 - msgid "Listing only new changelogs since installed version of the package" --msgstr "" -+msgstr "在列出安装的软件包版本后的新改变日志" - - #: plugins/changelog.py:118 - msgid "Listing all changelogs" --msgstr "" -+msgstr "列出所有改变日志" - - #: plugins/changelog.py:122 - msgid "Changelogs for {}" -@@ -142,7 +144,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 +168,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 -@@ -220,7 +224,7 @@ msgstr "否" - - #: plugins/copr.py:79 - msgid "Interact with Copr repositories." --msgstr "与 Copr 仓库交互" -+msgstr "与 Copr 仓库交互。" - - #: plugins/copr.py:81 - msgid "" -@@ -250,7 +254,7 @@ msgstr "" - " list --available-by-user=NAME\n" - " search project\n" - "\n" --" Examples:\n" -+" 例如:\n" - " copr enable rhscl/perl516 epel-6-x86_64\n" - " copr enable ignatenkobrain/ocltoys\n" - " copr disable rhscl/perl516\n" -@@ -278,7 +282,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 +293,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 +325,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 +359,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 '{}'." -@@ -374,7 +391,7 @@ msgstr "安全及明智的答案。退出。" - - #: plugins/copr.py:417 - msgid "This command has to be run under the root user." --msgstr "该命令必须以 root 用户运行" -+msgstr "该命令必须以 root 用户运行。" - - #: plugins/copr.py:481 - msgid "" -@@ -401,15 +418,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 仓库 {0}/{1}/{2} 失败" - - #: plugins/copr.py:593 - msgid "Failed to disable copr repo {}/{}" -@@ -424,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." -@@ -488,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 "允许删除仅安装(install-only)的软件包。使用这个选项可能会导致尝试删除正在运行的内核。" - - #: plugins/debug.py:202 - msgid "name of dump file" -@@ -497,7 +524,7 @@ msgstr "转储文件名称" - #: plugins/debug.py:273 - #, python-format - msgid "Package %s is not available" --msgstr "软件包 %s 不可用。" -+msgstr "软件包 %s 不可用" - - #: plugins/debug.py:283 - #, python-format -@@ -512,25 +539,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,11 +581,11 @@ 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." --msgstr "限定查询指定架构的软件包" -+msgstr "限定查询指定架构的软件包。" - - #: plugins/download.py:62 - msgid "resolve and download needed dependencies" -@@ -568,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 "" -@@ -579,7 +606,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 +629,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 +775,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: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 "在引导后 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 +867,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 +1044,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 +1161,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 +1201,7 @@ msgstr "控制软件包版本锁" - - #: plugins/versionlock.py:136 - msgid "Use package specifications as they are, do not try to parse them" --msgstr "" -+msgstr "按原样使用程序包规格,请勿尝试解析它们" - - #~ msgid "" - #~ "\n" --- -2.31.1 - diff --git a/SOURCES/0004-copr-dont-traceback-on-empty-lines-in-etcos-release.patch b/SOURCES/0004-copr-dont-traceback-on-empty-lines-in-etcos-release.patch new file mode 100644 index 0000000..60a4db5 --- /dev/null +++ b/SOURCES/0004-copr-dont-traceback-on-empty-lines-in-etcos-release.patch @@ -0,0 +1,33 @@ +From ebacba86979d16cdb92ace9d7dc601a85c97b5db Mon Sep 17 00:00:00 2001 +From: Jakub Kadlcik +Date: Tue, 12 Oct 2021 18:30:47 +0200 +Subject: [PATCH] copr: don't traceback on empty lines in /etc/os-release + +Fix RHBZ 1994944 +--- + plugins/copr.py | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/plugins/copr.py b/plugins/copr.py +index 4644495..8841f03 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -50,8 +50,13 @@ except ImportError: + with open('/etc/os-release') as os_release_file: + os_release_data = {} + for line in os_release_file: +- os_release_key, os_release_value = line.rstrip().split('=') +- os_release_data[os_release_key] = os_release_value.strip('"') ++ try: ++ os_release_key, os_release_value = line.rstrip().split('=') ++ os_release_data[os_release_key] = os_release_value.strip('"') ++ except ValueError: ++ # Skip empty lines and everything that is not a simple ++ # variable assignment ++ pass + return (os_release_data['NAME'], os_release_data['VERSION_ID'], None) + + PLUGIN_CONF = 'copr' +-- +libgit2 1.0.1 + diff --git a/SOURCES/0005-reposync-Use-fail_fastFalse-when-downloading-packages-RhBug2009894.patch b/SOURCES/0005-reposync-Use-fail_fastFalse-when-downloading-packages-RhBug2009894.patch new file mode 100644 index 0000000..1e5a989 --- /dev/null +++ b/SOURCES/0005-reposync-Use-fail_fastFalse-when-downloading-packages-RhBug2009894.patch @@ -0,0 +1,40 @@ +From b60f27006cdbdd14fb480aa22610fcd32bfe41e5 Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Wed, 6 Oct 2021 13:40:55 +0200 +Subject: [PATCH] reposync: Use fail_fast=False when downloading packages (RhBug:2009894) + += changelog = +msg: Reposync does not stop downloading packages on the first error +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2009894 +--- + dnf-plugins-core.spec | 2 +- + plugins/reposync.py | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dnf-plugins-core.spec b/dnf-plugins-core.spec +index 83ae6ae..cef836f 100644 +--- a/dnf-plugins-core.spec ++++ b/dnf-plugins-core.spec +@@ -1,4 +1,4 @@ +-%{?!dnf_lowest_compatible: %global dnf_lowest_compatible 4.2.22} ++%{?!dnf_lowest_compatible: %global dnf_lowest_compatible 4.9.2} + %global dnf_plugins_extra 2.0.0 + %global hawkey_version 0.46.1 + %global yum_utils_subpackage_name dnf-utils +diff --git a/plugins/reposync.py b/plugins/reposync.py +index 66c76a7..0ff936f 100644 +--- a/plugins/reposync.py ++++ b/plugins/reposync.py +@@ -303,7 +303,7 @@ class RepoSyncCommand(dnf.cli.Command): + progress, 0) + payloads = [RPMPayloadLocation(pkg, progress, self.pkg_download_path(pkg)) + for pkg in pkglist] +- base._download_remote_payloads(payloads, drpm, progress, None) ++ base._download_remote_payloads(payloads, drpm, progress, None, False) + + def print_urls(self, pkglist): + for pkg in pkglist: +-- +libgit2 1.0.1 + diff --git a/SOURCES/0006-copr-migrate-all-calls-to-APIv3.patch b/SOURCES/0006-copr-migrate-all-calls-to-APIv3.patch new file mode 100644 index 0000000..b23ce54 --- /dev/null +++ b/SOURCES/0006-copr-migrate-all-calls-to-APIv3.patch @@ -0,0 +1,101 @@ +From 54b7c5f91b4ad1db1f716f25cc7973ec7542f0d4 Mon Sep 17 00:00:00 2001 +From: Jakub Kadlcik +Date: Tue, 12 Oct 2021 12:54:05 +0200 +Subject: [PATCH] copr: migrate all calls to APIv3 + +In the latest Copr release we dropped all APIv1 code from frontend. +https://docs.pagure.org/copr.copr/release-notes/2021-10-01.html + +Unfortunatelly we frogot to migrate DNF copr plugin to APIv3 and +therefore the following commands started failing with 404. + + dnf copr search tests + dnf copr list --available-by-user frostyx +--- + plugins/copr.py | 40 +++++++++++++++++----------------------- + 1 file changed, 17 insertions(+), 23 deletions(-) + +diff --git a/plugins/copr.py b/plugins/copr.py +index 8841f03..7fc6c6f 100644 +--- a/plugins/copr.py ++++ b/plugins/copr.py +@@ -355,51 +355,45 @@ Bugzilla. In case of problems, contact the owner of this repository. + "Re-enable the project to fix this.")) + + def _list_user_projects(self, user_name): +- # http://copr.fedorainfracloud.org/api/coprs/ignatenkobrain/ +- api_path = "/api/coprs/{}/".format(user_name) +- res = self.base.urlopen(self.copr_url + api_path, mode='w+') ++ # https://copr.fedorainfracloud.org/api_3/project/list?ownername=ignatenkobrain ++ api_path = "/api_3/project/list?ownername={0}".format(user_name) ++ url = self.copr_url + api_path ++ res = self.base.urlopen(url, mode='w+') + try: + json_parse = json.loads(res.read()) + except ValueError: + raise dnf.exceptions.Error( + _("Can't parse repositories for username '{}'.") + .format(user_name)) + self._check_json_output(json_parse) + section_text = _("List of {} coprs").format(user_name) + self._print_match_section(section_text) +- i = 0 +- while i < len(json_parse["repos"]): +- msg = "{0}/{1} : ".format(user_name, +- json_parse["repos"][i]["name"]) +- desc = json_parse["repos"][i]["description"] +- if not desc: +- desc = _("No description given") ++ ++ for item in json_parse["items"]: ++ msg = "{0}/{1} : ".format(user_name, item["name"]) ++ desc = item["description"] or _("No description given") + msg = self.base.output.fmtKeyValFill(ucd(msg), desc) + print(msg) +- i += 1 + + def _search(self, query): +- # http://copr.fedorainfracloud.org/api/coprs/search/tests/ +- api_path = "/api/coprs/search/{}/".format(query) +- res = self.base.urlopen(self.copr_url + api_path, mode='w+') ++ # https://copr.fedorainfracloud.org/api_3/project/search?query=tests ++ api_path = "/api_3/project/search?query={}".format(query) ++ url = self.copr_url + api_path ++ res = self.base.urlopen(url, mode='w+') + try: + json_parse = json.loads(res.read()) + except ValueError: + raise dnf.exceptions.Error(_("Can't parse search for '{}'." + ).format(query)) + self._check_json_output(json_parse) + section_text = _("Matched: {}").format(query) + self._print_match_section(section_text) +- i = 0 +- while i < len(json_parse["repos"]): +- msg = "{0}/{1} : ".format(json_parse["repos"][i]["username"], +- json_parse["repos"][i]["coprname"]) +- desc = json_parse["repos"][i]["description"] +- if not desc: +- desc = _("No description given.") ++ ++ for item in json_parse["items"]: ++ msg = "{0} : ".format(item["full_name"]) ++ desc = item["description"] or _("No description given.") + msg = self.base.output.fmtKeyValFill(ucd(msg), desc) + print(msg) +- i += 1 + + def _print_match_section(self, text): + formatted = self.base.output.fmtSection(text) +@@ -624,7 +618,7 @@ Bugzilla. In case of problems, contact the owner of this repository. + + @classmethod + def _check_json_output(cls, json_obj): +- if json_obj["output"] != "ok": ++ if "error" in json_obj: + raise dnf.exceptions.Error("{}".format(json_obj["error"])) + + @classmethod +-- +libgit2 1.0.1 + diff --git a/SOURCES/0007-groups-manager-More-benevolent-resolving-of-packages-RhBug2013633.patch b/SOURCES/0007-groups-manager-More-benevolent-resolving-of-packages-RhBug2013633.patch new file mode 100644 index 0000000..274f1c5 --- /dev/null +++ b/SOURCES/0007-groups-manager-More-benevolent-resolving-of-packages-RhBug2013633.patch @@ -0,0 +1,31 @@ +From 5c8f753503be87e5d6237be12eec2330236d78ed Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Mon, 8 Nov 2021 16:51:56 +0100 +Subject: [PATCH] groups-manager: More benevolent resolving of packages (RhBug:2013633) + += changelog = +msg: groups-manager uses for matching packages full NEVRA and not only name. +type: enhancement +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2013633 +--- + plugins/groups_manager.py | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/plugins/groups_manager.py b/plugins/groups_manager.py +index 382df37..12da183 100644 +--- a/plugins/groups_manager.py ++++ b/plugins/groups_manager.py +@@ -254,7 +254,9 @@ class GroupsManagerCommand(dnf.cli.Command): + # 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() ++ subj = dnf.subject.Subject(pkg_spec) ++ q = subj.get_best_query(self.base.sack, with_nevra=True, ++ with_provides=False, with_filenames=False).latest() + if not q: + logger.warning(_("No match for argument: {}").format(pkg_spec)) + continue +-- +libgit2 1.1.0 + diff --git a/SOURCES/0008-versionlock-fix-multi-pkg-lock-RhBug2013324.patch b/SOURCES/0008-versionlock-fix-multi-pkg-lock-RhBug2013324.patch new file mode 100644 index 0000000..d517175 --- /dev/null +++ b/SOURCES/0008-versionlock-fix-multi-pkg-lock-RhBug2013324.patch @@ -0,0 +1,95 @@ +From 0030ea94dd261b66cac6f08c9dfa99e3d8ee3648 Mon Sep 17 00:00:00 2001 +From: Nicola Sella +Date: Mon, 1 Nov 2021 18:29:40 +0100 +Subject: [PATCH] [versionlock] fix multi pkg lock (RhBug:2013324) + += changelog = +msg: [versionlock] Fix: Multiple package-name-spec arguments don't lock +correctly (RhBug:2001039) +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2013324 +--- + plugins/versionlock.py | 57 +++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 33 insertions(+), 24 deletions(-) + +diff --git a/plugins/versionlock.py b/plugins/versionlock.py +index c89a75d..77b7f91 100644 +--- a/plugins/versionlock.py ++++ b/plugins/versionlock.py +@@ -167,25 +167,27 @@ class VersionLockCommand(dnf.cli.Command): + cmd = self.opts.subcommand + + if cmd == 'add': +- (entry, entry_cmd) = _search_locklist(self.opts.package) +- if entry == '': +- _write_locklist(self.base, self.opts.package, self.opts.raw, True, +- "\n# Added lock on %s\n" % time.ctime(), +- ADDING_SPEC, '') +- elif cmd != entry_cmd: +- raise dnf.exceptions.Error(ALREADY_EXCLUDED.format(entry)) +- else: +- logger.info("%s %s", EXISTING_SPEC, entry) ++ results = _search_locklist(self.opts.package) ++ for entry, entry_cmd in results: ++ if entry_cmd == '': ++ _write_locklist(self.base, [entry], self.opts.raw, True, ++ "\n# Added lock on %s\n" % time.ctime(), ++ ADDING_SPEC, '') ++ elif cmd != entry_cmd: ++ raise dnf.exceptions.Error(ALREADY_EXCLUDED.format(entry)) ++ else: ++ logger.info("%s %s", EXISTING_SPEC, entry) + elif cmd == 'exclude': +- (entry, entry_cmd) = _search_locklist(self.opts.package) +- if entry == '': +- _write_locklist(self.base, self.opts.package, self.opts.raw, False, +- "\n# Added exclude on %s\n" % time.ctime(), +- EXCLUDING_SPEC, '!') +- elif cmd != entry_cmd: +- raise dnf.exceptions.Error(ALREADY_LOCKED.format(entry)) +- else: +- logger.info("%s %s", EXISTING_SPEC, entry) ++ results = _search_locklist(self.opts.package) ++ for entry, entry_cmd in results: ++ if entry_cmd == '': ++ _write_locklist(self.base, [entry], self.opts.raw, False, ++ "\n# Added exclude on %s\n" % time.ctime(), ++ EXCLUDING_SPEC, '!') ++ elif cmd != entry_cmd: ++ raise dnf.exceptions.Error(ALREADY_LOCKED.format(entry)) ++ else: ++ logger.info("%s %s", EXISTING_SPEC, entry) + elif cmd == 'list': + for pat in _read_locklist(): + print(pat) +@@ -233,14 +235,21 @@ def _read_locklist(): + + + def _search_locklist(package): ++ results = [] + found = action = '' + locked_specs = _read_locklist() +- for ent in locked_specs: +- if _match(ent, package): +- found = ent +- action = 'exclude' if ent.startswith('!') else 'add' +- break +- return (found, action) ++ for pkg in package: ++ match = False ++ for ent in locked_specs: ++ found = action = '' ++ if _match(ent, [pkg]): ++ found = ent ++ action = 'exclude' if ent.startswith('!') else 'add' ++ results.append((found, action)) ++ match = True ++ if not match: ++ results.append((pkg, action)) ++ return results + + + def _write_locklist(base, args, raw, try_installed, comment, info, prefix): +-- +libgit2 1.1.0 + diff --git a/SOURCES/0009-Update-documentation-for-adding-specific-version-RhBug2013332.patch b/SOURCES/0009-Update-documentation-for-adding-specific-version-RhBug2013332.patch new file mode 100644 index 0000000..445c330 --- /dev/null +++ b/SOURCES/0009-Update-documentation-for-adding-specific-version-RhBug2013332.patch @@ -0,0 +1,31 @@ +From ed05ce74cfb9151ea5218da0f8b9eccb70c00f70 Mon Sep 17 00:00:00 2001 +From: Nicola Sella +Date: Thu, 11 Nov 2021 13:48:39 +0100 +Subject: [PATCH] Update documentation for adding specific version (RhBug:2013332) + +=changelog= +msg: [versionlock] update documentation for adding specifi version +type: bugfix +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2013332 +--- + doc/versionlock.rst | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/doc/versionlock.rst b/doc/versionlock.rst +index 061ce80..1ac7196 100644 +--- a/doc/versionlock.rst ++++ b/doc/versionlock.rst +@@ -97,6 +97,10 @@ Subcommands + Adding versionlock on: mutt-5:1.11.4-1.fc30.* + Adding versionlock on: mutt-5:1.12.1-3.fc30.* + ++ .. note:: Be careful when adding specific versions ++ ++ If you add a package specifying a version with ``dnf versionlock mutt-5:1.11.4-1.fc30.x86_64`` then, if you run ``dnf versionlock add mutt`` ++ versionlock will not add ``mutt-5:1.12.1-3.fc30.x86_64``. + + ``dnf versionlock exclude `` + Add an exclude (within versionlock) for the available packages matching the spec. It means that +-- +libgit2 1.1.0 + diff --git a/SOURCES/0005-needs-restarting-Fix-wrong-boot-time-RhBug1960437.patch b/SOURCES/0010-needs-restarting-Fix-wrong-boot-time-RhBug1960437.patch similarity index 100% rename from SOURCES/0005-needs-restarting-Fix-wrong-boot-time-RhBug1960437.patch rename to SOURCES/0010-needs-restarting-Fix-wrong-boot-time-RhBug1960437.patch diff --git a/SOURCES/0011-Add-new-command-modulesync-RhBug1868047.patch b/SOURCES/0011-Add-new-command-modulesync-RhBug1868047.patch new file mode 100644 index 0000000..9dfc812 --- /dev/null +++ b/SOURCES/0011-Add-new-command-modulesync-RhBug1868047.patch @@ -0,0 +1,439 @@ +From 6ea94d9c768eb45975f314e11ab9dd88284fa380 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Mon, 27 Sep 2021 11:29:01 +0200 +Subject: [PATCH] Add new command modulesync (RhBug:1868047) + +It will download module metadata from all enabled repositories, +module artifacts and profiles of matching modules. Then it creates +a repository. + += changelog = +msg: Add a new subpackage with modulesync command. The command +downloads packages from modules and/or creates a repository with modular +data. +type: enhancement +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1868047 +--- + dnf-plugins-core.spec | 20 ++++++++++++++++++++ + doc/CMakeLists.txt | 1 + + doc/conf.py | 1 + + doc/index.rst | 1 + + doc/modulesync.rst | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + plugins/CMakeLists.txt | 1 + + plugins/modulesync.py | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 7 files changed, 335 insertions(+) + create mode 100644 doc/modulesync.rst + create mode 100644 plugins/modulesync.py + +diff --git a/dnf-plugins-core.spec b/dnf-plugins-core.spec +index cef836f..afdbcbb 100644 +--- a/dnf-plugins-core.spec ++++ b/dnf-plugins-core.spec +@@ -402,6 +402,19 @@ versions of those packages. This allows you to e.g. protect packages from being + updated by newer versions. + %endif + ++%if %{with python3} ++%package -n python3-dnf-plugin-modulesync ++Summary: Download module metadata and packages and create repository ++Requires: python3-%{name} = %{version}-%{release} ++Requires: createrepo_c >= 0.17.4 ++Provides: dnf-plugin-modulesync = %{version}-%{release} ++Provides: dnf-command(modulesync) ++ ++%description -n python3-dnf-plugin-modulesync ++Download module metadata from all enabled repositories, module artifacts and profiles of matching modules and create ++repository. ++%endif ++ + %prep + %autosetup + %if %{with python2} +@@ -762,6 +775,13 @@ ln -sf %{_mandir}/man1/%{yum_utils_subpackage_name}.1.gz %{buildroot}%{_mandir}/ + %endif + %endif + ++%if %{with python3} ++%files -n python3-dnf-plugin-modulesync ++%{python3_sitelib}/dnf-plugins/modulesync.* ++%{python3_sitelib}/dnf-plugins/__pycache__/modulesync.* ++%{_mandir}/man8/dnf-modulesync.* ++%endif ++ + %changelog + * Mon Apr 12 2021 Nicola Sella - 4.0.21-1 + - Add missing command line option to documentation +diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt +index 3fb665d..ff84cf8 100644 +--- a/doc/CMakeLists.txt ++++ b/doc/CMakeLists.txt +@@ -28,6 +28,7 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/dnf-builddep.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-modulesync.8 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-needs-restarting.8 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-repoclosure.8 + ${CMAKE_CURRENT_BINARY_DIR}/dnf-repodiff.8 +diff --git a/doc/conf.py b/doc/conf.py +index 645185a..41d6936 100644 +--- a/doc/conf.py ++++ b/doc/conf.py +@@ -254,6 +254,7 @@ man_pages = [ + ('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), ++ ('modulesync', 'dnf-modulesync', u'DNF modulesync Plugin', AUTHORS, 8), + ('needs_restarting', 'dnf-needs-restarting', u'DNF needs_restarting Plugin', AUTHORS, 8), + ('repoclosure', 'dnf-repoclosure', u'DNF repoclosure Plugin', AUTHORS, 8), + ('repodiff', 'dnf-repodiff', u'DNF repodiff Plugin', AUTHORS, 8), +diff --git a/doc/index.rst b/doc/index.rst +index 7213253..07f6052 100644 +--- a/doc/index.rst ++++ b/doc/index.rst +@@ -37,6 +37,7 @@ This documents core plugins of DNF: + leaves + local + migrate ++ modulesync + needs_restarting + post-transaction-actions + repoclosure +diff --git a/doc/modulesync.rst b/doc/modulesync.rst +new file mode 100644 +index 0000000..2837287 +--- /dev/null ++++ b/doc/modulesync.rst +@@ -0,0 +1,103 @@ ++.. ++ Copyright (C) 2015 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 modulesync Plugin ++==================== ++ ++Download packages from modules and/or create a repository with modular data. ++ ++-------- ++Synopsis ++-------- ++ ++``dnf modulesync [options] [...]`` ++ ++----------- ++Description ++----------- ++ ++`modulesync` downloads packages from modules according to provided arguments and creates a repository with modular data ++in working directory. In environment with modules it is recommend to use the command for redistribution of packages, ++because DNF does not allow installation of modular packages without modular metadata on the system (Fail-safe ++mechanism). The command without an argument creates a repository like `createrepo_c` but with modular metadata collected ++from all available repositories. ++ ++See examples. ++ ++--------- ++Arguments ++--------- ++ ++```` ++ Module specification for the package to download. The argument is an optional. ++ ++------- ++Options ++------- ++ ++All general DNF options are accepted. Namely, the ``--destdir`` option can be used to specify directory where packages ++will be downloaded and the new repository created. See `Options` in :manpage:`dnf(8)` for details. ++ ++ ++``-n, --newest-only`` ++ Download only packages from the newest modules. ++ ++``--enable_source_repos`` ++ Enable repositories with source packages ++ ++``--enable_debug_repos`` ++ Enable repositories with debug-info and debug-source packages ++ ++``--resolve`` ++ Resolve and download needed dependencies ++ ++-------- ++Examples ++-------- ++ ++``dnf modulesync nodejs`` ++ Download packages from `nodejs` module and crete a repository with modular metadata in working directory ++ ++``dnf download nodejs`` ++ ++``dnf modulesync`` ++ The first `download` command downloads nodejs package into working directory. In environment with modules `nodejs` ++ package can be a modular package therefore when I create a repository I have to insert also modular metadata ++ from available repositories to ensure 100% functionality. Instead of `createrepo_c` use `dnf modulesync` ++ to create a repository in working directory with nodejs package and modular metadata. ++ ++``dnf --destdir=/tmp/my-temp modulesync nodejs:14/minimal --resolve`` ++ Download package required for installation of `minimal` profile from module `nodejs` and stream `14` into directory ++ `/tmp/my-temp` and all required dependencies. Then it will create a repository in `/tmp/my-temp` directory with ++ previously downloaded packages and modular metadata from all available repositories. ++ ++``dnf module install nodejs:14/minimal --downloadonly --destdir=/tmp/my-temp`` ++ ++``dnf modulesync --destdir=/tmp/my-temp`` ++ The first `dnf module install` command downloads package from required for installation of `minimal` profile from module ++ `nodejs` and stream `14` into directory `/tmp/my-temp`. The second command `dnf modulesync` will create ++ a repository in `/tmp/my-temp` directory with previously downloaded packages and modular metadata from all ++ available repositories. In comparison to `dnf --destdir=/tmp/my-temp modulesync nodejs:14/minimal --resolve` it will ++ only download packages required for installation on current system. ++ ++ ++-------- ++See Also ++-------- ++ ++* :manpage:`dnf(8)`, DNF Command Reference +diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt +index f66d3df..59f148f 100644 +--- a/plugins/CMakeLists.txt ++++ b/plugins/CMakeLists.txt +@@ -22,6 +22,7 @@ INSTALL (FILES repograph.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + INSTALL (FILES repomanage.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + INSTALL (FILES reposync.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + INSTALL (FILES show_leaves.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) ++INSTALL (FILES modulesync.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + INSTALL (FILES versionlock.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf-plugins) + + ADD_SUBDIRECTORY (dnfpluginscore) +diff --git a/plugins/modulesync.py b/plugins/modulesync.py +new file mode 100644 +index 0000000..c1c33e4 +--- /dev/null ++++ b/plugins/modulesync.py +@@ -0,0 +1,208 @@ ++# Copyright (C) 2021 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 ++from dnfpluginscore import _, P_, logger ++from dnf.cli.option_parser import OptionParser ++ ++import os ++import shutil ++import subprocess ++ ++import dnf ++import dnf.cli ++import dnf.i18n ++import hawkey ++ ++ ++@dnf.plugin.register_command ++class SyncToolCommand(dnf.cli.Command): ++ ++ aliases = ['modulesync'] ++ summary = _('Download packages from modules and/or create a repository with modular data') ++ ++ def __init__(self, cli): ++ super(SyncToolCommand, self).__init__(cli) ++ ++ @staticmethod ++ def set_argparser(parser): ++ parser.add_argument('module', nargs='*', metavar=_('MODULE'), ++ help=_('modules to download')) ++ parser.add_argument("--enable_source_repos", action='store_true', ++ help=_('enable repositories with source packages')) ++ parser.add_argument("--enable_debug_repos", action='store_true', ++ help=_('enable repositories with debug-info and debug-source packages')) ++ parser.add_argument('--resolve', action='store_true', ++ help=_('resolve and download needed dependencies')) ++ parser.add_argument('-n', '--newest-only', default=False, action='store_true', ++ help=_('download only packages from newest modules')) ++ ++ def configure(self): ++ # setup sack and populate it with enabled repos ++ demands = self.cli.demands ++ demands.sack_activation = True ++ demands.available_repos = True ++ ++ demands.load_system_repo = False ++ ++ if self.opts.enable_source_repos: ++ self.base.repos.enable_source_repos() ++ ++ if self.opts.enable_debug_repos: ++ self.base.repos.enable_debug_repos() ++ ++ if self.opts.destdir: ++ self.base.conf.destdir = self.opts.destdir ++ else: ++ self.base.conf.destdir = dnf.i18n.ucd(os.getcwd()) ++ ++ def run(self): ++ """Execute the util action here.""" ++ ++ pkgs = self.base.sack.query().filterm(empty=True) ++ no_matched_spec = [] ++ for module_spec in self.opts.module: ++ try: ++ pkgs = pkgs.union(self._get_packages_from_modules(module_spec)) ++ except dnf.exceptions.Error: ++ no_matched_spec.append(module_spec) ++ if no_matched_spec: ++ msg = P_("Unable to find a match for argument: '{}'", "Unable to find a match for arguments: '{}'", ++ len(no_matched_spec)).format("' '".join(no_matched_spec)) ++ raise dnf.exceptions.Error(msg) ++ ++ if self.opts.resolve: ++ pkgs = pkgs.union(self._get_providers_of_requires(pkgs)) ++ ++ # download rpms ++ self._do_downloads(pkgs) ++ ++ # Create a repository at destdir with modular data ++ remove_tmp_moduleyamls_files = [] ++ for repo in self.base.repos.iter_enabled(): ++ module_md_path = repo.get_metadata_path('modules') ++ if module_md_path: ++ filename = "".join([repo.id, "-", os.path.basename(module_md_path)]) ++ dest_path = os.path.join(self.base.conf.destdir, filename) ++ shutil.copy(module_md_path, dest_path) ++ remove_tmp_moduleyamls_files.append(dest_path) ++ args = ["createrepo_c", "--update", "--unique-md-filenames", self.base.conf.destdir] ++ p = subprocess.run(args) ++ if p.returncode: ++ msg = _("Creation of repository failed with return code {}. All downloaded content was kept on the system") ++ msg = msg.format(p.returncode) ++ raise dnf.exceptions.Error(msg) ++ for file_path in remove_tmp_moduleyamls_files: ++ os.remove(file_path) ++ ++ def _do_downloads(self, pkgs): ++ """ ++ Perform the download for a list of packages ++ """ ++ pkg_dict = {} ++ for pkg in pkgs: ++ pkg_dict.setdefault(str(pkg), []).append(pkg) ++ ++ to_download = [] ++ ++ for pkg_list in pkg_dict.values(): ++ pkg_list.sort(key=lambda x: (x.repo.priority, x.repo.cost)) ++ to_download.append(pkg_list[0]) ++ if to_download: ++ self.base.download_packages(to_download, self.base.output.progress) ++ ++ def _get_packages_from_modules(self, module_spec): ++ """Gets packages from modules matching module spec ++ 1. From module artifacts ++ 2. From module profiles""" ++ result_query = self.base.sack.query().filterm(empty=True) ++ module_base = dnf.module.module_base.ModuleBase(self.base) ++ module_list, nsvcap = module_base.get_modules(module_spec) ++ if self.opts.newest_only: ++ module_list = self.base._moduleContainer.getLatestModules(module_list, False) ++ for module in module_list: ++ for artifact in module.getArtifacts(): ++ query = self.base.sack.query(flags=hawkey.IGNORE_EXCLUDES).filterm(nevra_strict=artifact) ++ if query: ++ result_query = result_query.union(query) ++ else: ++ msg = _("No match for artifact '{0}' from module '{1}'").format( ++ artifact, module.getFullIdentifier()) ++ logger.warning(msg) ++ if nsvcap.profile: ++ profiles_set = module.getProfiles(nsvcap.profile) ++ else: ++ profiles_set = module.getProfiles() ++ if profiles_set: ++ for profile in profiles_set: ++ for pkg_name in profile.getContent(): ++ query = self.base.sack.query(flags=hawkey.IGNORE_EXCLUDES).filterm(name=pkg_name) ++ # Prefer to add modular providers selected by argument ++ if result_query.intersection(query): ++ continue ++ # Add all packages with the same name as profile described ++ elif query: ++ result_query = result_query.union(query) ++ else: ++ msg = _("No match for package name '{0}' in profile {1} from module {2}")\ ++ .format(pkg_name, profile.getName(), module.getFullIdentifier()) ++ logger.warning(msg) ++ if not module_list: ++ msg = _("No mach for argument '{}'").format(module_spec) ++ raise dnf.exceptions.Error(msg) ++ ++ return result_query ++ ++ def _get_providers_of_requires(self, to_test, done=None, req_dict=None): ++ done = done if done else to_test ++ # req_dict = {} {req : set(pkgs)} ++ if req_dict is None: ++ req_dict = {} ++ test_requires = [] ++ for pkg in to_test: ++ for require in pkg.requires: ++ if require not in req_dict: ++ test_requires.append(require) ++ req_dict.setdefault(require, set()).add(pkg) ++ ++ if self.opts.newest_only: ++ # Prepare cache with all packages related affected by modular filtering ++ names = set() ++ for module in self.base._moduleContainer.getModulePackages(): ++ for artifact in module.getArtifacts(): ++ name, __, __ = artifact.rsplit("-", 2) ++ names.add(name) ++ modular_related = self.base.sack.query(flags=hawkey.IGNORE_EXCLUDES).filterm(provides=names) ++ ++ requires = self.base.sack.query().filterm(empty=True) ++ for require in test_requires: ++ q = self.base.sack.query(flags=hawkey.IGNORE_EXCLUDES).filterm(provides=require) ++ ++ if not q: ++ # TODO(jmracek) Shell we end with an error or with RC 1? ++ logger.warning((_("Unable to satisfy require {}").format(require))) ++ else: ++ if self.opts.newest_only: ++ if not modular_related.intersection(q): ++ q.filterm(latest_per_arch_by_priority=1) ++ requires = requires.union(q.difference(done)) ++ done = done.union(requires) ++ if requires: ++ done = self._get_providers_of_requires(requires, done=done, req_dict=req_dict) ++ ++ return done +-- +libgit2 1.1.0 + diff --git a/SOURCES/0012-Update-translations-RhBug-2017271.patch b/SOURCES/0012-Update-translations-RhBug-2017271.patch new file mode 100644 index 0000000..2d3f6e7 --- /dev/null +++ b/SOURCES/0012-Update-translations-RhBug-2017271.patch @@ -0,0 +1,7024 @@ +From ef261df4ed656b9e49bf3029643dfdfae82ea416 Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Fri, 18 Mar 2022 15:29:49 +0100 +Subject: [PATCH] Update translations (RhBug:2017348) + +--- + po/dnf-plugins-core.pot | 434 +++++++++++++++------ + po/fr.po | 518 ++++++++++++++++++------- + po/ja.po | 706 ++++++++++++++++++++++++---------- + po/ko.po | 832 +++++++++++++++++++++++++++------------- + po/zh_CN.po | 681 +++++++++++++++++++++----------- + po/zh_TW.po | 512 ++++++++++++++++++------- + 6 files changed, 2580 insertions(+), 1103 deletions(-) + +diff --git a/po/dnf-plugins-core.pot b/po/dnf-plugins-core.pot +index 7cd717e..3ec9a50 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: 2022-02-28 11:53+0100\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -137,91 +137,91 @@ msgstr "" + msgid "Changelogs for {}" + msgstr "" + +-#: plugins/config_manager.py:37 ++#: plugins/config_manager.py:38 + #, python-brace-format + msgid "manage {prog} configuration options and repositories" + msgstr "" + +-#: plugins/config_manager.py:44 ++#: plugins/config_manager.py:45 + msgid "repo to modify" + msgstr "" + +-#: plugins/config_manager.py:47 ++#: plugins/config_manager.py:48 + msgid "save the current options (useful with --setopt)" + msgstr "" + +-#: plugins/config_manager.py:50 ++#: plugins/config_manager.py:51 + msgid "add (and enable) the repo from the specified file or url" + msgstr "" + +-#: plugins/config_manager.py:53 ++#: plugins/config_manager.py:54 + msgid "print current configuration values to stdout" + msgstr "" + +-#: plugins/config_manager.py:56 ++#: plugins/config_manager.py:57 + msgid "print variable values to stdout" + msgstr "" + +-#: plugins/config_manager.py:60 ++#: plugins/config_manager.py:61 + msgid "enable repos (automatically saves)" + msgstr "" + +-#: plugins/config_manager.py:63 ++#: plugins/config_manager.py:64 + msgid "disable repos (automatically saves)" + msgstr "" + +-#: plugins/config_manager.py:77 ++#: plugins/config_manager.py:78 + msgid "one of the following arguments is required: {}" + msgstr "" + +-#: plugins/config_manager.py:86 ++#: plugins/config_manager.py:87 + msgid "" + "Warning: --enablerepo/--disablerepo arguments have no meaningwith config " + "manager. Use --set-enabled/--set-disabled instead." + msgstr "" + +-#: plugins/config_manager.py:131 ++#: plugins/config_manager.py:132 + #, python-format + msgid "No matching repo to modify: %s." + msgstr "" + +-#: plugins/config_manager.py:182 ++#: plugins/config_manager.py:183 + #, python-format + msgid "Adding repo from: %s" + msgstr "" + +-#: plugins/config_manager.py:206 ++#: plugins/config_manager.py:207 + msgid "Configuration of repo failed" + msgid_plural "Configuration of repos failed" + msgstr[0] "" + msgstr[1] "" + +-#: plugins/config_manager.py:216 ++#: plugins/config_manager.py:217 + #, python-format + msgid "Could not save repo to repofile %s: %s" + msgstr "" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "y" + msgstr "" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "yes" + msgstr "" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "n" + msgstr "" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "no" + msgstr "" + +-#: plugins/copr.py:79 ++#: plugins/copr.py:84 + msgid "Interact with Copr repositories." + msgstr "" + +-#: plugins/copr.py:81 ++#: plugins/copr.py:86 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -242,53 +242,63 @@ msgid "" + " " + msgstr "" + +-#: plugins/copr.py:107 ++#: plugins/copr.py:112 + msgid "List all installed Copr repositories (default)" + msgstr "" + +-#: plugins/copr.py:109 ++#: plugins/copr.py:114 + msgid "List enabled Copr repositories" + msgstr "" + +-#: plugins/copr.py:111 ++#: plugins/copr.py:116 + msgid "List disabled Copr repositories" + msgstr "" + +-#: plugins/copr.py:113 ++#: plugins/copr.py:118 + msgid "List available Copr repositories by user NAME" + msgstr "" + +-#: plugins/copr.py:115 ++#: plugins/copr.py:120 + msgid "Specify an instance of Copr to work with" + msgstr "" + +-#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 ++#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 + msgid "Error: " + msgstr "" + +-#: plugins/copr.py:150 ++#: plugins/copr.py:155 + msgid "" + "specify Copr hub either with `--hub` or using `copr_hub/copr_username/" + "copr_projectname` format" + msgstr "" + +-#: plugins/copr.py:153 ++#: plugins/copr.py:158 + msgid "multiple hubs specified" + msgstr "" + +-#: plugins/copr.py:218 plugins/copr.py:222 ++#: plugins/copr.py:223 plugins/copr.py:227 + msgid "exactly two additional parameters to copr command are required" + msgstr "" + +-#: plugins/copr.py:238 ++#: plugins/copr.py:232 ++msgid "Too many arguments." ++msgstr "" ++ ++#: plugins/copr.py:235 ++msgid "" ++"Bad format of optional chroot. The format is distribution-version-" ++"architecture." ++msgstr "" ++ ++#: plugins/copr.py:250 + msgid "use format `copr_username/copr_projectname` to reference copr project" + msgstr "" + +-#: plugins/copr.py:240 ++#: plugins/copr.py:252 + msgid "bad copr project format" + msgstr "" + +-#: plugins/copr.py:254 ++#: plugins/copr.py:266 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -304,71 +314,71 @@ msgid "" + "Bugzilla. In case of problems, contact the owner of this repository.\n" + msgstr "" + +-#: plugins/copr.py:271 ++#: plugins/copr.py:283 + msgid "Repository successfully enabled." + msgstr "" + +-#: plugins/copr.py:276 ++#: plugins/copr.py:288 + msgid "Repository successfully disabled." + msgstr "" + +-#: plugins/copr.py:280 ++#: plugins/copr.py:292 + msgid "Repository successfully removed." + msgstr "" + +-#: plugins/copr.py:284 plugins/copr.py:693 ++#: plugins/copr.py:296 plugins/copr.py:697 + msgid "Unknown subcommand {}." + msgstr "" + +-#: plugins/copr.py:341 ++#: plugins/copr.py:353 + 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:353 ++#: plugins/copr.py:366 + msgid "Can't parse repositories for username '{}'." + msgstr "" + +-#: plugins/copr.py:356 ++#: plugins/copr.py:369 + msgid "List of {} coprs" + msgstr "" + +-#: plugins/copr.py:364 ++#: plugins/copr.py:374 + msgid "No description given" + msgstr "" + +-#: plugins/copr.py:376 ++#: plugins/copr.py:386 + msgid "Can't parse search for '{}'." + msgstr "" + +-#: plugins/copr.py:379 ++#: plugins/copr.py:389 + msgid "Matched: {}" + msgstr "" + +-#: plugins/copr.py:387 ++#: plugins/copr.py:394 + msgid "No description given." + msgstr "" + +-#: plugins/copr.py:410 ++#: plugins/copr.py:416 + msgid "Safe and good answer. Exiting." + msgstr "" + +-#: plugins/copr.py:417 ++#: plugins/copr.py:423 + msgid "This command has to be run under the root user." + msgstr "" + +-#: plugins/copr.py:481 ++#: plugins/copr.py:485 + msgid "" + "This repository does not have any builds yet so you cannot enable it now." + msgstr "" + +-#: plugins/copr.py:484 ++#: plugins/copr.py:488 + msgid "Such repository does not exist." + msgstr "" + +-#: plugins/copr.py:528 ++#: plugins/copr.py:532 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -385,44 +395,44 @@ msgid "" + "These repositories have been enabled automatically." + msgstr "" + +-#: plugins/copr.py:549 ++#: plugins/copr.py:553 + msgid "Do you want to keep them enabled?" + msgstr "" + +-#: plugins/copr.py:582 ++#: plugins/copr.py:586 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" + msgstr "" + +-#: plugins/copr.py:593 ++#: plugins/copr.py:597 + msgid "Failed to disable copr repo {}/{}" + msgstr "" + +-#: plugins/copr.py:611 plugins/copr.py:648 ++#: plugins/copr.py:615 plugins/copr.py:652 + msgid "Unknown response from server." + msgstr "" + +-#: plugins/copr.py:633 ++#: plugins/copr.py:637 + msgid "Interact with Playground repository." + msgstr "" + +-#: plugins/copr.py:639 ++#: plugins/copr.py:643 + msgid "Enabling a Playground repository." + msgstr "" + +-#: plugins/copr.py:640 ++#: plugins/copr.py:644 + msgid "Do you want to continue?" + msgstr "" + +-#: plugins/copr.py:683 ++#: plugins/copr.py:687 + msgid "Playground repositories successfully enabled." + msgstr "" + +-#: plugins/copr.py:686 ++#: plugins/copr.py:690 + msgid "Playground repositories successfully disabled." + msgstr "" + +-#: plugins/copr.py:690 ++#: plugins/copr.py:694 + msgid "Playground repositories successfully updated." + msgstr "" + +@@ -541,7 +551,7 @@ msgstr "" + msgid "limit the query to packages of given architectures." + msgstr "" + +-#: plugins/download.py:62 ++#: plugins/download.py:62 plugins/modulesync.py:51 + msgid "resolve and download needed dependencies" + msgstr "" + +@@ -560,7 +570,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 +593,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:261 ++msgid "No match for argument: {}" ++msgstr "" ++ ++#: plugins/groups_manager.py:298 ++msgid "Can't remove packages from non-existent group" ++msgstr "" ++ ++#: plugins/groups_manager.py:307 ++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 +739,103 @@ msgstr "" + msgid "Migrating history data..." + msgstr "" + +-#: plugins/needs_restarting.py:65 ++#: plugins/modulesync.py:37 ++msgid "" ++"Download packages from modules and/or create a repository with modular data" ++msgstr "" ++ ++#: plugins/modulesync.py:44 ++msgid "MODULE" ++msgstr "" ++ ++#: plugins/modulesync.py:45 ++msgid "modules to download" ++msgstr "" ++ ++#: plugins/modulesync.py:47 ++msgid "enable repositories with source packages" ++msgstr "" ++ ++#: plugins/modulesync.py:49 ++msgid "enable repositories with debug-info and debug-source packages" ++msgstr "" ++ ++#: plugins/modulesync.py:53 ++msgid "download only packages from newest modules" ++msgstr "" ++ ++#: plugins/modulesync.py:85 ++msgid "Unable to find a match for argument: '{}'" ++msgid_plural "Unable to find a match for arguments: '{}'" ++msgstr[0] "" ++msgstr[1] "" ++ ++#: plugins/modulesync.py:107 ++msgid "" ++"Creation of repository failed with return code {}. All downloaded content " ++"was kept on the system" ++msgstr "" ++ ++#: plugins/modulesync.py:144 ++#, python-brace-format ++msgid "No match for artifact '{0}' from module '{1}'" ++msgstr "" ++ ++#: plugins/modulesync.py:162 ++#, python-brace-format ++msgid "No match for package name '{0}' in profile {1} from module {2}" ++msgstr "" ++ ++#: plugins/modulesync.py:166 ++msgid "No mach for argument '{}'" ++msgstr "" ++ ++#. TODO(jmracek) Shell we end with an error or with RC 1? ++#: plugins/modulesync.py:198 ++msgid "Unable to satisfy require {}" ++msgstr "" ++ ++#: 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:220 + msgid "determine updated binaries that need restarting" + msgstr "" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:225 + msgid "only consider this user's processes" + msgstr "" + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:227 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" + msgstr "" + + #: plugins/needs_restarting.py:230 ++msgid "only report affected systemd services" ++msgstr "" ++ ++#: plugins/needs_restarting.py:253 + msgid "Core libraries or services have been updated since boot-up:" + msgstr "" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:258 + msgid "Reboot is required to fully utilize these updates." + msgstr "" + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:259 + msgid "More information:" + msgstr "" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:263 + msgid "No core libraries or services have been updated since boot-up." + msgstr "" + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:265 + msgid "Reboot should not be necessary." + msgstr "" + +@@ -666,13 +850,13 @@ msgstr "" + msgid "Bad Transaction State: %s" + msgstr "" + +-#: plugins/post-transaction-actions.py:153 +-#: plugins/post-transaction-actions.py:155 ++#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:159 + #, python-format + msgid "post-transaction-actions: %s" + msgstr "" + +-#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:161 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" + msgstr "" +@@ -843,112 +1027,124 @@ msgstr "" + msgid "Pass either --old or --new, not both!" + msgstr "" + +-#: plugins/repomanage.py:71 ++#: plugins/repomanage.py:89 + msgid "No files to process" + msgstr "" + +-#: plugins/repomanage.py:93 ++#: plugins/repomanage.py:96 + msgid "Could not open {}" + msgstr "" + +-#: plugins/repomanage.py:177 ++#: plugins/repomanage.py:180 + msgid "Print the older packages" + msgstr "" + +-#: plugins/repomanage.py:179 ++#: plugins/repomanage.py:182 + msgid "Print the newest packages" + msgstr "" + +-#: plugins/repomanage.py:181 ++#: plugins/repomanage.py:184 + msgid "Space separated output, not newline" + msgstr "" + +-#: plugins/repomanage.py:183 ++#: plugins/repomanage.py:186 + msgid "Newest N packages to keep - defaults to 1" + msgstr "" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:189 + 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 "download only 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 "" +@@ -957,64 +1153,68 @@ msgstr "" + msgid "New leaves:" + msgstr "" + +-#: plugins/versionlock.py:32 ++#: plugins/versionlock.py:33 + #, python-format + msgid "Unable to read version lock configuration: %s" + msgstr "" + +-#: plugins/versionlock.py:33 ++#: plugins/versionlock.py:34 + msgid "Locklist not set" + msgstr "" + +-#: plugins/versionlock.py:34 ++#: plugins/versionlock.py:35 + msgid "Adding versionlock on:" + msgstr "" + +-#: plugins/versionlock.py:35 ++#: plugins/versionlock.py:36 + msgid "Adding exclude on:" + msgstr "" + +-#: plugins/versionlock.py:36 ++#: plugins/versionlock.py:37 + msgid "Package already locked in equivalent form:" + msgstr "" + +-#: plugins/versionlock.py:37 ++#: plugins/versionlock.py:38 + msgid "Package {} is already locked" + msgstr "" + +-#: plugins/versionlock.py:38 ++#: plugins/versionlock.py:39 + msgid "Package {} is already excluded" + msgstr "" + +-#: plugins/versionlock.py:39 ++#: plugins/versionlock.py:40 + msgid "Deleting versionlock for:" + msgstr "" + +-#: plugins/versionlock.py:40 ++#: plugins/versionlock.py:41 + msgid "No package found for:" + msgstr "" + +-#: plugins/versionlock.py:41 ++#: plugins/versionlock.py:42 + msgid "Excludes from versionlock plugin were not applied" + msgstr "" + +-#: plugins/versionlock.py:42 ++#: plugins/versionlock.py:43 + msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" + msgstr "" + +-#: plugins/versionlock.py:43 ++#: plugins/versionlock.py:44 + msgid "" + "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" + msgstr "" + +-#: plugins/versionlock.py:44 ++#: plugins/versionlock.py:45 + msgid "Versionlock plugin: could not parse pattern:" + msgstr "" + +-#: plugins/versionlock.py:130 ++#: plugins/versionlock.py:134 + msgid "control package version locks" + msgstr "" + +-#: plugins/versionlock.py:136 ++#: plugins/versionlock.py:140 + msgid "Use package specifications as they are, do not try to parse them" + msgstr "" ++ ++#: plugins/versionlock.py:160 ++msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." ++msgstr "" +diff --git a/po/fr.po b/po/fr.po +index dfa06ad..f70bfb2 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -3,23 +3,26 @@ + # José Fournier , 2017. #zanata + # Jérôme Fenal , 2017. #zanata + # Jean-Baptiste Holcroft , 2018. #zanata, 2020. +-# Ludek Janda , 2018. #zanata ++# Ludek Janda , 2018. #zanata, 2021, 2022. + # Jean-Baptiste Holcroft , 2019. #zanata, 2020. + # Julien Humbert , 2020. ++# Sundeep Anand , 2021. ++# Transtats , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-07-09 13:27+0000\n" +-"Last-Translator: Julien Humbert \n" +-"Language-Team: French \n" ++"POT-Creation-Date: 2022-02-28 11:53+0100\n" ++"PO-Revision-Date: 2022-03-09 12:39+0000\n" ++"Last-Translator: Ludek Janda \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.11.2\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +@@ -40,8 +43,7 @@ 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" ++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" +@@ -60,8 +62,7 @@ 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) ++#. 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'" +@@ -150,45 +151,45 @@ msgstr "Liste tous les changements" + msgid "Changelogs for {}" + msgstr "Changements pour {}" + +-#: plugins/config_manager.py:37 ++#: plugins/config_manager.py:38 + #, 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:45 + msgid "repo to modify" + msgstr "dépôt à modifier" + +-#: plugins/config_manager.py:47 ++#: plugins/config_manager.py:48 + 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:51 + 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:54 + 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:57 + msgid "print variable values to stdout" + msgstr "affiche les valeurs des variables sur la sortie standard" + +-#: plugins/config_manager.py:60 ++#: plugins/config_manager.py:61 + msgid "enable repos (automatically saves)" + msgstr "activer les dépôts (enregistre automatiquement)" + +-#: plugins/config_manager.py:63 ++#: plugins/config_manager.py:64 + msgid "disable repos (automatically saves)" + msgstr "désactiver les dépôts (enregistre automatiquement)" + +-#: plugins/config_manager.py:77 ++#: plugins/config_manager.py:78 + msgid "one of the following arguments is required: {}" + msgstr "un des paramètres suivants est nécessaire : {}" + +-#: plugins/config_manager.py:86 ++#: plugins/config_manager.py:87 + msgid "" + "Warning: --enablerepo/--disablerepo arguments have no meaningwith config " + "manager. Use --set-enabled/--set-disabled instead." +@@ -197,48 +198,48 @@ msgstr "" + "signification avec le gestionnaire de configuration. Utilisez plutôt --set-" + "enabled/--set-disabled." + +-#: plugins/config_manager.py:131 ++#: plugins/config_manager.py:132 + #, python-format + msgid "No matching repo to modify: %s." + msgstr "Aucun dépôt correspondant à modifier : %s." + +-#: plugins/config_manager.py:182 ++#: plugins/config_manager.py:183 + #, python-format + msgid "Adding repo from: %s" + msgstr "Ajout du dépôt depuis : %s" + +-#: plugins/config_manager.py:206 ++#: plugins/config_manager.py:207 + 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:216 ++#: plugins/config_manager.py:217 + #, 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/copr.py:59 ++#: plugins/copr.py:64 + msgid "y" + msgstr "o" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "yes" + msgstr "oui" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "n" + msgstr "n" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "no" + msgstr "non" + +-#: plugins/copr.py:79 ++#: plugins/copr.py:84 + msgid "Interact with Copr repositories." + msgstr "Interagit avec les dépôts Copr." + +-#: plugins/copr.py:81 ++#: plugins/copr.py:86 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -276,57 +277,69 @@ msgstr "" + " copr search tests\n" + " " + +-#: plugins/copr.py:107 ++#: plugins/copr.py:112 + msgid "List all installed Copr repositories (default)" + msgstr "Lister tous les dépôts Copr installés (par défaut)" + +-#: plugins/copr.py:109 ++#: plugins/copr.py:114 + msgid "List enabled Copr repositories" + msgstr "Lister les dépôts Copr activés" + +-#: plugins/copr.py:111 ++#: plugins/copr.py:116 + msgid "List disabled Copr repositories" + msgstr "Lister les dépôts Copr désactivés" + +-#: plugins/copr.py:113 ++#: plugins/copr.py:118 + msgid "List available Copr repositories by user NAME" + msgstr "Lister les dépôts Copr disponibles par NOM d’utilisateur" + +-#: plugins/copr.py:115 ++#: plugins/copr.py:120 + msgid "Specify an instance of Copr to work with" + msgstr "Précisez une instance Copr avec laquelle travailler" + +-#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 ++#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 + msgid "Error: " + msgstr "Erreur : " + +-#: plugins/copr.py:150 ++#: plugins/copr.py:155 + msgid "" +-"specify Copr hub either with `--hub` or using " +-"`copr_hub/copr_username/copr_projectname` format" ++"specify Copr hub either with `--hub` or using `copr_hub/copr_username/" ++"copr_projectname` format" + msgstr "" +-"précisez un hub Copr soit via `--hub` ou en utilisant le format " +-"`hub_copr/utilisateur_copr/projet_copr`" ++"précisez un hub Copr soit via `--hub` ou en utilisant le format `hub_copr/" ++"utilisateur_copr/projet_copr`" + +-#: plugins/copr.py:153 ++#: plugins/copr.py:158 + msgid "multiple hubs specified" + msgstr "de multiples hubs ont été renseignés" + +-#: plugins/copr.py:218 plugins/copr.py:222 ++#: plugins/copr.py:223 plugins/copr.py:227 + msgid "exactly two additional parameters to copr command are required" + msgstr "la commande copr requiert exactement deux paramètres additionnels" + +-#: plugins/copr.py:238 ++#: plugins/copr.py:232 ++msgid "Too many arguments." ++msgstr "Trop d'arguments." ++ ++#: plugins/copr.py:235 ++msgid "" ++"Bad format of optional chroot. The format is distribution-version-" ++"architecture." ++msgstr "" ++"Mauvais format du chroot optionnel. Le format est distribution-version-" ++"architecture." ++ ++#: plugins/copr.py:250 + msgid "use format `copr_username/copr_projectname` to reference copr project" + msgstr "" + "utilisez le format `copr_username/copr_projectname` pour faire référence au " + "projet copr" + +-#: plugins/copr.py:240 ++#: plugins/copr.py:252 + msgid "bad copr project format" + msgstr "mauvais format de projet copr" + +-#: plugins/copr.py:254 ++#: plugins/copr.py:266 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -334,7 +347,8 @@ msgid "" + "\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" ++",\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" +@@ -346,83 +360,85 @@ msgstr "" + "\n" + "Le projet Fedora n’exerce aucun pouvoir sur le contenu de ce dépôt au delà\n" + "des règles précisées dans la FAQ Copr \n" +-",\n" ++",\n" + "et les paquets ne sont tenus à aucun niveau de qualité ou de sécurité.\n" + "\n" +-"Veuillez ne pas signaler de bogues à propos de ces paquets dans le Bugzilla de Fedora.\n" ++"Veuillez ne pas signaler de bogues à propos de ces paquets dans le Bugzilla " ++"de Fedora.\n" + "En cas de problèmes, contactez le propriétaire de ce dépôt.\n" + +-#: plugins/copr.py:271 ++#: plugins/copr.py:283 + msgid "Repository successfully enabled." + msgstr "Activation du dépôt réussie." + +-#: plugins/copr.py:276 ++#: plugins/copr.py:288 + msgid "Repository successfully disabled." + msgstr "Désactivation du dépôt réussie." + +-#: plugins/copr.py:280 ++#: plugins/copr.py:292 + msgid "Repository successfully removed." + msgstr "Suppression du dépôt réussie." + +-#: plugins/copr.py:284 plugins/copr.py:693 ++#: plugins/copr.py:296 plugins/copr.py:697 + msgid "Unknown subcommand {}." + msgstr "Sous-commande inconnue {}." + +-#: plugins/copr.py:341 ++#: plugins/copr.py:353 + 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 " ++"* 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/copr.py:353 ++#: plugins/copr.py:366 + msgid "Can't parse repositories for username '{}'." + msgstr "" + "Ne peut analyser les dépôts pour y chercher le nom d’utilisateur « {} »." + +-#: plugins/copr.py:356 ++#: plugins/copr.py:369 + msgid "List of {} coprs" + msgstr "Liste de {} coprs" + +-#: plugins/copr.py:364 ++#: plugins/copr.py:374 + msgid "No description given" + msgstr "Aucune description fournie" + +-#: plugins/copr.py:376 ++#: plugins/copr.py:386 + msgid "Can't parse search for '{}'." + msgstr "Impossible d’analyser la recherche pour « {} »." + +-#: plugins/copr.py:379 ++#: plugins/copr.py:389 + msgid "Matched: {}" + msgstr "Correspondance : {}" + +-#: plugins/copr.py:387 ++#: plugins/copr.py:394 + msgid "No description given." + msgstr "Pas de description fournie." + +-#: plugins/copr.py:410 ++#: plugins/copr.py:416 + msgid "Safe and good answer. Exiting." + msgstr "Réponse sûre et exacte. Fin." + +-#: plugins/copr.py:417 ++#: plugins/copr.py:423 + msgid "This command has to be run under the root user." + msgstr "Cette commande requiert les privilèges du super utilisateur." + +-#: plugins/copr.py:481 ++#: plugins/copr.py:485 + msgid "" + "This repository does not have any builds yet so you cannot enable it now." + msgstr "" + "Ce dépôt ne contient pas encore d’exécutables vous ne pouvez donc pas " + "l’activer." + +-#: plugins/copr.py:484 ++#: plugins/copr.py:488 + msgid "Such repository does not exist." + msgstr "Ce dépôt n’existe pas." + +-#: plugins/copr.py:528 ++#: plugins/copr.py:532 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -451,44 +467,44 @@ msgstr "" + "\n" + "Ces dépôts ont été activés automatiquement." + +-#: plugins/copr.py:549 ++#: plugins/copr.py:553 + msgid "Do you want to keep them enabled?" + msgstr "Souhaitez-vous les maintenir activés ?" + +-#: plugins/copr.py:582 ++#: plugins/copr.py:586 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" + msgstr "Échec de la suppression du dépôt Copr {0}/{1}/{2}" + +-#: plugins/copr.py:593 ++#: plugins/copr.py:597 + msgid "Failed to disable copr repo {}/{}" + msgstr "Échec de la désactivation du dépôt copr {}/{}" + +-#: plugins/copr.py:611 plugins/copr.py:648 ++#: plugins/copr.py:615 plugins/copr.py:652 + msgid "Unknown response from server." + msgstr "Réponse inconnue du serveur." + +-#: plugins/copr.py:633 ++#: plugins/copr.py:637 + msgid "Interact with Playground repository." + msgstr "Interagit avec le dépôt Playground." + +-#: plugins/copr.py:639 ++#: plugins/copr.py:643 + msgid "Enabling a Playground repository." + msgstr "Activation d’un dépôt Playground." + +-#: plugins/copr.py:640 ++#: plugins/copr.py:644 + msgid "Do you want to continue?" + msgstr "Souhaitez-vous continuer ?" + +-#: plugins/copr.py:683 ++#: plugins/copr.py:687 + msgid "Playground repositories successfully enabled." + msgstr "Activation des dépôts Playground réussie." + +-#: plugins/copr.py:686 ++#: plugins/copr.py:690 + msgid "Playground repositories successfully disabled." + msgstr "Désactivation des dépôts Playground réussie." + +-#: plugins/copr.py:690 ++#: plugins/copr.py:694 + msgid "Playground repositories successfully updated." + msgstr "Mise à jour des dépôts Playground réussie." + +@@ -574,8 +590,7 @@ msgstr "" + msgid "" + "Could not find debugsource package for the following available packages: %s" + msgstr "" +-"Impossible de trouver le paquet debugsource pour ces paquets disponibles : " +-"%s" ++"Impossible de trouver le paquet debugsource pour ces paquets disponibles : %s" + + #: plugins/debuginfo-install.py:190 + #, python-format +@@ -619,7 +634,7 @@ msgstr "télécharge plutôt le paquet -debugsource" + 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 plugins/modulesync.py:51 + msgid "resolve and download needed dependencies" + msgstr "résout et télécharge les dépendances nécessaires" + +@@ -642,7 +657,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 +680,125 @@ 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 invalide" ++ ++#: plugins/groups_manager.py:58 ++msgid "Invalid translated data, should be in form 'lang:text'" ++msgstr "Données traduites invalides, doivent être au format « lang : text »" ++ ++#: plugins/groups_manager.py:61 ++msgid "Invalid/empty language for translated data" ++msgstr "Langue non valide / vide pour les données traduites" ++ ++#: plugins/groups_manager.py:71 ++msgid "Can't generate group id from '{}'. Please specify group id using --id." ++msgstr "" ++"Impossible de générer l'id du groupe à partir de «{}». Veuillez spécifier " ++"l'id du groupe en utilisant --id." ++ ++#: 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 des métadonnées de groupes à partir d'un 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 "charge et enregistre les métadonnées des groupes dans un fichier" ++ ++#: plugins/groups_manager.py:97 ++msgid "print the result metadata to stdout" ++msgstr "affiche les métadonnées du résultat sur la sortie standard" ++ ++#: plugins/groups_manager.py:100 ++msgid "group id" ++msgstr "id du 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 du groupe" ++ ++#: 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 "ajoute les paquets à la section obligatoire" ++ ++#: plugins/groups_manager.py:125 ++msgid "add packages to the optional section" ++msgstr "ajoute les paquets à la section optionnelle" ++ ++#: plugins/groups_manager.py:127 ++msgid "remove packages from the group instead of adding them" ++msgstr "supprime les paquets du groupe au lieu de les ajouter" ++ ++#: plugins/groups_manager.py:129 ++msgid "include also direct dependencies for packages" ++msgstr "inclus également les dépendances directes pour les paquets" ++ ++#: plugins/groups_manager.py:132 ++msgid "package specification" ++msgstr "spécification du paquet" ++ ++#: plugins/groups_manager.py:156 ++msgid "Can't edit group without specifying it (use --id or --name)" ++msgstr "" ++"Un groupe ne peut pas être édité sans le spécifier (utilisez --id ou --name)" ++ ++#: 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:261 ++msgid "No match for argument: {}" ++msgstr "Aucune correspondance pour l’argument : {}" ++ ++#: plugins/groups_manager.py:298 ++msgid "Can't remove packages from non-existent group" ++msgstr "Les paquets ne peuvent pas être retirés d'un groupe qui n'existe pas" ++ ++#: plugins/groups_manager.py:307 ++msgid "" ++"Group id '{}' generated from '{}' is duplicit. Please specify group id using " ++"--id." ++msgstr "" ++"L'id du groupe « {} » qui a été généré pour « {} » est en double. Veuillez " ++"le spécifier en utilisant --id." ++ + #: plugins/leaves.py:32 + msgid "List installed packages not required by any other package" + msgstr "" +@@ -698,7 +832,69 @@ 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/modulesync.py:37 ++msgid "" ++"Download packages from modules and/or create a repository with modular data" ++msgstr "" ++"Télécharger les paquets des modules et/ou créer un référentiel avec les " ++"données des modules" ++ ++#: plugins/modulesync.py:44 ++msgid "MODULE" ++msgstr "MODULE" ++ ++#: plugins/modulesync.py:45 ++msgid "modules to download" ++msgstr "modules à télécharger" ++ ++#: plugins/modulesync.py:47 ++msgid "enable repositories with source packages" ++msgstr "activer les dépôts avec les paquets sources" ++ ++#: plugins/modulesync.py:49 ++msgid "enable repositories with debug-info and debug-source packages" ++msgstr "activer les dépôts avec les paquets debug-info et debug-source" ++ ++#: plugins/modulesync.py:53 ++msgid "download only packages from newest modules" ++msgstr "télécharger uniquement les paquets des modules les plus récents" ++ ++#: plugins/modulesync.py:85 ++msgid "Unable to find a match for argument: '{}'" ++msgid_plural "Unable to find a match for arguments: '{}'" ++msgstr[0] "Impossible de trouver une correspondance pour l'argument : '{}'" ++msgstr[1] "Impossible de trouver une correspondance pour les arguments : '{}'" ++ ++#: plugins/modulesync.py:107 ++msgid "" ++"Creation of repository failed with return code {}. All downloaded content " ++"was kept on the system" ++msgstr "" ++"La création du référentiel a échoué avec le code de retour {}. Tout le " ++"contenu téléchargé a été conservé sur le système" ++ ++#: plugins/modulesync.py:144 ++#, python-brace-format ++msgid "No match for artifact '{0}' from module '{1}'" ++msgstr "Aucune correspondance pour l'artefact '{0}' du module '{1}'" ++ ++#: plugins/modulesync.py:162 ++#, python-brace-format ++msgid "No match for package name '{0}' in profile {1} from module {2}" ++msgstr "" ++"Aucune correspondance pour le nom de paquet '{0}' dans le profil {1} du " ++"module {2}" ++ ++#: plugins/modulesync.py:166 ++msgid "No mach for argument '{}'" ++msgstr "Pas de correspondance pour l'argument '{}'" ++ ++#. TODO(jmracek) Shell we end with an error or with RC 1? ++#: plugins/modulesync.py:198 ++msgid "Unable to satisfy require {}" ++msgstr "Impossible de satisfaire le besoin {}" ++ ++#: plugins/needs_restarting.py:66 + #, python-brace-format + msgid "" + "No installed package found for package name \"{pkg}\" specified in needs-" +@@ -707,15 +903,15 @@ 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:220 + 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:225 + 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:227 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" + msgstr "" +@@ -723,28 +919,32 @@ msgstr "" + "(exit code 0)" + + #: plugins/needs_restarting.py:230 ++msgid "only report affected systemd services" ++msgstr "signaler uniquement les services systemd affectés" ++ ++#: plugins/needs_restarting.py:253 + 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:258 + 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:259 + msgid "More information:" + msgstr "Plus d’information :" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:263 + 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:265 + msgid "Reboot should not be necessary." + msgstr "Un nouveau démarrage ne devrait pas être utile." + +@@ -759,13 +959,13 @@ msgstr "Mauvaise ligne d’action « %s » : %s" + msgid "Bad Transaction State: %s" + msgstr "Mauvais état de transaction : %s" + +-#: plugins/post-transaction-actions.py:153 +-#: plugins/post-transaction-actions.py:155 ++#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:159 + #, python-format + msgid "post-transaction-actions: %s" + msgstr "post-transaction-actions : %s" + +-#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:161 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" + msgstr "post-transaction-actions : mauvaise commande « %s » : %s" +@@ -822,11 +1022,10 @@ msgstr "Affichez des données supplémentaires sur la taille des changements." + + #: plugins/repodiff.py:69 + msgid "" +-"Compare packages also by arch. By default packages are compared just by " +-"name." ++"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." ++"Compare également les paquets par architecture. Par défaut, les paquets sont " ++"uniquement comparés par nom." + + #: plugins/repodiff.py:72 + msgid "Output a simple one line message for modified packages." +@@ -953,119 +1152,133 @@ msgstr "Gère un dossier de paquets rpm" + msgid "Pass either --old or --new, not both!" + msgstr "Passez soit --old, soit --new, mais pas les deux !" + +-#: plugins/repomanage.py:71 ++#: plugins/repomanage.py:89 + msgid "No files to process" + msgstr "Aucun fichier à traiter" + +-#: plugins/repomanage.py:93 ++#: plugins/repomanage.py:96 + msgid "Could not open {}" + msgstr "Ouverture de {} impossible" + +-#: plugins/repomanage.py:177 ++#: plugins/repomanage.py:180 + msgid "Print the older packages" + msgstr "Afficher les paquets plus anciens" + +-#: plugins/repomanage.py:179 ++#: plugins/repomanage.py:182 + msgid "Print the newest packages" + msgstr "Afficher les paquets les plus récents" + +-#: plugins/repomanage.py:181 ++#: plugins/repomanage.py:184 + 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 ++#: plugins/repomanage.py:186 + 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 ++#: plugins/repomanage.py:189 + 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 "" ++"Retire les paquets qui ont échoué la vérification de la signature GPG après " ++"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." ++"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." ++"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 "download only source packages" ++msgstr "télécharger uniquement les packages sources" ++ ++#: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" + msgstr "" + "Uniquement lister les URL qui seraient téléchargées, ne pas télécharger" + +-#: 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 de « {} » : {}" ++ + #: plugins/reposync.py:175 ++msgid "GPG signature check failed." ++msgstr "La vérification de la signature GPG a échoué." ++ ++#: plugins/reposync.py:196 + msgid "Download target '{}' is outside of download path '{}'." + msgstr "" + "La cible de téléchargement « {} » est en dehors du chemin de téléchargement " + "« {} »." + +-#: 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é" +@@ -1074,73 +1287,80 @@ msgstr "comps.xml pour le dépôt %s sauvegardé" + msgid "New leaves:" + msgstr "Nouvelles feuilles :" + +-#: plugins/versionlock.py:32 ++#: plugins/versionlock.py:33 + #, python-format + msgid "Unable to read version lock configuration: %s" + msgstr "Ne peut lire la configuration du verrouillage de version : %s" + +-#: plugins/versionlock.py:33 ++#: plugins/versionlock.py:34 + msgid "Locklist not set" + msgstr "Liste des verrouillages non établie" + +-#: plugins/versionlock.py:34 ++#: plugins/versionlock.py:35 + msgid "Adding versionlock on:" + msgstr "Verrouille la version de :" + +-#: plugins/versionlock.py:35 ++#: plugins/versionlock.py:36 + msgid "Adding exclude on:" + msgstr "Exclusion de :" + +-#: plugins/versionlock.py:36 ++#: plugins/versionlock.py:37 + msgid "Package already locked in equivalent form:" + msgstr "Paquet déjà verrouillé sous une forme équivalente :" + +-#: plugins/versionlock.py:37 ++#: plugins/versionlock.py:38 + msgid "Package {} is already locked" + msgstr "Le paquet {} est déjà verrouillé" + +-#: plugins/versionlock.py:38 ++#: plugins/versionlock.py:39 + msgid "Package {} is already excluded" + msgstr "Le paquet {} est déjà exclu" + +-#: plugins/versionlock.py:39 ++#: plugins/versionlock.py:40 + msgid "Deleting versionlock for:" + msgstr "Déverrouille la version de :" + +-#: plugins/versionlock.py:40 ++#: plugins/versionlock.py:41 + msgid "No package found for:" + msgstr "Aucun paquet trouvé pour :" + +-#: plugins/versionlock.py:41 ++#: plugins/versionlock.py:42 + msgid "Excludes from versionlock plugin were not applied" + msgstr "Les exclusions du plugin versionlock n’ont pas été appliquées" + +-#: plugins/versionlock.py:42 ++#: plugins/versionlock.py:43 + msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" + msgstr "" + "Plugin versionlock : nombre de règles de verrouillage du fichier \"{}\" " + "appliquées : {}" + +-#: plugins/versionlock.py:43 +-msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" ++#: plugins/versionlock.py:44 ++msgid "" ++"Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" + msgstr "" + "Plugin versionlock : nombre de règles d’exclusion du fichier \"{}\" " + "appliquées : {}" + +-#: plugins/versionlock.py:44 ++#: plugins/versionlock.py:45 + msgid "Versionlock plugin: could not parse pattern:" + msgstr "Plugin versionlock : n’a pas pu analyser le modèle :" + +-#: plugins/versionlock.py:130 ++#: plugins/versionlock.py:134 + msgid "control package version locks" + msgstr "contrôle le verrouillage de version des paquets" + +-#: plugins/versionlock.py:136 ++#: plugins/versionlock.py:140 + 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/versionlock.py:160 ++msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." ++msgstr "" ++"La sous-commande '{}' est obsolète. Utilisez plutôt la sous-commande " ++"'exclude'." ++ + #~ msgid "" + #~ "\n" + #~ "These repositories have been enabled automatically.\n" +diff --git a/po/ja.po b/po/ja.po +index 5e443ec..c5c4691 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -1,20 +1,23 @@ + # Ooyama Yosiyuki , 2015. #zanata +-# Ludek Janda , 2018. #zanata ++# Ludek Janda , 2018. #zanata, 2021. + # Casey Jones , 2020. ++# Sundeep Anand , 2021. ++# Transtats , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-05-04 06:40+0000\n" +-"Last-Translator: Casey Jones \n" +-"Language-Team: Japanese \n" ++"POT-Creation-Date: 2022-02-28 11:53+0100\n" ++"PO-Revision-Date: 2022-03-09 12:39+0000\n" ++"Last-Translator: Transtats \n" ++"Language-Team: Japanese \n" + "Language: ja\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.0.3\n" ++"X-Generator: Weblate 4.11.2\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +@@ -35,7 +38,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" +@@ -54,8 +57,7 @@ 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) ++#. 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'" +@@ -64,7 +66,8 @@ msgstr "インストール用の一致するパッケージがありません: ' + #: plugins/builddep.py:191 + #, python-format + msgid "Failed to open: '%s', not a valid source rpm file." +-msgstr "開くことに失敗しました: '%s'、有効なソース rpm ファイルではありません。" ++msgstr "" ++"開くことに失敗しました: '%s'、有効なソース rpm ファイルではありません。" + + #: plugins/builddep.py:204 plugins/builddep.py:220 plugins/builddep.py:237 + msgid "Not all dependencies satisfied" +@@ -83,31 +86,35 @@ 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 "" ++"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,109 +123,113 @@ 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 "" ++"パッケージのインストールされたバージョン以降の新しい changelogs のみを一覧表" ++"示します" + + #: plugins/changelog.py:118 + msgid "Listing all changelogs" +-msgstr "" ++msgstr "すべての changelogs を一覧表示します" + + #: plugins/changelog.py:122 + msgid "Changelogs for {}" + msgstr "{} の Changelogs" + +-#: plugins/config_manager.py:37 ++#: plugins/config_manager.py:38 + #, python-brace-format + msgid "manage {prog} configuration options and repositories" +-msgstr "" ++msgstr "{prog} 設定オプションおよびリポジトリーを管理します" + +-#: plugins/config_manager.py:44 ++#: plugins/config_manager.py:45 + msgid "repo to modify" + msgstr "修正する repo" + +-#: plugins/config_manager.py:47 ++#: plugins/config_manager.py:48 + msgid "save the current options (useful with --setopt)" + msgstr "現在のオプションを保存 (--setopt で有用)" + +-#: plugins/config_manager.py:50 ++#: plugins/config_manager.py:51 + msgid "add (and enable) the repo from the specified file or url" + msgstr "指定されたファイルまたは url から repo を追加 (および有効化)" + +-#: plugins/config_manager.py:53 ++#: plugins/config_manager.py:54 + msgid "print current configuration values to stdout" + msgstr "stdout に現在の設定値を印刷" + +-#: plugins/config_manager.py:56 ++#: plugins/config_manager.py:57 + msgid "print variable values to stdout" + msgstr "stdout に変数値を印刷" + +-#: plugins/config_manager.py:60 ++#: plugins/config_manager.py:61 + msgid "enable repos (automatically saves)" +-msgstr "" ++msgstr "レポを有効にする (自動保存)" + +-#: plugins/config_manager.py:63 ++#: plugins/config_manager.py:64 + msgid "disable repos (automatically saves)" +-msgstr "" ++msgstr "レポを無効にする (自動保存)" + +-#: plugins/config_manager.py:77 ++#: plugins/config_manager.py:78 + msgid "one of the following arguments is required: {}" +-msgstr "" ++msgstr "以下のいずれかの引数が必要です。{}" + +-#: plugins/config_manager.py:86 ++#: plugins/config_manager.py:87 + 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 ++#: plugins/config_manager.py:132 + #, python-format + msgid "No matching repo to modify: %s." + msgstr "修正用の一致する repo はありません: %s." + +-#: plugins/config_manager.py:182 ++#: plugins/config_manager.py:183 + #, python-format + msgid "Adding repo from: %s" + msgstr "repo の追加: %s" + +-#: plugins/config_manager.py:206 ++#: plugins/config_manager.py:207 + msgid "Configuration of repo failed" + msgid_plural "Configuration of repos failed" + msgstr[0] "repo の設定に失敗しました" + +-#: plugins/config_manager.py:216 ++#: plugins/config_manager.py:217 + #, python-format + msgid "Could not save repo to repofile %s: %s" + msgstr "repofile %s に repo を保存できませんでした: %s" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "y" + msgstr "y" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "yes" + msgstr "はい" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "n" + msgstr "n" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "no" + msgstr "いいえ" + +-#: plugins/copr.py:79 ++#: plugins/copr.py:84 + msgid "Interact with Copr repositories." + msgstr "Copr リポジトリーとの対話。" + +-#: plugins/copr.py:81 ++#: plugins/copr.py:86 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -246,7 +257,7 @@ msgstr "" + " list --available-by-user=NAME\n" + " search project\n" + "\n" +-" Examples:\n" ++" 例:\n" + " copr enable rhscl/perl516 epel-6-x86_64\n" + " copr enable ignatenkobrain/ocltoys\n" + " copr disable rhscl/perl516\n" +@@ -256,53 +267,69 @@ msgstr "" + " copr search tests\n" + " " + +-#: plugins/copr.py:107 ++#: plugins/copr.py:112 + msgid "List all installed Copr repositories (default)" +-msgstr "インストール済みのすべての Copr リポジトリーを一覧表示します (デフォルト)" ++msgstr "" ++"インストール済みのすべての Copr リポジトリーを一覧表示します (デフォルト)" + +-#: plugins/copr.py:109 ++#: plugins/copr.py:114 + msgid "List enabled Copr repositories" + msgstr "有効化された Copr リポジトリーを一覧表示します" + +-#: plugins/copr.py:111 ++#: plugins/copr.py:116 + msgid "List disabled Copr repositories" + msgstr "無効化された Copr リポジトリーを一覧表示します" + +-#: plugins/copr.py:113 ++#: plugins/copr.py:118 + msgid "List available Copr repositories by user NAME" + msgstr "利用可能な Copr リポジトリーをユーザー NAME ごとに一覧表示します" + +-#: plugins/copr.py:115 ++#: plugins/copr.py:120 + msgid "Specify an instance of Copr to work with" +-msgstr "" ++msgstr "作業する Copr のインスタンスを指定します" + +-#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 ++#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 + msgid "Error: " + msgstr "エラー: " + +-#: plugins/copr.py:150 ++#: plugins/copr.py:155 + msgid "" +-"specify Copr hub either with `--hub` or using " +-"`copr_hub/copr_username/copr_projectname` format" ++"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 ++#: plugins/copr.py:158 + msgid "multiple hubs specified" +-msgstr "" ++msgstr "複数のハブが指定されています" + +-#: plugins/copr.py:218 plugins/copr.py:222 ++#: plugins/copr.py:223 plugins/copr.py:227 + msgid "exactly two additional parameters to copr command are required" + msgstr "copr コマンドに厳密に 2 つの追加パラメーターが必要です" + +-#: plugins/copr.py:238 ++#: plugins/copr.py:232 ++msgid "Too many arguments." ++msgstr "引数が多すぎます。" ++ ++#: plugins/copr.py:235 ++msgid "" ++"Bad format of optional chroot. The format is distribution-version-" ++"architecture." ++msgstr "オプションの chroot の形式が無効です。正しい形式は distribution-version-" ++"architecture です。" ++ ++#: plugins/copr.py:250 + msgid "use format `copr_username/copr_projectname` to reference copr project" +-msgstr "copr プロジェクトを参照するには `copr_username/copr_projectname` 形式を使用します" ++msgstr "" ++"copr プロジェクトを参照するには `copr_username/copr_projectname` 形式を使用し" ++"ます" + +-#: plugins/copr.py:240 ++#: plugins/copr.py:252 + msgid "bad copr project format" + msgstr "不正な copr プロジェクト形式" + +-#: plugins/copr.py:254 ++#: plugins/copr.py:266 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -310,78 +337,96 @@ msgid "" + "\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" ++",\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" ++"\n" ++"Fedora Project は、このリポジトリーのコンテンツに関して、 の \n" ++"Copr FAQ で示されたルールを超えて権利を行使することは\n" ++"ありません。また、パッケージは、任意の品質またはセキュリ\n" ++"ティーレベルを固守していません。\n" ++"\n" ++"Fedora Bugzilla でこれらのパッケージに関するバグ報告をしないでください。\n" ++"問題が発生した場合は、このリポジトリーのオーナーに連絡してください。\n" + +-#: plugins/copr.py:271 ++#: plugins/copr.py:283 + msgid "Repository successfully enabled." + msgstr "リポジトリが正常に有効化されました。" + +-#: plugins/copr.py:276 ++#: plugins/copr.py:288 + msgid "Repository successfully disabled." + msgstr "リポジトリが正常に無効化されました。" + +-#: plugins/copr.py:280 ++#: plugins/copr.py:292 + msgid "Repository successfully removed." + msgstr "リポジトリーが正常に削除されました。" + +-#: plugins/copr.py:284 plugins/copr.py:693 ++#: plugins/copr.py:296 plugins/copr.py:697 + msgid "Unknown subcommand {}." + msgstr "不明なサブコマンド {}。" + +-#: plugins/copr.py:341 ++#: plugins/copr.py:353 + 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 " ++"* 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:353 ++#: plugins/copr.py:366 + msgid "Can't parse repositories for username '{}'." + msgstr "ユーザー名 '{}' のリポジトリーを解析できません。" + +-#: plugins/copr.py:356 ++#: plugins/copr.py:369 + msgid "List of {} coprs" + msgstr "{} coprs の一覧" + +-#: plugins/copr.py:364 ++#: plugins/copr.py:374 + msgid "No description given" + msgstr "説明がありません" + +-#: plugins/copr.py:376 ++#: plugins/copr.py:386 + msgid "Can't parse search for '{}'." + msgstr "'{}' の検索を解析できません。" + +-#: plugins/copr.py:379 ++#: plugins/copr.py:389 + msgid "Matched: {}" + msgstr "一致: {}" + +-#: plugins/copr.py:387 ++#: plugins/copr.py:394 + msgid "No description given." + msgstr "説明が与えられていません。" + +-#: plugins/copr.py:410 ++#: plugins/copr.py:416 + msgid "Safe and good answer. Exiting." + msgstr "安全で優れた回答。終了中。" + +-#: plugins/copr.py:417 ++#: plugins/copr.py:423 + msgid "This command has to be run under the root user." + msgstr "このコマンドは root ユーザーの下で実行する必要があります。" + +-#: plugins/copr.py:481 ++#: plugins/copr.py:485 + msgid "" + "This repository does not have any builds yet so you cannot enable it now." +-msgstr "このリポジトリーにはまだビルドがありませんので、今すぐ有効化できません。" ++msgstr "" ++"このリポジトリーにはまだビルドがありませんので、今すぐ有効化できません。" + +-#: plugins/copr.py:484 ++#: plugins/copr.py:488 + msgid "Such repository does not exist." + msgstr "そのようなリポジトリーは存在しません。" + +-#: plugins/copr.py:528 ++#: plugins/copr.py:532 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -397,47 +442,58 @@ msgid "" + "\n" + "These repositories have been enabled automatically." + msgstr "" ++"有効化した Copr リポジトリーの管理者は\n" ++"他のリポジトリーに依存するように決めました。\n" ++"そのようなリポジトリーは通常、主な Corp " ++"レジストリー(ランタイム依存関係を提供) から RPM を\n" ++"正常にインストールするために必要です。\n" ++"\n" ++"上記の品質とバグ報告についての注意点がここでも適用\n" ++"されますが、Fedora Project は内容を管理していないことに\n" ++"注意してください。以下のリストを確認してください。\n" ++"\n" ++"{0}\n" ++"\n" ++"これらのリポジトリーは自動的に有効になっています。" + +-#: plugins/copr.py:549 ++#: plugins/copr.py:553 + msgid "Do you want to keep them enabled?" +-msgstr "" ++msgstr "有効にしておきますか?" + +-#: plugins/copr.py:582 ++#: plugins/copr.py:586 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" +-msgstr "" ++msgstr "copr repo {0}/{1}/{2} の削除に失敗しました" + +-#: plugins/copr.py:593 ++#: plugins/copr.py:597 + msgid "Failed to disable copr repo {}/{}" +-msgstr "copr repo {}/{} の無効化に失敗しました。" ++msgstr "copr repo {}/{} の無効化に失敗しました" + +-#: plugins/copr.py:611 plugins/copr.py:648 ++#: plugins/copr.py:615 plugins/copr.py:652 + msgid "Unknown response from server." + msgstr "サーバーからの不明な応答です。" + +-#: plugins/copr.py:633 ++#: plugins/copr.py:637 + msgid "Interact with Playground repository." + msgstr "Playground リポジトリーとの対話。" + +-#: plugins/copr.py:639 +-#, fuzzy +-#| msgid "Interact with Playground repository." ++#: plugins/copr.py:643 + msgid "Enabling a Playground repository." +-msgstr "Playground リポジトリーとの対話。" ++msgstr "Playgroundのリポジトリーの有効化。" + +-#: plugins/copr.py:640 ++#: plugins/copr.py:644 + msgid "Do you want to continue?" +-msgstr "" ++msgstr "続行しますか?" + +-#: plugins/copr.py:683 ++#: plugins/copr.py:687 + msgid "Playground repositories successfully enabled." + msgstr "Playground リポジトリーが正常に有効化されました。" + +-#: plugins/copr.py:686 ++#: plugins/copr.py:690 + msgid "Playground repositories successfully disabled." + msgstr "Playground リポジトリーが正常に無効化されました。" + +-#: plugins/copr.py:690 ++#: plugins/copr.py:694 + msgid "Playground repositories successfully updated." + msgstr "Playground リポジトリーが正常に更新されました。" + +@@ -474,7 +530,9 @@ msgstr "記録されたパッケージの最新バージョンをインストー + msgid "" + "Ignore architecture and install missing packages matching the name, epoch, " + "version and release." +-msgstr "アーキテクチャーを無視し、名前、エポック、バージョン、およびリリースと一致する不足のパッケージをインストールします。" ++msgstr "" ++"アーキテクチャーを無視し、名前、エポック、バージョン、およびリリースと一致す" ++"る不足のパッケージをインストールします。" + + #: plugins/debug.py:196 + msgid "limit to specified type" +@@ -485,6 +543,8 @@ msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." + msgstr "" ++"インストールのみのパッケージの削除を許可します。このオプションを使用すると、" ++"実行しているカーネルの削除を試みる可能性があります。" + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -509,24 +569,30 @@ msgstr "debuginfo パッケージのインストール" + 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" +@@ -550,13 +616,13 @@ 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." + msgstr "特定のアーキテクチャーのパッケージへのクエリーを制限します。" + +-#: plugins/download.py:62 ++#: plugins/download.py:62 plugins/modulesync.py:51 + msgid "resolve and download needed dependencies" + msgstr "必要な依存関係を解決し、ダウンロードします" + +@@ -565,17 +631,20 @@ 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 の一覧を印刷します" ++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:293 ++#: plugins/download.py:121 plugins/reposync.py:314 + #, python-format + msgid "Failed to get mirror for package: %s" + msgstr "パッケージのミラー取得に失敗しました: %s" +@@ -598,9 +667,129 @@ 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:261 ++msgid "No match for argument: {}" ++msgstr "一致した引数がありません: {}" ++ ++#: plugins/groups_manager.py:298 ++msgid "Can't remove packages from non-existent group" ++msgstr "存在しないグループからパッケージを削除できません" ++ ++#: plugins/groups_manager.py:307 ++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 "他のパッケージから必要とされないインスール済みパッケージを一覧表示します" ++msgstr "" ++"他のパッケージから必要とされないインスール済みパッケージを一覧表示します" + + #: plugins/local.py:122 + msgid "Unable to create a directory '{}' due to '{}'" +@@ -630,67 +819,134 @@ msgstr "yum の履歴、グループ、および yumdb データを dnf へ移 + msgid "Migrating history data..." + msgstr "履歴データを移行中..." + +-#: plugins/needs_restarting.py:65 ++#: plugins/modulesync.py:37 ++msgid "" ++"Download packages from modules and/or create a repository with modular data" ++msgstr "モジュールからパッケージをダウンロードしたり、モジュラーデータでリポジトリー" ++"を作成したりします" ++ ++#: plugins/modulesync.py:44 ++msgid "MODULE" ++msgstr "MODULE" ++ ++#: plugins/modulesync.py:45 ++msgid "modules to download" ++msgstr "ダウンロードするモジュール" ++ ++#: plugins/modulesync.py:47 ++msgid "enable repositories with source packages" ++msgstr "ソースパッケージを含むリポジトリーを有効にします" ++ ++#: plugins/modulesync.py:49 ++msgid "enable repositories with debug-info and debug-source packages" ++msgstr "debug-info パッケージおよび debug-source " ++"パッケージでリポジトリーを有効にします" ++ ++#: plugins/modulesync.py:53 ++msgid "download only packages from newest modules" ++msgstr "最新のモジュールからパッケージのみをダウンロードします" ++ ++#: plugins/modulesync.py:85 ++msgid "Unable to find a match for argument: '{}'" ++msgid_plural "Unable to find a match for arguments: '{}'" ++msgstr[0] "引数に一致するものが見つかりませんでした: '{}'" ++ ++#: plugins/modulesync.py:107 ++msgid "" ++"Creation of repository failed with return code {}. All downloaded content " ++"was kept on the system" ++msgstr "リポジトリーの作成は戻りコード {} " ++"で失敗しました。ダウンロードされたコンテンツはすべてシステムに保持されました" ++ ++#: plugins/modulesync.py:144 ++#, python-brace-format ++msgid "No match for artifact '{0}' from module '{1}'" ++msgstr "モジュール '{1}' のアーティファクト '{0}' に一致するものはありません" ++ ++#: plugins/modulesync.py:162 ++#, python-brace-format ++msgid "No match for package name '{0}' in profile {1} from module {2}" ++msgstr "モジュール {2} からのプロファイル {1} のパッケージ名 '{0}' " ++"に一致するものはありません" ++ ++#: plugins/modulesync.py:166 ++msgid "No mach for argument '{}'" ++msgstr "引数 '{}' に一致するものはありません" ++ ++#. TODO(jmracek) Shell we end with an error or with RC 1? ++#: plugins/modulesync.py:198 ++msgid "Unable to satisfy require {}" ++msgstr "要求 {} を満たすことができません" ++ ++#: 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:220 + msgid "determine updated binaries that need restarting" + msgstr "再起動が必要な更新済みバイナリーを決定します" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:225 + msgid "only consider this user's processes" + msgstr "このユーザーのプロセスのみを検討します" + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:227 + 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 "only report affected systemd services" ++msgstr "影響を受ける systemd サービスのみを報告" ++ ++#: plugins/needs_restarting.py:253 + msgid "Core libraries or services have been updated since boot-up:" +-msgstr "" ++msgstr "起動以降にコアライブラリーまたはサービスがアップデートされました:" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:258 + msgid "Reboot is required to fully utilize these updates." +-msgstr "" ++msgstr "これらのアップデートを完全に活用するには、再起動が必要です。" + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:259 + msgid "More information:" +-msgstr "" ++msgstr "詳細情報:" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:263 + msgid "No core libraries or services have been updated since boot-up." + msgstr "" ++"起動以降にアップデートされたコアライブラリーまたはサービスはありません。" + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:265 + 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 ++#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:159 + #, python-format + msgid "post-transaction-actions: %s" +-msgstr "" ++msgstr "post-transaction-actions: %s" + +-#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:161 + #, 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 +974,142 @@ 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 "" ++"比較するアーキテクチャーを指定します、これは複数回使用できます。デフォルト" ++"で、ソース 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." ++"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 "" ++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 "" ++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" +@@ -859,180 +1128,203 @@ msgstr "rpm パッケージのディレクトリーを管理します" + msgid "Pass either --old or --new, not both!" + msgstr "--old または --new のいずれかを渡します。両方ではありません。" + +-#: plugins/repomanage.py:71 ++#: plugins/repomanage.py:89 + msgid "No files to process" + msgstr "処理するファイルはありません" + +-#: plugins/repomanage.py:93 ++#: plugins/repomanage.py:96 + msgid "Could not open {}" + msgstr "{} を開くことができません" + +-#: plugins/repomanage.py:177 ++#: plugins/repomanage.py:180 + msgid "Print the older packages" + msgstr "古いパッケージを印刷します" + +-#: plugins/repomanage.py:179 ++#: plugins/repomanage.py:182 + msgid "Print the newest packages" + msgstr "最新のパッケージを印刷します" + +-#: plugins/repomanage.py:181 ++#: plugins/repomanage.py:184 + msgid "Space separated output, not newline" + msgstr "スペースで区切られた出力で、改行ではありません" + +-#: plugins/repomanage.py:183 ++#: plugins/repomanage.py:186 + msgid "Newest N packages to keep - defaults to 1" + msgstr "維持する最新の N パッケージ - デフォルトは 1 に設定されます" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:189 + 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." ++"where to store downloaded repository metadata. Defaults to the value of --" ++"download-path." + 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:87 ++msgid "download only source packages" ++msgstr "ソースパッケージのみをダウンロード" + +-#: plugins/reposync.py:85 ++#: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" + 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 が保存されました" + + #: plugins/show_leaves.py:54 + msgid "New leaves:" +-msgstr "新規のリーフパッケージ (他のパッケージから依存されていないパッケージ) :" ++msgstr "" ++"新規のリーフパッケージ (他のパッケージから依存されていないパッケージ) :" + +-#: plugins/versionlock.py:32 ++#: plugins/versionlock.py:33 + #, python-format + msgid "Unable to read version lock configuration: %s" + msgstr "バージョンロック設定の読み込みができません: %s" + +-#: plugins/versionlock.py:33 ++#: plugins/versionlock.py:34 + msgid "Locklist not set" + msgstr "ロックリストが設定されていません" + +-#: plugins/versionlock.py:34 ++#: plugins/versionlock.py:35 + msgid "Adding versionlock on:" + msgstr "versionlock を追加:" + +-#: plugins/versionlock.py:35 ++#: plugins/versionlock.py:36 + msgid "Adding exclude on:" + msgstr "除外を追加:" + +-#: plugins/versionlock.py:36 ++#: plugins/versionlock.py:37 + msgid "Package already locked in equivalent form:" +-msgstr "" ++msgstr "同等の形で既にロックされているパッケージ:" + +-#: plugins/versionlock.py:37 ++#: plugins/versionlock.py:38 + msgid "Package {} is already locked" +-msgstr "" ++msgstr "パッケージ {} は既にロックされています" + +-#: plugins/versionlock.py:38 ++#: plugins/versionlock.py:39 + msgid "Package {} is already excluded" +-msgstr "" ++msgstr "パッケージ{}はすでに除外されています" + +-#: plugins/versionlock.py:39 ++#: plugins/versionlock.py:40 + msgid "Deleting versionlock for:" + msgstr "versionlock を削除:" + +-#: plugins/versionlock.py:40 ++#: plugins/versionlock.py:41 + msgid "No package found for:" + msgstr "パッケージが見つかりませんでした:" + +-#: plugins/versionlock.py:41 ++#: plugins/versionlock.py:42 + msgid "Excludes from versionlock plugin were not applied" + msgstr "versionlock プラグインからの除外は適用されませんでした" + +-#: plugins/versionlock.py:42 ++#: plugins/versionlock.py:43 + 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: {}" ++#: plugins/versionlock.py:44 ++msgid "" ++"Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" + msgstr "versionlock プラグイン: ファイル \"{}\" の除外ルールの数を適用: {}" + +-#: plugins/versionlock.py:44 ++#: plugins/versionlock.py:45 + msgid "Versionlock plugin: could not parse pattern:" + msgstr "versionlock プラグイン: パターンを解析できませんでした:" + +-#: plugins/versionlock.py:130 ++#: plugins/versionlock.py:134 + msgid "control package version locks" + msgstr "パッケージバージョンロックの制御" + +-#: plugins/versionlock.py:136 ++#: plugins/versionlock.py:140 + msgid "Use package specifications as they are, do not try to parse them" +-msgstr "" ++msgstr "パッケージ仕様をそのまま使用し、解析を試みないでください" ++ ++#: plugins/versionlock.py:160 ++msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." ++msgstr "サブコマンド '{}' は非推奨になりました。代わりに 'exclude' " ++"サブコマンドを使用してください。" + + #~ msgid "" + #~ "\n" +diff --git a/po/ko.po b/po/ko.po +index 3f4eb89..307ccc7 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -1,222 +1,230 @@ + # Ludek Janda , 2018. #zanata, 2020. ++# simmon , 2021. ++# Kim InSoo , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-09-12 11:29+0000\n" +-"Last-Translator: Ludek Janda \n" +-"Language-Team: Korean \n" ++"POT-Creation-Date: 2022-02-28 11:53+0100\n" ++"PO-Revision-Date: 2022-03-02 04:16+0000\n" ++"Last-Translator: Kim InSoo \n" ++"Language-Team: Korean \n" + "Language: ko\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.2.2\n" ++"X-Generator: Weblate 4.11\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +-msgstr "" ++msgstr "[PACKAGE|PACKAGE.spec]" + + #: plugins/builddep.py:85 + #, python-format + msgid "'%s' is not of the format 'MACRO EXPR'" +-msgstr "" ++msgstr "'%s'는 'MACRO EXPR' 형식이 아닙니다" + + #: plugins/builddep.py:90 + msgid "packages with builddeps to install" +-msgstr "" ++msgstr "설치 할 builddeps가 있는 꾸러미(package)" + + #: plugins/builddep.py:93 + msgid "define a macro for spec file parsing" +-msgstr "" ++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" +-msgstr "" ++msgstr "명령줄 인수를 지정한 파일로 다룬다" + + #: plugins/builddep.py:100 + msgid "treat commandline arguments as source rpm" +-msgstr "" ++msgstr "명령줄 인수를 rpm 소스로 다룬다" + + #: plugins/builddep.py:144 + msgid "RPM: {}" +-msgstr "" ++msgstr "RPM: {}" + + #: plugins/builddep.py:153 + msgid "Some packages could not be found." +-msgstr "" ++msgstr "몇몇 꾸러미(packages)를 찾을 수 없습니다." + + #. No provides, no files +-#. Richdeps can have no matches but it could be correct (solver must decide +-#. later) ++#. 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 "" ++msgstr "설치: '%s' 꾸러미(package)가 일치하지 않습니다" + + #: plugins/builddep.py:191 + #, python-format + msgid "Failed to open: '%s', not a valid source rpm file." +-msgstr "" ++msgstr "여는데 실패하였습니다: '%s', 유효한 rpm 파일 출처가 아닙니다." + + #: plugins/builddep.py:204 plugins/builddep.py:220 plugins/builddep.py:237 + msgid "Not all dependencies satisfied" +-msgstr "" ++msgstr "모든 의존성을 만족하지 않습니다" + + #: plugins/builddep.py:211 + #, python-format + msgid "Failed to open: '%s', not a valid spec file: %s" +-msgstr "" ++msgstr "여는데 실패하였습니다 '%s', 지정한 파일: %s가 유효하지 않습니다" + + #: plugins/builddep.py:230 plugins/repoclosure.py:118 + #, python-format + msgid "no package matched: %s" +-msgstr "일치하는 패키지 없음 : %s" ++msgstr "일치하는 꾸러미(package) 없음: %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 "꾸러미(packages)의 변화 기록자료를 보여줍니다" + + #: 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 "" ++msgstr "주어진 수의 꾸러미(package) 마다 변화기록 항목을 보여줍니다" + + #: plugins/changelog.py:58 + msgid "" + "show only new changelog entries for packages, that provide an upgrade for " + "some of already installed packages." + msgstr "" ++"몇몇 이미 설치된 꾸러미(package)들의 최신화를 제공하는 꾸러미를 위하여 새로" ++"운 변화기록만을 보여줍니다." + + #: plugins/changelog.py:60 + msgid "PACKAGE" +-msgstr "" ++msgstr "꾸러미(package)" + + #: plugins/changelog.py:81 plugins/debuginfo-install.py:90 + #, python-format + msgid "No match for argument: %s" +-msgstr "인수와 일치하는 항목 없음 : %s" ++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 {}" +-msgstr "" ++msgstr "{}의 변경 사항" + +-#: plugins/config_manager.py:37 ++#: plugins/config_manager.py:38 + #, python-brace-format + msgid "manage {prog} configuration options and repositories" +-msgstr "" ++msgstr "{prog} 환경 선택과 저장소 관리" + +-#: plugins/config_manager.py:44 ++#: plugins/config_manager.py:45 + msgid "repo to modify" + msgstr "수정할 repo" + +-#: plugins/config_manager.py:47 ++#: plugins/config_manager.py:48 + msgid "save the current options (useful with --setopt)" + msgstr "현재 옵션 저장 (--setopt와 함께 유용함)" + +-#: plugins/config_manager.py:50 ++#: plugins/config_manager.py:51 + msgid "add (and enable) the repo from the specified file or url" + msgstr "지정된 파일 또는 URL에서 repo를 추가 (및 활성화)" + +-#: plugins/config_manager.py:53 ++#: plugins/config_manager.py:54 + msgid "print current configuration values to stdout" + msgstr "현재 구성 값을 표준 출력으로 인쇄" + +-#: plugins/config_manager.py:56 ++#: plugins/config_manager.py:57 + msgid "print variable values to stdout" + msgstr "변수 값을 표준 출력으로 출력" + +-#: plugins/config_manager.py:60 ++#: plugins/config_manager.py:61 + msgid "enable repos (automatically saves)" +-msgstr "" ++msgstr "저장소 활성화 (자동으로 저장합니다)" + +-#: plugins/config_manager.py:63 ++#: plugins/config_manager.py:64 + msgid "disable repos (automatically saves)" +-msgstr "" ++msgstr "저장소 비활성화 (자동으로 저장합니다)" + +-#: plugins/config_manager.py:77 ++#: plugins/config_manager.py:78 + msgid "one of the following arguments is required: {}" +-msgstr "" ++msgstr "다음 인수 중 하나가 필요합니다: {}" + +-#: plugins/config_manager.py:86 ++#: plugins/config_manager.py:87 + msgid "" + "Warning: --enablerepo/--disablerepo arguments have no meaningwith config " + "manager. Use --set-enabled/--set-disabled instead." + msgstr "" ++"경고: -- --enablerepo/--disablerepo 인수는 설정 관리자와 함께 의미를 갖고 있" ++"지 않습니다. 대신에 --set-enabled/--set-disabled를 사용하세요." + +-#: plugins/config_manager.py:131 ++#: plugins/config_manager.py:132 + #, python-format + msgid "No matching repo to modify: %s." + msgstr "수정할 일치하는 Repo가 없습니다. %s." + +-#: plugins/config_manager.py:182 ++#: plugins/config_manager.py:183 + #, python-format + msgid "Adding repo from: %s" + msgstr "다음 위치에서 레포 추가 : %s" + +-#: plugins/config_manager.py:206 ++#: plugins/config_manager.py:207 + msgid "Configuration of repo failed" + msgid_plural "Configuration of repos failed" +-msgstr[0] "저장소 구성에 실패했습니다." ++msgstr[0] "저장소 구성에 실패했습니다" + +-#: plugins/config_manager.py:216 ++#: plugins/config_manager.py:217 + #, python-format + msgid "Could not save repo to repofile %s: %s" + msgstr "repofile에 repo를 저장할 수 없습니다. %s: %s" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "y" + msgstr "y" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "yes" + msgstr "예" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "n" + msgstr "n" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "no" + msgstr "아니" + +-#: plugins/copr.py:79 ++#: plugins/copr.py:84 + msgid "Interact with Copr repositories." + msgstr "Copr 저장소와 상호 작용하십시오." + +-#: plugins/copr.py:81 ++#: plugins/copr.py:86 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -237,56 +245,84 @@ msgid "" + " " + 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" ++" 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/copr.py:107 ++#: plugins/copr.py:112 + msgid "List all installed Copr repositories (default)" + msgstr "설치된 모든 Copr 저장소 나열 (기본값)" + +-#: plugins/copr.py:109 ++#: plugins/copr.py:114 + msgid "List enabled Copr repositories" + msgstr "사용 가능한 Copr 저장소 목록" + +-#: plugins/copr.py:111 ++#: plugins/copr.py:116 + msgid "List disabled Copr repositories" + msgstr "비활성화 된 Copr 저장소 목록" + +-#: plugins/copr.py:113 ++#: plugins/copr.py:118 + msgid "List available Copr repositories by user NAME" + msgstr "사용자가 사용할 수있는 Copr 저장소를 나열합니다. NAME" + +-#: plugins/copr.py:115 ++#: plugins/copr.py:120 + msgid "Specify an instance of Copr to work with" +-msgstr "" ++msgstr "일하는 Copr의 예를 지정합니다" + +-#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 ++#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 + msgid "Error: " + msgstr "오류: " + +-#: plugins/copr.py:150 ++#: plugins/copr.py:155 + msgid "" +-"specify Copr hub either with `--hub` or using " +-"`copr_hub/copr_username/copr_projectname` format" ++"specify Copr hub either with `--hub` or using `copr_hub/copr_username/" ++"copr_projectname` format" + msgstr "" ++"Corp hub를 `--hub` 또는 사용하기 `copr_hub/copr_username/copr_projectname`형" ++"식으로 지정합니다" + +-#: plugins/copr.py:153 ++#: plugins/copr.py:158 + msgid "multiple hubs specified" +-msgstr "" ++msgstr "지정된 여러 허브" + +-#: plugins/copr.py:218 plugins/copr.py:222 ++#: plugins/copr.py:223 plugins/copr.py:227 + msgid "exactly two additional parameters to copr command are required" +-msgstr "copr 명령에 정확히 두 개의 추가 매개 변수가 필요합니다." ++msgstr "copr 명령에 정확히 두 개의 추가 매개 변수가 필요합니다" ++ ++#: plugins/copr.py:232 ++msgid "Too many arguments." ++msgstr "너무 많은 인수." + +-#: plugins/copr.py:238 ++#: plugins/copr.py:235 ++msgid "" ++"Bad format of optional chroot. The format is distribution-version-" ++"architecture." ++msgstr "선택적인 chroot의 나쁜 형식. 형식은 배포-버전-구조입니다." ++ ++#: plugins/copr.py:250 + msgid "use format `copr_username/copr_projectname` to reference copr project" +-msgstr "copr 프로젝트를 참조하기 위해`copr_username / copr_projectname` 형식을 사용하십시오" ++msgstr "" ++"copr 프로젝트를 참조하기 위해`copr_username / copr_projectname` 형식을 사용하" ++"십시오" + +-#: plugins/copr.py:240 ++#: plugins/copr.py:252 + msgid "bad copr project format" + msgstr "나쁜 copr 프로젝트 형식" + +-#: plugins/copr.py:254 ++#: plugins/copr.py:266 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -294,78 +330,95 @@ msgid "" + "\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" ++",\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" ++"Core 저정소를 활성화합니다. 이 저장소는 주요 배포판 부분이 아님을 알고 있기 " ++"바라고,\n" ++"품질이 다를 수 있습니다.\n" ++"\n" ++"페도라 프로젝트는\n" ++"에\n" ++"Core FAQ에 있는 설명된 규칙을 넘는 저장소 내용 이상의 권한을 시험하지 않으" ++"며,\n" ++"그리고 꾸러미(package)는 어떤 품질이나 보안 수준을 유지하지 않습니다.\n" ++"\n" ++"페도라 버그질라에 이들 꾸러미에 대한 파일 결점 보고를 제출하지 마세요.\n" ++"이들 문제는, 이들 저장소 소유자와 접촉하세요.\n" + +-#: plugins/copr.py:271 ++#: plugins/copr.py:283 + msgid "Repository successfully enabled." + msgstr "저장소가 사용 설정되었습니다." + +-#: plugins/copr.py:276 ++#: plugins/copr.py:288 + msgid "Repository successfully disabled." + msgstr "저장소가 사용 중지되었습니다." + +-#: plugins/copr.py:280 ++#: plugins/copr.py:292 + msgid "Repository successfully removed." + msgstr "저장소가 제거되었습니다." + +-#: plugins/copr.py:284 plugins/copr.py:693 ++#: plugins/copr.py:296 plugins/copr.py:697 + msgid "Unknown subcommand {}." + msgstr "알 수없는 부속 명령 {}." + +-#: plugins/copr.py:341 ++#: plugins/copr.py:353 + 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 " ++"* These coprs have repo file with an old format that contains no information " ++"about Copr hub - the default one was assumed. Re-enable the project to fix " + "this." + msgstr "" ++"* 이들 coprs은 Copr hub에 대하여 어떤 정보도 포함하지 않는 오래된 형태의 저장" ++"소 파일을 갖고 있습니다. 이 문제를 수정하기 위하여 프로젝트를 재활성화하세요." + +-#: plugins/copr.py:353 ++#: plugins/copr.py:366 + msgid "Can't parse repositories for username '{}'." + msgstr "사용자 이름 '{}'에 대한 리포지토리를 구문 분석 할 수 없습니다." + +-#: plugins/copr.py:356 ++#: plugins/copr.py:369 + msgid "List of {} coprs" + msgstr "{} 명의 경찰 목록" + +-#: plugins/copr.py:364 ++#: plugins/copr.py:374 + msgid "No description given" +-msgstr "설명이 없습니다." ++msgstr "설명이 없습니다" + +-#: plugins/copr.py:376 ++#: plugins/copr.py:386 + msgid "Can't parse search for '{}'." + msgstr "'{}'에 대한 검색을 구문 분석 할 수 없습니다." + +-#: plugins/copr.py:379 ++#: plugins/copr.py:389 + msgid "Matched: {}" + msgstr "일치하는 항목 : {}" + +-#: plugins/copr.py:387 ++#: plugins/copr.py:394 + msgid "No description given." + msgstr "설명이 없습니다." + +-#: plugins/copr.py:410 ++#: plugins/copr.py:416 + msgid "Safe and good answer. Exiting." + msgstr "안전하고 좋은 대답. 나가기." + +-#: plugins/copr.py:417 ++#: plugins/copr.py:423 + msgid "This command has to be run under the root user." + msgstr "이 명령은 루트 사용자로 실행해야합니다." + +-#: plugins/copr.py:481 ++#: plugins/copr.py:485 + msgid "" + "This repository does not have any builds yet so you cannot enable it now." + msgstr "이 저장소에는 빌드가 아직 없으므로 지금 사용할 수 없습니다." + +-#: plugins/copr.py:484 ++#: plugins/copr.py:488 + msgid "Such repository does not exist." + msgstr "이러한 저장소는 존재하지 않습니다." + +-#: plugins/copr.py:528 ++#: plugins/copr.py:532 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -381,53 +434,63 @@ msgid "" + "\n" + "These repositories have been enabled automatically." + msgstr "" ++"활성화된 Core 저장소의 유지는 다른 저장소에 이를 독립적으로\n" ++"만드는 것으로 결정하였습니다.\n" ++"그런 저장소는 주요 Corp 저장소에서 성공적인 RPM 설치를\n" ++"위하여 일반적으로 필요합니다(이들은 실행 의존성을 제공합니다).\n" ++"\n" ++"위도 여기에 적용되며 품질과 결점-보고에 대한 참고 사항을 알아야 하고,\n" ++"페도라 프로젝트는 그 내용을 통제하지 않습니다.\n" ++"목록을 다시 검토합니다:\n" ++"\n" ++"{0}\n" ++"\n" ++"이들 저장소는 자동으로 활성화 됩니다." + +-#: plugins/copr.py:549 ++#: plugins/copr.py:553 + msgid "Do you want to keep them enabled?" +-msgstr "" ++msgstr "계속 사용하길 원하시나요?" + +-#: plugins/copr.py:582 ++#: plugins/copr.py:586 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" +-msgstr "" ++msgstr "copr repo {0}/{1}/{2} 제거를 실패하였습니다" + +-#: plugins/copr.py:593 ++#: plugins/copr.py:597 + msgid "Failed to disable copr repo {}/{}" +-msgstr "copr repo {} / {}를 사용 중지하지 못했습니다." ++msgstr "copr repo {} / {}를 사용 중지를 실패하였습니다" + +-#: plugins/copr.py:611 plugins/copr.py:648 ++#: plugins/copr.py:615 plugins/copr.py:652 + msgid "Unknown response from server." + msgstr "서버에서 알 수없는 응답." + +-#: plugins/copr.py:633 ++#: plugins/copr.py:637 + msgid "Interact with Playground repository." + msgstr "놀이터 저장소와 상호 작용하십시오." + +-#: plugins/copr.py:639 +-#, fuzzy +-#| msgid "Interact with Playground repository." ++#: plugins/copr.py:643 + msgid "Enabling a Playground repository." +-msgstr "놀이터 저장소와 상호 작용하십시오." ++msgstr "동작 저장소와 활용하기." + +-#: plugins/copr.py:640 ++#: plugins/copr.py:644 + msgid "Do you want to continue?" +-msgstr "" ++msgstr "계속하기를 원하십니까?" + +-#: plugins/copr.py:683 ++#: plugins/copr.py:687 + msgid "Playground repositories successfully enabled." + msgstr "놀이터 저장소를 사용하도록 설정했습니다." + +-#: plugins/copr.py:686 ++#: plugins/copr.py:690 + msgid "Playground repositories successfully disabled." + msgstr "놀이터 저장소가 사용 중지되었습니다." + +-#: plugins/copr.py:690 ++#: plugins/copr.py:694 + msgid "Playground repositories successfully updated." + msgstr "놀이터 저장소가 성공적으로 업데이트되었습니다." + + #: plugins/debug.py:53 + msgid "dump information about installed rpm packages to file" +-msgstr "설치된 rpm 패키지에 대한 정보를 파일에 덤프하십시오." ++msgstr "설치된 rpm 꾸러미(package)에 대한 정보를 파일에 덤프하십시오" + + #: plugins/debug.py:67 + msgid "do not attempt to dump the repository contents." +@@ -444,7 +507,7 @@ msgstr "작성된 출력 : %s" + + #: plugins/debug.py:172 + msgid "restore packages recorded in debug-dump file" +-msgstr "디버그 덤프 파일에 기록 된 패키지 복원" ++msgstr "디버그 덤프 파일에 기록 된 꾸러미(package) 복원" + + #: plugins/debug.py:185 + msgid "output commands that would be run to stdout." +@@ -452,13 +515,15 @@ msgstr "stdout으로 실행될 출력 명령." + + #: plugins/debug.py:188 + msgid "Install the latest version of recorded packages." +-msgstr "기록 된 패키지의 최신 버전을 설치하십시오." ++msgstr "기록 된 꾸러미의 최신 버전을 설치하십시오." + + #: plugins/debug.py:191 + msgid "" + "Ignore architecture and install missing packages matching the name, epoch, " + "version and release." +-msgstr "아키텍처를 무시하고 이름, 기원, 버전 및 릴리스와 일치하는 누락 된 패키지를 설치하십시오." ++msgstr "" ++"구조를 무시하고 이름, 기원, 버전및 출시와 일치하는 누락 된 꾸러미를 설치하십" ++"시오." + + #: plugins/debug.py:196 + msgid "limit to specified type" +@@ -469,6 +534,8 @@ msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." + msgstr "" ++"설치전용 꾸리미 제거를 허용합니다. 이 선택의 사용은 동작하고 있는 커널을 제거" ++"하는 결과가 나타날 수 있습니다." + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -477,7 +544,7 @@ msgstr "덤프 파일의 이름" + #: plugins/debug.py:273 + #, python-format + msgid "Package %s is not available" +-msgstr "꾸러미 %s 사용할 수 없습니다" ++msgstr "꾸러미(package) %s 사용 할 수 없습니다" + + #: plugins/debug.py:283 + #, python-format +@@ -486,31 +553,39 @@ msgstr "잘못된 dnf 디버그 파일 : %s" + + #: plugins/debuginfo-install.py:56 + msgid "install debuginfo packages" +-msgstr "debuginfo 패키지 설치" ++msgstr "디버그정보 꾸러미(package) 설치" + + #: plugins/debuginfo-install.py:180 + #, python-format + msgid "" + "Could not find debuginfo package for the following available packages: %s" + msgstr "" ++"다음 사용가능한 꾸러미(package): %s 를 위하여 디버그정보 꾸러미를 찾을 수 없" ++"습니다" + + #: plugins/debuginfo-install.py:185 + #, python-format + msgid "" + "Could not find debugsource package for the following available packages: %s" + msgstr "" ++"다음 가용한 꾸러미(package): %s 를 위하여 디버그자원 꾸러미(package)를 찾을 " ++"수 없습니다" + + #: plugins/debuginfo-install.py:190 + #, python-format + msgid "" + "Could not find debuginfo package for the following installed packages: %s" + msgstr "" ++"다음 설치된 꾸러미(package): %s 를 위한 디버그정보 꾸러미(package)를 찾을 수 " ++"없습니다" + + #: plugins/debuginfo-install.py:195 + #, python-format + msgid "" + "Could not find debugsource package for the following installed packages: %s" + msgstr "" ++"다음 설치된 꾸러미(package): %s 를 위하여 디버그자원 꾸러미(package)를 찾을 " ++"수 없습니다" + + #: plugins/debuginfo-install.py:199 + msgid "Unable to find a match" +@@ -518,51 +593,53 @@ msgstr "일치하는 항목을 찾을 수 없습니다" + + #: plugins/download.py:41 + msgid "Download package to current directory" +-msgstr "현재 디렉토리에 패키지 다운로드" ++msgstr "현재 디렉토리에 꾸러미 내려받기" + + #: plugins/download.py:51 + msgid "packages to download" +-msgstr "다운로드 할 패키지" ++msgstr "내려받기 할 꾸러미" + + #: plugins/download.py:53 + msgid "download the src.rpm instead" +-msgstr "대신 src.rpm을 다운로드하십시오." ++msgstr "대신 src.rpm을 내려받으세요" + + #: plugins/download.py:55 + msgid "download the -debuginfo package instead" +-msgstr "대신 -debuginfo 패키지를 다운로드하십시오." ++msgstr "대신 -debuginfo 꾸러미(package)를 내려받아요" + + #: plugins/download.py:57 + msgid "download the -debugsource package instead" +-msgstr "" ++msgstr "대신 -debuginfo 꾸러미(package)를 내려받으세요" + + #: plugins/download.py:60 + msgid "limit the query to packages of given architectures." +-msgstr "쿼리를 주어진 아키텍처의 패키지로 제한하십시오." ++msgstr "요청를 주어진 구조 꾸러미(package)로 제한하십시오." + +-#: plugins/download.py:62 ++#: plugins/download.py:62 plugins/modulesync.py:51 + msgid "resolve and download needed dependencies" +-msgstr "필요한 종속성을 해결하고 다운로드하십시오." ++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 목록 인쇄" ++msgstr "내려받기 대신 rpms를 내려받기 할 수 있는 URL 목록 인쇄" + + #: plugins/download.py:72 + msgid "when running with --url, limit to specific protocols" +-msgstr "--url을 사용하여 실행하면 특정 프로토콜로 제한됩니다." ++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" ++msgstr "꾸러미 연결주소 얻기에 실패했습니다: %s" + + #: plugins/download.py:243 + msgid "Exiting due to strict setting." +@@ -570,7 +647,7 @@ msgstr "엄격한 설정으로 인해 종료됩니다." + + #: plugins/download.py:261 + msgid "Error in resolve of packages:" +-msgstr "패키지 해결 오류 :" ++msgstr "꾸러미(package) 해결 오류 :" + + #: plugins/download.py:279 + #, python-format +@@ -580,27 +657,145 @@ msgstr "소스 rpm이 정의되지 않았습니다. %s" + #: plugins/download.py:296 plugins/download.py:309 + #, python-format + msgid "No package %s available." +-msgstr "패키지 없음 %s 유효한." ++msgstr "가용한 꾸러미(package) %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 "꾸러미(package)를 필 수 부분에 추가합니다" ++ ++#: plugins/groups_manager.py:125 ++msgid "add packages to the optional section" ++msgstr "꾸러미(package)를 선택 부분에 추가합니다" ++ ++#: plugins/groups_manager.py:127 ++msgid "remove packages from the group instead of adding them" ++msgstr "추가하기 대신에 그룹에서 꾸러미(package)를 제거합니다" ++ ++#: plugins/groups_manager.py:129 ++msgid "include also direct dependencies for packages" ++msgstr "꾸러미(package)를 위해 직접적인 의존성을 포함한다" ++ ++#: plugins/groups_manager.py:132 ++msgid "package specification" ++msgstr "꾸러미(package) 사양" ++ ++#: plugins/groups_manager.py:156 ++msgid "Can't edit group without specifying it (use --id or --name)" ++msgstr "이것(user --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:261 ++msgid "No match for argument: {}" ++msgstr "일치하는 인수가 없습니다 :{}" ++ ++#: plugins/groups_manager.py:298 ++msgid "Can't remove packages from non-existent group" ++msgstr "존재하지 않는 그룹에서 꾸러미(package)를 제거 할 수 없습니다" ++ ++#: plugins/groups_manager.py:307 ++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 "다른 패키지에서 필요하지 않은 설치된 패키지 나열" ++msgstr "다른 꾸러미(package)에서 필요하지 않은 설치된 꾸러미(packages) 나열" + + #: plugins/local.py:122 + msgid "Unable to create a directory '{}' due to '{}'" +-msgstr "'{}'(으)로 인해 '{}'디렉토리를 만들 수 없습니다." ++msgstr "'{}'(으)로 인해 '{}'디렉토리를 만들 수 없습니다" + + #: plugins/local.py:126 + msgid "'{}' is not a directory" +-msgstr "'{}'은 (는) 디렉토리가 아닙니다." ++msgstr "'{}'는 디렉토리가 아닙니다" + + #: plugins/local.py:135 + msgid "Copying '{}' to local repo" +-msgstr "'{}'을 (를) 로컬 저장소로 복사 중입니다." ++msgstr "'{}'을 로컬 저장소로 복사 중입니다" + + #: plugins/local.py:141 + msgid "Can't write file '{}'" +-msgstr "'{}'파일을 쓸 수 없습니다." ++msgstr "'{}'파일을 쓸 수 없습니다" + + #: plugins/local.py:156 + msgid "Rebuilding local repo" +@@ -608,73 +803,135 @@ msgstr "지역 레포 복구" + + #: plugins/migrate.py:45 + msgid "migrate yum's history, group and yumdb data to dnf" +-msgstr "yum의 히스토리, 그룹 및 yumdb 데이터를 dnf로 마이그레이션합니다." ++msgstr "yum 사용기록, 그룹 및 yumdb 데이터를 dnf로 마이그레이션합니다" + + #: plugins/migrate.py:54 + msgid "Migrating history data..." + msgstr "기록 데이터 마이그레이션 중 ..." + +-#: plugins/needs_restarting.py:65 ++#: plugins/modulesync.py:37 ++msgid "" ++"Download packages from modules and/or create a repository with modular data" ++msgstr "모듈에서 꾸러미를 내려 받기와/또는 모듈식 자료를 갖고 있는 저장소를 생성" ++ ++#: plugins/modulesync.py:44 ++msgid "MODULE" ++msgstr "모듈" ++ ++#: plugins/modulesync.py:45 ++msgid "modules to download" ++msgstr "내려받아야 할 모듈" ++ ++#: plugins/modulesync.py:47 ++msgid "enable repositories with source packages" ++msgstr "원천 꾸러미와 함께 저장소를 활성화" ++ ++#: plugins/modulesync.py:49 ++msgid "enable repositories with debug-info and debug-source packages" ++msgstr "디버그-정보와 디버그-원천 꾸러미와 함께 저장소 활성화" ++ ++#: plugins/modulesync.py:53 ++msgid "download only packages from newest modules" ++msgstr "최신 모듈에서 꾸러미만 내려받기" ++ ++#: plugins/modulesync.py:85 ++msgid "Unable to find a match for argument: '{}'" ++msgid_plural "Unable to find a match for arguments: '{}'" ++msgstr[0] "인수와 일치하는 항목을 찾을 수 없습니다: '{}'" ++ ++#: plugins/modulesync.py:107 ++msgid "" ++"Creation of repository failed with return code {}. All downloaded content " ++"was kept on the system" ++msgstr "반환 코드 {}로 인하여 저장소 생성에 실패함. 모두 내려받기된 내용은 " ++"시스템에서 보관됩니다" ++ ++#: plugins/modulesync.py:144 ++#, python-brace-format ++msgid "No match for artifact '{0}' from module '{1}'" ++msgstr "모듈 '{1}'에서 인위 결과물 '{0}'과 일치하는 부분이 없습니다" ++ ++#: plugins/modulesync.py:162 ++#, python-brace-format ++msgid "No match for package name '{0}' in profile {1} from module {2}" ++msgstr "모듈 {2}에서 프로파일 {1}인 꾸러미 이름 '{0}'과 일치하는 부분이 없습니다" ++ ++#: plugins/modulesync.py:166 ++msgid "No mach for argument '{}'" ++msgstr "인수와 일치하는 항목이 없습니다 '{}'" ++ ++#. TODO(jmracek) Shell we end with an error or with RC 1? ++#: plugins/modulesync.py:198 ++msgid "Unable to satisfy require {}" ++msgstr "필요사항 {}를 만족 할 수 없음" ++ ++#: 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:220 + msgid "determine updated binaries that need restarting" + msgstr "다시 시작해야하는 업데이트 된 바이너리 결정" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:225 + msgid "only consider this user's processes" +-msgstr "이 사용자의 프로세스 만 고려하십시오." ++msgstr "이 사용자의 프로세스만 고려하세요" + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:227 + msgid "" + "only report whether a reboot is required (exit code 1) or not (exit code 0)" + msgstr "" ++"재시작이 요구되는 (exit code 1) 또는 아닌(exit code0) 경우에만 보고합니다" + + #: plugins/needs_restarting.py:230 ++msgid "only report affected systemd services" ++msgstr "systemd 서비스에 영향을 미치는 것만 보고합니다" ++ ++#: plugins/needs_restarting.py:253 + msgid "Core libraries or services have been updated since boot-up:" +-msgstr "" ++msgstr "Core 라이브러리와 서비스는 재시작 이 후에 최신화 됩니다:" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:258 + msgid "Reboot is required to fully utilize these updates." +-msgstr "" ++msgstr "재시작은 이들 최신화를 완전히 사용하려면 필요합니다." + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:259 + msgid "More information:" +-msgstr "" ++msgstr "자세한 정보:" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:263 + msgid "No core libraries or services have been updated since boot-up." +-msgstr "" ++msgstr "핵심 라이브러리와 서비스는 재시작 이 후에 최신화 되지 않습니다." + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:265 + 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 ++#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:159 + #, python-format + msgid "post-transaction-actions: %s" +-msgstr "" ++msgstr "연결 후 동작: %s" + +-#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:161 + #, 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" +@@ -686,149 +943,160 @@ msgstr "재구 축은 해결되지 않은 종속성으로 종료되었습니다. + + #: plugins/repoclosure.py:153 + msgid "check packages of the given archs, can be specified multiple times" +-msgstr "지정된 아치의 패키지를 검사하고 여러 번 지정할 수 있습니다." ++msgstr "지정된 아치의 꾸러미(package)를 검사하고 여러 번 지정할 수 있습니다" + + #: plugins/repoclosure.py:156 + msgid "Specify repositories to check" +-msgstr "확인할 저장소를 지정하십시오." ++msgstr "점검 할 저장소를 지정하세요" + + #: plugins/repoclosure.py:158 + msgid "Check only the newest packages in the repos" +-msgstr "리포지토리의 최신 패키지 만 확인하십시오." ++msgstr "저장소 최신 꾸러미(package)만 확인하세요" + + #: plugins/repoclosure.py:161 + msgid "Check closure for this package only" +-msgstr "이 패키지의 폐쇄 만 확인하십시오." ++msgstr "이 꾸러미(package)의 폐쇄만 확인하세요" + + #: 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 "" ++"비교 할 구조를 지정하고, 여러 번 사용 될 수 있습니다. 기본적으로, 자원 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." ++"Compare packages also by arch. By default packages are compared just by name." + msgstr "" ++"구조에 의해 꾸러미(package) 또한 비교합니다. 기본적으로 꾸러미(package)는 이" ++"름으로만 비교됩니다." + + #: plugins/repodiff.py:72 + msgid "Output a simple one line message for modified packages." +-msgstr "" ++msgstr "수정된 꾸러미(pacakage)지를 위해 단순히 한 줄 메시지를 출력합니다." + + #: 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 "크기 변화: {} bytes" + + #: plugins/repodiff.py:184 + msgid "Added package : {}" +-msgstr "" ++msgstr "추가된 꾸러미(package) : {}" + + #: plugins/repodiff.py:187 + msgid "Removed package: {}" +-msgstr "" ++msgstr "제거된 꾸러미(package): {}" + + #: plugins/repodiff.py:190 + msgid "Obsoleted by : {}" +-msgstr "" ++msgstr "사용되지 않음 : {}" + + #: plugins/repodiff.py:195 + msgid "" + "\n" + "Upgraded packages" + msgstr "" ++"\n" ++"향상된 꾸러미(package)" + + #: plugins/repodiff.py:200 + msgid "" + "\n" + "Downgraded packages" + msgstr "" ++"\n" ++"꾸러미 하향설치" + + #: plugins/repodiff.py:207 + msgid "" + "\n" + "Modified packages" + msgstr "" ++"\n" ++"변형된 꾸러미(package)" + + #: plugins/repodiff.py:212 + msgid "" + "\n" + "Summary" + msgstr "" ++"\n" ++"요약" + + #: plugins/repodiff.py:213 + msgid "Added packages: {}" +-msgstr "" ++msgstr "추가된 꾸러미(package): {}" + + #: plugins/repodiff.py:214 + msgid "Removed packages: {}" +-msgstr "" ++msgstr "제거된 꾸러미(package): {}" + + #: plugins/repodiff.py:216 + msgid "Upgraded packages: {}" +-msgstr "" ++msgstr "향상된 꾸러미(package): {}" + + #: plugins/repodiff.py:217 + msgid "Downgraded packages: {}" +-msgstr "" ++msgstr "하향설치된 꾸러미: {}" + + #: plugins/repodiff.py:219 + msgid "Modified packages: {}" +-msgstr "" ++msgstr "변형된 꾸러미(package): {}" + + #: plugins/repodiff.py:222 + msgid "Size of added packages: {}" +-msgstr "" ++msgstr "크기가 증가된 꾸러미(package): {}" + + #: plugins/repodiff.py:223 + msgid "Size of removed packages: {}" +-msgstr "" ++msgstr "크기가 제거된 꾸러미(package): {}" + + #: plugins/repodiff.py:225 + msgid "Size of modified packages: {}" +-msgstr "" ++msgstr "크기가 변형된 꾸러미(package): {}" + + #: 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" +-msgstr "도트 형식의 전체 패키지 종속성 그래프 출력" ++msgstr "도트 형식의 전체 꾸러미(package) 종속성 그래프 출력" + + #: plugins/repograph.py:110 + #, python-format +@@ -837,186 +1105,206 @@ msgstr "아무것도 제공하지 않습니다 : '%s'" + + #: plugins/repomanage.py:45 + msgid "Manage a directory of rpm packages" +-msgstr "rpm 패키지 디렉토리 관리" ++msgstr "rpm 꾸러미(package) 디렉토리 관리" + + #: plugins/repomanage.py:59 + msgid "Pass either --old or --new, not both!" +-msgstr "--old 또는 --new 중 하나를 전달하십시오." ++msgstr "--old 또는 --new 중 하나를 전달하세요!" + +-#: plugins/repomanage.py:71 ++#: plugins/repomanage.py:89 + msgid "No files to process" +-msgstr "처리 할 파일이 없습니다." ++msgstr "처리 할 파일 없음" + +-#: plugins/repomanage.py:93 ++#: plugins/repomanage.py:96 + msgid "Could not open {}" +-msgstr "{}을 (를) 열 수 없습니다." ++msgstr "{}을 열 수 없습니다" + +-#: plugins/repomanage.py:177 ++#: plugins/repomanage.py:180 + msgid "Print the older packages" +-msgstr "이전 패키지 인쇄" ++msgstr "이전 꾸러미(package) 인쇄" + +-#: plugins/repomanage.py:179 ++#: plugins/repomanage.py:182 + msgid "Print the newest packages" +-msgstr "최신 패키지 인쇄" ++msgstr "최신 꾸러미(package) 인쇄" + +-#: plugins/repomanage.py:181 ++#: plugins/repomanage.py:184 + msgid "Space separated output, not newline" + msgstr "공백으로 구분 된 출력이 아닌 개행 문자" + +-#: plugins/repomanage.py:183 ++#: plugins/repomanage.py:186 + msgid "Newest N packages to keep - defaults to 1" +-msgstr "보관할 최신 N 패키지 - 기본값은 1입니다." ++msgstr "보관할 최신 N 꾸러미(package) - 기본값은 1입니다" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:189 + msgid "Path to directory" + msgstr "디렉토리 경로" + +-#: plugins/reposync.py:54 ++#: plugins/reposync.py:55 + msgid "download all packages from remote repo" +-msgstr "원격 저장소에서 모든 패키지를 다운로드하십시오." ++msgstr "원격 저장소에서 모든 꾸러미(package)를 내려받아요" + +-#: plugins/reposync.py:63 ++#: plugins/reposync.py:64 + msgid "download only packages for this ARCH" +-msgstr "이 ARCH 용 패키지 만 다운로드하십시오." ++msgstr "이 ARCH용 꾸러미(package)만 내려받아요" + +-#: plugins/reposync.py:65 ++#: plugins/reposync.py:66 + msgid "delete local packages no longer present in repository" +-msgstr "저장소에 더 이상 존재하지 않는 로컬 패키지 삭제" ++msgstr "저장소에 더 이상 존재하지 않는 로컬 꾸러미(package) 삭제" + +-#: 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 "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." ++"where to store downloaded repository metadata. Defaults to the value of --" ++"download-path." + msgstr "" ++"내려받은 저장소 메타데이타를 저장하기 위한 장소. --download-path의 값으로 기" ++"본 지정합니다." ++ ++#: plugins/reposync.py:78 ++msgid "download only newest packages per-repo" ++msgstr "저장소 최신 꾸러미(package)만 내려받아요" + + #: 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 "서버에 있는 하나에서 로컬파일의 로컬 타임스템프 설정을 시도하세요" ++ ++#: plugins/reposync.py:87 ++msgid "download only source packages" ++msgstr "원천 꾸러미만 내려받기" + +-#: plugins/reposync.py:85 ++#: 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 "다중 저장소와 함께 --norepath를 사용 할 수 없습니다" + +-#: 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 "저장소에 대한 comps.xml %s 저장된" + + #: plugins/show_leaves.py:54 + msgid "New leaves:" +-msgstr "새 잎 :" ++msgstr "독립 꾸러미(package):" + +-#: plugins/versionlock.py:32 ++#: plugins/versionlock.py:33 + #, 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 "" ++msgid "Locklist not set" ++msgstr "잠금 목록 설정되지 않음" + + #: plugins/versionlock.py:35 +-msgid "Adding exclude on:" +-msgstr "" ++msgid "Adding versionlock on:" ++msgstr "버전잠금 설정 추가하기:" + + #: plugins/versionlock.py:36 +-msgid "Package already locked in equivalent form:" +-msgstr "" ++msgid "Adding exclude on:" ++msgstr "제외 하기 추가하기:" + + #: plugins/versionlock.py:37 +-msgid "Package {} is already locked" +-msgstr "" ++msgid "Package already locked in equivalent form:" ++msgstr "꾸러미(package)는 이미 동일한 형태로 잠겨졌습니다:" + + #: plugins/versionlock.py:38 +-msgid "Package {} is already excluded" +-msgstr "" ++msgid "Package {} is already locked" ++msgstr "꾸러미(package) {} 는 이미 잠겨졌습니다" + + #: plugins/versionlock.py:39 +-msgid "Deleting versionlock for:" +-msgstr "" ++msgid "Package {} is already excluded" ++msgstr "꾸러미(package) {} 는 이미 제외되었습니다" + + #: plugins/versionlock.py:40 +-msgid "No package found for:" +-msgstr "" ++msgid "Deleting versionlock for:" ++msgstr "버전 잠금을 제거하기:" + + #: plugins/versionlock.py:41 +-msgid "Excludes from versionlock plugin were not applied" +-msgstr "" ++msgid "No package found for:" ++msgstr "찾고자 하는 꾸러미(package)가 없습니다:" + + #: plugins/versionlock.py:42 +-msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" +-msgstr "" ++msgid "Excludes from versionlock plugin were not applied" ++msgstr "버전 잠금 플러그인에서 제외는 적용되지 않습니다" + + #: plugins/versionlock.py:43 +-msgid "Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" +-msgstr "" ++msgid "Versionlock plugin: number of lock rules from file \"{}\" applied: {}" ++msgstr "버전 잠금 플러그인: 적용된 파일 \"{} \"에서 잠금 규칙의 수: {}" + + #: plugins/versionlock.py:44 ++msgid "" ++"Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" ++msgstr "버전 잠금 플러그인: 적용된 파일 \"{} \"에서 제외 규칙의 수: {}" ++ ++#: plugins/versionlock.py:45 + msgid "Versionlock plugin: could not parse pattern:" +-msgstr "" ++msgstr "버전 잠금 플러그인: 유형을 구문 분석 할 수 없습니다:" + +-#: plugins/versionlock.py:130 ++#: plugins/versionlock.py:134 + msgid "control package version locks" +-msgstr "" ++msgstr "꾸러미 버전 잠금을 제어합니다" + +-#: plugins/versionlock.py:136 ++#: plugins/versionlock.py:140 + msgid "Use package specifications as they are, do not try to parse them" +-msgstr "" ++msgstr "꾸러미(package) 사양을 그대로 사용하며, 구문 분석을 시도하지 않습니다" ++ ++#: plugins/versionlock.py:160 ++msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." ++msgstr "하위명령 '{}'는 더 이상 사용하지 않습니다. 대신에 하위명령 'exclude'를 " ++"사용합니다." + + #~ msgid "" + #~ "\n" +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 151441d..5e5627e 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -1,24 +1,28 @@ + # Tommy He , 2015. #zanata + # Tommy He , 2016. #zanata + # mosquito , 2016. #zanata +-# Charles Lee , 2017. #zanata, 2020. ++# Charles Lee , 2017. #zanata, 2020, 2021. + # cheng ye <18969068329@163.com>, 2017. #zanata +-# Ludek Janda , 2018. #zanata ++# Ludek Janda , 2018. #zanata, 2021. + # Hongqiao Chen , 2020. ++# Sundeep Anand , 2021. ++# Qiyu Yan , 2021. ++# Transtats , 2022. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" +-"PO-Revision-Date: 2020-07-09 13:27+0000\n" +-"Last-Translator: Charles Lee \n" +-"Language-Team: Chinese (Simplified) \n" ++"POT-Creation-Date: 2022-02-28 11:53+0100\n" ++"PO-Revision-Date: 2022-03-09 12:39+0000\n" ++"Last-Translator: Transtats \n" ++"Language-Team: Chinese (Simplified) \n" + "Language: zh_CN\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Weblate 4.1.1\n" ++"X-Generator: Weblate 4.11.2\n" + + #: plugins/builddep.py:45 + msgid "[PACKAGE|PACKAGE.spec]" +@@ -39,7 +43,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,15 +55,14 @@ msgstr "将命令行参数作为源码 RPM 处理" + + #: plugins/builddep.py:144 + msgid "RPM: {}" +-msgstr "" ++msgstr "RPM软件包: {}" + + #: 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) ++#. 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'" +@@ -87,27 +90,28 @@ 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 "" ++"显示自 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,109 +124,111 @@ 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 {}" + msgstr "{}的变更记录" + +-#: plugins/config_manager.py:37 ++#: plugins/config_manager.py:38 + #, python-brace-format + msgid "manage {prog} configuration options and repositories" +-msgstr "" ++msgstr "管理 {prog} 配置选项和软件仓库" + +-#: plugins/config_manager.py:44 ++#: plugins/config_manager.py:45 + msgid "repo to modify" + msgstr "要修改的仓库" + +-#: plugins/config_manager.py:47 ++#: plugins/config_manager.py:48 + msgid "save the current options (useful with --setopt)" + msgstr "保存当前选项(与 --setopt 和用)" + +-#: plugins/config_manager.py:50 ++#: plugins/config_manager.py:51 + msgid "add (and enable) the repo from the specified file or url" + msgstr "从指定文件或 URL 添加(并启用)仓库" + +-#: plugins/config_manager.py:53 ++#: plugins/config_manager.py:54 + msgid "print current configuration values to stdout" + msgstr "打印当前配置值到标准输出" + +-#: plugins/config_manager.py:56 ++#: plugins/config_manager.py:57 + msgid "print variable values to stdout" + msgstr "打印变量值到标准输出" + +-#: plugins/config_manager.py:60 ++#: plugins/config_manager.py:61 + msgid "enable repos (automatically saves)" +-msgstr "" ++msgstr "启用仓库(自动保存)" + +-#: plugins/config_manager.py:63 ++#: plugins/config_manager.py:64 + msgid "disable repos (automatically saves)" +-msgstr "" ++msgstr "禁用仓库(自动保存)" + +-#: plugins/config_manager.py:77 ++#: plugins/config_manager.py:78 + msgid "one of the following arguments is required: {}" +-msgstr "" ++msgstr "需要以下参数之一:{}" + +-#: plugins/config_manager.py:86 ++#: plugins/config_manager.py:87 + 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 ++#: plugins/config_manager.py:132 + #, python-format + msgid "No matching repo to modify: %s." + msgstr "没有匹配的仓库可以修改:%s 。" + +-#: plugins/config_manager.py:182 ++#: plugins/config_manager.py:183 + #, python-format + msgid "Adding repo from: %s" + msgstr "添加仓库自:%s" + +-#: plugins/config_manager.py:206 ++#: plugins/config_manager.py:207 + msgid "Configuration of repo failed" + msgid_plural "Configuration of repos failed" + msgstr[0] "配置仓库失败" + +-#: plugins/config_manager.py:216 ++#: plugins/config_manager.py:217 + #, python-format + msgid "Could not save repo to repofile %s: %s" + msgstr "无法保存仓库至仓库文件 %s:%s" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "y" + msgstr "y" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "yes" + msgstr "是" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "n" + msgstr "n" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "no" + msgstr "否" + +-#: plugins/copr.py:79 ++#: plugins/copr.py:84 + msgid "Interact with Copr repositories." +-msgstr "与 Copr 仓库交互" ++msgstr "与 Copr 仓库交互。" + +-#: plugins/copr.py:81 ++#: plugins/copr.py:86 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -250,7 +256,7 @@ msgstr "" + " list --available-by-user=NAME\n" + " search project\n" + "\n" +-" Examples:\n" ++" 例如:\n" + " copr enable rhscl/perl516 epel-6-x86_64\n" + " copr enable ignatenkobrain/ocltoys\n" + " copr disable rhscl/perl516\n" +@@ -260,53 +266,65 @@ msgstr "" + " copr search tests\n" + " " + +-#: plugins/copr.py:107 ++#: plugins/copr.py:112 + msgid "List all installed Copr repositories (default)" + msgstr "列出所有安装的 Copr 仓库(默认)" + +-#: plugins/copr.py:109 ++#: plugins/copr.py:114 + msgid "List enabled Copr repositories" + msgstr "列出启动的 Copr 仓库" + +-#: plugins/copr.py:111 ++#: plugins/copr.py:116 + msgid "List disabled Copr repositories" + msgstr "列出禁用的 Copr 仓库" + +-#: plugins/copr.py:113 ++#: plugins/copr.py:118 + msgid "List available Copr repositories by user NAME" + msgstr "按照用户 NAME 列出可用的 Copr 仓库" + +-#: plugins/copr.py:115 ++#: plugins/copr.py:120 + msgid "Specify an instance of Copr to work with" +-msgstr "" ++msgstr "指定需要使用的 Copr 实例" + +-#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 ++#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 + msgid "Error: " + msgstr "错误: " + +-#: plugins/copr.py:150 ++#: plugins/copr.py:155 + msgid "" +-"specify Copr hub either with `--hub` or using " +-"`copr_hub/copr_username/copr_projectname` format" ++"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 ++#: plugins/copr.py:158 + msgid "multiple hubs specified" +-msgstr "" ++msgstr "指定多个 hub" + +-#: plugins/copr.py:218 plugins/copr.py:222 ++#: plugins/copr.py:223 plugins/copr.py:227 + msgid "exactly two additional parameters to copr command are required" + msgstr "Copr 命令要求有且仅有两个额外参数" + +-#: plugins/copr.py:238 ++#: plugins/copr.py:232 ++msgid "Too many arguments." ++msgstr "参数过多。" ++ ++#: plugins/copr.py:235 ++msgid "" ++"Bad format of optional chroot. The format is distribution-version-" ++"architecture." ++msgstr "可选 chroot 的错误格式。格式为 distribution-version-architecture。" ++ ++#: plugins/copr.py:250 + msgid "use format `copr_username/copr_projectname` to reference copr project" + msgstr "使用格式 `copr_username/copr_projectname` 来引用 Copr 项目" + +-#: plugins/copr.py:240 ++#: plugins/copr.py:252 + msgid "bad copr project format" + msgstr "错误的 Copr 项目格式" + +-#: plugins/copr.py:254 ++#: plugins/copr.py:266 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -314,78 +332,93 @@ msgid "" + "\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" ++",\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" ++"\n" ++"Fedora 项目对其不行使除了于 Copr 常见问题\n" ++"\n" ++"中所提出的规则外的任何权力,并且其软件包不保证达到特定质量\n" ++"和安全水准。\n" ++"\n" ++"请不要在 Fedora Bugzilla 中报告这些软件包中出现的\n" ++"问题。当出现问题时,请联系仓库的所有者。\n" + +-#: plugins/copr.py:271 ++#: plugins/copr.py:283 + msgid "Repository successfully enabled." + msgstr "启用软件仓库成功。" + +-#: plugins/copr.py:276 ++#: plugins/copr.py:288 + msgid "Repository successfully disabled." + msgstr "禁用软件仓库成功。" + +-#: plugins/copr.py:280 ++#: plugins/copr.py:292 + msgid "Repository successfully removed." + msgstr "软件仓库已成功删除。" + +-#: plugins/copr.py:284 plugins/copr.py:693 ++#: plugins/copr.py:296 plugins/copr.py:697 + msgid "Unknown subcommand {}." + msgstr "未知的子命令 {}。" + +-#: plugins/copr.py:341 ++#: plugins/copr.py:353 + 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 " ++"* 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:353 ++#: plugins/copr.py:366 + msgid "Can't parse repositories for username '{}'." + msgstr "无法为用户名 username '{}' 解析仓库。" + +-#: plugins/copr.py:356 ++#: plugins/copr.py:369 + msgid "List of {} coprs" + msgstr "{} Coprs 列表" + +-#: plugins/copr.py:364 ++#: plugins/copr.py:374 + msgid "No description given" + msgstr "没有给出描述" + +-#: plugins/copr.py:376 ++#: plugins/copr.py:386 + msgid "Can't parse search for '{}'." + msgstr "无法解析针对 '{}' 的搜索。" + +-#: plugins/copr.py:379 ++#: plugins/copr.py:389 + msgid "Matched: {}" + msgstr "匹配:{}" + +-#: plugins/copr.py:387 ++#: plugins/copr.py:394 + msgid "No description given." + msgstr "没有给出描述。" + +-#: plugins/copr.py:410 ++#: plugins/copr.py:416 + msgid "Safe and good answer. Exiting." + msgstr "安全及明智的答案。退出。" + +-#: plugins/copr.py:417 ++#: plugins/copr.py:423 + msgid "This command has to be run under the root user." +-msgstr "该命令必须以 root 用户运行" ++msgstr "该命令必须以 root 用户运行。" + +-#: plugins/copr.py:481 ++#: plugins/copr.py:485 + msgid "" + "This repository does not have any builds yet so you cannot enable it now." + msgstr "该仓库尚未包含任何构建所以您现在无法启用它。" + +-#: plugins/copr.py:484 ++#: plugins/copr.py:488 + msgid "Such repository does not exist." + msgstr "该软件仓库不存在。" + +-#: plugins/copr.py:528 ++#: plugins/copr.py:532 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -401,47 +434,57 @@ 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 ++#: plugins/copr.py:553 + msgid "Do you want to keep them enabled?" +-msgstr "" ++msgstr "您需要保持它们被启用吗?" + +-#: plugins/copr.py:582 ++#: plugins/copr.py:586 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" +-msgstr "" ++msgstr "删除 copr 仓库 {0}/{1}/{2} 失败" + +-#: plugins/copr.py:593 ++#: plugins/copr.py:597 + msgid "Failed to disable copr repo {}/{}" + msgstr "无法禁用 Copr 软件仓库 {}/{}" + +-#: plugins/copr.py:611 plugins/copr.py:648 ++#: plugins/copr.py:615 plugins/copr.py:652 + msgid "Unknown response from server." + msgstr "来自服务器的未知响应。" + +-#: plugins/copr.py:633 ++#: plugins/copr.py:637 + msgid "Interact with Playground repository." + msgstr "与 Playground 仓库交互。" + +-#: plugins/copr.py:639 +-#, fuzzy +-#| msgid "Interact with Playground repository." ++#: plugins/copr.py:643 + msgid "Enabling a Playground repository." +-msgstr "与 Playground 仓库交互。" ++msgstr "启用 Playground 仓库。" + +-#: plugins/copr.py:640 ++#: plugins/copr.py:644 + msgid "Do you want to continue?" +-msgstr "" ++msgstr "您希望继续吗?" + +-#: plugins/copr.py:683 ++#: plugins/copr.py:687 + msgid "Playground repositories successfully enabled." + msgstr "启用 Playground 仓库成功。" + +-#: plugins/copr.py:686 ++#: plugins/copr.py:690 + msgid "Playground repositories successfully disabled." + msgstr "禁用 Playground 仓库成功。" + +-#: plugins/copr.py:690 ++#: plugins/copr.py:694 + msgid "Playground repositories successfully updated." + msgstr "更新 Playground 仓库成功。" + +@@ -489,6 +532,8 @@ msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." + msgstr "" ++"允许删除仅安装(install-only)的软件包。使用这个选项可能会导致尝试删除正在运行" ++"的内核。" + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -497,7 +542,7 @@ msgstr "转储文件名称" + #: plugins/debug.py:273 + #, python-format + msgid "Package %s is not available" +-msgstr "软件包 %s 不可用。" ++msgstr "软件包 %s 不可用" + + #: plugins/debug.py:283 + #, python-format +@@ -512,25 +557,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,13 +599,13 @@ 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." +-msgstr "限定查询指定架构的软件包" ++msgstr "限定查询指定架构的软件包。" + +-#: plugins/download.py:62 ++#: plugins/download.py:62 plugins/modulesync.py:51 + msgid "resolve and download needed dependencies" + msgstr "解析并下载所需的依赖关系" + +@@ -568,7 +613,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 +624,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 +647,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:261 ++msgid "No match for argument: {}" ++msgstr "未找到匹配的参数: {}" ++ ++#: plugins/groups_manager.py:298 ++msgid "Can't remove packages from non-existent group" ++msgstr "无法从不存在的组中删除软件包" ++ ++#: plugins/groups_manager.py:307 ++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 +793,127 @@ msgstr "迁移 yum 的历史、分组以及 yumdb 数据至 dnf" + msgid "Migrating history data..." + msgstr "正在迁移历史数据…" + +-#: plugins/needs_restarting.py:65 ++#: plugins/modulesync.py:37 ++msgid "" ++"Download packages from modules and/or create a repository with modular data" ++msgstr "从模块下载软件包和/或创建带有模块化数据的存储库" ++ ++#: plugins/modulesync.py:44 ++msgid "MODULE" ++msgstr "模块" ++ ++#: plugins/modulesync.py:45 ++msgid "modules to download" ++msgstr "要下载的模块" ++ ++#: plugins/modulesync.py:47 ++msgid "enable repositories with source packages" ++msgstr "启用带有源软件包的软件仓库" ++ ++#: plugins/modulesync.py:49 ++msgid "enable repositories with debug-info and debug-source packages" ++msgstr "启用带有 debug-info 和 debug-source 软件包的软件仓库" ++ ++#: plugins/modulesync.py:53 ++msgid "download only packages from newest modules" ++msgstr "只从最新的模块中下载软件包" ++ ++#: plugins/modulesync.py:85 ++msgid "Unable to find a match for argument: '{}'" ++msgid_plural "Unable to find a match for arguments: '{}'" ++msgstr[0] "找不到与参数:'{}'相匹配的项" ++ ++#: plugins/modulesync.py:107 ++msgid "" ++"Creation of repository failed with return code {}. All downloaded content " ++"was kept on the system" ++msgstr "创建存储库会失败,并显示返回码 {}。所有下载的内容都保存在系统上" ++ ++#: plugins/modulesync.py:144 ++#, python-brace-format ++msgid "No match for artifact '{0}' from module '{1}'" ++msgstr "没有与模块 '{1}' 的工件 '{0}' 相匹配的项" ++ ++#: plugins/modulesync.py:162 ++#, python-brace-format ++msgid "No match for package name '{0}' in profile {1} from module {2}" ++msgstr "没有与模块 {2} 中配置文件 {1} 的软件包名称 '{0}' 相匹配的项" ++ ++#: plugins/modulesync.py:166 ++msgid "No mach for argument '{}'" ++msgstr "没有与参数 '{}' 相匹配的项" ++ ++#. TODO(jmracek) Shell we end with an error or with RC 1? ++#: plugins/modulesync.py:198 ++msgid "Unable to satisfy require {}" ++msgstr "无法满足要求 {}" ++ ++#: 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:220 + msgid "determine updated binaries that need restarting" + msgstr "判断所升级的二进制文件是否需要重启" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:225 + msgid "only consider this user's processes" + msgstr "仅考虑当前用户的进程" + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:227 + 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 ++msgid "only report affected systemd services" ++msgstr "只报告受影响的 systemd 服务" ++ ++#: plugins/needs_restarting.py:253 + msgid "Core libraries or services have been updated since boot-up:" +-msgstr "" ++msgstr "在引导后 Core 库或服务已被更新 :" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:258 + msgid "Reboot is required to fully utilize these updates." +-msgstr "" ++msgstr "需要重新启动后才可以使这些更新完全生效。" + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:259 + msgid "More information:" +-msgstr "" ++msgstr "更多信息 :" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:263 + msgid "No core libraries or services have been updated since boot-up." +-msgstr "" ++msgstr "在引导后没有 core 库或服务被更新。" + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:265 + 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 ++#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:159 + #, python-format + msgid "post-transaction-actions: %s" +-msgstr "" ++msgstr "事物后的操作: %s" + +-#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:161 + #, 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 +941,136 @@ 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 "" ++"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 "" ++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" +@@ -863,112 +1089,124 @@ msgstr "管理 RPM 软件包目录" + msgid "Pass either --old or --new, not both!" + msgstr "传入 --old 或者 --new,不可同时传入!" + +-#: plugins/repomanage.py:71 ++#: plugins/repomanage.py:89 + msgid "No files to process" + msgstr "没有可处理的文件" + +-#: plugins/repomanage.py:93 ++#: plugins/repomanage.py:96 + msgid "Could not open {}" + msgstr "无法打开 {}" + +-#: plugins/repomanage.py:177 ++#: plugins/repomanage.py:180 + msgid "Print the older packages" + msgstr "打印较旧的软件包" + +-#: plugins/repomanage.py:179 ++#: plugins/repomanage.py:182 + msgid "Print the newest packages" + msgstr "打印最新的软件包" + +-#: plugins/repomanage.py:181 ++#: plugins/repomanage.py:184 + msgid "Space separated output, not newline" + msgstr "用空格分割输出,而不是新行" + +-#: plugins/repomanage.py:183 ++#: plugins/repomanage.py:186 + msgid "Newest N packages to keep - defaults to 1" + msgstr "要保留的最新的 N 个软件包 - 默认值为 1" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:189 + 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 "" ++"where to store downloaded repository metadata. Defaults to the value of --" ++"download-path." ++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:87 ++msgid "download only source packages" ++msgstr "只下载源软件包" + +-#: plugins/reposync.py:85 ++#: 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 已保存" +@@ -977,66 +1215,71 @@ msgstr "仓库 %s 的 comps.xml 已保存" + msgid "New leaves:" + msgstr "新增保留项:" + +-#: plugins/versionlock.py:32 ++#: plugins/versionlock.py:33 + #, python-format + msgid "Unable to read version lock configuration: %s" + msgstr "无法读取版本锁配置: %s" + +-#: plugins/versionlock.py:33 ++#: plugins/versionlock.py:34 + msgid "Locklist not set" + msgstr "锁列表未设置" + +-#: plugins/versionlock.py:34 ++#: plugins/versionlock.py:35 + msgid "Adding versionlock on:" + msgstr "正在添加版本锁:" + +-#: plugins/versionlock.py:35 ++#: plugins/versionlock.py:36 + msgid "Adding exclude on:" + msgstr "正在添加排除:" + +-#: plugins/versionlock.py:36 ++#: plugins/versionlock.py:37 + msgid "Package already locked in equivalent form:" +-msgstr "" ++msgstr "软件包已使用等同的格式锁定:" + +-#: plugins/versionlock.py:37 ++#: plugins/versionlock.py:38 + msgid "Package {} is already locked" +-msgstr "" ++msgstr "软件包 {} 已被锁定" + +-#: plugins/versionlock.py:38 ++#: plugins/versionlock.py:39 + msgid "Package {} is already excluded" +-msgstr "" ++msgstr "软件包 {} 已被排除" + +-#: plugins/versionlock.py:39 ++#: plugins/versionlock.py:40 + msgid "Deleting versionlock for:" + msgstr "正在删除版本锁:" + +-#: plugins/versionlock.py:40 ++#: plugins/versionlock.py:41 + msgid "No package found for:" + msgstr "未找到软件包:" + +-#: plugins/versionlock.py:41 ++#: plugins/versionlock.py:42 + msgid "Excludes from versionlock plugin were not applied" + msgstr "从 versionlock 插件中排除的没有被应用" + +-#: plugins/versionlock.py:42 ++#: plugins/versionlock.py:43 + 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: {}" ++#: plugins/versionlock.py:44 ++msgid "" ++"Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" + msgstr "Versionlock 插件: 文件 \"{}\" 中的排除规则数量被应用:{}" + +-#: plugins/versionlock.py:44 ++#: plugins/versionlock.py:45 + msgid "Versionlock plugin: could not parse pattern:" + msgstr "Versionlock 插件:不能解析特征:" + +-#: plugins/versionlock.py:130 ++#: plugins/versionlock.py:134 + msgid "control package version locks" + msgstr "控制软件包版本锁" + +-#: plugins/versionlock.py:136 ++#: plugins/versionlock.py:140 + msgid "Use package specifications as they are, do not try to parse them" +-msgstr "" ++msgstr "按原样使用程序包规格,请勿尝试解析它们" ++ ++#: plugins/versionlock.py:160 ++msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." ++msgstr "子命令 '{}' 已被弃用。改为使用 'exclude' 子命令。" + + #~ msgid "" + #~ "\n" +diff --git a/po/zh_TW.po b/po/zh_TW.po +index 755d9e6..f7ea95b 100644 +--- a/po/zh_TW.po ++++ b/po/zh_TW.po +@@ -10,10 +10,11 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2020-10-05 09:18-0400\n" ++"POT-Creation-Date: 2022-02-28 11:53+0100\n" + "PO-Revision-Date: 2020-08-28 21:29+0000\n" + "Last-Translator: Yi-Jyun Pan \n" +-"Language-Team: Chinese (Traditional) \n" ++"Language-Team: Chinese (Traditional) \n" + "Language: zh_TW\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" +@@ -59,8 +60,7 @@ 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) ++#. 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'" +@@ -141,92 +141,92 @@ msgstr "列出所有變更記錄" + msgid "Changelogs for {}" + msgstr "{} 的變更記錄" + +-#: plugins/config_manager.py:37 ++#: plugins/config_manager.py:38 + #, python-brace-format + msgid "manage {prog} configuration options and repositories" + msgstr "管理 {prog} 的設定選項及軟體庫" + +-#: plugins/config_manager.py:44 ++#: plugins/config_manager.py:45 + msgid "repo to modify" + msgstr "要修改的軟體庫" + +-#: plugins/config_manager.py:47 ++#: plugins/config_manager.py:48 + msgid "save the current options (useful with --setopt)" + msgstr "儲存目前的選項(用於 --setopt)" + +-#: plugins/config_manager.py:50 ++#: plugins/config_manager.py:51 + msgid "add (and enable) the repo from the specified file or url" + msgstr "從指定的檔案或 URL 新增(並啟用)此軟體庫" + +-#: plugins/config_manager.py:53 ++#: plugins/config_manager.py:54 + msgid "print current configuration values to stdout" + msgstr "輸出目前的設定檔值至標準輸出" + +-#: plugins/config_manager.py:56 ++#: plugins/config_manager.py:57 + msgid "print variable values to stdout" + msgstr "輸出變數值至標準輸出" + +-#: plugins/config_manager.py:60 ++#: plugins/config_manager.py:61 + msgid "enable repos (automatically saves)" + msgstr "啟用軟體庫(自動儲存)" + +-#: plugins/config_manager.py:63 ++#: plugins/config_manager.py:64 + msgid "disable repos (automatically saves)" + msgstr "停用軟體庫(自動儲存)" + +-#: plugins/config_manager.py:77 ++#: plugins/config_manager.py:78 + msgid "one of the following arguments is required: {}" + msgstr "需要以下任一引數:{}" + +-#: plugins/config_manager.py:86 ++#: plugins/config_manager.py:87 + msgid "" + "Warning: --enablerepo/--disablerepo arguments have no meaningwith config " + "manager. Use --set-enabled/--set-disabled instead." + msgstr "" +-"警告:--enablerepo/--disablerepo 引數在組態管理員下沒有意義。請改用 --set-enabled/--set-" +-"disabled。" ++"警告:--enablerepo/--disablerepo 引數在組態管理員下沒有意義。請改用 --set-" ++"enabled/--set-disabled。" + +-#: plugins/config_manager.py:131 ++#: plugins/config_manager.py:132 + #, python-format + msgid "No matching repo to modify: %s." + msgstr "沒有符合要修改的軟體庫:%s。" + +-#: plugins/config_manager.py:182 ++#: plugins/config_manager.py:183 + #, python-format + msgid "Adding repo from: %s" + msgstr "從下述加入軟體庫:%s" + +-#: plugins/config_manager.py:206 ++#: plugins/config_manager.py:207 + msgid "Configuration of repo failed" + msgid_plural "Configuration of repos failed" + msgstr[0] "設定軟體庫失敗" + +-#: plugins/config_manager.py:216 ++#: plugins/config_manager.py:217 + #, python-format + msgid "Could not save repo to repofile %s: %s" + msgstr "無法儲存軟體庫至 repofile %s:%s" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "y" + msgstr "y" + +-#: plugins/copr.py:59 ++#: plugins/copr.py:64 + msgid "yes" + msgstr "yes" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "n" + msgstr "n" + +-#: plugins/copr.py:60 ++#: plugins/copr.py:65 + msgid "no" + msgstr "no" + +-#: plugins/copr.py:79 ++#: plugins/copr.py:84 + msgid "Interact with Copr repositories." + msgstr "與 Copr 軟體庫互動。" + +-#: plugins/copr.py:81 ++#: plugins/copr.py:86 + msgid "" + "\n" + " enable name/project [chroot]\n" +@@ -264,54 +264,67 @@ msgstr "" + " copr search tests\n" + " " + +-#: plugins/copr.py:107 ++#: plugins/copr.py:112 + msgid "List all installed Copr repositories (default)" + msgstr "列出所有安裝的 Copr 軟體庫(預設值)" + +-#: plugins/copr.py:109 ++#: plugins/copr.py:114 + msgid "List enabled Copr repositories" + msgstr "列出啟用的 Copr 軟體庫" + +-#: plugins/copr.py:111 ++#: plugins/copr.py:116 + msgid "List disabled Copr repositories" + msgstr "列出停用的 Copr 軟體庫" + +-#: plugins/copr.py:113 ++#: plugins/copr.py:118 + msgid "List available Copr repositories by user NAME" + msgstr "列出使用者 NAME 可用的 Copr 軟體庫" + +-#: plugins/copr.py:115 ++#: plugins/copr.py:120 + msgid "Specify an instance of Copr to work with" + msgstr "指定要使用 Copr 的實體:" + +-#: plugins/copr.py:149 plugins/copr.py:217 plugins/copr.py:237 ++#: plugins/copr.py:154 plugins/copr.py:222 plugins/copr.py:249 + msgid "Error: " + msgstr "錯誤: " + +-#: plugins/copr.py:150 ++#: plugins/copr.py:155 + msgid "" +-"specify Copr hub either with `--hub` or using " +-"`copr_hub/copr_username/copr_projectname` format" ++"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" ++"使用 `--hub` 或者用 `copr_hub/copr_username/copr_projectname` 格式指定 Copr " ++"hub" + +-#: plugins/copr.py:153 ++#: plugins/copr.py:158 + msgid "multiple hubs specified" + msgstr "指定了多個 hub" + +-#: plugins/copr.py:218 plugins/copr.py:222 ++#: plugins/copr.py:223 plugins/copr.py:227 + msgid "exactly two additional parameters to copr command are required" + msgstr "傳入 copr 命令的選用參數必須剛好兩個" + +-#: plugins/copr.py:238 ++#: plugins/copr.py:232 ++#, fuzzy ++#| msgid "No match for argument: %s" ++msgid "Too many arguments." ++msgstr "引數不符:%s" ++ ++#: plugins/copr.py:235 ++msgid "" ++"Bad format of optional chroot. The format is distribution-version-" ++"architecture." ++msgstr "" ++ ++#: plugins/copr.py:250 + msgid "use format `copr_username/copr_projectname` to reference copr project" + msgstr "使用 `copr_username/copr_projectname` 格式來參照 Copr 專案" + +-#: plugins/copr.py:240 ++#: plugins/copr.py:252 + msgid "bad copr project format" + msgstr "Copr 專案格式無效" + +-#: plugins/copr.py:254 ++#: plugins/copr.py:266 + msgid "" + "\n" + "Enabling a Copr repository. Please note that this repository is not part\n" +@@ -319,7 +332,8 @@ msgid "" + "\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" ++",\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" +@@ -330,77 +344,80 @@ msgstr "" + "不是主散布版的一部分,並且品質不定。\n" + "\n" + "Fedora Project 不會對這個軟體庫的內容行使任何超出 Copr 常見問題\n" +-"()\n" ++"()\n" + "列出規則之外的權力,且軟體包並不保有任何的品質與安全性保證。\n" + "\n" + "請不要將這些軟體包的漏洞回報至 Fedora Bugzilla。\n" + "假如碰到問題,請聯絡此軟體庫的擁有者。\n" + +-#: plugins/copr.py:271 ++#: plugins/copr.py:283 + msgid "Repository successfully enabled." + msgstr "軟體庫成功啟用。" + +-#: plugins/copr.py:276 ++#: plugins/copr.py:288 + msgid "Repository successfully disabled." + msgstr "軟體庫成功停用。" + +-#: plugins/copr.py:280 ++#: plugins/copr.py:292 + msgid "Repository successfully removed." + msgstr "軟體庫成功移除。" + +-#: plugins/copr.py:284 plugins/copr.py:693 ++#: plugins/copr.py:296 plugins/copr.py:697 + msgid "Unknown subcommand {}." + msgstr "{} 子命令未知。" + +-#: plugins/copr.py:341 ++#: plugins/copr.py:353 + 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 " ++"* 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 檔案 — 已假設為預設 hub。請重新啟用專案以修正。" ++msgstr "" ++"* 這些 Copr 包含可能沒有 Copr hub 資訊的舊格式 repo 檔案 — 已假設為預設 hub。" ++"請重新啟用專案以修正。" + +-#: plugins/copr.py:353 ++#: plugins/copr.py:366 + msgid "Can't parse repositories for username '{}'." + msgstr "無法解析「{}」使用者名稱的軟體庫。" + +-#: plugins/copr.py:356 ++#: plugins/copr.py:369 + msgid "List of {} coprs" + msgstr "{} Copr 清單" + +-#: plugins/copr.py:364 ++#: plugins/copr.py:374 + msgid "No description given" + msgstr "沒有提供描述" + +-#: plugins/copr.py:376 ++#: plugins/copr.py:386 + msgid "Can't parse search for '{}'." + msgstr "無法解析「{}」搜尋。" + +-#: plugins/copr.py:379 ++#: plugins/copr.py:389 + msgid "Matched: {}" + msgstr "符合項目:{}" + +-#: plugins/copr.py:387 ++#: plugins/copr.py:394 + msgid "No description given." + msgstr "沒有提供描述。" + +-#: plugins/copr.py:410 ++#: plugins/copr.py:416 + msgid "Safe and good answer. Exiting." + msgstr "安全且更棒的回應。結束。" + +-#: plugins/copr.py:417 ++#: plugins/copr.py:423 + msgid "This command has to be run under the root user." + msgstr "此命令必須在 root 使用者下執行" + +-#: plugins/copr.py:481 ++#: plugins/copr.py:485 + msgid "" + "This repository does not have any builds yet so you cannot enable it now." + msgstr "這個軟體庫尚無任何組建,所以您尚無法啟用。" + +-#: plugins/copr.py:484 ++#: plugins/copr.py:488 + msgid "Such repository does not exist." + msgstr "不存在此軟體庫。" + +-#: plugins/copr.py:528 ++#: plugins/copr.py:532 + #, python-brace-format + msgid "" + "Maintainer of the enabled Copr repository decided to make\n" +@@ -417,44 +434,44 @@ msgid "" + "These repositories have been enabled automatically." + msgstr "" + +-#: plugins/copr.py:549 ++#: plugins/copr.py:553 + msgid "Do you want to keep them enabled?" + msgstr "是否保持啟用?" + +-#: plugins/copr.py:582 ++#: plugins/copr.py:586 + #, python-brace-format + msgid "Failed to remove copr repo {0}/{1}/{2}" + msgstr "無法移除 Copr 軟體庫 {0}/{1}/{2}" + +-#: plugins/copr.py:593 ++#: plugins/copr.py:597 + msgid "Failed to disable copr repo {}/{}" + msgstr "無法停用 Copr 軟體庫 {}/{}" + +-#: plugins/copr.py:611 plugins/copr.py:648 ++#: plugins/copr.py:615 plugins/copr.py:652 + msgid "Unknown response from server." + msgstr "未知的伺服器回應。" + +-#: plugins/copr.py:633 ++#: plugins/copr.py:637 + msgid "Interact with Playground repository." + msgstr "與 Playground 軟體庫互動。" + +-#: plugins/copr.py:639 ++#: plugins/copr.py:643 + msgid "Enabling a Playground repository." + msgstr "啟用 Playground 軟體庫。" + +-#: plugins/copr.py:640 ++#: plugins/copr.py:644 + msgid "Do you want to continue?" + msgstr "是否繼續?" + +-#: plugins/copr.py:683 ++#: plugins/copr.py:687 + msgid "Playground repositories successfully enabled." + msgstr "Playground 軟體庫成功啟用。" + +-#: plugins/copr.py:686 ++#: plugins/copr.py:690 + msgid "Playground repositories successfully disabled." + msgstr "Playground 軟體庫成功停用。" + +-#: plugins/copr.py:690 ++#: plugins/copr.py:694 + msgid "Playground repositories successfully updated." + msgstr "Playground 軟體庫成功更新。" + +@@ -501,7 +518,9 @@ msgstr "限縮至指定類型" + msgid "" + "Allow removing of install-only packages. Using this option may result in an " + "attempt to remove the running kernel." +-msgstr "允許移除僅安裝 (install-only) 軟體包。啟用這個選項可能會導致執行中內核被移除。" ++msgstr "" ++"允許移除僅安裝 (install-only) 軟體包。啟用這個選項可能會導致執行中內核被移" ++"除。" + + #: plugins/debug.py:202 + msgid "name of dump file" +@@ -573,7 +592,7 @@ msgstr "改下載 -debugsource 軟體包" + msgid "limit the query to packages of given architectures." + msgstr "將查詢限縮至指定架構的軟體包。" + +-#: plugins/download.py:62 ++#: plugins/download.py:62 plugins/modulesync.py:51 + msgid "resolve and download needed dependencies" + msgstr "解析並下載需要的依賴關係" + +@@ -592,7 +611,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" +@@ -615,6 +634,134 @@ msgstr "未指定 %s 的來源 RPM" + 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 ++#, fuzzy ++#| msgid "Failed to get mirror for the group file." ++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:261 ++#, fuzzy ++#| msgid "No match for argument: %s" ++msgid "No match for argument: {}" ++msgstr "引數不符:%s" ++ ++#: plugins/groups_manager.py:298 ++msgid "Can't remove packages from non-existent group" ++msgstr "" ++ ++#: plugins/groups_manager.py:307 ++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 "列出其他軟體包已經不需要的安裝軟體包" +@@ -647,43 +794,112 @@ msgstr "遷移 yum 的歷史記錄、群組與 yumdb 資料至 dnf" + msgid "Migrating history data..." + msgstr "正在遷移歷史資料…" + +-#: plugins/needs_restarting.py:65 ++#: plugins/modulesync.py:37 ++msgid "" ++"Download packages from modules and/or create a repository with modular data" ++msgstr "" ++ ++#: plugins/modulesync.py:44 ++msgid "MODULE" ++msgstr "" ++ ++#: plugins/modulesync.py:45 ++#, fuzzy ++#| msgid "packages to download" ++msgid "modules to download" ++msgstr "要下載的軟體包" ++ ++#: plugins/modulesync.py:47 ++#, fuzzy ++#| msgid "operate on source packages" ++msgid "enable repositories with source packages" ++msgstr "在來源軟體包上操作" ++ ++#: plugins/modulesync.py:49 ++msgid "enable repositories with debug-info and debug-source packages" ++msgstr "" ++ ++#: plugins/modulesync.py:53 ++#, fuzzy ++#| msgid "download all packages from remote repo" ++msgid "download only packages from newest modules" ++msgstr "從遠端軟體庫下載所有軟體包" ++ ++#: plugins/modulesync.py:85 ++#, fuzzy ++#| msgid "No match for argument: %s" ++msgid "Unable to find a match for argument: '{}'" ++msgid_plural "Unable to find a match for arguments: '{}'" ++msgstr[0] "引數不符:%s" ++ ++#: plugins/modulesync.py:107 ++msgid "" ++"Creation of repository failed with return code {}. All downloaded content " ++"was kept on the system" ++msgstr "" ++ ++#: plugins/modulesync.py:144 ++#, python-brace-format ++msgid "No match for artifact '{0}' from module '{1}'" ++msgstr "" ++ ++#: plugins/modulesync.py:162 ++#, python-brace-format ++msgid "No match for package name '{0}' in profile {1} from module {2}" ++msgstr "" ++ ++#: plugins/modulesync.py:166 ++#, fuzzy ++#| msgid "No match for argument: %s" ++msgid "No mach for argument '{}'" ++msgstr "引數不符:%s" ++ ++#. TODO(jmracek) Shell we end with an error or with RC 1? ++#: plugins/modulesync.py:198 ++msgid "Unable to satisfy require {}" ++msgstr "" ++ ++#: plugins/needs_restarting.py:66 + #, fuzzy, 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 ++#: plugins/needs_restarting.py:220 + msgid "determine updated binaries that need restarting" + msgstr "決定需要重新啟動的已更新二進位檔" + +-#: plugins/needs_restarting.py:204 ++#: plugins/needs_restarting.py:225 + msgid "only consider this user's processes" + msgstr "只考慮此位使用者的處理程序" + +-#: plugins/needs_restarting.py:206 ++#: plugins/needs_restarting.py:227 + 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 "only report affected systemd services" ++msgstr "" ++ ++#: plugins/needs_restarting.py:253 + msgid "Core libraries or services have been updated since boot-up:" + msgstr "開機後更新過的核心函式庫或服務:" + +-#: plugins/needs_restarting.py:235 ++#: plugins/needs_restarting.py:258 + msgid "Reboot is required to fully utilize these updates." + msgstr "需要重新啟動,才可以完全套用這些更新。" + +-#: plugins/needs_restarting.py:236 ++#: plugins/needs_restarting.py:259 + msgid "More information:" + msgstr "更多資訊:" + +-#: plugins/needs_restarting.py:240 ++#: plugins/needs_restarting.py:263 + msgid "No core libraries or services have been updated since boot-up." + msgstr "開機後沒有更新過的核心函式庫或服務。" + +-#: plugins/needs_restarting.py:242 ++#: plugins/needs_restarting.py:265 + msgid "Reboot should not be necessary." + msgstr "應不需要重新啟動。" + +@@ -698,13 +914,13 @@ msgstr "動作列「%s」格式錯誤:%s" + msgid "Bad Transaction State: %s" + msgstr "無效的處理事項狀態:%s" + +-#: plugins/post-transaction-actions.py:153 +-#: plugins/post-transaction-actions.py:155 ++#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:159 + #, python-format + msgid "post-transaction-actions: %s" + msgstr "post-transaction-actions:%s" + +-#: plugins/post-transaction-actions.py:157 ++#: plugins/post-transaction-actions.py:161 + #, python-format + msgid "post-transaction-actions: Bad Command \"%s\": %s" + msgstr "post-transaction-actions:「%s」命令無效:%s" +@@ -757,8 +973,7 @@ msgstr "輸出跟變更大小有關的額外資料。" + + #: plugins/repodiff.py:69 + msgid "" +-"Compare packages also by arch. By default packages are compared just by " +-"name." ++"Compare packages also by arch. By default packages are compared just by name." + msgstr "也依架構比較軟體包。預設情況下,軟體包只會依名稱比較。" + + #: plugins/repodiff.py:72 +@@ -885,112 +1100,126 @@ msgstr "管理 rpm 軟體包目錄" + msgid "Pass either --old or --new, not both!" + msgstr "只能傳入 --old 或 --new 任一,而非兩者!" + +-#: plugins/repomanage.py:71 ++#: plugins/repomanage.py:89 + msgid "No files to process" + msgstr "沒有要處理的檔案" + +-#: plugins/repomanage.py:93 ++#: plugins/repomanage.py:96 + msgid "Could not open {}" + msgstr "無法開啟 {}" + +-#: plugins/repomanage.py:177 ++#: plugins/repomanage.py:180 + msgid "Print the older packages" + msgstr "顯示較舊的軟體包" + +-#: plugins/repomanage.py:179 ++#: plugins/repomanage.py:182 + msgid "Print the newest packages" + msgstr "顯示較新的軟體包" + +-#: plugins/repomanage.py:181 ++#: plugins/repomanage.py:184 + msgid "Space separated output, not newline" + msgstr "以空白而非換行分割輸出" + +-#: plugins/repomanage.py:183 ++#: plugins/repomanage.py:186 + msgid "Newest N packages to keep - defaults to 1" + msgstr "保留最新 N 個軟體包 — 預設值為 1" + +-#: plugins/repomanage.py:186 ++#: plugins/repomanage.py:189 + 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 "亦下載並解壓縮 comps.xml" +- +-#: 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 "只下載每個軟體庫最新的軟體包" ++#: 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" +-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." ++"where to store downloaded repository metadata. Defaults to the value of --" ++"download-path." + msgstr "儲存下載軟體庫之中介資料的位置。預設值為 --download-path 的值。" + ++#: plugins/reposync.py:78 ++msgid "download only newest packages per-repo" ++msgstr "只下載每個軟體庫最新的軟體包" ++ + #: 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 ++#, fuzzy ++#| msgid "operate on source packages" ++msgid "download only source packages" ++msgstr "在來源軟體包上操作" ++ ++#: plugins/reposync.py:89 + msgid "Just list urls of what would be downloaded, don't download" + msgstr "只列出會下載的 URL 而不下載" + +-#: plugins/reposync.py:109 ++#: plugins/reposync.py:113 + msgid "Can't use --norepopath with multiple repositories" + msgstr "無法在多個軟體庫使用 --norepopath" + +-#: plugins/reposync.py:127 ++#: plugins/reposync.py:132 + #, python-format + msgid "Failed to get mirror for metadata: %s" + msgstr "無法取得中介資料的鏡像站:%s" + +-#: 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 "[已刪除] %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" +@@ -999,67 +1228,72 @@ msgstr "已儲存 %s 軟體庫的 comps.xml" + msgid "New leaves:" + msgstr "新保留:" + +-#: plugins/versionlock.py:32 ++#: plugins/versionlock.py:33 + #, python-format + msgid "Unable to read version lock configuration: %s" + msgstr "無法讀取版本鎖設定:%s" + +-#: plugins/versionlock.py:33 ++#: plugins/versionlock.py:34 + msgid "Locklist not set" + msgstr "未設定鎖定列表" + +-#: plugins/versionlock.py:34 ++#: plugins/versionlock.py:35 + msgid "Adding versionlock on:" + msgstr "加入版本鎖於:" + +-#: plugins/versionlock.py:35 ++#: plugins/versionlock.py:36 + msgid "Adding exclude on:" + msgstr "加入排除於:" + +-#: plugins/versionlock.py:36 ++#: plugins/versionlock.py:37 + msgid "Package already locked in equivalent form:" + msgstr "版本已鎖定在下述等同格式:" + +-#: plugins/versionlock.py:37 ++#: plugins/versionlock.py:38 + msgid "Package {} is already locked" + msgstr "已鎖定 {} 軟體包" + +-#: plugins/versionlock.py:38 ++#: plugins/versionlock.py:39 + msgid "Package {} is already excluded" + msgstr "已排除 {} 軟體包" + +-#: plugins/versionlock.py:39 ++#: plugins/versionlock.py:40 + msgid "Deleting versionlock for:" + msgstr "刪除下述的版本鎖:" + +-#: plugins/versionlock.py:40 ++#: plugins/versionlock.py:41 + msgid "No package found for:" + msgstr "找不到下述的軟體包:" + +-#: plugins/versionlock.py:41 ++#: plugins/versionlock.py:42 + msgid "Excludes from versionlock plugin were not applied" + msgstr "不會套用到自 versionlock 插件排除的軟體包" + +-#: plugins/versionlock.py:42 ++#: plugins/versionlock.py:43 + 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: {}" ++#: plugins/versionlock.py:44 ++msgid "" ++"Versionlock plugin: number of exclude rules from file \"{}\" applied: {}" + msgstr "Versionlock 插件:已從「{}」檔案套用大量的排除規則:{}" + +-#: plugins/versionlock.py:44 ++#: plugins/versionlock.py:45 + msgid "Versionlock plugin: could not parse pattern:" + msgstr "Versionlock 插件:無法解析模式:" + +-#: plugins/versionlock.py:130 ++#: plugins/versionlock.py:134 + msgid "control package version locks" + msgstr "控制軟體包的版本鎖" + +-#: plugins/versionlock.py:136 ++#: plugins/versionlock.py:140 + msgid "Use package specifications as they are, do not try to parse them" + msgstr "使用其原本的軟體包規範,不要嘗試解析" + ++#: plugins/versionlock.py:160 ++msgid "Subcommand '{}' is deprecated. Use 'exclude' subcommand instead." ++msgstr "" ++ + #~ msgid "" + #~ "\n" + #~ "These repositories have been enabled automatically.\n" +-- +2.35.1 + diff --git a/SPECS/dnf-plugins-core.spec b/SPECS/dnf-plugins-core.spec index e33c9b2..64b8193 100644 --- a/SPECS/dnf-plugins-core.spec +++ b/SPECS/dnf-plugins-core.spec @@ -1,6 +1,6 @@ -%{?!dnf_lowest_compatible: %global dnf_lowest_compatible 4.2.22} +%{?!dnf_lowest_compatible: %global dnf_lowest_compatible 4.7.0-6} %global dnf_plugins_extra 2.0.0 -%global hawkey_version 0.46.1 +%global hawkey_version 0.63.0-6 %global yum_utils_subpackage_name dnf-utils %if 0%{?rhel} > 7 %global yum_utils_subpackage_name yum-utils @@ -34,7 +34,7 @@ Name: dnf-plugins-core Version: 4.0.21 -Release: 4%{?dist} +Release: 11%{?dist} Summary: Core Plugins for DNF License: GPLv2+ URL: https://github.com/rpm-software-management/dnf-plugins-core @@ -42,8 +42,15 @@ Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz Patch1: 0001-versionlock-Do-not-exclude-locked-obsoleters-RhBug1957280.patch Patch2: 0002-repomanage-Allow-running-only-with-metadata.patch Patch3: 0003-repomanage-Enhance-repomanage-documentation-RhBug1898293.patch -Patch4: 0004-Update-translations.patch -Patch5: 0005-needs-restarting-Fix-wrong-boot-time-RhBug1960437.patch +Patch4: 0004-copr-dont-traceback-on-empty-lines-in-etcos-release.patch +Patch5: 0005-reposync-Use-fail_fastFalse-when-downloading-packages-RhBug2009894.patch +Patch6: 0006-copr-migrate-all-calls-to-APIv3.patch +Patch7: 0007-groups-manager-More-benevolent-resolving-of-packages-RhBug2013633.patch +Patch8: 0008-versionlock-fix-multi-pkg-lock-RhBug2013324.patch +Patch9: 0009-Update-documentation-for-adding-specific-version-RhBug2013332.patch +Patch10: 0010-needs-restarting-Fix-wrong-boot-time-RhBug1960437.patch +Patch11: 0011-Add-new-command-modulesync-RhBug1868047.patch +Patch12: 0012-Update-translations-RhBug-2017271.patch BuildArch: noarch BuildRequires: cmake @@ -406,6 +413,19 @@ versions of those packages. This allows you to e.g. protect packages from being updated by newer versions. %endif +%if %{with python3} +%package -n python3-dnf-plugin-modulesync +Summary: Download module metadata and packages and create repository +Requires: python3-%{name} = %{version}-%{release} +Requires: createrepo_c >= 0.17.4 +Provides: dnf-plugin-modulesync = %{version}-%{release} +Provides: dnf-command(modulesync) + +%description -n python3-dnf-plugin-modulesync +Download module metadata from all enabled repositories, module artifacts and profiles of matching modules and create +repository. +%endif + %prep %autosetup -p1 %if %{with python2} @@ -766,12 +786,40 @@ ln -sf %{_mandir}/man1/%{yum_utils_subpackage_name}.1.gz %{buildroot}%{_mandir}/ %endif %endif -%changelog -* Thu Jan 06 2022 Pavla Kratochvilova - 4.0.21-4 -- [needs-restarting] Fix wrong boot time (RhBug:1960437,2037008) +%if %{with python3} +%files -n python3-dnf-plugin-modulesync +%{python3_sitelib}/dnf-plugins/modulesync.* +%{python3_sitelib}/dnf-plugins/__pycache__/modulesync.* +%{_mandir}/man8/dnf-modulesync.* +%endif -* Mon Sep 13 2021 Marek Blaha - 4.0.21-3 -- Translations update (RhBug:1961633) +%changelog +* Fri Mar 18 2022 Marek Blaha - 4.0.21-11 +- Update translations + +* Fri Jan 14 2022 Pavla Kratochvilova - 4.0.21-10 +- Rebuild with new release number + +* Tue Jan 11 2022 Pavla Kratochvilova - 4.0.21-9 +- Add new command modulesync (RhBug:1868047) + +* Thu Jan 06 2022 Pavla Kratochvilova - 4.0.21-8 +- [needs-restarting] Fix wrong boot time (RhBug:1960437,2022389) + +* Wed Dec 1 2021 Pavla Kratochvilova - 4.0.21-7 +- [groups-manager] Use full NEVRA for matching packages instead of only name (RhBug:2013633) +- [versionlock] Fix: Multiple package-name-spec arguments don't lock (RhBug:2013324) +- [versionlock] Update documentation for adding specifi version (RhBug:2013332) + +* Tue Nov 23 2021 Pavla Kratochvilova - 4.0.21-6 +- Increase dependency on dnf as it's required by reposync (RhBug:2023739) + +* Fri Nov 12 2021 Pavla Kratochvilova - 4.0.21-5 +- [copr] Migrate all calls to APIv3 (RhBug:2021821) + +* Tue Nov 09 2021 Pavla Kratochvilova - 4.0.21-4 +- [reposync] Don't stop downloading packages on the first error (RhBug:2009894) +- [copr] Fix traceback of copr search (RhBug:2019868) * Tue Jul 27 2021 Pavla Kratochvilova - 4.0.21-2 - [versionlock] Locking obsoleted package does not make the obsoleter unavailable (RhBug:1957280)