From 56f4a4e354bc986c9249ae734cee4713ef9e68e5 Mon Sep 17 00:00:00 2001 From: Toshaan Bharvani Date: Mon, 25 Dec 2023 11:28:45 +0100 Subject: [PATCH] initial package creation Signed-off-by: Toshaan Bharvani --- ...arch-during-security-updates-with-no.patch | 89 + ...-Add-repoid-to-solver-error-messages.patch | 316 ++ .../0003-Update-translations-RHEL-9-2.patch | 4331 +++++++++++++++++ .../0004-Update-translations-RHEL-9.3.patch | 2788 +++++++++++ SPECS/libdnf.spec | 977 ++++ 5 files changed, 8501 insertions(+) create mode 100644 SOURCES/0001-Allow-change-of-arch-during-security-updates-with-no.patch create mode 100644 SOURCES/0002-Add-repoid-to-solver-error-messages.patch create mode 100644 SOURCES/0003-Update-translations-RHEL-9-2.patch create mode 100644 SOURCES/0004-Update-translations-RHEL-9.3.patch create mode 100644 SPECS/libdnf.spec diff --git a/SOURCES/0001-Allow-change-of-arch-during-security-updates-with-no.patch b/SOURCES/0001-Allow-change-of-arch-during-security-updates-with-no.patch new file mode 100644 index 0000000..a937c19 --- /dev/null +++ b/SOURCES/0001-Allow-change-of-arch-during-security-updates-with-no.patch @@ -0,0 +1,89 @@ +From 2834747bff215c6f8da4eef2820c29bc05e172e1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= +Date: Wed, 7 Sep 2022 09:07:04 +0200 +Subject: [PATCH] Allow change of arch during security updates with noarch + (RhBug:2124483) + +This matches upgrade behaviour where upgrading from/to noarch is a +special case and architecture change of a package is allowed +automatically. + += changelog = +msg: Allow change of architecture for packages during security updates with noarch involved +type: security +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2124483 +--- + libdnf/sack/query.cpp | 34 ++++++++++++++++++++++++---------- + 1 file changed, 24 insertions(+), 10 deletions(-) + +diff --git a/libdnf/sack/query.cpp b/libdnf/sack/query.cpp +index 8672275d..205439ec 100644 +--- a/libdnf/sack/query.cpp ++++ b/libdnf/sack/query.cpp +@@ -189,6 +189,13 @@ NameArchSolvableComparator(const Solvable * first, const Solvable * second) + return first->arch < second->arch; + } + ++static bool ++NameSolvableComparator(const Solvable * first, const Solvable * second) ++{ ++ return first->name < second->name; ++} ++ ++ + static bool + NamePrioritySolvableKey(const Solvable * first, const Solvable * second) + { +@@ -1878,11 +1885,14 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) + std::vector installed_solvables; + + if (cmp_type & HY_UPGRADE) { +- // When doing HY_UPGRADE consider only candidate pkgs that have matching Name and Arch with: +- // * some already installed pkg (in other words: some other version of the pkg is already installed) +- // or +- // * with pkg that obsoletes some already installed (or to be installed in this transaction) pkg +- // Otherwise a pkg with different Arch than installed can end up in upgrade set which is wrong. ++ // When doing HY_UPGRADE consider only candidate pkgs that: ++ // * have matching Name and Arch with some already installed pkg ++ // (in other words: some other version of the pkg is already installed) ++ // * have matching Name with some already installed pkg and either the candidate or the installed pkg is noarch. ++ // This matches upgrade behavior where we allow architecture change only when noarch is involved. ++ // Details: RhBug:2124483, RhBug:2101398 and RhBug:1171543 ++ // * obsoletes some already installed (or to be installed in this transaction) pkg ++ // Otherwise a pkg with different Arch than installed (and than noarch) can end up in upgrade set which is wrong. + // It can result in dependency issues, reported as: RhBug:2088149. + + Query installed(sack, ExcludeFlags::IGNORE_EXCLUDES); +@@ -1893,7 +1903,7 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) + while ((installed_id = installed.pImpl->result->next(installed_id)) != -1) { + installed_solvables.push_back(pool_id2solvable(pool, installed_id)); + } +- std::sort(installed_solvables.begin(), installed_solvables.end(), NameArchSolvableComparator); ++ std::sort(installed_solvables.begin(), installed_solvables.end(), NameSolvableComparator); + + Query obsoletes(sack, ExcludeFlags::IGNORE_EXCLUDES); + obsoletes.addFilter(HY_PKG, HY_EQ, resultPset); +@@ -1915,12 +1925,16 @@ Query::Impl::filterAdvisory(const Filter & f, Map *m, int keyname) + } + + Id id = -1; +- // Add to candidates resultPset pkgs that match name and arch with some already installed pkg ++ // Add to candidates resultPset pkgs that match name and arch with some already installed pkg or match name and either the installed or candidate are NOARCH + while ((id = resultPset->next(id)) != -1) { + Solvable * s = pool_id2solvable(pool, id); +- auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameArchSolvableComparator); +- if (low != installed_solvables.end() && s->name == (*low)->name && s->arch == (*low)->arch) { +- candidates.push_back(s); ++ auto low = std::lower_bound(installed_solvables.begin(), installed_solvables.end(), s, NameSolvableComparator); ++ while (low != installed_solvables.end() && (*low)->name == s->name) { ++ if (s->arch == (*low)->arch || s->arch == ARCH_NOARCH || (*low)->arch == ARCH_NOARCH) { ++ candidates.push_back(s); ++ break; ++ } ++ ++low; + } + } + +-- +2.37.3 + diff --git a/SOURCES/0002-Add-repoid-to-solver-error-messages.patch b/SOURCES/0002-Add-repoid-to-solver-error-messages.patch new file mode 100644 index 0000000..8b89140 --- /dev/null +++ b/SOURCES/0002-Add-repoid-to-solver-error-messages.patch @@ -0,0 +1,316 @@ +From 659bc22f36c7bf21d86ceb298a1eaaccd5a2a880 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Fri, 24 Mar 2023 13:22:41 +0100 +Subject: [PATCH] Split modular packages to to repositories according their + origin + +It will help to provide information about repository origin to libsolv +modular error messages. +--- + libdnf/module/ModulePackageContainer.cpp | 42 ++++++++++++++---------- + 1 file changed, 24 insertions(+), 18 deletions(-) + +diff --git a/libdnf/module/ModulePackageContainer.cpp b/libdnf/module/ModulePackageContainer.cpp +index ccfa249d..4879130f 100644 +--- a/libdnf/module/ModulePackageContainer.cpp ++++ b/libdnf/module/ModulePackageContainer.cpp +@@ -286,13 +286,6 @@ ModulePackageContainer::ModulePackageContainer(bool allArch, std::string install + pImpl->persistDir = dir; + } + +- Pool * pool = dnf_sack_get_pool(pImpl->moduleSack); +- HyRepo hrepo = hy_repo_create("available"); +- auto repoImpl = libdnf::repoGetImpl(hrepo); +- LibsolvRepo *repo = repo_create(pool, "available"); +- repo->appdata = hrepo; +- repoImpl->libsolvRepo = repo; +- repoImpl->needs_internalizing = 1; + pImpl->installRoot = installRoot; + g_autofree gchar * path = g_build_filename(pImpl->installRoot.c_str(), + "/etc/dnf/modules.d", NULL); +@@ -375,23 +368,36 @@ ModulePackageContainer::add(const std::string &fileContent, const std::string & + md.addMetadataFromString(fileContent, 0); + md.resolveAddedMetadata(); + ++ LibsolvRepo * repo = nullptr; + LibsolvRepo * r; + Id id; + ++ // Search whether available repo was already created + FOR_REPOS(id, r) { +- if (strcmp(r->name, "available") == 0) { +- g_autofree gchar * path = g_build_filename(pImpl->installRoot.c_str(), +- "/etc/dnf/modules.d", NULL); +- auto packages = md.getAllModulePackages(pImpl->moduleSack, r, repoID, pImpl->modulesV2); +- for(auto const& modulePackagePtr: packages) { +- std::unique_ptr modulePackage(modulePackagePtr); +- pImpl->modules.insert(std::make_pair(modulePackage->getId(), std::move(modulePackage))); +- pImpl->persistor->insert(modulePackagePtr->getName(), path); +- } +- +- return; ++ if (strcmp(r->name, repoID.c_str()) == 0) { ++ repo = r; + } + } ++ ++ // If not created yet, create it ++ if (!repo) { ++ Pool * pool = dnf_sack_get_pool(pImpl->moduleSack); ++ HyRepo hrepo = hy_repo_create(repoID.c_str()); ++ auto repoImpl = libdnf::repoGetImpl(hrepo); ++ repo = repo_create(pool, repoID.c_str()); ++ repo->appdata = hrepo; ++ repoImpl->libsolvRepo = repo; ++ repoImpl->needs_internalizing = 1; ++ } ++ ++ // add all modules to repository and pass ownership to module container ++ g_autofree gchar * path = g_build_filename(pImpl->installRoot.c_str(), "/etc/dnf/modules.d", NULL); ++ auto packages = md.getAllModulePackages(pImpl->moduleSack, r, repoID, pImpl->modulesV2); ++ for(auto const& modulePackagePtr: packages) { ++ std::unique_ptr modulePackage(modulePackagePtr); ++ pImpl->modules.insert(std::make_pair(modulePackage->getId(), std::move(modulePackage))); ++ pImpl->persistor->insert(modulePackagePtr->getName(), path); ++ } + } + + Id +-- +2.40.1 + + +From e86bc9082e226c7b784c820e9820537cd71afaa0 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Tue, 21 Mar 2023 11:28:43 +0100 +Subject: [PATCH] Add repoid to solver errors for RPMs (RhBug:2179413) + +Repoid is very useful to find a source of the issue. It tells which +repositories contains problematic packages. + +https://bugzilla.redhat.com/show_bug.cgi?id=2179413 +--- + libdnf/goal/Goal.cpp | 101 +++++++++++++---------- + libdnf/module/ModulePackageContainer.cpp | 2 +- + tests/hawkey/test_goal.cpp | 14 ++-- + 3 files changed, 64 insertions(+), 53 deletions(-) + +diff --git a/libdnf/goal/Goal.cpp b/libdnf/goal/Goal.cpp +index ebe2fbd1..7def8371 100644 +--- a/libdnf/goal/Goal.cpp ++++ b/libdnf/goal/Goal.cpp +@@ -87,8 +87,8 @@ enum {RULE_DISTUPGRADE=1, RULE_INFARCH, RULE_UPDATE, RULE_JOB, RULE_JOB_UNSUPPOR + }; + + static const std::map PKG_PROBLEMS_DICT = { +- {RULE_DISTUPGRADE, M_(" does not belong to a distupgrade repository")}, +- {RULE_INFARCH, M_(" has inferior architecture")}, ++ {RULE_DISTUPGRADE, M_("%s from %s does not belong to a distupgrade repository")}, ++ {RULE_INFARCH, M_("%s from %s has inferior architecture")}, + {RULE_UPDATE, M_("problem with installed package ")}, + {RULE_JOB, M_("conflicting requests")}, + {RULE_JOB_UNSUPPORTED, M_("unsupported request")}, +@@ -98,24 +98,24 @@ static const std::map PKG_PROBLEMS_DICT = { + {RULE_PKG, M_("some dependency problem")}, + {RULE_BEST_1, M_("cannot install the best update candidate for package ")}, + {RULE_BEST_2, M_("cannot install the best candidate for the job")}, +- {RULE_PKG_NOT_INSTALLABLE_1, M_("package %s is filtered out by modular filtering")}, +- {RULE_PKG_NOT_INSTALLABLE_2, M_("package %s does not have a compatible architecture")}, +- {RULE_PKG_NOT_INSTALLABLE_3, M_("package %s is not installable")}, +- {RULE_PKG_NOT_INSTALLABLE_4, M_("package %s is filtered out by exclude filtering")}, +- {RULE_PKG_NOTHING_PROVIDES_DEP, M_("nothing provides %s needed by %s")}, +- {RULE_PKG_SAME_NAME, M_("cannot install both %s and %s")}, +- {RULE_PKG_CONFLICTS, M_("package %s conflicts with %s provided by %s")}, +- {RULE_PKG_OBSOLETES, M_("package %s obsoletes %s provided by %s")}, +- {RULE_PKG_INSTALLED_OBSOLETES, M_("installed package %s obsoletes %s provided by %s")}, +- {RULE_PKG_IMPLICIT_OBSOLETES, M_("package %s implicitly obsoletes %s provided by %s")}, +- {RULE_PKG_REQUIRES, M_("package %s requires %s, but none of the providers can be installed")}, +- {RULE_PKG_SELF_CONFLICT, M_("package %s conflicts with %s provided by itself")}, +- {RULE_YUMOBS, M_("both package %s and %s obsolete %s")} ++ {RULE_PKG_NOT_INSTALLABLE_1, M_("package %s from %s is filtered out by modular filtering")}, ++ {RULE_PKG_NOT_INSTALLABLE_2, M_("package %s from %s does not have a compatible architecture")}, ++ {RULE_PKG_NOT_INSTALLABLE_3, M_("package %s from %s is not installable")}, ++ {RULE_PKG_NOT_INSTALLABLE_4, M_("package %s from %s is filtered out by exclude filtering")}, ++ {RULE_PKG_NOTHING_PROVIDES_DEP, M_("nothing provides %s needed by %s from %s")}, ++ {RULE_PKG_SAME_NAME, M_("cannot install both %s from %s and %s from %s")}, ++ {RULE_PKG_CONFLICTS, M_("package %s from %s conflicts with %s provided by %s from %s")}, ++ {RULE_PKG_OBSOLETES, M_("package %s from %s obsoletes %s provided by %s from %s")}, ++ {RULE_PKG_INSTALLED_OBSOLETES, M_("installed package %s obsoletes %s provided by %s from %s")}, ++ {RULE_PKG_IMPLICIT_OBSOLETES, M_("package %s from %s implicitly obsoletes %s provided by %s from %s")}, ++ {RULE_PKG_REQUIRES, M_("package %s from %s requires %s, but none of the providers can be installed")}, ++ {RULE_PKG_SELF_CONFLICT, M_("package %s from %s conflicts with %s provided by itself")}, ++ {RULE_YUMOBS, M_("both package %s from %s and %s from %s obsolete %s")} + }; + + static const std::map MODULE_PROBLEMS_DICT = { +- {RULE_DISTUPGRADE, M_(" does not belong to a distupgrade repository")}, +- {RULE_INFARCH, M_(" has inferior architecture")}, ++ {RULE_DISTUPGRADE, M_("%s from %s does not belong to a distupgrade repository")}, ++ {RULE_INFARCH, M_("%s from %s has inferior architecture")}, + {RULE_UPDATE, M_("problem with installed module ")}, + {RULE_JOB, M_("conflicting requests")}, + {RULE_JOB_UNSUPPORTED, M_("unsupported request")}, +@@ -125,19 +125,19 @@ static const std::map MODULE_PROBLEMS_DICT = { + {RULE_PKG, M_("some dependency problem")}, + {RULE_BEST_1, M_("cannot install the best update candidate for module ")}, + {RULE_BEST_2, M_("cannot install the best candidate for the job")}, +- {RULE_PKG_NOT_INSTALLABLE_1, M_("module %s is disabled")}, +- {RULE_PKG_NOT_INSTALLABLE_2, M_("module %s does not have a compatible architecture")}, +- {RULE_PKG_NOT_INSTALLABLE_3, M_("module %s is not installable")}, +- {RULE_PKG_NOT_INSTALLABLE_4, M_("module %s is disabled")}, +- {RULE_PKG_NOTHING_PROVIDES_DEP, M_("nothing provides %s needed by module %s")}, +- {RULE_PKG_SAME_NAME, M_("cannot install both modules %s and %s")}, +- {RULE_PKG_CONFLICTS, M_("module %s conflicts with %s provided by %s")}, +- {RULE_PKG_OBSOLETES, M_("module %s obsoletes %s provided by %s")}, +- {RULE_PKG_INSTALLED_OBSOLETES, M_("installed module %s obsoletes %s provided by %s")}, +- {RULE_PKG_IMPLICIT_OBSOLETES, M_("module %s implicitly obsoletes %s provided by %s")}, +- {RULE_PKG_REQUIRES, M_("module %s requires %s, but none of the providers can be installed")}, +- {RULE_PKG_SELF_CONFLICT, M_("module %s conflicts with %s provided by itself")}, +- {RULE_YUMOBS, M_("both module %s and %s obsolete %s")} ++ {RULE_PKG_NOT_INSTALLABLE_1, M_("module %s from %s is disabled")}, ++ {RULE_PKG_NOT_INSTALLABLE_2, M_("module %s from %s does not have a compatible architecture")}, ++ {RULE_PKG_NOT_INSTALLABLE_3, M_("module %s from %s is not installable")}, ++ {RULE_PKG_NOT_INSTALLABLE_4, M_("module %s from %s is disabled")}, ++ {RULE_PKG_NOTHING_PROVIDES_DEP, M_("nothing provides %s needed by module %s from %s")}, ++ {RULE_PKG_SAME_NAME, M_("cannot install both modules %s from %s and %s from %s")}, ++ {RULE_PKG_CONFLICTS, M_("module %s from %s conflicts with %s provided by %s from %s")}, ++ {RULE_PKG_OBSOLETES, M_("module %s from %s obsoletes %s provided by %s from %s")}, ++ {RULE_PKG_INSTALLED_OBSOLETES, M_("installed module %s obsoletes %s provided by %s from %s")}, ++ {RULE_PKG_IMPLICIT_OBSOLETES, M_("module %s from %s implicitly obsoletes %s provided by %s from %s")}, ++ {RULE_PKG_REQUIRES, M_("module %s from %s requires %s, but none of the providers can be installed")}, ++ {RULE_PKG_SELF_CONFLICT, M_("module %s from %s conflicts with %s provided by itself")}, ++ {RULE_YUMOBS, M_("both module %s from %s and %s from %s obsolete %s")} + }; + + static std::string +@@ -151,9 +151,11 @@ libdnf_problemruleinfo2str(libdnf::PackageSet * modularExclude, Solver *solv, So + Solvable *ss; + switch (type) { + case SOLVER_RULE_DISTUPGRADE: +- return solvid2str(pool, source) + TM_(problemDict.at(RULE_DISTUPGRADE), 1); ++ return tfm::format(TM_(problemDict.at(RULE_DISTUPGRADE), 1), solvid2str(pool, source).c_str(), ++ pool_id2solvable(pool, source)->repo->name); + case SOLVER_RULE_INFARCH: +- return solvid2str(pool, source) + TM_(problemDict.at(RULE_INFARCH), 1); ++ return tfm::format(TM_(problemDict.at(RULE_DISTUPGRADE), 1), solvid2str(pool, source).c_str(), ++ pool_id2solvable(pool, source)->repo->name); + case SOLVER_RULE_UPDATE: + return std::string(TM_(problemDict.at(RULE_UPDATE), 1)) + solvid2str(pool, source); + case SOLVER_RULE_JOB: +@@ -176,44 +178,53 @@ libdnf_problemruleinfo2str(libdnf::PackageSet * modularExclude, Solver *solv, So + ss = pool->solvables + source; + if (pool_disabled_solvable(pool, ss)) { + if (modularExclude && modularExclude->has(source)) { +- return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_1), 1), solvid2str(pool, source).c_str()); ++ return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_1), 1), ++ solvid2str(pool, source).c_str(), pool_id2solvable(pool, source)->repo->name); + } else { +- return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_4), 1), solvid2str(pool, source).c_str()); ++ return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_4), 1), ++ solvid2str(pool, source).c_str(), pool_id2solvable(pool, source)->repo->name); + } + } + if (ss->arch && ss->arch != ARCH_SRC && ss->arch != ARCH_NOSRC && + pool->id2arch && (ss->arch > pool->lastarch || !pool->id2arch[ss->arch])) +- return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_2), 1), solvid2str(pool, source).c_str()); +- return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_3), 1), solvid2str(pool, source).c_str()); ++ return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_2), 1), solvid2str(pool, source).c_str(), ++ pool_id2solvable(pool, source)->repo->name); ++ return tfm::format(TM_(problemDict.at(RULE_PKG_NOT_INSTALLABLE_3), 1), solvid2str(pool, source).c_str(), ++ pool_id2solvable(pool, source)->repo->name); + case SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP: + return tfm::format(TM_(problemDict.at(RULE_PKG_NOTHING_PROVIDES_DEP), 1), pool_dep2str(pool, dep), +- solvid2str(pool, source).c_str()); ++ solvid2str(pool, source).c_str(), pool_id2solvable(pool, source)->repo->name); + case SOLVER_RULE_PKG_SAME_NAME: + return tfm::format(TM_(problemDict.at(RULE_PKG_SAME_NAME), 1), solvid2str(pool, source).c_str(), +- solvid2str(pool, target).c_str()); ++ pool_id2solvable(pool, source)->repo->name, solvid2str(pool, target).c_str(), ++ pool_id2solvable(pool, target)->repo->name); + case SOLVER_RULE_PKG_CONFLICTS: + return tfm::format(TM_(problemDict.at(RULE_PKG_CONFLICTS), 1), solvid2str(pool, source).c_str(), +- pool_dep2str(pool, dep), solvid2str(pool, target).c_str()); ++ pool_id2solvable(pool, source)->repo->name, pool_dep2str(pool, dep), ++ solvid2str(pool, target).c_str(), pool_id2solvable(pool, target)->repo->name); + case SOLVER_RULE_PKG_OBSOLETES: + return tfm::format(TM_(problemDict.at(RULE_PKG_OBSOLETES), 1), solvid2str(pool, source).c_str(), +- pool_dep2str(pool, dep), solvid2str(pool, target).c_str()); ++ pool_id2solvable(pool, source)->repo->name, pool_dep2str(pool, dep), ++ solvid2str(pool, target).c_str(), pool_id2solvable(pool, target)->repo->name); + case SOLVER_RULE_PKG_INSTALLED_OBSOLETES: + return tfm::format(TM_(problemDict.at(RULE_PKG_INSTALLED_OBSOLETES), 1), + solvid2str(pool, source).c_str(), pool_dep2str(pool, dep), +- solvid2str(pool, target).c_str()); ++ solvid2str(pool, target).c_str(), pool_id2solvable(pool, target)->repo->name); + case SOLVER_RULE_PKG_IMPLICIT_OBSOLETES: + return tfm::format(TM_(problemDict.at(RULE_PKG_IMPLICIT_OBSOLETES), 1), + solvid2str(pool, source).c_str(), pool_dep2str(pool, dep), +- solvid2str(pool, target).c_str()); ++ pool_id2solvable(pool, source)->repo->name, solvid2str(pool, target).c_str(), ++ pool_id2solvable(pool, target)->repo->name); + case SOLVER_RULE_PKG_REQUIRES: + return tfm::format(TM_(problemDict.at(RULE_PKG_REQUIRES), 1), solvid2str(pool, source).c_str(), +- pool_dep2str(pool, dep)); ++ pool_id2solvable(pool, source)->repo->name, pool_dep2str(pool, dep)); + case SOLVER_RULE_PKG_SELF_CONFLICT: + return tfm::format(TM_(problemDict.at(RULE_PKG_SELF_CONFLICT), 1), solvid2str(pool, source).c_str(), +- pool_dep2str(pool, dep)); ++ pool_id2solvable(pool, source)->repo->name, pool_dep2str(pool, dep)); + case SOLVER_RULE_YUMOBS: + return tfm::format(TM_(problemDict.at(RULE_YUMOBS), 1), solvid2str(pool, source).c_str(), +- solvid2str(pool, target).c_str(), pool_dep2str(pool, dep)); ++ pool_id2solvable(pool, source)->repo->name, solvid2str(pool, target).c_str(), ++ pool_id2solvable(pool, target)->repo->name, pool_dep2str(pool, dep)); + default: + return solver_problemruleinfo2str(solv, type, source, target, dep); + } +diff --git a/libdnf/module/ModulePackageContainer.cpp b/libdnf/module/ModulePackageContainer.cpp +index 4879130f..e4140748 100644 +--- a/libdnf/module/ModulePackageContainer.cpp ++++ b/libdnf/module/ModulePackageContainer.cpp +@@ -392,7 +392,7 @@ ModulePackageContainer::add(const std::string &fileContent, const std::string & + + // add all modules to repository and pass ownership to module container + g_autofree gchar * path = g_build_filename(pImpl->installRoot.c_str(), "/etc/dnf/modules.d", NULL); +- auto packages = md.getAllModulePackages(pImpl->moduleSack, r, repoID, pImpl->modulesV2); ++ auto packages = md.getAllModulePackages(pImpl->moduleSack, repo, repoID, pImpl->modulesV2); + for(auto const& modulePackagePtr: packages) { + std::unique_ptr modulePackage(modulePackagePtr); + pImpl->modules.insert(std::make_pair(modulePackage->getId(), std::move(modulePackage))); +diff --git a/tests/hawkey/test_goal.cpp b/tests/hawkey/test_goal.cpp +index f22e1c80..b2d7af9f 100644 +--- a/tests/hawkey/test_goal.cpp ++++ b/tests/hawkey/test_goal.cpp +@@ -593,11 +593,11 @@ START_TEST(test_goal_describe_problem_rules) + auto problems = goal->describeProblemRules(0, true); + const char *expected[] = { + "conflicting requests", +- "nothing provides goodbye needed by hello-1-1.noarch" ++ "nothing provides goodbye needed by hello-1-1.noarch from main" + }; +- fail_unless(problems.size() == 2); +- fail_unless(problems[0] == expected[0]); +- fail_unless(problems[1] == expected[1]); ++ ck_assert_int_eq(problems.size(), 2); ++ ck_assert_str_eq(problems[0].c_str(), expected[0]); ++ ck_assert_str_eq(problems[1].c_str(), expected[1]); + + g_object_unref(pkg); + hy_goal_free(goal); +@@ -860,10 +860,10 @@ START_TEST(test_goal_lock) + + auto problems = goal->describeProblemRules(0, true); + const char *expected[] = { +- "package bloop-ext-2.0-1.noarch requires bloop = 2.0-1, but none of the providers can be installed", +- "cannot install both bloop-2.0-1.noarch and bloop-1.0-1.noarch", ++ "package bloop-ext-2.0-1.noarch from updates requires bloop = 2.0-1, but none of the providers can be installed", ++ "cannot install both bloop-2.0-1.noarch from updates and bloop-1.0-1.noarch from @System", + "conflicting requests", +- "package bloop-ext-1.0-1.noarch is filtered out by exclude filtering" ++ "package bloop-ext-1.0-1.noarch from updates is filtered out by exclude filtering" + }; + ck_assert_int_eq(problems.size(), 4); + ck_assert_str_eq(problems[0].c_str(), expected[0]); +-- +2.40.1 + diff --git a/SOURCES/0003-Update-translations-RHEL-9-2.patch b/SOURCES/0003-Update-translations-RHEL-9-2.patch new file mode 100644 index 0000000..c5d1c30 --- /dev/null +++ b/SOURCES/0003-Update-translations-RHEL-9-2.patch @@ -0,0 +1,4331 @@ +From a28668c95805bb2fd5087076284eb98bed6746bf Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Wed, 8 Mar 2023 13:09:08 +0100 +Subject: [PATCH] Update translations RHEL 9.2 + +--- + po/fr.po | 416 +++++++++++++++++++++++++------------------ + po/ja.po | 477 +++++++++++++++++++++++++++++++------------------- + po/ko.po | 402 +++++++++++++++++++++++++----------------- + po/libdnf.pot | 290 ++++++++++++++++++------------ + po/zh_CN.po | 439 +++++++++++++++++++++++++++------------------- + 5 files changed, 1222 insertions(+), 802 deletions(-) + +diff --git a/po/fr.po b/po/fr.po +index 20e8417a..b0ef48aa 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -1,27 +1,28 @@ +-# Jean-Baptiste Holcroft , 2016. #zanata, 2021. ++# Jean-Baptiste Holcroft , 2016. #zanata + # José Fournier , 2016. #zanata + # José Fournier , 2017. #zanata + # Jérôme Fenal , 2017. #zanata +-# Ludek Janda , 2018. #zanata, 2021. +-# Jean-Baptiste Holcroft , 2019. #zanata, 2021. +-# Julien Humbert , 2020, 2021. +-# Arnaud T. , 2020. +-# Sundeep Anand , 2021. ++# Ludek Janda , 2018. #zanata, 2021, 2022. ++# Jean-Baptiste Holcroft , 2019. #zanata ++# Julien Humbert , 2020. ++# Sundeep Anand , 2021, 2022. + # Titouan Bénard , 2021. ++# Transtats , 2023. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-05 01:53+0000\n" +-"PO-Revision-Date: 2021-10-10 00:45+0000\n" +-"Last-Translator: Titouan Bénard \n" +-"Language-Team: French \n" ++"POT-Creation-Date: 2023-02-28 09:24+0100\n" ++"PO-Revision-Date: 2023-03-07 14:20+0000\n" ++"Last-Translator: Transtats \n" ++"Language-Team: French \n" + "Language: fr\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=n > 1;\n" +-"X-Generator: Weblate 4.8\n" ++"X-Generator: Weblate 4.15.2\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -110,73 +111,72 @@ msgstr "n’a pu convertir « %s » en secondes" + msgid "GetValue(): Value not set" + msgstr "GetValue() : valeur non définie" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3189 libdnf/dnf-context.cpp:3198 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "Ne peut pas activer plus de flux du module '%s' en même temps" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3207 libdnf/dnf-context.cpp:3225 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" + msgstr "" +-"Impossible d'activer le flux de module '%1$s' stream '%2$s' : état du module" +-" déjà modifié" ++"Impossible d'activer le flux de module '%1$s' stream '%2$s' : état du module " ++"déjà modifié" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3274 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "Problème de dépendance modulaire avec les valeurs par défaut : %s" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3277 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "Problème de dépendance modulaire avec les derniers modules : %s" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3281 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "Problème de dépendance modulaire : %s" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3304 libdnf/dnf-context.cpp:3328 ++#: libdnf/dnf-context.cpp:3339 libdnf/dnf-context.cpp:3378 ++#: libdnf/dnf-context.cpp:3394 libdnf/dnf-context.cpp:3426 ++#: libdnf/dnf-context.cpp:3475 libdnf/dnf-context.cpp:3485 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "Impossible de résoudre le paramètre ’%s’" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3311 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "" + "Seul le nom du module est nécessaire. Les paramètres inutiles ont été " + "ignorés : ’%s’" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3325 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "" + "Impossible de réinitialiser le module '%s' : État du module déjà modifié" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3336 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" + msgstr "Impossible de désactiver le module '%s' : État du module déjà modifié" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3367 libdnf/dnf-context.cpp:3463 ++#: libdnf/dnf-context.cpp:3644 + msgid "No modular data available" + msgstr "Aucune donnée modulaire disponible" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3384 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "Ignorer les informations inutiles dans l'argumentation : '%s'" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3422 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " +@@ -185,72 +185,71 @@ msgstr "" + "Problème lors de l'activation de l'arbre des dépendances pour le module " + "'%1$s' flux '%2$s' : %3$s" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3434 + msgid "Problems appeared for module enable request:" +-msgstr "Des problèmes sont apparus durant la requête d’activation du module :" ++msgstr "Des problèmes sont apparus pour la demande d'activation du module :" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3529 + #, c-format + msgid "No active module packages found for module spec '%s'" + msgstr "" +-"Aucun package de module actif trouvé pour la spécification de module '%s'" ++"Aucun paquetage de module actif n'a été trouvé pour le module spec '%s'" + +-#: libdnf/dnf-context.cpp:3523 ++#: libdnf/dnf-context.cpp:3534 + #, c-format + msgid "Cannot install module '%s' from fail-safe repository" +-msgstr "" +-"Impossible d'installer le module '%s' à partir du référentiel de sécurité " +-"intégrée" ++msgstr "Impossible d'installer le module '%s' à partir du dépôt de sécurité" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3541 + #, c-format + msgid "No profile found matching '%s'" + msgstr "Aucun profil trouvé correspondant à '%s'" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3595 + #, c-format + msgid "No match for package '%s' for module spec %s" +-msgstr "" +-"Aucune correspondance pour le package '%s' pour la spécification de module " +-"%s" ++msgstr "Aucune correspondance pour le paquet '%s' pour le module spec %s" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3606 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" +-msgstr "" +-"Problème lors de l'installation du module « %1$s » du flux « %2$s » : %3$s" ++msgstr "Problème lors de l'installation du module '%1$s' stream '%2$s' : %3$s" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3615 + msgid "Problems appeared for module install request:" +-msgstr "" +-"Des problèmes sont apparus durant la requête d’installation du module :" ++msgstr "Des problèmes sont apparus pour la demande d'installation du module :" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3674 + msgid "Problems appeared for module reset request:" + msgstr "" +-"Des problèmes sont apparus durant la requête de réinitialisation du module :" ++"Des problèmes sont apparus pour la demande de réinitialisation des modules :" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3675 libdnf/dnf-context.cpp:3734 + msgid "Problems appeared for module disable request:" + msgstr "" +-"Des problèmes sont apparus durant la requête de désactivation du module :" ++"Des problèmes sont apparus pour la demande de désactivation du module :" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3766 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" + msgstr "" +-"Le résultat de l’opération sera le basculement du flux « %s » du module « %s" +-" » vers le flux « %s »" ++"Le résultat de l’opération sera le basculement du flux « %s » du module « %s " ++"» vers le flux « %s »" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3770 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" + "Il n’est pas possible de basculer les flux actifs d’un module. \n" +-"Il est recommandé de retirer tout contenu installé par le module, et de réinitialiser le mode en utilisant la commande 'microdnf module reset ’. Après la réinitialisation du module, vous pouvez installer les autres flux." ++"Il est recommandé de retirer tout contenu installé par le module, et de " ++"réinitialiser le mode en utilisant la commande 'microdnf module reset " ++"’. Après la réinitialisation du module, vous pouvez installer " ++"les autres flux." + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -335,84 +334,134 @@ msgstr "n’a pas pu trouver le package %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "n’a pas pu ajouter d’élément pour effacer %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" +-msgstr "n’a pu ajouter solv" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." ++msgstr "repo_add_solv() a échoué." ++ ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " ++msgstr "Le chargement du cache d'extension %s (%d) a échoué : " + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "aucune chaine %1$s pour %2$s" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "n’a pas pu ouvrir : %s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "n’a pas pu créer le fichier temporaire : %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "n’a pas pu ouvrir le fichier tmp : %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 + #, c-format +-msgid "write_main() failed writing data: %i" +-msgstr "write_main() n’a pu écrire les données : %i" ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "" ++"Lors de l'écriture dans le cache primaire %s, l'écriture dans le repowriter " ++"a échoué : %i, erreur : %s" ++ ++#: libdnf/dnf-sack.cpp:560 ++#, c-format ++msgid "Failed closing tmp file %s: %s" ++msgstr "Échec de la fermeture du fichier tmp %s : %s" + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" +-msgstr "write_main() n’a pas pu charger à nouveau le fichier solv" ++#: libdnf/dnf-sack.cpp:570 ++#, c-format ++msgid "Failed to use newly written primary cache: %s: " ++msgstr "Échec de l'utilisation du cache primaire nouvellement écrit : %s : " + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" ++msgstr "Échec de l'utilisation du cache primaire nouvellement écrit : %s" ++ ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "n’a pas pu créer le fichier temporaire %s" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 ++#, c-format ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "" ++"Lors de l'écriture du cache d'extension %s (%d) : écriture repowriter ayant " ++"échoué : %i, erreur : %s" ++ ++#: libdnf/dnf-sack.cpp:676 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" +-msgstr "write_ext(%1$d) a échoué : %2$d" ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "" ++"Lors de l'écriture du cache d'extension (%d) : impossible de fermer le " ++"fichier temporaire : %s" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:692 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d): " ++msgstr "Impossible d'utiliser le nouveau cache d'extension écrit : %s (%d) : " ++ ++#: libdnf/dnf-sack.cpp:699 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d)" ++msgstr "Impossible d'utiliser le nouveau cache d'extension écrit : %s (%d)" ++ ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" + msgstr "fichier md de dépôt nul" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "n’a pu lire le fichier %1$s : %2$s" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." +-msgstr "repo_add_solv() a échoué." ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " ++msgstr "Lors du chargement du référentiel, l'utilisation de %s a échoué : " + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "échec du chargement du MD_TYPE_PRIMARY." + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." +-msgstr "repo_add_repomdxml/rpmmd() a échoué." ++#: libdnf/dnf-sack.cpp:784 ++#, c-format ++msgid "Opening repository primary data has failed: %s" ++msgstr "L'ouverture des données primaires du référentiel a échoué : %s" ++ ++#: libdnf/dnf-sack.cpp:795 ++#, c-format ++msgid "Loading repomd has failed: %s" ++msgstr "Le chargement de repomd a échoué : %s" ++ ++#: libdnf/dnf-sack.cpp:806 ++#, c-format ++msgid "Loading primary has failed: %s" ++msgstr "Le chargement du primaire a échoué : %s" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:872 + msgid "failed to auto-detect architecture" + msgstr "n’a pu auto-détecter l’architecture" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1037 + #, c-format + msgid "failed creating cachedir %s" + msgstr "n’a pu créer le cachedir %s" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1814 + msgid "failed loading RPMDB" + msgstr "n’a pu télécharger RPMDB" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2598 + #, c-format + msgid "No module defaults found: %s" + msgstr "Aucun module par défaut n’a été trouvé : %s" +@@ -441,75 +490,85 @@ msgstr "effectué sur un état %1$p qui n’avait pas de taille définie [%2$s]" + msgid "already at 100%% state [%s]" + msgstr "déjà en état à 100%% [%s]" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "Sources non définies quand vous essayez d’assurer paquet %s" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "N’a pu assurer %1$s comme dépôt %2$s non trouvé (%3$i dépôts chargés)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "Échec de la vérification d’untrusted : " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "Fichier téléchargé pour %s non trouvé" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "" + "le paquet %1$s ne peut être vérifié et le dépôt %2$s est activé GPG : %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "N’a pas pu obtenir la valeur de CacheDir" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "" + "Échec de l’obtention de l’espace libre du système de fichiers pour %s : " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "N’a pas pu obtenir la taille libre du système de fichiers pour %s" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "" +-"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible " +-"%3$s" ++"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible %3$s" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "n’a pu réussi à définir root" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "Erreur %i lors du test transactionnel" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "Erreur %i lors de l’ouverture de la base de données rpm" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "" ++"La fonction rpmdbCookie() n'a pas retourné le cookie de la base de données " ++"rpm." ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "Erreur %i pendant la transaction" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" + "La transaction n’a pas pu opérer en phase d’écriture, mais a renvoyé « no " + "error(%i) »" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "impossible d’ouvrir le dossier %1$s : %2$s" +@@ -528,8 +587,7 @@ msgstr "" + #: libdnf/goal/Goal.cpp:79 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "" +-"Sélecteur Ill-formed utilisé pour l’opération, type de comparaison " +-"incorrecte" ++"Sélecteur Ill-formed utilisé pour l’opération, type de comparaison incorrecte" + + #: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 + msgid " does not belong to a distupgrade repository" +@@ -717,63 +775,70 @@ msgstr "le module %s est en conflit avec %s fourni par lui-même" + msgid "both module %s and %s obsolete %s" + msgstr "à la fois le module %s et %s rendent obsolète %s" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "aucun solveur défini" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "n’a pas pu rendre %s absolu" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "échec de l’écriture des debugdata dans %1$s : %2$s" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "pas de solv dans l’objectif" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "aucune solution, n’a pas pu supprimer le package protégé" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "aucune solution n’est possible" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "Problème : " + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "Probléme %d : " + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + "L’opération résulterait en la suppression des packages protégés suivants : " + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "" ++"La solv_toolversion de Libsolv est : %zu long mais nous attendons un maximum " ++"de : %zu" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "N’a pas pu renommer %1$s en %2$s : %3$s" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "N’a pas pu définir les permissions sur %1$s : %2$s" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "impossible de créer le dossier %1$s : %2$s" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "impossible de stat le chemin %1$s : %2$s" +@@ -870,8 +935,7 @@ msgstr "" + #: libdnf/module/ModulePackageContainer.cpp:1830 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" +-msgstr "" +-"Impossible de supprimer les données de sécurité modulaires dans « %s »" ++msgstr "Impossible de supprimer les données de sécurité modulaires dans « %s »" + + #: libdnf/module/ModulePackageContainer.cpp:1862 + #, c-format +@@ -958,8 +1022,8 @@ msgid "" + "operator instead." + msgstr "" + "L’utilisation de l’opérateur « == » dans reldeps peut entraîner un " +-"comportement indéfini. Il est déprécié et le support sera abandonné dans les" +-" prochaines versions. Utilisez plutôt l’opérateur « = »." ++"comportement indéfini. Il est déprécié et le support sera abandonné dans les " ++"prochaines versions. Utilisez plutôt l’opérateur « = »." + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -972,175 +1036,175 @@ msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + "Le dépôt « %s » n’a pas de type pris en charge : « type=%s », passer outre." + +-#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1400 ++#: libdnf/repo/Repo.cpp:491 libdnf/repo/Repo.cpp:612 libdnf/repo/Repo.cpp:643 ++#: libdnf/repo/Repo.cpp:1407 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" + msgstr "repo '%s' : 'basecachedir' n'est pas fixé" + +-#: libdnf/repo/Repo.cpp:512 ++#: libdnf/repo/Repo.cpp:514 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" + msgstr "" + "La vitesse de téléchargement maximale est plus basse que le minimum. " + "Veuillez modifier les paramètres minrate ou throttle" + +-#: libdnf/repo/Repo.cpp:546 ++#: libdnf/repo/Repo.cpp:548 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" + msgstr "repo '%s' : 'proxy_username' est défini mais pas 'proxy_password'" + +-#: libdnf/repo/Repo.cpp:548 ++#: libdnf/repo/Repo.cpp:550 + msgid "'proxy_username' is set but not 'proxy_password'" + msgstr "" + "Le nom d'utilisateur \"proxy_username\" est défini mais pas le mot de passe " + "\"proxy_password\"" + +-#: libdnf/repo/Repo.cpp:629 ++#: libdnf/repo/Repo.cpp:631 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "Impossible de trouver une adresse de base pour le dépôt : %s" + +-#: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 ++#: libdnf/repo/Repo.cpp:662 libdnf/repo/Repo.cpp:684 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s : gpgme_data_new_from_fd() : %s" + +-#: libdnf/repo/Repo.cpp:668 libdnf/repo/Repo.cpp:690 ++#: libdnf/repo/Repo.cpp:670 libdnf/repo/Repo.cpp:692 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s : gpgme_op_import() : %s" + +-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 +-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279 ++#: libdnf/repo/Repo.cpp:711 libdnf/repo/Repo.cpp:1169 libdnf/repo/Repo.cpp:1243 ++#: libdnf/repo/Repo.cpp:1286 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "Impossible de créer le répertoire temporaire du dépôt « %s » : %s" + +-#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 ++#: libdnf/repo/Repo.cpp:719 libdnf/repo/Repo.cpp:785 libdnf/repo/Repo.cpp:919 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s : gpgme_ctx_set_engine_info() : %s" + +-#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 ++#: libdnf/repo/Repo.cpp:746 libdnf/repo/Repo.cpp:810 + #, c-format + msgid "can not list keys: %s" + msgstr "n’a pas pu lister les clés : %s" + +-#: libdnf/repo/Repo.cpp:837 ++#: libdnf/repo/Repo.cpp:839 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" + msgstr "Impossible de récupérer la clé GPG pour le dépôt « %s » : %s" + +-#: libdnf/repo/Repo.cpp:890 ++#: libdnf/repo/Repo.cpp:892 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "dépôt %s : 0x%s déjà importé" + +-#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#: libdnf/repo/Repo.cpp:906 libdnf/utils/filesystem.cpp:79 + #, c-format + msgid "Failed to create directory \"%s\": %d - %s" + msgstr "Impossible de créer le répertoire \"%s« :%d - %s" + +-#: libdnf/repo/Repo.cpp:924 ++#: libdnf/repo/Repo.cpp:926 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "dépôt %s : clé importée 0x%s." + +-#: libdnf/repo/Repo.cpp:1176 ++#: libdnf/repo/Repo.cpp:1183 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "relance : dépôt « %s » ignoré, pas de méta-lien." + +-#: libdnf/repo/Repo.cpp:1195 ++#: libdnf/repo/Repo.cpp:1202 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "relance : dépôt « %s » ignoré, pas de hachage utilisable." + +-#: libdnf/repo/Repo.cpp:1218 ++#: libdnf/repo/Repo.cpp:1225 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "relance : échec pour « %s », la somme de %s ne correspond pas." + +-#: libdnf/repo/Repo.cpp:1224 ++#: libdnf/repo/Repo.cpp:1231 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + "relance : « %s » peut être relancé - la somme de contrôle du méta-lien " + "correspond." + +-#: libdnf/repo/Repo.cpp:1253 ++#: libdnf/repo/Repo.cpp:1260 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "relance : « %s » peut être relancé - le repomd correspond." + +-#: libdnf/repo/Repo.cpp:1255 ++#: libdnf/repo/Repo.cpp:1262 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "relance : échec pour « %s », le repomd ne correspond pas." + +-#: libdnf/repo/Repo.cpp:1273 ++#: libdnf/repo/Repo.cpp:1280 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "Impossible de créer le répertoire de destination du dépôt « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1293 ++#: libdnf/repo/Repo.cpp:1300 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "Impossible de créer le répertoire « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1316 ++#: libdnf/repo/Repo.cpp:1323 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "Impossible de renommer le répertoire « %s » en « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1339 ++#: libdnf/repo/Repo.cpp:1346 + #, c-format + msgid "repo: using cache for: %s" + msgstr "dépôt : utilisation du cache pour : %s" + +-#: libdnf/repo/Repo.cpp:1351 ++#: libdnf/repo/Repo.cpp:1358 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "« cache uniquement » activé, mais pas de cache pour « %s »" + +-#: libdnf/repo/Repo.cpp:1355 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "dépôt : téléchargement à distance en provenance de : %s" + +-#: libdnf/repo/Repo.cpp:1362 ++#: libdnf/repo/Repo.cpp:1369 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" + msgstr "Échec du téléchargement des métadonnées pour le dépôt « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1388 ++#: libdnf/repo/Repo.cpp:1395 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir() : échec du calcul de SHA256" + +-#: libdnf/repo/Repo.cpp:1416 ++#: libdnf/repo/Repo.cpp:1423 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "Impossible de créer le dossier persistant « %s » : %s" + +-#: libdnf/repo/Repo.cpp:1793 ++#: libdnf/repo/Repo.cpp:1800 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + "« resume » (reprise) ne peut pas être utilisé avec le paramètre " + "byterangestart" + +-#: libdnf/repo/Repo.cpp:1810 ++#: libdnf/repo/Repo.cpp:1817 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "L’initialisation de Package Target a échoué : %s" + +-#: libdnf/repo/Repo.cpp:1916 ++#: libdnf/repo/Repo.cpp:1923 + #, c-format + msgid "Cannot open %s: %s" + msgstr "impossible d’ouvrir %s : %s" + +-#: libdnf/repo/Repo.cpp:1960 ++#: libdnf/repo/Repo.cpp:1967 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "Log handler ayant pour id %ld n’existe pas" +@@ -1159,12 +1223,12 @@ msgstr "Pas en cours" + msgid "No transaction in progress" + msgstr "Aucune transaction n’est en cours" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "" + "Tentative d’insérer un élément de transaction dans une transaction achevée" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "" + "Tentative de mettre à jour un élément de transaction dans une transaction " +@@ -1199,11 +1263,23 @@ msgid "Can't add console output to unsaved transaction" + msgstr "" + "Ne peut pas ajouter une sortie de console à une transaction non enregistrée" + ++#~ msgid "failed to add solv" ++#~ msgstr "n’a pu ajouter solv" ++ ++#~ msgid "write_main() failed writing data: %i" ++#~ msgstr "write_main() n’a pu écrire les données : %i" ++ ++#~ msgid "write_main() failed to re-load written solv file" ++#~ msgstr "write_main() n’a pas pu charger à nouveau le fichier solv" ++ ++#~ msgid "write_ext(%1$d) has failed: %2$d" ++#~ msgstr "write_ext(%1$d) a échoué : %2$d" ++ ++#~ msgid "repo_add_repomdxml/rpmmd() has failed." ++#~ msgstr "repo_add_repomdxml/rpmmd() a échoué." ++ + #~ msgid "Failed to parse module artifact NEVRA '%s'" +-#~ msgstr "Échec de l’analyse du module d’artéfact NEVRA : %s" ++#~ msgstr "Échec de l'analyse de l'artefact de module '%s'" + + #~ msgid "Bad id for repo: %s, byte = %s %d" + #~ msgstr "ID erroné pour le dépôt : %s, byte = %s %d" +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "n’a pu calculer la somme de contrôle RPMDB" +diff --git a/po/ja.po b/po/ja.po +index 4005b6a0..f16abcb2 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -1,21 +1,23 @@ + # Casey Jones , 2018. #zanata + # Ludek Janda , 2018. #zanata, 2021. + # Casey Jones , 2020. +-# Sundeep Anand , 2021. ++# Sundeep Anand , 2021, 2022. ++# Transtats , 2022, 2023. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-05 01:53+0000\n" +-"PO-Revision-Date: 2021-09-11 10:04+0000\n" +-"Last-Translator: Ludek Janda \n" +-"Language-Team: Japanese \n" ++"POT-Creation-Date: 2023-02-28 09:24+0100\n" ++"PO-Revision-Date: 2023-03-07 14:20+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.8\n" ++"X-Generator: Weblate 4.15.2\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -24,7 +26,7 @@ msgstr "値が指定されていません" + #: libdnf/conf/ConfigMain.cpp:67 libdnf/conf/OptionSeconds.cpp:48 + #, c-format + msgid "seconds value '%s' must not be negative" +-msgstr "2個目の値 '%s' は負の数にしないでください" ++msgstr "2 個目の値 '%s' は負の数にしないでください" + + #: libdnf/conf/ConfigMain.cpp:71 + #, c-format +@@ -104,130 +106,143 @@ msgstr "'%s' を 秒に変換できません" + msgid "GetValue(): Value not set" + msgstr "GetValue(): 値は設定されていません" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3189 libdnf/dnf-context.cpp:3198 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "モジュール '%s' から、さらにストリームを同時に有効にできません" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3207 libdnf/dnf-context.cpp:3225 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" +-msgstr "モジュール '%1$s' ストリーム '%2$s' を有効にできません。モジュールの状態はすでに変更されています" ++msgstr "" ++"モジュール '%1$s' ストリーム '%2$s' を有効にできません。モジュールの状態はす" ++"でに変更されています" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3274 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "デフォルトのモジュラー依存問題: %s" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3277 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "最新のモジュールでモジュールの依存関係の問題: %s" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3281 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "モジュラーの依存に関する問題: %s" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3304 libdnf/dnf-context.cpp:3328 ++#: libdnf/dnf-context.cpp:3339 libdnf/dnf-context.cpp:3378 ++#: libdnf/dnf-context.cpp:3394 libdnf/dnf-context.cpp:3426 ++#: libdnf/dnf-context.cpp:3475 libdnf/dnf-context.cpp:3485 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "引数 '%s' を解決できません" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3311 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "モジュール名のみが必要です。引数の不必要な情報は無視します: '%s'" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3325 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" +-msgstr "モジュール '%s' をリセットできません。モジュールの状態はすでに変更されています" ++msgstr "" ++"モジュール '%s' をリセットできません。モジュールの状態はすでに変更されていま" ++"す" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3336 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" +-msgstr "モジュール '%s' を無効にできません。モジュールの状態はすでに変更されています" ++msgstr "" ++"モジュール '%s' を無効にできません。モジュールの状態はすでに変更されています" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3367 libdnf/dnf-context.cpp:3463 ++#: libdnf/dnf-context.cpp:3644 + msgid "No modular data available" + msgstr "モジュールデータは利用できません" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3384 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "引数の不要な情報は無視します: '%s'" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3422 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" +-msgstr "モジュール '%1$s' ストリーム '%2$s' の依存関係ツリーの有効化中に問題: %3$s" ++msgstr "" ++"モジュール '%1$s' ストリーム '%2$s' の依存関係ツリーの有効化中に問題: %3$s" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3434 + msgid "Problems appeared for module enable request:" +-msgstr "" ++msgstr "モジュール有効化リクエストに発生する問題:" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3529 + #, c-format + msgid "No active module packages found for module spec '%s'" + msgstr "" ++"モジュール仕様 '%s' について、アクティブなモジュールパッケージが見つかりませ" ++"ん" + +-#: libdnf/dnf-context.cpp:3523 +-#, fuzzy, c-format +-#| msgid "cannot install both modules %s and %s" ++#: libdnf/dnf-context.cpp:3534 ++#, c-format + msgid "Cannot install module '%s' from fail-safe repository" +-msgstr "モジュール %s と %s どちらもインストールできません" ++msgstr "フェイルセーフリポジトリーからモジュール '%s' をインストールできません" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3541 + #, c-format + msgid "No profile found matching '%s'" +-msgstr "" ++msgstr "'%s' にマッチするプロファイルが見つかりません" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3595 + #, c-format + msgid "No match for package '%s' for module spec %s" + msgstr "" ++"モジュール仕様 %s について、パッケージ '%s' にマッチする項目はありません" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3606 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" +-msgstr "" ++msgstr "モジュール '%1$s' ストリーム '%2$s' のインストール中に問題: %3$s" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3615 + msgid "Problems appeared for module install request:" +-msgstr "" ++msgstr "モジュールインストールリクエストに発生する問題:" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3674 + msgid "Problems appeared for module reset request:" +-msgstr "" ++msgstr "モジュールリセットリクエストに発生する問題:" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3675 libdnf/dnf-context.cpp:3734 + msgid "Problems appeared for module disable request:" +-msgstr "" ++msgstr "モジュール無効化リクエストに発生する問題:" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3766 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" +-msgstr "オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り替える結果となります" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" ++msgstr "" ++"オペレーションは、モジュール '%s' ストリーム '%s' を ストリーム '%s' へと切り" ++"替える結果となります" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3770 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" + "有効化されたモジュールのストリームの切り替えはできません。\n" +-"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module reset ' コマンドを使用してモジュールをリセットすることを推奨します。モジュールのリセット後に、別のストリームをインストールできます。" ++"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module " ++"reset ' コマンドを使用してモジュールをリセットすることを推奨しま" ++"す。モジュールのリセット後に、別のストリームをインストールできます。" + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -254,7 +269,9 @@ msgstr " 問題: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにインストールはできません" ++msgstr "" ++"モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにイ" ++"ンストールはできません" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -293,7 +310,8 @@ msgstr "トランザクションの実行中にエラーが発生しました: % + + #: libdnf/dnf-rpmts.cpp:283 + msgid "Error running transaction and no problems were reported!" +-msgstr "トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!" ++msgstr "" ++"トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!" + + #: libdnf/dnf-rpmts.cpp:346 + msgid "Fatal error, run database recovery" +@@ -309,84 +327,132 @@ msgstr "パッケージ %s を見つけることができませんでした" + msgid "could not add erase element %1$s(%2$i)" + msgstr "erase 要素 %1$s(%2$i) を追加することができません" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" +-msgstr "solv の追加に失敗しました" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." ++msgstr "repo_add_solv() は失敗しました。" ++ ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " ++msgstr "拡張キャッシュの %s (%d) の読み込みに失敗しました: " + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "%2$s の %1$s 文字列はありません" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "開くことに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "一時ファイルを作成できません: %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "tmp ファイルを開くことに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 ++#, c-format ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "" ++"プライマリーキャッシュの %s repowriter 書き込み中に %i エラーが発生しました。" ++"エラー: %s" ++ ++#: libdnf/dnf-sack.cpp:560 ++#, c-format ++msgid "Failed closing tmp file %s: %s" ++msgstr "tmp ファイル %s の終了に失敗しました: %s" ++ ++#: libdnf/dnf-sack.cpp:570 + #, c-format +-msgid "write_main() failed writing data: %i" +-msgstr "write_main() はデータの書き込みに失敗しました: %i" ++msgid "Failed to use newly written primary cache: %s: " ++msgstr "新たに書き込まれたプライマリーキャッシュを使用できません: %s: " + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" +-msgstr "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました" ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" ++msgstr "新たに書き込まれたプライマリーキャッシュを使用できません: %s" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "一時ファイル %s を作成できません" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 ++#, c-format ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "" ++"拡張キャッシュ %s (%d) の書き込み中: repowriter の書き込みに失敗: %i、エ" ++"ラー: %s" ++ ++#: libdnf/dnf-sack.cpp:676 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" +-msgstr "write_ext(%1$d) は失敗しました: %2$d" ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "拡張キャッシュの書き込み中 (%d): 一時ファイルを終了できません: %s" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:692 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d): " ++msgstr "新たに書き込まれた拡張キャッシュを使用できませんでした: %s (%d): " ++ ++#: libdnf/dnf-sack.cpp:699 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d)" ++msgstr "新たに書き込まれた拡張キャッシュを使用できませんでした: %s (%d)" ++ ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" + msgstr "null repo md ファイル" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "ファイル %1$s を読み込みできません: %2$s" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." +-msgstr "repo_add_solv() は失敗しました。" ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " ++msgstr "リポジトリーのロード中に %s が使用できませんでした: " + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "MD_TYPE_PRIMARY のロードに失敗しました。" + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." +-msgstr "repo_add_repomdxml/rpmmd() は失敗しました。" ++#: libdnf/dnf-sack.cpp:784 ++#, c-format ++msgid "Opening repository primary data has failed: %s" ++msgstr "リポジトリーのプライマリーデータを開くと失敗します: %s" ++ ++#: libdnf/dnf-sack.cpp:795 ++#, c-format ++msgid "Loading repomd has failed: %s" ++msgstr "repomd の読み込みに失敗しました: %s" ++ ++#: libdnf/dnf-sack.cpp:806 ++#, c-format ++msgid "Loading primary has failed: %s" ++msgstr "プライマリーの読み込みに失敗しました: %s" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:872 + msgid "failed to auto-detect architecture" + msgstr "アーキテクチャーの自動検出に失敗しました" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1037 + #, c-format + msgid "failed creating cachedir %s" + msgstr "cachedir %s の作成に失敗しました" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1814 + msgid "failed loading RPMDB" + msgstr "RPMDB のロードに失敗しました" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2598 + #, c-format + msgid "No module defaults found: %s" + msgstr "モジュールのデフォルトは見つかりませんでした: %s" +@@ -415,69 +481,84 @@ msgstr "サイズ設定のない状態 %1$p で実行されました! [%2$s]" + msgid "already at 100%% state [%s]" + msgstr "すでに 100%% の状態 [%s] にあります" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "パッケージ %s を確実にしようとする場合、ソースは設定されません" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" +-msgstr "repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo はロード済み)" ++msgstr "" ++"repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo " ++"はロード済み)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "untrusted の確認に失敗しました: " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "%s にダウンロードしたファイルが見つかりませんでした" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" +-msgstr "パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s" ++msgstr "" ++"パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "CacheDir の値の取得に失敗しました" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "%s に filesystem をフリーサイズで取得することに失敗しました: " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "%s に filesystem をフリーサイズで取得することに失敗しました" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" +-msgstr "%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です" ++msgstr "" ++"%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "root の設定に失敗しました" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "トランザクションテストの実行中にエラー %i" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "rpm データベースを開く際にエラー %i" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "rpmdbCookie() 関数は rpm データベースのクッキーを返しませんでした。" ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "トランザクションの実行中にエラー %i" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" +-msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした" ++msgstr "" ++"トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しま" ++"せんでした" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "ディレクトリー %1$s を開くことができません: %2$s" +@@ -583,7 +664,9 @@ msgstr "パッケージ %s は %s を廃止しました。これは %s により + #: libdnf/goal/Goal.cpp:109 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" +-msgstr "インストール済パッケージ %s は %s を廃止しました。これは %s により提供されます" ++msgstr "" ++"インストール済パッケージ %s は %s を廃止しました。これは %s により提供されま" ++"す" + + #: libdnf/goal/Goal.cpp:110 + #, c-format +@@ -593,7 +676,9 @@ msgstr "パッケージ %s は %s を暗に廃止しました。これは %s に + #: libdnf/goal/Goal.cpp:111 + #, c-format + msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできません" ++msgstr "" ++"パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできま" ++"せん" + + #: libdnf/goal/Goal.cpp:112 + #, c-format +@@ -656,7 +741,9 @@ msgstr "モジュール %s は %s を廃止しました。これは %s により + #: libdnf/goal/Goal.cpp:136 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" +-msgstr "インストール済モジュール %s は %s を廃止しました。これは %s により提供されます" ++msgstr "" ++"インストール済モジュール %s は %s を廃止しました。これは %s により提供されま" ++"す" + + #: libdnf/goal/Goal.cpp:137 + #, c-format +@@ -666,7 +753,9 @@ msgstr "モジュール %s は %s を暗に廃止しました。これは %s に + #: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできません" ++msgstr "" ++"モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできま" ++"せん" + + #: libdnf/goal/Goal.cpp:139 + #, c-format +@@ -678,62 +767,67 @@ msgstr "モジュール %s は自己提供される %s と競合しています" + msgid "both module %s and %s obsolete %s" + msgstr "モジュール %s と %s 両方は %s を廃止しました" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "設定されたソルバーはありません" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "%s を絶対的にすることに失敗しました" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "debugdata を %1$s へ書き込むことに失敗しました: %2$s" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "目標に solv がありません" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "ソリューションがなく、保護されたパッケージを削除できません" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "可能なソリューションがありません" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "問題: " + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "問題 %d: " + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "操作は結果的に以下の保護されたパッケージを削除します: " + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "Libsolv の solv_toolversion の長さ: %zu ですが、最大の想定値: %zu です" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "名前を %1$s から %2$s へ変更できませんでした: %3$s" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "%1$s に権限を設定できませんでした: %2$s" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "ディレクトリー %1$s を作成できません : %2$s" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "パス %1$s のstatを調べられません : %2$s" +@@ -812,7 +906,9 @@ msgstr "モジュール '%s:%s' のモジュラーフェイルセーフデータ + #: libdnf/module/ModulePackageContainer.cpp:1791 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" +-msgstr "ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: %s" ++msgstr "" ++"ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: " ++"%s" + + #: libdnf/module/ModulePackageContainer.cpp:1807 + #, c-format +@@ -829,7 +925,9 @@ msgstr "'%s' のモジュラーフェイルセーフデータを削除できま + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" +-msgstr "ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用できません" ++msgstr "" ++"ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用" ++"できません" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format +@@ -859,7 +957,8 @@ msgstr "ストリームのアップグレードに失敗しました: %s" + #: libdnf/module/modulemd/ModuleMetadata.cpp:221 + #, c-format + msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" +-msgstr "%s に一致するストリームがないため、モジュールの廃止を取得できません: %s" ++msgstr "" ++"%s に一致するストリームがないため、モジュールの廃止を取得できません: %s" + + #: libdnf/plugin/plugin.cpp:46 + #, c-format +@@ -902,9 +1001,9 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" +-"reldeps で '==' " +-"演算子を使用すると、未定義の動作が発生する可能性があります。これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' " +-"演算子を使用してください。" ++"reldeps で '==' 演算子を使用すると、未定義の動作が発生する可能性があります。" ++"これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' 演" ++"算子を使用してください。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -914,169 +1013,178 @@ msgstr "リポジトリー %s にはミラーまたは baseurl セットがあ + #: libdnf/repo/Repo.cpp:330 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。" ++msgstr "" ++"リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッ" ++"ピング。" + +-#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1400 ++#: libdnf/repo/Repo.cpp:491 libdnf/repo/Repo.cpp:612 libdnf/repo/Repo.cpp:643 ++#: libdnf/repo/Repo.cpp:1407 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" + msgstr "repo '%s': 'basecachedir' が設定されていません" + +-#: libdnf/repo/Repo.cpp:512 ++#: libdnf/repo/Repo.cpp:514 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" +-msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" ++msgstr "" ++"ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの" ++"設定を変更してください" + +-#: libdnf/repo/Repo.cpp:546 ++#: libdnf/repo/Repo.cpp:548 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されていません" ++msgstr "" ++"repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されてい" ++"ません" + +-#: libdnf/repo/Repo.cpp:548 ++#: libdnf/repo/Repo.cpp:550 + msgid "'proxy_username' is set but not 'proxy_password'" +-msgstr "'proxy_username' は設定済みですが、'proxy_password' は設定されていません" ++msgstr "" ++"'proxy_username' は設定済みですが、'proxy_password' は設定されていません" + +-#: libdnf/repo/Repo.cpp:629 ++#: libdnf/repo/Repo.cpp:631 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "repo に対して有効な baseurl を見つけられません: %s" + +-#: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 ++#: libdnf/repo/Repo.cpp:662 libdnf/repo/Repo.cpp:684 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: libdnf/repo/Repo.cpp:668 libdnf/repo/Repo.cpp:690 ++#: libdnf/repo/Repo.cpp:670 libdnf/repo/Repo.cpp:692 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 +-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279 ++#: libdnf/repo/Repo.cpp:711 libdnf/repo/Repo.cpp:1169 libdnf/repo/Repo.cpp:1243 ++#: libdnf/repo/Repo.cpp:1286 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "repo 一時ディレクトリー \"%s\" を作成できません: %s" + +-#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 ++#: libdnf/repo/Repo.cpp:719 libdnf/repo/Repo.cpp:785 libdnf/repo/Repo.cpp:919 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 ++#: libdnf/repo/Repo.cpp:746 libdnf/repo/Repo.cpp:810 + #, c-format + msgid "can not list keys: %s" + msgstr "キーを一覧表示できません: %s" + +-#: libdnf/repo/Repo.cpp:837 ++#: libdnf/repo/Repo.cpp:839 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" + msgstr "repo '%s' のGPG鍵の回収に失敗しました : %s" + +-#: libdnf/repo/Repo.cpp:890 ++#: libdnf/repo/Repo.cpp:892 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0x%s はインポート済みです" + +-#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#: libdnf/repo/Repo.cpp:906 libdnf/utils/filesystem.cpp:79 + #, c-format + msgid "Failed to create directory \"%s\": %d - %s" + msgstr "ディレクトリー \"%s\" の作成に失敗しました: %d - %s" + +-#: libdnf/repo/Repo.cpp:924 ++#: libdnf/repo/Repo.cpp:926 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: インポート済みのキー 0x%s。" + +-#: libdnf/repo/Repo.cpp:1176 ++#: libdnf/repo/Repo.cpp:1183 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "復元中: repo '%s' はスキップされました、metalink はありません。" + +-#: libdnf/repo/Repo.cpp:1195 ++#: libdnf/repo/Repo.cpp:1202 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." +-msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" ++msgstr "" ++"復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" + +-#: libdnf/repo/Repo.cpp:1218 ++#: libdnf/repo/Repo.cpp:1225 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "復元中: '%s' は失敗しました、%s の合計は一致しません。" + +-#: libdnf/repo/Repo.cpp:1224 ++#: libdnf/repo/Repo.cpp:1231 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "復元中: '%s' は復元できます - metalink チェックサムが一致します。" + +-#: libdnf/repo/Repo.cpp:1253 ++#: libdnf/repo/Repo.cpp:1260 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "復元中: '%s' は復元できます - repomd が一致します。" + +-#: libdnf/repo/Repo.cpp:1255 ++#: libdnf/repo/Repo.cpp:1262 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "復元中: '%s' に失敗しました、repomd が一致しません。" + +-#: libdnf/repo/Repo.cpp:1273 ++#: libdnf/repo/Repo.cpp:1280 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "repo 送信先ディレクトリ \"%s\" を作成できません : %s" + +-#: libdnf/repo/Repo.cpp:1293 ++#: libdnf/repo/Repo.cpp:1300 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "ディレクトリー \"%s\" を作成できません: %s" + +-#: libdnf/repo/Repo.cpp:1316 ++#: libdnf/repo/Repo.cpp:1323 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "ディレクトリー名を \"%s\" から \"%s\" へと変更できません: %s" + +-#: libdnf/repo/Repo.cpp:1339 ++#: libdnf/repo/Repo.cpp:1346 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo: キャッシュを使用: %s" + +-#: libdnf/repo/Repo.cpp:1351 ++#: libdnf/repo/Repo.cpp:1358 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" +-msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" ++msgstr "" ++"キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" + +-#: libdnf/repo/Repo.cpp:1355 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: リモートからダウンロード中: %s" + +-#: libdnf/repo/Repo.cpp:1362 ++#: libdnf/repo/Repo.cpp:1369 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" + msgstr "repo '%s' のメタデータのダウンロードに失敗しました : %s" + +-#: libdnf/repo/Repo.cpp:1388 ++#: libdnf/repo/Repo.cpp:1395 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): SHA256 のコンピュテーションに失敗しました" + +-#: libdnf/repo/Repo.cpp:1416 ++#: libdnf/repo/Repo.cpp:1423 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "persistdir \"%s\" を作成できません : %s" + +-#: libdnf/repo/Repo.cpp:1793 ++#: libdnf/repo/Repo.cpp:1800 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume は byterangestart param と同時に使用できません" + +-#: libdnf/repo/Repo.cpp:1810 ++#: libdnf/repo/Repo.cpp:1817 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget の初期化に失敗しました: %s" + +-#: libdnf/repo/Repo.cpp:1916 ++#: libdnf/repo/Repo.cpp:1923 + #, c-format + msgid "Cannot open %s: %s" + msgstr "%s を開くことができません: %s" + +-#: libdnf/repo/Repo.cpp:1960 ++#: libdnf/repo/Repo.cpp:1967 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "id %ld を伴うログハンドラーは存在しません" +@@ -1095,17 +1203,18 @@ msgstr "進行中ではありません" + msgid "No transaction in progress" + msgstr "進行中のトランザクションはありません" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "完了したトランザクションにトランザクションアイテムの挿入を試みます" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "完了したトランザクションにトランザクションアイテムの更新を試みます" + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "データベースが破損しています。テーブル 'config' の行 'version' がありません" ++msgstr "" ++"データベースが破損しています。テーブル 'config' の行 'version' がありません" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +@@ -1128,12 +1237,24 @@ msgstr "TransactionItem の状態は設定されていません: %s" + msgid "Can't add console output to unsaved transaction" + msgstr "未保存のトランザクションにコンソールの出力を追加できません" + +-#, fuzzy ++#~ msgid "failed to add solv" ++#~ msgstr "solv の追加に失敗しました" ++ ++#~ msgid "write_main() failed writing data: %i" ++#~ msgstr "write_main() はデータの書き込みに失敗しました: %i" ++ ++#~ msgid "write_main() failed to re-load written solv file" ++#~ msgstr "" ++#~ "write_main() は、書き込みされた solv ファイルの再ロードに失敗しました" ++ ++#~ msgid "write_ext(%1$d) has failed: %2$d" ++#~ msgstr "write_ext(%1$d) は失敗しました: %2$d" ++ ++#~ msgid "repo_add_repomdxml/rpmmd() has failed." ++#~ msgstr "repo_add_repomdxml/rpmmd() は失敗しました。" ++ + #~ msgid "Failed to parse module artifact NEVRA '%s'" +-#~ msgstr "デフォルトのアップグレードに失敗しました: %s" ++#~ msgstr "モジュールアーティファクト NEVRA '%s' の解析に失敗しました" + + #~ msgid "Bad id for repo: %s, byte = %s %d" + #~ msgstr "repo に対する不正な id: %s, byte = %s %d" +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "RPMDB チェックサムの計算に失敗しました" +diff --git a/po/ko.po b/po/ko.po +index 94d0994e..04ed2363 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -3,20 +3,23 @@ + # This file is distributed under the same license as the PACKAGE package. + # Ludek Janda , 2018. #zanata + # simmon , 2021. ++# Kim InSoo , 2022. ++# 김인수 , 2022, 2023. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-05 01:53+0000\n" +-"PO-Revision-Date: 2021-11-04 08:05+0000\n" +-"Last-Translator: simmon \n" +-"Language-Team: Korean \n" ++"POT-Creation-Date: 2023-02-28 09:24+0100\n" ++"PO-Revision-Date: 2023-03-02 22:20+0000\n" ++"Last-Translator: 김인수 \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.8\n" ++"X-Generator: Weblate 4.15.2\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -105,129 +108,136 @@ msgstr "변환 할 수 없습니다 '%s'초까지" + msgid "GetValue(): Value not set" + msgstr "GetValue () : 값이 설정되지 않았습니다" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3189 libdnf/dnf-context.cpp:3198 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "동시에 모듈 '%s’에서 다른 스트림을 활성화 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3207 libdnf/dnf-context.cpp:3225 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" +-msgstr "모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었습니다" ++msgstr "" ++"모듈 '%1$s' 스트림 '%2$s 을 활성화 할 수 없습니다: 모듈 상태가 이미 변경되었" ++"습니다" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3274 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "기본설정에 모듈 의존성 문제: %s" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3277 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "최신 모듈에 모듈 의존성 문제: %s" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3281 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "모듈러 의존성 문제: %s" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3304 libdnf/dnf-context.cpp:3328 ++#: libdnf/dnf-context.cpp:3339 libdnf/dnf-context.cpp:3378 ++#: libdnf/dnf-context.cpp:3394 libdnf/dnf-context.cpp:3426 ++#: libdnf/dnf-context.cpp:3475 libdnf/dnf-context.cpp:3485 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "인수 %s를 해결 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3311 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "모듈 이름만 필요합니다. 인수에서 불필요한 정보를 무시합니다: '%s'" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3325 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "모듈 '%s 를 재설정 할 수 없습니다: 모듈 상태가 이미 변경되었습니다" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3336 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" + msgstr "모듈 '%s'사용 할 수 없습니다: 모듈 상태는 이미 적재되었습니다" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3367 libdnf/dnf-context.cpp:3463 ++#: libdnf/dnf-context.cpp:3644 + msgid "No modular data available" + msgstr "모듈러 자료를 이용 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3384 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "인수: '%s'에 불필요한 정보를 무시하기" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3422 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" +-msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 중에 발생하는 문제" ++msgstr "" ++"모듈 '%1$s' 스트림 '%2$s': %3$s 위해 의존성 트리의 활성화하는 중에 발생하는 " ++"문제" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3434 + msgid "Problems appeared for module enable request:" + msgstr "모듈 활성화 요청에 나타난 문제:" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3529 + #, c-format + msgid "No active module packages found for module spec '%s'" +-msgstr "모듈 상세 '%s'에 동적 모듈 꾸러미를 찾을 수 없습니다" ++msgstr "모듈 상세 '%s'를 위한 활성 모듈 꾸러미가 없습니다" + +-#: libdnf/dnf-context.cpp:3523 ++#: libdnf/dnf-context.cpp:3534 + #, c-format + msgid "Cannot install module '%s' from fail-safe repository" +-msgstr "실패-방지 저장소에서 모듈 '%s'을 설치 할 수 없습니다" ++msgstr "실패-방지 저장소에서 모듈 '%s'를 설치 할 수 없습니다" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3541 + #, c-format + msgid "No profile found matching '%s'" + msgstr "'%s'와 일치하는 프로파일을 찾을 수 없습니다" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3595 + #, c-format + msgid "No match for package '%s' for module spec %s" +-msgstr "모듈 상세 %s와 꾸러미 '%s'가 일치하지 않습니다" ++msgstr "꾸러미 '%s'가(모듈 상세 %s에 대한) 일치하지 않습니다" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3606 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" +-msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 설치하는 동안에 발생하는 문제" ++msgstr "모듈 '%1$s' 스트림 '%2$s': %3$s 위해 설치 중에 발생하는 문제" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3615 + msgid "Problems appeared for module install request:" + msgstr "모듈 설치 요청을 위해 나타난 문제:" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3674 + msgid "Problems appeared for module reset request:" +-msgstr "모듈 재설정 요청을 위해 나타난 문제:" ++msgstr "모듈 초기화 요청을 위해 나타난 문제:" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3675 libdnf/dnf-context.cpp:3734 + msgid "Problems appeared for module disable request:" + msgstr "모듈 비활성화 요청을 위해 나타난 문제:" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3766 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" + msgstr "이 동작은 모듈 '%s'' 스트림 ‘%s'에서 스트림 '%s'로의 전환 결과입니다" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3770 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" + "활성화된 모듈 스트림을 전환 할 수 없습니다.\n" +-"설치된 모든 내용을 모듈에서 제거하고 ‘' 명령을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니다." ++"설치된 모든 내용을 모듈에서 제거하고 ‘' 명령을 사용하여 모듈을 " ++"재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니" ++"다." + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -254,7 +264,9 @@ msgstr " 문제: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 할 수 없습니다" ++msgstr "" ++"모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 " ++"할 수 없습니다" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -293,7 +305,8 @@ msgstr "연결 실행 오류 : %s" + + #: libdnf/dnf-rpmts.cpp:283 + msgid "Error running transaction and no problems were reported!" +-msgstr "연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!" ++msgstr "" ++"연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!" + + #: libdnf/dnf-rpmts.cpp:346 + msgid "Fatal error, run database recovery" +@@ -309,84 +322,128 @@ msgstr "꾸러미를 찾지 못했습니다. %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "요소 지우기를 추가 할 수 없습니다. %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" +-msgstr "solv를 추가하지 못했습니다" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." ++msgstr "repo_add_solv() 실패하였습니다." ++ ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " ++msgstr "확장 캐쉬 %s (%d) 적재 중 실패함: " + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "%2$s에 %1$s 문자열이 없습니다" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "열지 못했습니다 : %s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "여는 tmp 파일을 열지 못했습니다. %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 + #, c-format +-msgid "write_main() failed writing data: %i" +-msgstr "write_main() 실패한 쓰기 자료: %i" ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "기본 캐쉬 %s를 쓰는 동안에 repowriter 쓰기가 실패함: %i, 오류: %s" + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" +-msgstr "write_main ()이 작성된 solv 파일을 다시 적재하지 못했습니다" ++#: libdnf/dnf-sack.cpp:560 ++#, c-format ++msgid "Failed closing tmp file %s: %s" ++msgstr "tmp 파일을 닫는데 실패함 %s: %s" ++ ++#: libdnf/dnf-sack.cpp:570 ++#, c-format ++msgid "Failed to use newly written primary cache: %s: " ++msgstr "새롭게 작성된 기본 캐쉬를 사용하는데 실패함: %s: " + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" ++msgstr "새롭게 작성된 기본 캐쉬를 사용하는데 실패함: %s" ++ ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "임시 파일을 만들 수 없습니다. %s" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" +-msgstr "write_ext(%1$d) 실패하였습니다: %2$d" ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "확장 캐쉬 %s (%d)를 쓰는 동안: repowriter 쓰기가 실패함: %i, 오류: %s" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:676 ++#, c-format ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "확장 캐쉬 (%d)를 쓰는 동안: 임시 파일을 닫을 수 없습니다: %s" ++ ++#: libdnf/dnf-sack.cpp:692 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d): " ++msgstr "새롭게 작성된 확장 캐쉬를 사용하는데 실패함: %s (%d): " ++ ++#: libdnf/dnf-sack.cpp:699 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d)" ++msgstr "새롭게 작성된 확장 캐쉬를 사용하는데 실패함: %s (%d)" ++ ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" + msgstr "null repo md 파일" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "파일을 읽을 수 없습니다. %1$s: %2$s" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." +-msgstr "repo_add_solv() 실패하였습니다." ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " ++msgstr "저장소를 적재하는 동안에 %s를 사용하는데 실패함: " + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "MD_TYPE_PRIMARY를 적재하지 못했습니다." + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." +-msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다." ++#: libdnf/dnf-sack.cpp:784 ++#, c-format ++msgid "Opening repository primary data has failed: %s" ++msgstr "저장소 기본 자료를 여는데 실패함: %s" ++ ++#: libdnf/dnf-sack.cpp:795 ++#, c-format ++msgid "Loading repomd has failed: %s" ++msgstr "repomd 적재하는데 실패함: %s" ++ ++#: libdnf/dnf-sack.cpp:806 ++#, c-format ++msgid "Loading primary has failed: %s" ++msgstr "기본 적재하는데 실패함: %s" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:872 + msgid "failed to auto-detect architecture" + msgstr "구조 자동 검색에 실패했습니다" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1037 + #, c-format + msgid "failed creating cachedir %s" +-msgstr "캐시 된 생성 실패 %s" ++msgstr "캐쉬 된 생성 실패 %s" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1814 + msgid "failed loading RPMDB" + msgstr "RPMDB로드 실패" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2598 + #, c-format + msgid "No module defaults found: %s" + msgstr "모듈 기본 설정을 찾을 수 없습니다: %s" +@@ -415,69 +472,78 @@ msgstr "국가에서 행해진 %1$p 크기가 설정되지 않았습니다. [%2$ + msgid "already at 100%% state [%s]" + msgstr "이미 100 %% 상태 [%s]" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" +-msgstr "꾸러미를 만들 때 소스가 설정되지 않았습니다. %s" ++msgstr "꾸러미 %s를 확인 하려고 할 때 원천이 설정되지 않았습니다" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "보장하지 못함 %1$s 레포로서 %2$s 찾을 수 없음 (%3$i repos loaded)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "신뢰할 수 없는지 확인하지 못했습니다. " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "에 대한 내려받기 파일 %s 찾을 수 없음" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "꾸러미 %1$s 확인 및 복구 할 수 없습니다. %2$s GPG 사용 설정 됨 : %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "CacheDir에 대한 값을 가져 오는 데 실패했습니다" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s: " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "에 대한 파일 시스템 크기를 가져 오는 데 실패했습니다. %s" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "여유 공간이 부족합니다. %1$s: 필요 %2$s, 이용 가능 %3$s" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "루트를 설정하지 못했습니다" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "%i 연결 실행 중 오류" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "rpm 데이타베이스를 여는 동안 오류 %i가 발생했습니다" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "rpmdbCookie() 함수는 rpm 데이타베이스의 쿠키를 반환하지 않습니다." ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "오류 %i 실행중인 연결" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "연결이 쓰기 단계로 이동하지 않았지만 오류를 반환하지 않았습니다 (%i)" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "디렉토리를 열 수 없습니다. %1$s: %2$s" +@@ -678,62 +744,67 @@ msgstr "모듈 %s가 자체적으로 제공된 %s와 충돌합니다" + msgid "both module %s and %s obsolete %s" + msgstr "모듈 %s와 %s가 %s에서 폐기되었습니다" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "solver 설정 없음" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "%s 절대값을 생성을 실패하였습니다" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "%1$s: %2$s에 디버그자료 쓰기를 실패했습니다" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "목표에 solv가 없다" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "해결책 없음, 보호 된 꾸러미를 제거 할 수 없음" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "해결책 없음" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "문제: " + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "문제 %d: " + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "이 작업으로 인해 다음과 같은 보호 꾸러미가 제거됩니다. " + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "Libsolv의 solv_toolversion은 %zu 길이지만 최대값은 %zu로 예상됩니다" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "%1$s 을 %2$s: %3$s에 이름 바꾸기 실패" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "%1$s: %2$s에 perms 설정 실패하였습니다" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "디렉토리를 생성 할 수 없습니다 %1$s: %2$s" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "경로 %1$s: %2$s stat 할 수 없습니다" +@@ -829,7 +900,9 @@ msgstr "'%s'에서 모듈식 Fail Safe 자료를 제거 할 수 없습니다" + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" +-msgstr "'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 되어 있기 때문에)" ++msgstr "" ++"'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 " ++"되어 있기 때문에)" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format +@@ -902,8 +975,9 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" +-"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 연산자는 더 이상 사용되지 않으며, 향후 " +-"버전에서는 지원이 중단됩니다. 대신 '=' 연산자를 사용하세요." ++"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 " ++"연산자는 더 이상 사용되지 않으며, 향후 버전에서는 지원이 중단됩니다. 대신 " ++"'=' 연산자를 사용하세요." + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -915,167 +989,170 @@ msgstr "저장소 %s 는 연결주소 또는 baseurl 구성을 갖고 있지 않 + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "저장소 '%s'는 지원하지 않는 유형: 'type=%s'이며, 건너뜁니다." + +-#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1400 ++#: libdnf/repo/Repo.cpp:491 libdnf/repo/Repo.cpp:612 libdnf/repo/Repo.cpp:643 ++#: libdnf/repo/Repo.cpp:1407 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" + msgstr "repo '%s': 'basecachedir가 구성되어 있지 않습니다" + +-#: libdnf/repo/Repo.cpp:512 ++#: libdnf/repo/Repo.cpp:514 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" +-msgstr "최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주세요" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" ++msgstr "" ++"최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주" ++"세요" + +-#: libdnf/repo/Repo.cpp:546 ++#: libdnf/repo/Repo.cpp:548 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다" ++msgstr "" ++"repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다" + +-#: libdnf/repo/Repo.cpp:548 ++#: libdnf/repo/Repo.cpp:550 + msgid "'proxy_username' is set but not 'proxy_password'" + msgstr "'proxy_username' 이 구성되어 있지만 'proxy_password'가 없습니다" + +-#: libdnf/repo/Repo.cpp:629 ++#: libdnf/repo/Repo.cpp:631 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "repo: %s 를 위해 유효한 baseurl을 찾을 수 없습니다" + +-#: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 ++#: libdnf/repo/Repo.cpp:662 libdnf/repo/Repo.cpp:684 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: libdnf/repo/Repo.cpp:668 libdnf/repo/Repo.cpp:690 ++#: libdnf/repo/Repo.cpp:670 libdnf/repo/Repo.cpp:692 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 +-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279 ++#: libdnf/repo/Repo.cpp:711 libdnf/repo/Repo.cpp:1169 libdnf/repo/Repo.cpp:1243 ++#: libdnf/repo/Repo.cpp:1286 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "임시 저장소 디렉토리를 만들 수 없습니다 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 ++#: libdnf/repo/Repo.cpp:719 libdnf/repo/Repo.cpp:785 libdnf/repo/Repo.cpp:919 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 ++#: libdnf/repo/Repo.cpp:746 libdnf/repo/Repo.cpp:810 + #, c-format + msgid "can not list keys: %s" + msgstr "열쇠를 나열 할 수 없습니다 : %s" + +-#: libdnf/repo/Repo.cpp:837 ++#: libdnf/repo/Repo.cpp:839 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" + msgstr "repo '%s': %sf 를 위해 GPG key 가져오기에 실패하였습니다" + +-#: libdnf/repo/Repo.cpp:890 ++#: libdnf/repo/Repo.cpp:892 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "repo %s: 0x%s를 이미 가져왔습니다" + +-#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#: libdnf/repo/Repo.cpp:906 libdnf/utils/filesystem.cpp:79 + #, c-format + msgid "Failed to create directory \"%s\": %d - %s" + msgstr "디렉토리를 생성 할 수 없습니다 \"%s\": %d - %s" + +-#: libdnf/repo/Repo.cpp:924 ++#: libdnf/repo/Repo.cpp:926 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "repo %s: 0x%s 키를 가져왔습니다." + +-#: libdnf/repo/Repo.cpp:1176 ++#: libdnf/repo/Repo.cpp:1183 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "부활: repo '%s' 건너 뛰었으며, 메타링크가 없습니다." + +-#: libdnf/repo/Repo.cpp:1195 ++#: libdnf/repo/Repo.cpp:1202 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "부활: repo '%s'건너 뛰었으며, 사용 가능한 해쉬가 없습니다." + +-#: libdnf/repo/Repo.cpp:1218 ++#: libdnf/repo/Repo.cpp:1225 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "부활 : '%s'에 실패하고, %s 합과 일치하지 않음." + +-#: libdnf/repo/Repo.cpp:1224 ++#: libdnf/repo/Repo.cpp:1231 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "부활: '%s'는 부활 할 수 있습니다 - 메타링크 체크섬이 일치합니다." + +-#: libdnf/repo/Repo.cpp:1253 ++#: libdnf/repo/Repo.cpp:1260 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "부활: '%s'는 부활 할 수 있습니다 - repomd가 일치합니다." + +-#: libdnf/repo/Repo.cpp:1255 ++#: libdnf/repo/Repo.cpp:1262 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "부활: '%s'에 실패하고, 일치하지 않은 repomd." + +-#: libdnf/repo/Repo.cpp:1273 ++#: libdnf/repo/Repo.cpp:1280 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "repo 목적지 디렉토리 \"%s\": %s 를 생성 할 수 없습니다" + +-#: libdnf/repo/Repo.cpp:1293 ++#: libdnf/repo/Repo.cpp:1300 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "디렉토리를 만들 수 없습니다 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1316 ++#: libdnf/repo/Repo.cpp:1323 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" +-msgstr "디렉터리 이름을 바꿀 수 없습니다 \"%s\"~\"%s\": %s" ++msgstr "디렉토리 \"%s\"를 \"%s\": %s로 변경 할 수 없음" + +-#: libdnf/repo/Repo.cpp:1339 ++#: libdnf/repo/Repo.cpp:1346 + #, c-format + msgid "repo: using cache for: %s" + msgstr "repo: 캐쉬 사용: %s" + +-#: libdnf/repo/Repo.cpp:1351 ++#: libdnf/repo/Repo.cpp:1358 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "캐쉬만 사용 가능하지만 '%s'를 위해 캐쉬가 없습니다" + +-#: libdnf/repo/Repo.cpp:1355 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "repo: 원격에서 내려받기 중: %s" + +-#: libdnf/repo/Repo.cpp:1362 ++#: libdnf/repo/Repo.cpp:1369 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" + msgstr "repo를 위한 메타자료 내려받기에 실패하였습니다 '%s': %s" + +-#: libdnf/repo/Repo.cpp:1388 ++#: libdnf/repo/Repo.cpp:1395 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): SHA256 계산에 실패했습니다" + +-#: libdnf/repo/Repo.cpp:1416 ++#: libdnf/repo/Repo.cpp:1423 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "persistdir \"%s\": %s 를 생성 할 수 없습니다" + +-#: libdnf/repo/Repo.cpp:1793 ++#: libdnf/repo/Repo.cpp:1800 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "이력서는 byterangestart 매개 변수와 동시에 사용 할 수 없습니다" + +-#: libdnf/repo/Repo.cpp:1810 ++#: libdnf/repo/Repo.cpp:1817 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget 초기화에 실패했습니다: %s" + +-#: libdnf/repo/Repo.cpp:1916 ++#: libdnf/repo/Repo.cpp:1923 + #, c-format + msgid "Cannot open %s: %s" + msgstr "열 수 없습니다 %s: %s" + +-#: libdnf/repo/Repo.cpp:1960 ++#: libdnf/repo/Repo.cpp:1967 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "ID가 있는 로그 처리기 %ld가 존재하지 않습니다" +@@ -1094,17 +1171,18 @@ msgstr "진행 중이 아님" + msgid "No transaction in progress" + msgstr "진행 중인 연결 없음" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "연결 항목을 완료된 연결에 삽입하려고 시도했습니다" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "완료된 연결에서 연결 항목 최신화를 시도합니다" + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다" ++msgstr "" ++"데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +@@ -1127,8 +1205,20 @@ msgstr "TransactionItem 상태가 설정되지 않았습니다. %s" + msgid "Can't add console output to unsaved transaction" + msgstr "저장되지 않은 연결에 콘솔 출력을 추가 할 수 없습니다" + +-#~ msgid "Failed to parse module artifact NEVRA '%s'" +-#~ msgstr "모듈 artifact NERVRA '%s'를 구문 분석하는데 실패하였습니다" ++#~ msgid "failed to add solv" ++#~ msgstr "solv를 추가하지 못했습니다" ++ ++#~ msgid "write_main() failed writing data: %i" ++#~ msgstr "write_main() 실패한 쓰기 자료: %i" ++ ++#~ msgid "write_main() failed to re-load written solv file" ++#~ msgstr "write_main ()이 작성된 solv 파일을 다시 적재하지 못했습니다" + +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "RPMDB 체크섬 계산 실패" ++#~ msgid "write_ext(%1$d) has failed: %2$d" ++#~ msgstr "write_ext(%1$d) 실패하였습니다: %2$d" ++ ++#~ msgid "repo_add_repomdxml/rpmmd() has failed." ++#~ msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다." ++ ++#~ msgid "Failed to parse module artifact NEVRA '%s'" ++#~ msgstr "모듈 artifact NERVE '%s' 구분 분석에 실패함" +diff --git a/po/libdnf.pot b/po/libdnf.pot +index 4ae537cd..fcd92f5a 100644 +--- a/po/libdnf.pot ++++ b/po/libdnf.pot +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-12 01:51+0000\n" ++"POT-Creation-Date: 2023-02-28 09:24+0100\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -105,122 +105,122 @@ msgstr "" + msgid "GetValue(): Value not set" + msgstr "" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3189 libdnf/dnf-context.cpp:3198 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3207 libdnf/dnf-context.cpp:3225 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" + msgstr "" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3274 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3277 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3281 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3304 libdnf/dnf-context.cpp:3328 ++#: libdnf/dnf-context.cpp:3339 libdnf/dnf-context.cpp:3378 ++#: libdnf/dnf-context.cpp:3394 libdnf/dnf-context.cpp:3426 ++#: libdnf/dnf-context.cpp:3475 libdnf/dnf-context.cpp:3485 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3311 + #, c-format + msgid "" + "Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3325 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3336 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" + msgstr "" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3367 libdnf/dnf-context.cpp:3463 ++#: libdnf/dnf-context.cpp:3644 + msgid "No modular data available" + msgstr "" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3384 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3422 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3434 + msgid "Problems appeared for module enable request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3529 + #, c-format + msgid "No active module packages found for module spec '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3523 ++#: libdnf/dnf-context.cpp:3534 + #, c-format + msgid "Cannot install module '%s' from fail-safe repository" + msgstr "" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3541 + #, c-format + msgid "No profile found matching '%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3595 + #, c-format + msgid "No match for package '%s' for module spec %s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3606 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" + msgstr "" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3615 + msgid "Problems appeared for module install request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3674 + msgid "Problems appeared for module reset request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3675 libdnf/dnf-context.cpp:3734 + msgid "Problems appeared for module disable request:" + msgstr "" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3766 + #, c-format + msgid "" + "The operation would result in switching of module '%s' stream '%s' to stream " + "'%s'" + msgstr "" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3770 + msgid "" + "It is not possible to switch enabled streams of a module.\n" + "It is recommended to remove all installed content from the module, and reset " +@@ -309,84 +309,128 @@ msgstr "" + msgid "could not add erase element %1$s(%2$i)" + msgstr "" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " + msgstr "" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 ++#, c-format ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:560 + #, c-format +-msgid "write_main() failed writing data: %i" ++msgid "Failed closing tmp file %s: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" ++#: libdnf/dnf-sack.cpp:570 ++#, c-format ++msgid "Failed to use newly written primary cache: %s: " + msgstr "" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 ++#, c-format ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:676 ++#, c-format ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:692 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d): " ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:699 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" ++msgid "Failed to use newly written extension cache: %s (%d)" + msgstr "" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" + msgstr "" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " + msgstr "" + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "" + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." ++#: libdnf/dnf-sack.cpp:784 ++#, c-format ++msgid "Opening repository primary data has failed: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:795 ++#, c-format ++msgid "Loading repomd has failed: %s" ++msgstr "" ++ ++#: libdnf/dnf-sack.cpp:806 ++#, c-format ++msgid "Loading primary has failed: %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:872 + msgid "failed to auto-detect architecture" + msgstr "" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1037 + #, c-format + msgid "failed creating cachedir %s" + msgstr "" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1814 + msgid "failed loading RPMDB" + msgstr "" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2598 + #, c-format + msgid "No module defaults found: %s" + msgstr "" +@@ -415,69 +459,78 @@ msgstr "" + msgid "already at 100%% state [%s]" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "" + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "" + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "" ++ ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" + msgstr "" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "" +@@ -678,62 +731,67 @@ msgstr "" + msgid "both module %s and %s obsolete %s" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "" + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "" + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "" + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "" +@@ -913,167 +971,167 @@ msgstr "" + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "" + +-#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1400 ++#: libdnf/repo/Repo.cpp:491 libdnf/repo/Repo.cpp:612 libdnf/repo/Repo.cpp:643 ++#: libdnf/repo/Repo.cpp:1407 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" + msgstr "" + +-#: libdnf/repo/Repo.cpp:512 ++#: libdnf/repo/Repo.cpp:514 + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of " + "minrate or throttle" + msgstr "" + +-#: libdnf/repo/Repo.cpp:546 ++#: libdnf/repo/Repo.cpp:548 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" + msgstr "" + +-#: libdnf/repo/Repo.cpp:548 ++#: libdnf/repo/Repo.cpp:550 + msgid "'proxy_username' is set but not 'proxy_password'" + msgstr "" + +-#: libdnf/repo/Repo.cpp:629 ++#: libdnf/repo/Repo.cpp:631 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 ++#: libdnf/repo/Repo.cpp:662 libdnf/repo/Repo.cpp:684 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:668 libdnf/repo/Repo.cpp:690 ++#: libdnf/repo/Repo.cpp:670 libdnf/repo/Repo.cpp:692 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 libdnf/repo/Repo.cpp:1236 +-#: libdnf/repo/Repo.cpp:1279 ++#: libdnf/repo/Repo.cpp:711 libdnf/repo/Repo.cpp:1169 libdnf/repo/Repo.cpp:1243 ++#: libdnf/repo/Repo.cpp:1286 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 ++#: libdnf/repo/Repo.cpp:719 libdnf/repo/Repo.cpp:785 libdnf/repo/Repo.cpp:919 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 ++#: libdnf/repo/Repo.cpp:746 libdnf/repo/Repo.cpp:810 + #, c-format + msgid "can not list keys: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:837 ++#: libdnf/repo/Repo.cpp:839 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:890 ++#: libdnf/repo/Repo.cpp:892 + #, c-format + msgid "repo %s: 0x%s already imported" + msgstr "" + +-#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#: libdnf/repo/Repo.cpp:906 libdnf/utils/filesystem.cpp:79 + #, c-format + msgid "Failed to create directory \"%s\": %d - %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:924 ++#: libdnf/repo/Repo.cpp:926 + #, c-format + msgid "repo %s: imported key 0x%s." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1176 ++#: libdnf/repo/Repo.cpp:1183 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1195 ++#: libdnf/repo/Repo.cpp:1202 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1218 ++#: libdnf/repo/Repo.cpp:1225 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1224 ++#: libdnf/repo/Repo.cpp:1231 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1253 ++#: libdnf/repo/Repo.cpp:1260 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1255 ++#: libdnf/repo/Repo.cpp:1262 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "" + +-#: libdnf/repo/Repo.cpp:1273 ++#: libdnf/repo/Repo.cpp:1280 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1293 ++#: libdnf/repo/Repo.cpp:1300 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1316 ++#: libdnf/repo/Repo.cpp:1323 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1339 ++#: libdnf/repo/Repo.cpp:1346 + #, c-format + msgid "repo: using cache for: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1351 ++#: libdnf/repo/Repo.cpp:1358 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1355 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "repo: downloading from remote: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1362 ++#: libdnf/repo/Repo.cpp:1369 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1388 ++#: libdnf/repo/Repo.cpp:1395 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1416 ++#: libdnf/repo/Repo.cpp:1423 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1793 ++#: libdnf/repo/Repo.cpp:1800 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1810 ++#: libdnf/repo/Repo.cpp:1817 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1916 ++#: libdnf/repo/Repo.cpp:1923 + #, c-format + msgid "Cannot open %s: %s" + msgstr "" + +-#: libdnf/repo/Repo.cpp:1960 ++#: libdnf/repo/Repo.cpp:1967 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "" +@@ -1092,11 +1150,11 @@ msgstr "" + msgid "No transaction in progress" + msgstr "" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "" + +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 787086b5..6ca03861 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -1,21 +1,22 @@ + # Charles Lee , 2017. #zanata, 2020, 2021. + # Ludek Janda , 2018. #zanata, 2021. +-# Qiyu Yan , 2021. +-# Sundeep Anand , 2021. ++# Sundeep Anand , 2021, 2022. ++# Transtats , 2022, 2023. + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-01-05 01:53+0000\n" +-"PO-Revision-Date: 2021-09-11 10:04+0000\n" +-"Last-Translator: Ludek Janda \n" +-"Language-Team: Chinese (Simplified) \n" ++"POT-Creation-Date: 2023-02-28 09:24+0100\n" ++"PO-Revision-Date: 2023-03-07 14:20+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.8\n" ++"X-Generator: Weblate 4.15.2\n" + + #: libdnf/conf/ConfigMain.cpp:62 libdnf/conf/OptionSeconds.cpp:40 + msgid "no value specified" +@@ -104,130 +105,131 @@ msgstr "无法把 '%s' 转换为秒" + msgid "GetValue(): Value not set" + msgstr "GetValue(): 值没有设置" + +-#: libdnf/dnf-context.cpp:3178 libdnf/dnf-context.cpp:3187 ++#: libdnf/dnf-context.cpp:3189 libdnf/dnf-context.cpp:3198 + #, c-format + msgid "Cannot enable more streams from module '%s' at the same time" + msgstr "无法同时从模块 '%s' 中启用更多流" + +-#: libdnf/dnf-context.cpp:3196 libdnf/dnf-context.cpp:3214 ++#: libdnf/dnf-context.cpp:3207 libdnf/dnf-context.cpp:3225 + #, c-format + msgid "" + "Cannot enable module '%1$s' stream '%2$s': State of module already modified" + msgstr "无法启用模块 '%1$s' 流 '%2$s':已经修改的模块状态" + +-#: libdnf/dnf-context.cpp:3263 ++#: libdnf/dnf-context.cpp:3274 + #, c-format + msgid "Modular dependency problem with Defaults: %s" + msgstr "默认设置的模块依赖性问题:%s" + +-#: libdnf/dnf-context.cpp:3266 ++#: libdnf/dnf-context.cpp:3277 + #, c-format + msgid "Modular dependency problem with the latest modules: %s" + msgstr "最新模块的模块化依赖关系问题: %s" + +-#: libdnf/dnf-context.cpp:3270 ++#: libdnf/dnf-context.cpp:3281 + #, c-format + msgid "Modular dependency problem: %s" + msgstr "模块依赖问题:%s" + +-#: libdnf/dnf-context.cpp:3293 libdnf/dnf-context.cpp:3317 +-#: libdnf/dnf-context.cpp:3328 libdnf/dnf-context.cpp:3367 +-#: libdnf/dnf-context.cpp:3383 libdnf/dnf-context.cpp:3415 +-#: libdnf/dnf-context.cpp:3464 libdnf/dnf-context.cpp:3474 ++#: libdnf/dnf-context.cpp:3304 libdnf/dnf-context.cpp:3328 ++#: libdnf/dnf-context.cpp:3339 libdnf/dnf-context.cpp:3378 ++#: libdnf/dnf-context.cpp:3394 libdnf/dnf-context.cpp:3426 ++#: libdnf/dnf-context.cpp:3475 libdnf/dnf-context.cpp:3485 + #, c-format + msgid "Unable to resolve argument '%s'" + msgstr "无法解析参数 '%s'" + +-#: libdnf/dnf-context.cpp:3300 ++#: libdnf/dnf-context.cpp:3311 + #, c-format + msgid "" +-"Only module name is required. Ignoring unneeded information in argument: " +-"'%s'" ++"Only module name is required. Ignoring unneeded information in argument: '%s'" + msgstr "只需要模块名。忽略参数 '%s' 中的无用信息" + +-#: libdnf/dnf-context.cpp:3314 ++#: libdnf/dnf-context.cpp:3325 + #, c-format + msgid "Cannot reset module '%s': State of module already modified" + msgstr "无法重置模块 '%s':已修改的模块状态" + +-#: libdnf/dnf-context.cpp:3325 ++#: libdnf/dnf-context.cpp:3336 + #, c-format + msgid "Cannot disable module '%s': State of module already modified" + msgstr "无法禁用模块 '%s':已经修改的模块状态" + +-#: libdnf/dnf-context.cpp:3356 libdnf/dnf-context.cpp:3452 +-#: libdnf/dnf-context.cpp:3633 ++#: libdnf/dnf-context.cpp:3367 libdnf/dnf-context.cpp:3463 ++#: libdnf/dnf-context.cpp:3644 + msgid "No modular data available" + msgstr "没有可用的模块数据" + +-#: libdnf/dnf-context.cpp:3373 ++#: libdnf/dnf-context.cpp:3384 + #, c-format + msgid "Ignoring unneeded information in argument: '%s'" +-msgstr "忽略参数:\"%s\" 中不需要的信息" ++msgstr "忽略参数中不需要的信息:'%s'" + +-#: libdnf/dnf-context.cpp:3411 ++#: libdnf/dnf-context.cpp:3422 + #, c-format + msgid "" + "Problem during enablement of dependency tree for module '%1$s' stream " + "'%2$s': %3$s" + msgstr "为模块 '%1$s' 流 '%2$s' 启用依赖树时出现问题: %3$s" + +-#: libdnf/dnf-context.cpp:3423 ++#: libdnf/dnf-context.cpp:3434 + msgid "Problems appeared for module enable request:" +-msgstr "" ++msgstr "模块启用请求出现问题:" + +-#: libdnf/dnf-context.cpp:3518 ++#: libdnf/dnf-context.cpp:3529 + #, c-format + msgid "No active module packages found for module spec '%s'" +-msgstr "" ++msgstr "未找到模块规范 '%s' 的活动模块包" + +-#: libdnf/dnf-context.cpp:3523 +-#, fuzzy, c-format +-#| msgid "cannot install both modules %s and %s" ++#: libdnf/dnf-context.cpp:3534 ++#, c-format + msgid "Cannot install module '%s' from fail-safe repository" +-msgstr "无法同时安装模块 %s 和 %s" ++msgstr "无法从故障保护存储库安装模块 '%s'" + +-#: libdnf/dnf-context.cpp:3530 ++#: libdnf/dnf-context.cpp:3541 + #, c-format + msgid "No profile found matching '%s'" +-msgstr "" ++msgstr "未找到匹配 '%s' 的配置文件" + +-#: libdnf/dnf-context.cpp:3584 ++#: libdnf/dnf-context.cpp:3595 + #, c-format + msgid "No match for package '%s' for module spec %s" +-msgstr "" ++msgstr "没有匹配模块规范 %s 的包 '%s'" + +-#: libdnf/dnf-context.cpp:3595 ++#: libdnf/dnf-context.cpp:3606 + #, c-format + msgid "Problem during install for module '%1$s' stream '%2$s': %3$s" +-msgstr "" ++msgstr "在安装模块 '%1$s' 流 '%2$s'时的问题:%3$s" + +-#: libdnf/dnf-context.cpp:3604 ++#: libdnf/dnf-context.cpp:3615 + msgid "Problems appeared for module install request:" +-msgstr "" ++msgstr "模块安装请求出现问题:" + +-#: libdnf/dnf-context.cpp:3663 ++#: libdnf/dnf-context.cpp:3674 + msgid "Problems appeared for module reset request:" +-msgstr "" ++msgstr "模块重置请求出现问题:" + +-#: libdnf/dnf-context.cpp:3664 libdnf/dnf-context.cpp:3723 ++#: libdnf/dnf-context.cpp:3675 libdnf/dnf-context.cpp:3734 + msgid "Problems appeared for module disable request:" +-msgstr "" ++msgstr "模块禁用请求出现问题:" + +-#: libdnf/dnf-context.cpp:3755 ++#: libdnf/dnf-context.cpp:3766 + #, c-format + msgid "" +-"The operation would result in switching of module '%s' stream '%s' to stream" +-" '%s'" ++"The operation would result in switching of module '%s' stream '%s' to stream " ++"'%s'" + msgstr "这个操作会把模块 '%s' 从流 '%s' 切换到流 '%s'" + +-#: libdnf/dnf-context.cpp:3759 ++#: libdnf/dnf-context.cpp:3770 + msgid "" + "It is not possible to switch enabled streams of a module.\n" +-"It is recommended to remove all installed content from the module, and reset the module using 'microdnf module reset ' command. After you reset the module, you can install the other stream." ++"It is recommended to remove all installed content from the module, and reset " ++"the module using 'microdnf module reset ' command. After you " ++"reset the module, you can install the other stream." + msgstr "" + "无法切换一个模块已启用的流。 \n" +-"推荐从模块中删除所有已安装的内容,使用 'microdnf module reset ' 命令重置模块。在重置模块后就可以安装其他流。" ++"推荐从模块中删除所有已安装的内容,使用 'microdnf module reset ' " ++"命令重置模块。在重置模块后就可以安装其他流。" + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -309,84 +311,128 @@ msgstr "无法找到软件包 %s" + msgid "could not add erase element %1$s(%2$i)" + msgstr "无法添加删除元素 %1$s(%2$i)" + +-#: libdnf/dnf-sack.cpp:395 +-msgid "failed to add solv" +-msgstr "添加 solv 失败" ++#: libdnf/dnf-sack.cpp:251 ++msgid "repo_add_solv() has failed." ++msgstr "repo_add_solv() 已失败。" + +-#: libdnf/dnf-sack.cpp:414 ++#: libdnf/dnf-sack.cpp:415 ++#, c-format ++msgid "Loading extension cache %s (%d) failed: " ++msgstr "加载扩展缓存 %s (%d) 失败: " ++ ++#: libdnf/dnf-sack.cpp:429 + #, c-format + msgid "no %1$s string for %2$s" +-msgstr "没有为 %2$s 的 %1$s 字符串" ++msgstr "没有 %2$s 的 %1$s 字符串" + +-#: libdnf/dnf-sack.cpp:424 ++#: libdnf/dnf-sack.cpp:439 + #, c-format + msgid "failed to open: %s" + msgstr "打开失败:%s" + +-#: libdnf/dnf-sack.cpp:503 ++#: libdnf/dnf-sack.cpp:518 + #, c-format + msgid "cannot create temporary file: %s" + msgstr "不能创建临时文件: %s" + +-#: libdnf/dnf-sack.cpp:513 ++#: libdnf/dnf-sack.cpp:528 + #, c-format + msgid "failed opening tmp file: %s" + msgstr "打开 tmp 文件失败: %s" + +-#: libdnf/dnf-sack.cpp:525 ++#: libdnf/dnf-sack.cpp:550 ++#, c-format ++msgid "While writing primary cache %s repowriter write failed: %i, error: %s" ++msgstr "写主缓存 %s 时 repowriter 写失败:%i 错误:%s" ++ ++#: libdnf/dnf-sack.cpp:560 + #, c-format +-msgid "write_main() failed writing data: %i" +-msgstr "write_main() 写数据失败: %i" ++msgid "Failed closing tmp file %s: %s" ++msgstr "关闭临时文件 %s 失败:%s" + +-#: libdnf/dnf-sack.cpp:542 +-msgid "write_main() failed to re-load written solv file" +-msgstr "write_main() 重新加载写的 solv 文件失败" ++#: libdnf/dnf-sack.cpp:570 ++#, c-format ++msgid "Failed to use newly written primary cache: %s: " ++msgstr "使用新写的主缓存失败:%s: " ++ ++#: libdnf/dnf-sack.cpp:576 ++#, c-format ++msgid "Failed to use newly written primary cache: %s" ++msgstr "使用新写的主缓存失败:%s" + +-#: libdnf/dnf-sack.cpp:607 ++#: libdnf/dnf-sack.cpp:626 + #, c-format + msgid "can not create temporary file %s" + msgstr "不能创建临时文件 %s" + +-#: libdnf/dnf-sack.cpp:625 ++#: libdnf/dnf-sack.cpp:666 + #, c-format +-msgid "write_ext(%1$d) has failed: %2$d" +-msgstr "write_ext(%1$d) 已失败: %2$d" ++msgid "" ++"While writing extension cache %s (%d): repowriter write failed: %i, error: %s" ++msgstr "编写扩展缓存 %s (%d) 时: repowriter 写失败: %i,错误: %s" + +-#: libdnf/dnf-sack.cpp:680 ++#: libdnf/dnf-sack.cpp:676 ++#, c-format ++msgid "While writing extension cache (%d): cannot close temporary file: %s" ++msgstr "编写扩展缓存 (%d) 时:无法关闭临时文件:%s" ++ ++#: libdnf/dnf-sack.cpp:692 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d): " ++msgstr "使用新写的扩展缓存失败:%s (%d): " ++ ++#: libdnf/dnf-sack.cpp:699 ++#, c-format ++msgid "Failed to use newly written extension cache: %s (%d)" ++msgstr "使用新写的扩展缓存失败:%s (%d)" ++ ++#: libdnf/dnf-sack.cpp:740 + msgid "null repo md file" +-msgstr "null repo md 文件" ++msgstr "null 存储库 md 文件" + +-#: libdnf/dnf-sack.cpp:689 ++#: libdnf/dnf-sack.cpp:749 + #, c-format + msgid "can not read file %1$s: %2$s" + msgstr "不能读文件 %1$s: %2$s" + +-#: libdnf/dnf-sack.cpp:703 +-msgid "repo_add_solv() has failed." +-msgstr "repo_add_solv() 已失败。" ++#: libdnf/dnf-sack.cpp:764 ++#, c-format ++msgid "While loading repository failed to use %s: " ++msgstr "加载软件仓库时使用 %s 失败: " + +-#: libdnf/dnf-sack.cpp:716 ++#: libdnf/dnf-sack.cpp:775 + msgid "loading of MD_TYPE_PRIMARY has failed." + msgstr "加载 MD_TYPE_PRIMARY 失败。" + +-#: libdnf/dnf-sack.cpp:729 +-msgid "repo_add_repomdxml/rpmmd() has failed." +-msgstr "repo_add_repomdxml/rpmmd() 已失败。" ++#: libdnf/dnf-sack.cpp:784 ++#, c-format ++msgid "Opening repository primary data has failed: %s" ++msgstr "打开仓库主数据失败:%s" ++ ++#: libdnf/dnf-sack.cpp:795 ++#, c-format ++msgid "Loading repomd has failed: %s" ++msgstr "加载 repomd 失败:%s" ++ ++#: libdnf/dnf-sack.cpp:806 ++#, c-format ++msgid "Loading primary has failed: %s" ++msgstr "加载主设备失败:%s" + +-#: libdnf/dnf-sack.cpp:796 ++#: libdnf/dnf-sack.cpp:872 + msgid "failed to auto-detect architecture" + msgstr "自动检测架构失败" + +-#: libdnf/dnf-sack.cpp:961 ++#: libdnf/dnf-sack.cpp:1037 + #, c-format + msgid "failed creating cachedir %s" + msgstr "无法创建 cachedir %s" + +-#: libdnf/dnf-sack.cpp:1738 ++#: libdnf/dnf-sack.cpp:1814 + msgid "failed loading RPMDB" + msgstr "无法加载 RPMDB" + +-#: libdnf/dnf-sack.cpp:2522 ++#: libdnf/dnf-sack.cpp:2598 + #, c-format + msgid "No module defaults found: %s" + msgstr "没有找到模块默认设置:%s" +@@ -415,69 +461,78 @@ msgstr "在一个没有设置大小的状态 %1$p 中做! [%2$s]" + msgid "already at 100%% state [%s]" + msgstr "已是 100%% 状态 [%s]" + +-#: libdnf/dnf-transaction.cpp:300 ++#: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" + msgstr "在尝试确保软件包 %s 时源没有设置" + +-#: libdnf/dnf-transaction.cpp:326 ++#: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" +-msgstr "无法确保 %1$s,因为 repo %2$s 没有找到 (%3$i repos 已加载)" ++msgstr "无法确保 %1$s,因为存储库 %2$s 没有找到 (%3$i 存储库已加载)" + +-#: libdnf/dnf-transaction.cpp:367 ++#: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " + msgstr "检查不被信任失败 : " + +-#: libdnf/dnf-transaction.cpp:377 ++#: libdnf/dnf-transaction.cpp:379 + #, c-format + msgid "Downloaded file for %s not found" + msgstr "没有找到下载的文件 %s" + +-#: libdnf/dnf-transaction.cpp:397 ++#: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" +-msgstr "软件包 %1$s 不能被验证,repo %2$s 启用了 GPG: %3$s" ++msgstr "软件包 %1$s 不能被验证,存储库 %2$s 启用了 GPG: %3$s" + +-#: libdnf/dnf-transaction.cpp:831 libdnf/dnf-transaction.cpp:903 ++#: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" + msgstr "无法为 CacheDir 获得值" + +-#: libdnf/dnf-transaction.cpp:911 ++#: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " + msgstr "无法为 %s 获得文件系统可用空间的大小: " + +-#: libdnf/dnf-transaction.cpp:919 ++#: libdnf/dnf-transaction.cpp:921 + #, c-format + msgid "Failed to get filesystem free size for %s" + msgstr "无法为 %s 获得文件系统可用空间的大小" + +-#: libdnf/dnf-transaction.cpp:935 ++#: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" + msgstr "%1$s 没有足够的空闲空间: 需要 %2$s,可用 %3$s" + +-#: libdnf/dnf-transaction.cpp:1195 ++#: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" + msgstr "设置 root 失败" + +-#: libdnf/dnf-transaction.cpp:1416 ++#: libdnf/dnf-transaction.cpp:1417 + #, c-format + msgid "Error %i running transaction test" +-msgstr "错误 %i 运行事务测试" ++msgstr "运行事务测试时错误 %i" ++ ++#: libdnf/dnf-transaction.cpp:1441 ++#, c-format ++msgid "Error %i opening rpm database" ++msgstr "打开 rpm 数据库时错误 %i" ++ ++#: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 ++msgid "The rpmdbCookie() function did not return cookie of rpm database." ++msgstr "rpmdbCookie()函数没有返回 rpm 数据库的 cookie。" + +-#: libdnf/dnf-transaction.cpp:1456 ++#: libdnf/dnf-transaction.cpp:1464 + #, c-format + msgid "Error %i running transaction" +-msgstr "错误 %i 运行事务" ++msgstr "运行事务时错误 %i" + +-#: libdnf/dnf-transaction.cpp:1472 ++#: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" + msgstr "事务没有进入写阶段,但没有返回错误(%i)" + +-#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:403 ++#: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format + msgid "cannot open directory %1$s: %2$s" + msgstr "无法打开目录 %1$s: %2$s" +@@ -563,7 +618,7 @@ msgstr "软件包 %s 被排除过滤过滤掉" + #: libdnf/goal/Goal.cpp:105 + #, c-format + msgid "nothing provides %s needed by %s" +-msgstr "没有东西可提供 %s(%s 需要)" ++msgstr "没有提供 %s 所需要的 %s" + + #: libdnf/goal/Goal.cpp:106 + #, c-format +@@ -578,17 +633,17 @@ msgstr "软件包 %s 与 %s(由 %s 提供)冲突" + #: libdnf/goal/Goal.cpp:108 + #, c-format + msgid "package %s obsoletes %s provided by %s" +-msgstr "软件包 %s 取代了 %s(由 %s 提供)" ++msgstr "软件包 %s 淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:109 + #, c-format + msgid "installed package %s obsoletes %s provided by %s" +-msgstr "已安装的软件包 %s 取代了 %s(由 %s 提供)" ++msgstr "已安装的软件包 %s 淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:110 + #, c-format + msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "软件包 %s 隐式地取代了 %s(由 %s 提供)" ++msgstr "软件包 %s 隐式地淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:111 + #, c-format +@@ -636,37 +691,37 @@ msgstr "模块 %s 不可安装" + #: libdnf/goal/Goal.cpp:132 + #, c-format + msgid "nothing provides %s needed by module %s" +-msgstr "没有东西提供 %s(模块 %s 需要它)" ++msgstr "没有提供模块 %s 所需要的 %s" + + #: libdnf/goal/Goal.cpp:133 + #, c-format + msgid "cannot install both modules %s and %s" +-msgstr "无法同时安装模块 %s 和 %s" ++msgstr "不能同时安装模块 %s 和 %s" + + #: libdnf/goal/Goal.cpp:134 + #, c-format + msgid "module %s conflicts with %s provided by %s" +-msgstr "模块 %s 与 %s (由 %s 提供)冲突" ++msgstr "模块 %s 与 %s 提供的 %s 冲突" + + #: libdnf/goal/Goal.cpp:135 + #, c-format + msgid "module %s obsoletes %s provided by %s" +-msgstr "模块 %s 取代了 %s(由 %s 提供)" ++msgstr "模块 %s 淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:136 + #, c-format + msgid "installed module %s obsoletes %s provided by %s" +-msgstr "已安装的模块 %s 取代了 %s(由 %s 提供)" ++msgstr "已安装的模块 %s 淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:137 + #, c-format + msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "模块 %s 隐式地取代了 %s(由 %s 提供)" ++msgstr "模块 %s 隐式地淘汰了 %s 提供的 %s" + + #: libdnf/goal/Goal.cpp:138 + #, c-format + msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "模块 %s 需要 %s,但没有提供者可以被安装" ++msgstr "模块 %s 需要 %s,但无法安装任何提供程序" + + #: libdnf/goal/Goal.cpp:139 + #, c-format +@@ -678,62 +733,67 @@ msgstr "模块 %s 与自己提供的 %s 冲突" + msgid "both module %s and %s obsolete %s" + msgstr "模块 %s 和 %s 同时取代了 %s" + +-#: libdnf/goal/Goal.cpp:1141 ++#: libdnf/goal/Goal.cpp:1157 + msgid "no solver set" + msgstr "无 solver 设置" + +-#: libdnf/goal/Goal.cpp:1146 ++#: libdnf/goal/Goal.cpp:1162 + #, c-format + msgid "failed to make %s absolute" + msgstr "无法使 %s 绝对" + +-#: libdnf/goal/Goal.cpp:1153 ++#: libdnf/goal/Goal.cpp:1169 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "把 debugdata 写入到 %1$s 失败: %2$s" + +-#: libdnf/goal/Goal.cpp:1165 ++#: libdnf/goal/Goal.cpp:1181 + msgid "no solv in the goal" + msgstr "在目标中没有 solv" + +-#: libdnf/goal/Goal.cpp:1167 ++#: libdnf/goal/Goal.cpp:1183 + msgid "no solution, cannot remove protected package" + msgstr "没有解决方案,不能删除保护的软件包" + +-#: libdnf/goal/Goal.cpp:1170 ++#: libdnf/goal/Goal.cpp:1186 + msgid "no solution possible" + msgstr "没有可能的解决方案" + +-#: libdnf/goal/Goal.cpp:1296 ++#: libdnf/goal/Goal.cpp:1312 + msgid "Problem: " + msgstr "问题: " + +-#: libdnf/goal/Goal.cpp:1301 ++#: libdnf/goal/Goal.cpp:1317 + #, c-format + msgid "Problem %d: " + msgstr "问题 %d: " + +-#: libdnf/goal/Goal.cpp:1634 ++#: libdnf/goal/Goal.cpp:1650 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "这个操作将会导致删除以下受保护的软件包: " + +-#: libdnf/hy-iutil.cpp:326 ++#: libdnf/hy-iutil.cpp:181 ++#, c-format ++msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" ++msgstr "Libsolv 的 solv_toolversion 为: %zu,但我们预计最大为:%zu" ++ ++#: libdnf/hy-iutil.cpp:408 + #, c-format + msgid "Failed renaming %1$s to %2$s: %3$s" + msgstr "将 %1$s 重命名为 %2$s 失败: %3$s" + +-#: libdnf/hy-iutil.cpp:334 ++#: libdnf/hy-iutil.cpp:416 + #, c-format + msgid "Failed setting perms on %1$s: %2$s" + msgstr "在 %1$s 中设置 perms 失败: %2$s" + +-#: libdnf/hy-iutil.cpp:380 ++#: libdnf/hy-iutil.cpp:462 + #, c-format + msgid "cannot create directory %1$s: %2$s" + msgstr "无法创建目录 %1$s: %2$s" + +-#: libdnf/hy-iutil.cpp:415 ++#: libdnf/hy-iutil.cpp:497 + #, c-format + msgid "cannot stat path %1$s: %2$s" + msgstr "无法 stat 路径 %1$s: %2$s" +@@ -773,7 +833,7 @@ msgstr "无法为模块 '%s' 启用多个流" + #: libdnf/module/ModulePackageContainer.cpp:346 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" +-msgstr "默认设置与 repo '%s' 冲突 : %s" ++msgstr "默认设置与存储库 '%s' 冲突 : %s" + + #: libdnf/module/ModulePackageContainer.cpp:917 + msgid "Installing module profiles:\n" +@@ -822,7 +882,7 @@ msgstr "无法把模块 Fail Safe 数据保存到 '%s'" + #: libdnf/module/ModulePackageContainer.cpp:1830 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" +-msgstr "无法删除 '%s' 处的模块 Fail Safe 数据" ++msgstr "无法删除 '%s' 中的模块 Fail Safe 数据" + + #: libdnf/module/ModulePackageContainer.cpp:1862 + #, c-format +@@ -902,8 +962,8 @@ msgid "" + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." + msgstr "" +-"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并且在未来的版本中会取消对它的支持。请使用 '=' " +-"操作符代替。" ++"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并" ++"且在未来的版本中会取消对它的支持。请使用 '=' 操作符代替。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -915,167 +975,167 @@ msgstr "软件仓库 %s 没有设置镜像或者 baseurl。" + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." + msgstr "仓库 '%s' 有不被支持的类型: 'type=%s', 忽略。" + +-#: libdnf/repo/Repo.cpp:489 libdnf/repo/Repo.cpp:610 libdnf/repo/Repo.cpp:641 +-#: libdnf/repo/Repo.cpp:1400 ++#: libdnf/repo/Repo.cpp:491 libdnf/repo/Repo.cpp:612 libdnf/repo/Repo.cpp:643 ++#: libdnf/repo/Repo.cpp:1407 + #, c-format + msgid "repo '%s': 'basecachedir' is not set" +-msgstr "Repo '%s': 'basecachedir' 没有设置" ++msgstr "存储库 '%s': 'basecachedir' 没有设置" + +-#: libdnf/repo/Repo.cpp:512 ++#: libdnf/repo/Repo.cpp:514 + msgid "" +-"Maximum download speed is lower than minimum. Please change configuration of" +-" minrate or throttle" ++"Maximum download speed is lower than minimum. Please change configuration of " ++"minrate or throttle" + msgstr "最大下载速度低于最小值。请修改 minrate 或 throttle 的配置" + +-#: libdnf/repo/Repo.cpp:546 ++#: libdnf/repo/Repo.cpp:548 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "Repo '%s': 'proxy_username' 已被设置,但没有设置 'proxy_password'" ++msgstr "存储库 '%s': 'proxy_username' 已被设置,但没有设置 'proxy_password'" + +-#: libdnf/repo/Repo.cpp:548 ++#: libdnf/repo/Repo.cpp:550 + msgid "'proxy_username' is set but not 'proxy_password'" + msgstr "'proxy_username' 已被设置,但没有设置 'proxy_password'" + +-#: libdnf/repo/Repo.cpp:629 ++#: libdnf/repo/Repo.cpp:631 + #, c-format + msgid "Cannot find a valid baseurl for repo: %s" +-msgstr "无法为仓库 %s 找到一个有效的 baseurl" ++msgstr "无法为存储库找到一个有效的 baseurl:%s" + +-#: libdnf/repo/Repo.cpp:660 libdnf/repo/Repo.cpp:682 ++#: libdnf/repo/Repo.cpp:662 libdnf/repo/Repo.cpp:684 + #, c-format + msgid "%s: gpgme_data_new_from_fd(): %s" + msgstr "%s: gpgme_data_new_from_fd(): %s" + +-#: libdnf/repo/Repo.cpp:668 libdnf/repo/Repo.cpp:690 ++#: libdnf/repo/Repo.cpp:670 libdnf/repo/Repo.cpp:692 + #, c-format + msgid "%s: gpgme_op_import(): %s" + msgstr "%s: gpgme_op_import(): %s" + +-#: libdnf/repo/Repo.cpp:709 libdnf/repo/Repo.cpp:1162 +-#: libdnf/repo/Repo.cpp:1236 libdnf/repo/Repo.cpp:1279 ++#: libdnf/repo/Repo.cpp:711 libdnf/repo/Repo.cpp:1169 libdnf/repo/Repo.cpp:1243 ++#: libdnf/repo/Repo.cpp:1286 + #, c-format + msgid "Cannot create repo temporary directory \"%s\": %s" +-msgstr "无法创建 repo 临时目录 \"%s\": %s" ++msgstr "无法创建存储库临时目录 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:717 libdnf/repo/Repo.cpp:783 libdnf/repo/Repo.cpp:917 ++#: libdnf/repo/Repo.cpp:719 libdnf/repo/Repo.cpp:785 libdnf/repo/Repo.cpp:919 + #, c-format + msgid "%s: gpgme_ctx_set_engine_info(): %s" + msgstr "%s: gpgme_ctx_set_engine_info(): %s" + +-#: libdnf/repo/Repo.cpp:744 libdnf/repo/Repo.cpp:808 ++#: libdnf/repo/Repo.cpp:746 libdnf/repo/Repo.cpp:810 + #, c-format + msgid "can not list keys: %s" + msgstr "不能列出 key: %s" + +-#: libdnf/repo/Repo.cpp:837 ++#: libdnf/repo/Repo.cpp:839 + #, c-format + msgid "Failed to retrieve GPG key for repo '%s': %s" + msgstr "为仓库 '%s' 获取 GPG 密钥失败 : %s" + +-#: libdnf/repo/Repo.cpp:890 ++#: libdnf/repo/Repo.cpp:892 + #, c-format + msgid "repo %s: 0x%s already imported" +-msgstr "repo %s: 0x%s 已被导入" ++msgstr "存储库 %s: 0x%s 已被导入" + +-#: libdnf/repo/Repo.cpp:904 libdnf/utils/filesystem.cpp:79 ++#: libdnf/repo/Repo.cpp:906 libdnf/utils/filesystem.cpp:79 + #, c-format + msgid "Failed to create directory \"%s\": %d - %s" + msgstr "无法创建目录 \"%s\": %d - %s" + +-#: libdnf/repo/Repo.cpp:924 ++#: libdnf/repo/Repo.cpp:926 + #, c-format + msgid "repo %s: imported key 0x%s." +-msgstr "repo %s: 已导入密钥 0x%s。" ++msgstr "存储库 %s: 已导入密钥 0x%s。" + +-#: libdnf/repo/Repo.cpp:1176 ++#: libdnf/repo/Repo.cpp:1183 + #, c-format + msgid "reviving: repo '%s' skipped, no metalink." + msgstr "恢复中: 仓库 '%s' 已被跳过,无 metalink。" + +-#: libdnf/repo/Repo.cpp:1195 ++#: libdnf/repo/Repo.cpp:1202 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." + msgstr "恢复中: 仓库 '%s' 已被跳过,无可用 hash。" + +-#: libdnf/repo/Repo.cpp:1218 ++#: libdnf/repo/Repo.cpp:1225 + #, c-format + msgid "reviving: failed for '%s', mismatched %s sum." + msgstr "恢复: '%s' 失败,不匹配的 %s sum。" + +-#: libdnf/repo/Repo.cpp:1224 ++#: libdnf/repo/Repo.cpp:1231 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." + msgstr "恢复中: '%s' 可以被恢复 - metalink 校验和匹配。" + +-#: libdnf/repo/Repo.cpp:1253 ++#: libdnf/repo/Repo.cpp:1260 + #, c-format + msgid "reviving: '%s' can be revived - repomd matches." + msgstr "恢复: '%s' 可用被恢复 - repomd 匹配。" + +-#: libdnf/repo/Repo.cpp:1255 ++#: libdnf/repo/Repo.cpp:1262 + #, c-format + msgid "reviving: failed for '%s', mismatched repomd." + msgstr "恢复: '%s' 失败,不匹配的 repomd。" + +-#: libdnf/repo/Repo.cpp:1273 ++#: libdnf/repo/Repo.cpp:1280 + #, c-format + msgid "Cannot create repo destination directory \"%s\": %s" + msgstr "无法创建仓库目标目录 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1293 ++#: libdnf/repo/Repo.cpp:1300 + #, c-format + msgid "Cannot create directory \"%s\": %s" + msgstr "无法创建目录 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1316 ++#: libdnf/repo/Repo.cpp:1323 + #, c-format + msgid "Cannot rename directory \"%s\" to \"%s\": %s" + msgstr "无法把目录 \"%s\" 重命名为 \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1339 ++#: libdnf/repo/Repo.cpp:1346 + #, c-format + msgid "repo: using cache for: %s" +-msgstr "仓库: 正在为 %s 使用缓存" ++msgstr "存储库:使用缓存用于:%s" + +-#: libdnf/repo/Repo.cpp:1351 ++#: libdnf/repo/Repo.cpp:1358 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" +-msgstr "仅使用缓存已开启但没有 '%s' 的缓存" ++msgstr "仅启用缓存,但没有 '%s' 的缓存" + +-#: libdnf/repo/Repo.cpp:1355 ++#: libdnf/repo/Repo.cpp:1362 + #, c-format + msgid "repo: downloading from remote: %s" +-msgstr "repo: 从远程下载: %s" ++msgstr "存储库: 从远程下载: %s" + +-#: libdnf/repo/Repo.cpp:1362 ++#: libdnf/repo/Repo.cpp:1369 + #, c-format + msgid "Failed to download metadata for repo '%s': %s" + msgstr "为仓库 '%s' 下载元数据失败 : %s" + +-#: libdnf/repo/Repo.cpp:1388 ++#: libdnf/repo/Repo.cpp:1395 + msgid "getCachedir(): Computation of SHA256 failed" + msgstr "getCachedir(): 计算 SHA256 失败" + +-#: libdnf/repo/Repo.cpp:1416 ++#: libdnf/repo/Repo.cpp:1423 + #, c-format + msgid "Cannot create persistdir \"%s\": %s" + msgstr "无法创建 persistdir \"%s\": %s" + +-#: libdnf/repo/Repo.cpp:1793 ++#: libdnf/repo/Repo.cpp:1800 + msgid "resume cannot be used simultaneously with the byterangestart param" + msgstr "resume 不能和 the byterangestart 参数同时使用" + +-#: libdnf/repo/Repo.cpp:1810 ++#: libdnf/repo/Repo.cpp:1817 + #, c-format + msgid "PackageTarget initialization failed: %s" + msgstr "PackageTarget 初始失败: %s" + +-#: libdnf/repo/Repo.cpp:1916 ++#: libdnf/repo/Repo.cpp:1923 + #, c-format + msgid "Cannot open %s: %s" + msgstr "无法打开 %s: %s" + +-#: libdnf/repo/Repo.cpp:1960 ++#: libdnf/repo/Repo.cpp:1967 + #, c-format + msgid "Log handler with id %ld doesn't exist" + msgstr "id 为 %ld 的日志处理器不存在" +@@ -1094,11 +1154,11 @@ msgstr "没有在进行中" + msgid "No transaction in progress" + msgstr "没有事务在进行中" + +-#: libdnf/transaction/TransactionItem.cpp:147 ++#: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" + msgstr "试图向已完成的事务中插入事务项" + +-#: libdnf/transaction/TransactionItem.cpp:218 ++#: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" + msgstr "试图在已完成的事务中更新事务" + +@@ -1108,7 +1168,7 @@ msgstr "数据库损坏:表 'config' 中没有 'version' 行" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +-msgstr "Transformer: 无法打开 history persist dir" ++msgstr "转换程序: 无法打开历史持久目录" + + #: libdnf/transaction/Transformer.cpp:694 + msgid "Couldn't find a history database" +@@ -1127,8 +1187,23 @@ msgstr "TransactionItem 状态没有设置:%s" + msgid "Can't add console output to unsaved transaction" + msgstr "无法向未保存的事务中添加控制台输出" + ++#~ msgid "failed to add solv" ++#~ msgstr "添加 solv 失败" ++ ++#~ msgid "write_main() failed writing data: %i" ++#~ msgstr "write_main() 写数据失败: %i" ++ ++#~ msgid "write_main() failed to re-load written solv file" ++#~ msgstr "write_main() 重新加载写的 solv 文件失败" ++ ++#~ msgid "write_ext(%1$d) has failed: %2$d" ++#~ msgstr "write_ext(%1$d) 已失败: %2$d" ++ ++#~ msgid "repo_add_repomdxml/rpmmd() has failed." ++#~ msgstr "repo_add_repomdxml/rpmmd() 已失败。" ++ ++#~ msgid "Failed to parse module artifact NEVRA '%s'" ++#~ msgstr "无法解析模块工件 NEVRA '%s'" ++ + #~ msgid "Bad id for repo: %s, byte = %s %d" + #~ msgstr "repo 的 id 无效: %s, byte = %s %d" +- +-#~ msgid "failed calculating RPMDB checksum" +-#~ msgstr "无法计算 RPMDB checksum" +-- +2.39.2 + diff --git a/SOURCES/0004-Update-translations-RHEL-9.3.patch b/SOURCES/0004-Update-translations-RHEL-9.3.patch new file mode 100644 index 0000000..7fe2006 --- /dev/null +++ b/SOURCES/0004-Update-translations-RHEL-9.3.patch @@ -0,0 +1,2788 @@ +From 63a98296baeeafd93b70eb34e859a4bcf1191b62 Mon Sep 17 00:00:00 2001 +From: Marek Blaha +Date: Fri, 8 Sep 2023 13:31:16 +0200 +Subject: [PATCH] Update translations RHEL 9.3 + +--- + po/fr.po | 443 +++++++++++++++++++++++++++++----------------------- + po/ja.po | 399 +++++++++++++++++++++++++++------------------- + po/ko.po | 347 +++++++++++++++++++++++++--------------- + po/zh_CN.po | 290 +++++++++++++++++++++++----------- + 4 files changed, 907 insertions(+), 572 deletions(-) + +diff --git a/po/fr.po b/po/fr.po +index b0ef48aa..8bdec7d5 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -12,7 +12,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2023-02-28 09:24+0100\n" ++"POT-Creation-Date: 2023-08-29 13:26+0200\n" + "PO-Revision-Date: 2023-03-07 14:20+0000\n" + "Last-Translator: Transtats \n" + "Language-Team: French ' command. After you " + "reset the module, you can install the other stream." +-msgstr "" +-"Il n’est pas possible de basculer les flux actifs d’un module. \n" +-"Il est recommandé de retirer tout contenu installé par le module, et de " +-"réinitialiser le mode en utilisant la commande 'microdnf module reset " +-"’. Après la réinitialisation du module, vous pouvez installer " +-"les autres flux." ++msgstr "Il n’est pas possible de basculer les flux actifs d’un module. \n" ++"Il est recommandé de retirer tout contenu installé par le module, et de réinitialiser le mode en utilisant la commande 'microdnf module reset ’. Après la réinitialisation du module, vous pouvez installer les autres flux." + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -277,9 +261,7 @@ msgstr " Problème : %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "" +-"Aucune métadonnée modulaire n’est disponible pour le paquet modulaire " +-"« %s » ; impossible d’installer le paquet sur le système" ++msgstr "Aucune métadonnée modulaire n’est disponible pour le paquet modulaire « %s » ; impossible d’installer le paquet sur le système" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -366,9 +348,7 @@ msgstr "n’a pas pu ouvrir le fichier tmp : %s" + #: libdnf/dnf-sack.cpp:550 + #, c-format + msgid "While writing primary cache %s repowriter write failed: %i, error: %s" +-msgstr "" +-"Lors de l'écriture dans le cache primaire %s, l'écriture dans le repowriter " +-"a échoué : %i, erreur : %s" ++msgstr "Lors de l'écriture dans le cache primaire %s, l'écriture dans le repowriter a échoué : %i, erreur : %s" + + #: libdnf/dnf-sack.cpp:560 + #, c-format +@@ -394,16 +374,12 @@ msgstr "n’a pas pu créer le fichier temporaire %s" + #, c-format + msgid "" + "While writing extension cache %s (%d): repowriter write failed: %i, error: %s" +-msgstr "" +-"Lors de l'écriture du cache d'extension %s (%d) : écriture repowriter ayant " +-"échoué : %i, erreur : %s" ++msgstr "Lors de l'écriture du cache d'extension %s (%d) : écriture repowriter ayant échoué : %i, erreur : %s" + + #: libdnf/dnf-sack.cpp:676 + #, c-format + msgid "While writing extension cache (%d): cannot close temporary file: %s" +-msgstr "" +-"Lors de l'écriture du cache d'extension (%d) : impossible de fermer le " +-"fichier temporaire : %s" ++msgstr "Lors de l'écriture du cache d'extension (%d) : impossible de fermer le fichier temporaire : %s" + + #: libdnf/dnf-sack.cpp:692 + #, c-format +@@ -512,8 +488,7 @@ msgstr "Fichier téléchargé pour %s non trouvé" + #: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" +-msgstr "" +-"le paquet %1$s ne peut être vérifié et le dépôt %2$s est activé GPG : %3$s" ++msgstr "le paquet %1$s ne peut être vérifié et le dépôt %2$s est activé GPG : %3$s" + + #: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" +@@ -522,8 +497,7 @@ msgstr "N’a pas pu obtenir la valeur de CacheDir" + #: libdnf/dnf-transaction.cpp:913 + #, c-format + msgid "Failed to get filesystem free size for %s: " +-msgstr "" +-"Échec de l’obtention de l’espace libre du système de fichiers pour %s : " ++msgstr "Échec de l’obtention de l’espace libre du système de fichiers pour %s : " + + #: libdnf/dnf-transaction.cpp:921 + #, c-format +@@ -533,8 +507,7 @@ msgstr "N’a pas pu obtenir la taille libre du système de fichiers pour %s" + #: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" +-msgstr "" +-"Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible %3$s" ++msgstr "Pas suffisamment d’espace libre dans %1$s : a besoin de %2$s, disponible %3$s" + + #: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" +@@ -552,9 +525,7 @@ msgstr "Erreur %i lors de l’ouverture de la base de données rpm" + + #: libdnf/dnf-transaction.cpp:1449 libdnf/dnf-transaction.cpp:1495 + msgid "The rpmdbCookie() function did not return cookie of rpm database." +-msgstr "" +-"La fonction rpmdbCookie() n'a pas retourné le cookie de la base de données " +-"rpm." ++msgstr "La fonction rpmdbCookie() n'a pas retourné le cookie de la base de données rpm." + + #: libdnf/dnf-transaction.cpp:1464 + #, c-format +@@ -564,9 +535,7 @@ msgstr "Erreur %i pendant la transaction" + #: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" +-msgstr "" +-"La transaction n’a pas pu opérer en phase d’écriture, mais a renvoyé « no " +-"error(%i) »" ++msgstr "La transaction n’a pas pu opérer en phase d’écriture, mais a renvoyé « no error(%i) »" + + #: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format +@@ -580,22 +549,21 @@ msgstr "n’a pas pu supprimer %s" + + #: libdnf/goal/Goal.cpp:78 + msgid "Ill-formed Selector, presence of multiple match objects in the filter" +-msgstr "" +-"Sélecteur Ill-formed, présence de plusieurs objets correspondants dans le " +-"filtre" ++msgstr "Sélecteur Ill-formed, présence de plusieurs objets correspondants dans le filtre" + + #: libdnf/goal/Goal.cpp:79 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" +-msgstr "" +-"Sélecteur Ill-formed utilisé pour l’opération, type de comparaison incorrecte" ++msgstr "Sélecteur Ill-formed utilisé pour l’opération, type de comparaison incorrecte" + +-#: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 +-msgid " does not belong to a distupgrade repository" +-msgstr " n’appartient pas à un dépôt distupgrade" ++#: libdnf/goal/Goal.cpp:90 ++#, c-format ++msgid "%s from %s does not belong to a distupgrade repository" ++msgstr "%s de %s n’appartient pas à un référentiel distupgrade" + +-#: libdnf/goal/Goal.cpp:91 libdnf/goal/Goal.cpp:118 +-msgid " has inferior architecture" +-msgstr " a une architecture inférieure" ++#: libdnf/goal/Goal.cpp:91 ++#, c-format ++msgid "%s from %s has inferior architecture" ++msgstr "%s de %s a une architecture inférieure" + + #: libdnf/goal/Goal.cpp:92 + msgid "problem with installed package " +@@ -636,69 +604,79 @@ msgstr "installation impossible du meilleur candidat pour la tâche" + + #: libdnf/goal/Goal.cpp:101 + #, c-format +-msgid "package %s is filtered out by modular filtering" +-msgstr "le paquet %s a été filtré par filtrage modulaire" ++msgid "package %s from %s is filtered out by modular filtering" ++msgstr "le paquet %s de %s a été filtré par filtrage modulaire" + + #: libdnf/goal/Goal.cpp:102 + #, c-format +-msgid "package %s does not have a compatible architecture" +-msgstr "le paquet %s n’a pas d’architecture compatible" ++msgid "package %s from %s does not have a compatible architecture" ++msgstr "le paquet %s de %s n’a pas d’architecture compatible" + + #: libdnf/goal/Goal.cpp:103 + #, c-format +-msgid "package %s is not installable" +-msgstr "le paquet %s n’est pas installable" ++msgid "package %s from %s is not installable" ++msgstr "le paquet %s de %s n’est pas installable" + + #: libdnf/goal/Goal.cpp:104 + #, c-format +-msgid "package %s is filtered out by exclude filtering" +-msgstr "le paquet %s a été filtré en excluant le filtrage" ++msgid "package %s from %s is filtered out by exclude filtering" ++msgstr "le paquet %s de %s a été filtré en excluant le filtrage" + + #: libdnf/goal/Goal.cpp:105 + #, c-format +-msgid "nothing provides %s needed by %s" +-msgstr "rien de fournit %s rendu nécessaire par %s" ++msgid "nothing provides %s needed by %s from %s" ++msgstr "rien de fournit %s rendu nécessaire par %s de %s" + + #: libdnf/goal/Goal.cpp:106 + #, c-format +-msgid "cannot install both %s and %s" +-msgstr "installation impossible à la fois de %s et %s" ++msgid "cannot install both %s from %s and %s from %s" ++msgstr "impossible d’installer à la fois %s de %s et %s de %s" + + #: libdnf/goal/Goal.cpp:107 + #, c-format +-msgid "package %s conflicts with %s provided by %s" +-msgstr "le paquet %s est en conflit avec %s fourni par %s" ++msgid "package %s from %s conflicts with %s provided by %s from %s" ++msgstr "le paquet %s de %s entre en conflit avec %s fourni par %s de %s" + + #: libdnf/goal/Goal.cpp:108 + #, c-format +-msgid "package %s obsoletes %s provided by %s" +-msgstr "le paquet %s rend obsolète %s fourni par %s" ++msgid "package %s from %s obsoletes %s provided by %s from %s" ++msgstr "le paquet %s de %s rend obsolète %sfourni par %s de %s" + + #: libdnf/goal/Goal.cpp:109 + #, c-format +-msgid "installed package %s obsoletes %s provided by %s" +-msgstr "le paquet installé %s rend obsolète %s fourni par %s" ++msgid "installed package %s obsoletes %s provided by %s from %s" ++msgstr "le paquet installé %s rend obsolète %s fourni par %s de %s" + + #: libdnf/goal/Goal.cpp:110 + #, c-format +-msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "le paquet %s rend implicitement obsolète %s fourni par %s" ++msgid "package %s from %s implicitly obsoletes %s provided by %s from %s" ++msgstr "le paquet %s de %s rend implicitement obsolète %s fourni par %s de %s" + + #: libdnf/goal/Goal.cpp:111 + #, c-format +-msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "" +-"le paquet %s nécessite %s, mais aucun fournisseur ne peut être installé" ++msgid "" ++"package %s from %s requires %s, but none of the providers can be installed" ++msgstr "le paquet %s de %s nécessite %s, mais aucun fournisseur ne peut être installé" + + #: libdnf/goal/Goal.cpp:112 + #, c-format +-msgid "package %s conflicts with %s provided by itself" +-msgstr "le paquet %s est en conflit avec %s fourni par lui-même" ++msgid "package %s from %s conflicts with %s provided by itself" ++msgstr "le paquet %s de %s est en conflit avec%s fourni par lui-même" + + #: libdnf/goal/Goal.cpp:113 + #, c-format +-msgid "both package %s and %s obsolete %s" +-msgstr "à la fois le paquet %s et %s rendent obsolète %s" ++msgid "both package %s from %s and %s from %s obsolete %s" ++msgstr "les deux paquets %s de %s et %s de %s rendent %s obsolète" ++ ++#: libdnf/goal/Goal.cpp:117 ++#, c-format ++msgid "%s from %s does not belong to a distupgrade repository" ++msgstr "%s de %s n’appartient pas à un référentiel distupgrade" ++ ++#: libdnf/goal/Goal.cpp:118 ++#, c-format ++msgid "%s from %s has inferior architecture" ++msgstr "%s de %s a une architecture inférieure" + + #: libdnf/goal/Goal.cpp:119 + msgid "problem with installed module " +@@ -711,117 +689,113 @@ msgstr "le module %s n’existe pas" + + #: libdnf/goal/Goal.cpp:126 + msgid "cannot install the best update candidate for module " +-msgstr "" +-"installation impossible du meilleur candidat de mise à jour pour le module " ++msgstr "installation impossible du meilleur candidat de mise à jour pour le module " + + #: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131 + #, c-format +-msgid "module %s is disabled" +-msgstr "le module %s est désactivé" ++msgid "module %s from %s is disabled" ++msgstr "module %s de %s désactivé" + + #: libdnf/goal/Goal.cpp:129 + #, c-format +-msgid "module %s does not have a compatible architecture" +-msgstr "le module %s n’a pas d’architecture compatible" ++msgid "module %s from %s does not have a compatible architecture" ++msgstr "le module %s de %s n’a pas d’architecture compatible" + + #: libdnf/goal/Goal.cpp:130 + #, c-format +-msgid "module %s is not installable" +-msgstr "le module %s n’est pas installable" ++msgid "module %s from %s is not installable" ++msgstr "le module %s de %s n’est pas installable" + + #: libdnf/goal/Goal.cpp:132 + #, c-format +-msgid "nothing provides %s needed by module %s" +-msgstr "rien de fournit %s rendu nécessaire par le module %s" ++msgid "nothing provides %s needed by module %s from %s" ++msgstr "rien ne produit %s qui est requis par le module %s de %s" + + #: libdnf/goal/Goal.cpp:133 + #, c-format +-msgid "cannot install both modules %s and %s" +-msgstr "installation impossible à la fois des modules %s et %s" ++msgid "cannot install both modules %s from %s and %s from %s" ++msgstr "impossible d’installer à la fois les modules %s de %s et %s de %s" + + #: libdnf/goal/Goal.cpp:134 + #, c-format +-msgid "module %s conflicts with %s provided by %s" +-msgstr "le module %s est en conflit avec %s fourni par %s" ++msgid "module %s from %s conflicts with %s provided by %s from %s" ++msgstr "le module %s de %s entre en conflit avec %s fourni par %s de %s" + + #: libdnf/goal/Goal.cpp:135 + #, c-format +-msgid "module %s obsoletes %s provided by %s" +-msgstr "le module %s rend obsolète %s fourni par %s" ++msgid "module %s from %s obsoletes %s provided by %s from %s" ++msgstr "le module %s de %s rend %s obsolète qui est fourni par %s de %s" + + #: libdnf/goal/Goal.cpp:136 + #, c-format +-msgid "installed module %s obsoletes %s provided by %s" +-msgstr "le module installé %s rend obsolète %s fourni par %s" ++msgid "installed module %s obsoletes %s provided by %s from %s" ++msgstr "le module installé %s rend obsolète %s fourni par %s de %s" + + #: libdnf/goal/Goal.cpp:137 + #, c-format +-msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "le module %s rend implicitement obsolète %s fourni par %s" ++msgid "module %s from %s implicitly obsoletes %s provided by %s from %s" ++msgstr "le module %s de %s rend implicitement obsolète %s fourni par %s de %s" + + #: libdnf/goal/Goal.cpp:138 + #, c-format +-msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "" +-"le module %s nécessite %s, mais aucun fournisseur ne peut être installé" ++msgid "" ++"module %s from %s requires %s, but none of the providers can be installed" ++msgstr "le module %s de %s requiert %s, mais aucun fournisseur ne peut être installé" + + #: libdnf/goal/Goal.cpp:139 + #, c-format +-msgid "module %s conflicts with %s provided by itself" +-msgstr "le module %s est en conflit avec %s fourni par lui-même" ++msgid "module %s from %s conflicts with %s provided by itself" ++msgstr "le module %s de %s entre en conflit avec %s fourni par lui-même" + + #: libdnf/goal/Goal.cpp:140 + #, c-format +-msgid "both module %s and %s obsolete %s" +-msgstr "à la fois le module %s et %s rendent obsolète %s" ++msgid "both module %s from %s and %s from %s obsolete %s" ++msgstr "les deux modules %s de %s et %s de %s rendent %s obsolète" + +-#: libdnf/goal/Goal.cpp:1157 ++#: libdnf/goal/Goal.cpp:1168 + msgid "no solver set" + msgstr "aucun solveur défini" + +-#: libdnf/goal/Goal.cpp:1162 ++#: libdnf/goal/Goal.cpp:1173 + #, c-format + msgid "failed to make %s absolute" + msgstr "n’a pas pu rendre %s absolu" + +-#: libdnf/goal/Goal.cpp:1169 ++#: libdnf/goal/Goal.cpp:1180 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "échec de l’écriture des debugdata dans %1$s : %2$s" + +-#: libdnf/goal/Goal.cpp:1181 ++#: libdnf/goal/Goal.cpp:1192 + msgid "no solv in the goal" + msgstr "pas de solv dans l’objectif" + +-#: libdnf/goal/Goal.cpp:1183 ++#: libdnf/goal/Goal.cpp:1194 + msgid "no solution, cannot remove protected package" + msgstr "aucune solution, n’a pas pu supprimer le package protégé" + +-#: libdnf/goal/Goal.cpp:1186 ++#: libdnf/goal/Goal.cpp:1197 + msgid "no solution possible" + msgstr "aucune solution n’est possible" + +-#: libdnf/goal/Goal.cpp:1312 ++#: libdnf/goal/Goal.cpp:1323 + msgid "Problem: " + msgstr "Problème : " + +-#: libdnf/goal/Goal.cpp:1317 ++#: libdnf/goal/Goal.cpp:1328 + #, c-format + msgid "Problem %d: " + msgstr "Probléme %d : " + +-#: libdnf/goal/Goal.cpp:1650 ++#: libdnf/goal/Goal.cpp:1661 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "" +-"L’opération résulterait en la suppression des packages protégés suivants : " ++msgstr "L’opération résulterait en la suppression des packages protégés suivants : " + + #: libdnf/hy-iutil.cpp:181 + #, c-format + msgid "Libsolv's solv_toolversion is: %zu long but we expect max of: %zu" +-msgstr "" +-"La solv_toolversion de Libsolv est : %zu long mais nous attendons un maximum " +-"de : %zu" ++msgstr "La solv_toolversion de Libsolv est : %zu long mais nous attendons un maximum de : %zu" + + #: libdnf/hy-iutil.cpp:408 + #, c-format +@@ -850,14 +824,11 @@ msgstr "Format invalide du module de plateforme : %s" + + #: libdnf/module/ModulePackage.cpp:619 + msgid "Multiple module platforms provided by available packages\n" +-msgstr "" +-"De multiples modules de plateformes sont fournis par les paquets " +-"disponibles\n" ++msgstr "De multiples modules de plateformes sont fournis par les paquets disponibles\n" + + #: libdnf/module/ModulePackage.cpp:632 + msgid "Multiple module platforms provided by installed packages\n" +-msgstr "" +-"De multiples modules de plateformes sont fournis par les paquets installés\n" ++msgstr "De multiples modules de plateformes sont fournis par les paquets installés\n" + + #: libdnf/module/ModulePackage.cpp:659 + #, c-format +@@ -878,73 +849,66 @@ msgstr "Aucun identifiant de plateforme n'a été détecté" + msgid "Cannot enable multiple streams for module '%s'" + msgstr "Impossible d’activer les flux pour le module « %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:346 ++#: libdnf/module/ModulePackageContainer.cpp:339 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "Valeurs par défaut en conflit avec le dépôt « %s » : %s" + +-#: libdnf/module/ModulePackageContainer.cpp:917 ++#: libdnf/module/ModulePackageContainer.cpp:923 + msgid "Installing module profiles:\n" + msgstr "Installation des profils de module :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:932 ++#: libdnf/module/ModulePackageContainer.cpp:938 + msgid "Disabling module profiles:\n" + msgstr "Désactivation des profils de module :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:947 ++#: libdnf/module/ModulePackageContainer.cpp:953 + msgid "Enabling module streams:\n" + msgstr "Activation des flux de modules :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:961 ++#: libdnf/module/ModulePackageContainer.cpp:967 + msgid "Switching module streams:\n" + msgstr "Basculement des flux de modules :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:979 ++#: libdnf/module/ModulePackageContainer.cpp:985 + msgid "Disabling modules:\n" + msgstr "Désactivation des modules :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:990 ++#: libdnf/module/ModulePackageContainer.cpp:996 + msgid "Resetting modules:\n" + msgstr "Réinitialisation des modules :\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1704 ++#: libdnf/module/ModulePackageContainer.cpp:1710 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" + msgstr "Impossible de charger les données de sécurité à « %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:1710 ++#: libdnf/module/ModulePackageContainer.cpp:1716 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" +-msgstr "" +-"Impossible de charger les données de sécurité modulaires pour le module " +-"« %s : %s »" ++msgstr "Impossible de charger les données de sécurité modulaires pour le module « %s : %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:1791 ++#: libdnf/module/ModulePackageContainer.cpp:1797 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" +-msgstr "" +-"Impossible de créer le dossier « %s » pour les données de sécurité " +-"modulaires : %s" ++msgstr "Impossible de créer le dossier « %s » pour les données de sécurité modulaires : %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1807 ++#: libdnf/module/ModulePackageContainer.cpp:1813 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" +-msgstr "" +-"Impossible d’enregistrer les données de sécurité modulaires vers « %s »" ++msgstr "Impossible d’enregistrer les données de sécurité modulaires vers « %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:1830 ++#: libdnf/module/ModulePackageContainer.cpp:1836 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" + msgstr "Impossible de supprimer les données de sécurité modulaires dans « %s »" + +-#: libdnf/module/ModulePackageContainer.cpp:1862 ++#: libdnf/module/ModulePackageContainer.cpp:1868 + #, c-format + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" +-msgstr "" +-"Impossible d'appliquer les obsolètes modulaires à '%s:%s' car le module " +-"cible '%s' est désactivé" ++msgstr "Impossible d'appliquer les obsolètes modulaires à '%s:%s' car le module cible '%s' est désactivé" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format +@@ -959,8 +923,7 @@ msgstr "Échec de la résolution : %s" + #: libdnf/module/modulemd/ModuleMetadata.cpp:115 + #, c-format + msgid "There were errors while resolving modular defaults: %s" +-msgstr "" +-"Il y a eu des erreurs lors de la résolution des modulaires par défaut : %s" ++msgstr "Il y a eu des erreurs lors de la résolution des modulaires par défaut : %s" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:120 + #, c-format +@@ -975,9 +938,7 @@ msgstr "Échec de la mise à jour des flux : %s" + #: libdnf/module/modulemd/ModuleMetadata.cpp:221 + #, c-format + msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" +-msgstr "" +-"Impossible de récupérer les modules obsolètes car aucune correspondance de " +-"flux %s : %s" ++msgstr "Impossible de récupérer les modules obsolètes car aucune correspondance de flux %s : %s" + + #: libdnf/plugin/plugin.cpp:46 + #, c-format +@@ -1002,8 +963,7 @@ msgstr "Extension chargée, nom=« %s », version=« %s »" + + #: libdnf/plugin/plugin.cpp:96 + msgid "Plugins::loadPlugins() dirPath cannot be empty" +-msgstr "" +-"Le chemin du dossier (dirPath) Plugins::loadPlugins() ne peut pas être vide" ++msgstr "Le chemin du dossier (dirPath) Plugins::loadPlugins() ne peut pas être vide" + + #: libdnf/plugin/plugin.cpp:105 + #, c-format +@@ -1020,10 +980,7 @@ msgid "" + "Using '==' operator in reldeps can result in an undefined behavior. It is " + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." +-msgstr "" +-"L’utilisation de l’opérateur « == » dans reldeps peut entraîner un " +-"comportement indéfini. Il est déprécié et le support sera abandonné dans les " +-"prochaines versions. Utilisez plutôt l’opérateur « = »." ++msgstr "L’utilisation de l’opérateur « == » dans reldeps peut entraîner un comportement indéfini. Il est déprécié et le support sera abandonné dans les prochaines versions. Utilisez plutôt l’opérateur « = »." + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -1033,8 +990,7 @@ msgstr "Le dépôt %s n’a pas de miroir ou d’adresse de base." + #: libdnf/repo/Repo.cpp:330 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" +-"Le dépôt « %s » n’a pas de type pris en charge : « type=%s », passer outre." ++msgstr "Le dépôt « %s » n’a pas de type pris en charge : « type=%s », passer outre." + + #: libdnf/repo/Repo.cpp:491 libdnf/repo/Repo.cpp:612 libdnf/repo/Repo.cpp:643 + #: libdnf/repo/Repo.cpp:1407 +@@ -1046,9 +1002,7 @@ msgstr "repo '%s' : 'basecachedir' n'est pas fixé" + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of " + "minrate or throttle" +-msgstr "" +-"La vitesse de téléchargement maximale est plus basse que le minimum. " +-"Veuillez modifier les paramètres minrate ou throttle" ++msgstr "La vitesse de téléchargement maximale est plus basse que le minimum. Veuillez modifier les paramètres minrate ou throttle" + + #: libdnf/repo/Repo.cpp:548 + #, c-format +@@ -1057,9 +1011,7 @@ msgstr "repo '%s' : 'proxy_username' est défini mais pas 'proxy_password'" + + #: libdnf/repo/Repo.cpp:550 + msgid "'proxy_username' is set but not 'proxy_password'" +-msgstr "" +-"Le nom d'utilisateur \"proxy_username\" est défini mais pas le mot de passe " +-"\"proxy_password\"" ++msgstr "Le nom d'utilisateur \"proxy_username\" est défini mais pas le mot de passe \"proxy_password\"" + + #: libdnf/repo/Repo.cpp:631 + #, c-format +@@ -1130,9 +1082,7 @@ msgstr "relance : échec pour « %s », la somme de %s ne correspond pas." + #: libdnf/repo/Repo.cpp:1231 + #, c-format + msgid "reviving: '%s' can be revived - metalink checksums match." +-msgstr "" +-"relance : « %s » peut être relancé - la somme de contrôle du méta-lien " +-"correspond." ++msgstr "relance : « %s » peut être relancé - la somme de contrôle du méta-lien correspond." + + #: libdnf/repo/Repo.cpp:1260 + #, c-format +@@ -1190,9 +1140,7 @@ msgstr "Impossible de créer le dossier persistant « %s » : %s" + + #: libdnf/repo/Repo.cpp:1800 + msgid "resume cannot be used simultaneously with the byterangestart param" +-msgstr "" +-"« resume » (reprise) ne peut pas être utilisé avec le paramètre " +-"byterangestart" ++msgstr "« resume » (reprise) ne peut pas être utilisé avec le paramètre byterangestart" + + #: libdnf/repo/Repo.cpp:1817 + #, c-format +@@ -1225,25 +1173,19 @@ msgstr "Aucune transaction n’est en cours" + + #: libdnf/transaction/TransactionItem.cpp:146 + msgid "Attempt to insert transaction item into completed transaction" +-msgstr "" +-"Tentative d’insérer un élément de transaction dans une transaction achevée" ++msgstr "Tentative d’insérer un élément de transaction dans une transaction achevée" + + #: libdnf/transaction/TransactionItem.cpp:217 + msgid "Attempt to update transaction item in completed transaction" +-msgstr "" +-"Tentative de mettre à jour un élément de transaction dans une transaction " +-"achevée" ++msgstr "Tentative de mettre à jour un élément de transaction dans une transaction achevée" + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "" +-"Base de données corrompue : ligne « version » manquante dans le tableau " +-"« config »" ++msgstr "Base de données corrompue : ligne « version » manquante dans le tableau « config »" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +-msgstr "" +-"Transformer : n’a pu ouvrir le répertoire de persistance de l’historique" ++msgstr "Transformer : n’a pu ouvrir le répertoire de persistance de l’historique" + + #: libdnf/transaction/Transformer.cpp:694 + msgid "Couldn't find a history database" +@@ -1260,8 +1202,115 @@ msgstr "L’état du TransactionItem n’est pas défini : %s" + + #: libdnf/transaction/private/Transaction.cpp:243 + msgid "Can't add console output to unsaved transaction" +-msgstr "" +-"Ne peut pas ajouter une sortie de console à une transaction non enregistrée" ++msgstr "Ne peut pas ajouter une sortie de console à une transaction non enregistrée" ++ ++#~ msgid " does not belong to a distupgrade repository" ++#~ msgstr " n’appartient pas à un dépôt distupgrade" ++ ++#~ msgid " has inferior architecture" ++#~ msgstr " a une architecture inférieure" ++ ++#, c-format ++#~ msgid "package %s is filtered out by modular filtering" ++#~ msgstr "le paquet %s a été filtré par filtrage modulaire" ++ ++#, c-format ++#~ msgid "package %s does not have a compatible architecture" ++#~ msgstr "le paquet %s n’a pas d’architecture compatible" ++ ++#, c-format ++#~ msgid "package %s is not installable" ++#~ msgstr "le paquet %s n’est pas installable" ++ ++#, c-format ++#~ msgid "package %s is filtered out by exclude filtering" ++#~ msgstr "le paquet %s a été filtré en excluant le filtrage" ++ ++#, c-format ++#~ msgid "nothing provides %s needed by %s" ++#~ msgstr "rien de fournit %s rendu nécessaire par %s" ++ ++#, c-format ++#~ msgid "cannot install both %s and %s" ++#~ msgstr "installation impossible à la fois de %s et %s" ++ ++#, c-format ++#~ msgid "package %s conflicts with %s provided by %s" ++#~ msgstr "le paquet %s est en conflit avec %s fourni par %s" ++ ++#, c-format ++#~ msgid "package %s obsoletes %s provided by %s" ++#~ msgstr "le paquet %s rend obsolète %s fourni par %s" ++ ++#, c-format ++#~ msgid "installed package %s obsoletes %s provided by %s" ++#~ msgstr "le paquet installé %s rend obsolète %s fourni par %s" ++ ++#, c-format ++#~ msgid "package %s implicitly obsoletes %s provided by %s" ++#~ msgstr "le paquet %s rend implicitement obsolète %s fourni par %s" ++ ++#, c-format ++#~ msgid "package %s requires %s, but none of the providers can be installed" ++#~ msgstr "" ++#~ "le paquet %s nécessite %s, mais aucun fournisseur ne peut être installé" ++ ++#, c-format ++#~ msgid "package %s conflicts with %s provided by itself" ++#~ msgstr "le paquet %s est en conflit avec %s fourni par lui-même" ++ ++#, c-format ++#~ msgid "both package %s and %s obsolete %s" ++#~ msgstr "à la fois le paquet %s et %s rendent obsolète %s" ++ ++#, c-format ++#~ msgid "module %s is disabled" ++#~ msgstr "le module %s est désactivé" ++ ++#, c-format ++#~ msgid "module %s does not have a compatible architecture" ++#~ msgstr "le module %s n’a pas d’architecture compatible" ++ ++#, c-format ++#~ msgid "module %s is not installable" ++#~ msgstr "le module %s n’est pas installable" ++ ++#, c-format ++#~ msgid "nothing provides %s needed by module %s" ++#~ msgstr "rien de fournit %s rendu nécessaire par le module %s" ++ ++#, c-format ++#~ msgid "cannot install both modules %s and %s" ++#~ msgstr "installation impossible à la fois des modules %s et %s" ++ ++#, c-format ++#~ msgid "module %s conflicts with %s provided by %s" ++#~ msgstr "le module %s est en conflit avec %s fourni par %s" ++ ++#, c-format ++#~ msgid "module %s obsoletes %s provided by %s" ++#~ msgstr "le module %s rend obsolète %s fourni par %s" ++ ++#, c-format ++#~ msgid "installed module %s obsoletes %s provided by %s" ++#~ msgstr "le module installé %s rend obsolète %s fourni par %s" ++ ++#, c-format ++#~ msgid "module %s implicitly obsoletes %s provided by %s" ++#~ msgstr "le module %s rend implicitement obsolète %s fourni par %s" ++ ++#, c-format ++#~ msgid "module %s requires %s, but none of the providers can be installed" ++#~ msgstr "" ++#~ "le module %s nécessite %s, mais aucun fournisseur ne peut être installé" ++ ++#, c-format ++#~ msgid "module %s conflicts with %s provided by itself" ++#~ msgstr "le module %s est en conflit avec %s fourni par lui-même" ++ ++#, c-format ++#~ msgid "both module %s and %s obsolete %s" ++#~ msgstr "à la fois le module %s et %s rendent obsolète %s" + + #~ msgid "failed to add solv" + #~ msgstr "n’a pu ajouter solv" +@@ -1281,5 +1330,3 @@ msgstr "" + #~ msgid "Failed to parse module artifact NEVRA '%s'" + #~ msgstr "Échec de l'analyse de l'artefact de module '%s'" + +-#~ msgid "Bad id for repo: %s, byte = %s %d" +-#~ msgstr "ID erroné pour le dépôt : %s, byte = %s %d" +diff --git a/po/ja.po b/po/ja.po +index f16abcb2..332bd4fa 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2023-02-28 09:24+0100\n" ++"POT-Creation-Date: 2023-08-29 13:26+0200\n" + "PO-Revision-Date: 2023-03-07 14:20+0000\n" + "Last-Translator: Transtats \n" + "Language-Team: Japanese ' command. After you " + "reset the module, you can install the other stream." +-msgstr "" +-"有効化されたモジュールのストリームの切り替えはできません。\n" +-"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module " +-"reset ' コマンドを使用してモジュールをリセットすることを推奨しま" +-"す。モジュールのリセット後に、別のストリームをインストールできます。" ++msgstr "有効化されたモジュールのストリームの切り替えはできません。\n" ++"モジュールからすべてのインストールされたコンテンツを削除し、'microdnf module reset ' コマンドを使用してモジュールをリセットすることを推奨します。モジュールのリセット後に、別のストリームをインストールできます。" + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -269,9 +255,7 @@ msgstr " 問題: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "" +-"モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにイ" +-"ンストールはできません" ++msgstr "モジュラーパッケージ '%s' のモジュラーメタデータは利用不可です; システムにインストールはできません" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -310,8 +294,7 @@ msgstr "トランザクションの実行中にエラーが発生しました: % + + #: libdnf/dnf-rpmts.cpp:283 + msgid "Error running transaction and no problems were reported!" +-msgstr "" +-"トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!" ++msgstr "トランザクションの実行中にエラーが発生しましたが、問題は報告されませんでした!" + + #: libdnf/dnf-rpmts.cpp:346 + msgid "Fatal error, run database recovery" +@@ -359,9 +342,7 @@ msgstr "tmp ファイルを開くことに失敗しました: %s" + #: libdnf/dnf-sack.cpp:550 + #, c-format + msgid "While writing primary cache %s repowriter write failed: %i, error: %s" +-msgstr "" +-"プライマリーキャッシュの %s repowriter 書き込み中に %i エラーが発生しました。" +-"エラー: %s" ++msgstr "プライマリーキャッシュの %s repowriter 書き込み中に %i エラーが発生しました。エラー: %s" + + #: libdnf/dnf-sack.cpp:560 + #, c-format +@@ -387,9 +368,7 @@ msgstr "一時ファイル %s を作成できません" + #, c-format + msgid "" + "While writing extension cache %s (%d): repowriter write failed: %i, error: %s" +-msgstr "" +-"拡張キャッシュ %s (%d) の書き込み中: repowriter の書き込みに失敗: %i、エ" +-"ラー: %s" ++msgstr "拡張キャッシュ %s (%d) の書き込み中: repowriter の書き込みに失敗: %i、エラー: %s" + + #: libdnf/dnf-sack.cpp:676 + #, c-format +@@ -489,9 +468,7 @@ msgstr "パッケージ %s を確実にしようとする場合、ソースは + #: libdnf/dnf-transaction.cpp:328 + #, c-format + msgid "Failed to ensure %1$s as repo %2$s not found(%3$i repos loaded)" +-msgstr "" +-"repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo " +-"はロード済み)" ++msgstr "repo %2$s が見つからないため、%1$s を確実にすることに失敗しました (%3$i repo はロード済み)" + + #: libdnf/dnf-transaction.cpp:369 + msgid "Failed to check untrusted: " +@@ -505,8 +482,7 @@ msgstr "%s にダウンロードしたファイルが見つかりませんでし + #: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" +-msgstr "" +-"パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s" ++msgstr "パッケージ %1$s は確認できず、repo %2$s は GPG が有効になっています: %3$s" + + #: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" +@@ -525,8 +501,7 @@ msgstr "%s に filesystem をフリーサイズで取得することに失敗し + #: libdnf/dnf-transaction.cpp:937 + #, c-format + msgid "Not enough free space in %1$s: needed %2$s, available %3$s" +-msgstr "" +-"%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です" ++msgstr "%1$s に十分なスペースがありません: %2$s 必要で、利用可能なのは %3$s です" + + #: libdnf/dnf-transaction.cpp:1196 + msgid "failed to set root" +@@ -554,9 +529,7 @@ msgstr "トランザクションの実行中にエラー %i" + #: libdnf/dnf-transaction.cpp:1480 + #, c-format + msgid "Transaction did not go to writing phase, but returned no error(%i)" +-msgstr "" +-"トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しま" +-"せんでした" ++msgstr "トランザクションは書き込みフェーズまで行きませんでしたが、エラー(%i) は返しませんでした" + + #: libdnf/dnf-utils.cpp:111 libdnf/hy-iutil.cpp:485 + #, c-format +@@ -576,13 +549,15 @@ msgstr "不適格な Selector、フィルター内に複数の一致するオブ + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "操作に使用される不適格な Selector、間違った比較タイプ" + +-#: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 +-msgid " does not belong to a distupgrade repository" +-msgstr " はdistupgradeレポジトリーに属していません" ++#: libdnf/goal/Goal.cpp:90 ++#, c-format ++msgid "%s from %s does not belong to a distupgrade repository" ++msgstr "%s の %s はdistupgradeレポジトリーに属していません" + +-#: libdnf/goal/Goal.cpp:91 libdnf/goal/Goal.cpp:118 +-msgid " has inferior architecture" +-msgstr " は下位アーキテクチャがあります" ++#: libdnf/goal/Goal.cpp:91 ++#, c-format ++msgid "%s from %s has inferior architecture" ++msgstr "%s の %s は下位アーキテクチャがあります" + + #: libdnf/goal/Goal.cpp:92 + msgid "problem with installed package " +@@ -623,72 +598,79 @@ msgstr "ジョブの最良アップデート候補をインストールできま + + #: libdnf/goal/Goal.cpp:101 + #, c-format +-msgid "package %s is filtered out by modular filtering" +-msgstr "パッケージ %s はモジュラーフィルタリングに一致しません" ++msgid "package %s from %s is filtered out by modular filtering" ++msgstr "%s のパッケージ %s はモジュラーフィルタリングに一致しません" + + #: libdnf/goal/Goal.cpp:102 + #, c-format +-msgid "package %s does not have a compatible architecture" +-msgstr "パッケージ %s は互換性のあるアーキテクチャーがありません" ++msgid "package %s from %s does not have a compatible architecture" ++msgstr "%s のパッケージ %s は互換性のあるアーキテクチャーがありません" + + #: libdnf/goal/Goal.cpp:103 + #, c-format +-msgid "package %s is not installable" +-msgstr "パッケージ %s はインストール不可です" ++msgid "package %s from %s is not installable" ++msgstr "%s のパッケージ %s はインストール不可です" + + #: libdnf/goal/Goal.cpp:104 + #, c-format +-msgid "package %s is filtered out by exclude filtering" +-msgstr "パッケージ %s は除外フィルタリングに一致しません" ++msgid "package %s from %s is filtered out by exclude filtering" ++msgstr "%s のパッケージ %s は除外フィルタリングに一致しません" + + #: libdnf/goal/Goal.cpp:105 + #, c-format +-msgid "nothing provides %s needed by %s" +-msgstr "%s が提供されません %s に必要です" ++msgid "nothing provides %s needed by %s from %s" ++msgstr "%s が提供されません。%s の %s に必要です" + + #: libdnf/goal/Goal.cpp:106 + #, c-format +-msgid "cannot install both %s and %s" +-msgstr "%s と %s どちらもインストールできません" ++msgid "cannot install both %s from %s and %s from %s" ++msgstr "%s の %s および %s の %s の両方をインストールすることはできません" + + #: libdnf/goal/Goal.cpp:107 + #, c-format +-msgid "package %s conflicts with %s provided by %s" +-msgstr "パッケージ %s は %s と競合しています。これは %s により提供されます" ++msgid "package %s from %s conflicts with %s provided by %s from %s" ++msgstr "%s のパッケージ %s は、%s の %s で提供される %s と競合しています" + + #: libdnf/goal/Goal.cpp:108 + #, c-format +-msgid "package %s obsoletes %s provided by %s" +-msgstr "パッケージ %s は %s を廃止しました。これは %s により提供されます" ++msgid "package %s from %s obsoletes %s provided by %s from %s" ++msgstr "%s のパッケージ %s により、%s の %s で提供される %s が廃止されました" + + #: libdnf/goal/Goal.cpp:109 + #, c-format +-msgid "installed package %s obsoletes %s provided by %s" +-msgstr "" +-"インストール済パッケージ %s は %s を廃止しました。これは %s により提供されま" +-"す" ++msgid "installed package %s obsoletes %s provided by %s from %s" ++msgstr "インストール済パッケージ %s により、%s の %s で提供される %s が廃止されました" + + #: libdnf/goal/Goal.cpp:110 + #, c-format +-msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "パッケージ %s は %s を暗に廃止しました。これは %s により提供されます" ++msgid "package %s from %s implicitly obsoletes %s provided by %s from %s" ++msgstr "%s のパッケージ %s により、%s の %s で提供される %s が廃止されました" + + #: libdnf/goal/Goal.cpp:111 + #, c-format +-msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "" +-"パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールできま" +-"せん" ++msgid "" ++"package %s from %s requires %s, but none of the providers can be installed" ++msgstr "%s のパッケージ %s には、%s が必要ですが、どのプロバイダーからもインストールできません" + + #: libdnf/goal/Goal.cpp:112 + #, c-format +-msgid "package %s conflicts with %s provided by itself" +-msgstr "パッケージ %s は自己提供される %s と競合しています" ++msgid "package %s from %s conflicts with %s provided by itself" ++msgstr "%s のパッケージ %s は、自身で提供される %s と競合しています" + + #: libdnf/goal/Goal.cpp:113 + #, c-format +-msgid "both package %s and %s obsolete %s" +-msgstr "パッケージ %s と %s 両方は %s を廃止しました" ++msgid "both package %s from %s and %s from %s obsolete %s" ++msgstr "%s の %s パッケージと %s の %s パッケージにより、%s が廃止されました" ++ ++#: libdnf/goal/Goal.cpp:117 ++#, c-format ++msgid "%s from %s does not belong to a distupgrade repository" ++msgstr "%s の %s は distupgrade レポジトリーに属していません" ++ ++#: libdnf/goal/Goal.cpp:118 ++#, c-format ++msgid "%s from %s has inferior architecture" ++msgstr "%s の %s には、下位アーキテクチャーがあります" + + #: libdnf/goal/Goal.cpp:119 + msgid "problem with installed module " +@@ -705,104 +687,101 @@ msgstr "モジュールの最良アップデート候補をインストールで + + #: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131 + #, c-format +-msgid "module %s is disabled" +-msgstr "モジュール %s は無効です" ++msgid "module %s from %s is disabled" ++msgstr "%s のモジュール %s が無効になっています" + + #: libdnf/goal/Goal.cpp:129 + #, c-format +-msgid "module %s does not have a compatible architecture" +-msgstr "モジュール %s は互換性のあるアーキテクチャーがありません" ++msgid "module %s from %s does not have a compatible architecture" ++msgstr "%s のモジュール %s には、互換性のあるアーキテクチャーがありません" + + #: libdnf/goal/Goal.cpp:130 + #, c-format +-msgid "module %s is not installable" +-msgstr "モジュール %s はインストール不可です" ++msgid "module %s from %s is not installable" ++msgstr "%s のモジュール %s はインストール不可です" + + #: libdnf/goal/Goal.cpp:132 + #, c-format +-msgid "nothing provides %s needed by module %s" +-msgstr "%s が提供されませんモジュール %s に必要です" ++msgid "nothing provides %s needed by module %s from %s" ++msgstr "%s のモジュール %s が必要な %s は何も提供されません" + + #: libdnf/goal/Goal.cpp:133 + #, c-format +-msgid "cannot install both modules %s and %s" +-msgstr "モジュール %s と %s どちらもインストールできません" ++msgid "cannot install both modules %s from %s and %s from %s" ++msgstr "%s の %s および %s の %s の両方のモジュールをインストールすることはできません" + + #: libdnf/goal/Goal.cpp:134 + #, c-format +-msgid "module %s conflicts with %s provided by %s" +-msgstr "モジュール %s は %s と競合しています。これは %s により提供されます" ++msgid "module %s from %s conflicts with %s provided by %s from %s" ++msgstr "%s のモジュール %s は、%s の %s で提供される %s と競合しています" + + #: libdnf/goal/Goal.cpp:135 + #, c-format +-msgid "module %s obsoletes %s provided by %s" +-msgstr "モジュール %s は %s を廃止しました。これは %s により提供されます" ++msgid "module %s from %s obsoletes %s provided by %s from %s" ++msgstr "%s のモジュール %s により、%s の %s で提供される %s が廃止されました" + + #: libdnf/goal/Goal.cpp:136 + #, c-format +-msgid "installed module %s obsoletes %s provided by %s" +-msgstr "" +-"インストール済モジュール %s は %s を廃止しました。これは %s により提供されま" +-"す" ++msgid "installed module %s obsoletes %s provided by %s from %s" ++msgstr "インストール済モジュール %s により、%s の %s で提供される %s が廃止されました" + + #: libdnf/goal/Goal.cpp:137 + #, c-format +-msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "モジュール %s は %s を暗に廃止しました。これは %s により提供されます" ++msgid "module %s from %s implicitly obsoletes %s provided by %s from %s" ++msgstr "%s のモジュール %s により、%s の %s で提供される %s が廃止されました" + + #: libdnf/goal/Goal.cpp:138 + #, c-format +-msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "" +-"モジュール %s には %s が必要ですが、どのプロバイダーからもインストールできま" +-"せん" ++msgid "" ++"module %s from %s requires %s, but none of the providers can be installed" ++msgstr "%s のモジュール %s には、%s が必要ですが、どのプロバイダーからもインストールできません" + + #: libdnf/goal/Goal.cpp:139 + #, c-format +-msgid "module %s conflicts with %s provided by itself" +-msgstr "モジュール %s は自己提供される %s と競合しています" ++msgid "module %s from %s conflicts with %s provided by itself" ++msgstr "%s のモジュール %s は、自身で提供される %s と競合しています" + + #: libdnf/goal/Goal.cpp:140 + #, c-format +-msgid "both module %s and %s obsolete %s" +-msgstr "モジュール %s と %s 両方は %s を廃止しました" ++msgid "both module %s from %s and %s from %s obsolete %s" ++msgstr "%s の %s モジュールと %s の %s モジュールの両方により、%s が廃止されました" + +-#: libdnf/goal/Goal.cpp:1157 ++#: libdnf/goal/Goal.cpp:1168 + msgid "no solver set" + msgstr "設定されたソルバーはありません" + +-#: libdnf/goal/Goal.cpp:1162 ++#: libdnf/goal/Goal.cpp:1173 + #, c-format + msgid "failed to make %s absolute" + msgstr "%s を絶対的にすることに失敗しました" + +-#: libdnf/goal/Goal.cpp:1169 ++#: libdnf/goal/Goal.cpp:1180 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "debugdata を %1$s へ書き込むことに失敗しました: %2$s" + +-#: libdnf/goal/Goal.cpp:1181 ++#: libdnf/goal/Goal.cpp:1192 + msgid "no solv in the goal" + msgstr "目標に solv がありません" + +-#: libdnf/goal/Goal.cpp:1183 ++#: libdnf/goal/Goal.cpp:1194 + msgid "no solution, cannot remove protected package" + msgstr "ソリューションがなく、保護されたパッケージを削除できません" + +-#: libdnf/goal/Goal.cpp:1186 ++#: libdnf/goal/Goal.cpp:1197 + msgid "no solution possible" + msgstr "可能なソリューションがありません" + +-#: libdnf/goal/Goal.cpp:1312 ++#: libdnf/goal/Goal.cpp:1323 + msgid "Problem: " + msgstr "問題: " + +-#: libdnf/goal/Goal.cpp:1317 ++#: libdnf/goal/Goal.cpp:1328 + #, c-format + msgid "Problem %d: " + msgstr "問題 %d: " + +-#: libdnf/goal/Goal.cpp:1650 ++#: libdnf/goal/Goal.cpp:1661 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "操作は結果的に以下の保護されたパッケージを削除します: " +@@ -864,70 +843,66 @@ msgstr "有効な Platform ID が検出されませんでした" + msgid "Cannot enable multiple streams for module '%s'" + msgstr "モジュール '%s' の複数ストリームを有効化できません" + +-#: libdnf/module/ModulePackageContainer.cpp:346 ++#: libdnf/module/ModulePackageContainer.cpp:339 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "repo '%s' のデフォルトが競合: %s" + +-#: libdnf/module/ModulePackageContainer.cpp:917 ++#: libdnf/module/ModulePackageContainer.cpp:923 + msgid "Installing module profiles:\n" + msgstr "モジュールプロファイルのインストール中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:932 ++#: libdnf/module/ModulePackageContainer.cpp:938 + msgid "Disabling module profiles:\n" + msgstr "モジュールプロファイルの無効化中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:947 ++#: libdnf/module/ModulePackageContainer.cpp:953 + msgid "Enabling module streams:\n" + msgstr "モジュールストリームの有効化中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:961 ++#: libdnf/module/ModulePackageContainer.cpp:967 + msgid "Switching module streams:\n" + msgstr "モジュールストリームの切り替え中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:979 ++#: libdnf/module/ModulePackageContainer.cpp:985 + msgid "Disabling modules:\n" + msgstr "モジュールの無効化:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:990 ++#: libdnf/module/ModulePackageContainer.cpp:996 + msgid "Resetting modules:\n" + msgstr "モジュールの再設定中:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1704 ++#: libdnf/module/ModulePackageContainer.cpp:1710 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" + msgstr "'%s' のモジュラーフェイルセーフデータをロードできません" + +-#: libdnf/module/ModulePackageContainer.cpp:1710 ++#: libdnf/module/ModulePackageContainer.cpp:1716 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" + msgstr "モジュール '%s:%s' のモジュラーフェイルセーフデータをロードできません" + +-#: libdnf/module/ModulePackageContainer.cpp:1791 ++#: libdnf/module/ModulePackageContainer.cpp:1797 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" +-msgstr "" +-"ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: " +-"%s" ++msgstr "ディレクトリー \"%s\" を作成できません。対象モジュラーフェイルセーフデータ: %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1807 ++#: libdnf/module/ModulePackageContainer.cpp:1813 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" + msgstr "'%s' のモジュラーフェイルセーフデータを保存できません" + +-#: libdnf/module/ModulePackageContainer.cpp:1830 ++#: libdnf/module/ModulePackageContainer.cpp:1836 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" + msgstr "'%s' のモジュラーフェイルセーフデータを削除できません" + +-#: libdnf/module/ModulePackageContainer.cpp:1862 ++#: libdnf/module/ModulePackageContainer.cpp:1868 + #, c-format + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" +-msgstr "" +-"ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用" +-"できません" ++msgstr "ターゲットモジュール '%s' が無効であるため、モジュラーの廃止を '%s:%s' に適用できません" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format +@@ -957,8 +932,7 @@ msgstr "ストリームのアップグレードに失敗しました: %s" + #: libdnf/module/modulemd/ModuleMetadata.cpp:221 + #, c-format + msgid "Cannot retrieve module obsoletes because no stream matching %s: %s" +-msgstr "" +-"%s に一致するストリームがないため、モジュールの廃止を取得できません: %s" ++msgstr "%s に一致するストリームがないため、モジュールの廃止を取得できません: %s" + + #: libdnf/plugin/plugin.cpp:46 + #, c-format +@@ -1000,10 +974,7 @@ msgid "" + "Using '==' operator in reldeps can result in an undefined behavior. It is " + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." +-msgstr "" +-"reldeps で '==' 演算子を使用すると、未定義の動作が発生する可能性があります。" +-"これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' 演" +-"算子を使用してください。" ++msgstr "reldeps で '==' 演算子を使用すると、未定義の動作が発生する可能性があります。これは非推奨で、将来のバージョンではサポートされなくなります。代わりに '=' 演算子を使用してください。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -1013,9 +984,7 @@ msgstr "リポジトリー %s にはミラーまたは baseurl セットがあ + #: libdnf/repo/Repo.cpp:330 + #, c-format + msgid "Repository '%s' has unsupported type: 'type=%s', skipping." +-msgstr "" +-"リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッ" +-"ピング。" ++msgstr "リポジトリー '%s' にはサポートされていないタイプがあります: 'type=%s'、スキッピング。" + + #: libdnf/repo/Repo.cpp:491 libdnf/repo/Repo.cpp:612 libdnf/repo/Repo.cpp:643 + #: libdnf/repo/Repo.cpp:1407 +@@ -1027,21 +996,16 @@ msgstr "repo '%s': 'basecachedir' が設定されていません" + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of " + "minrate or throttle" +-msgstr "" +-"ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの" +-"設定を変更してください" ++msgstr "ダウンロードの最高速度は、最低速度よりも低いです。minrate またはスロットルの設定を変更してください" + + #: libdnf/repo/Repo.cpp:548 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "" +-"repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されてい" +-"ません" ++msgstr "repo '%s': 'proxy_username' は設定済みですが、'proxy_password' は設定されていません" + + #: libdnf/repo/Repo.cpp:550 + msgid "'proxy_username' is set but not 'proxy_password'" +-msgstr "" +-"'proxy_username' は設定済みですが、'proxy_password' は設定されていません" ++msgstr "'proxy_username' は設定済みですが、'proxy_password' は設定されていません" + + #: libdnf/repo/Repo.cpp:631 + #, c-format +@@ -1102,8 +1066,7 @@ msgstr "復元中: repo '%s' はスキップされました、metalink はあり + #: libdnf/repo/Repo.cpp:1202 + #, c-format + msgid "reviving: repo '%s' skipped, no usable hash." +-msgstr "" +-"復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" ++msgstr "復元中: repo '%s' はスキップされました、使用可能なハッシュはありません。" + + #: libdnf/repo/Repo.cpp:1225 + #, c-format +@@ -1148,8 +1111,7 @@ msgstr "repo: キャッシュを使用: %s" + #: libdnf/repo/Repo.cpp:1358 + #, c-format + msgid "Cache-only enabled but no cache for '%s'" +-msgstr "" +-"キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" ++msgstr "キャッシュオンリーが有効になっていますが、'%s' に対するキャッシュはありません" + + #: libdnf/repo/Repo.cpp:1362 + #, c-format +@@ -1213,8 +1175,7 @@ msgstr "完了したトランザクションにトランザクションアイテ + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "" +-"データベースが破損しています。テーブル 'config' の行 'version' がありません" ++msgstr "データベースが破損しています。テーブル 'config' の行 'version' がありません" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +@@ -1237,6 +1198,122 @@ msgstr "TransactionItem の状態は設定されていません: %s" + msgid "Can't add console output to unsaved transaction" + msgstr "未保存のトランザクションにコンソールの出力を追加できません" + ++#~ msgid " does not belong to a distupgrade repository" ++#~ msgstr " はdistupgradeレポジトリーに属していません" ++ ++#~ msgid " has inferior architecture" ++#~ msgstr " は下位アーキテクチャがあります" ++ ++#, c-format ++#~ msgid "package %s is filtered out by modular filtering" ++#~ msgstr "パッケージ %s はモジュラーフィルタリングに一致しません" ++ ++#, c-format ++#~ msgid "package %s does not have a compatible architecture" ++#~ msgstr "パッケージ %s は互換性のあるアーキテクチャーがありません" ++ ++#, c-format ++#~ msgid "package %s is not installable" ++#~ msgstr "パッケージ %s はインストール不可です" ++ ++#, c-format ++#~ msgid "package %s is filtered out by exclude filtering" ++#~ msgstr "パッケージ %s は除外フィルタリングに一致しません" ++ ++#, c-format ++#~ msgid "nothing provides %s needed by %s" ++#~ msgstr "%s が提供されません %s に必要です" ++ ++#, c-format ++#~ msgid "cannot install both %s and %s" ++#~ msgstr "%s と %s どちらもインストールできません" ++ ++#, c-format ++#~ msgid "package %s conflicts with %s provided by %s" ++#~ msgstr "パッケージ %s は %s と競合しています。これは %s により提供されます" ++ ++#, c-format ++#~ msgid "package %s obsoletes %s provided by %s" ++#~ msgstr "パッケージ %s は %s を廃止しました。これは %s により提供されます" ++ ++#, c-format ++#~ msgid "installed package %s obsoletes %s provided by %s" ++#~ msgstr "" ++#~ "インストール済パッケージ %s は %s を廃止しました。これは %s により提供され" ++#~ "ます" ++ ++#, c-format ++#~ msgid "package %s implicitly obsoletes %s provided by %s" ++#~ msgstr "" ++#~ "パッケージ %s は %s を暗に廃止しました。これは %s により提供されます" ++ ++#, c-format ++#~ msgid "package %s requires %s, but none of the providers can be installed" ++#~ msgstr "" ++#~ "パッケージ %s には %s が必要ですが、どのプロバイダーからもインストールでき" ++#~ "ません" ++ ++#, c-format ++#~ msgid "package %s conflicts with %s provided by itself" ++#~ msgstr "パッケージ %s は自己提供される %s と競合しています" ++ ++#, c-format ++#~ msgid "both package %s and %s obsolete %s" ++#~ msgstr "パッケージ %s と %s 両方は %s を廃止しました" ++ ++#, c-format ++#~ msgid "module %s is disabled" ++#~ msgstr "モジュール %s は無効です" ++ ++#, c-format ++#~ msgid "module %s does not have a compatible architecture" ++#~ msgstr "モジュール %s は互換性のあるアーキテクチャーがありません" ++ ++#, c-format ++#~ msgid "module %s is not installable" ++#~ msgstr "モジュール %s はインストール不可です" ++ ++#, c-format ++#~ msgid "nothing provides %s needed by module %s" ++#~ msgstr "%s が提供されませんモジュール %s に必要です" ++ ++#, c-format ++#~ msgid "cannot install both modules %s and %s" ++#~ msgstr "モジュール %s と %s どちらもインストールできません" ++ ++#, c-format ++#~ msgid "module %s conflicts with %s provided by %s" ++#~ msgstr "モジュール %s は %s と競合しています。これは %s により提供されます" ++ ++#, c-format ++#~ msgid "module %s obsoletes %s provided by %s" ++#~ msgstr "モジュール %s は %s を廃止しました。これは %s により提供されます" ++ ++#, c-format ++#~ msgid "installed module %s obsoletes %s provided by %s" ++#~ msgstr "" ++#~ "インストール済モジュール %s は %s を廃止しました。これは %s により提供され" ++#~ "ます" ++ ++#, c-format ++#~ msgid "module %s implicitly obsoletes %s provided by %s" ++#~ msgstr "" ++#~ "モジュール %s は %s を暗に廃止しました。これは %s により提供されます" ++ ++#, c-format ++#~ msgid "module %s requires %s, but none of the providers can be installed" ++#~ msgstr "" ++#~ "モジュール %s には %s が必要ですが、どのプロバイダーからもインストールでき" ++#~ "ません" ++ ++#, c-format ++#~ msgid "module %s conflicts with %s provided by itself" ++#~ msgstr "モジュール %s は自己提供される %s と競合しています" ++ ++#, c-format ++#~ msgid "both module %s and %s obsolete %s" ++#~ msgstr "モジュール %s と %s 両方は %s を廃止しました" ++ + #~ msgid "failed to add solv" + #~ msgstr "solv の追加に失敗しました" + +@@ -1256,5 +1333,3 @@ msgstr "未保存のトランザクションにコンソールの出力を追加 + #~ msgid "Failed to parse module artifact NEVRA '%s'" + #~ msgstr "モジュールアーティファクト NEVRA '%s' の解析に失敗しました" + +-#~ msgid "Bad id for repo: %s, byte = %s %d" +-#~ msgstr "repo に対する不正な id: %s, byte = %s %d" +diff --git a/po/ko.po b/po/ko.po +index 04ed2363..8db8173e 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -9,7 +9,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2023-02-28 09:24+0100\n" ++"POT-Creation-Date: 2023-08-29 13:26+0200\n" + "PO-Revision-Date: 2023-03-02 22:20+0000\n" + "Last-Translator: 김인수 \n" + "Language-Team: Korean ' command. After you " + "reset the module, you can install the other stream." +-msgstr "" +-"활성화된 모듈 스트림을 전환 할 수 없습니다.\n" +-"설치된 모든 내용을 모듈에서 제거하고 ‘' 명령을 사용하여 모듈을 " +-"재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니" +-"다." ++msgstr "활성화된 모듈 스트림을 전환 할 수 없습니다.\n" ++"설치된 모든 내용을 모듈에서 제거하고 ‘' 명령을 사용하여 모듈을 재설정하는 것이 좋습니다. 모듈을 재설정한 후, 다른 스트림을 설치 할 수 있습니다." + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -264,9 +257,7 @@ msgstr " 문제: %s\n" + msgid "" + "No available modular metadata for modular package '%s'; cannot be installed " + "on the system" +-msgstr "" +-"모듈러 꾸러미 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 " +-"할 수 없습니다" ++msgstr "모듈러 패키지 '%s'에 사용 가능한 모듈러 메타데이터가 없으며; 시스템에 설치 할 수 없습니다" + + #: libdnf/dnf-rpmts.cpp:121 libdnf/dnf-rpmts.cpp:166 + #, c-format +@@ -305,8 +296,7 @@ msgstr "연결 실행 오류 : %s" + + #: libdnf/dnf-rpmts.cpp:283 + msgid "Error running transaction and no problems were reported!" +-msgstr "" +-"연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!" ++msgstr "연결을 실행하는 중 오류가 발생했으며 아무런 문제도 보고되지 않았습니다!" + + #: libdnf/dnf-rpmts.cpp:346 + msgid "Fatal error, run database recovery" +@@ -315,7 +305,7 @@ msgstr "치명적인 오류, 데이터베이스 복구 실행" + #: libdnf/dnf-rpmts.cpp:355 + #, c-format + msgid "failed to find package %s" +-msgstr "꾸러미를 찾지 못했습니다. %s" ++msgstr " 패키지를 찾지 못했습니다. %s" + + #: libdnf/dnf-rpmts.cpp:401 + #, c-format +@@ -475,7 +465,7 @@ msgstr "이미 100 %% 상태 [%s]" + #: libdnf/dnf-transaction.cpp:302 + #, c-format + msgid "Sources not set when trying to ensure package %s" +-msgstr "꾸러미 %s를 확인 하려고 할 때 원천이 설정되지 않았습니다" ++msgstr " 패키지 %s를 확인 하려고 할 때 원천이 설정되지 않았습니다" + + #: libdnf/dnf-transaction.cpp:328 + #, c-format +@@ -494,7 +484,7 @@ msgstr "에 대한 내려받기 파일 %s 찾을 수 없음" + #: libdnf/dnf-transaction.cpp:399 + #, c-format + msgid "package %1$s cannot be verified and repo %2$s is GPG enabled: %3$s" +-msgstr "꾸러미 %1$s 확인 및 복구 할 수 없습니다. %2$s GPG 사용 설정 됨 : %3$s" ++msgstr " 패키지 %1$s 확인 및 복구 할 수 없습니다. %2$s GPG 사용 설정 됨 : %3$s" + + #: libdnf/dnf-transaction.cpp:833 libdnf/dnf-transaction.cpp:905 + msgid "Failed to get value for CacheDir" +@@ -561,17 +551,19 @@ msgstr "잘못된 형식의 선택기, 필터에 일치하는 개체가 여러 + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "조작에 잘못 형성된 선택자, 잘못된 비교 유형" + +-#: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 +-msgid " does not belong to a distupgrade repository" +-msgstr " distupgrade 저장소에 속하지 않습니다" ++#: libdnf/goal/Goal.cpp:90 ++#, c-format ++msgid "%s from %s does not belong to a distupgrade repository" ++msgstr "%s (%s에서)은/는 distupgrade 저장소에 속하지 않습니다" + +-#: libdnf/goal/Goal.cpp:91 libdnf/goal/Goal.cpp:118 +-msgid " has inferior architecture" +-msgstr " 하위 구조" ++#: libdnf/goal/Goal.cpp:91 ++#, c-format ++msgid "%s from %s has inferior architecture" ++msgstr "%s (%s에서)은/는 하위 아키텍처" + + #: libdnf/goal/Goal.cpp:92 + msgid "problem with installed package " +-msgstr "설치된 꾸러미 문제 " ++msgstr "설치된 패키지 문제 " + + #: libdnf/goal/Goal.cpp:93 libdnf/goal/Goal.cpp:120 + msgid "conflicting requests" +@@ -588,7 +580,7 @@ msgstr "요청이 없습니다 " + #: libdnf/goal/Goal.cpp:96 + #, c-format + msgid "package %s does not exist" +-msgstr "꾸러미 %s가 존재하지 않습니다" ++msgstr " 패키지 %s가 존재하지 않습니다" + + #: libdnf/goal/Goal.cpp:97 libdnf/goal/Goal.cpp:124 + msgid " is provided by the system" +@@ -600,7 +592,7 @@ msgstr "종속성 문제" + + #: libdnf/goal/Goal.cpp:99 + msgid "cannot install the best update candidate for package " +-msgstr "꾸러미에 가장 적합한 최신화 선택을 설치 할 수 없습니다 " ++msgstr " 패키지에 가장 적합한 최신화 선택을 설치 할 수 없습니다 " + + #: libdnf/goal/Goal.cpp:100 libdnf/goal/Goal.cpp:127 + msgid "cannot install the best candidate for the job" +@@ -608,68 +600,79 @@ msgstr "작업에 가장 적합한 선택을 설치 할 수 없습니다" + + #: libdnf/goal/Goal.cpp:101 + #, c-format +-msgid "package %s is filtered out by modular filtering" +-msgstr "꾸러미 %s가 모듈식으로 걸러 제거됩니다" ++msgid "package %s from %s is filtered out by modular filtering" ++msgstr "패키지 %s (%s에서)가 모듈식 필터링에 의해 필터링됩니다." + + #: libdnf/goal/Goal.cpp:102 + #, c-format +-msgid "package %s does not have a compatible architecture" +-msgstr "꾸러미 %s에 호환 구조가 없습니다" ++msgid "package %s from %s does not have a compatible architecture" ++msgstr "패키지 %s (%s에서)에 호환되는 구조가 없습니다" + + #: libdnf/goal/Goal.cpp:103 + #, c-format +-msgid "package %s is not installable" +-msgstr "꾸러미 %s 가 설치 할 수 없습니다" ++msgid "package %s from %s is not installable" ++msgstr "패키지 %s (%s에서)를 설치할 수 없습니다" + + #: libdnf/goal/Goal.cpp:104 + #, c-format +-msgid "package %s is filtered out by exclude filtering" +-msgstr "꾸러미 %s가 걸러지는 것에서 제외되었습니다" ++msgid "package %s from %s is filtered out by exclude filtering" ++msgstr "패키지 %s (%s에서)가 제외 필터링을 통해 필터링됩니다" + + #: libdnf/goal/Goal.cpp:105 + #, c-format +-msgid "nothing provides %s needed by %s" +-msgstr "%s에 필요한 %s가 제공되지 않았습니다" ++msgid "nothing provides %s needed by %s from %s" ++msgstr "%s (%s에서)에 필요한 %s이 제공되지 않습니다" + + #: libdnf/goal/Goal.cpp:106 + #, c-format +-msgid "cannot install both %s and %s" +-msgstr "%s 와 %s 모두 설치 할 수 없습니다" ++msgid "cannot install both %s from %s and %s from %s" ++msgstr "%s (%s에서) 및 %s (%s에서) 모두 설치할 수 없습니다" + + #: libdnf/goal/Goal.cpp:107 + #, c-format +-msgid "package %s conflicts with %s provided by %s" +-msgstr "꾸러미 %s은 %s에서 제공된 %s와 충돌합니다" ++msgid "package %s from %s conflicts with %s provided by %s from %s" ++msgstr "패키지 %s (%s에서)가 %s (%s에서)에 의해 제공된 %s와 충돌합니다" + + #: libdnf/goal/Goal.cpp:108 + #, c-format +-msgid "package %s obsoletes %s provided by %s" +-msgstr "꾸러미 %s가 %s에의해 제공된 %s를 폐기합니다" ++msgid "package %s from %s obsoletes %s provided by %s from %s" ++msgstr "패키지 %s (%s에서)가 %s (%s에서)에 의해 제공된 %s를 폐기합니다" + + #: libdnf/goal/Goal.cpp:109 + #, c-format +-msgid "installed package %s obsoletes %s provided by %s" +-msgstr "설치된 꾸러미 %s는 %s에 의해 %s 폐기되었습니다" ++msgid "installed package %s obsoletes %s provided by %s from %s" ++msgstr "설치된 패키지 %s가 %s (%s에서)에 의해 제공된 %s를 폐기합니다" + + #: libdnf/goal/Goal.cpp:110 + #, c-format +-msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "꾸러미 %s가 %s에 의해 %s가 암시적으로 폐기되었습니다" ++msgid "package %s from %s implicitly obsoletes %s provided by %s from %s" ++msgstr "패키지 %s (%s에서)가 %s (%s에서)에 의해 제공된 %s를 암시적으로 폐기합니다" + + #: libdnf/goal/Goal.cpp:111 + #, c-format +-msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "꾸러미 %s는 %s가 필요하지만, 공급자가 없어 설치 할 수 없습니다" ++msgid "" ++"package %s from %s requires %s, but none of the providers can be installed" ++msgstr "패키지 %s (%s에서)는 %s이 필요하지만, 공급자가 없어 설치 할 수 없습니다" + + #: libdnf/goal/Goal.cpp:112 + #, c-format +-msgid "package %s conflicts with %s provided by itself" +-msgstr "꾸러미 %s가 자체적으로 제공된 %s와 충돌합니다" ++msgid "package %s from %s conflicts with %s provided by itself" ++msgstr "패키지 %s (%s에서)가 자체적으로 제공된 %s와 충돌합니다" + + #: libdnf/goal/Goal.cpp:113 + #, c-format +-msgid "both package %s and %s obsolete %s" +-msgstr "꾸러미 %s 와 %s 는 모두 %s에서 폐기되었습니다" ++msgid "both package %s from %s and %s from %s obsolete %s" ++msgstr "패키지 %s (%s에서) 및 %s (%s에서) 모두 %s을/를 폐기합니다" ++ ++#: libdnf/goal/Goal.cpp:117 ++#, c-format ++msgid "%s from %s does not belong to a distupgrade repository" ++msgstr "%s (%s에서)은/는 distupgrade 저장소에 속하지 않습니다" ++ ++#: libdnf/goal/Goal.cpp:118 ++#, c-format ++msgid "%s from %s has inferior architecture" ++msgstr "%s (%s에서)은/는 하위 아키텍처" + + #: libdnf/goal/Goal.cpp:119 + msgid "problem with installed module " +@@ -686,103 +689,104 @@ msgstr "모듈에 가장 적합한 최신화 추천을 설치 할 수 없습니 + + #: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131 + #, c-format +-msgid "module %s is disabled" +-msgstr "모듈 %s를 사용할 수 없습니다" ++msgid "module %s from %s is disabled" ++msgstr "모듈 %s (%s에서)이/가 비활성화됨" + + #: libdnf/goal/Goal.cpp:129 + #, c-format +-msgid "module %s does not have a compatible architecture" +-msgstr "모듈 %s 에 호환되는 구조가 없습니다" ++msgid "module %s from %s does not have a compatible architecture" ++msgstr "패키지 %s (%s에서)에 호환되는 아키텍처가 없습니다" + + #: libdnf/goal/Goal.cpp:130 + #, c-format +-msgid "module %s is not installable" +-msgstr "모듈 %s 를 설치 할 수 없습니다" ++msgid "module %s from %s is not installable" ++msgstr "패키지 %s (%s에서)를 설치할 수 없습니다" + + #: libdnf/goal/Goal.cpp:132 + #, c-format +-msgid "nothing provides %s needed by module %s" +-msgstr "모듈 %s 에 필요한 %s 가 제공되지 않았습니다" ++msgid "nothing provides %s needed by module %s from %s" ++msgstr "%s (%s에서)에 필요한 %s이 제공되지 않습니다" + + #: libdnf/goal/Goal.cpp:133 + #, c-format +-msgid "cannot install both modules %s and %s" +-msgstr "모듈 %s 와 %s를 모두 설치 할 수 없습니다" ++msgid "cannot install both modules %s from %s and %s from %s" ++msgstr "모듈 %s (%s에서) 및 %s (%s에서) 모두 설치할 수 없습니다" + + #: libdnf/goal/Goal.cpp:134 + #, c-format +-msgid "module %s conflicts with %s provided by %s" +-msgstr "모듈 %s가 %s에 의해 제공된 %s와 충돌합니다" ++msgid "module %s from %s conflicts with %s provided by %s from %s" ++msgstr "모듈 %s (%s에서)이 %s (%s에서)에 의해 제공된 %s와 충돌합니다" + + #: libdnf/goal/Goal.cpp:135 + #, c-format +-msgid "module %s obsoletes %s provided by %s" +-msgstr "모듈 %s가 %s에 의해 제공된 %s를 폐기하였습니다" ++msgid "module %s from %s obsoletes %s provided by %s from %s" ++msgstr "모듈 %s (%s에서)이 %s (%s에서)에 의해 제공된 %s를 폐기합니다" + + #: libdnf/goal/Goal.cpp:136 + #, c-format +-msgid "installed module %s obsoletes %s provided by %s" +-msgstr "설치된 모듈 %s 가 %s의해 제공된 %s를 폐기합니다" ++msgid "installed module %s obsoletes %s provided by %s from %s" ++msgstr "설치된 모듈 %s 가 %s의해 제공된 %s (%s에서)를 폐기합니다" + + #: libdnf/goal/Goal.cpp:137 + #, c-format +-msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "모듈 %s가 %s 에 의해 %s를 암시적으로 폐기되었습니다" ++msgid "module %s from %s implicitly obsoletes %s provided by %s from %s" ++msgstr "모듈 %s (%s에서)이 %s (%s에서)에 의해 제공된 %s를 암시적으로 폐기합니다" + + #: libdnf/goal/Goal.cpp:138 + #, c-format +-msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "모듈 %s 에 %s 가 필요하지만 공급 업체가 없어 설치 할 수 없습니다" ++msgid "" ++"module %s from %s requires %s, but none of the providers can be installed" ++msgstr "모듈 %s (%s에서)은 %s이 필요하지만, 공급자가 없어 설치 할 수 없습니다" + + #: libdnf/goal/Goal.cpp:139 + #, c-format +-msgid "module %s conflicts with %s provided by itself" +-msgstr "모듈 %s가 자체적으로 제공된 %s와 충돌합니다" ++msgid "module %s from %s conflicts with %s provided by itself" ++msgstr "모듈 %s (%s에서)이 (에서)에 의해 제공된 %s와 충돌합니다" + + #: libdnf/goal/Goal.cpp:140 + #, c-format +-msgid "both module %s and %s obsolete %s" +-msgstr "모듈 %s와 %s가 %s에서 폐기되었습니다" ++msgid "both module %s from %s and %s from %s obsolete %s" ++msgstr "모듈 %s (%s에서) 및 %s (%s에서) 모두 %s을/를 폐기합니다" + +-#: libdnf/goal/Goal.cpp:1157 ++#: libdnf/goal/Goal.cpp:1168 + msgid "no solver set" + msgstr "solver 설정 없음" + +-#: libdnf/goal/Goal.cpp:1162 ++#: libdnf/goal/Goal.cpp:1173 + #, c-format + msgid "failed to make %s absolute" + msgstr "%s 절대값을 생성을 실패하였습니다" + +-#: libdnf/goal/Goal.cpp:1169 ++#: libdnf/goal/Goal.cpp:1180 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "%1$s: %2$s에 디버그자료 쓰기를 실패했습니다" + +-#: libdnf/goal/Goal.cpp:1181 ++#: libdnf/goal/Goal.cpp:1192 + msgid "no solv in the goal" + msgstr "목표에 solv가 없다" + +-#: libdnf/goal/Goal.cpp:1183 ++#: libdnf/goal/Goal.cpp:1194 + msgid "no solution, cannot remove protected package" +-msgstr "해결책 없음, 보호 된 꾸러미를 제거 할 수 없음" ++msgstr "해결책 없음, 보호 된 패키지를 제거 할 수 없음" + +-#: libdnf/goal/Goal.cpp:1186 ++#: libdnf/goal/Goal.cpp:1197 + msgid "no solution possible" + msgstr "해결책 없음" + +-#: libdnf/goal/Goal.cpp:1312 ++#: libdnf/goal/Goal.cpp:1323 + msgid "Problem: " + msgstr "문제: " + +-#: libdnf/goal/Goal.cpp:1317 ++#: libdnf/goal/Goal.cpp:1328 + #, c-format + msgid "Problem %d: " + msgstr "문제 %d: " + +-#: libdnf/goal/Goal.cpp:1650 ++#: libdnf/goal/Goal.cpp:1661 + msgid "" + "The operation would result in removing the following protected packages: " +-msgstr "이 작업으로 인해 다음과 같은 보호 꾸러미가 제거됩니다. " ++msgstr "이 작업으로 인해 다음과 같은 보호 패키지가 제거됩니다. " + + #: libdnf/hy-iutil.cpp:181 + #, c-format +@@ -816,11 +820,11 @@ msgstr "잘못된 형식의 기반 모듈: %s" + + #: libdnf/module/ModulePackage.cpp:619 + msgid "Multiple module platforms provided by available packages\n" +-msgstr "사용 가능한 꾸러미로 제공되는 다중 모듈 기반\n" ++msgstr "사용 가능한 패키지로 제공되는 다중 모듈 기반\n" + + #: libdnf/module/ModulePackage.cpp:632 + msgid "Multiple module platforms provided by installed packages\n" +-msgstr "설치된 꾸러미로 제공되는 다중 모듈 기반\n" ++msgstr "설치된 패키지로 제공되는 다중 모듈 기반\n" + + #: libdnf/module/ModulePackage.cpp:659 + #, c-format +@@ -841,68 +845,66 @@ msgstr "유효한 기반(Platform) ID가 없습니다" + msgid "Cannot enable multiple streams for module '%s'" + msgstr "모듈 '%s’를 위해 다중 스트림을 활성화 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:346 ++#: libdnf/module/ModulePackageContainer.cpp:339 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "저장소 '%s: %s'와 기본 설정이 충돌합니다" + +-#: libdnf/module/ModulePackageContainer.cpp:917 ++#: libdnf/module/ModulePackageContainer.cpp:923 + msgid "Installing module profiles:\n" + msgstr "모듈 프로파일 설치:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:932 ++#: libdnf/module/ModulePackageContainer.cpp:938 + msgid "Disabling module profiles:\n" + msgstr "모듈 프로파일 비활성화:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:947 ++#: libdnf/module/ModulePackageContainer.cpp:953 + msgid "Enabling module streams:\n" + msgstr "모듈 스트림 활성화:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:961 ++#: libdnf/module/ModulePackageContainer.cpp:967 + msgid "Switching module streams:\n" + msgstr "모듈 스트림 전환:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:979 ++#: libdnf/module/ModulePackageContainer.cpp:985 + msgid "Disabling modules:\n" + msgstr "모듈 비활성화:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:990 ++#: libdnf/module/ModulePackageContainer.cpp:996 + msgid "Resetting modules:\n" + msgstr "모듈 재설정:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1704 ++#: libdnf/module/ModulePackageContainer.cpp:1710 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" + msgstr "'%s'에서 모듈식 Fail-Safe 자료를 적재 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1710 ++#: libdnf/module/ModulePackageContainer.cpp:1716 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" + msgstr "모듈 '%s:%s'에 대해 모듈식 Fail-Safe 자료를 적재 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1791 ++#: libdnf/module/ModulePackageContainer.cpp:1797 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" + msgstr "모듈식 Fail-Safe 데이터에 대한 “%s\" 디렉토리를 만들 수 없습니다: %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1807 ++#: libdnf/module/ModulePackageContainer.cpp:1813 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" + msgstr "모듈식 Fail Safe 자료를 '%s'에 저장 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1830 ++#: libdnf/module/ModulePackageContainer.cpp:1836 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" + msgstr "'%s'에서 모듈식 Fail Safe 자료를 제거 할 수 없습니다" + +-#: libdnf/module/ModulePackageContainer.cpp:1862 ++#: libdnf/module/ModulePackageContainer.cpp:1868 + #, c-format + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " + "disabled" +-msgstr "" +-"'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 " +-"되어 있기 때문에)" ++msgstr "'%s:%s'에 사용되지 않는 모듈을 적용할 수 없습니다(대상 모듈 '%s'가 비활성화 되어 있기 때문에)" + + #: libdnf/module/modulemd/ModuleMetadata.cpp:86 + #, c-format +@@ -974,10 +976,7 @@ msgid "" + "Using '==' operator in reldeps can result in an undefined behavior. It is " + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." +-msgstr "" +-"reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 " +-"연산자는 더 이상 사용되지 않으며, 향후 버전에서는 지원이 중단됩니다. 대신 " +-"'=' 연산자를 사용하세요." ++msgstr "reldeps에 '=='연산자를 사용하면 정의되지 않은 동작이 발생할 수 있습니다. 이 연산자는 더 이상 사용되지 않으며, 향후 버전에서는 지원이 중단됩니다. 대신 '=' 연산자를 사용하세요." + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -999,15 +998,12 @@ msgstr "repo '%s': 'basecachedir가 구성되어 있지 않습니다" + msgid "" + "Maximum download speed is lower than minimum. Please change configuration of " + "minrate or throttle" +-msgstr "" +-"최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주" +-"세요" ++msgstr "최대 내려받기 속도는 최저보다 낮습니다. 최저속도나 변환 환경구성을 변경해 주세요" + + #: libdnf/repo/Repo.cpp:548 + #, c-format + msgid "repo '%s': 'proxy_username' is set but not 'proxy_password'" +-msgstr "" +-"repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다" ++msgstr "repo '%s': 'proxy_username' 는 구성되어 있지만 'proxy_password'가 없습니다" + + #: libdnf/repo/Repo.cpp:550 + msgid "'proxy_username' is set but not 'proxy_password'" +@@ -1181,8 +1177,7 @@ msgstr "완료된 연결에서 연결 항목 최신화를 시도합니다" + + #: libdnf/transaction/Transformer.cpp:76 + msgid "Database Corrupted: no row 'version' in table 'config'" +-msgstr "" +-"데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다" ++msgstr "데이타베이스가 오염되었습니다: 테이블 'config'에 'version' 행이 없습니다" + + #: libdnf/transaction/Transformer.cpp:681 + msgid "Transformer: can't open history persist dir" +@@ -1205,6 +1200,112 @@ msgstr "TransactionItem 상태가 설정되지 않았습니다. %s" + msgid "Can't add console output to unsaved transaction" + msgstr "저장되지 않은 연결에 콘솔 출력을 추가 할 수 없습니다" + ++#~ msgid " does not belong to a distupgrade repository" ++#~ msgstr " distupgrade 저장소에 속하지 않습니다" ++ ++#~ msgid " has inferior architecture" ++#~ msgstr " 하위 구조" ++ ++#, c-format ++#~ msgid "package %s is filtered out by modular filtering" ++#~ msgstr "꾸러미 %s가 모듈식으로 걸러 제거됩니다" ++ ++#, c-format ++#~ msgid "package %s does not have a compatible architecture" ++#~ msgstr "꾸러미 %s에 호환 구조가 없습니다" ++ ++#, c-format ++#~ msgid "package %s is not installable" ++#~ msgstr "꾸러미 %s 가 설치 할 수 없습니다" ++ ++#, c-format ++#~ msgid "package %s is filtered out by exclude filtering" ++#~ msgstr "꾸러미 %s가 걸러지는 것에서 제외되었습니다" ++ ++#, c-format ++#~ msgid "nothing provides %s needed by %s" ++#~ msgstr "%s에 필요한 %s가 제공되지 않았습니다" ++ ++#, c-format ++#~ msgid "cannot install both %s and %s" ++#~ msgstr "%s 와 %s 모두 설치 할 수 없습니다" ++ ++#, c-format ++#~ msgid "package %s conflicts with %s provided by %s" ++#~ msgstr "꾸러미 %s은 %s에서 제공된 %s와 충돌합니다" ++ ++#, c-format ++#~ msgid "package %s obsoletes %s provided by %s" ++#~ msgstr "꾸러미 %s가 %s에의해 제공된 %s를 폐기합니다" ++ ++#, c-format ++#~ msgid "installed package %s obsoletes %s provided by %s" ++#~ msgstr "설치된 꾸러미 %s는 %s에 의해 %s 폐기되었습니다" ++ ++#, c-format ++#~ msgid "package %s implicitly obsoletes %s provided by %s" ++#~ msgstr "꾸러미 %s가 %s에 의해 %s가 암시적으로 폐기되었습니다" ++ ++#, c-format ++#~ msgid "package %s requires %s, but none of the providers can be installed" ++#~ msgstr "꾸러미 %s는 %s가 필요하지만, 공급자가 없어 설치 할 수 없습니다" ++ ++#, c-format ++#~ msgid "package %s conflicts with %s provided by itself" ++#~ msgstr "꾸러미 %s가 자체적으로 제공된 %s와 충돌합니다" ++ ++#, c-format ++#~ msgid "both package %s and %s obsolete %s" ++#~ msgstr "꾸러미 %s 와 %s 는 모두 %s에서 폐기되었습니다" ++ ++#, c-format ++#~ msgid "module %s is disabled" ++#~ msgstr "모듈 %s를 사용할 수 없습니다" ++ ++#, c-format ++#~ msgid "module %s does not have a compatible architecture" ++#~ msgstr "모듈 %s 에 호환되는 구조가 없습니다" ++ ++#, c-format ++#~ msgid "module %s is not installable" ++#~ msgstr "모듈 %s 를 설치 할 수 없습니다" ++ ++#, c-format ++#~ msgid "nothing provides %s needed by module %s" ++#~ msgstr "모듈 %s 에 필요한 %s 가 제공되지 않았습니다" ++ ++#, c-format ++#~ msgid "cannot install both modules %s and %s" ++#~ msgstr "모듈 %s 와 %s를 모두 설치 할 수 없습니다" ++ ++#, c-format ++#~ msgid "module %s conflicts with %s provided by %s" ++#~ msgstr "모듈 %s가 %s에 의해 제공된 %s와 충돌합니다" ++ ++#, c-format ++#~ msgid "module %s obsoletes %s provided by %s" ++#~ msgstr "모듈 %s가 %s에 의해 제공된 %s를 폐기하였습니다" ++ ++#, c-format ++#~ msgid "installed module %s obsoletes %s provided by %s" ++#~ msgstr "설치된 모듈 %s 가 %s의해 제공된 %s를 폐기합니다" ++ ++#, c-format ++#~ msgid "module %s implicitly obsoletes %s provided by %s" ++#~ msgstr "모듈 %s가 %s 에 의해 %s를 암시적으로 폐기되었습니다" ++ ++#, c-format ++#~ msgid "module %s requires %s, but none of the providers can be installed" ++#~ msgstr "모듈 %s 에 %s 가 필요하지만 공급 업체가 없어 설치 할 수 없습니다" ++ ++#, c-format ++#~ msgid "module %s conflicts with %s provided by itself" ++#~ msgstr "모듈 %s가 자체적으로 제공된 %s와 충돌합니다" ++ ++#, c-format ++#~ msgid "both module %s and %s obsolete %s" ++#~ msgstr "모듈 %s와 %s가 %s에서 폐기되었습니다" ++ + #~ msgid "failed to add solv" + #~ msgstr "solv를 추가하지 못했습니다" + +@@ -1220,5 +1321,3 @@ msgstr "저장되지 않은 연결에 콘솔 출력을 추가 할 수 없습니 + #~ msgid "repo_add_repomdxml/rpmmd() has failed." + #~ msgstr "repo_add_repomdxml/rpmmd() 실패하였습니다." + +-#~ msgid "Failed to parse module artifact NEVRA '%s'" +-#~ msgstr "모듈 artifact NERVE '%s' 구분 분석에 실패함" +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 6ca03861..ebdeb6ba 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -6,7 +6,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2023-02-28 09:24+0100\n" ++"POT-Creation-Date: 2023-08-29 13:26+0200\n" + "PO-Revision-Date: 2023-03-07 14:20+0000\n" + "Last-Translator: Transtats \n" + "Language-Team: Chinese (Simplified) ' command. After you " + "reset the module, you can install the other stream." +-msgstr "" +-"无法切换一个模块已启用的流。 \n" +-"推荐从模块中删除所有已安装的内容,使用 'microdnf module reset ' " +-"命令重置模块。在重置模块后就可以安装其他流。" ++msgstr "无法切换一个模块已启用的流。 \n" ++"推荐从模块中删除所有已安装的内容,使用 'microdnf module reset ' 命令重置模块。在重置模块后就可以安装其他流。" + + #: libdnf/dnf-goal.cpp:107 + msgid "Could not depsolve transaction; " +@@ -550,13 +548,15 @@ msgstr "Ill-formed Selector,在过滤器中有多个匹配的对象" + msgid "Ill-formed Selector used for the operation, incorrect comparison type" + msgstr "这个操作使用了 Ill-formed Selector,不正确的比较类型" + +-#: libdnf/goal/Goal.cpp:90 libdnf/goal/Goal.cpp:117 +-msgid " does not belong to a distupgrade repository" +-msgstr " 不属于 distupgrade 仓库" ++#: libdnf/goal/Goal.cpp:90 ++#, c-format ++msgid "%s from %s does not belong to a distupgrade repository" ++msgstr "来自 %s 的 %s 不属于 distupgrade 仓库" + +-#: libdnf/goal/Goal.cpp:91 libdnf/goal/Goal.cpp:118 +-msgid " has inferior architecture" +-msgstr " 有 inferior 架构" ++#: libdnf/goal/Goal.cpp:91 ++#, c-format ++msgid "%s from %s has inferior architecture" ++msgstr "来自 %s 的 %s 具有 inferior 架构" + + #: libdnf/goal/Goal.cpp:92 + msgid "problem with installed package " +@@ -597,68 +597,79 @@ msgstr "无法为该任务安装最佳候选" + + #: libdnf/goal/Goal.cpp:101 + #, c-format +-msgid "package %s is filtered out by modular filtering" +-msgstr "软件包 %s 被模块过滤过滤掉" ++msgid "package %s from %s is filtered out by modular filtering" ++msgstr "来自 %s 的 %s 被模块过滤过滤掉" + + #: libdnf/goal/Goal.cpp:102 + #, c-format +-msgid "package %s does not have a compatible architecture" +-msgstr "软件包 %s 没有兼容的架构" ++msgid "package %s from %s does not have a compatible architecture" ++msgstr "来自 %s 的软件包 %s 没有兼容的架构" + + #: libdnf/goal/Goal.cpp:103 + #, c-format +-msgid "package %s is not installable" +-msgstr "软件包 %s 不可安装" ++msgid "package %s from %s is not installable" ++msgstr "来自 %s 的软件包 %s 不可安装" + + #: libdnf/goal/Goal.cpp:104 + #, c-format +-msgid "package %s is filtered out by exclude filtering" +-msgstr "软件包 %s 被排除过滤过滤掉" ++msgid "package %s from %s is filtered out by exclude filtering" ++msgstr "来自 %s 的软件包 %s 被排除过滤过滤掉" + + #: libdnf/goal/Goal.cpp:105 + #, c-format +-msgid "nothing provides %s needed by %s" +-msgstr "没有提供 %s 所需要的 %s" ++msgid "nothing provides %s needed by %s from %s" ++msgstr "没有提供来自 %s 的 %s 所需的 %s" + + #: libdnf/goal/Goal.cpp:106 + #, c-format +-msgid "cannot install both %s and %s" +-msgstr "无法同时安装 %s 和 %s" ++msgid "cannot install both %s from %s and %s from %s" ++msgstr "不能同时安装来自 %s 的 %s 和来自 %s 的 %s" + + #: libdnf/goal/Goal.cpp:107 + #, c-format +-msgid "package %s conflicts with %s provided by %s" +-msgstr "软件包 %s 与 %s(由 %s 提供)冲突" ++msgid "package %s from %s conflicts with %s provided by %s from %s" ++msgstr "来自 %s 的软件包 %s 与来自 %s 的 %s 所提供的 %s 冲突" + + #: libdnf/goal/Goal.cpp:108 + #, c-format +-msgid "package %s obsoletes %s provided by %s" +-msgstr "软件包 %s 淘汰了 %s 提供的 %s" ++msgid "package %s from %s obsoletes %s provided by %s from %s" ++msgstr "来自 %s 的软件包 %s 淘汰了由来自 %s 的 %s 所提供的 %s" + + #: libdnf/goal/Goal.cpp:109 + #, c-format +-msgid "installed package %s obsoletes %s provided by %s" +-msgstr "已安装的软件包 %s 淘汰了 %s 提供的 %s" ++msgid "installed package %s obsoletes %s provided by %s from %s" ++msgstr "已安装的软件包 %s 淘汰了由来自 %s 的 %s 所提供的 %s" + + #: libdnf/goal/Goal.cpp:110 + #, c-format +-msgid "package %s implicitly obsoletes %s provided by %s" +-msgstr "软件包 %s 隐式地淘汰了 %s 提供的 %s" ++msgid "package %s from %s implicitly obsoletes %s provided by %s from %s" ++msgstr "来自 %s 的软件包 %s 隐式地淘汰了由来自 %s 的 %s 所提供的 %s" + + #: libdnf/goal/Goal.cpp:111 + #, c-format +-msgid "package %s requires %s, but none of the providers can be installed" +-msgstr "软件包 %s 需要 %s,但没有提供者可以被安装" ++msgid "" ++"package %s from %s requires %s, but none of the providers can be installed" ++msgstr "来自 %s 的软件包 %s 需要 %s,但没有可以被安装的提供程序" + + #: libdnf/goal/Goal.cpp:112 + #, c-format +-msgid "package %s conflicts with %s provided by itself" +-msgstr "软件包 %s 与自己提供的 %s 冲突" ++msgid "package %s from %s conflicts with %s provided by itself" ++msgstr "来自 %s 的软件包 %s 与来自自己提供的 %s 冲突" + + #: libdnf/goal/Goal.cpp:113 + #, c-format +-msgid "both package %s and %s obsolete %s" +-msgstr "软件包 %s 和 %s 同时取代了 %s" ++msgid "both package %s from %s and %s from %s obsolete %s" ++msgstr "来自 %s 的 %s 和来自 %s 的 %s 软件包都淘汰了 %s" ++ ++#: libdnf/goal/Goal.cpp:117 ++#, c-format ++msgid "%s from %s does not belong to a distupgrade repository" ++msgstr "来自 %s 的 %s 不属于 distupgrade 仓库" ++ ++#: libdnf/goal/Goal.cpp:118 ++#, c-format ++msgid "%s from %s has inferior architecture" ++msgstr "来自 %s 的 %s 具有 inferior 架构" + + #: libdnf/goal/Goal.cpp:119 + msgid "problem with installed module " +@@ -675,100 +686,101 @@ msgstr "无法为模块安装最佳更新候选 " + + #: libdnf/goal/Goal.cpp:128 libdnf/goal/Goal.cpp:131 + #, c-format +-msgid "module %s is disabled" +-msgstr "模块 %s 被禁用" ++msgid "module %s from %s is disabled" ++msgstr "来自 %s 的模块 %s 被禁用" + + #: libdnf/goal/Goal.cpp:129 + #, c-format +-msgid "module %s does not have a compatible architecture" +-msgstr "模块 %s 没有兼容的架构" ++msgid "module %s from %s does not have a compatible architecture" ++msgstr "来自 %s 的模块 %s 没有兼容的架构" + + #: libdnf/goal/Goal.cpp:130 + #, c-format +-msgid "module %s is not installable" +-msgstr "模块 %s 不可安装" ++msgid "module %s from %s is not installable" ++msgstr "来自 %s 的模块 %s 不可安装" + + #: libdnf/goal/Goal.cpp:132 + #, c-format +-msgid "nothing provides %s needed by module %s" +-msgstr "没有提供模块 %s 所需要的 %s" ++msgid "nothing provides %s needed by module %s from %s" ++msgstr "没有提供来自 %s 的模块 %s 所需要的 %s" + + #: libdnf/goal/Goal.cpp:133 + #, c-format +-msgid "cannot install both modules %s and %s" +-msgstr "不能同时安装模块 %s 和 %s" ++msgid "cannot install both modules %s from %s and %s from %s" ++msgstr "不能同时安装来自 %s 的 %s 和来自 %s 的 %s 模块" + + #: libdnf/goal/Goal.cpp:134 + #, c-format +-msgid "module %s conflicts with %s provided by %s" +-msgstr "模块 %s 与 %s 提供的 %s 冲突" ++msgid "module %s from %s conflicts with %s provided by %s from %s" ++msgstr "来自 %s 的模块 %s 与来自 %s 的 %s 所提供的 %s 冲突" + + #: libdnf/goal/Goal.cpp:135 + #, c-format +-msgid "module %s obsoletes %s provided by %s" +-msgstr "模块 %s 淘汰了 %s 提供的 %s" ++msgid "module %s from %s obsoletes %s provided by %s from %s" ++msgstr "来自 %s 的模块 %s 淘汰了由来自 %s 的 %s 所提供的 %s" + + #: libdnf/goal/Goal.cpp:136 + #, c-format +-msgid "installed module %s obsoletes %s provided by %s" +-msgstr "已安装的模块 %s 淘汰了 %s 提供的 %s" ++msgid "installed module %s obsoletes %s provided by %s from %s" ++msgstr "已安装的模块 %s 淘汰了由来自 %s 的 %s 所提供的 %s" + + #: libdnf/goal/Goal.cpp:137 + #, c-format +-msgid "module %s implicitly obsoletes %s provided by %s" +-msgstr "模块 %s 隐式地淘汰了 %s 提供的 %s" ++msgid "module %s from %s implicitly obsoletes %s provided by %s from %s" ++msgstr "来自 %s 的模块 %s 隐式地淘汰了由来自 %s 的 %s 所提供的 %s" + + #: libdnf/goal/Goal.cpp:138 + #, c-format +-msgid "module %s requires %s, but none of the providers can be installed" +-msgstr "模块 %s 需要 %s,但无法安装任何提供程序" ++msgid "" ++"module %s from %s requires %s, but none of the providers can be installed" ++msgstr "来自 %s 的模块 %s 需要 %s,但没有可以被安装的提供程序" + + #: libdnf/goal/Goal.cpp:139 + #, c-format +-msgid "module %s conflicts with %s provided by itself" +-msgstr "模块 %s 与自己提供的 %s 冲突" ++msgid "module %s from %s conflicts with %s provided by itself" ++msgstr "来自 %s 的模块 %s 与自己提供的 %s 冲突" + + #: libdnf/goal/Goal.cpp:140 + #, c-format +-msgid "both module %s and %s obsolete %s" +-msgstr "模块 %s 和 %s 同时取代了 %s" ++msgid "both module %s from %s and %s from %s obsolete %s" ++msgstr "来自 %s 的 %s 和来自 %s 的 %s 软件包都淘汰了 %s" + +-#: libdnf/goal/Goal.cpp:1157 ++#: libdnf/goal/Goal.cpp:1168 + msgid "no solver set" + msgstr "无 solver 设置" + +-#: libdnf/goal/Goal.cpp:1162 ++#: libdnf/goal/Goal.cpp:1173 + #, c-format + msgid "failed to make %s absolute" + msgstr "无法使 %s 绝对" + +-#: libdnf/goal/Goal.cpp:1169 ++#: libdnf/goal/Goal.cpp:1180 + #, c-format + msgid "failed writing debugdata to %1$s: %2$s" + msgstr "把 debugdata 写入到 %1$s 失败: %2$s" + +-#: libdnf/goal/Goal.cpp:1181 ++#: libdnf/goal/Goal.cpp:1192 + msgid "no solv in the goal" + msgstr "在目标中没有 solv" + +-#: libdnf/goal/Goal.cpp:1183 ++#: libdnf/goal/Goal.cpp:1194 + msgid "no solution, cannot remove protected package" + msgstr "没有解决方案,不能删除保护的软件包" + +-#: libdnf/goal/Goal.cpp:1186 ++#: libdnf/goal/Goal.cpp:1197 + msgid "no solution possible" + msgstr "没有可能的解决方案" + +-#: libdnf/goal/Goal.cpp:1312 ++#: libdnf/goal/Goal.cpp:1323 + msgid "Problem: " + msgstr "问题: " + +-#: libdnf/goal/Goal.cpp:1317 ++#: libdnf/goal/Goal.cpp:1328 + #, c-format + msgid "Problem %d: " + msgstr "问题 %d: " + +-#: libdnf/goal/Goal.cpp:1650 ++#: libdnf/goal/Goal.cpp:1661 + msgid "" + "The operation would result in removing the following protected packages: " + msgstr "这个操作将会导致删除以下受保护的软件包: " +@@ -830,61 +842,61 @@ msgstr "没有检测到有效的 Platform ID" + msgid "Cannot enable multiple streams for module '%s'" + msgstr "无法为模块 '%s' 启用多个流" + +-#: libdnf/module/ModulePackageContainer.cpp:346 ++#: libdnf/module/ModulePackageContainer.cpp:339 + #, c-format + msgid "Conflicting defaults with repo '%s': %s" + msgstr "默认设置与存储库 '%s' 冲突 : %s" + +-#: libdnf/module/ModulePackageContainer.cpp:917 ++#: libdnf/module/ModulePackageContainer.cpp:923 + msgid "Installing module profiles:\n" + msgstr "安装模块配置档案:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:932 ++#: libdnf/module/ModulePackageContainer.cpp:938 + msgid "Disabling module profiles:\n" + msgstr "禁用模块配置档案:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:947 ++#: libdnf/module/ModulePackageContainer.cpp:953 + msgid "Enabling module streams:\n" + msgstr "启用模块流:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:961 ++#: libdnf/module/ModulePackageContainer.cpp:967 + msgid "Switching module streams:\n" + msgstr "切换模块流:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:979 ++#: libdnf/module/ModulePackageContainer.cpp:985 + msgid "Disabling modules:\n" + msgstr "禁用模块:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:990 ++#: libdnf/module/ModulePackageContainer.cpp:996 + msgid "Resetting modules:\n" + msgstr "重置模块:\n" + +-#: libdnf/module/ModulePackageContainer.cpp:1704 ++#: libdnf/module/ModulePackageContainer.cpp:1710 + #, c-format + msgid "Unable to load modular Fail-Safe data at '%s'" + msgstr "无法加载位于 '%s' 的模块 Fail-Safe 数据" + +-#: libdnf/module/ModulePackageContainer.cpp:1710 ++#: libdnf/module/ModulePackageContainer.cpp:1716 + #, c-format + msgid "Unable to load modular Fail-Safe data for module '%s:%s'" + msgstr "无法为模块 '%s:%s' 加载模块 Fail-Safe 数据" + +-#: libdnf/module/ModulePackageContainer.cpp:1791 ++#: libdnf/module/ModulePackageContainer.cpp:1797 + #, c-format + msgid "Unable to create directory \"%s\" for modular Fail Safe data: %s" + msgstr "无法为模块 Fail Safe 数据创建目录 \"%s\" : %s" + +-#: libdnf/module/ModulePackageContainer.cpp:1807 ++#: libdnf/module/ModulePackageContainer.cpp:1813 + #, c-format + msgid "Unable to save a modular Fail Safe data to '%s'" + msgstr "无法把模块 Fail Safe 数据保存到 '%s'" + +-#: libdnf/module/ModulePackageContainer.cpp:1830 ++#: libdnf/module/ModulePackageContainer.cpp:1836 + #, c-format + msgid "Unable to remove a modular Fail Safe data in '%s'" + msgstr "无法删除 '%s' 中的模块 Fail Safe 数据" + +-#: libdnf/module/ModulePackageContainer.cpp:1862 ++#: libdnf/module/ModulePackageContainer.cpp:1868 + #, c-format + msgid "" + "Unable to apply modular obsoletes to '%s:%s' because target module '%s' is " +@@ -961,9 +973,7 @@ msgid "" + "Using '==' operator in reldeps can result in an undefined behavior. It is " + "deprecated and the support will be dropped in future versions. Use '=' " + "operator instead." +-msgstr "" +-"在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并" +-"且在未来的版本中会取消对它的支持。请使用 '=' 操作符代替。" ++msgstr "在 reldeps 中使用 '==' 操作符可能导致一个未定义的行为。这个操作符已被废弃,并且在未来的版本中会取消对它的支持。请使用 '=' 操作符代替。" + + #: libdnf/repo/Repo.cpp:321 + #, c-format +@@ -1187,6 +1197,112 @@ msgstr "TransactionItem 状态没有设置:%s" + msgid "Can't add console output to unsaved transaction" + msgstr "无法向未保存的事务中添加控制台输出" + ++#~ msgid " does not belong to a distupgrade repository" ++#~ msgstr " 不属于 distupgrade 仓库" ++ ++#~ msgid " has inferior architecture" ++#~ msgstr " 有 inferior 架构" ++ ++#, c-format ++#~ msgid "package %s is filtered out by modular filtering" ++#~ msgstr "软件包 %s 被模块过滤过滤掉" ++ ++#, c-format ++#~ msgid "package %s does not have a compatible architecture" ++#~ msgstr "软件包 %s 没有兼容的架构" ++ ++#, c-format ++#~ msgid "package %s is not installable" ++#~ msgstr "软件包 %s 不可安装" ++ ++#, c-format ++#~ msgid "package %s is filtered out by exclude filtering" ++#~ msgstr "软件包 %s 被排除过滤过滤掉" ++ ++#, c-format ++#~ msgid "nothing provides %s needed by %s" ++#~ msgstr "没有提供 %s 所需要的 %s" ++ ++#, c-format ++#~ msgid "cannot install both %s and %s" ++#~ msgstr "无法同时安装 %s 和 %s" ++ ++#, c-format ++#~ msgid "package %s conflicts with %s provided by %s" ++#~ msgstr "软件包 %s 与 %s(由 %s 提供)冲突" ++ ++#, c-format ++#~ msgid "package %s obsoletes %s provided by %s" ++#~ msgstr "软件包 %s 淘汰了 %s 提供的 %s" ++ ++#, c-format ++#~ msgid "installed package %s obsoletes %s provided by %s" ++#~ msgstr "已安装的软件包 %s 淘汰了 %s 提供的 %s" ++ ++#, c-format ++#~ msgid "package %s implicitly obsoletes %s provided by %s" ++#~ msgstr "软件包 %s 隐式地淘汰了 %s 提供的 %s" ++ ++#, c-format ++#~ msgid "package %s requires %s, but none of the providers can be installed" ++#~ msgstr "软件包 %s 需要 %s,但没有提供者可以被安装" ++ ++#, c-format ++#~ msgid "package %s conflicts with %s provided by itself" ++#~ msgstr "软件包 %s 与自己提供的 %s 冲突" ++ ++#, c-format ++#~ msgid "both package %s and %s obsolete %s" ++#~ msgstr "软件包 %s 和 %s 同时取代了 %s" ++ ++#, c-format ++#~ msgid "module %s is disabled" ++#~ msgstr "模块 %s 被禁用" ++ ++#, c-format ++#~ msgid "module %s does not have a compatible architecture" ++#~ msgstr "模块 %s 没有兼容的架构" ++ ++#, c-format ++#~ msgid "module %s is not installable" ++#~ msgstr "模块 %s 不可安装" ++ ++#, c-format ++#~ msgid "nothing provides %s needed by module %s" ++#~ msgstr "没有提供模块 %s 所需要的 %s" ++ ++#, c-format ++#~ msgid "cannot install both modules %s and %s" ++#~ msgstr "不能同时安装模块 %s 和 %s" ++ ++#, c-format ++#~ msgid "module %s conflicts with %s provided by %s" ++#~ msgstr "模块 %s 与 %s 提供的 %s 冲突" ++ ++#, c-format ++#~ msgid "module %s obsoletes %s provided by %s" ++#~ msgstr "模块 %s 淘汰了 %s 提供的 %s" ++ ++#, c-format ++#~ msgid "installed module %s obsoletes %s provided by %s" ++#~ msgstr "已安装的模块 %s 淘汰了 %s 提供的 %s" ++ ++#, c-format ++#~ msgid "module %s implicitly obsoletes %s provided by %s" ++#~ msgstr "模块 %s 隐式地淘汰了 %s 提供的 %s" ++ ++#, c-format ++#~ msgid "module %s requires %s, but none of the providers can be installed" ++#~ msgstr "模块 %s 需要 %s,但无法安装任何提供程序" ++ ++#, c-format ++#~ msgid "module %s conflicts with %s provided by itself" ++#~ msgstr "模块 %s 与自己提供的 %s 冲突" ++ ++#, c-format ++#~ msgid "both module %s and %s obsolete %s" ++#~ msgstr "模块 %s 和 %s 同时取代了 %s" ++ + #~ msgid "failed to add solv" + #~ msgstr "添加 solv 失败" + +@@ -1205,5 +1321,3 @@ msgstr "无法向未保存的事务中添加控制台输出" + #~ msgid "Failed to parse module artifact NEVRA '%s'" + #~ msgstr "无法解析模块工件 NEVRA '%s'" + +-#~ msgid "Bad id for repo: %s, byte = %s %d" +-#~ msgstr "repo 的 id 无效: %s, byte = %s %d" +-- +2.41.0 + diff --git a/SPECS/libdnf.spec b/SPECS/libdnf.spec new file mode 100644 index 0000000..20a5239 --- /dev/null +++ b/SPECS/libdnf.spec @@ -0,0 +1,977 @@ +%global libsolv_version 0.7.21 +%global libmodulemd_version 2.13.0 +%global librepo_version 1.13.1 +%global dnf_conflict 4.10.0-4 +%global swig_version 3.0.12 +%global libdnf_major_version 0 +%global libdnf_minor_version 69 +%global libdnf_micro_version 0 + +%define __cmake_in_source_build 1 + +# set sphinx package name according to distro +%global requires_python2_sphinx python2-sphinx +%global requires_python3_sphinx python3-sphinx +%if 0%{?rhel} == 7 + %global requires_python2_sphinx python-sphinx +%endif +%if 0%{?suse_version} + %global requires_python2_sphinx python2-Sphinx + %global requires_python3_sphinx python3-Sphinx +%endif + +%bcond_with valgrind + +# Do not build bindings for python3 for RHEL <= 7 +%if 0%{?rhel} && 0%{?rhel} <= 7 +%bcond_with python3 +%else +%bcond_without python3 +%endif + +%if 0%{?rhel} > 7 || 0%{?fedora} > 29 +# Disable python2 build by default +%bcond_with python2 +%else +%bcond_without python2 +%endif + +%if 0%{?rhel} && ! 0%{?centos} +%bcond_without rhsm +%else +%bcond_with rhsm +%endif + +%if 0%{?rhel} +%bcond_with zchunk +%else +%bcond_without zchunk +%endif + +%bcond_with sanitizers + +%global _cmake_opts \\\ + -DENABLE_RHSM_SUPPORT=%{?with_rhsm:ON}%{!?with_rhsm:OFF} \\\ + %{nil} + +Name: libdnf +Version: %{libdnf_major_version}.%{libdnf_minor_version}.%{libdnf_micro_version} +Release: 6%{?dist} +Summary: Library providing simplified C and Python API to libsolv +License: LGPLv2+ +URL: https://github.com/rpm-software-management/libdnf +Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz +Patch1: 0001-Allow-change-of-arch-during-security-updates-with-no.patch +Patch2: 0002-Add-repoid-to-solver-error-messages.patch +Patch3: 0003-Update-translations-RHEL-9-2.patch +Patch4: 0004-Update-translations-RHEL-9.3.patch + + +BuildRequires: cmake +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: libsolv-devel >= %{libsolv_version} +BuildRequires: pkgconfig(librepo) >= %{librepo_version} +BuildRequires: pkgconfig(check) +%if %{with valgrind} +BuildRequires: valgrind +%endif +BuildRequires: pkgconfig(gio-unix-2.0) >= 2.46.0 +BuildRequires: pkgconfig(gtk-doc) +BuildRequires: rpm-devel >= 4.15.0 +%if %{with rhsm} +BuildRequires: pkgconfig(librhsm) >= 0.0.3 +%endif +%if %{with zchunk} +BuildRequires: pkgconfig(zck) >= 0.9.11 +%endif +BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(json-c) +BuildRequires: pkgconfig(cppunit) +BuildRequires: pkgconfig(modulemd-2.0) >= %{libmodulemd_version} +BuildRequires: pkgconfig(smartcols) +BuildRequires: gettext +BuildRequires: gpgme-devel + +%if %{with sanitizers} +BuildRequires: libasan +BuildRequires: liblsan +BuildRequires: libubsan +%endif + +Requires: libmodulemd%{?_isa} >= %{libmodulemd_version} +Requires: libsolv%{?_isa} >= %{libsolv_version} +Requires: librepo%{?_isa} >= %{librepo_version} + +%if %{without python2} +# Obsoleted from here so we can track the fast growing version easily. +# We intentionally only obsolete and not provide, this is a broken upgrade +# prevention, not providing the removed functionality. +Obsoletes: python2-%{name} < %{version}-%{release} +Obsoletes: python2-hawkey < %{version}-%{release} +Obsoletes: python2-hawkey-debuginfo < %{version}-%{release} +Obsoletes: python2-libdnf-debuginfo < %{version}-%{release} +%endif + +%description +A Library providing simplified C and Python API to libsolv. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libsolv-devel%{?_isa} >= %{libsolv_version} + +%description devel +Development files for %{name}. + +%if %{with python2} +%package -n python2-%{name} +%{?python_provide:%python_provide python2-%{name}} +Summary: Python 2 bindings for the libdnf library. +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: python2-devel +%if !0%{?mageia} +BuildRequires: %{requires_python2_sphinx} +%endif +%if 0%{?rhel} == 7 +BuildRequires: swig3 >= %{swig_version} +%else +BuildRequires: swig >= %{swig_version} +%endif + +%description -n python2-%{name} +Python 2 bindings for the libdnf library. +%endif +# endif with python2 + +%if %{with python3} +%package -n python3-%{name} +%{?python_provide:%python_provide python3-%{name}} +Summary: Python 3 bindings for the libdnf library. +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: python3-devel +BuildRequires: %{requires_python3_sphinx} +BuildRequires: swig >= %{swig_version} + +%description -n python3-%{name} +Python 3 bindings for the libdnf library. +%endif + +%if %{with python2} +%package -n python2-hawkey +Summary: Python 2 bindings for the hawkey library +%{?python_provide:%python_provide python2-hawkey} +BuildRequires: python2-devel +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python2-%{name} = %{version}-%{release} +# Fix problem with hawkey - dnf version incompatibility +# Can be deleted for distros where only python2-dnf >= 2.0.0 +Conflicts: python2-dnf < %{dnf_conflict} +Conflicts: python-dnf < %{dnf_conflict} + +%description -n python2-hawkey +Python 2 bindings for the hawkey library. +%endif +# endif with python2 + +%if %{with python3} +%package -n python3-hawkey +Summary: Python 3 bindings for the hawkey library +%{?python_provide:%python_provide python3-hawkey} +BuildRequires: python3-devel +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python3-%{name} = %{version}-%{release} +# Fix problem with hawkey - dnf version incompatibility +# Can be deleted for distros where only python3-dnf >= 2.0.0 +Conflicts: python3-dnf < %{dnf_conflict} +# Obsoletes F27 packages +Obsoletes: platform-python-hawkey < %{version}-%{release} + +%description -n python3-hawkey +Python 3 bindings for the hawkey library. +%endif + +%prep +%autosetup -p1 +%if %{with python2} +mkdir build-py2 +%endif +%if %{with python3} +mkdir build-py3 +%endif + +%build +%if %{with python2} +pushd build-py2 + %if 0%{?mageia} || 0%{?suse_version} + cd .. + %define _cmake_builddir build-py2 + %define __builddir build-py2 + %endif + %cmake -DPYTHON_DESIRED:FILEPATH=%{__python2} -DWITH_MAN=OFF ../ %{!?with_zchunk:-DWITH_ZCHUNK=OFF} %{!?with_valgrind:-DDISABLE_VALGRIND=1} %{_cmake_opts} -DLIBDNF_MAJOR_VERSION=%{libdnf_major_version} -DLIBDNF_MINOR_VERSION=%{libdnf_minor_version} -DLIBDNF_MICRO_VERSION=%{libdnf_micro_version} \ + -DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF} + %make_build +popd +%endif +# endif with python2 + +%if %{with python3} +pushd build-py3 + %if 0%{?mageia} || 0%{?suse_version} + cd .. + %define _cmake_builddir build-py3 + %define __builddir build-py3 + %endif + %cmake -DPYTHON_DESIRED:FILEPATH=%{__python3} -DWITH_GIR=0 -DWITH_MAN=0 -Dgtkdoc=0 ../ %{!?with_zchunk:-DWITH_ZCHUNK=OFF} %{!?with_valgrind:-DDISABLE_VALGRIND=1} %{_cmake_opts} -DLIBDNF_MAJOR_VERSION=%{libdnf_major_version} -DLIBDNF_MINOR_VERSION=%{libdnf_minor_version} -DLIBDNF_MICRO_VERSION=%{libdnf_micro_version} \ + -DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF} + %make_build +popd +%endif + +%check +%if %{with python2} +pushd build-py2 + make ARGS="-V" test +popd +%endif +%if %{with python3} +# If we didn't run the general tests yet, do it now. +%if %{without python2} +pushd build-py3 + make ARGS="-V" test +popd +%else +# Otherwise, run just the Python tests, not all of +# them, since we have coverage of the core from the +# first build +pushd build-py3/python/hawkey/tests + make ARGS="-V" test +popd +%endif +%endif + +%install +%if %{with python2} +pushd build-py2 + %make_install +popd +%endif +%if %{with python3} +pushd build-py3 + %make_install +popd +%endif + +%find_lang %{name} + +%if (0%{?rhel} && 0%{?rhel} <= 7) || 0%{?suse_version} +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig +%else +%ldconfig_scriptlets +%endif + +%files -f %{name}.lang +%license COPYING +%doc README.md AUTHORS +%{_libdir}/%{name}.so.* +%dir %{_libdir}/libdnf/ +%dir %{_libdir}/libdnf/plugins/ +%{_libdir}/libdnf/plugins/README +%if %{with sanitizers} +%{_sysconfdir}/profile.d/dnf-sanitizers.sh +%endif + +%files devel +%doc %{_datadir}/gtk-doc/html/%{name}/ +%{_libdir}/%{name}.so +%{_libdir}/pkgconfig/%{name}.pc +%{_includedir}/%{name}/ + +%if %{with python2} +%files -n python2-%{name} +%{python2_sitearch}/%{name}/ +%endif + +%if %{with python3} +%files -n python3-%{name} +%{python3_sitearch}/%{name}/ +%endif + +%if %{with python2} +%files -n python2-hawkey +%{python2_sitearch}/hawkey/ +%endif + +%if %{with python3} +%files -n python3-hawkey +%{python3_sitearch}/hawkey/ +%endif + +%changelog +* Fri Sep 08 2023 Marek Blaha - 0.69.0-6 +- Update translations + +* Mon May 22 2023 Nicola Sella - 0.69.0-5 +- Fix specfile and bump release + +* Mon May 22 2023 Nicola Sella - 0.69.0-4 +- Update translations + +* Sun May 14 2023 Jaroslav Rohel - 0.69.0-3 +- Add repoid to solver error messages (RhBug:2179409,2179413) + +* Mon Oct 31 2022 Nicola Sella - 0.69.0-2 +- Allow change of arch during security updates with noarch + +* Thu Sep 22 2022 Lukas Hrazky - 0.69.0-1 +- Update to 0.69.0 +- Expose librepo max_downloads_per_mirror configuration +- Fix listing a repository without cpeid (RhBug:2066334) +- Gracefully handle failure to open repo primary file +- context: Fix doc dnf_context_install/remove/update/distrosync +- context: dnf_context_remove accepts `` as dnf, unify code +- dnf-context: Disconnect signal handler before dropping file monitor ref + +* Thu Sep 15 2022 Marek Blaha - 0.67.0-3 +- Update translations + +* Thu Jul 21 2022 Lukas Hrazky - 0.67.0-2 +- Add obsoletes to filtering for advisory candidates +- advisory upgrade: filter out advPkgs with different arch + +* Thu Apr 28 2022 Pavla Kratochvilova - 0.67.0-1 +- Fix handling transaction id in resolveTransactionItemReason (RhBug:2010259,2053014) +- Remove deprecated assertions (RhBug:2027383) +- Skip rich deps for autodetection of unmet dependencies (RhBug:2033130, 2048394) +- Increase required rpm version since we use `rpmdbCookie()` +- Add 'loongarch' support +- Use dnf solv userdata to check versions and checksum (RhBug:2027445) +- context: Substitute all repository config options (RhBug:2076853) + +* Mon Feb 07 2022 Pavla Kratochvilova - 0.65.0-3 +- Use `rpmdbCookie` from librpm, remove `hawkey.Sack._rpmdb_version` + +* Thu Dec 09 2021 Pavla Kratochvilova - 0.65.0-2 +- Rebuilt with json-c-0.14-11.el9 (RhBug:2023320) + +* Mon Oct 25 2021 Pavla Kratochvilova - 0.65.0-1 +- Update to 0.65.0 +- Implement logic for demodularization of modular rpms (RhBug:1805260) +- DnfContext: fix handling of default module profiles +- ModuleMetadata: gracefully handle modules with no defaults +- Remove failovermethod config option (RhBug:1961083) +- Add support for excluding packages to be installed as weak dependencies +- Add support for autodetecting packages to be excluded from being installed as weak dependencies +- Turn off strict validation of modulemd documents (RhBug:2004853,2007166,2007167) + +* Mon Aug 09 2021 Mohan Boddu - 0.63.0-4 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Tue Jul 27 2021 Pavla Kratochvilova - 0.63.0-3 +- Fix some covscan warnings + +* Wed Jun 16 2021 Mohan Boddu - 0.63.0-2 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Wed Jun 02 2021 Pavla Kratochvilova - 0.63.0-1 +- Fix: Fully set ssl in newHandle function +- [conf] Add options for working with certificates used with proxy +- lock: Switch return-if-fail to assert to quiet gcc -fanalyzer +- Modify module NSVCA parsing - context definition (RhBug:1926771) +- [context] Fix: dnf_package_is_installonly (RhBug:1928056) +- Add getApplicablePackages to advisory and isApplicable to advisorymodule +- Keep isAdvisoryApplicable to preserve API +- Run ModulePackageContainerTest tests in tmpdir, merge interdependent +- [context] Support config file option "proxy_auth_method", defaults "any" +- Hardening: add signature check with rpmcliVerifySignatures (RhBug:1932079) +- Do not allow 1 as installonly_limit value (RhBug:1926261) +- Add a config option to check TLS certificate revocation status (using OCSP stapling), defaults to false (RhBug:1814383) +- ModuleProfile: add isDefault() +- ModulePackage: add getDefaultProfile() +- Add new dnf_context_module_install() C API +- Fix a crash when [media] section in .treeinfo is missing for bootable media (RhBug:1946024) + +* Fri Apr 16 2021 Mohan Boddu - 0.60.0-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Mar 02 2021 Nicola Sella - 0.60.0-1 +- Update to 0.60.0 +- Fix repo.fresh() implementation +- build-sys: Add ENABLE_STATIC option +- Fix: Fully set ssl in newHandle function +- [conf] Add options for working with certificates used with proxy +- Apply proxy certificate options +- lock: Switch return-if-fail to assert to quiet gcc -fanalyzer +- build-sys: Clean up message about Python bindings +- Modify module NSVCA parsing - context definition (RhBug:1926771) +- [context] Fix: dnf_package_is_installonly (RhBug:1928056) +- Fix problematic language +- Add getApplicablePackages to advisory and isApplicable to advisorymodule +- Keep isAdvisoryApplicable to preserve API +- Run ModulePackageContainerTest tests in tmpdir, merge interdependent +- [context] Support config file option "proxy_auth_method", defaults "any" +- Support main config file option "installonlypkgs". +- Support main config file option "protected_packages". +- Properly handle multiple collections in updateinfo.xml (RhBug:1804234) + +* Thu Jan 28 2021 Nicola Sella - 0.58.0-1 +- Update to 0.58.0 +- Option: Add reset() method +- Add OptionBinds::getOption() method +- [context] Add dnf_repo_conf_from_gkeyfile() and dnf_repo_conf_reset() +- [context] Add support for options: minrate, throttle, bandwidth, timeout +- [context] Remove g_key_file_get_string() from dnf_repo_set_keyfile_data() +- Allow loading ext metadata even if only cache (solv) is present +- Add ASAN_OPTIONS for test_libdnf_main +- [context,API] Functions for accessing main/global configuration options +- [context,API] Function for adding setopt +- Add getter for modular obsoletes from ModuleMetadata +- Add ModulePackage.getStaticContext() and getRequires() +- Add compatible layer for MdDocuments v2 +- Fix modular queries with the new solver +- Improve formatting of error string for modules +- Change mechanism of module conflicts +- Fix load/update FailSafe + +* Tue Jan 26 2021 Fedora Release Engineering - 0.55.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Dec 02 2020 Nicola Sella - 0.55.2-1 +- Update to 0.55.2 +- Improve performance of query installed() and available() +- Swdb: Add a method to get the current transaction +- [modules] Add special handling for src artifacts (RhBug:1809314) +- Better msgs if "basecachedir" or "proxy_password" isn't set (RhBug:1888946) +- Add new options module_stream_switch +- Support allow_vendor_change setting in dnf context API +- Fix couple of sanitizer builds in specfile + +* Mon Nov 23 2020 Nicola Sella - 0.55.0-1 +- Update to 0.55.0 +- Add vendor to dnf API (RhBug:1876561) +- Add formatting function for solver error +- Add error types in ModulePackageContainer +- Implement module enable for context part +- Improve string formatting for translation +- Remove redundant printf and change logging info to notice (RhBug:1827424) +- Add allow_vendor_change option (RhBug:1788371) (RhBug:1788371) + +* Thu Oct 29 2020 Adam Williamson - 0.54.2-3 +- Rebuild to keep NVR ahead of Fedora 32 + +* Tue Oct 13 2020 Ales Matej - 0.54.2-2 +- Increase needed conflicting dnf version + +* Wed Oct 07 2020 Nicola Sella - 0.54.2-1 +- Update to 0.54.2 +- history: Fix dnf history rollback when a package was removed (RhBug:1683134) +- Add support for HY_GT, HY_LT in query nevra_strict +- Fix parsing empty lines in config files +- Accept '==' as an operator in reldeps (RhBug:1847946) +- Add log file level main config option (RhBug:1802074) +- Add protect_running_kernel configuration option (RhBug:1698145) +- Context part of libdnf cannot assume zchunk is on (RhBug:1851841,1779104) +- Fix memory leak of resultingModuleIndex and handle g_object refs +- Redirect librepo logs to libdnf logs with different source +- Introduce changelog metadata in commit messages +- Add hy_goal_lock +- Update Copr targets for packit and use alias +- Enum/String conversions for Transaction Store/Replay +- utils: Add a method to decode URLs +- Unify hawkey.log line format with the rest of the logs + +* Mon Aug 10 2020 Nicola Sella - 0.48.0-4 +- spec: Fix building with new cmake macros +- tests: Fix incorrect usage of the fail_unless macros + +* Sat Aug 01 2020 Fedora Release Engineering - 0.48.0-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 0.48.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jun 02 2020 Nicola Sella - 0.48.0-1 +- Update to 0.48.0 +- swdb: Catch only SQLite3 exceptions and simplify the messages +- MergedTransaction list multiple comments (RhBug:1773679) +- Modify CMake to pull *.po files from weblate +- Optimize DependencyContainer creation from an existing queue +- fix a memory leak in dnf_package_get_requires() +- Fix memory leaks on g_build_filename() +- Fix memory leak in dnf_context_setup() +- Add `hy_goal_favor` and `hy_goal_disfavor` +- Define a cleanup function for `DnfPackageSet` +- dnf-repo: fix dnf_repo_get_public_keys double-free +- Do not cache RPMDB +- Use single-quotes around string literals used in SQL statements +- SQLite3: Do not close the database if it wasn't opened (RhBug:1761976) +- Don't create a new history DB connection for in-memory DB +- transaction/Swdb: Use a single logger variable in constructor +- utils: Add a safe version of pathExists() +- swdb: Handle the case when pathExists() fails on e.g. permission +- Repo: prepend "file://" if a local path is used as baseurl +- Move urlEncode() to utils +- utils: Add 'exclude' argument to urlEncode() +- Encode package URL for downloading through librepo (RhBug:1817130) +- Replace std::runtime_error with libdnf::RepoError +- Fixes and error handling improvements of the File class +- [context] Use ConfigRepo for gpgkey and baseurl (RhBug:1807864) +- [context] support "priority" option in .repo config file (RhBug:1797265) + +* Fri May 22 2020 Miro Hrončok - 0.47.0-3 +- Rebuilt for Python 3.9 + +* Tue Apr 21 2020 Björn Esser - 0.47.0-2 +- Rebuild (json-c) + +* Wed Apr 01 2020 Ales Matej - 0.47.0-1 +- Update to 0.47.0 +- Add prereq_ignoreinst & regular_requires properties for pkg (RhBug:1543449) +- Reset active modules when no module enabled or default (RhBug:1767351) +- Add comment option to transaction (RhBug:1773679) +- Failing to get module defauls is a recoverable error +- Baseurl is not exclusive with mirrorlist/metalink (RhBug: 1775184) +- Add new function to reset all modules in C API (dnf_context_reset_all_modules) +- [context] Fix to preserve additionalMetadata content (RhBug:1808677) +- Fix filtering of DepSolvables with source rpms (RhBug:1812596) +- Add setter for running kernel protection setting +- Handle situation when an unprivileged user cannot create history database (RhBug:1634385) +- Add query filter: latest by priority +- Add DNF_NO_PROTECTED flag to allow empty list of protected packages +- Remove 'dim' option from terminal colors to make them more readable (RhBug:1807774,1814563) +- [context] Error when main config file can't be opened (RhBug:1794864) +- [context] Add function function dnf_context_is_set_config_file_path + +* Mon Feb 24 2020 Ales Matej - 0.45.0-1 +- Config options: only first empty value clears existing (RhBug:1788154) +- Make parsing of reldeps more strict (RhBug:1788107) +- [context] Support repositories defined in main configuration file +- Fix filtering packages by advisory when more versions and arches are available (RhBug:1770125) +- Add expanding solvable provides for dependency matching (RhBug:1534123) +- DnfRepo: fix module_hotfixes keyfile priority level +- Add custom exceptions to libdnf interface +- [conf] Set useful default colors when color is enabled +- Port to libmodulemd-2 API (RhBug:1693683) + +* Tue Feb 04 2020 Adam Williamson - 0.43.1-3 +- [context] Create new repo instead of reusing old one (RhBug:1795004) + +* Wed Jan 29 2020 Fedora Release Engineering - 0.43.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 15 2020 Ales Matej - 0.43.1-1 +- Allow excluding packages with "excludepkgs" and globs +- Add two new query filters: obsoletes_by_priority, upgrades_by_priority +- [context] Use installonly_limit from global config (RhBug:1256108) +- [context] Add API to get/set "install_weak_deps" +- [context] Add wildcard support for repo_id in dnf_context_repo_enable/disable (RhBug:1781420) +- [context] Adds support for includepkgs in repository configuration. +- [context] Adds support for excludepkgs, exclude, includepkgs, and disable_excludes in main configuration. +- [context] Added function dnf_transaction_set_dont_solve_goal +- [context] Added functions dnf_context_get/set_config_file_path +- [context] Respect "plugins" global conf value +- [context] Add API to disable/enable plugins + +* Fri Nov 29 2019 Ales Matej - 0.39.1-1 +- Update to 0.39.1 +- Report reason how package was excluded (RhBug:1649754) +- Additional Arm detection improvements (RhBug:1691430) +- Set skip_if_unavailable for media repos to skip their update (RhBug:1716067) +- Add support of xml:base for remote and local url in context (RhBug:1734350, 1717865) +- Handle NoModuleException in dnf_context_reset_modules (RhBug:1767453) +- Add missing C function hy_nevra_free() for HyNevra deallocation +- Context part of libdnf now uses metadata_expire from global configuration + +* Wed Nov 13 2019 Pavla Kratochvilova - 0.37.2-2 +- Fix accidental code removal from hy_subject_get_best_solution() + +* Wed Nov 06 2019 Pavla Kratochvilova - 0.37.2-1 +- Update to 0.37.2 +- Use more descriptive message when failed to retrieve GPG key (RhBug:1605117) +- Add removeMetadataTypeFromDownload function to the API +- Context part of libdnf can now read vars (urlvars) from dirs and environment +- Throw exception immediately if file cannot be opened +- Add test when there is no primary metadata in compatible format (RhBug:1744960) +- Various improvements to countme features +- Don't abort on rpmdb checksum calculation failure +- Enable module dependency trees when using set_modules_enabled_by_pkgset() (RhBug:1762314) +- New method "Query::filterSubject()", replaces Solution::getBestSolution() +- The Solution class was removed +- Add query argument into get_best_query and get_best_solution +- Add module reset function into dnf_context +- Add method to get all repository metadata locations +- Catch NoModuleException in case of not existent value was used in persistor (RhBug:1761773) + +* Wed Oct 23 2019 Peter Robinson 0.35.5-5 +- Fixes for some issues on Arm platforms (rhbz 1691430) + +* Tue Oct 22 2019 Ales Matej - 0.35.5-4 +- Fix leaking log handlers in Sack that can cause a crash (RhBug:1758737) + +* Mon Oct 14 2019 Jaroslav Mracek - 0.35.5-3 +- Add POOL_FLAG_WHATPROVIDESWITHDISABLED flag into pool. +- Resolves: 1737469 + +* Tue Oct 01 2019 Ales Matej - 0.35.5-2 +- Fix dnf-conflict version + +* Tue Oct 01 2019 Ales Matej - 0.35.5-1 +- Update to 0.35.5 +- Fix crash in PackageKit (RhBug:1636803) +- Do not create @System.solv files (RhBug:1707995) +- Set LRO_CACHEDIR so zchunk works again (RhBug:1739867) +- Don't reinstall modified packages with the same NEVRA (RhBug:1644241) +- Fix bug when moving temporary repository metadata after download (RhBug:1700341) +- Improve detection of extras packages by comparing (name, arch) pair instead of full NEVRA (RhBuh:1684517) +- Improve handling multilib packages in the history command (RhBug:1728637) +- Repo download: use full error description into the exception text (RhBug:1741442) +- Properly close hawkey.log (RhBug:1594016) +- Fix dnf updateinfo --update to not list advisories for packages updatable only from non-enabled modules +- Apply modular filtering by package name (RhBug:1702729) +- Fully enable the modular fail safe mechanism (RhBug:1616167) + +* Sat Sep 14 2019 Jonathan Dieter - 0.35.3-5 +- Set LRO_CACHEDIR so zchunk works again + +* Wed Sep 11 2019 Jaroslav Mracek - 0.35.3-4 +- Backport patch to fix reinstalling packages with a different buildtime - part II + +* Tue Sep 10 2019 Jaroslav Mracek - 0.35.3-3 +- Backport patch to fix reinstalling packages with a different buildtime + +* Thu Aug 15 2019 Miro Hrončok - 0.35.3-2 +- Rebuilt for Python 3.8 + +* Tue Aug 13 2019 Pavla Kratochvilova - 0.35.3-1 +- Update to 0.35.3 +- Make libdnf own its plugin directory (RhBug:1714265) +- Don't disable nonexistent but required repositories (RhBug:1689331) +- Set priority of dnf.conf.d drop-ins +- Fix toString() to not insert [] (RhBug:1584442) +- Ignore trailing blank lines in config (RhBug:1722493) +- Fix handling large number of filenames on input (RhBug:1690915) +- Detect armv7 with crypto extension only on arm version >= 8 +- A new standardized User-Agent field consisting of the libdnf and OS version + (including the variant) (RhBug:1156007) +- Add basic countme support (RhBug:1647454) + +* Mon Jul 29 2019 Pavla Kratochvilova - 0.35.1-4 +- Rebuilt for librepo 1.10.5 + +* Thu Jul 25 2019 Fedora Release Engineering - 0.35.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jul 22 2019 Pavla Kratochvilova - 0.35.1-2 +- Backport patch to fix attaching and detaching of libsolvRepo and + repo_internalize_trigger() (RhBug:1727343,1727424) + +* Thu Jul 04 2019 Pavla Kratochvilova - 0.35.1-1 +- Update to 0.35.1 +- Enhance logging handling +- Do not log DEBUG messages by default +- Also add subkeys when adding GPG keys +- [module] Fix swig binding for getModuleDependencies() +- Skip invalid key files in "/etc/pki/rpm-gpg" with warning (RhBug:1644040) +- Enable timestamp preserving for downloaded data (RhBug:1688537) +- Set default to skip_if_unavailable=false (RhBug:1679509) +- Add configuration option skip_if_unavailable (RhBug:1689931) +- Fix 'database is locked' error (RhBug:1631533) +- Replace the 'Failed to synchronize cache' message (RhBug:1712055) +- Fix 'no such table: main.trans_cmdline' error (RhBug:1596540) +- Add support of modular FailSafe (RhBug:1623128) (temporarily with warnings + instead of errors when installing modular RPMs without modular metadata) +- Add support of DNF main config file in context; used by PackageKit and + microdnf (RhBug:1689331) +- Exit gpg-agent after repokey import (RhBug:1650266) + +* Mon Jun 10 22:13:19 CET 2019 Igor Gnatenko - 0.31.0-5 +- Rebuild for RPM 4.15 + +* Mon Jun 10 15:42:02 CET 2019 Igor Gnatenko - 0.31.0-4 +- Rebuild for RPM 4.15 + +* Fri May 03 2019 Pavla Kratochvilova - 0.31.0-3 +- Backport patches to reintroduce hawkeyRepo + +* Thu Apr 25 2019 Pavla Kratochvilova - 0.31.0-1 +- Update to 0.31.0 +- Installroot now requires absolute path +- Support "_none_" value for repo option "proxy" (RhBug:1680272) +- Add support for Module advisories +- Add support for xml:base attribute from primary.xml (RhBug:1691315) +- Improve detection of Platform ID (RhBug:1688462) + +* Wed Mar 27 2019 Pavla Kratochvilova - 0.28.1-1 +- Update to 0.28.1 +- Return empty query if incorrect reldep (RhBug:1687135) +- ConfigParser: Improve compatibility with Python ConfigParser and dnf-plugin-spacewalk (RhBug:1692044) +- ConfigParser: Unify default set of string represenation of boolean values +- Fix segfault when interrupting dnf process (RhBug:1610456) + +* Mon Mar 11 2019 Pavla Kratochvilova - 0.28.0-1 +- Update to 0.28.0 +- Exclude module pkgs that have conflict +- Enhance config parser to preserve order of data, and keep comments and format +- Improve ARM detection +- Add support for SHA-384 + +* Tue Feb 19 2019 Jaroslav Mracek - 0.26.0-2 +- Backport patches for zchunk + +* Wed Feb 13 2019 Pavla Kratochvilova - 0.26.0-1 +- Update to 0.26.0-1 +- Enhance modular solver to handle enabled and default module streams differently (RhBug:1648839) +- Add support of wild cards for modules (RhBug:1644588) +- Revert commit that adds best as default behavior + +* Fri Feb 01 2019 Fedora Release Engineering - 0.24.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Dec 12 2018 Jaroslav Mracek - 0.24.1-1 +- Update to 0.24.1 +- Add support for zchunk +- Enhance LIBDNF plugins support +- Enhance sorting for module list (RhBug:1590358) +- [repo] Check whether metadata cache is expired (RhBug:1539620,1648274) +- [DnfRepo] Add methods for alternative repository metadata type and download (RhBug:1656314) +- Remove installed profile on module enable or disable (RhBug:1653623) +- [sack] Implement dnf_sack_get_rpmdb_version() + +* Thu Nov 22 2018 Jaroslav Mracek - 0.22.3-1 +- Permanently disable Python2 build for Fedora 30+ +- Update to 0.22.3 +- Modify solver_describe_decision to report cleaned (RhBug:1486749) +- [swdb] create persistent WAL files (RhBug:1640235) +- Relocate ModuleContainer save hook (RhBug:1632518) +- [transaction] Fix transaction item lookup for obsoleted packages (RhBug: 1642796) +- Fix memory leaks and memory allocations +- [repo] Possibility to extend downloaded repository metadata + +* Wed Nov 07 2018 Jaroslav Mracek - 0.22.0-8 +- Backport fixes for RHBZ#1642796 from upstream master + +* Tue Oct 30 2018 Igor Gnatenko - 0.22.0-7 +- Rebuild for libsolv 0.7 + +* Tue Oct 23 2018 Jaroslav Mracek - 0.22.0-6 +- Add patch Relocate-ModuleContainer-save-hook-RhBug1632518 +- Add patch Test-if-sack-is-present-and-run-save-module-persistor-RhBug1632518 + +* Sat Oct 20 2018 Jaroslav Mracek - 0.22.0-5 +- remove problematic patch Relocate-ModuleContainer-save-hook-RhBug1632518 + +* Fri Oct 19 2018 Jaroslav Mracek - 0.22.0-4 +- backport Relocate-ModuleContainer-save-hook-RhBug1632518 + +* Thu Oct 18 2018 Jaroslav Mracek - 0.22.0-3 +- bacport swdb-create-persistent-WAL-files-RhBug1640235 + +* Wed Oct 17 2018 Jaroslav Mracek - 0.22.0-2 +- backport Modify-solver_describe_decision-to-report-cleaned-RhBug1486749 +- backport history-Fix-crash-in-TransactionItemaddReplacedBy + +* Mon Oct 15 2018 Jaroslav Mracek - 0.22.0-1 +- Update to 0.22.0 +- Fix segfault in repo_internalize_trigger (RhBug:1375895) +- Change sorting of installonly packages (RhBug:1627685) +- [swdb] Fixed pattern searching in history db (RhBug:1635542) +- Check correctly gpg for repomd when refresh is used (RhBug:1636743) +- [conf] Provide additional VectorString methods for compatibility with Python list. +- [plugins] add plugin loading and hooks into libdnf + +* Sat Sep 29 2018 Kevin Fenzi - 0.20.0-2 +- Temp re-enable python2 subpackages to get rawhide composing again. + +* Tue Sep 25 2018 Jaroslav Mracek - 0.20.0-1 +- [module] Report module solver errors +- [module] Enhance module commands and errors +- [transaction] Fixed several problems with SWDB +- Remove unneeded regex URL tests (RhBug:1598336) +- Allow quoted values in ini files (RhBug:1624056) +- Filter out not unique set of solver problems (RhBug:1564369) +- Disable python2 build for Fedora 30+ + +* Tue Sep 18 2018 Adam Williamson - 0.19.1-3 +- Backport PR #585 for an update crash bug (#1629340) + +* Fri Sep 14 2018 Kalev Lember - 0.19.1-2 +- Backport a fix for a packagekit crasher / F29 Beta blocker (#1626851) + +* Mon Sep 10 2018 Jaroslav Mracek - 0.19.1-1 +- Fix compilation errors on gcc-4.8.5 +- [module] Allow module queries on disabled modules + +* Fri Sep 07 2018 Jaroslav Mracek - 0.19.0-1 +- [query] Reldeps can contain a space char (RhBug:1612462) +- [transaction] Avoid adding duplicates via Transaction::addItem() +- Fix compilation errors on gcc-4.8.5 +- [module] Make available ModuleProfile using SWIG +- [module] Redesign module disable and reset + +* Mon Aug 13 2018 Daniel Mach - 0.17.2-1 +- [sqlite3] Change db locking mode to DEFAULT. +- [doc] Add libsmartcols-devel to devel deps. + +* Mon Aug 13 2018 Daniel Mach - 0.17.1-1 +- [module] Solve a problem in python constructor of NSVCAP if no version. +- [translations] Update translations from zanata. +- [transaction] Fix crash after using dnf.comps.CompsQuery and forking the process in Anaconda. +- [module] Support for resetting module state. +- [output] Introduce wrapper for smartcols. + +* Fri Aug 10 2018 Adam Williamson - 0.17.0-2 +- Backport fix that prevented anaconda running dnf in a subprocess (#546) + +* Tue Aug 07 2018 Daniel Mach - 0.17.0-1 +- [conf] Add module_platform_id option. +- [module] Add ModulePackageContainer class. +- [module] Add ModulePersistor class. +- [sack] Module filtering made available in python API +- [sack] Module auto-enabling according to installed packages + +* Fri Jul 27 2018 Igor Gnatenko - 0.16.1-3 +- Rebuild for new binutils + +* Fri Jul 27 2018 Daniel Mach - 0.16.1-2 +- [module] Implement 'module_hotfixes' conf option to skip filtering RPMs from hotfix repos. +- [goal] Fix distupgrade filter, allow downgrades. +- [context] Allow to set module platform in context. +- [module] Introduce proper modular dependency solving. +- [module] Platform pseudo-module based on /etc/os-release. +- [goal] Add Goal::listSuggested(). +- [l10n] Support for translations, add gettext build dependency. + +* Sun Jul 22 2018 Daniel Mach - 0.16.0-1 +- Fix RHSM plugin +- Add support for logging +- Bump minimal libmodulemd version to 1.6.1 + +* Fri Jul 13 2018 Fedora Release Engineering - 0.15.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 29 2018 Jaroslav Mracek - 0.15.2-1 +- Update to 0.15.1 +- Resolves: rhbz#1595487 + +* Fri Jun 29 2018 Igor Gnatenko - 0.15.1-2 +- Restore proper ldconfig_scriptlets + +* Tue Jun 26 2018 Jaroslav Mracek - 0.15.1-1 +- Update to 0.15.1 + +* Fri Jun 15 2018 Miro Hrončok - 0.11.1-6 +- Rebuilt for Python 3.7 + +* Wed Feb 07 2018 Fedora Release Engineering - 0.11.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 30 2018 Igor Gnatenko - 0.11.1-4 +- Switch to %%ldconfig_scriptlets + +* Tue Nov 07 2017 Igor Gnatenko - 0.11.1-3 +- Use better Obsoletes for platform-python + +* Fri Nov 03 2017 Igor Gnatenko - 0.11.1-2 +- Remove platform-python subpackage + +* Mon Oct 16 2017 Jaroslav Mracek - 0.11.1-1 +- Rerelease of 0.11.1-1 +- Improvement query performance +- Run file query in hy_subject_get_best_solution only for files (arguments that start with ``/`` or + ``*/``) +- Resolves: rhbz#1498207 - DNF crash during upgrade installation F26 -> F27 + +* Tue Oct 10 2017 Igor Gnatenko - 0.11.0-1 +- Update to 0.11.0 + +* Mon Oct 02 2017 Jaroslav Mracek - 0.10.1-2 +- Rerelease of 0.10.1-1 + +* Wed Sep 27 2017 Jaroslav Mracek - 0.10.1-1 +- Update to 0.10.1 +- It improves query performance with name and arch filters. Also nevra filter will now + handle string with or without epoch. +- Additionally for python bindings it renames NEVRA._has_just_name() to NEVRA.has_just_name() due + to movement of code into c part of library. +- Resolves: rhbz#1260242 - --exclude does not affect dnf remove's removal of requirements +- Resolves: rhbz#1485881 - DNF claims it cannot install package, which have been already installed +- Resolves: rhbz#1361187 - [abrt] python-ipython-console: filter_updown(): python3.5 killed by SIGABRT + +* Fri Sep 15 2017 Igor Gnatenko - 0.9.3-8 +- Disable platform python on old releases + +* Tue Aug 15 2017 Lumír Balhar - 0.9.3-7 +- Add platform-python subpackage + +* Fri Aug 11 2017 Igor Gnatenko - 0.9.3-6 +- Rebuilt after RPM update (№ 3) + +* Thu Aug 10 2017 Igor Gnatenko - 0.9.3-5 +- Rebuilt for RPM soname bump + +* Thu Aug 10 2017 Igor Gnatenko - 0.9.3-4 +- Rebuilt for RPM soname bump + +* Thu Aug 03 2017 Fedora Release Engineering - 0.9.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.9.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jul 24 2017 Jaroslav Mracek - 0.9.3-1 +- Update to 0.9.3 + +* Sat Jul 01 2017 Igor Gnatenko - 0.9.2-1 +- Update to 0.9.2 + +* Mon Jun 12 2017 Jaroslav Mracek - 0.9.1-1 +- Update to 0.9.1 + +* Mon May 22 2017 Jaroslav Mracek - 0.9.0-1 +- Update to 0.9.0 + +* Tue May 02 2017 Jaroslav Mracek - 0.8.2-1 +- Update to 0.8.2 + +* Fri Mar 24 2017 Igor Gnatenko - 0.8.1-1 +- Update to 0.8.1 + +* Tue Mar 21 2017 Jaroslav Mracek - 0.8.0-1 +- Update to 0.8.0 + +* Mon Feb 20 2017 Igor Gnatenko - 0.7.4-1 +- Update to 0.7.4 + +* Fri Feb 10 2017 Igor Gnatenko - 0.7.3-1 +- Update to 0.7.3 + +* Wed Feb 08 2017 Igor Gnatenko - 0.7.2-1 +- 0.7.2 + +* Fri Jan 06 2017 Igor Gnatenko - 0.7.1-1 +- 0.7.1 + +* Wed Dec 21 2016 Peter Robinson 0.7.0-0.7gitf9b798c +- Rebuild for Python 3.6 + +* Mon Dec 19 2016 Igor Gnatenko - 0.7.0-0.6gitf9b798c +- Use new upstream URL + +* Tue Dec 13 2016 Stratakis Charalampos - 0.7.0-0.5gitf9b798c +- Rebuild for Python 3.6 + +* Tue Dec 06 2016 Martin Hatina - 0.7.0-0.4gitf9b798c +- Increase conflict version of dnf + +* Thu Dec 01 2016 Igor Gnatenko - 0.7.0-0.3gitf9b798c +- Update to latest snapshot + +* Fri Nov 04 2016 Igor Gnatenko - 0.7.0-0.2git8bd77f8 +- Update to latest snapshot + +* Thu Sep 29 2016 Igor Gnatenko - 0.7.0-0.1git179c0a6 +- Initial package