- /// TRANSLATORS: remaining here follows an amount of time that is remaining
- /// on an operation.
- s << "; " << seconds_to_approximate_hms (r) << " " << _("remaining");
+ auto now = boost::posix_time::second_clock::local_time();
+ auto finish = now + boost::posix_time::seconds(r);
+ char finish_string[16];
+ snprintf (finish_string, sizeof(finish_string), "%02d:%02d", int(finish.time_of_day().hours()), int(finish.time_of_day().minutes()));
+ string day;
+ if (now.date() != finish.date()) {
+ /// TRANSLATORS: the %1 in this string will be filled in with a day of the week
+ /// to say what day a job will finish.
+ day = String::compose (_(" on %1"), day_of_week_to_string(finish.date().day_of_week()));
+ }
+ /// TRANSLATORS: "remaining; finishing at" here follows an amount of time that is remaining
+ /// on an operation; after it is an estimated wall-clock completion time.
+ s += String::compose(
+ _("; %1 remaining; finishing at %2%3"),
+ seconds_to_approximate_hms(r), finish_string, day
+ );