From f1a7ca22889bfe9897f4e7136b739aed5750b5b4 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Mon, 16 Mar 2015 20:05:02 +0000 Subject: [PATCH] Use imprecise quantity words in dirty plugin messages. Instead of exact numbers, since they change (generally increasing) with TES5Edit updates. Closes #412. --- src/backend/helpers.cpp | 16 ++++++++++++++++ src/backend/helpers.h | 3 +++ src/backend/metadata.cpp | 14 +++++++------- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/backend/helpers.cpp b/src/backend/helpers.cpp index bdc89e2b..3dd5fc3f 100644 --- a/src/backend/helpers.cpp +++ b/src/backend/helpers.cpp @@ -164,6 +164,22 @@ namespace loot { return out; } + //Turns a positive integer into a more qualitative description of its value (eg. "few", "many"). + std::string IntToVagueString(const unsigned int i) { + if (i < 10) { + return boost::locale::translate("a few"); + } + else if (i < 100) { + return boost::locale::translate("several"); + } + else if (i < 1000) { + return boost::locale::translate("a lot of"); + } + else { + return boost::locale::translate("a plethora of"); + } + } + #ifdef _WIN32 //Get registry subkey value string. string RegKeyStringValue(const std::string& keyStr, const std::string& subkey, const std::string& value) { diff --git a/src/backend/helpers.h b/src/backend/helpers.h index bd1092ec..db79701e 100644 --- a/src/backend/helpers.h +++ b/src/backend/helpers.h @@ -50,6 +50,9 @@ namespace loot { //Converts an integer to a hex string using BOOST's Spirit.Karma. Faster than a stringstream conversion. std::string IntToHexString(const int n); + //Turns a positive integer into a more qualitative description of its value (eg. "few", "many"). + std::string IntToVagueString(const unsigned int i); + #ifdef _WIN32 //Get registry subkey value string. std::string RegKeyStringValue(const std::string& keyStr, const std::string& subkey, const std::string& value); diff --git a/src/backend/metadata.cpp b/src/backend/metadata.cpp index 5e9ebef2..334558f6 100644 --- a/src/backend/metadata.cpp +++ b/src/backend/metadata.cpp @@ -908,24 +908,24 @@ namespace loot { for (const auto &element : _dirtyInfo) { boost::format f; if (element.ITMs() > 0 && element.DeletedRefs() > 0 && element.DeletedNavmeshes() > 0) - f = boost::format(boost::locale::translate("Contains %1% ITM records, %2% deleted references and %3% deleted navmeshes. Clean with %4%.")) % element.ITMs() % element.DeletedRefs() % element.DeletedNavmeshes() % element.CleaningUtility(); + f = boost::format(boost::locale::translate("Contains %1% ITM records, %2% deleted references and %3% deleted navmeshes. Clean with %4%.")) % IntToVagueString(element.ITMs()) % IntToVagueString(element.DeletedRefs()) % IntToVagueString(element.DeletedNavmeshes()) % element.CleaningUtility(); else if (element.ITMs() == 0 && element.DeletedRefs() == 0 && element.DeletedNavmeshes() == 0) f = boost::format(boost::locale::translate("Clean with %1%.")) % element.CleaningUtility(); else if (element.ITMs() == 0 && element.DeletedRefs() > 0 && element.DeletedNavmeshes() > 0) - f = boost::format(boost::locale::translate("Contains %1% deleted references and %2% deleted navmeshes. Clean with %3%.")) % element.DeletedRefs() % element.DeletedNavmeshes() % element.CleaningUtility(); + f = boost::format(boost::locale::translate("Contains %1% deleted references and %2% deleted navmeshes. Clean with %3%.")) % IntToVagueString(element.DeletedRefs()) % IntToVagueString(element.DeletedNavmeshes()) % element.CleaningUtility(); else if (element.ITMs() == 0 && element.DeletedRefs() == 0 && element.DeletedNavmeshes() > 0) - f = boost::format(boost::locale::translate("Contains %1% deleted navmeshes. Clean with %2%.")) % element.DeletedNavmeshes() % element.CleaningUtility(); + f = boost::format(boost::locale::translate("Contains %1% deleted navmeshes. Clean with %2%.")) % IntToVagueString(element.DeletedNavmeshes()) % element.CleaningUtility(); else if (element.ITMs() == 0 && element.DeletedRefs() > 0 && element.DeletedNavmeshes() == 0) - f = boost::format(boost::locale::translate("Contains %1% deleted references. Clean with %2%.")) % element.DeletedRefs() % element.CleaningUtility(); + f = boost::format(boost::locale::translate("Contains %1% deleted references. Clean with %2%.")) % IntToVagueString(element.DeletedRefs()) % element.CleaningUtility(); else if (element.ITMs() > 0 && element.DeletedRefs() == 0 && element.DeletedNavmeshes() > 0) - f = boost::format(boost::locale::translate("Contains %1% ITM records and %2% deleted navmeshes. Clean with %3%.")) % element.ITMs() % element.DeletedNavmeshes() % element.CleaningUtility(); + f = boost::format(boost::locale::translate("Contains %1% ITM records and %2% deleted navmeshes. Clean with %3%.")) % IntToVagueString(element.ITMs()) % IntToVagueString(element.DeletedNavmeshes()) % element.CleaningUtility(); else if (element.ITMs() > 0 && element.DeletedRefs() == 0 && element.DeletedNavmeshes() == 0) - f = boost::format(boost::locale::translate("Contains %1% ITM records. Clean with %2%.")) % element.ITMs() % element.CleaningUtility(); + f = boost::format(boost::locale::translate("Contains %1% ITM records. Clean with %2%.")) % IntToVagueString(element.ITMs()) % element.CleaningUtility(); else if (element.ITMs() > 0 && element.DeletedRefs() > 0 && element.DeletedNavmeshes() == 0) - f = boost::format(boost::locale::translate("Contains %1% ITM records and %2% deleted references. Clean with %3%.")) % element.ITMs() % element.DeletedRefs() % element.CleaningUtility(); + f = boost::format(boost::locale::translate("Contains %1% ITM records and %2% deleted references. Clean with %3%.")) % IntToVagueString(element.ITMs()) % IntToVagueString(element.DeletedRefs()) % element.CleaningUtility(); messages.push_back(loot::Message(loot::Message::warn, f.str())); isDirty = true;