diff options
Diffstat (limited to 'src/utils/stringutils.cpp')
-rw-r--r-- | src/utils/stringutils.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/utils/stringutils.cpp b/src/utils/stringutils.cpp index 3e067fe5c..864f509fc 100644 --- a/src/utils/stringutils.cpp +++ b/src/utils/stringutils.cpp @@ -29,6 +29,8 @@ #include <sys/time.h> #endif +#include "utils/gettext.h" + #include "debug.h" static size_t UTF8_MAX_SIZE = 10; @@ -877,3 +879,63 @@ std::string timeToStr(const int time) else return "unknown"; } + +std::string timeDiffToString(int timeDiff) +{ + std::string str; + + const int weeks = timeDiff / 60 / 60 / 24 / 7; + if (weeks > 0) + { + // TRANSLATORS: uptime command + str = strprintf(ngettext(N_("%d week"), N_("%d weeks"), + weeks), weeks); + timeDiff -= weeks * 60 * 60 * 24 * 7; + } + + const int days = timeDiff / 60 / 60 / 24; + if (days > 0) + { + if (!str.empty()) + str.append(", "); + // TRANSLATORS: uptime command + str.append(strprintf(ngettext(N_("%d day"), N_("%d days"), + days), days)); + timeDiff -= days * 60 * 60 * 24; + } + const int hours = timeDiff / 60 / 60; + if (hours > 0) + { + if (!str.empty()) + str.append(", "); + // TRANSLATORS: uptime command + str.append(strprintf(ngettext(N_("%d hour"), N_("%d hours"), + hours), hours)); + timeDiff -= hours * 60 * 60; + } + const int min = timeDiff / 60; + if (min > 0) + { + if (!str.empty()) + str.append(", "); + // TRANSLATORS: uptime command + str.append(strprintf(ngettext(N_("%d minute"), N_("%d minutes"), + min), min)); + timeDiff -= min * 60; + } + + if (timeDiff > 0) + { + if (!str.empty()) + str.append(", "); + // TRANSLATORS: uptime command + str.append(strprintf(ngettext(N_("%d second"), N_("%d seconds"), + timeDiff), timeDiff)); + } + if (str.empty()) + { + str.append(strprintf(ngettext(N_("%d second"), N_("%d seconds"), + 0), 0)); + } + return str; +} |